/* ════════════════════════════════════════════════════════
   Componentes compartilhados — cadastro / perfil / edição
   Variáveis vêm de tokens.css (paleta coral canônica).
   Não redefinir --cp-* aqui — sobrescreveria o tema.
   ════════════════════════════════════════════════════════ */

/* ── Shell / Container ── */
.cp-shell {
    min-height: 100dvh;
    background: var(--cp-surface);
    padding-bottom: 40px;
}

.cp-container {
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    padding: 28px 18px 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Header ── */
.cp-header {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cp-logo {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

    .cp-logo svg {
        width: 28px;
        height: 28px;
    }

    .cp-logo span {
        font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
        font-size: 1.15rem;
        font-weight: 700;
        color: var(--cp-text);
    }

    .cp-logo b {
        background: var(--cp-grad);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        font-weight: 800;
    }

.cp-title {
    font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--cp-text);
    letter-spacing: -0.3px;
    line-height: 1.2;
}

.cp-subtitle {
    font-size: 0.875rem;
    color: var(--cp-muted);
    line-height: 1.55;
}

/* ── Stepper ── */
.cp-stepper {
    display: grid;
    grid-template-columns: 32px 1fr 32px 1fr 32px 1fr 32px;
    align-items: center;
    gap: 0 6px;
}

.cp-step {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--brand-alpha-10);
    color: var(--cp-muted);
    font-size: 0.78rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.3s, color 0.3s;
    flex-shrink: 0;
}

.cp-step--active {
    background: var(--cp-grad);
    color: var(--white);
    box-shadow: 0 3px 10px var(--brand-alpha-28);
}

.cp-step--done {
    background: var(--cp-grad);
    color: var(--white);
}

.cp-step-line {
    height: 3px;
    background: var(--brand-alpha-12);
    border-radius: 99px;
    transition: background 0.4s;
}

.cp-step-line--active {
    background: var(--cp-grad);
}

.cp-step-labels {
    grid-column: 1 / -1;
    display: flex;
    justify-content: space-between;
    margin-top: 6px;
    padding: 0 4px;
}

    .cp-step-labels span {
        font-size: 0.65rem;
        font-weight: 500;
        color: var(--cp-muted);
        transition: color 0.2s;
        flex: 1;
        text-align: center;
    }

        .cp-step-labels span:first-child {
            text-align: left;
        }

        .cp-step-labels span:last-child {
            text-align: right;
        }

.cp-step-lbl--active {
    color: var(--cp-purple) !important;
    font-weight: 700 !important;
}

/* ── Card ── */
.cp-card {
    background: var(--white);
    border: 1.5px solid var(--cp-border);
    border-radius: var(--cp-radius);
    padding: 22px 18px;
    box-shadow: var(--cp-shadow);
    display: flex;
    flex-direction: column;
    gap: 18px;
}

/* ── Alertas ── */
.cp-alert {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 14px;
    font-size: 0.855rem;
    font-weight: 500;
    line-height: 1.45;
}

    .cp-alert svg {
        flex-shrink: 0;
        margin-top: 1px;
    }

.cp-alert--error {
    background: var(--danger-soft-alt);
    color: var(--danger-deep);
    border: 1px solid rgba(155,18,57,0.12);
}

.cp-alert--success {
    background: var(--success-soft-alt);
    color: var(--success-deep);
    border: 1px solid rgba(22,101,52,0.12);
}

.cp-alert--warn {
    background: var(--warning-soft-alt);
    color: var(--warning-deep);
    border: 1px solid rgba(146,64,14,0.12);
}

.cp-validation-summary {
    font-size: 0.82rem;
    color: var(--danger-deep);
    background: var(--danger-soft-alt);
    border: 1px solid rgba(155,18,57,0.12);
    border-radius: 12px;
    padding: 10px 14px;
    list-style: none;
}

/* ── Campos ── */
.cp-field {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cp-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--cp-text);
    display: flex;
    align-items: center;
    gap: 6px;
}

.cp-optional {
    font-size: 0.7rem;
    font-weight: 400;
    color: var(--cp-muted);
    background: var(--cp-surface);
    border: 1px solid var(--cp-border);
    border-radius: 99px;
    padding: 1px 7px;
}

.cp-hint {
    font-size: 0.75rem;
    color: var(--cp-muted);
    line-height: 1.4;
}

.cp-field-error {
    font-size: 0.76rem;
    color: var(--danger-deep);
    font-weight: 500;
}

.cp-input {
    width: 100%;
    min-height: 48px;
    padding: 0 14px;
    border: 1.5px solid var(--cp-border);
    border-radius: 12px;
    font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
    font-size: 0.925rem;
    color: var(--cp-text);
    background: var(--white);
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
    -webkit-tap-highlight-color: transparent;
    appearance: none;
    box-sizing: border-box;
}

    .cp-input:focus {
        border-color: var(--cp-purple);
        box-shadow: 0 0 0 3px var(--brand-alpha-10);
    }

    .cp-input::placeholder {
        color: #C4B8D4;
    }

.cp-search-wrap {
    position: relative;
}

.cp-search-icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--cp-muted);
}

.cp-input--search {
    padding-left: 38px;
}

.cp-select-wrap {
    position: relative;
}

.cp-select {
    width: 100%;
    min-height: 48px;
    padding: 0 40px 0 14px;
    border: 1.5px solid var(--cp-border);
    border-radius: 12px;
    font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
    font-size: 0.925rem;
    color: var(--cp-text);
    background: var(--white);
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
    -webkit-tap-highlight-color: transparent;
    box-sizing: border-box;
}

    .cp-select:focus {
        border-color: var(--cp-purple);
        box-shadow: 0 0 0 3px var(--brand-alpha-10);
    }

.cp-select-icon {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--cp-muted);
}

.cp-select-wrap--disabled .cp-select {
    background: var(--cp-surface);
    color: var(--cp-muted);
    cursor: not-allowed;
    opacity: 0.7;
}

/* ── Botões ── */
.cp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 52px;
    padding: 0 22px;
    border-radius: 13px;
    font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
    font-size: 0.975rem;
    font-weight: 500;
    border: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    transition: opacity 0.18s, transform 0.18s;
}

    .cp-btn:disabled {
        opacity: 0.6;
        cursor: not-allowed;
    }

    .cp-btn:not(:disabled):active {
        transform: scale(0.975);
    }

.cp-btn--primary {
    width: 100%;
    background: var(--cp-grad);
    color: var(--white);
    box-shadow: 0 6px 20px var(--brand-alpha-28);
}

    .cp-btn--primary:not(:disabled):active {
        opacity: 0.88;
    }

.cp-btn--ghost {
    background: var(--cp-surface);
    color: var(--cp-text);
    border: 1.5px solid var(--cp-border);
}

/* ── Spinner ── */
.cp-spinner {
    display: inline-block;
    width: 28px;
    height: 28px;
    border: 3px solid var(--brand-alpha-15);
    border-top-color: var(--cp-purple);
    border-radius: 50%;
    animation: cpSpin 0.75s linear infinite;
    flex-shrink: 0;
}

.cp-spinner--sm {
    width: 18px;
    height: 18px;
    border-width: 2.5px;
}

@keyframes cpSpin {
    to {
        transform: rotate(360deg);
    }
}

/* ── Loading ── */
.cp-loading-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    padding: 36px 18px;
}

.cp-loading-card--inline {
    padding: 28px 0;
}

.cp-loading-text {
    font-size: 0.875rem;
    color: var(--cp-muted);
}

/* ── Cabeçalho dos steps ── */
.cp-step-header {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.cp-step-title {
    font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--cp-text);
}

.cp-step-sub {
    font-size: 0.82rem;
    color: var(--cp-muted);
}

.cp-registro-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    margin-top: 4px;
    padding: 5px 11px;
    background: var(--cp-surface);
    border: 1.5px solid var(--cp-border);
    border-radius: 99px;
    font-size: 0.75rem;
    color: var(--cp-purple);
    font-weight: 500;
    width: fit-content;
}

    .cp-registro-badge strong {
        font-weight: 700;
    }

/* ── Serviços e locais ── */
.cp-services {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.cp-service-group {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.cp-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.cp-group-label {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--cp-purple);
    letter-spacing: 0.7px;
    text-transform: uppercase;
}

.cp-group-toggle {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--cp-purple);
    background: var(--brand-alpha-07);
    border: 1.5px solid var(--brand-alpha-15);
    border-radius: 99px;
    padding: 4px 12px;
    cursor: pointer;
    white-space: nowrap;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.18s;
}

.cp-group-toggle--active {
    background: var(--brand-alpha-14);
}

.cp-group-toggle:active {
    opacity: 0.75;
}

.cp-service-list {
    display: flex;
    flex-direction: column;
    gap: 9px;
}

.cp-service-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 13px;
    border: 1.5px solid var(--cp-border);
    border-radius: 14px;
    background: var(--white);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    transition: border-color 0.2s, background 0.2s;
    position: relative;
}

.cp-service-item--on {
    border-color: var(--cp-purple);
    background: var(--brand-alpha-04);
}

.cp-service-item:active {
    transform: scale(0.99);
}

.cp-checkbox {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

.cp-check-box {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    border-radius: 6px;
    border: 1.5px solid var(--cp-border);
    background: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 1px;
    transition: background 0.2s, border-color 0.2s;
}

.cp-service-item--on .cp-check-box {
    background: var(--cp-grad);
    border-color: transparent;
}

.cp-service-content {
    display: flex;
    flex-direction: column;
    gap: 3px;
    flex: 1;
    min-width: 0;
}

    .cp-service-content strong {
        font-size: 0.875rem;
        font-weight: 600;
        color: var(--cp-text);
        line-height: 1.3;
    }

    .cp-service-content span {
        font-size: 0.78rem;
        color: var(--cp-muted);
        line-height: 1.4;
    }

.cp-count-badge {
    text-align: center;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--cp-purple);
    background: var(--brand-alpha-07);
    border-radius: 99px;
    padding: 6px 16px;
    width: fit-content;
    margin: 0 auto;
}

.cp-local-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    max-height: 52vh;
    overflow-y: auto;
}

.cp-empty {
    text-align: center;
    font-size: 0.82rem;
    color: var(--cp-muted);
    padding: 20px 0;
}

/* ── Footer actions ── */
.cp-footer-actions {
    display: flex;
    gap: 10px;
    padding-top: 4px;
}

    .cp-footer-actions .cp-btn--ghost {
        flex: 0 0 auto;
        min-width: 96px;
    }

    .cp-footer-actions .cp-btn--primary {
        flex: 1;
        width: auto;
    }

/* ── Slots de documento ── */
.cp-doc-slot {
    border: 1.5px solid var(--cp-border);
    border-radius: 16px;
    padding: 14px;
    background: var(--cp-surface);
    display: flex;
    flex-direction: column;
    gap: 12px;
    transition: border-color 0.2s;
}

.cp-doc-slot--ok {
    border-color: #86EFAC;
    background: var(--success-soft-alt);
}

.cp-doc-slot--error {
    border-color: #FDA4AF;
    background: #FFF8F9;
}

.cp-doc-slot-header {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cp-doc-slot-badge {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--brand-alpha-10);
    color: var(--cp-muted);
    font-size: 0.75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s;
}

.cp-doc-slot-badge--ok {
    background: #22C55E;
    color: var(--white);
}

.cp-doc-slot-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 1px;
}

    .cp-doc-slot-info strong {
        font-size: 0.875rem;
        font-weight: 600;
        color: var(--cp-text);
    }

    .cp-doc-slot-info span {
        font-size: 0.75rem;
        color: var(--cp-muted);
    }

.cp-doc-remove {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    border: 1.5px solid var(--cp-border);
    background: var(--white);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--cp-muted);
    -webkit-tap-highlight-color: transparent;
    transition: border-color 0.18s, color 0.18s;
}

    .cp-doc-remove:active {
        border-color: #FDA4AF;
        color: var(--danger-deep);
    }

.cp-doc-thumb-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: var(--white);
    border: 1px solid var(--cp-border);
    border-radius: 11px;
}

.cp-doc-thumb-img {
    width: 48px;
    height: 36px;
    object-fit: cover;
    border-radius: 6px;
    flex-shrink: 0;
}

.cp-doc-thumb-pdf {
    width: 48px;
    height: 36px;
    border-radius: 6px;
    background: var(--brand-alpha-08);
    color: var(--cp-purple);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    flex-shrink: 0;
}

.cp-doc-thumb-name {
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--cp-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
}

.cp-doc-processing-inline {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.8rem;
    color: var(--cp-muted);
    padding: 4px 0;
}

/* ── Upload ── */
.cp-upload-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.cp-upload-btn {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px 12px;
    border-radius: 14px;
    border: 1.5px solid var(--cp-border);
    background: var(--white);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
    overflow: hidden;
    transition: border-color 0.18s, background 0.18s;
    color: var(--cp-purple);
}

    .cp-upload-btn:active {
        border-color: var(--cp-purple);
        background: var(--brand-alpha-04);
    }

    .cp-upload-btn span {
        font-size: 0.8rem;
        font-weight: 600;
        color: var(--cp-text);
    }

.cp-file-input {
    position: absolute;
    inset: 0;
    opacity: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    font-size: 0;
}

/* ── Movimento reduzido ── */
@media (prefers-reduced-motion: reduce) {
    .cp-spinner {
        animation: none;
    }

    .cp-btn, .cp-service-item, .cp-upload-btn {
        transition: none;
    }
}

/* ════════════════════════════════════════════════════════
   Admin desktop layout — adições à identidade cp-*
   ════════════════════════════════════════════════════════ */

body, html { font-family: var(--cora-font-body); color: var(--cora-text); }

.adm-shell { display: grid; grid-template-columns: 248px 1fr; min-height: 100dvh; background: var(--cp-surface); }

.adm-side {
    background: var(--white);
    border-right: 1.5px solid var(--cp-border);
    padding: 22px 16px;
    display: flex; flex-direction: column; gap: 22px;
    position: sticky; top: 0; height: 100dvh; overflow: hidden;
}

.adm-brand { display: flex; align-items: center; gap: 11px; padding: 4px 4px 2px; }
.adm-brand-mark { width: 48px; height: 48px; border-radius: 13px; padding: 6px; background: var(--white); border: 1.5px solid var(--brand-alpha-15); box-shadow: 0 6px 18px var(--brand-alpha-14); display: flex; align-items: center; justify-content: center; }
.adm-brand-mark img { width: 100%; height: 100%; object-fit: contain; }
.adm-brand-name { font-size: 1.28rem; font-weight: 800; letter-spacing: -0.4px; }
.adm-brand-name span { background: var(--cp-grad); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.adm-brand-tag { font-size: 0.62rem; font-weight: 700; letter-spacing: 1.5px; color: var(--cp-purple); margin-left: auto; padding: 3px 8px; background: var(--brand-alpha-08); border-radius: 99px; text-transform: uppercase; }

/* flex:1 + overflow-y:auto = a navegação rola dentro da sidebar fixa; a marca
   fica fixa no topo. Corrige o bug de itens sumirem ao expandir grupos. */
.adm-nav { display: flex; flex-direction: column; gap: 4px; flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; margin-right: -6px; padding-right: 6px; }
.adm-nav::-webkit-scrollbar { width: 7px; }
.adm-nav::-webkit-scrollbar-thumb { background: var(--cora-border); border-radius: 99px; }
.adm-nav::-webkit-scrollbar-thumb:hover { background: var(--cora-muted); }
.adm-nav-link {
    display: flex; align-items: center; gap: 10px;
    padding: 11px 13px; border-radius: 11px;
    font-size: 0.9rem; font-weight: 500; color: var(--cp-text);
    text-decoration: none; transition: background 0.15s, color 0.15s;
}
.adm-nav-link:hover { background: var(--brand-alpha-06); }
.adm-nav-link.active { background: var(--cp-grad); color: var(--white); box-shadow: 0 4px 14px rgba(218,72,59,0.25); }
.adm-nav-link i { width: 18px; text-align: center; }

.adm-main { padding: 28px 32px 60px; max-width: 1400px; width: 100%; }

.adm-page-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 22px; }
.adm-page-title { font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Roboto', sans-serif; font-size: 1.6rem; font-weight: 800; letter-spacing: -0.4px; line-height: 1.25; }
.adm-page-sub {
    font-size: 0.88rem; color: var(--cp-text-soft, var(--cp-muted));
    margin-top: 6px; max-width: 720px; line-height: 1.5;
}

/* ── Filtros ── */
.adm-filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.adm-chip {
    padding: 8px 16px; border-radius: 99px;
    background: var(--white); border: 1.5px solid var(--cp-border);
    font-size: 0.82rem; font-weight: 600; color: var(--cp-text);
    cursor: pointer; -webkit-tap-highlight-color: transparent;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.adm-chip:hover { border-color: var(--cp-purple); }
.adm-chip.active { background: var(--cp-grad); color: var(--cora-on-primary); border-color: transparent; box-shadow: 0 4px 14px var(--brand-alpha-20); }

/* ── Tabela / cards de profissional ── */
.adm-table-card {
    background: var(--white); border: 1.5px solid var(--cp-border);
    border-radius: var(--cp-radius); box-shadow: var(--cp-shadow);
    overflow: hidden;
}
.adm-table { width: 100%; border-collapse: collapse; }
.adm-table thead th {
    text-align: left; padding: 14px 18px;
    font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.6px;
    color: var(--cp-muted); background: var(--cp-surface);
    border-bottom: 1px solid var(--cp-border);
}
.adm-table tbody td { padding: 14px 18px; font-size: 0.875rem; border-bottom: 1px solid var(--cp-border); vertical-align: middle; }
.adm-table tbody tr:last-child td { border-bottom: none; }
.adm-table tbody tr { cursor: pointer; transition: background 0.12s; }
.adm-table tbody tr:hover { background: rgba(218,72,59,0.035); }

.adm-empty { padding: 60px 20px; text-align: center; color: var(--cp-muted); font-size: 0.9rem; }

/* ── Badges de status ── */
.adm-badge {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 4px 10px; border-radius: 99px;
    font-size: 0.72rem; font-weight: 700; letter-spacing: 0.2px;
    border: 1.5px solid transparent;
}
.adm-badge--pendente { background: var(--warning-soft-alt); color: var(--warning-deep); border-color: rgba(146,64,14,0.18); }
.adm-badge--aprovado { background: var(--success-soft-alt); color: var(--success-deep); border-color: rgba(22,101,52,0.18); }
.adm-badge--reprovado { background: var(--danger-soft-alt); color: var(--danger-deep); border-color: rgba(155,18,57,0.18); }
.adm-badge--suspenso { background: #FEF3C7; color: #78350F; border-color: rgba(120,53,15,0.18); }
/* Onda 5 — REMED revisão (2026-06-17): aliases para o vocabulário usado em
   Filas/FilasOperacao/FilasDlq/Tarefas. Antes essas classes não existiam e
   os status renderizavam sem cor (semáforo invisível). */
.adm-badge--success { background: var(--success-soft-alt); color: var(--success-deep); border-color: rgba(22,101,52,0.18); }
.adm-badge--danger  { background: var(--danger-soft-alt); color: var(--danger-deep); border-color: rgba(155,18,57,0.18); }
.adm-badge--warn    { background: var(--warning-soft-alt); color: var(--warning-deep); border-color: rgba(146,64,14,0.18); }
.adm-badge--muted   { background: #F3F4F6; color: #4B5563; border-color: rgba(75,85,99,0.18); }

/* ── Detalhe ── */
.adm-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.adm-section-title { font-family: ui-sans-serif, sans-serif; font-size: 0.78rem; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--cp-purple); margin-bottom: 12px; }
.adm-info-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px dashed var(--cp-border); font-size: 0.875rem; }
.adm-info-row:last-child { border-bottom: none; }
.adm-info-row .k { color: var(--cp-muted); }
.adm-info-row .v { color: var(--cp-text); font-weight: 600; text-align: right; }

.adm-diag-details { border-bottom: 1px dashed var(--cp-border); }
.adm-diag-details > summary { display: flex; justify-content: space-between; padding: 10px 0; font-size: 0.875rem; cursor: pointer; list-style: none; }
.adm-diag-details > summary::-webkit-details-marker { display: none; }
.adm-diag-details > summary::after { content: "\f078"; font-family: "Font Awesome 6 Free"; font-weight: 900; margin-left: 8px; color: var(--cp-muted); font-size: 0.75rem; transition: transform 0.15s; }
.adm-diag-details[open] > summary::after { transform: rotate(180deg); }
.adm-diag-details > summary .k { color: var(--cp-muted); }
.adm-diag-details > summary .v { color: var(--cp-text); font-weight: 600; text-align: right; }
.adm-diag-lista { list-style: none; padding: 4px 0 12px 12px; margin: 0; font-size: 0.85rem; }
.adm-diag-lista li { padding: 4px 0; color: var(--cp-text); }

.adm-doc-card { display: flex; align-items: center; gap: 14px; padding: 14px; border: 1.5px solid var(--cp-border); border-radius: 14px; background: var(--white); }
.adm-doc-card + .adm-doc-card { margin-top: 10px; }
.adm-doc-thumb { width: 44px; height: 44px; border-radius: 10px; background: var(--brand-alpha-08); color: var(--cp-purple); display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 1.1rem; }
.adm-doc-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.adm-doc-info strong { font-size: 0.9rem; }
.adm-doc-info span { font-size: 0.78rem; color: var(--cp-muted); }
.adm-doc-actions { display: flex; gap: 6px; flex-shrink: 0; }

.adm-btn-sm { display: inline-flex; align-items: center; gap: 5px; min-height: 36px; padding: 0 14px; border-radius: 9px; font-size: 0.82rem; font-weight: 600; border: none; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: opacity 0.15s, transform 0.15s; }
.adm-btn-sm:not(:disabled):active { transform: scale(0.96); }
.adm-btn-sm:disabled { opacity: 0.5; cursor: not-allowed; }
.adm-btn-sm--ok { background: #16A34A; color: var(--white); }
.adm-btn-sm--no { background: var(--white); border: 1.5px solid #FDA4AF; color: var(--danger-deep); }
.adm-btn-sm--ghost { background: var(--cp-surface); border: 1.5px solid var(--cp-border); color: var(--cp-text); }

.adm-actions-bar { display: flex; gap: 10px; padding-top: 4px; }

/* Onda A-fix (2026-05-08) — REMOVIDA a definição legada de .adm-toast (sprint 3)
   que setava `color: var(--white)`. A definição da Onda 5H (mais abaixo, com fundo
   branco e ícone colorido) é a oficial. Sem essa remoção, fundo branco +
   texto branco = toast invisível. */

/* ════════════════════════════════════════════════════════════════════════
   Sprint 3 — Header, sidebar collapsível, dashboard, paginação, formulários
   ════════════════════════════════════════════════════════════════════════ */

/* Header dentro do main, com info do admin + logout */
.adm-header { display: flex; align-items: center; gap: 12px; padding: 10px 14px;
    background: var(--white); border: 1.5px solid var(--cp-border); border-radius: 14px;
    box-shadow: var(--cp-shadow); margin-bottom: 18px; }
/* Sprint 10 fix — classe compartilhada por DensidadeToggle e ToastHistoryBell:
   fica visível SEMPRE (era `display:none` global, então em desktop >900px
   os dois botões ficavam ocultos por engano). O hamburguer do MainLayout
   tem classe própria `.adm-header-side-toggle` (só aparece em <900px). */
.adm-header-toggle { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; min-height: 40px; background: transparent; border: none; padding: 6px; cursor: pointer; color: var(--cp-text); font-size: 1.1rem; border-radius: 8px; transition: background 0.15s; }
.adm-header-toggle:hover { background: var(--brand-alpha-06); }
.adm-header-side-toggle { display: none; background: transparent; border: none; padding: 6px; cursor: pointer; color: var(--cp-text); font-size: 1.1rem; min-width: 40px; min-height: 40px; align-items: center; justify-content: center; border-radius: 8px; }
.adm-header-side-toggle:hover { background: var(--brand-alpha-06); }
.adm-header-spacer { flex: 1; }
.adm-header-user { display: flex; align-items: center; gap: 10px; padding: 6px 12px; border-radius: 999px; background: var(--brand-alpha-06); text-decoration: none; color: inherit; cursor: pointer; transition: background 0.15s; }
a.adm-header-user:hover { background: var(--brand-alpha-12); }
.adm-header-user .em { font-size: 0.82rem; font-weight: 600; color: var(--cp-text); }
.adm-header-user .role { font-size: 0.66rem; font-weight: 700; letter-spacing: 1px; color: var(--cp-purple); text-transform: uppercase; padding: 2px 7px; background: var(--brand-alpha-10); border-radius: 99px; }
.adm-header-logout { background: transparent; border: 1.5px solid var(--cp-border); border-radius: 10px; padding: 7px 12px; font-size: 0.82rem; font-weight: 600; color: var(--cp-text); cursor: pointer; transition: background 0.15s, border-color 0.15s, color 0.15s; }
.adm-header-logout:hover { background: var(--cora-danger-soft); border-color: var(--cora-danger); color: var(--cora-danger); }

/* Dashboard cards */
.adm-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; margin-bottom: 22px; }
.adm-card { background: var(--white); border: 1.5px solid var(--cp-border); border-radius: var(--cp-radius); box-shadow: var(--cp-shadow); padding: 18px; display: flex; flex-direction: column; gap: 6px; }
.adm-card-label { font-size: 0.72rem; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--cp-muted); }
.adm-card-value { font-family: var(--cora-font-display, ui-sans-serif); font-size: 2rem; font-weight: 800; color: var(--cp-text); letter-spacing: -1px; }
.adm-card-sub   { font-size: 0.78rem; color: var(--cp-muted); }
.adm-card--ghost { background: linear-gradient(135deg, rgba(255,158,122,0.08), var(--brand-alpha-08)); }

/* Alerta dashboard */
.adm-alert { display: flex; gap: 12px; padding: 12px 16px; border-radius: 14px; border: 1.5px solid; margin-bottom: 8px; align-items: flex-start; font-size: 0.875rem; }
.adm-alert.alta { background: var(--cora-danger-soft); border-color: rgba(220,38,38,0.3); color: #7F1D1D; }
.adm-alert.media { background: var(--cora-warning-soft); border-color: rgba(217,119,6,0.3); color: #78350F; }
.adm-alert .ico { font-size: 1rem; flex-shrink: 0; }
.adm-alert .qtd { font-weight: 700; }
/* Alerta clicável (deep-link pra ficha do alvo). */
.adm-alert--link { text-decoration: none; cursor: pointer; transition: transform 0.12s, filter 0.12s; }
.adm-alert--link:hover { transform: translateX(2px); filter: brightness(1.02); }
.adm-alert--link:focus-visible { outline: 2px solid var(--brand-primary); outline-offset: 2px; }
.adm-alert--link .adm-alert-seta { margin-left: auto; align-self: center; opacity: 0.7; flex-shrink: 0; }
.adm-alert--link:hover .adm-alert-seta { opacity: 1; }

/* Eventos auditoria (timeline simples) */
.adm-event { display: grid; grid-template-columns: 110px 1fr 200px; gap: 12px; padding: 10px 14px; border-bottom: 1px dashed var(--cp-border); font-size: 0.85rem; }
.adm-event:last-child { border-bottom: none; }
.adm-event .when { color: var(--cp-muted); font-size: 0.78rem; }
.adm-event .who  { color: var(--cp-muted); font-size: 0.78rem; }
.adm-event .what strong { font-weight: 700; color: var(--cp-purple); }

/* Paginação */
.adm-pagination { display: flex; align-items: center; gap: 10px; justify-content: flex-end; margin-top: 14px; font-size: 0.85rem; color: var(--cp-muted); }
.adm-pagination button { background: var(--white); border: 1.5px solid var(--cp-border); border-radius: 10px; padding: 6px 12px; font-weight: 600; cursor: pointer; color: var(--cp-text); }
.adm-pagination button:disabled { opacity: 0.4; cursor: not-allowed; }

/* Form simples (filtros) */
.adm-form-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; margin-bottom: 14px; }
.adm-input { padding: 10px 12px; border-radius: 10px; border: 1.5px solid var(--cp-border); background: var(--white); font-size: 0.9rem; min-width: 160px; font-family: inherit; color: var(--cp-text); }
.adm-input:focus { outline: none; border-color: var(--cp-purple); }
.adm-label { display: flex; flex-direction: column; gap: 4px; font-size: 0.78rem; font-weight: 600; color: var(--cp-muted); }
.adm-btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 8px; text-decoration: none; background: var(--cp-grad); color: var(--white); border: none; border-radius: 10px; padding: 10px 18px; font-size: 0.875rem; font-weight: 700; line-height: 1; cursor: pointer; box-shadow: 0 4px 14px var(--brand-alpha-20); transition: filter 0.15s, transform 0.12s, box-shadow 0.15s; }
.adm-btn-primary:hover:not(:disabled) { filter: brightness(1.05); box-shadow: 0 6px 18px var(--brand-alpha-28); }
.adm-btn-primary:active:not(:disabled) { transform: scale(0.98); }
.adm-btn-primary:disabled { opacity: 0.5; cursor: not-allowed; }
/* adm-btn-link: agora também seguro em &lt;a&gt; (sem sublinhado, com gap e padding).
   Antes parecia hyperlink "grudado" quando aplicado a links (ex.: WhatsApp). */
.adm-btn-link { display: inline-flex; align-items: center; justify-content: center; gap: 6px; text-decoration: none; background: transparent; border: 1.5px solid transparent; border-radius: 10px; padding: 9px 14px; color: var(--cp-purple); font-weight: 700; cursor: pointer; font-size: 0.875rem; line-height: 1; transition: background 0.15s, border-color 0.15s; }
.adm-btn-link:hover:not(:disabled) { background: var(--brand-alpha-07); border-color: var(--brand-alpha-18); }
.adm-btn-link:disabled { opacity: 0.5; cursor: not-allowed; }

/* Responsivo */
@media (max-width: 900px) {
    .adm-shell { grid-template-columns: 1fr; }
    .adm-side {
        position: fixed; left: 0; top: 0; bottom: 0; width: 260px; z-index: 100;
        transform: translateX(-100%); transition: transform 0.25s ease-out;
        flex-direction: column; align-items: stretch; gap: 22px;
        box-shadow: 0 0 40px rgba(31,38,45,0.18);
    }
    .adm-side.open { transform: translateX(0); }
    .adm-nav { flex-direction: column; flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; }
    .adm-grid-2 { grid-template-columns: 1fr; }
    .adm-main { padding: 14px; }
    .adm-header-side-toggle { display: inline-flex; }
    .adm-event { grid-template-columns: 1fr; gap: 4px; }
    .adm-event .when, .adm-event .who { font-size: 0.7rem; }
}

/* ════════════════════════════════════════════════════════════════════════
   Auth (login + tela de não autorizado) — paleta coral, layout centralizado
   ════════════════════════════════════════════════════════════════════════ */
.auth-shell {
    min-height: 100dvh;
    background:
        radial-gradient(circle at 0% 0%, var(--brand-alpha-10) 0%, transparent 45%),
        radial-gradient(circle at 100% 100%, rgba(255,158,122,0.08) 0%, transparent 50%),
        var(--cora-surface);
    display: flex; align-items: center; justify-content: center;
    padding: 24px;
}
.auth-page { width: 100%; display: flex; justify-content: center; }

.auth-card {
    width: 100%; max-width: 420px;
    background: var(--cora-card);
    border: 1px solid var(--cora-border);
    border-radius: 18px;
    padding: 32px 28px 28px;
    box-shadow: var(--cora-shadow-lg);
    display: flex; flex-direction: column; gap: 14px;
}

.auth-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.auth-mark {
    width: 44px; height: 44px; border-radius: 12px; padding: 8px;
    background: var(--cora-primary-soft);
    border: 1px solid var(--brand-alpha-20);
    display: flex; align-items: center; justify-content: center;
}
.auth-mark svg { width: 100%; height: 100%; }
.auth-name { font-size: 1.15rem; font-weight: 800; letter-spacing: -0.3px; color: var(--cora-text); }
.auth-name span { color: var(--cora-primary); }
.auth-tag {
    margin-left: auto; padding: 3px 9px;
    font-size: 0.62rem; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;
    color: var(--cora-primary-dark); background: var(--cora-primary-soft);
    border-radius: 99px;
}

.auth-title { font-size: 1.5rem; font-weight: 800; letter-spacing: -0.3px; color: var(--cora-text); margin-top: 4px; }
.auth-sub { font-size: 0.875rem; color: var(--cora-text-soft); margin-bottom: 6px; }

.auth-error {
    display: flex; gap: 10px; align-items: center;
    padding: 12px 14px; border-radius: 12px;
    background: var(--cora-danger-soft);
    border: 1px solid rgba(229,72,77,0.20);
    color: #9B1C1F; font-size: 0.875rem; font-weight: 500;
}
.auth-error i { font-size: 1rem; }

.auth-form { display: flex; flex-direction: column; gap: 8px; }

.auth-label { font-size: 0.78rem; font-weight: 700; color: var(--cora-text-soft); margin-top: 8px; margin-bottom: 2px; }

.auth-field {
    display: flex; align-items: center; gap: 10px;
    background: var(--white);
    border: 1.5px solid var(--cora-border);
    border-radius: var(--cora-radius);
    padding: 0 14px; min-height: 50px;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.auth-field:focus-within { border-color: var(--cora-primary); box-shadow: 0 0 0 3px var(--brand-alpha-15); }
.auth-field i { color: var(--cora-muted); font-size: 0.95rem; flex-shrink: 0; }
.auth-field input {
    flex: 1; min-width: 0;
    border: none; outline: none; background: transparent;
    font-family: inherit; font-size: 0.95rem; color: var(--cora-text);
    padding: 14px 0;
}
.auth-field input::placeholder { color: var(--cora-muted); }
.auth-field input:disabled { opacity: 0.55; cursor: not-allowed; }

.auth-toggle {
    background: none; border: none; padding: 6px; cursor: pointer;
    color: var(--cora-muted); font-size: 0.95rem; line-height: 1;
}
.auth-toggle:hover { color: var(--cora-primary); }

.auth-btn {
    margin-top: 14px; min-height: 52px;
    background: var(--cora-primary); color: var(--white);
    border: none; border-radius: var(--cora-radius);
    font-family: inherit; font-size: 1rem; font-weight: 700;
    cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    box-shadow: 0 6px 18px rgba(218,72,59,0.25);
    transition: background 0.15s, transform 0.1s, opacity 0.15s;
}
.auth-btn:hover:not(:disabled) { background: var(--cora-primary-dark); }
.auth-btn:active:not(:disabled) { transform: scale(0.98); }
.auth-btn:disabled { opacity: 0.65; cursor: not-allowed; box-shadow: none; }

.auth-spinner {
    display: inline-block; width: 16px; height: 16px;
    border: 2.5px solid rgba(255,255,255,0.35);
    border-top-color: var(--white); border-radius: 50%;
    animation: cpSpin 0.75s linear infinite;
}

.auth-foot {
    margin-top: 4px; padding-top: 14px;
    border-top: 1px dashed var(--cora-border);
    font-size: 0.78rem; color: var(--cora-muted); text-align: center; line-height: 1.5;
}

@media (max-width: 480px) {
    .auth-card { padding: 26px 20px 22px; border-radius: 14px; }
    .auth-title { font-size: 1.3rem; }
}


/* ============================================================
   Onda 5H — Toast + Confirm reutilizáveis
   ============================================================ */
.adm-toasts {
    position: fixed;
    right: 20px;
    bottom: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    /* Revisão 2026-09-05 — acima do overlay de mutação (1300): um erro nunca
       pode ficar escondido atrás do scrim de "Processando…". */
    z-index: 1400;
    pointer-events: none;
}
.adm-toast {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 280px;
    max-width: 420px;
    padding: 12px 14px;
    border-radius: 10px;
    background: var(--white);
    color: var(--cora-text);  /* Onda A-fix: explicitar pra não herdar branco */
    box-shadow: 0 6px 20px rgba(0,0,0,0.12);
    border-left: 4px solid #6c757d;
    animation: admToastIn 0.18s ease-out;
    font-size: 0.92rem;
}
@keyframes admToastIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}
.adm-toast i { font-size: 1.05rem; }
.adm-toast-msg { flex: 1; line-height: 1.35; }
.adm-toast-close {
    background: none; border: none; cursor: pointer;
    font-size: 1.3rem; color: #888; padding: 0 4px; line-height: 1;
}
.adm-toast-undo {
    background: rgba(31,38,45,0.06);
    border: 1px solid var(--cp-border);
    color: var(--cp-text);
    font-size: 0.8rem; font-weight: 600;
    padding: 4px 10px; border-radius: 6px;
    cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px;
}
.adm-toast-undo:hover { background: rgba(31,38,45,0.12); }
.adm-toast-sucesso { border-left-color: #2ea66e; }
.adm-toast-sucesso i { color: #2ea66e; }
.adm-toast-erro { border-left-color: #d9534f; }
.adm-toast-erro i { color: #d9534f; }
.adm-toast-aviso { border-left-color: #f0ad4e; }
.adm-toast-aviso i { color: #f0ad4e; }
.adm-toast-info { border-left-color: #5bc0de; }
.adm-toast-info i { color: #5bc0de; }

/* Confirm modal */
.adm-confirm-backdrop {
    position: fixed; inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 1090;
}
.adm-confirm {
    position: fixed;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    background: var(--white);
    border-radius: 12px;
    padding: 24px 24px 18px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.25);
    width: min(92vw, 440px);
    z-index: 1100;
}
.adm-confirm-title { margin: 0 0 8px; font-size: 1.15rem; font-weight: 600; color: #222; }
.adm-confirm-msg { margin: 0 0 18px; color: #555; line-height: 1.45; }
.adm-confirm-actions { display: flex; justify-content: flex-end; gap: 10px; }
.adm-btn {
    padding: 8px 18px;
    border-radius: 8px;
    border: 1px solid transparent;
    font-size: 0.92rem;
    cursor: pointer;
    transition: filter 0.12s;
}
.adm-btn:hover { filter: brightness(0.95); }
.adm-btn-primary { background: var(--brand-primary); color: var(--white); }
.adm-btn-secondary { background: #f3f3f3; color: #333; border-color: #d8d8d8; }
.adm-btn-danger { background: #d9534f; color: var(--white); }

/* ════════════════════════════════════════════════════════════════════════
   Onda A — Componentes da pasta Components/: badges variantes, page-header,
   states (empty/loading/error), help-box, paginação, doc-viewer, progress.
   ════════════════════════════════════════════════════════════════════════ */

/* -- Badges adicionais -- */
.adm-badge--info    { background: var(--cora-info-soft);    color: #0F4A8A; border-color: rgba(15,127,232,0.25); }
.adm-badge--neutro  { background: var(--cora-surface);      color: var(--cora-text-soft); border-color: var(--cora-border); }

/* -- PageHeader -- */
.adm-page-head-titles { display: flex; align-items: center; gap: 12px; }
.adm-page-head-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.adm-btn-back {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border-radius: 10px;
    background: var(--white); border: 1.5px solid var(--cp-border);
    color: var(--cp-text); text-decoration: none;
    transition: background 0.15s, border-color 0.15s;
}
.adm-btn-back:hover { background: var(--cp-surface); border-color: var(--cp-purple); color: var(--cp-purple); }

/* -- States: Empty/Loading/Error -- */
.adm-state {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 10px; padding: 56px 24px; text-align: center;
    background: var(--white); border: 1.5px dashed var(--cp-border);
    border-radius: var(--cp-radius);
    color: var(--cp-text-soft, var(--cp-muted));
}
.adm-state--loading { border-style: solid; }
.adm-state--error   { border-color: rgba(229,72,77,0.35); background: var(--cora-danger-soft); }
.adm-state-icon {
    width: 56px; height: 56px; border-radius: 50%;
    background: var(--brand-alpha-10); color: var(--cp-purple);
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 1.4rem;
}
.adm-state-icon--err { background: rgba(229,72,77,0.10); color: var(--cora-danger); }
.adm-state-title { font-size: 1.05rem; font-weight: 700; color: var(--cp-text); margin: 6px 0 0; }
.adm-state-msg   { font-size: 0.875rem; color: var(--cp-muted); max-width: 480px; line-height: 1.5; margin: 0; }
.adm-state-cta   { margin-top: 12px; }

/* -- Skeleton (LoadingState Skeleton mode) --
   Sprint 16 — unificado com .adm-skel-bar (mesma classe base do
   SkeletonRows/SkeletonBlock/SkeletonFicha). Antes existiam três
   convenções paralelas (`adm-skeleton-*`, `adm-skel-bar`, `adm-skel--*`)
   com três keyframes distintos; agora tudo usa .adm-skel-bar + admSkel. */
.adm-skel-list {
    background: var(--cora-card); border: 1.5px solid var(--cora-border);
    border-radius: var(--cp-radius);
    padding: 14px 18px; box-shadow: var(--cp-shadow);
    display: flex; flex-direction: column; gap: 12px;
}
.adm-skel-row { display: flex; gap: 14px; align-items: center; padding: 6px 0; }

/* -- HelpBox -- */
.adm-help-box {
    background: linear-gradient(180deg, var(--brand-alpha-06), rgba(218,72,59,0.02));
    border: 1.5px solid var(--brand-alpha-20);
    border-radius: var(--cp-radius);
    margin-bottom: 18px; overflow: hidden;
    transition: border-color 0.15s;
}
.adm-help-box--open { border-color: rgba(218,72,59,0.35); }
/* Onda 5 — REMED revisão (2026-06-17): variantes amarelo/azul usadas em
   FilasOperacao/Filas/Tarefas para alertas e confirmação. Antes caía na
   variante coral padrão (alerta indistinguível de info). */
.adm-help-box--warn {
    background: linear-gradient(180deg, rgba(180,83,9,0.08), rgba(180,83,9,0.03));
    border-color: rgba(180,83,9,0.30);
}
.adm-help-box--info {
    background: linear-gradient(180deg, rgba(15,127,232,0.08), rgba(15,127,232,0.03));
    border-color: rgba(15,127,232,0.30);
}
.adm-help-toggle {
    display: flex; align-items: center; justify-content: space-between;
    width: 100%; padding: 12px 16px; background: transparent; border: none;
    cursor: pointer; color: var(--cp-text); font-family: inherit; font-size: 0.92rem;
    -webkit-tap-highlight-color: transparent;
}
.adm-help-toggle-left { display: inline-flex; align-items: center; gap: 10px; }
.adm-help-toggle-left i { color: var(--cp-purple); }
.adm-help-toggle strong { font-weight: 700; }
.adm-help-chevron { color: var(--cp-muted); font-size: 0.85rem; }
.adm-help-body {
    padding: 4px 16px 16px; font-size: 0.875rem; line-height: 1.55;
    color: var(--cp-text-soft, var(--cp-text));
}
.adm-help-body p { margin: 0 0 8px; }
.adm-help-body p:last-child { margin-bottom: 0; }
.adm-help-body ul { margin: 4px 0 8px 20px; padding: 0; }
.adm-help-body li { margin-bottom: 4px; }

/* -- Pagination melhorado -- */
.adm-pag-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; padding: 0;
    background: var(--white); border: 1.5px solid var(--cp-border); border-radius: 8px;
    color: var(--cp-text); cursor: pointer;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.adm-pag-btn:not(:disabled):hover { border-color: var(--cp-purple); color: var(--cp-purple); }
.adm-pag-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* -- DocumentViewer -- */
.adm-docview {
    background: var(--white); border: 1.5px solid var(--cp-border); border-radius: var(--cp-radius);
    overflow: hidden; box-shadow: var(--cp-shadow);
    display: flex; flex-direction: column;
}
.adm-docview-toolbar {
    display: flex; align-items: center; gap: 12px; justify-content: space-between;
    padding: 10px 14px; background: var(--cp-surface); border-bottom: 1px solid var(--cp-border);
}
.adm-docview-name {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 0.875rem; font-weight: 600; color: var(--cp-text);
    min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.adm-docview-name i { color: var(--cp-purple); flex-shrink: 0; }
.adm-docview-actions { display: flex; gap: 6px; flex-shrink: 0; }
.adm-docview-body { display: flex; align-items: center; justify-content: center; background: var(--cp-surface-alt, var(--cp-surface)); padding: 8px; }
.adm-docview-img { max-width: 100%; max-height: 600px; border-radius: 6px; object-fit: contain; }
.adm-docview-pdf { width: 100%; min-height: 360px; border: none; }
.adm-docview-fallback {
    display: flex; align-items: center; gap: 8px; flex-direction: column;
    padding: 36px 18px; color: var(--cp-muted); font-size: 0.9rem; text-align: center;
}
.adm-docview-fallback i { font-size: 2rem; color: var(--cp-purple); }
.adm-docview-fallback a { color: var(--cp-purple); font-weight: 600; }
.adm-docview-empty {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 36px 18px; color: var(--cp-muted);
}

/* -- Top progress bar (LoadingHost) -- */
.adm-progress {
    position: fixed; left: 0; right: 0; top: 0;
    height: 3px; z-index: 1200;
    background: var(--brand-alpha-10);
    overflow: hidden;
    pointer-events: none;
}
.adm-progress-bar {
    height: 100%; width: 35%;
    background: var(--cp-grad);
    box-shadow: 0 0 8px rgba(218,72,59,0.45);
    animation: admProgress 1.1s ease-in-out infinite;
}

/* Fix 2026-09-05 — overlay de MUTAÇÃO (LoadingHost): ações POST/PUT/DELETE
   acima de ~350ms ganham spinner central + scrim leve. pointer-events padrão
   (bloqueia cliques) = anti duplo-clique de brinde. */
.adm-loading-overlay {
    position: fixed; inset: 0; z-index: 1300;
    background: rgba(30, 20, 18, 0.28);
    display: flex; align-items: center; justify-content: center;
}
.adm-loading-card {
    background: var(--cp-surface, var(--white));
    border-radius: 16px;
    padding: 22px 30px;
    display: flex; flex-direction: column; align-items: center; gap: 12px;
    box-shadow: 0 12px 34px rgba(0,0,0,0.18);
    font-weight: 700; color: var(--cp-text, #2b2b2b);
}
.adm-loading-spinner {
    width: 34px; height: 34px;
    border-radius: 50%;
    border: 3.5px solid var(--brand-alpha-18);
    border-top-color: var(--brand-primary);
    animation: admSpin 0.8s linear infinite;
}
@keyframes admSpin { to { transform: rotate(360deg); } }
@keyframes admProgress {
    0%   { transform: translateX(-110%); }
    50%  { transform: translateX(120%); }
    100% { transform: translateX(330%); }
}

/* -- Tabela responsiva: scroll horizontal nas pequenas -- */
@media (max-width: 720px) {
    .adm-table-card { overflow-x: auto; }
    .adm-page-head { flex-direction: column; align-items: flex-start; }
}

/* ════════════════════════════════════════════════════════════════════════
   Onda A — Helpers utilitários para substituir inline styles soltos.
   Adicionados conforme as páginas vão sendo refatoradas (SuporteTicketDetalhe,
   Avaliacoes, etc.). Mantenha mínimos e sem opinar demais — a ideia é não
   precisar disso depois que cada página tiver seus próprios componentes.
   ════════════════════════════════════════════════════════════════════════ */

.adm-card-pad { padding: 18px; }
.adm-stack-12 { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
/* .adm-section-title--mt definido mais abaixo (Onda 5 — bloco KPIs); a definição
   duplicada de 18px que existia aqui foi removida em favor da canônica de 24px. */
.adm-label--mt { margin-top: 12px; }
.adm-label--inline { flex-direction: column; }
.adm-checkbox-line { display: flex; align-items: center; gap: 6px; padding: 8px 0; font-size: 0.88rem; color: var(--cp-text); }
.adm-checkbox-line input[type=checkbox] { accent-color: var(--cp-purple); }

.adm-badge-inline { margin-left: 4px; }
.adm-muted-sm    { font-size: 0.8rem; opacity: 0.6; color: var(--cp-muted); }

/* Sprint 10 — utilities usadas em ContatoDetalhe (sweep de style inline). */
.adm-text-success { color: var(--cora-success); }
.adm-text-warning { color: var(--cora-warning); }
.adm-pre-wrap     { white-space: pre-wrap; line-height: 1.6; }
.adm-code-break   { font-size: 0.78rem; word-break: break-all; }
.adm-btn-block    { width: 100%; margin-top: 10px; }
.adm-hint-sm      { font-size: 0.84rem; color: var(--cora-text-soft); margin-bottom: 8px; }

/* Sprint 11 (S11.11) — Skeleton fiel à estrutura de ficha.
   Sprint 16 — modifiers passaram a viver em .adm-skel-bar--* (abaixo). */
.adm-skel-ficha-header { margin-bottom: 14px; }
.adm-skel-ficha-card {
    background: var(--cora-card);
    border: 1px solid var(--cora-border);
    border-radius: 12px;
    padding: 14px;
    margin-bottom: 12px;
}
.adm-skel-ficha-row {
    display: flex; align-items: center; gap: 12px;
    padding: 6px 0;
    border-bottom: 1px dashed var(--cora-border-soft);
}
.adm-skel-ficha-row:last-child { border-bottom: 0; }

/* Sprint 11 (S11.10) — spinner com label contextual em botões. */
.adm-loading-label { display: inline-flex; align-items: center; gap: 8px; }
.adm-loading-label .cp-spinner--sm { width: 14px; height: 14px; }

/* Sprint 11 (S11.9) — Preview de push no PushDirectoModal. */
.adm-push-preview { margin: 12px 0 10px; }
.adm-push-preview-lbl {
    font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em;
    color: var(--cp-muted); text-transform: uppercase;
    margin-bottom: 6px;
}
.adm-push-preview-card {
    background: #F2F3F5; color: #1F262D;
    border-radius: 14px;
    padding: 10px 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    font-size: 0.85rem; line-height: 1.35;
}
:root[data-theme="dark"] .adm-push-preview-card {
    background: #2A2E34; color: #E4E7EA; box-shadow: 0 2px 8px rgba(0,0,0,0.5);
}
@media (prefers-color-scheme: dark) {
    :root:not([data-theme="light"]) .adm-push-preview-card {
        background: #2A2E34; color: #E4E7EA; box-shadow: 0 2px 8px rgba(0,0,0,0.5);
    }
}
.adm-push-preview-app { display: flex; align-items: center; gap: 6px;
    font-size: 0.68rem; color: #6E7480; margin-bottom: 4px; }
.adm-push-preview-app i { color: var(--brand-primary); font-size: 12px; }
.adm-push-preview-titulo { font-weight: 700; margin-bottom: 2px; word-break: break-word; }
.adm-push-preview-corpo { word-break: break-word; }

/* Sprint 11 (S11.13) — Banner de nova versão disponível. */
.adm-versao-banner {
    position: fixed;
    left: 50%; bottom: 20px; transform: translateX(-50%);
    display: inline-flex; align-items: center; gap: 10px;
    padding: 10px 14px;
    background: var(--cora-card);
    border: 1.5px solid var(--brand-primary);
    border-radius: 999px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.15);
    z-index: 900;
    font-size: 0.85rem;
}
.adm-versao-banner i.fa-arrows-rotate { color: var(--brand-primary); }
.adm-versao-x {
    background: transparent; border: 0; color: var(--cp-muted); cursor: pointer;
    padding: 4px; margin-left: 2px; border-radius: 4px;
}
.adm-versao-x:hover { background: var(--brand-alpha-06); color: var(--cp-text); }
@media (max-width: 480px) {
    .adm-versao-banner { left: 8px; right: 8px; bottom: 12px; transform: none;
                          justify-content: center; flex-wrap: wrap; }
}

/* Sprint 11 (S11.5) — Sticky footer em ficha longa.
   Wrap com .adm-ficha-sticky-actions em torno dos botões Salvar/Cancelar:
   ficam grudados no fundo enquanto o admin rola a ficha. */
.adm-ficha-sticky-actions {
    position: sticky; bottom: 0; z-index: 30;
    display: flex; justify-content: flex-end; gap: 8px;
    padding: 10px 14px; margin: 16px -14px -14px;
    background: var(--cora-card);
    border-top: 1px solid var(--cora-border);
    box-shadow: 0 -4px 12px rgba(0,0,0,0.04);
}
html[data-theme="dark"] .adm-ficha-sticky-actions,
:root:not([data-theme="light"]) .adm-ficha-sticky-actions { box-shadow: 0 -4px 12px rgba(0,0,0,0.35); }

/* Sprint 11 (S11.3) — Undo global no header. */
.adm-undo-global {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px; border: 1.5px solid var(--brand-primary);
    background: var(--brand-alpha-08); color: var(--brand-primary);
    border-radius: 999px;
    font-size: 0.78rem; font-weight: 700;
    cursor: pointer;
    transition: background 0.15s, transform 0.15s;
}
.adm-undo-global:hover { background: var(--brand-alpha-14); transform: translateY(-1px); }
@media (max-width: 720px) { .adm-undo-global-lbl { display: none; } }

/* Sprint 11 (S11.8) — hint discreto de última visita à ficha. */
.adm-visita-hint {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px; margin: 4px 0 12px;
    background: var(--brand-alpha-06);
    border-radius: 999px;
    font-size: 0.78rem; color: var(--cp-muted);
}
.adm-visita-hint i { color: var(--brand-primary); }

/* Sprint 11 (S11.6) — botão flutuante de feedback do admin. */
.adm-feedback-fab {
    position: fixed;
    right: 20px; bottom: 20px;
    width: 48px; height: 48px;
    background: var(--cp-grad); color: var(--white);
    border: 0; border-radius: 50%;
    box-shadow: 0 6px 18px var(--brand-alpha-28);
    cursor: pointer;
    font-size: 20px;
    z-index: 800;
    display: inline-flex; align-items: center; justify-content: center;
    transition: transform 0.15s, box-shadow 0.15s;
}
.adm-feedback-fab:hover { transform: scale(1.06); box-shadow: 0 8px 24px var(--brand-alpha-28); }
.adm-feedback-fab:active { transform: scale(0.96); }
@media print { .adm-feedback-fab { display: none !important; } }
@media (max-width: 720px) {
    .adm-feedback-fab { right: 12px; bottom: 12px; width: 44px; height: 44px; font-size: 18px; }
}

/* Sprint 11 (S11.2) — Confirm com consequências + digitar-para-confirmar. */
.adm-confirm-consequencias {
    margin: 10px 0;
    padding: 10px 12px;
    background: var(--cora-warning-soft);
    border: 1px solid var(--brand-alpha-18);
    border-left: 3px solid var(--cora-warning);
    border-radius: 6px;
}
.adm-confirm-consequencias-titulo {
    font-size: 0.82rem; font-weight: 700;
    color: var(--warning-deep, var(--cora-text));
    margin: 0 0 6px 0;
}
.adm-confirm-consequencias ul { margin: 0; padding-left: 22px; }
.adm-confirm-consequencias li { font-size: 0.85rem; padding: 2px 0; }

.adm-confirm-digitar { margin: 12px 0 4px; }
.adm-confirm-digitar label { display: block; margin-bottom: 6px; }
.adm-confirm-digitar code {
    background: var(--brand-alpha-10);
    padding: 1px 6px; border-radius: 4px;
    font-weight: 700;
}
.adm-confirm-digitar .adm-input { width: 100%; }

/* Sprint 15 (S15.1) — Card de onboarding por rota (localStorage). */
.adm-onboarding-card {
    background: linear-gradient(135deg, var(--brand-alpha-08), var(--brand-alpha-04));
    border: 1.5px solid var(--brand-primary); border-radius: 12px;
    padding: 16px 20px; margin-bottom: 20px;
    box-shadow: 0 4px 14px var(--brand-alpha-10);
}
.adm-onboarding-head { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.adm-onboarding-ico {
    display: inline-flex; align-items: center; justify-content: center;
    width: 40px; height: 40px; border-radius: 50%;
    background: var(--brand-primary); color: var(--cora-on-primary); font-size: 18px;
}
.adm-onboarding-titulo { flex: 1; margin: 0; font-size: 1.1rem; color: var(--cp-text); }
.adm-onboarding-x {
    background: transparent; border: 0; color: var(--cp-muted); cursor: pointer;
    padding: 6px 10px; border-radius: 6px;
}
.adm-onboarding-x:hover { color: var(--cp-text); background: rgba(0,0,0,0.06); }
.adm-onboarding-body { color: var(--cp-text); font-size: 0.9rem; line-height: 1.5; }
.adm-onboarding-body p { margin: 0 0 8px; }
.adm-onboarding-body ul { margin: 4px 0 0; padding-left: 22px; }
.adm-onboarding-body li { padding: 2px 0; }
.adm-onboarding-body kbd {
    background: var(--cora-card); border: 1px solid var(--cora-border);
    padding: 1px 6px; border-radius: 4px; font-size: 0.85em;
}
.adm-onboarding-foot { margin-top: 12px; text-align: right; }

/* Sprint 15 (S15.2) — Split view: 2 fichas lado a lado via iframes. */
.adm-split-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
    min-height: calc(100vh - 200px);
}
.adm-split-pane {
    display: flex; flex-direction: column;
    background: var(--cora-card); border: 1.5px solid var(--cora-border);
    border-radius: 10px; overflow: hidden;
}
.adm-split-pane-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 8px 12px; background: var(--cora-surface-alt);
    border-bottom: 1px solid var(--cora-border);
    font-size: 0.85rem;
}
.adm-split-close {
    background: transparent; border: 0; color: var(--cp-muted);
    cursor: pointer; padding: 4px 8px; border-radius: 4px;
}
.adm-split-close:hover { background: rgba(229,72,77,0.14); color: var(--danger-deep); }
.adm-split-frame { width: 100%; height: 100%; min-height: 600px; border: 0; background: var(--cora-surface); }
.adm-split-vazio {
    display: flex; align-items: center; justify-content: center;
    padding: 40px; color: var(--cp-muted);
}
@media (max-width: 900px) {
    .adm-split-grid { grid-template-columns: 1fr; }
}

/* Sprint 15 (S15.5) — barra de presets do modo TV.
   Aparece no topo do main quando `?tv=1` está na URL. */
.adm-tv-switcher {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 14px; margin-bottom: 14px;
    background: var(--cora-card); border: 1.5px solid var(--brand-primary);
    border-radius: 10px; box-shadow: var(--cora-shadow);
    flex-wrap: wrap;
}
.adm-tv-switcher-lbl {
    font-weight: 700; color: var(--brand-primary);
    display: inline-flex; align-items: center; gap: 6px;
    padding-right: 10px; border-right: 1px solid var(--cora-border);
}
.adm-tv-switcher-btn {
    display: inline-flex; align-items: center; gap: 6px;
    background: transparent; border: 1.5px solid var(--cora-border);
    color: var(--cp-text); padding: 8px 14px;
    border-radius: 8px; font-weight: 700; cursor: pointer;
    font-size: 0.9rem;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.adm-tv-switcher-btn:hover { border-color: var(--brand-primary); color: var(--brand-primary); }
.adm-tv-switcher-btn.is-active { background: var(--cp-grad); color: var(--cora-on-primary); border-color: transparent; }
.adm-tv-switcher-spacer { flex: 1; }
.adm-tv-switcher-sair {
    background: transparent; border: 0; color: var(--cp-muted);
    padding: 6px 10px; border-radius: 6px; cursor: pointer;
    display: inline-flex; align-items: center; gap: 4px; font-size: 0.85rem;
}
.adm-tv-switcher-sair:hover { color: var(--danger-deep); background: rgba(229,72,77,0.08); }
@media print { .adm-tv-switcher { display: none !important; } }

/* Sprint 15 (S15.8) — estrela de favorito + widget "meus acompanhados". */
.adm-fav-star {
    background: transparent; border: 0; padding: 4px 6px; cursor: pointer;
    color: var(--cp-muted); border-radius: 4px;
    transition: color 0.15s, transform 0.15s;
}
.adm-fav-star:hover { color: var(--cora-warning); transform: scale(1.08); }
.adm-fav-star--on { color: var(--cora-warning); }
.adm-fav-star--on:hover { color: var(--cora-warning); }

.adm-fav-widget-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.adm-fav-widget-grupo { }
.adm-fav-widget-kind { font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em;
    text-transform: uppercase; color: var(--cp-muted); display: block; margin-bottom: 4px; }
.adm-fav-widget-grupo ul { list-style: none; margin: 0; padding: 0; }
.adm-fav-widget-item {
    display: flex; align-items: center; gap: 6px;
    padding: 4px 0; border-bottom: 1px solid var(--cora-border-soft);
    font-size: 0.85rem;
}
.adm-fav-widget-item:last-child { border-bottom: 0; }
.adm-fav-widget-item a { flex: 1; color: var(--cp-text); text-decoration: none; }
.adm-fav-widget-item a:hover { color: var(--brand-primary); text-decoration: underline; }
.adm-fav-widget-x {
    background: transparent; border: 0; cursor: pointer;
    color: var(--cp-muted); padding: 2px 6px; border-radius: 4px;
    opacity: 0; transition: opacity 0.15s, background 0.15s;
}
.adm-fav-widget-item:hover .adm-fav-widget-x { opacity: 1; }
.adm-fav-widget-x:hover { background: rgba(229,72,77,0.14); color: var(--danger-deep); }

/* Sprint 12 (S12.11) — linha destacada quando telefone é suspeito de flood SMS. */
.adm-row-alert td { background: rgba(229,72,77,0.06); }
.adm-row-alert:hover td { background: rgba(229,72,77,0.12); }

/* Sprint 12 (S12.4/S12.5) — resultado OCR do documento. */
.adm-ocr-card {
    margin-top: 10px;
    padding: 10px 12px;
    background: var(--brand-alpha-06);
    border-left: 3px solid var(--brand-primary);
    border-radius: 6px;
}
.adm-ocr-titulo { font-weight: 700; margin: 0 0 6px; color: var(--brand-primary);
    display: inline-flex; align-items: center; gap: 6px; }
.adm-ocr-avisos { margin: 0 0 8px; padding-left: 20px; }
.adm-ocr-avisos li { font-size: 0.85rem; padding: 2px 0; }
.adm-ocr-campos { list-style: none; padding: 0; margin: 4px 0; }
.adm-ocr-campos li { padding: 4px 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.adm-ocr-bruto summary { cursor: pointer; color: var(--cp-muted); font-size: 0.85rem; margin-top: 6px; }
.adm-ocr-bruto pre { background: var(--cora-card); padding: 8px; border-radius: 4px;
    max-height: 200px; overflow: auto; font-size: 0.75rem; white-space: pre-wrap; word-break: break-word; }

/* Sprint 12 (S12.1 + S12.2) — sugestão de duplicatas + merge de tickets. */
.adm-dup-card {
    margin: 12px 0 20px;
    padding: 10px 14px;
    background: var(--brand-alpha-06);
    border-left: 3px solid var(--brand-primary);
    border-radius: 8px;
}
.adm-dup-titulo {
    font-weight: 700; margin: 0 0 6px;
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--brand-primary);
}
.adm-dup-lista { list-style: none; margin: 0 0 8px; padding: 0; }
.adm-dup-lista li { padding: 3px 0; }
.adm-dup-lista label { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; flex-wrap: wrap; }
.adm-dup-status { padding: 1px 6px; border-radius: 999px; font-size: 0.72rem; font-weight: 700;
    background: var(--brand-alpha-08); color: var(--brand-primary); }
.adm-dup-problema { color: var(--cp-text); flex: 1; }

/* Sprint 12 (S12.6) — bloco de motivos agregados quando 0 profissionais. */
.adm-diag-resumo-motivos {
    margin: 10px 0;
    padding: 10px 12px;
    background: var(--brand-alpha-06);
    border-left: 3px solid var(--brand-primary);
    border-radius: 6px;
}
.adm-diag-resumo-titulo {
    font-weight: 700; margin: 0 0 6px 0;
    display: inline-flex; align-items: center; gap: 6px;
    color: var(--brand-primary);
}
.adm-diag-resumo-motivos ul { margin: 0 0 6px; padding-left: 22px; }
.adm-diag-resumo-motivos li { font-size: 0.88rem; padding: 2px 0; }

/* Sprint 11 (S11.1) — copy button discreto.
   Container do dado ganha .adm-copy-host — botão aparece no hover em desktop,
   sempre visível em mobile (sem hover). */
.adm-copy-host { position: relative; display: inline-flex; align-items: center; gap: 6px; }
.adm-copy-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; padding: 0;
    background: transparent; border: 0; border-radius: 4px;
    color: var(--cp-muted); cursor: pointer;
    opacity: 0; transition: opacity 0.15s, background 0.15s, color 0.15s;
    font-size: 12px; flex-shrink: 0;
}
.adm-copy-host:hover .adm-copy-btn,
.adm-copy-btn:focus-visible { opacity: 1; }
.adm-copy-btn:hover { background: var(--brand-alpha-08); color: var(--brand-primary); }
.adm-copy-btn--ok { opacity: 1 !important; color: var(--cora-success) !important; }
@media (max-width: 720px) { .adm-copy-btn { opacity: 1; } }
.adm-muted       { color: var(--cp-muted); }

.adm-details-resposta { margin-top: 4px; }
.adm-details-resposta summary {
    cursor: pointer; font-size: 0.85rem; color: var(--cp-purple);
    list-style: none; display: inline-flex; align-items: center; gap: 6px;
}
.adm-details-resposta summary::-webkit-details-marker { display: none; }
.adm-details-resposta summary i { font-size: 0.8rem; }
.adm-details-resposta .adm-details-meta { opacity: 0.7; font-weight: 400; }
.adm-details-resposta .adm-details-body {
    margin-top: 4px; padding: 8px; background: var(--cp-surface-alt, var(--cp-surface));
    border-radius: 6px; font-size: 0.9rem; line-height: 1.5;
}

/* Modal centralizado simples (Avaliacoes ocultar) */
.adm-modal-shell {
    position: fixed; top: 80px; left: 50%; transform: translateX(-50%);
    width: min(560px, calc(100% - 24px)); padding: 22px;
    background: var(--white); border: 1.5px solid var(--cp-border);
    border-radius: var(--cp-radius); box-shadow: var(--cora-shadow-lg);
    z-index: 200; display: flex; flex-direction: column; gap: 12px;
}

/* Visualizador de documento inline (aba Documentos do profissional) —
   substitui o "abrir em nova aba" por um modal centralizado. */
.adm-modal-backdrop { position: fixed; inset: 0; background: rgba(31,38,45,0.55); z-index: 1300; display: flex; align-items: center; justify-content: center; padding: 16px; }
.adm-modal-card {
    background: var(--white); border-radius: var(--cp-radius); box-shadow: var(--cora-shadow-lg);
    width: min(520px, 100%); padding: 22px; max-height: 88vh; overflow: auto;
    display: flex; flex-direction: column; gap: 12px;
}
.adm-modal-title { margin: 0 0 4px 0; font-size: 1.1rem; color: var(--cp-text); font-weight: 700; }
.adm-doc-viewer {
    position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
    width: min(960px, calc(100% - 32px)); height: min(88vh, 900px);
    background: var(--white); border-radius: var(--cp-radius); box-shadow: var(--cora-shadow-lg);
    z-index: 1301; display: flex; flex-direction: column; overflow: hidden;
}
.adm-doc-viewer-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 12px 16px; border-bottom: 1px solid var(--cp-border); flex: 0 0 auto;
}
.adm-doc-viewer-title { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-doc-viewer-head-actions { display: flex; gap: 6px; flex: 0 0 auto; }
.adm-doc-viewer-body {
    flex: 1 1 auto; min-height: 0; overflow: auto;
    display: flex; align-items: center; justify-content: center;
    background: #f3f4f6; padding: 12px;
}
.adm-doc-viewer-img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 4px; }
.adm-doc-viewer-frame { width: 100%; height: 100%; border: 0; background: var(--white); }
.adm-doc-viewer-fallback {
    display: flex; flex-direction: column; align-items: center; gap: 12px;
    color: var(--cp-muted); text-align: center; padding: 24px;
}
.adm-doc-viewer-fallback i { font-size: 2.4rem; }

/* ════════════════════════════════════════════════════════════════════════
   Onda B — Sidebar agrupada e Breadcrumbs no header.
   ════════════════════════════════════════════════════════════════════════ */

.adm-nav--grupos { gap: 6px; }

.adm-nav-grupo { display: flex; flex-direction: column; }
.adm-nav-grupo-titulo {
    display: flex; align-items: center; gap: 10px;
    width: 100%; padding: 9px 12px; border-radius: 10px;
    background: transparent; border: none; cursor: pointer;
    font-family: inherit; font-size: 0.72rem; font-weight: 800;
    letter-spacing: 1px; text-transform: uppercase; color: var(--cp-muted);
    transition: background 0.12s, color 0.12s;
    -webkit-tap-highlight-color: transparent;
}
.adm-nav-grupo-titulo:hover { background: rgba(218,72,59,0.05); color: var(--cp-text); }
.adm-nav-grupo-titulo > span { flex: 1; text-align: left; }
.adm-nav-grupo-titulo i:first-child { color: var(--cp-purple); font-size: 0.85rem; }
.adm-nav-chevron { color: var(--cp-muted); font-size: 0.65rem; opacity: 0.7; }

.adm-nav-itens {
    display: flex; flex-direction: column; gap: 2px;
    margin: 4px 0 8px 6px; padding-left: 8px;
    border-left: 1.5px dashed var(--cp-border);
}

/* Breadcrumb */
.adm-breadcrumb {
    display: flex; align-items: center; gap: 6px;
    font-size: 0.78rem; color: var(--cp-muted);
    overflow: hidden; min-width: 0;
}
.adm-breadcrumb-item {
    display: inline-flex; align-items: center; gap: 4px;
    color: var(--cp-muted); text-decoration: none;
    padding: 4px 8px; border-radius: 6px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px;
    transition: background 0.12s, color 0.12s;
}
.adm-breadcrumb-item:hover { background: var(--cp-surface); color: var(--cp-text); }
.adm-breadcrumb-home { padding: 4px 6px; }
.adm-breadcrumb-home i { font-size: 0.75rem; }
.adm-breadcrumb-atual { color: var(--cp-text); font-weight: 700; }
.adm-breadcrumb-atual:hover { background: transparent; }
.adm-breadcrumb-sep { color: var(--cp-muted); opacity: 0.5; }

@media (max-width: 720px) {
    .adm-breadcrumb { display: none; }
}

/* Onda B — ícone GPS pequeno ao lado de hora de chegada/saída */
.adm-gps-ico { color: var(--cora-success); margin-left: 4px; font-size: 0.75rem; }

/* Onda B — utilitários soltos pra eliminar inline styles */
.adm-form-row--mt { margin-top: 12px; }
.adm-row-meta { font-size: 0.78rem; color: var(--cp-muted); margin-top: 2px; }
.adm-row-counter { margin-top: 12px; font-size: 0.82rem; color: var(--cp-muted); text-align: right; }

.adm-modal-shell--lg { width: min(720px, calc(100% - 24px)); top: 60px; max-height: calc(100vh - 120px); overflow-y: auto; }

/* Sprint 16.1 — variantes pra colapsar 7 modais custom do Financeiro/Agenda
   que reimplementavam `position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)`
   com hex inline. Combinam com o .adm-modal-shell base. */
.adm-modal-shell--center { top: 50%; transform: translate(-50%, -50%); }
.adm-modal-shell--520    { width: min(520px, calc(100% - 24px)); }
.adm-modal-shell--680    { width: min(680px, calc(100% - 24px)); }
.adm-modal-shell--780    { width: min(780px, calc(100% - 24px)); }
.adm-modal-shell--scroll { max-height: 85vh; overflow-y: auto; }
.adm-modal-shell--above  { z-index: 210; }
.adm-modal-help { font-size: 0.875rem; color: var(--cp-muted); margin-bottom: 4px; }
.adm-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }

.adm-pre-json {
    white-space: pre-wrap; background: var(--cp-surface); padding: 12px;
    border-radius: 12px; font-size: 0.82rem; max-height: 60vh; overflow-y: auto;
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    color: var(--cp-text);
}
.adm-row-meta-inline { color: var(--cp-muted); }

/* Onda B — utilitários adicionais para detalhe */
.adm-mt-22                  { margin-top: 22px; }
/* Sprint 16.1 — utilitários de margem usados em Financeiro pra substituir
   style="margin-top:Xpx". Escala 4/8/12/16. */
.adm-mt-4                   { margin-top: 4px; }
.adm-mt-8                   { margin-top: 8px; }
.adm-mt-12                  { margin-top: 12px; }
.adm-mt-16                  { margin-top: 16px; }
.adm-ml-4                   { margin-left: 4px; }
.adm-ml-8                   { margin-left: 8px; }
.adm-ml-12                  { margin-left: 12px; }
.adm-ml-16                  { margin-left: 16px; }
.adm-mr-4                   { margin-right: 4px; }
.adm-mr-8                   { margin-right: 8px; }
.adm-mr-12                  { margin-right: 12px; }
.adm-mr-16                  { margin-right: 16px; }
/* Sprint 16.1 — utilitários adicionais pra substituir style inline de layout
   remanescente (nada de cor). */
.adm-mt-0                   { margin-top: 0; }
.adm-mt-24                  { margin-top: 24px; }
.adm-mb-4                   { margin-bottom: 4px; }
.adm-mb-8                   { margin-bottom: 8px; }
.adm-mb-12                  { margin-bottom: 12px; }
.adm-mb-16                  { margin-bottom: 16px; }
.adm-mb-24                  { margin-bottom: 24px; }
.adm-flex-1                 { flex: 1; }
.adm-flex-end               { justify-content: flex-end; }
.adm-text-right             { text-align: right; }
.adm-no-underline           { text-decoration: none; }
.adm-fs-xs                  { font-size: 0.75rem; }
.adm-fs-sm                  { font-size: 0.85rem; }
.adm-fs-lg                  { font-size: 1.2rem; }
.adm-m-0                    { margin: 0; }
/* Sprint 16.1 — helpers pontuais surgidos na varredura de style residuais. */
.adm-h3-tight               { margin: 0 0 12px; }
.adm-card-flex-280          { flex: 1; min-width: 280px; }
.adm-label-block            { display: block; margin: 16px 0; }
.adm-th-icon                { width: 36px; }
.adm-w-80                   { width: 80px; }
.adm-w-100                  { width: 100px; }
.adm-w-120                  { width: 120px; }
.adm-mw-180                 { max-width: 180px; }
.adm-actions-bar--mt        { margin-top: 16px; }
.adm-actions-bar--sm-mt     { margin-top: 8px; }
.adm-actions-bar--wrap      { flex-wrap: wrap; }
.adm-info-row--mt           { margin-top: 10px; }
.adm-info-row--stack        { flex-direction: column; align-items: stretch; gap: 4px; }
.adm-info-row-comentario    { text-align: left; font-weight: 400; }
.adm-section-title--reset   { margin: 0; }
.adm-table-section-head     { background: var(--cp-surface); text-align: left; padding: 14px 18px; }
.adm-empty--inline          { border: none; padding: 30px 18px; }
.adm-form-stack             { display: flex; flex-direction: column; gap: 8px; align-items: stretch; }
.adm-vinculo-bloco          { margin-bottom: 14px; }
.adm-text-danger            { color: var(--cora-danger); }
/* Sprint 16.1 — atalhos de cor semântica pra substituir style="color:#..."
   inline nas páginas do Financeiro. */
.adm-text-info              { color: var(--info-deep); }
.adm-text-danger-deep       { color: var(--danger-deep); }
.adm-text-success-deep      { color: var(--success-deep); }
.adm-text-warning-deep      { color: var(--warning-deep); }
.adm-text-muted             { color: var(--cp-muted); }
.adm-input--textarea        { min-height: 96px; padding: 12px 14px; resize: vertical; }
.adm-alert--mt              { margin-top: 12px; }
.adm-alert--success         { background: var(--cora-success-soft); border-color: rgba(15,182,122,0.3); color: var(--success-deep); }
.adm-bloqueios-lista        { margin: 8px 0 12px 24px; font-size: 0.875rem; color: var(--cp-text); }
.adm-doc-filename           { color: var(--cp-muted); font-size: 0.78rem; }

/* Diagnóstico */
.adm-diag-resumo            { font-size: 0.9rem; }
.adm-diag-details           { margin-top: 12px; }
.adm-diag-details summary   { cursor: pointer; font-weight: 600; padding: 4px 0; list-style: none; }
.adm-diag-details summary::-webkit-details-marker { display: none; }
.adm-diag-lista             { margin: 8px 0 0; padding-left: 20px; font-size: 0.85rem; }
.adm-diag-rodape            { font-size: 0.85rem; opacity: 0.7; margin-top: 6px; }
.adm-table--compact         { margin-top: 8px; font-size: 0.85rem; }

/* Foto profissional */
.adm-prof-foto-row { display: flex; gap: 16px; align-items: flex-start; }
.adm-prof-foto     { width: 140px; height: 140px; object-fit: cover; border-radius: 10px; border: 1.5px solid var(--cp-border); background: var(--cp-surface); }
.adm-prof-foto--erro {
    background: var(--cora-danger-soft);
    border-color: rgba(229,72,77,0.30);
    object-fit: contain; padding: 12px;
    /* esconde o ícone broken nativo do navegador */
    color: transparent; font-size: 0;
}
.adm-prof-foto--erro::after {
    content: "🖼️ erro"; color: var(--cora-danger);
    font-size: 0.78rem; font-weight: 600;
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%;
}
.adm-prof-foto-info { flex: 1; min-width: 0; }
.adm-mono { font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; font-size: 0.78rem; color: var(--cp-muted); }

/* Onda B — Forbidden polido */
.auth-card--centered { text-align: center; align-items: center; }
.auth-icon-circle {
    width: 56px; height: 56px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    margin: 8px auto 4px; font-size: 1.5rem;
}
.auth-icon-circle--danger { background: var(--cora-danger-soft); color: var(--cora-danger); }
.auth-title--mt { margin-top: 4px; }

/* ════════════════════════════════════════════════════════════════════════
   Onda C — Suporte: cabeçalho de ticket, timeline, destaque "meu", chips.
   ════════════════════════════════════════════════════════════════════════ */

/* Cabeçalho do ticket */
.adm-ticket-head {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
    background: var(--white); border: 1.5px solid var(--cp-border); border-radius: var(--cp-radius);
    padding: 16px 20px; box-shadow: var(--cp-shadow); margin-bottom: 18px;
}
.adm-ticket-head-info { display: grid; grid-template-columns: repeat(2, minmax(180px, 1fr)); gap: 10px 24px; flex: 1; }
.adm-ticket-head-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
.adm-ticket-head-label { font-size: 0.72rem; font-weight: 700; color: var(--cp-muted); letter-spacing: 0.5px; text-transform: uppercase; flex-shrink: 0; min-width: 92px; }
.adm-ticket-head-strong { font-weight: 700; color: var(--cp-text); }
.adm-ticket-head-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

@media (max-width: 720px) {
    .adm-ticket-head { flex-direction: column; }
    .adm-ticket-head-info { grid-template-columns: 1fr; }
    .adm-ticket-head-actions { width: 100%; }
}

/* Linha "este é meu" na listagem */
.adm-row-mine     { background: var(--brand-alpha-04); }
.adm-row-mine:hover { background: var(--brand-alpha-08) !important; }
.adm-row-mine td:first-child { border-left: 3px solid var(--cp-purple); }
.adm-row-mine-ico { color: var(--cp-purple); margin-left: 4px; font-size: 0.78rem; }
.adm-table-strong { font-weight: 600; color: var(--cp-text); }

/* Tabela de tickets — ajustes finos de largura */
.adm-table--tickets th:nth-child(1),
.adm-table--tickets td:nth-child(1) { white-space: nowrap; }

/* Input "wide" pra busca livre */
.adm-input--wide { min-width: 240px; }
.adm-input--narrow { min-width: 120px; max-width: 180px; }

/* Timeline */
.adm-timeline { list-style: none; padding: 0; margin: 0; position: relative; }
.adm-timeline::before {
    content: ""; position: absolute; left: 13px; top: 4px; bottom: 4px;
    width: 2px; background: var(--cp-border);
}
.adm-timeline-item {
    position: relative; padding: 10px 0 10px 40px;
    display: flex; flex-direction: column; gap: 2px;
}
.adm-timeline-dot {
    position: absolute; left: 0; top: 10px;
    width: 28px; height: 28px; border-radius: 50%;
    background: var(--cp-surface); border: 2px solid var(--cp-border);
    color: var(--cp-muted); display: flex; align-items: center; justify-content: center;
    font-size: 0.78rem;
}
.adm-timeline-dot--info   { background: var(--cora-info-soft);    color: var(--cora-info);    border-color: rgba(15,127,232,0.3); }
.adm-timeline-dot--ok     { background: var(--cora-success-soft); color: var(--cora-success); border-color: rgba(15,182,122,0.3); }
.adm-timeline-dot--warn   { background: var(--cora-warning-soft); color: var(--cora-warning); border-color: rgba(242,169,59,0.3); }
.adm-timeline-dot--accent { background: var(--brand-alpha-12);    color: var(--cp-purple);    border-color: rgba(218,72,59,0.3); }

.adm-timeline-body { display: flex; flex-direction: column; gap: 2px; }
.adm-timeline-line { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.adm-timeline-line strong { font-weight: 600; color: var(--cp-text); font-size: 0.9rem; }
.adm-timeline-when { font-size: 0.78rem; color: var(--cp-muted); flex-shrink: 0; }
.adm-timeline-who { font-size: 0.78rem; color: var(--cp-muted); }

/* ════════════════════════════════════════════════════════════════════════
   Onda D — Sino de notificações no header.
   ════════════════════════════════════════════════════════════════════════ */

.adm-bell { position: relative; }
.adm-bell-btn {
    position: relative; background: transparent; border: 1.5px solid var(--cp-border);
    border-radius: 10px; padding: 7px 11px; cursor: pointer; color: var(--cp-text);
    font-size: 1rem; transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.adm-bell-btn:hover { background: var(--brand-alpha-06); border-color: var(--cp-purple); color: var(--cp-purple); }
.adm-bell-badge {
    position: absolute; top: -4px; right: -4px;
    min-width: 18px; height: 18px; padding: 0 5px;
    background: var(--cora-danger); color: var(--white);
    border-radius: 99px; font-size: 0.65rem; font-weight: 800;
    display: flex; align-items: center; justify-content: center;
    border: 2px solid var(--white);
}

.adm-bell-backdrop {
    position: fixed; inset: 0; background: transparent;
    z-index: 1080;
}
.adm-bell-dropdown {
    position: absolute; right: 0; top: calc(100% + 8px);
    width: 380px; max-height: 520px; overflow-y: auto;
    background: var(--white); border: 1.5px solid var(--cp-border);
    border-radius: var(--cp-radius); box-shadow: var(--cora-shadow-lg);
    z-index: 1090;
    animation: admBellIn 0.15s ease-out;
}
@keyframes admBellIn {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

.adm-bell-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 12px 14px; border-bottom: 1px solid var(--cp-border);
    position: sticky; top: 0; background: var(--white); z-index: 1;
}
.adm-bell-head strong { font-size: 0.92rem; color: var(--cp-text); }
.adm-btn-link--sm { font-size: 0.78rem; }

.adm-bell-state {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 8px; padding: 28px 18px; color: var(--cp-muted); font-size: 0.875rem; text-align: center;
}
.adm-bell-state-ico { font-size: 1.5rem; color: var(--cora-success); }

.adm-bell-list { list-style: none; padding: 0; margin: 0; }
.adm-bell-item {
    display: flex; gap: 10px; align-items: flex-start;
    padding: 12px 14px; border-bottom: 1px solid var(--cp-border-soft, var(--cp-border));
    cursor: pointer; transition: background 0.12s;
    background: rgba(218,72,59,0.025); /* não-lida sutilmente destacada */
}
.adm-bell-item:hover { background: var(--brand-alpha-07); }
.adm-bell-item:last-child { border-bottom: none; }
.adm-bell-item--lida { background: var(--white); }
.adm-bell-item--lida:hover { background: var(--cp-surface); }

.adm-bell-item-ico {
    flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%;
    background: var(--cp-surface); color: var(--cp-muted);
    display: flex; align-items: center; justify-content: center;
    font-size: 0.85rem; margin-top: 2px;
}
.adm-bell-item-ico--info   { background: var(--cora-info-soft); color: var(--cora-info); }
.adm-bell-item-ico--accent { background: var(--brand-alpha-12); color: var(--cp-purple); }
.adm-bell-item-ico--ok     { background: var(--cora-success-soft); color: var(--cora-success); }
.adm-bell-item-ico--danger { background: var(--cora-danger-soft); color: var(--cora-danger); }

.adm-bell-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.adm-bell-item-titulo { font-size: 0.875rem; font-weight: 600; color: var(--cp-text); line-height: 1.3; }
.adm-bell-item-texto {
    font-size: 0.82rem; color: var(--cp-text-soft, var(--cp-muted));
    line-height: 1.4;
    overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
.adm-bell-item-meta { font-size: 0.72rem; color: var(--cp-muted); }

.adm-bell-dot {
    flex-shrink: 0; width: 8px; height: 8px; border-radius: 50%;
    background: var(--cora-danger); margin-top: 8px;
}

@media (max-width: 720px) {
    .adm-bell-dropdown { width: calc(100vw - 28px); right: -8px; }
}

/* ════════════════════════════════════════════════════════════════════════
   Onda E — SubNav (rotas relacionadas), Tabs (em uma página), helpers de
   catálogo (cabeçalho de card com botão "Novo", actions-cell, icon buttons,
   toggle).
   ════════════════════════════════════════════════════════════════════════ */

/* SubNav — barra horizontal entre rotas relacionadas */
.adm-subnav {
    display: flex; gap: 4px; flex-wrap: wrap;
    border-bottom: 1.5px solid var(--cp-border);
    margin-bottom: 18px;
}
.adm-subnav-item {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 14px; border-bottom: 2px solid transparent;
    color: var(--cp-text-soft, var(--cp-muted));
    font-size: 0.875rem; font-weight: 600;
    text-decoration: none;
    transition: color 0.12s, border-color 0.12s, background 0.12s;
    margin-bottom: -1.5px;
}
.adm-subnav-item:hover { color: var(--cp-text); background: var(--brand-alpha-04); }
.adm-subnav-item.active {
    color: var(--cp-purple);
    border-bottom-color: var(--cp-purple);
    background: var(--brand-alpha-04);
}
.adm-subnav-item i { font-size: 0.85rem; }

/* ─── Onda 5 — REMED-O5-B1 (2026-06-17): SubNav agrupada ─────────────────
   Estende .adm-subnav com grupos dropdown. Quando há muitos sub-itens (15+),
   organizamos em 4 grupos colapsáveis para descongestionar a barra. */
/* Onda 5 — REMED revisão (2026-06-18): classes .adm-subnav--agrupada e
   .adm-subnav-grupo* removidas. Eram exclusivas do _FinanceiroSubNav, que
   foi deletado por redundância com o sidebar lateral.
   .adm-subnav (base) e .adm-subnav-item permanecem — usadas pelo SubNav
   genérico de Catalogo/_TiposSubNav. */

/* Tabs — abas dentro de uma única página (cascading parent) */
.adm-tabs { display: flex; flex-direction: column; }
.adm-tabs-bar {
    display: flex; gap: 2px; flex-wrap: wrap;
    border-bottom: 1.5px solid var(--cp-border);
    margin-bottom: 16px;
}
.adm-tab {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 10px 16px; border: none; background: transparent; cursor: pointer;
    border-bottom: 2px solid transparent; margin-bottom: -1.5px;
    font-family: inherit; font-size: 0.875rem; font-weight: 600;
    color: var(--cp-text-soft, var(--cp-muted));
    transition: color 0.12s, border-color 0.12s, background 0.12s;
    -webkit-tap-highlight-color: transparent;
}
.adm-tab:hover { color: var(--cp-text); background: var(--brand-alpha-04); }
.adm-tab.active {
    color: var(--cp-purple);
    border-bottom-color: var(--cp-purple);
}
.adm-tab i { font-size: 0.85rem; }
.adm-tab-badge {
    min-width: 18px; padding: 0 6px; height: 18px;
    background: var(--cp-surface); color: var(--cp-text);
    border-radius: 99px; font-size: 0.68rem; font-weight: 800;
    display: inline-flex; align-items: center; justify-content: center;
}
.adm-tab.active .adm-tab-badge {
    background: var(--brand-alpha-15); color: var(--cp-purple);
}
.adm-tabs-body { display: block; }
.adm-tab-panel { display: block; }

/* Cabeçalho de card de catálogo (título + botão "Novo") */
.adm-cat-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 12px 16px; border-bottom: 1px solid var(--cp-border);
}
.adm-cat-head strong { font-size: 0.92rem; color: var(--cp-text); }

/* Coluna de ações com vários ícones */
.adm-actions-cell { display: flex; gap: 4px; justify-content: flex-end; align-items: center; }

/* Botão de ícone pequeno (lápis, lixeira, power) */
.adm-icon-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border-radius: 8px;
    background: transparent; border: 1.5px solid var(--cp-border);
    color: var(--cp-text-soft, var(--cp-muted)); cursor: pointer;
    font-size: 0.85rem;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.adm-icon-btn:hover { background: var(--cp-surface); color: var(--cp-text); border-color: var(--cp-purple); }
.adm-icon-btn--danger:hover { background: var(--cora-danger-soft); color: var(--cora-danger); border-color: var(--cora-danger); }
/* Ícone interno não pode capturar o click (o click é do botão). */
.adm-icon-btn > i, .adm-icon-btn > svg { pointer-events: none; }
.adm-icon-btn:disabled, .adm-icon-btn[disabled] { opacity: .45; cursor: not-allowed; }

/* Toggle on/off (Catalogo Geografia ainda usa) */
.adm-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    padding: 5px 12px; border-radius: 99px; min-width: 70px;
    font-size: 0.75rem; font-weight: 700; cursor: pointer; border: 1.5px solid;
    transition: filter 0.12s;
}
.adm-toggle:hover { filter: brightness(0.95); }
.adm-toggle.on  { background: var(--cora-success-soft); color: var(--success-deep); border-color: rgba(22,101,52,0.25); }
.adm-toggle.off { background: var(--cp-surface);       color: var(--cp-muted); border-color: var(--cp-border); }

/* Switch (iOS-style) — usado em forms onde queremos um boolean visual com label e dica. */
.adm-switch {
    display: grid;
    grid-template-columns: 44px 1fr;
    gap: 14px;
    align-items: start;
    padding: 12px 14px;
    margin: 8px 0 4px;
    border: 1px solid var(--cora-border, #E6E9EC);
    border-radius: 10px;
    cursor: pointer;
    background: var(--cora-surface-alt, #FAFBFC);
    transition: border-color .15s, background .15s;
}
.adm-switch:hover { border-color: var(--cora-primary, var(--brand-primary)); background: var(--white); }
.adm-switch input[type="checkbox"] { position: absolute; opacity: 0; pointer-events: none; }
.adm-switch-track {
    position: relative;
    width: 44px;
    height: 24px;
    border-radius: 999px;
    background: #cbd5e1;
    transition: background .18s;
    margin-top: 2px;
    flex-shrink: 0;
}
.adm-switch-thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--white);
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
    transition: transform .18s;
}
.adm-switch input:checked + .adm-switch-track { background: var(--cora-primary, var(--brand-primary)); }
.adm-switch input:checked + .adm-switch-track .adm-switch-thumb { transform: translateX(20px); }
.adm-switch-label {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
.adm-switch-label strong {
    font-size: 14px;
    color: var(--cora-text, #1F262D);
}
.adm-switch-hint {
    font-size: 12.5px;
    color: var(--cora-text-soft, #5C6770);
    line-height: 1.4;
}

/* Linha selecionada (CatalogoGeografia) */
.adm-row-active td { background: var(--brand-alpha-06); }

/* CatalogoGeografia — grid 2 colunas + tree */
.adm-geo-grid {
    display: grid; grid-template-columns: 280px 1fr;
    gap: 24px; padding: 18px; align-items: start;
}
.adm-geo-col { min-width: 0; }
.adm-tree-node { display: flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.adm-tree-toggle {
    flex: 1; text-align: left;
    background: transparent; border: none; cursor: pointer;
    padding: 8px 10px; border-radius: 8px;
    font-family: inherit; font-size: 0.875rem; color: var(--cp-text);
    display: inline-flex; align-items: center; gap: 8px;
    transition: background 0.12s, color 0.12s;
}
.adm-tree-toggle:hover { background: var(--brand-alpha-06); }
.adm-tree-toggle.ativo { background: var(--brand-alpha-10); color: var(--cp-purple); font-weight: 600; }
.adm-tree-toggle i { width: 16px; text-align: center; color: var(--cp-purple); }

.adm-pill {
    display: inline-flex; align-items: center; padding: 1px 8px;
    border-radius: 99px; font-size: 0.65rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.5px; margin-left: 6px;
}
.adm-pill-warn { background: var(--cora-warning-soft); color: var(--warning-deep); }

.adm-cat-head--inline { padding: 0; border-bottom: none; margin-bottom: 8px; }
.adm-table--mt { margin-top: 8px; }
.adm-btn-mt   { margin-top: 8px; }

@media (max-width: 900px) {
    .adm-geo-grid { grid-template-columns: 1fr; padding: 12px; }
}

/* CatalogoServicos — mesmo grid 2 colunas (esquerda um pouco maior) */
.adm-cat-grid {
    display: grid; grid-template-columns: 320px 1fr;
    gap: 24px; padding: 18px; align-items: start;
}
.adm-cat-col { min-width: 0; }

/* Chips toggle — matriz Categoria × TipoProfissional */
.adm-chip-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.adm-chip-toggle {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px; border-radius: 99px;
    background: var(--cp-surface); border: 1.5px solid var(--cp-border);
    color: var(--cp-text-soft, var(--cp-muted));
    font-family: inherit; font-size: 0.82rem; font-weight: 600;
    cursor: pointer;
    transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.adm-chip-toggle:hover { border-color: var(--cp-purple); color: var(--cp-purple); }
.adm-chip-toggle.active {
    background: var(--brand-alpha-10);
    border-color: var(--cp-purple);
    color: var(--cp-purple);
}
.adm-chip-toggle i { font-size: 0.75rem; }

@media (max-width: 900px) {
    .adm-cat-grid { grid-template-columns: 1fr; padding: 12px; }
}

/* Pills usadas pelo CatalogoServicos (ok/warn) */
.adm-pill-ok { background: var(--cora-success-soft); color: var(--success-deep); }

@media (max-width: 720px) {
    .adm-prof-foto-row { flex-direction: column; }
    .adm-prof-foto     { width: 120px; height: 120px; }
}

/* Conversa de ticket / chat */
.adm-thread {
    background: var(--white); border: 1.5px solid var(--cp-border); border-radius: 12px;
    padding: 12px; max-height: 380px; overflow-y: auto;
    display: flex; flex-direction: column; gap: 8px;
}
.adm-thread-original {
    font-size: 0.85rem; color: var(--cp-muted); padding-bottom: 6px;
    border-bottom: 1px dashed var(--cp-border); margin-bottom: 4px;
}
.adm-thread-original strong { color: var(--cp-text); font-weight: 700; }

.adm-msg {
    padding: 10px 12px; border-radius: 12px; font-size: 0.9rem;
    display: flex; flex-direction: column; gap: 4px;
}
.adm-msg-meta {
    font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.5px; font-weight: 700;
    color: var(--cp-muted);
}
.adm-msg-body { margin: 0; line-height: 1.45; color: var(--cp-text); }

.adm-msg--admin {
    background: var(--brand-alpha-10); margin-left: 30px;
}
.adm-msg--admin .adm-msg-meta { color: var(--cp-purple); }

.adm-msg--user {
    background: var(--cp-surface); margin-right: 30px;
}

.adm-msg--sistema {
    background: var(--cora-info-soft);
    border: 1px dashed rgba(15,127,232,0.30);
    margin: 0 auto; max-width: 80%;
    align-items: center; text-align: center;
}
.adm-msg--sistema .adm-msg-meta { color: var(--cora-info); }

@media (max-width: 720px) {
    .adm-msg--admin { margin-left: 12px; }
    .adm-msg--user  { margin-right: 12px; }
}

/* ─── PessoaPicker — Onda 5Y ──────────────────────────────────────────── */
.adm-picker { position: relative; }

.adm-picker-dropdown {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 50;
    background: var(--cp-surface); border: 1px solid var(--cp-border);
    border-top: none; border-radius: 0 0 8px 8px;
    max-height: 240px; overflow-y: auto;
    box-shadow: 0 8px 16px rgba(0,0,0,0.10);
}

.adm-picker-item {
    display: flex; justify-content: space-between; align-items: center;
    width: 100%; padding: 10px 14px;
    background: transparent; border: none; border-bottom: 1px solid var(--cp-border-soft, #f0f0f0);
    text-align: left; cursor: pointer; font-size: 14px;
}
.adm-picker-item:hover { background: var(--cp-surface-soft, #fafafa); }
.adm-picker-item:last-child { border-bottom: none; }
.adm-picker-item .adm-row-meta { font-size: 11px; color: var(--cp-muted); }

.adm-picker-empty {
    padding: 12px 14px; color: var(--cp-muted); font-size: 13px; font-style: italic;
}

.adm-picker-chip {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 8px 6px 12px; border-radius: 999px;
    background: var(--cora-primary-soft); border: 1px solid var(--cora-primary);
    font-size: 13px;
}

.adm-picker-x {
    background: var(--cora-primary); color: var(--white);
    border: none; width: 22px; height: 22px; border-radius: 50%;
    font-size: 14px; line-height: 1; cursor: pointer; padding: 0;
}
.adm-picker-x:hover { background: var(--cora-primary-dark); }

/* ════════════════════════════════════════════════════════════════════════
   REFINAMENTO PREMIUM (2026-05) — tipografia da marca + microinterações.
   Camada aditiva: por vir ao final, vence regras anteriores de mesma
   especificidade. NÃO altera layout, estrutura, rotas nem comportamento —
   só acabamento (fonte oficial nos componentes, foco/hover, acessibilidade).
   ════════════════════════════════════════════════════════════════════════ */

/* Tipografia oficial nos componentes (antes herdavam stack de sistema):
   Montserrat (var --cora-font-display) em títulos/botões/destaques;
   DM Sans (var --cora-font-body) em campos, labels e textos. */
.adm-page-title,
.adm-brand-name,
.adm-section-title,
.adm-card-value,
.auth-name,
.auth-title { font-family: var(--cora-font-display); }

/* Seleção de texto com a paleta da marca (em vez do azul/cinza padrão do SO).
   Sem isso, dar duplo/triplo-clique em títulos como "Bem-vindo de volta"
   destoa completamente do visual coral. */
::selection { background: rgba(218, 72, 59, 0.22); color: var(--cora-text); }
::-moz-selection { background: rgba(218, 72, 59, 0.22); color: var(--cora-text); }

/* Títulos de auth não devem virar alvo de seleção acidental por
   triple-click — não há razão pra copiá-los e o highlight ficava feio. */
.auth-title, .auth-sub, .auth-label, .auth-foot { user-select: none; -webkit-user-select: none; }

.cp-btn,
.adm-btn-primary,
.adm-btn-sm,
.adm-chip { font-family: var(--cora-font-display); font-weight: 600; }

.cp-input,
.cp-select,
.adm-input,
textarea,
.cp-label,
.adm-label,
.adm-badge,
.cp-alert { font-family: var(--cora-font-body); }

/* Placeholder neutro — remove o lilás #C4B8D4 herdado do tema roxo antigo. */
.cp-input::placeholder,
.adm-input::placeholder,
.auth-field input::placeholder,
textarea::placeholder { color: var(--cora-muted); opacity: 1; }

/* Botões — hover premium (lift + brilho sutil), além do active já existente. */
.cp-btn--primary, .adm-btn-primary { transition: box-shadow .18s ease, transform .12s ease, filter .18s ease; }
.cp-btn--primary:hover:not(:disabled),
.adm-btn-primary:hover:not(:disabled) { filter: brightness(1.04); transform: translateY(-1px); box-shadow: 0 10px 26px rgba(199,49,59,0.30); }
.cp-btn--ghost:hover:not(:disabled),
.adm-btn-sm--ghost:hover:not(:disabled) { border-color: var(--cora-primary); background: var(--cora-primary-soft); }
.adm-btn-link:hover { text-decoration: underline; }

/* Campos — anel de foco coral consistente (o .adm-input só mudava a borda). */
.adm-input:focus { box-shadow: 0 0 0 3px var(--brand-alpha-12); }
textarea:focus { outline: none; border-color: var(--cora-primary); box-shadow: 0 0 0 3px var(--brand-alpha-12); }

/* Menu lateral — hover mais elegante, sem afetar o item ativo (gradiente). */
.adm-nav-link:not(.active):hover { background: var(--cora-primary-soft); color: var(--cora-primary-dark); }

/* Cartões de dashboard — leve elevação no hover (sombra, sem deslocar). */
.adm-card { transition: box-shadow .2s ease, border-color .2s ease; }
.adm-card:hover { box-shadow: var(--cora-shadow-lg); border-color: var(--cora-border-soft); }

/* Acessibilidade — foco visível por teclado em elementos interativos.
   Fix 2026-09-05: campos de texto SEMPRE casam :focus-visible (até no clique),
   então o anel genérico somava com a borda+sombra próprias do campo = contorno
   duplo "quadrado" (print do dono). Inputs/selects/textareas saem desta regra —
   eles já têm o anel coral próprio (border + box-shadow logo acima). */
a:focus-visible, button:focus-visible,
.adm-nav-link:focus-visible, .adm-chip:focus-visible {
    outline: 2px solid var(--cora-primary); outline-offset: 2px;
}
input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: none;
}

/* Fix 2026-09-05 — FocusOnNavigate (App.razor) foca o h1 a cada navegação
   (a11y: leva o leitor de tela ao título). Sem estilo, o browser desenhava o
   outline default = caixa preta ao redor de "Dashboard". Foco continua
   acontecendo; só some o retângulo. */
h1:focus, h1:focus-visible { outline: none; }

/* ════════════════════════════════════════════════════════════════════════
   Prontuário — modal de acesso auditado (leitura estruturada).
   ════════════════════════════════════════════════════════════════════════ */
.adm-pront-nome { font-family: var(--cora-font-display, ui-sans-serif); font-size: 1.15rem; font-weight: 800; color: var(--cp-text); margin-top: 2px; }
.adm-pront-section { display: flex; flex-direction: column; }
.adm-pront-stack { display: flex; flex-direction: column; gap: 10px; }
.adm-pront-alergia { color: var(--danger-deep); }
.adm-pront-alergia i { margin-right: 4px; }
.adm-pront-med-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.adm-pront-med-nome { font-weight: 700; color: var(--cp-text); font-size: 0.95rem; }
.adm-pront-reg-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.adm-pront-reg-data { font-weight: 700; color: var(--cp-text); font-size: 0.85rem; }
.adm-pront-reg-data i { color: var(--cp-purple); margin-right: 4px; }
.adm-pront-reg-obs { margin: 4px 0 8px; font-size: 0.9rem; color: var(--cp-text); line-height: 1.5; white-space: pre-wrap; }

/* ════════════════════════════════════════════════════════════════════════
   ONDA REFINAMENTO VISUAL (2026-05-29) — alinhamento à marca/logo oficial.
   Camada aditiva final: vence as anteriores por posição. Cobre o shell
   inteiro (sidebar coral premium, header, dashboard, login split-screen) +
   helpers novos (acordeão de configurações, botão "exibir mais").
   ════════════════════════════════════════════════════════════════════════ */

/* ── Sidebar: trilho coral premium (espelha o painel do login) ───────────── */
.adm-side {
    background: linear-gradient(186deg, #EB7148 0%, var(--brand-dark) 100%);
    border-right: none;
    box-shadow: 4px 0 28px rgba(120,25,35,0.20);
}
.adm-brand { align-items: center; gap: 10px; padding: 2px 4px 8px; }
.adm-brand-logo { flex: 1; min-width: 0; height: auto; max-width: 178px; display: block; }
.adm-brand .adm-brand-tag {
    margin-left: 0; align-self: flex-start; margin-top: 2px;
    color: var(--white); background: rgba(255,255,255,0.18);
}
.adm-nav-grupo-titulo { color: rgba(255,255,255,0.92); }
.adm-nav-grupo-titulo:hover { background: rgba(255,255,255,0.12); color: var(--white); }
.adm-nav-grupo-titulo i:first-child { color: rgba(255,255,255,0.80); }
.adm-nav-chevron { color: rgba(255,255,255,0.60); }
.adm-nav-link { color: rgba(255,255,255,0.84); font-weight: 500; }
.adm-nav-link:hover,
.adm-nav-link:not(.active):hover { background: rgba(255,255,255,0.13); color: var(--white); }
.adm-nav-link.active {
    background: var(--white); color: var(--cora-primary-dark);
    box-shadow: 0 8px 20px rgba(120,25,35,0.28); font-weight: 700;
}
.adm-nav-link.active i { color: var(--cora-primary); }
.adm-nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.28); }
.adm-nav::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.45); }

/* ── Header (topbar): cartão branco mais refinado ────────────────────────── */
.adm-header { border-radius: 16px; border-color: var(--cora-border-soft); }
.adm-header-logout { font-family: var(--cora-font-display); }

/* ── Dashboard: cartões + cabeçalho de seção com ação ────────────────────── */
.adm-card { border-radius: 16px; }
.adm-card--ghost { position: relative; overflow: hidden; }
.adm-card--ghost::before {
    content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--cora-gradient);
}
.adm-card--link:hover { box-shadow: var(--cora-shadow-lg); }

.adm-section-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 12px; margin-bottom: 14px;
}
.adm-section-head .adm-section-title { margin-bottom: 0; }

/* Botão "Exibir mais" — pílula coral discreta (link ou button) */
.adm-more-btn {
    display: inline-flex; align-items: center; gap: 7px;
    font-family: var(--cora-font-display); font-size: 0.78rem; font-weight: 700;
    color: var(--cora-primary-dark); background: var(--brand-alpha-08);
    border: 1.5px solid var(--brand-alpha-18); border-radius: 99px;
    padding: 6px 14px; cursor: pointer; text-decoration: none;
    transition: background .15s, border-color .15s, transform .12s;
}
.adm-more-btn:hover { background: var(--brand-alpha-14); border-color: rgba(218,72,59,0.32); }
.adm-more-btn:active { transform: scale(0.97); }
.adm-more-wrap { display: flex; justify-content: center; margin-top: 14px; }

/* ── Configurações: acordeão por categoria ───────────────────────────────── */
.adm-acc { display: flex; flex-direction: column; gap: 12px; }
.adm-acc-item {
    background: var(--white); border: 1.5px solid var(--cora-border);
    border-radius: 16px; box-shadow: var(--cora-shadow); overflow: hidden;
    transition: border-color .15s, box-shadow .15s;
}
.adm-acc-item.open { border-color: rgba(218,72,59,0.30); box-shadow: var(--cora-shadow-lg); }
.adm-acc-head {
    display: flex; align-items: center; gap: 13px; width: 100%;
    padding: 15px 18px; background: var(--white); border: none; cursor: pointer;
    text-align: left; transition: background .15s;
}
.adm-acc-head:hover { background: var(--cora-surface-alt); }
.adm-acc-ico {
    width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
    background: var(--cora-primary-soft); color: var(--cora-primary);
    display: flex; align-items: center; justify-content: center; font-size: 1rem;
}
.adm-acc-titulos { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-acc-titulo { font-family: var(--cora-font-display); font-size: 0.98rem; font-weight: 700; color: var(--cora-text); text-transform: capitalize; }
.adm-acc-sub { font-size: 0.78rem; color: var(--cora-muted); }
.adm-acc-count {
    margin-left: auto; font-size: 0.72rem; font-weight: 700; color: var(--cora-text-soft);
    background: var(--cora-surface); border: 1.5px solid var(--cora-border);
    border-radius: 99px; padding: 3px 11px; flex-shrink: 0;
}
.adm-acc-chevron { color: var(--cora-muted); font-size: 0.85rem; transition: transform .2s; flex-shrink: 0; }
.adm-acc-item.open .adm-acc-chevron { transform: rotate(180deg); }
.adm-acc-body { border-top: 1px solid var(--cora-border); }
.adm-acc-body .adm-table { font-size: 0.875rem; }

/* ── Login split-screen premium ──────────────────────────────────────────── */
.auth-shell:has(.auth-split) { padding: 0; display: block; background: var(--cora-card); }
.auth-split { min-height: 100dvh; display: grid; grid-template-columns: 1.05fr 1fr; }
.auth-aside {
    position: relative; overflow: hidden; color: var(--white);
    padding: clamp(32px, 4.5vw, 56px);
    display: flex; flex-direction: column; gap: 24px;
    background: linear-gradient(155deg, #EB7148 0%, var(--brand-dark) 100%);
}
.auth-aside-logo { width: clamp(180px, 22vw, 240px); height: auto; position: relative; z-index: 1; }
.auth-aside-mid { margin-top: auto; position: relative; z-index: 1; }
.auth-aside-head {
    font-family: var(--cora-font-display); font-weight: 800;
    font-size: clamp(1.7rem, 3vw, 2.4rem); line-height: 1.14; letter-spacing: -0.6px;
}
.auth-aside-text { margin-top: 14px; font-size: 1rem; line-height: 1.6; color: rgba(255,255,255,0.88); max-width: 42ch; }
.auth-aside-foot { position: relative; z-index: 1; font-size: 0.72rem; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,0.72); }
.auth-aside-deco {
    position: absolute; right: -64px; bottom: -64px; width: 340px; height: auto;
    opacity: 0.10; filter: brightness(0) invert(1); pointer-events: none; z-index: 0;
}
.auth-main { display: flex; align-items: center; justify-content: center; padding: clamp(28px, 5vw, 48px); background: var(--cora-card); }
.auth-form-wrap { width: 100%; max-width: 384px; display: flex; flex-direction: column; gap: 6px; }
.auth-form-wrap .auth-btn { background: var(--cora-gradient); }
.auth-form-wrap .auth-btn:hover:not(:disabled) { background: var(--cora-gradient); filter: brightness(1.05); }
@media (max-width: 860px) {
    .auth-split { grid-template-columns: 1fr; }
    .auth-aside { padding: 26px 24px; gap: 16px; }
    .auth-aside-mid { margin-top: 6px; }
    .auth-aside-text { display: none; }
    .auth-aside-foot { display: none; }
    .auth-aside-deco { width: 190px; right: -44px; bottom: -44px; }
}

/* ════════════════════════════════════════════════════════════════════════
   9B-11 — Timeline de auditoria de onboarding financeiro.
   ════════════════════════════════════════════════════════════════════════ */
.adm-timeline {
    list-style: none; padding: 0; margin: 0;
    position: relative;
}
.adm-timeline::before {
    content: ""; position: absolute; left: 8px; top: 6px; bottom: 6px;
    width: 2px; background: var(--cp-border, #e5e7eb);
}
.adm-timeline-item {
    position: relative; padding-left: 28px; margin-bottom: 14px;
}
.adm-timeline-dot {
    position: absolute; left: 1px; top: 6px;
    width: 16px; height: 16px; border-radius: 999px;
    border: 3px solid var(--white); background: #9ca3af;
    box-shadow: 0 0 0 1px var(--cp-border, #e5e7eb);
}
.adm-timeline-dot--ok      { background: #16a34a; }
.adm-timeline-dot--err     { background: #b91c1c; }
.adm-timeline-dot--neutro  { background: #9ca3af; }
.adm-timeline-body { font-size: 0.92rem; line-height: 1.4; }

/* ════════════════════════════════════════════════════════════════════════
   Onda 5 — REMED-O5-B2 (2026-06-17): KPI row + cards-grid para o
   Dashboard /financeiro. Várias páginas (Filas, Estornos, Coralink)
   já usavam `.adm-kpi*` sem definição — caía em fallback do browser.
   ════════════════════════════════════════════════════════════════════════ */

.adm-kpi-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}
.adm-kpi {
    background: var(--white);
    border: 1.5px solid var(--cp-border);
    border-radius: var(--cp-radius);
    box-shadow: var(--cp-shadow);
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: transform 0.12s, box-shadow 0.12s, border-color 0.12s;
}
.adm-kpi--clickable {
    cursor: pointer;
    /* Onda 5 — REMED revisão: KPIs agora são <a href> (a11y); resetar
       text-decoration e cor herdada do link. */
    text-decoration: none;
    color: inherit;
}
.adm-kpi--clickable:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(0,0,0,0.08);
    border-color: var(--cp-purple);
}
.adm-kpi--clickable:focus-visible {
    outline: 2px solid var(--cp-purple);
    outline-offset: 2px;
}
.adm-kpi-label {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--cp-muted);
}
.adm-kpi-value {
    font-family: var(--cora-font-display, ui-sans-serif);
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--cp-text);
    letter-spacing: -0.5px;
    line-height: 1.1;
}
.adm-kpi-value--warn     { color: #b45309; }
.adm-kpi-value--danger   { color: #b91c1c; }
.adm-kpi-value--positivo { color: #15803d; }
.adm-kpi-value--negativo { color: #b91c1c; }

/* Onda 5 — REMED revisão (2026-06-17): backdrop comum aos modais em DESKTOP.
   Antes só existia dentro de @media (max-width:900px) — em desktop o overlay
   escuro nunca renderizava, deixando o modal aparentemente flutuando no nada. */
.adm-side-backdrop { position: fixed; inset: 0; background: rgba(31,38,45,0.45); z-index: 99; }

/* Linha de tabela "apagada" (flag sem gatilho em FilasOperacao). */
.adm-row-muted td { opacity: 0.55; }
.adm-kpi-meta {
    font-size: 0.78rem;
    color: var(--cp-muted);
}

/* Cards-grid: atalhos para sub-páginas no Dashboard */
.adm-cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 14px;
    margin-top: 14px;
}
.adm-card--clickable {
    cursor: pointer;
    transition: transform 0.12s, box-shadow 0.12s, border-color 0.12s;
    /* Onda 5 — REMED revisão: cards são <a href>; resetar link styles. */
    text-decoration: none;
    color: inherit;
}
.adm-card--clickable:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(0,0,0,0.08);
    border-color: var(--cp-purple);
}
.adm-card--clickable:focus-visible {
    outline: 2px solid var(--cp-purple);
    outline-offset: 2px;
}

/*
   Linha de tabela clicável (WCAG 2.1.1 + 2.4.7): cursor pointer + focus visible.
   Combina com tabindex="0" role="button" + @onkeydown Enter/Space no razor.
*/
.adm-tr-clickable {
    cursor: pointer;
}
.adm-tr-clickable:focus-visible {
    outline: 2px solid var(--brand-primary);
    outline-offset: -2px;
}
.adm-card-icon {
    width: 40px; height: 40px;
    border-radius: 10px;
    background: linear-gradient(135deg, rgba(255,158,122,0.15), var(--brand-alpha-15));
    color: var(--cp-purple);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
    margin-bottom: 4px;
}
.adm-card-title {
    font-weight: 700;
    font-size: 1rem;
    color: var(--cp-text);
}
.adm-card-desc {
    font-size: 0.85rem;
    color: var(--cp-muted);
    line-height: 1.45;
}

/* Onda 5 — REMED-O5-B3 (2026-06-17): ícone inline em células de tabela
   (forma de pagamento, tipo de origem etc). */
.adm-table-icon {
    color: var(--cp-purple);
    margin-right: 6px;
    width: 14px;
    text-align: center;
}
.adm-section-title--mt {
    margin-top: 24px;
}

.adm-selecionados-list {
    list-style: none;
    padding: 0;
    margin: 0 0 8px 0;
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid var(--cp-border);
    border-radius: 8px;
}
.adm-selecionados-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-bottom: 1px solid var(--cp-border);
    font-size: 0.88rem;
}
.adm-selecionados-list li:last-child {
    border-bottom: none;
}

/* Sprint 2 (S2.1) — Skeleton loading pra tabelas grandes.
   Sprint 16 — desduplicado. A definição canônica de .adm-skel-bar e do
   keyframe admSkel fica no bloco AdmTable (perto do bottom do CSS).
   Aqui só sobra o wrapper semantic da tabela. */
.adm-skeleton-table { pointer-events: none; }

/* Sprint 2 (S2.4) — Command palette (Cmd+K) */
.adm-cmdk-backdrop {
    position: fixed; inset: 0; z-index: 1400;
    background: rgba(31,38,45,0.55);
    display: flex; justify-content: center;
    padding: 10vh 16px 16px;
    animation: adm-cmdk-fade 120ms ease-out;
}
@keyframes adm-cmdk-fade {
    from { opacity: 0; } to { opacity: 1; }
}
.adm-cmdk-shell {
    width: min(640px, 100%);
    max-height: 70vh;
    background: var(--white);
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.25), 0 4px 12px rgba(0,0,0,0.10);
    display: flex; flex-direction: column;
    overflow: hidden;
}
.adm-cmdk-header {
    display: flex; align-items: center; gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--cp-border);
    color: var(--cp-muted);
}
.adm-cmdk-header i { font-size: 1rem; }
.adm-cmdk-input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 1rem;
    background: transparent;
    color: var(--cp-text);
}
.adm-cmdk-esc {
    font-family: ui-monospace, SFMono-Regular, monospace;
    font-size: 0.72rem;
    color: var(--cp-muted);
    background: var(--cp-surface);
    border: 1px solid var(--cp-border);
    padding: 2px 6px;
    border-radius: 4px;
}
.adm-cmdk-body {
    flex: 1; overflow-y: auto;
    padding: 6px 0;
}
.adm-cmdk-status {
    padding: 20px 18px;
    color: var(--cp-muted);
    text-align: center;
    font-size: 0.9rem;
}
.adm-cmdk-hint {
    display: flex; justify-content: center; gap: 18px;
    padding: 0 18px 12px;
    color: var(--cp-muted);
    font-size: 0.78rem;
}
.adm-cmdk-hint kbd {
    font-family: ui-monospace, SFMono-Regular, monospace;
    background: var(--cp-surface);
    border: 1px solid var(--cp-border);
    padding: 1px 6px;
    border-radius: 4px;
    margin-right: 4px;
    font-size: 0.72rem;
}
.adm-cmdk-list { list-style: none; margin: 0; padding: 4px 0; }
.adm-cmdk-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 18px;
    cursor: pointer;
}
.adm-cmdk-item--sel { background: var(--brand-alpha-08); }
.adm-cmdk-ico {
    width: 26px; height: 26px;
    display: inline-flex; align-items: center; justify-content: center;
    color: var(--cp-purple);
    background: var(--brand-alpha-08);
    border-radius: 6px;
    flex: 0 0 auto;
}
.adm-cmdk-text { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.adm-cmdk-tit { font-weight: 600; color: var(--cp-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-cmdk-sub { font-size: 0.78rem; color: var(--cp-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-cmdk-tag {
    font-size: 0.7rem; font-weight: 700; text-transform: uppercase;
    color: var(--cp-purple);
    background: var(--brand-alpha-10);
    padding: 3px 8px;
    border-radius: 99px;
    letter-spacing: 0.4px;
    flex: 0 0 auto;
}

/* Sprint 2 (S2.6) — Cheatsheet de atalhos */
.adm-cheat h4 {
    margin: 12px 0 6px;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--cp-muted);
    font-weight: 700;
}
.adm-cheat-group { margin-bottom: 8px; }
.adm-cheat-row {
    display: flex; align-items: center; gap: 10px;
    padding: 6px 4px;
    font-size: 0.88rem;
}
.adm-cheat-row kbd {
    font-family: ui-monospace, SFMono-Regular, monospace;
    font-size: 0.75rem;
    background: var(--cp-surface);
    border: 1px solid var(--cp-border);
    padding: 2px 8px;
    border-radius: 4px;
    color: var(--cp-text);
}
.adm-cheat-row span { color: var(--cp-text-soft, var(--cp-muted)); }

/* Sprint 3 (S3.2) — SLA badges e linhas destacadas por urgência */
.adm-sla {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 600;
    padding: 3px 8px;
    border-radius: 6px;
    white-space: nowrap;
}
.adm-sla--ok      { background: rgba(94,153,79,0.10); color: #3f7a34; }
.adm-sla--quase   { background: rgba(230,140,40,0.14); color: #a5601a; }
.adm-sla--vencido { background: rgba(198,50,59,0.14);  color: #A62A32; }

.adm-table tbody tr.adm-row-urgent {
    background: rgba(198,50,59,0.045);
    box-shadow: inset 3px 0 0 var(--brand-dark);
}
.adm-table tbody tr.adm-row-warn {
    background: rgba(230,140,40,0.045);
    box-shadow: inset 3px 0 0 #E68C28;
}
.adm-table tbody tr.adm-row-urgent:hover { background: rgba(198,50,59,0.09); }
.adm-table tbody tr.adm-row-warn:hover   { background: rgba(230,140,40,0.09); }

/* Sprint 3 (S3.5) — Linha recém-editada: destaque 3s ao voltar da tela de detalhe. */
.adm-table tbody tr.adm-row-recent {
    animation: adm-row-flash 3s ease-out 1;
}
@keyframes adm-row-flash {
    0%   { background: rgba(94,153,79,0.30); box-shadow: inset 3px 0 0 #3f7a34; }
    60%  { background: rgba(94,153,79,0.15); }
    100% { background: transparent; box-shadow: none; }
}
@media (prefers-reduced-motion: reduce) {
    .adm-table tbody tr.adm-row-recent {
        animation: none;
        background: rgba(94,153,79,0.10);
        box-shadow: inset 3px 0 0 #3f7a34;
    }
}

/* Sprint 4 (S4.1) — Toast history: sino de mensagens da sessão. */
.adm-toast-hist-wrap { position: relative; display: inline-flex; }
.adm-toast-hist-btn { position: relative; }
.adm-toast-hist-badge {
    position: absolute; top: -2px; right: -2px;
    min-width: 18px; height: 18px; padding: 0 5px;
    border-radius: 9px;
    background: var(--brand-dark); color: var(--white);
    font-size: 0.68rem; font-weight: 700;
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 0 0 0 2px var(--white);
}
.adm-toast-hist-back { position: fixed; inset: 0; z-index: 999; }
.adm-toast-hist-drop {
    position: absolute; top: calc(100% + 8px); right: 0;
    z-index: 1000;
    width: min(420px, calc(100vw - 32px));
    max-height: 60vh; overflow-y: auto;
    background: var(--white);
    border: 1.5px solid var(--cp-border);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0,0,0,0.14);
}
.adm-toast-hist-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--cp-border);
    font-size: 0.9rem;
}
.adm-toast-hist-empty { padding: 24px; text-align: center; color: var(--cp-muted); font-size: 0.88rem; }
.adm-toast-hist-list { list-style: none; margin: 0; padding: 4px 0; }
.adm-toast-hist-item {
    display: flex; gap: 10px; padding: 10px 14px;
    border-bottom: 1px solid var(--cp-border);
    font-size: 0.86rem;
}
.adm-toast-hist-item:last-child { border-bottom: none; }
.adm-toast-hist-ico { width: 22px; text-align: center; flex: 0 0 auto; }
.adm-toast-hist-item--sucesso .adm-toast-hist-ico { color: #3f7a34; }
.adm-toast-hist-item--erro    .adm-toast-hist-ico { color: var(--brand-dark); }
.adm-toast-hist-item--aviso   .adm-toast-hist-ico { color: #a5601a; }
.adm-toast-hist-item--info    .adm-toast-hist-ico { color: var(--cp-purple); }
.adm-toast-hist-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-toast-hist-txt .msg { color: var(--cp-text); word-wrap: break-word; }
.adm-toast-hist-txt .when { color: var(--cp-muted); font-size: 0.72rem; }

/* Sprint 5 (S5.2) — variante WARN pros cards do Health board (amarelo suave). */
.adm-card--warn {
    background: linear-gradient(135deg, rgba(230,140,40,0.10), rgba(217,119,6,0.08));
    position: relative;
    overflow: hidden;
}

/* Sprint 7 (S7.1) — Toggle de tema no header. */
.adm-theme-toggle-wrap { position: relative; display: inline-flex; }
.adm-theme-toggle-btn {
    display: inline-flex; align-items: center; gap: 8px;
    background: var(--brand-alpha-06);
    border: 1.5px solid var(--cp-border);
    border-radius: 10px;
    padding: 7px 12px;
    font-size: 0.82rem; font-weight: 600;
    color: var(--cp-text);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.adm-theme-toggle-btn:hover { background: var(--brand-alpha-12); border-color: var(--brand-primary); }
.adm-theme-toggle-btn i { font-size: 0.95rem; color: var(--brand-primary); }
.adm-theme-toggle-label { font-size: 0.78rem; }
@media (max-width: 720px) {
    .adm-theme-toggle-label { display: none; }
    .adm-theme-toggle-btn { padding: 7px 10px; }
}
.adm-theme-toggle-back { position: fixed; inset: 0; z-index: 999; }
.adm-theme-toggle-menu {
    position: absolute; top: calc(100% + 8px); right: 0;
    z-index: 1000;
    min-width: 160px;
    background: var(--cora-card);
    border: 1.5px solid var(--cora-border);
    border-radius: 10px;
    box-shadow: var(--cora-shadow-lg);
    padding: 4px;
    display: flex; flex-direction: column; gap: 2px;
}
.adm-theme-toggle-item {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 12px;
    font-size: 0.86rem;
    background: transparent;
    border: none;
    color: var(--cora-text);
    text-align: left;
    cursor: pointer;
    border-radius: 6px;
}
.adm-theme-toggle-item:hover { background: var(--cora-surface); }
.adm-theme-toggle-item.active { background: var(--cora-primary-soft); color: var(--cora-primary); font-weight: 600; }

/* Sprint 7 (S7.3) + Sprint 10 — Densidade compacta ("Cabe mais").
   Reduz padding/gaps agressivamente pra caber ~30% mais na tela.
   USA PIXELS ABSOLUTOS PARA FONT-SIZE de elementos de leitura — evita
   herança dupla que deixava texto <12px (ilegível). */

/* Tabelas — foco principal do modo compacto. */
html[data-densidade="compacto"] .adm-table thead th { padding: 5px 8px; font-size: 11px; }
html[data-densidade="compacto"] .adm-table tbody td { padding: 5px 8px; font-size: 13px; line-height: 1.3; }
html[data-densidade="compacto"] .adm-info-row       { padding: 2px 0; font-size: 13px; }
html[data-densidade="compacto"] .adm-card-pad       { padding: 10px; }

/* Cards, headers, spacing global. */
html[data-densidade="compacto"] .adm-card,
html[data-densidade="compacto"] .adm-help-box { padding: 10px 12px; }
html[data-densidade="compacto"] .adm-table-card { padding: 6px; }
html[data-densidade="compacto"] .adm-main { padding: 10px 14px; }
html[data-densidade="compacto"] .adm-page-head { margin-bottom: 8px; gap: 6px; }
html[data-densidade="compacto"] .adm-page-title { font-size: 18px; margin-bottom: 0; }
html[data-densidade="compacto"] .adm-page-sub { font-size: 12px; margin-bottom: 0; }
html[data-densidade="compacto"] .adm-cards { gap: 8px; margin-bottom: 10px; }
html[data-densidade="compacto"] .adm-filters { gap: 4px; margin-bottom: 8px; }

/* Botões / inputs / header — mantêm legibilidade mínima 13px. */
html[data-densidade="compacto"] .adm-btn-sm { min-height: 28px; padding: 0 10px; font-size: 12px; }
html[data-densidade="compacto"] .adm-btn-primary,
html[data-densidade="compacto"] .adm-btn-link { padding: 6px 12px; font-size: 13px; min-height: 32px; }
html[data-densidade="compacto"] .adm-input,
html[data-densidade="compacto"] select,
html[data-densidade="compacto"] textarea { padding: 5px 8px; font-size: 13px; min-height: 30px; }
html[data-densidade="compacto"] .adm-header { padding: 4px 8px; margin-bottom: 8px; }
html[data-densidade="compacto"] .adm-header-toggle { min-width: 32px; min-height: 32px; padding: 4px; font-size: 15px; }
html[data-densidade="compacto"] .adm-header-user { padding: 4px 8px; }
html[data-densidade="compacto"] .adm-header-user .em { font-size: 12px; }

/* KPIs / tabs / seções. */
html[data-densidade="compacto"] .adm-kpi-row { gap: 8px; }
html[data-densidade="compacto"] .adm-kpi { padding: 10px 12px; }
html[data-densidade="compacto"] .adm-kpi-label { font-size: 11px; }
html[data-densidade="compacto"] .adm-kpi-value { font-size: 22px; line-height: 1.1; }
html[data-densidade="compacto"] .adm-tabs-body { padding: 8px 0; }
html[data-densidade="compacto"] .adm-tabs-bar { gap: 2px; }
html[data-densidade="compacto"] .adm-tab { padding: 6px 10px; font-size: 13px; }
html[data-densidade="compacto"] .adm-form-row { gap: 6px; margin-bottom: 6px; }
html[data-densidade="compacto"] .adm-section-title { font-size: 13px; margin-bottom: 6px; }
html[data-densidade="compacto"] .adm-chip { padding: 3px 8px; font-size: 12px; }
html[data-densidade="compacto"] .adm-badge { padding: 2px 6px; font-size: 11px; }

/* Espaçamento vertical entre cards colados. */
html[data-densidade="compacto"] .adm-card + .adm-card,
html[data-densidade="compacto"] .adm-card--mt { margin-top: 8px; }

/* Mobile em compacto — override do bloco mobile pra manter 16px em inputs
   (evitar zoom iOS). Nunca ficar menor que 16px em input em mobile,
   independente da densidade. */
@media (max-width: 720px) {
    html[data-densidade="compacto"] .adm-input,
    html[data-densidade="compacto"] select,
    html[data-densidade="compacto"] textarea,
    html[data-densidade="compacto"] input { font-size: 16px !important; }
}

/* Sprint 8 (S8.2) — Ajuda contextual: botão ? no PageHeader + drawer lateral com Wiki. */
.adm-page-help {
    margin-left: 8px;
    background: transparent;
    border: none;
    color: var(--cora-muted);
    cursor: pointer;
    font-size: 0.9rem;
    padding: 2px 6px;
    border-radius: 6px;
    vertical-align: middle;
}
.adm-page-help:hover { color: var(--cora-primary); background: var(--cora-primary-soft); }

.adm-wiki-drawer-back { position: fixed; inset: 0; z-index: 1300; background: rgba(31,38,45,0.35); }
.adm-wiki-drawer {
    position: fixed; top: 0; right: 0; bottom: 0;
    width: min(480px, 92vw);
    z-index: 1301;
    background: var(--cora-card);
    border-left: 1.5px solid var(--cora-border);
    box-shadow: -12px 0 32px rgba(0,0,0,0.14);
    display: flex; flex-direction: column;
    animation: adm-wiki-drawer-in 200ms ease-out;
}
@keyframes adm-wiki-drawer-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
@media (prefers-reduced-motion: reduce) { .adm-wiki-drawer { animation: none; } }
.adm-wiki-drawer-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 18px;
    border-bottom: 1px solid var(--cora-border);
}
.adm-wiki-drawer-body { flex: 1; overflow-y: auto; padding: 16px 20px; }
.adm-wiki-drawer-body .wiki-content h1,
.adm-wiki-drawer-body .wiki-content h2,
.adm-wiki-drawer-body .wiki-content h3 { color: var(--cora-text); margin-top: 12px; }
.adm-wiki-drawer-body .wiki-content p  { color: var(--cora-text-soft); line-height: 1.55; }

/* Sprint 10 — header mobile: mantém tema/densidade/sino/logout visíveis (o
   antigo escondia ThemeToggle inteiro, deixando o sócio preso no dark).
   ToastHistoryBell some em <720px porque o drawer é grande e o histórico
   está no /notificacoes/historico. Texto "Sair" preservado. */
@media (max-width: 720px) {
    .adm-header .adm-toast-hist-wrap { display: none; }
    .adm-header-user .role { display: none; }
    .adm-header-user .em {
        max-width: 90px;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }
    .adm-header-logout { padding: 6px 10px; font-size: 0.75rem; }
}
@media (max-width: 480px) {
    .adm-header-user .em { display: none; }
    .adm-header-user { padding: 6px 8px; }
    .adm-header { gap: 6px; padding: 0 10px; }
    .adm-header-logout { padding: 6px 8px; }
    .adm-header-logout .logout-text { display: none; }
}

/* ── Sprint 2 (S2.4) — Vistas salvas ─────────────────────────────────────── */
.adm-saved-views { position: relative; display: inline-block; }
.adm-saved-views-back {
  position: fixed; inset: 0; z-index: 40; background: transparent;
}
.adm-saved-views-menu {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 41;
  min-width: 320px; max-width: 360px;
  background: var(--cp-surface); border: 1px solid var(--cp-border);
  border-radius: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.10);
  padding: 12px; display: flex; flex-direction: column; gap: 10px;
}
.adm-saved-views-head { display: flex; justify-content: space-between; align-items: center; }
.adm-saved-views-list {
  list-style: none; margin: 0; padding: 0; max-height: 280px; overflow-y: auto;
  display: flex; flex-direction: column; gap: 4px;
}
.adm-saved-views-item {
  display: flex; align-items: center; gap: 6px; padding: 4px 6px;
  border-radius: 6px;
}
.adm-saved-views-item:hover { background: rgba(218,72,59,.06); }
.adm-saved-views-link {
  flex: 1; text-align: left; background: transparent; border: 0; cursor: pointer;
  padding: 4px 6px; border-radius: 4px; color: inherit; font-size: .95em;
}
.adm-saved-views-link:hover { color: var(--cp-primary); }
.adm-saved-views-foot {
  display: flex; gap: 6px; align-items: stretch; flex-wrap: wrap;
  border-top: 1px solid var(--cp-border-soft); padding-top: 10px;
}
.adm-saved-views-foot .adm-input { flex: 1; min-width: 180px; }
.adm-icon-btn--danger:hover { color: var(--brand-dark); }

/* Sprint 15 (S15.6) — badge de vista de time + checkbox pra Master compartilhar. */
.adm-saved-views-badge {
    display: inline-block; margin-left: 6px;
    background: var(--brand-alpha-14); color: var(--brand-primary);
    padding: 1px 8px; border-radius: 999px;
    font-size: 0.68rem; font-weight: 700; letter-spacing: 0.04em;
    text-transform: uppercase;
}
.adm-saved-views-time {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 10px; background: var(--brand-alpha-06);
    border-radius: 6px; font-size: 0.82rem; color: var(--brand-primary);
    cursor: pointer; user-select: none;
    flex-basis: 100%;
}
.adm-saved-views-time input[type=checkbox] { margin: 0; }
.adm-saved-views-time i { font-size: 0.9em; }

/* ── Sprint 3 (S3.1) — <AdmTable> v2 ─────────────────────────────────── */
.adm-table-card--sticky { padding: 0; overflow: hidden; }
.adm-table-scroll {
  max-height: calc(100vh - 260px);
  overflow: auto;
}
.adm-table--v2 { width: 100%; border-collapse: collapse; }
.adm-table--v2 thead th {
  position: sticky; top: 0; z-index: 2;
  background: var(--cora-surface-alt);
  border-bottom: 1px solid var(--cora-border);
  padding: 10px 12px; text-align: left; font-weight: 600;
  font-size: .85em; color: var(--cora-text-soft);
  letter-spacing: .02em;
}
.adm-table--v2 tbody td {
  padding: 10px 12px; border-bottom: 1px solid var(--cora-border-soft);
  vertical-align: middle;
}
.adm-table--v2 tbody tr:hover { background: var(--brand-alpha-04); }
.adm-tr-active { background: var(--brand-alpha-08); }
.adm-tr-active:hover { background: var(--brand-alpha-10) !important; }
.adm-th--check, .adm-td--check { width: 32px; text-align: center; }
.adm-th--num, .adm-td--num { text-align: right; font-variant-numeric: tabular-nums; }
.adm-td-empty { text-align: center; padding: 40px 12px; }
.adm-tr-skel td { padding: 12px; }
/* Sprint 16 — .adm-skel-bar é a ÚNICA barra de skeleton do admin. Base + 6
   modifiers (head/title/sub/h3/label/val). Usa tokens de cor pra funcionar
   em dark mode. Fonte única, keyframe admSkel único. */
.adm-skel-bar { display: block; height: 12px; border-radius: 6px;
                background: linear-gradient(90deg,
                  var(--cora-border-soft) 0%,
                  var(--cora-border) 50%,
                  var(--cora-border-soft) 100%);
                background-size: 200% 100%;
                animation: admSkel 1.4s ease-in-out infinite; }
.adm-skel-bar--head  { display: inline-block; width: 70%; height: 10px; opacity: 0.75; vertical-align: middle; }
.adm-skel-bar--title { width: 40%; height: 22px; margin-bottom: 6px; }
.adm-skel-bar--sub   { width: 60%; height: 14px; }
.adm-skel-bar--h3    { width: 30%; height: 18px; margin-bottom: 10px; }
.adm-skel-bar--label { width: 25%; height: 14px; flex-shrink: 0; }
.adm-skel-bar--val   { height: 14px; margin-left: auto; }
.adm-skel-pill { display: inline-block; width: 16px; height: 16px; border-radius: 4px;
                 background: var(--cora-border-soft); }
@media (prefers-reduced-motion: reduce) {
    .adm-skel-bar { animation: none; }
}
@keyframes admSkel {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
html[data-densidade="compacto"] .adm-table--v2 thead th,
html[data-densidade="compacto"] .adm-table--v2 tbody td { padding: 6px 10px; }

/* ── Sprint 3 (S3.4) — extraído de ClienteDetalhe.razor ──────────────── */
.adm-pac-list { display: flex; flex-direction: column; gap: 12px; }
.adm-pac-card { border: 1.5px solid var(--cora-border-soft); border-radius: 12px; padding: 14px; background: var(--cora-surface-alt); }
.adm-pac-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.adm-pac-avatar { flex-shrink: 0; width: 42px; height: 42px; border-radius: 50%; background: var(--cora-primary-soft); color: var(--cora-primary-dark); font-weight: 800; font-size: 0.95rem; display: flex; align-items: center; justify-content: center; }
.adm-pac-id { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.adm-pac-id strong { font-size: 0.98rem; color: var(--cora-text); }
.adm-pac-social { font-size: 0.76rem; color: var(--cora-text-soft); }
.adm-pac-rel { font-size: 0.74rem; font-weight: 700; color: var(--cora-primary); text-transform: uppercase; letter-spacing: 0.4px; }
.adm-pac-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; }
.adm-pac-grid > div { display: flex; flex-direction: column; gap: 1px; }
.adm-pac-grid .lk { font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px; color: var(--cora-muted); }
.adm-pac-grid .lv { font-size: 0.88rem; color: var(--cora-text); }
@media (max-width: 560px) { .adm-pac-grid { grid-template-columns: 1fr; } }

/* ── Sprint 3 (S3.4) — extraído de Contatos.razor ────────────────────── */
.adm-badge-dot {
  display: inline-block;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--cora-primary);
  margin-left: 4px;
  vertical-align: middle;
  box-shadow: 0 0 0 3px var(--brand-alpha-18);
}

/* ── Sprint 4 (S4.2) — <BulkActionBar> ────────────────────────────────── */
.adm-bulk-bar {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 10px 12px 10px 18px;
  background: var(--cora-text);
  color: var(--white);
  border-radius: 999px;
  box-shadow: var(--cora-shadow-lg);
  max-width: calc(100vw - 32px);
  animation: admBulkPop .18s ease-out;
}
@keyframes admBulkPop {
  from { transform: translate(-50%, 12px); opacity: 0; }
  to   { transform: translate(-50%, 0);    opacity: 1; }
}
.adm-bulk-bar-count {
  display: flex; flex-direction: column; align-items: flex-start;
  border-right: 1px solid rgba(255,255,255,0.15); padding-right: 14px;
  line-height: 1.15;
}
.adm-bulk-bar-num {
  font-size: 1.1rem; font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.adm-bulk-bar-label {
  font-size: .75rem; opacity: .78;
}
.adm-bulk-bar-actions {
  display: flex; align-items: center; gap: 8px;
}
.adm-bulk-bar-actions .adm-btn-primary,
.adm-bulk-bar-actions .adm-btn-danger,
.adm-bulk-bar-actions .adm-btn-secondary {
  border-radius: 999px;
  padding: 6px 14px;
  font-size: .88rem;
}
.adm-bulk-bar-close {
  color: var(--white);
  opacity: .8;
  padding: 4px 8px;
  border-radius: 50%;
}
.adm-bulk-bar-close:hover { opacity: 1; background: rgba(255,255,255,0.12); }
@media (max-width: 640px) {
  .adm-bulk-bar { flex-direction: column; align-items: stretch; border-radius: 14px; padding: 12px; }
  .adm-bulk-bar-count { border-right: 0; border-bottom: 1px solid rgba(255,255,255,0.15); padding: 0 0 8px; }
}

/* ── Sprint 5 (S5.2) — PresenceHeader ────────────────────────────────── */
.adm-presence { position: relative; display: inline-block; }
.adm-presence-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px; border-radius: 999px;
  color: var(--cora-text);
}
.adm-presence-btn:hover { background: var(--brand-alpha-08); }
.adm-presence-count {
  background: var(--cora-primary);
  color: var(--white);
  font-weight: 700;
  font-size: .75rem;
  padding: 1px 8px;
  border-radius: 999px;
  min-width: 20px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.adm-presence-menu {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 41;
  min-width: 260px; max-width: 320px;
  background: var(--cora-card);
  border: 1px solid var(--cora-border);
  border-radius: 10px;
  box-shadow: var(--cora-shadow-lg);
  padding: 12px;
}
.adm-presence-menu-head {
  font-size: .78rem;
  color: var(--cora-muted);
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--cora-border-soft);
}
.adm-presence-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.adm-presence-item { display: flex; align-items: flex-start; gap: 8px; padding: 4px 0; }
.adm-presence-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #10b981; margin-top: 6px;
  box-shadow: 0 0 0 3px rgba(16,185,129,.15);
  flex-shrink: 0;
}
.adm-presence-body { flex: 1; min-width: 0; }
.adm-presence-email {
  font-size: .88rem; color: var(--cora-text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.adm-presence-page { font-size: .72rem; color: var(--cora-muted); }
.adm-presence-page code {
  font-family: ui-monospace, monospace;
  font-size: .75rem;
  background: var(--brand-alpha-06);
  padding: 1px 5px; border-radius: 4px;
}

/* ── Sprint 5 (S5.3) — FichaAwarenessBanner ──────────────────────────── */
.adm-ficha-awareness {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 12px 16px; margin-bottom: 16px;
  background: var(--warning-soft-alt);
  border: 1px solid var(--cora-warning);
  border-left: 4px solid var(--cora-warning);
  border-radius: 8px;
  color: var(--warning-deep);
  font-size: .92rem;
}
.adm-ficha-awareness i { margin-top: 2px; }

/* ── Sprint 5 (S5.5) — NotasDrawer ────────────────────────────────────── */
.adm-notas-drawer { position: relative; display: inline-block; margin-bottom: 12px; }
.adm-notas-toggle { position: relative; }
.adm-notas-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px; padding: 0 6px; margin-left: 6px;
  background: var(--brand-primary); color: var(--white);
  border-radius: 999px; font-size: .72rem; font-weight: 700;
}
.adm-notas-back {
  position: fixed; inset: 0; background: rgba(0,0,0,.28); z-index: 998;
}
.adm-notas-panel {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(420px, 92vw);
  background: var(--white); color: var(--cp-text);
  box-shadow: -8px 0 24px rgba(0,0,0,.18); z-index: 999;
  display: flex; flex-direction: column;
  animation: adm-notas-slide-in .18s ease-out;
}
@keyframes adm-notas-slide-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
.adm-notas-head {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 16px; border-bottom: 1px solid var(--cp-border);
}
.adm-notas-head strong { display: block; font-size: 1rem; }
.adm-notas-head p { margin: 4px 0 0 0; }
.adm-notas-nova { padding: 12px 16px; border-bottom: 1px solid var(--cp-border); }
.adm-notas-nova .adm-textarea {
  width: 100%; padding: 10px 12px; border-radius: 10px;
  border: 1.5px solid var(--cp-border); background: var(--white);
  font-family: inherit; font-size: .9rem; color: var(--cp-text);
  resize: vertical; min-height: 72px;
}
.adm-notas-nova .adm-textarea:focus { outline: none; border-color: var(--cp-purple); }
.adm-notas-nova-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; margin-top: 8px;
}
.adm-notas-lista {
  flex: 1 1 auto; overflow-y: auto; padding: 12px 16px;
  display: flex; flex-direction: column; gap: 10px;
}
.adm-notas-item {
  padding: 10px 12px; border-radius: 10px;
  border: 1px solid var(--cp-border); background: var(--cp-surface);
}
.adm-notas-texto { margin: 0 0 8px 0; white-space: pre-wrap; word-break: break-word; font-size: .92rem; }
.adm-notas-item-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.adm-notas-item-acoes { display: inline-flex; gap: 6px; }
.adm-notas-item .adm-textarea {
  width: 100%; padding: 8px 10px; border-radius: 8px;
  border: 1.5px solid var(--cp-border); background: var(--white);
  font-family: inherit; font-size: .9rem; color: var(--cp-text);
  resize: vertical; min-height: 64px;
}
.adm-notas-item .adm-textarea:focus { outline: none; border-color: var(--cp-purple); }

/* ── Sprint 5 (S5.6) — @menção autocomplete ─────────────────────────── */
.adm-mention-wrap { position: relative; }
.adm-mention-input { width: 100%; font-family: inherit; }
.adm-mention-popover {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px);
  z-index: 40; margin: 0; padding: 4px 0; list-style: none;
  background: var(--white); border: 1px solid var(--cp-border);
  border-radius: 10px; box-shadow: 0 8px 24px rgba(0,0,0,.15);
  max-height: 220px; overflow-y: auto;
}
.adm-mention-item {
  padding: 8px 12px; cursor: pointer;
  display: flex; align-items: baseline; gap: 8px;
}
.adm-mention-item:hover, .adm-mention-item.is-active { background: var(--brand-alpha-07); }
.adm-mention-nome { font-weight: 600; color: var(--cp-text); }
.adm-mention-email { font-size: .8rem; color: var(--cp-muted); }

/* ── Sprint 6 (S6.2) — Métricas ───────────────────────────────────────── */
.adm-metrica-card {
  display: flex; flex-direction: column; gap: 8px;
  padding: 16px 18px;
}
.adm-metrica-head { display: flex; align-items: center; gap: 8px; color: var(--cp-muted); font-size: .82rem; }
.adm-metrica-ico { color: var(--cp-purple); }
.adm-metrica-titulo { text-transform: uppercase; letter-spacing: .05em; font-weight: 600; }
.adm-metrica-valor { font-size: 2rem; font-weight: 700; color: var(--cp-text); font-variant-numeric: tabular-nums; }
.adm-metrica-media {
  display: flex; align-items: center; gap: 10px;
  font-size: .82rem; color: var(--cp-muted);
}
.adm-metrica-media strong { color: var(--cp-text); font-variant-numeric: tabular-nums; }
.adm-metrica-up   { color: var(--cora-success); font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.adm-metrica-down { color: var(--cora-danger);  font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }
.adm-metrica-eq   { color: var(--cp-muted);     font-weight: 600; display: inline-flex; align-items: center; gap: 4px; }

.adm-metricas-lista { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.adm-metricas-item {
  display: grid; grid-template-columns: 220px 1fr 56px;
  gap: 12px; align-items: center; font-size: .9rem;
}
.adm-metricas-nome { color: var(--cp-text); font-weight: 500; }
.adm-metricas-barra { position: relative; height: 8px; background: var(--cp-surface); border-radius: 999px; overflow: hidden; }
.adm-metricas-barra-fill { position: absolute; inset: 0 auto 0 0; width: var(--pct); background: var(--cp-grad); border-radius: 999px; }
.adm-metricas-valor { text-align: right; font-variant-numeric: tabular-nums; color: var(--cp-muted); }

.adm-backlog-chart { width: 100%; height: auto; max-height: 240px; }
.adm-backlog-grid  { stroke: var(--cp-border); stroke-dasharray: 3 3; stroke-width: 1; }
.adm-backlog-area  { fill: var(--brand-alpha-12); }
.adm-backlog-linha { fill: none; stroke: var(--brand-primary); stroke-width: 2; }
.adm-backlog-ponto { fill: var(--brand-primary); }
.adm-backlog-eixo  { fill: var(--cp-muted); font-size: 11px; font-family: inherit; }
.adm-backlog-eixo--x { text-anchor: middle; }

.adm-meu-dia { margin-bottom: 22px; border-left: 4px solid var(--brand-primary); }
.adm-meu-dia .adm-section-title { display: flex; align-items: center; gap: 8px; }
.adm-section-subtitle {
  font-size: .95rem; font-weight: 700; color: var(--cp-text);
  margin: 14px 0 8px;
}
.adm-lista-simples { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.adm-lista-simples li {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
  padding: 8px 10px; border-radius: 8px; background: var(--cp-surface);
}
.adm-lista-simples a { color: var(--cp-text); text-decoration: none; }
.adm-lista-simples a:hover { color: var(--cp-purple); }

/* ── Sprint 6 (S6.5) — Badges na sidebar ─────────────────────────────── */
.adm-nav-link { display: flex; align-items: center; gap: 8px; }
.adm-nav-link > span { flex: 1 1 auto; }
.adm-nav-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; height: 22px; padding: 0 7px;
  border-radius: 999px; background: var(--brand-primary); color: var(--white);
  font-size: .72rem; font-weight: 700; line-height: 1;
  font-variant-numeric: tabular-nums;
}

/* ── Sprint 7 (S7.1) — AssignmentBar ─────────────────────────────────── */
.adm-assign-bar {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px; margin-bottom: 12px;
  border-radius: 10px; border: 1px solid var(--cp-border);
  background: var(--cp-surface);
  flex-wrap: wrap;
}
.adm-assign-livre { color: var(--cp-muted); }
.adm-assign-eu    { color: var(--cora-success); font-weight: 600; }
.adm-assign-outro { color: var(--cp-text); }
.adm-assign-bar > span { display: inline-flex; align-items: center; gap: 8px; }
.adm-assign-bar > button { margin-left: auto; }
@media (max-width: 640px) {
  .adm-assign-bar > button { margin-left: 0; width: 100%; }
}

/* ── Sprint 7 (S7.3) — AprovacoesPendentes ────────────────────────────── */
.adm-aprov-card { display: flex; flex-direction: column; gap: 8px; }
.adm-aprov-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.adm-tag { font-size: .75rem; padding: 3px 10px; border-radius: 999px; font-weight: 700; letter-spacing: .04em; }
.adm-tag--brand { background: var(--brand-alpha-12); color: var(--brand-primary); text-transform: uppercase; }
.adm-aprov-valor { font-size: 1.2rem; font-weight: 700; color: var(--cp-text); font-variant-numeric: tabular-nums; }
.adm-aprov-desc { margin: 0; color: var(--cp-text); font-size: .95rem; }
.adm-aprov-acoes { display: flex; align-items: center; gap: 12px; margin-top: 6px; flex-wrap: wrap; }
.adm-btn-link--danger { color: var(--cora-danger); }
.adm-btn-link--danger:hover { background: var(--cora-danger-soft); border-color: var(--cora-danger); }

/* ── Sprint 7 (S7.4) — JsonDiffViewer ───────────────────────────────── */
.adm-diff-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.adm-diff-col header {
  font-size: .75rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .08em; color: var(--cp-muted); padding-bottom: 6px;
  border-bottom: 1px solid var(--cp-border); margin-bottom: 8px;
}
.adm-diff-col dl { margin: 0; }
.adm-diff-linha {
  display: grid; grid-template-columns: 180px 1fr;
  gap: 8px; padding: 6px 8px; border-radius: 6px;
  font-size: .88rem; margin-bottom: 4px;
  border: 1px solid transparent;
}
.adm-diff-linha dt { margin: 0; font-family: var(--mono, ui-monospace, Menlo, monospace); color: var(--cp-muted); font-size: .8rem; }
.adm-diff-linha dd { margin: 0; word-break: break-word; color: var(--cp-text); }
.adm-diff-linha--rem { background: var(--cora-danger-soft); border-color: var(--cora-danger); }
.adm-diff-linha--add { background: var(--success-soft-alt, var(--cora-success-soft, #E1F1EE)); border-color: var(--cora-success); }
.adm-diff-linha--chg { background: var(--warning-soft-alt, #FBF0E0); border-color: var(--cora-warning); }
.adm-diff-legenda { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.adm-diff-badge { font-size: .72rem; padding: 3px 10px; border-radius: 999px; font-weight: 700; }
.adm-diff-badge--rem { background: var(--cora-danger-soft); color: var(--cora-danger); }
.adm-diff-badge--add { background: var(--cora-success-soft, #E1F1EE); color: var(--cora-success); }
.adm-diff-badge--chg { background: var(--warning-soft-alt, #FBF0E0); color: var(--cora-warning); }
@media (max-width: 720px) {
  .adm-diff-cols { grid-template-columns: 1fr; }
}

/* ── Sprint 8 (S8.1) — Timeline unificada ────────────────────────────── */
.adm-timeline-uni { list-style: none; padding: 0; margin: 0; }
.adm-timeline-uni-item {
  display: grid; grid-template-columns: 40px 1fr; gap: 12px;
  padding: 12px 0; border-bottom: 1px solid var(--cp-border);
}
.adm-timeline-uni-dot {
  width: 32px; height: 32px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--white);
}
.adm-timeline-uni-dot.info    { background: var(--cp-purple); }
.adm-timeline-uni-dot.ok      { background: var(--cora-success); }
.adm-timeline-uni-dot.warn    { background: var(--cora-warning); }
.adm-timeline-uni-dot.neutral { background: var(--cp-muted); }
.adm-timeline-uni-body header {
  display: flex; align-items: center; gap: 10px; font-size: .78rem; color: var(--cp-muted);
}
.adm-timeline-uni-body time { font-variant-numeric: tabular-nums; }
.adm-timeline-uni-titulo { margin: 4px 0 2px; font-weight: 600; color: var(--cp-text); }
.adm-timeline-uni-titulo a { color: var(--cp-text); text-decoration: none; }
.adm-timeline-uni-titulo a:hover { color: var(--cp-purple); }
.adm-tag--info    { background: var(--brand-alpha-12); color: var(--cp-purple); text-transform: uppercase; }
.adm-tag--ok      { background: var(--cora-success-soft, #E1F1EE); color: var(--cora-success); text-transform: uppercase; }
.adm-tag--warn    { background: var(--warning-soft-alt, #FBF0E0); color: var(--cora-warning); text-transform: uppercase; }
.adm-tag--neutral { background: var(--cp-surface); color: var(--cp-muted); text-transform: uppercase; }

/* ── Sprint 8 (S8.2) — Comparativo profissionais ─────────────────────── */
.adm-cmp-scroll { overflow-x: auto; }
.adm-cmp { width: 100%; border-collapse: collapse; font-size: .92rem; }
.adm-cmp th, .adm-cmp td {
  padding: 10px 14px; border-bottom: 1px solid var(--cp-border); text-align: left; vertical-align: top;
}
.adm-cmp thead th { background: var(--cp-surface); font-weight: 600; }
.adm-cmp tbody th { color: var(--cp-muted); font-weight: 500; width: 180px; }
.adm-cmp-diff td, .adm-cmp-diff th { background: var(--warning-soft-alt, #FBF0E0); }
.adm-cmp-diff td { color: var(--cp-text); font-weight: 600; }

/* ── Sprint 8 (S8.3) — Severidade no HistoricoComunicacoes ───────────── */
.adm-sev-dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  margin-right: 6px; vertical-align: middle;
}
.adm-sev-dot--crit { background: var(--cora-danger); }
.adm-sev-dot--warn { background: var(--cora-warning); }

/* Sprint 9 (S9.2) DensidadeToggle menu — removido na Sprint 10 quando
   toggle virou botão único global. Regras órfãs (.adm-densidade-wrap /
   .adm-densidade-menu / .adm-header-toggle--rota) purgadas. */

/* ── Sprint 9 (S9.6) — Print-friendly ────────────────────────────────── */
@media print {
  body { background: #fff !important; color: #000 !important; }
  .adm-side, .adm-side-backdrop, .adm-header, .adm-toasts, .adm-toast, .adm-nav,
  .adm-presence, .adm-notas-drawer, .adm-mention-popover,
  .adm-bulk-bar, .adm-bulk-actionbar, .adm-toast-hist-wrap,
  button, .adm-btn-primary, .adm-btn-link, .adm-btn-sm, .adm-icon-btn,
  .adm-page-header .adm-actions, .adm-filters,
  .adm-help-box, .adm-ficha-awareness, .adm-assign-bar,
  .adm-atalhos-widget
  { display: none !important; }
  main, .adm-main, .adm-content { margin: 0 !important; padding: 0 !important; max-width: none !important; }
  .adm-shell { display: block !important; }
  .adm-page-header { border-bottom: 2px solid #000; padding-bottom: 8px; margin-bottom: 16px; }
  .adm-page-header h1 { font-size: 20pt; color: #000 !important; }
  .adm-table, .adm-table-card { box-shadow: none !important; border-color: #999 !important; }
  .adm-table th, .adm-table td { color: #000 !important; border-color: #ccc !important; }
  a { color: #000 !important; text-decoration: underline; }
  .adm-info-row { break-inside: avoid; }
  .adm-timeline-uni-item, .adm-diff-linha { break-inside: avoid; }
}
.adm-print-only { display: none; }
@media print { .adm-print-only { display: block !important; } }

/* ── Sprint 9 (S9.9) — Cascata de toasts ─────────────────────────────── */
.adm-toast-cascata {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 26px; height: 22px; padding: 0 8px;
  background: rgba(0,0,0,.15); border-radius: 999px;
  font-weight: 700; font-variant-numeric: tabular-nums;
  margin-left: 6px;
}

/* ── Sprint 9 (S9.12) — Modo TV do Dashboard ─────────────────────────── */
body.adm-tv .adm-sidebar,
body.adm-tv .adm-header { display: none !important; }
body.adm-tv .adm-main { margin: 0 !important; padding: 24px 32px !important; max-width: none !important; }
body.adm-tv .adm-page-header h1 { font-size: 2.5rem; }
body.adm-tv .adm-section-title { font-size: 1.4rem; }
body.adm-tv .adm-card { padding: 24px 28px; }
body.adm-tv .adm-card .adm-metrica-valor,
body.adm-tv .adm-card strong { font-size: 3rem; }
body.adm-tv .adm-cards { gap: 24px; }
body.adm-tv .adm-help-box { display: none !important; }

/* ── Sprint 9 (S9.13) — Toast history filtros ────────────────────────── */
.adm-toast-hist-filtros {
  display: flex; gap: 6px; flex-wrap: wrap;
  padding: 8px 12px; border-bottom: 1px solid var(--cp-border);
}
.adm-toast-hist-filtros .adm-chip { font-size: .78rem; padding: 4px 10px; }

/* ── Sprint 9 (S9.11) — HelpBox badge "Atualizado" ───────────────────── */
.adm-help-badge-novo {
  display: inline-flex; align-items: center;
  padding: 2px 8px; margin-left: 8px;
  background: var(--brand-primary); color: var(--white);
  font-size: .68rem; font-weight: 700; letter-spacing: .05em;
  border-radius: 999px; text-transform: uppercase;
}

/* ── Sprint 9 (S9.5) — ConteudoBuscavel ──────────────────────────────── */
.adm-cbusca { border: 1px solid var(--cp-border); border-radius: 10px; overflow: hidden; }
.adm-cbusca-bar {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 12px; background: var(--cp-surface);
  border-bottom: 1px solid var(--cp-border);
}
.adm-cbusca-input { flex: 1 1 auto; }
.adm-cbusca-conteudo { padding: 12px 14px; max-height: 60vh; overflow: auto; }
.adm-cbusca-pre {
  margin: 0; font-family: var(--mono, ui-monospace, Menlo, monospace);
  font-size: .82rem; line-height: 1.4; white-space: pre-wrap; word-break: break-word;
  color: var(--cp-text);
}
.adm-cbusca-hit {
  background: var(--warning-soft-alt, #FBF0E0);
  color: var(--cp-text);
  padding: 0 2px; border-radius: 3px; font-weight: 700;
}

/* ── Sprint 9 (S9.10) — EmptyState variantes ─────────────────────────── */
.adm-state--filtro     .adm-state-icon { background: var(--brand-alpha-07); color: var(--brand-primary); }
.adm-state--ok         .adm-state-icon { background: var(--cora-success-soft, #E1F1EE); color: var(--cora-success); }
.adm-state--aguardando .adm-state-icon { background: var(--warning-soft-alt, #FBF0E0); color: var(--cora-warning); }
.adm-state--busca      .adm-state-icon { background: var(--brand-alpha-07); color: var(--brand-primary); }
.adm-state--caixa      .adm-state-icon { background: var(--cp-surface); color: var(--cp-muted); }
.adm-state--sino       .adm-state-icon { background: var(--brand-alpha-07); color: var(--brand-primary); }
.adm-state--financeiro .adm-state-icon { background: var(--cora-success-soft, #E1F1EE); color: var(--cora-success); }
.adm-state--suporte    .adm-state-icon { background: var(--warning-soft-alt, #FBF0E0); color: var(--cora-warning); }

/* ── Sprint 9 (S9.7) — PessoaPicker foto + status ────────────────────── */
.adm-picker-foto {
  width: 28px; height: 28px; border-radius: 50%;
  object-fit: cover; background: var(--cp-surface);
  flex: 0 0 auto;
}
.adm-picker-chip .adm-picker-foto { margin-right: 8px; }
.adm-picker-item { display: flex; align-items: center; gap: 8px; }
.adm-picker-item-corpo { display: flex; flex-direction: column; align-items: flex-start; flex: 1 1 auto; }
.adm-picker-status {
  padding: 2px 8px; border-radius: 999px;
  font-size: .68rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; margin-left: auto;
}
.adm-picker-status--ok     { background: var(--cora-success-soft, #E1F1EE); color: var(--cora-success); }
.adm-picker-status--warn   { background: var(--warning-soft-alt, #FBF0E0); color: var(--cora-warning); }
.adm-picker-status--danger { background: var(--cora-danger-soft, #FBE9E9); color: var(--cora-danger); }
.adm-picker-status--neutro { background: var(--cp-surface); color: var(--cp-muted); }

/* ── Sprint 9 (S9.16) — Widget atalhos rápidos ───────────────────────── */
.adm-atalhos-widget { margin: 12px 0 18px; padding: 12px 14px; border: 1px solid var(--cp-border); border-radius: 10px; }
.adm-atalhos-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.adm-atalhos-lista { display: flex; flex-wrap: wrap; gap: 8px; }
.adm-atalhos-item {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px; border-radius: 999px; border: 1px solid var(--cp-border);
  background: var(--white); color: var(--cp-text); text-decoration: none; font-weight: 600;
  transition: background .12s, border-color .12s;
}
.adm-atalhos-item:hover { background: var(--brand-alpha-07); border-color: var(--brand-primary); color: var(--brand-primary); }
.adm-atalhos-item > i { color: var(--cp-purple); }
.adm-atalhos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px; }
.adm-atalhos-op {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 10px; border-radius: 8px; border: 1px solid var(--cp-border);
  cursor: pointer;
}
.adm-atalhos-op input { cursor: pointer; }
.adm-atalhos-op--on { background: var(--brand-alpha-07); border-color: var(--brand-primary); }
.adm-atalhos-op:has(input:disabled) { opacity: .5; cursor: not-allowed; }
body.adm-tv .adm-atalhos-widget { display: none !important; }

/* ── Sprint 9 (S9.4) — ColunasMenu ───────────────────────────────────── */
.adm-colunas-wrap { position: relative; display: inline-block; }
.adm-colunas-back { position: fixed; inset: 0; z-index: 40; }
.adm-colunas-menu {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 50;
  min-width: 240px; padding: 10px 12px; background: var(--white);
  border: 1px solid var(--cp-border); border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.15);
  display: flex; flex-direction: column; gap: 6px; max-height: 60vh; overflow: auto;
}
.adm-colunas-menu hr { border: 0; border-top: 1px solid var(--cp-border); margin: 4px 0; }
.adm-colunas-op { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 4px 6px; border-radius: 6px; transition: background 0.1s; }
.adm-colunas-op:hover { background: var(--brand-alpha-04); }
.adm-colunas-op--drag { opacity: 0.4; background: var(--brand-alpha-08); }
.adm-colunas-drag-handle { color: var(--cp-muted); cursor: grab; padding: 0 2px; }
.adm-colunas-drag-handle:active { cursor: grabbing; }
.adm-colunas-op input { cursor: pointer; }
/* Sprint 16 — botões ↑↓ ficam invisíveis em desktop (drag nativo cobre). */
.adm-colunas-op-mover { display: none; }

/* ── Sprint 9 (S9.1) — Grupos de tabs no header ──────────────────────── */
.adm-tabs-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.adm-tab-grupo {
  font-size: .68rem; font-weight: 700; letter-spacing: .08em;
  text-transform: uppercase; color: var(--cp-muted);
  padding: 4px 10px; margin-left: 4px;
  border-left: 2px solid var(--cp-border);
}
.adm-tab-grupo:first-child { border-left: 0; margin-left: 0; padding-left: 0; }

/* ════════════════════════════════════════════════════════════════════════
   Sprint 10 — Responsividade mobile
   Testado ao vivo em admin.coralink.com.br (viewport 375x812) com admin@coralink.com.
   Bugs de prod corrigidos:
   - Título "Busque por…" era cortado (overflow horizontal do body).
   - Filtros lado-a-lado (Nome+CPF+Email+Tel) estouravam viewport.
   - HelpBox e cards estouravam largura.
   - Tabela larga sem scroll interno rompia layout global.
   - Inputs com 14.4px causavam zoom automático no iOS Safari.
   - Tap targets < 44px em botões primários.
   Regra chave: overflow-x hidden em body/main, MAS overflow-x auto em
   .adm-table-card (permite scroll horizontal INTERNO ao card, sem quebrar
   o resto). Verificado: 0 elementos com overflow > viewport fora da tabela.
   ════════════════════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
    /* Trava overflow horizontal global sem quebrar scroll interno.
       `body .adm-main` para vencer a regra desktop `.adm-main { max-width: 1400px }` */
    html, body { overflow-x: hidden !important; }
    body .adm-shell { max-width: 100vw; }
    body .adm-main { max-width: 100vw; width: 100vw; padding: 12px; box-sizing: border-box; overflow-x: hidden; }

    /* Card de tabela: scroll horizontal interno (tabela pode ser mais larga). */
    .adm-table-card {
        max-width: 100%;
        box-sizing: border-box;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding: 0;
    }

    /* iOS Safari zoom fix: inputs >= 16px pra não zoom em foco. */
    .adm-input, .adm-select, .adm-textarea,
    input[type="text"], input[type="email"], input[type="password"],
    input[type="tel"], input[type="search"], input[type="number"],
    input[type="date"], input[type="datetime-local"], textarea, select {
        font-size: 16px !important;
        box-sizing: border-box;
    }
    .adm-input { min-width: 0; width: 100%; }

    /* Tap targets mínimos (padrão Apple HIG / Google Material). */
    .adm-btn-sm { min-height: 40px; padding: 0 16px; }
    .adm-btn-primary, .adm-btn-link { min-height: 44px; padding: 12px 18px; }
    .adm-icon-btn { min-width: 40px; min-height: 40px; }

    /* PageHeader: título menor, título+ações em coluna. */
    .adm-page-title { font-size: 1.3rem; }
    .adm-page-sub { font-size: 0.85rem; }
    .adm-page-head {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
        margin-bottom: 14px;
    }
    .adm-page-head-actions {
        width: 100%;
        flex-wrap: wrap;
        gap: 8px;
    }

    /* Filtros em coluna, full-width. */
    .adm-filters { flex-direction: column; align-items: stretch; gap: 10px; }
    .adm-filters > * { width: 100%; }
    .adm-filters label { width: 100%; display: block; }

    /* Cards não estouram viewport. */
    .adm-card, .adm-help-box {
        max-width: 100%;
        box-sizing: border-box;
        padding: 14px;
    }

    /* Textos longos (hash de build, emails, URLs, IDs) quebram em vez de
       romper a caixa. `anywhere` é mais agressivo que `break-word`. */
    .adm-card, .adm-card-label, .adm-card-value, .adm-card-sub,
    .adm-help-box, .adm-help-box p, .adm-help-box li,
    .adm-page-title, .adm-page-sub, .adm-page-head,
    code, pre, .adm-code, .adm-json {
        overflow-wrap: anywhere;
        word-break: break-word;
        min-width: 0;
    }
    pre, .adm-code { overflow-x: auto; }

    /* Containers de conteúdo (abas, cards de doc, ficha, KPIs, form rows) —
       impedir que filhos com width fixo (ex: .adm-doc-card 480px, .adm-kpi-row
       com 3 cards de 350px cada) forcem o pai a expandir e romper o header. */
    .adm-tabs, .adm-tabs-bar, .adm-tabs-body, .adm-tab-panel,
    .adm-doc-card, .adm-file-thumb,
    .adm-detail-body, .adm-ficha, .adm-ficha-body,
    .adm-timeline, .adm-timeline-item,
    .adm-kpi-row, .adm-kpi, .adm-metrica-row, .adm-metrica,
    .adm-form-row, .adm-pagination,
    .adm-grid-2, .adm-grid-3, .adm-grid-4 {
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }
    .adm-doc-card { flex-wrap: wrap; row-gap: 10px; }

    /* KPI row em coluna: 3 cards side-by-side (~350px cada) forçam 1050px
       em desktop, ilegível em 375px. Grid tem prioridade sobre flex, então
       força grid-template-columns pra ambos os casos. */
    body .adm-kpi-row {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px;
    }
    body .adm-kpi-row > * { width: 100%; min-width: 0; }

    /* Form row (grupo de inputs lado a lado) também colapsa em coluna. */
    body .adm-form-row { flex-direction: column; gap: 10px; }
    body .adm-form-row > * { width: 100%; min-width: 0; }

    /* Grid 2/3/4 colunas colapsa para 1 em mobile. */
    body .adm-grid-2, body .adm-grid-3, body .adm-grid-4 { grid-template-columns: 1fr !important; }

    /* .adm-cards (auto-fit minmax 220px em desktop) — em mobile força 1 coluna
       antes dos 720px, senão em telas 400-720 cabem 2 colunas apertadas. */
    body .adm-cards, body .adm-cards-grid { grid-template-columns: 1fr !important; gap: 10px !important; }

    /* Atalhos rápidos widget do Dashboard: garantir flex-wrap e ir pra 1
       item por linha se apertado. Sem wrap, vira uma barra horizontal cortada. */
    body .adm-atalhos-lista { flex-wrap: wrap !important; gap: 8px !important; }
    body .adm-atalhos-item { flex: 1 1 45%; min-width: 0; justify-content: center; }
    body .adm-atalhos-grid { grid-template-columns: 1fr !important; }

    /* Tabela padding menor (mais dados por linha). */
    .adm-table thead th { padding: 10px 12px; font-size: 0.72rem; }
    .adm-table tbody td { padding: 10px 12px; font-size: 0.82rem; }
}

@media (max-width: 480px) {
    .adm-main { padding: 10px; }
    .adm-page-title { font-size: 1.15rem; }
    .adm-card, .adm-help-box { padding: 12px; border-radius: 12px; }
    .adm-cards { grid-template-columns: 1fr !important; gap: 10px; }

    /* Toasts full-width. */
    .adm-toast, .adm-toasts, .adm-toast-host {
        left: 8px !important;
        right: 8px !important;
        max-width: none !important;
    }

    /* Modais / drawers com padding pra respirar. */
    .adm-modal, .adm-wiki-drawer { max-width: 100vw; padding-inline: 16px; }

    /* Sidebar drawer mais estreita em telas pequenas. */
    .adm-side { width: min(280px, 85vw) !important; }

    .adm-header-user { padding: 6px; }
}

/* ════════════════════════════════════════════════════════════════════════
   Sprint 10 — Acessibilidade
   • prefers-reduced-motion: usuários com vestibular/motion sensitivity
     (WCAG 2.3.3). Desliga animações que não são funcionais.
   • :focus-visible em elementos interativos por teclado (WCAG 2.4.7).
   ════════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    .sp-bar-fill, .cp-spinner, .adm-skel-bar { animation: none !important; }
    .adm-wiki-drawer, .adm-toast, .adm-modal-card { animation: none !important; }
}

/* Foco visível global — teclado navega e vê onde está. Mouse não vê
   (browsers modernos respeitam :focus-visible). */
button:focus-visible,
a:focus-visible,
[role="button"]:focus-visible,
.adm-btn-primary:focus-visible,
.adm-btn-link:focus-visible,
.adm-btn-sm:focus-visible,
.adm-icon-btn:focus-visible,
.adm-chip:focus-visible,
.adm-table thead th[role="columnheader"]:focus-visible,
.adm-table th[tabindex]:focus-visible {
    outline: 2px solid var(--brand-primary);
    outline-offset: 2px;
    border-radius: 6px;
}

/* Inputs mantêm border-color de focus + halo brand. */
input:focus-visible, select:focus-visible, textarea:focus-visible {
    outline: 2px solid var(--brand-primary);
    outline-offset: 1px;
}

/* ════════════════════════════════════════════════════════════════════════
   Sprint 16 — Refino mobile Sprint 11-15
   Componentes novos das últimas sprints que ainda tinham cantos ásperos
   em 375×812 (iPhone). Estratégia por padrão:
   • Dropdowns com min-width fixo (>= 300px) viram bottom-sheet fixed
     abaixo de 720px pra caber sempre e ficar dentro do polegar.
   • Botões e menus ganham min-height 44px em touch (Apple HIG).
   • FAB, banner de versão e undo global não sobrepõem uns aos outros.
   • Listas horizontais (chips + botões TV, dup label, ocr campos) empilham.
   ════════════════════════════════════════════════════════════════════════ */
@media (max-width: 720px) {
    /* Vistas salvas — o dropdown alinhado à direita do trigger cortava
       a esquerda em 375px; vira bottom-sheet. */
    .adm-saved-views-menu {
        position: fixed !important;
        top: auto !important; right: 8px !important; left: 8px !important; bottom: 8px !important;
        min-width: 0 !important; max-width: none !important; width: auto !important;
        max-height: 78vh; overflow-y: auto;
        z-index: 950;
        box-shadow: 0 -8px 24px rgba(0,0,0,0.22);
    }
    .adm-saved-views-back { z-index: 949; background: rgba(0,0,0,0.28); }
    .adm-saved-views-list { max-height: 46vh; }
    .adm-saved-views-foot { flex-direction: column; align-items: stretch; }
    .adm-saved-views-foot .adm-input { width: 100%; min-width: 0; }
    .adm-saved-views-time { width: 100%; justify-content: flex-start; padding: 10px 12px; }

    /* Colunas — mesma ideia; menu curto (240px) já cabe mas fica melhor
       como sheet quando a lista é longa (auditoria, financeiro). */
    .adm-colunas-menu {
        position: fixed !important;
        top: auto !important; left: 8px !important; right: 8px !important; bottom: 8px !important;
        min-width: 0 !important; max-width: none !important; width: auto !important;
        max-height: 78vh;
        box-shadow: 0 -8px 24px rgba(0,0,0,0.22);
    }
    .adm-colunas-back { background: rgba(0,0,0,0.28); }
    .adm-colunas-op { min-height: 40px; padding: 6px 8px; }
    /* Fallback pra reordenar sem drag nativo (que quebra em touch iOS Safari):
       botões ↑↓ ao lado do handle. Handle vira só decorativo em touch. */
    .adm-colunas-op-mover {
        display: inline-flex; align-items: center; gap: 4px;
        margin-left: auto;
    }
    .adm-colunas-op-mover button {
        background: transparent; border: 1px solid var(--cp-border); border-radius: 6px;
        width: 32px; height: 32px; cursor: pointer;
        color: var(--cp-text); font-size: 12px;
        display: inline-flex; align-items: center; justify-content: center;
    }
    .adm-colunas-op-mover button:disabled { opacity: 0.35; cursor: default; }
    .adm-colunas-op-mover button:hover:not(:disabled) {
        background: var(--brand-alpha-06); border-color: var(--brand-primary);
        color: var(--brand-primary);
    }
    .adm-colunas-drag-handle { display: none; }

    /* TV preset — botões viram row cheio, tap target confortável. */
    .adm-tv-switcher { padding: 10px 12px; gap: 6px; }
    .adm-tv-switcher-lbl { width: 100%; padding-right: 0; border-right: 0;
        border-bottom: 1px solid var(--cora-border); padding-bottom: 6px; margin-bottom: 4px; }
    .adm-tv-switcher-btn { flex: 1 1 45%; min-height: 44px; justify-content: center; font-size: 0.85rem; }
    .adm-tv-switcher-spacer { display: none; }
    .adm-tv-switcher-sair { min-height: 40px; }

    /* Onboarding card — padding menor, título quebra sem cortar botão X. */
    .adm-onboarding-card { padding: 14px 14px; }
    .adm-onboarding-head { gap: 10px; align-items: flex-start; }
    .adm-onboarding-ico { width: 34px; height: 34px; font-size: 15px; flex: 0 0 auto; }
    .adm-onboarding-titulo { font-size: 1.02rem; }
    .adm-onboarding-x { padding: 6px 8px; flex: 0 0 auto; }
    .adm-onboarding-body { font-size: 0.88rem; }

    /* Banner de nova versão — se FAB de feedback está presente à direita,
       banner sobe pra não ficar embaixo do FAB no mobile. */
    .adm-versao-banner { bottom: 76px; }

    /* SplitView head — botões e labels quebram. */
    .adm-split-pane-head { flex-wrap: wrap; gap: 6px; row-gap: 4px; }
    .adm-split-frame { min-height: 500px; }

    /* Dup card — label do checkbox + status vira coluna. */
    .adm-dup-lista label { align-items: flex-start; }
    .adm-dup-problema { flex: 1 1 100%; }

    /* OCR — lista de campos empilha limpa. */
    .adm-ocr-campos li { flex-direction: column; align-items: flex-start; gap: 2px; }

    /* Confirm com consequências — lista mais compacta. */
    .adm-confirm-consequencias { padding: 10px 12px; }
    .adm-confirm-consequencias li { font-size: 0.82rem; }
    .adm-confirm-digitar .adm-input { min-height: 44px; }

    /* Push preview — cabe direitinho, sem overflow. */
    .adm-push-preview-card { max-width: 100%; box-sizing: border-box; }

    /* Command palette — teclado virtual comendo shell no mobile: reduz
       padding-top do backdrop e diminui max-height. */
    .adm-cmdk-backdrop { padding: 6vh 10px 10px; }
    .adm-cmdk-shell { max-height: 82vh; }
    .adm-cmdk-header { padding: 12px 14px; }
    .adm-cmdk-input { font-size: 16px; }
    .adm-cmdk-item { padding: 12px 14px; min-height: 48px; }
    .adm-cmdk-esc { display: none; }
    .adm-cmdk-hint { display: none; }

    /* Feedback FAB — não competir com o sticky footer da ficha. */
    .adm-ficha-sticky-actions ~ .adm-feedback-fab,
    body:has(.adm-ficha-sticky-actions) .adm-feedback-fab { bottom: 74px; }

    /* Undo global no header — botão inteiro precisa ter target 40x40.
       (label já some via regra herdada acima.) */
    .adm-undo-global { min-height: 40px; padding: 6px 12px; }

    /* Notas drawer — sheet full-height fica melhor que 92vw. */
    .adm-notas-panel { width: 100vw !important; }
    .adm-notas-head { padding: 14px; gap: 8px; }
    .adm-notas-item-foot { flex-wrap: wrap; row-gap: 6px; }

    /* Menção popover — não estoura à direita. */
    .adm-mention-popover { max-width: calc(100vw - 32px); }

    /* Métrica cards — valor grande cabe. */
    .adm-metrica-valor { font-size: 1.6rem; }

    /* Feedback admin cards — em <=720 rótulos e chips empilham. */
    .adm-fb-row-top { flex-wrap: wrap; row-gap: 6px; }

    /* AssignmentBar e BulkActionBar — pill flutuante não corta. */
    .adm-assign-bar { flex-wrap: wrap; row-gap: 6px; }
    .adm-bulk-bar { left: 8px !important; right: 8px !important;
        width: auto !important; max-width: none !important;
        transform: none !important; bottom: 12px !important; }

    /* Presença no header — nomes muito compactos. */
    .adm-presence { max-width: 40vw; overflow: hidden; }

    /* Ticket head — chips SLA + actions não estouram. */
    .adm-ticket-head-actions { flex-wrap: wrap; row-gap: 6px; }
    .adm-ticket-head-actions > * { min-height: 40px; }
}

/* Bottom sheet — em 480px o gutter externo diminui pra 4px. */
@media (max-width: 480px) {
    .adm-saved-views-menu,
    .adm-macros-menu,
    .adm-colunas-menu { left: 4px !important; right: 4px !important; bottom: 4px !important; }
}

/* ════════════════════════════════════════════════════════════════════════
   Sprint 16.1 — Sweep de <style> inline pra dentro do app.css
   MacrosDropdown, FeedbackAdmin e "semaforo" genérico (pra Financeiro).
   Antes esses estilos viviam em <style> dentro de razor, com cores literais
   (#B91C1C, #4547B4, #4B5563). Agora usam tokens semânticos.
   ════════════════════════════════════════════════════════════════════════ */

/* Sprint 12 (S12.9) — MacrosDropdown (respostas rápidas de suporte). */
.adm-macros-wrap { position: relative; display: inline-flex; }
.adm-macros-toggle { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; }
.adm-macros-count {
    background: var(--brand-alpha-14); color: var(--brand-primary);
    border-radius: 999px; padding: 1px 8px; font-size: 0.72rem;
}
.adm-macros-backdrop { position: fixed; inset: 0; z-index: 700; }
.adm-macros-menu {
    position: absolute; z-index: 701;
    top: calc(100% + 6px); left: 0;
    min-width: 340px; max-width: 480px;
    background: var(--cora-card); border: 1px solid var(--cora-border);
    border-radius: 10px; box-shadow: 0 10px 30px rgba(0,0,0,0.18);
    padding: 8px;
}
@media (max-width: 720px) {
    .adm-macros-menu {
        position: fixed;
        top: auto; left: 8px; right: 8px; bottom: 8px;
        min-width: 0; max-width: none; width: auto;
        max-height: 78vh; overflow-y: auto;
        box-shadow: 0 -8px 24px rgba(0,0,0,0.20);
    }
    .adm-macros-list { max-height: 32vh; }
}
.adm-macros-header {
    display: flex; justify-content: space-between; align-items: center;
    padding: 6px 8px; border-bottom: 1px solid var(--cora-border); margin-bottom: 6px;
}
.adm-macros-close {
    background: transparent; border: 0; cursor: pointer;
    color: var(--cp-muted); padding: 4px; border-radius: 4px;
}
.adm-macros-close:hover { background: var(--brand-alpha-06); color: var(--cp-text); }
.adm-macros-list { list-style: none; margin: 0; padding: 0; max-height: 240px; overflow-y: auto; }
.adm-macros-item { display: flex; align-items: center; gap: 4px; padding: 2px 4px; border-radius: 6px; }
.adm-macros-item:hover { background: var(--brand-alpha-04); }
.adm-macros-usar {
    flex: 1; display: flex; flex-direction: column; align-items: flex-start;
    background: transparent; border: 0; text-align: left; cursor: pointer;
    padding: 6px 8px; border-radius: 6px; gap: 2px;
}
.adm-macros-usar strong { font-size: 0.82rem; }
.adm-macros-usar .adm-muted-sm { font-size: 0.72rem; line-height: 1.25; }
.adm-macros-remover {
    background: transparent; border: 0; cursor: pointer;
    color: var(--cp-muted); padding: 4px 8px; border-radius: 4px;
}
.adm-macros-remover:hover { background: var(--danger-soft-alt); color: var(--danger-deep); }
.adm-macros-form { border-top: 1px solid var(--cora-border); margin-top: 6px; padding: 10px 6px 4px; }

/* Sprint 11 (S11.7) — FeedbackAdmin cards (Master vê feedback dos admins).
   Cores dos chips vêm de tokens semânticos (--danger/--warning/--success)
   e do novo par "info" (roxo/azul) definido em tokens.css. */
.adm-fb-list { display: flex; flex-direction: column; gap: 12px; }
.adm-fb-card { border-left: 3px solid var(--brand-primary); }
.adm-fb-row-top {
    display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
    margin-bottom: 6px; font-size: 0.78rem;
}
.adm-fb-cat {
    padding: 2px 8px; border-radius: 999px;
    background: var(--brand-alpha-08); color: var(--brand-primary); font-weight: 700;
}
.adm-fb-cat--bug      { background: var(--danger-soft-alt);  color: var(--danger-deep); }
.adm-fb-cat--ideia    { background: var(--success-soft-alt); color: var(--success-deep); }
.adm-fb-cat--pergunta { background: var(--info-soft-alt);    color: var(--info-deep); }
.adm-fb-status { padding: 2px 8px; border-radius: 999px; font-weight: 700; font-size: 0.72rem; }
.adm-fb-status--aberto     { background: var(--warning-soft-alt); color: var(--warning-deep); }
.adm-fb-status--emanalise  { background: var(--info-soft-alt);    color: var(--info-deep); }
.adm-fb-status--feito      { background: var(--success-soft-alt); color: var(--success-deep); }
.adm-fb-status--descartado { background: var(--muted-soft-alt);   color: var(--muted-deep); }
.adm-fb-quando { color: var(--cp-muted); margin-left: auto; }
.adm-fb-titulo { margin: 4px 0 6px; font-size: 1.05rem; }
.adm-fb-desc { white-space: pre-wrap; color: var(--cp-text); margin: 0 0 10px; }
.adm-fb-meta {
    display: flex; gap: 16px; font-size: 0.8rem; color: var(--cp-muted);
    margin-bottom: 8px; flex-wrap: wrap;
}
.adm-fb-meta code { background: var(--brand-alpha-06); padding: 1px 6px; border-radius: 4px; }
.adm-fb-resolucao {
    padding: 8px 10px; background: var(--cora-success-soft);
    border-radius: 6px; margin: 6px 0;
}

/* Sprint 16.1 — semaforo reutilizável pra status em geral (Financeiro,
   Solicitações, Agenda). Substitui rgb hardcoded em `style="color:#..."`
   dentro de razor. Uso: <span class="adm-semaforo adm-semaforo--warn">…</span>. */
.adm-semaforo {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 2px 10px; border-radius: 999px;
    font-size: 0.75rem; font-weight: 700; letter-spacing: 0.02em;
}
.adm-semaforo--ok      { background: var(--success-soft-alt); color: var(--success-deep); }
.adm-semaforo--warn    { background: var(--warning-soft-alt); color: var(--warning-deep); }
.adm-semaforo--danger  { background: var(--danger-soft-alt);  color: var(--danger-deep); }
.adm-semaforo--info    { background: var(--info-soft-alt);    color: var(--info-deep); }
.adm-semaforo--muted   { background: var(--muted-soft-alt);   color: var(--muted-deep); }
.adm-semaforo--brand   { background: var(--brand-alpha-08);   color: var(--brand-primary); }

/* Sprint 16.1 — ContatoDetalhe. Antes redefinia .adm-card/.adm-grid-2/.adm-dl
   globais dentro de <style> inline, com risco de contaminar outras telas.
   Namespaceado em .adm-ct-* pra ficar contido. */
.adm-ct-grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 22px;
    align-items: start;
}
@media (max-width: 980px) { .adm-ct-grid { grid-template-columns: 1fr; } }

.adm-ct-card {
    background: var(--cora-card);
    border: 1px solid var(--cora-border-soft);
    border-radius: 14px;
    padding: 22px;
    box-shadow: 0 4px 14px rgba(31,38,45,0.04);
}
.adm-ct-card--mt { margin-top: 18px; }
.adm-ct-card-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--cora-border-soft);
}
.adm-ct-card-title {
    font-size: 1rem;
    font-weight: 700;
    color: var(--cora-text);
    display: flex;
    align-items: center;
    gap: 10px;
}
.adm-ct-card-title i { color: var(--brand-primary); }

.adm-ct-dl {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 8px 16px;
    margin-bottom: 16px;
}
.adm-ct-dl dt {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--cora-text-soft);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.adm-ct-dl dd {
    font-size: 0.92rem;
    color: var(--cora-text);
    margin: 0;
}

.adm-ct-message {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px dashed var(--cora-border);
}
.adm-ct-message h4 {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--cora-text-soft);
    margin-bottom: 10px;
}
.adm-ct-message p {
    background: var(--cora-surface);
    padding: 14px 16px;
    border-radius: 10px;
    font-size: 0.95rem;
    color: var(--cora-text);
}

.adm-ct-timeline {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed var(--cora-border);
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.adm-ct-tm-item {
    font-size: 0.86rem;
    color: var(--cora-text-soft);
    display: flex;
    align-items: center;
    gap: 8px;
}
.adm-ct-tm-item i { color: var(--cora-success); }

.adm-ct-quick-actions { display: flex; flex-direction: column; gap: 10px; }

/* Sprint 16.1 — Botão do WhatsApp (usado no ContatoDetalhe). Cores brand
   oficiais do WhatsApp (verde escuro) — não usam token porque a marca é fixa,
   mas viraram propriedade só desta classe (antes vivia em <style> inline). */
.adm-btn-wa { color: #0A8F77; border-color: rgba(10,143,119,0.28); }
.adm-btn-wa:hover:not(:disabled) { background: rgba(10,143,119,0.08); border-color: rgba(10,143,119,0.45); }

/* Sprint 16.1 — Callouts semânticos pra runbook/alertas grandes. Reutilizados
   em PagamentoDetalhe (2 blocos de aviso operacional). Antes tinha hex inline
   #b91c1c / #f59e0b / #7f1d1d / #92400e. Agora via tokens semânticos. */
.adm-callout {
    margin-bottom: 16px;
    border: 2px solid;
    border-radius: 12px;
    padding: 14px 18px;
}
.adm-callout--danger { border-color: var(--danger-deep);  background: var(--danger-soft-alt); }
.adm-callout--warn   { border-color: var(--warning-deep); background: var(--warning-soft-alt); }
.adm-callout--info   { border-color: var(--info-deep);    background: var(--info-soft-alt); }
.adm-callout-title { margin-bottom: 8px; }
.adm-callout--danger .adm-callout-title { color: var(--danger-deep); }
.adm-callout--warn   .adm-callout-title { color: var(--warning-deep); }
.adm-callout--info   .adm-callout-title { color: var(--info-deep); }

/* Sprint 16.1 — highlight de linha na timeline de eventos (Financeiro).
   4 variantes semânticas antes coloridas via string switch com hex inline. */
.adm-timeline-alert { padding-left: 8px; border-left: 4px solid transparent; }
.adm-timeline-alert--danger  { background: var(--danger-soft-alt);  border-left-color: var(--danger-deep); }
.adm-timeline-alert--warn    { background: var(--warning-soft-alt); border-left-color: var(--warning-deep); }
.adm-timeline-alert--purple  { background: var(--info-soft-alt);    border-left-color: var(--info-deep); }
.adm-timeline-alert--orange  { background: rgba(234,88,12,0.10);    border-left-color: #EA580C; }

/* Sprint 16.1 — PagamentoDetalhe transição de status na timeline. */
.adm-pag-transicao {
    font-size: 0.82rem;
    color: var(--cp-text-soft, var(--cp-muted));
    margin-bottom: 2px;
}
.adm-pag-transicao i { opacity: 0.6; }

/* Sprint 16.1 — Conciliacao helpers (antes eram style inline). */
.adm-conc-hint { font-size: 0.9em; }
.adm-conc-nota {
    margin-top: 12px; padding: 12px;
    background: var(--warning-soft-alt);
    border-radius: 6px;
    font-size: 0.9em;
    color: var(--warning-deep);
}

/* Sprint 16.1 — ChargebackDetalhe helpers (antes eram style inline). */
.adm-cb-desc {
    max-width: 380px;
    color: var(--cp-muted);
    font-size: 0.9em;
}
.adm-cb-master {
    margin-top: 16px;
    border-top: 1px solid var(--cora-border);
}
.adm-cb-hint { font-size: 0.9em; }

/* Sprint 16.1 — Estornos helpers (antes eram style inline). */
.adm-est-just {
    margin-top: 16px; padding: 12px;
    background: var(--cora-surface, var(--cp-surface));
    border-radius: 6px;
}
.adm-est-just-p { margin: 8px 0 0; font-style: italic; }
.adm-est-hint   { font-size: 0.9em; }
.adm-est-master {
    margin-top: 24px;
    border-top: 1px solid var(--cora-border);
    padding-top: 16px;
}

/* Sprint 16.1 — variante "vermelha sólida" pra ação destrutiva (executar
   refund Asaas, confirmar destruição). Substitui hex inline
   background:#b91c1c;border-color:#b91c1c. */
.adm-btn-primary--danger {
    background: var(--danger-deep);
    border-color: var(--danger-deep);
}
.adm-btn-primary--danger:hover:not(:disabled) {
    filter: brightness(0.92);
}

/* Sprint 16.1 — Ledger e RepasseDetalhe helpers. */
.adm-ledger-desc {
    max-width: 280px;
    font-size: 0.85em;
    color: var(--cp-muted);
}
.adm-rep-justif {
    font-style: italic;
    color: var(--cp-muted);
}

/* Sprint 16.1 — chip "Pacote ↗" (link pra solicitação, dentro de Agenda). */
.adm-chip-pacote {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--brand-alpha-14);
    color: var(--brand-dark, var(--brand-primary));
    font-size: 11px;
    font-weight: 600;
    text-decoration: none;
    transition: background 0.12s;
}
.adm-chip-pacote:hover { background: var(--brand-alpha-18); }

/* Sprint 16.1 — lista dentro de .adm-callout (ex: bloqueadores, avisos em Agenda). */
.adm-callout-list {
    margin: 8px 0 0 24px;
    padding: 0;
}

/* ════════════════════════════════════════════════════════════════════════
   Sprint 17 — refinamento visual pesado de filtros e tabelas
   (feedback do dono: campos de busca minúsculos, layout dos filtros feio,
    cabeçalhos não ordenáveis). O padrão é hero-search à esquerda + filtros
    inline + toggle avançado em linha própria.
   ════════════════════════════════════════════════════════════════════════ */

/* Filter-bar moderna: substitui .adm-form-row. Busca vira "hero" grande,
   selects seguem compactos ao lado, toggles avançados em linha própria. */
.adm-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: flex-end;
    padding: 16px;
    background: var(--white);
    border: 1.5px solid var(--cp-border);
    border-radius: 14px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.03);
    margin-bottom: 16px;
}
.adm-filter-bar .adm-label {
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--cp-muted);
}
.adm-filter-bar__hero {
    flex: 1 1 320px;
    min-width: 260px;
}
.adm-filter-bar__hero .adm-input {
    width: 100%;
    font-size: 1rem;
    padding: 13px 16px 13px 42px;
    min-height: 48px;
    border-radius: 12px;
}
.adm-filter-bar__hero-wrap {
    position: relative;
}
.adm-filter-bar__hero-wrap > i {
    position: absolute;
    left: 15px; top: 50%;
    transform: translateY(-50%);
    color: var(--cp-muted);
    font-size: 0.95rem;
    pointer-events: none;
}
.adm-filter-bar__select {
    min-width: 180px;
}
.adm-filter-bar__select .adm-input {
    min-height: 48px;
    padding: 12px 14px;
    border-radius: 12px;
    font-size: 0.95rem;
}
.adm-filter-bar__actions {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-left: auto;
}
.adm-filter-bar__toggles {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    flex-basis: 100%;
    padding-top: 4px;
    border-top: 1px dashed var(--cp-border);
    margin-top: 2px;
}
.adm-filter-bar__toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border-radius: 999px;
    background: var(--cora-surface);
    border: 1.5px solid var(--cp-border);
    color: var(--cp-text);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    user-select: none;
}
.adm-filter-bar__toggle input {
    accent-color: var(--brand-primary);
    width: 16px; height: 16px;
    cursor: pointer;
    margin: 0;
}
.adm-filter-bar__toggle:hover {
    border-color: var(--brand-primary);
    background: var(--brand-alpha-06);
}
.adm-filter-bar__toggle--on {
    background: var(--brand-alpha-10);
    border-color: var(--brand-primary);
    color: var(--brand-primary);
}

/* Cabeçalhos ordenáveis. Combina com <th class="adm-th-sort" @onclick="...">
   e ícones fa-arrow-down-short-wide / fa-arrow-up-short-wide / fa-sort. */
.adm-th-sort {
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
    transition: color 0.12s, background 0.12s;
}
.adm-th-sort > i {
    margin-left: 6px;
    font-size: 0.8em;
    opacity: 0.55;
    transition: opacity 0.12s;
}
.adm-th-sort:hover {
    color: var(--brand-primary);
    background: var(--brand-alpha-04);
}
.adm-th-sort:hover > i { opacity: 1; }
.adm-th-sort--active { color: var(--brand-primary); }
.adm-th-sort--active > i { opacity: 1; }
.adm-th-sort:focus-visible {
    outline: 2px solid var(--brand-primary);
    outline-offset: -2px;
}

/* Ficha visual do profissional / cliente: header expansível com foto redonda.
   Usada na tab CADASTRO (feedback dono: "ficha com foto redonda, clica expande"). */
.adm-ficha-cabeca {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 20px;
    background: linear-gradient(135deg, var(--brand-alpha-06), var(--brand-alpha-04));
    border: 1.5px solid var(--cp-border);
    border-radius: 16px;
    margin-bottom: 16px;
}
.adm-ficha-avatar {
    width: 84px; height: 84px;
    border-radius: 50%;
    background: var(--white);
    border: 3px solid var(--white);
    box-shadow: 0 4px 14px var(--brand-alpha-14);
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;
    flex-shrink: 0;
}
.adm-ficha-avatar img {
    width: 100%; height: 100%;
    object-fit: cover;
}
.adm-ficha-avatar--placeholder {
    background: var(--brand-alpha-10);
    color: var(--brand-primary);
    font-size: 2rem;
    font-weight: 700;
}
.adm-ficha-info {
    flex: 1; min-width: 0;
}
.adm-ficha-nome {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--cp-text);
    margin: 0 0 4px;
    line-height: 1.2;
}
.adm-ficha-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
    font-size: 0.85rem;
    color: var(--cp-muted);
}
.adm-ficha-meta > span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.adm-ficha-meta i { color: var(--brand-primary); opacity: 0.75; }

/* Sprint 17 — cabeçalho ficha clicável (dono pediu "clica expande"). */
.adm-ficha-cabeca--clickable {
    cursor: pointer;
    transition: box-shadow 0.15s, border-color 0.15s;
}
.adm-ficha-cabeca--clickable:hover {
    border-color: var(--brand-primary);
    box-shadow: 0 6px 18px var(--brand-alpha-14);
}
.adm-ficha-cabeca-chevron {
    display: inline-flex;
    align-items: center; justify-content: center;
    width: 32px; height: 32px;
    border-radius: 8px;
    background: var(--white);
    color: var(--cp-muted);
    font-size: 0.9rem;
    transition: transform 0.2s, color 0.15s, background 0.15s;
    flex-shrink: 0;
    margin-left: 8px;
}
.adm-ficha-cabeca--aberto .adm-ficha-cabeca-chevron {
    transform: rotate(180deg);
    color: var(--brand-primary);
}
.adm-ficha-cabeca--clickable:hover .adm-ficha-cabeca-chevron {
    color: var(--brand-primary);
    background: var(--brand-alpha-06);
}
.adm-ficha-cabeca--clickable:focus-visible {
    outline: 2px solid var(--brand-primary);
    outline-offset: 2px;
}
.adm-ficha-detalhes {
    overflow: hidden;
    transition: max-height 0.3s ease-out, opacity 0.2s ease-out, margin-top 0.2s;
}
.adm-ficha-detalhes--fechado {
    max-height: 0;
    opacity: 0;
    margin-top: 0;
    pointer-events: none;
}
.adm-ficha-detalhes--aberto {
    max-height: 100000px;
    opacity: 1;
    margin-top: 0;
}

/* Diagnóstico — corrige o alinhamento zonzo. Grid limpo, valor à direita
   alinhado, chevron consistente. Ver ProfissionalDetalhe.razor tab diagnóstico. */
.adm-diag-lista {
    display: flex;
    flex-direction: column;
    background: var(--white);
    border: 1.5px solid var(--cp-border);
    border-radius: 14px;
    overflow: hidden;
}
.adm-diag-item {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) auto 20px;
    gap: 16px;
    align-items: center;
    padding: 14px 18px;
    border-bottom: 1px solid var(--cp-border);
    background: transparent;
    text-align: left;
    color: inherit;
    font: inherit;
    cursor: pointer;
    transition: background 0.12s;
    width: 100%;
    border-left: none; border-right: none; border-top: none;
}
.adm-diag-item:last-child { border-bottom: none; }
.adm-diag-item:hover { background: var(--brand-alpha-04); }
.adm-diag-item--somente-leitura { cursor: default; }
.adm-diag-item--somente-leitura:hover { background: transparent; }
.adm-diag-nome {
    font-weight: 600;
    color: var(--cp-text);
    font-size: 0.95rem;
}
.adm-diag-valor {
    font-weight: 700;
    color: var(--cp-text);
    font-size: 0.95rem;
    text-align: right;
    white-space: nowrap;
}
.adm-diag-valor--muted { color: var(--cp-muted); font-weight: 500; }
.adm-diag-chev {
    color: var(--cp-muted);
    text-align: center;
    transition: transform 0.2s;
}
.adm-diag-item[aria-expanded="true"] .adm-diag-chev {
    transform: rotate(180deg);
    color: var(--brand-primary);
}
.adm-diag-corpo {
    padding: 16px 18px;
    background: var(--brand-alpha-04);
    border-bottom: 1px solid var(--cp-border);
    font-size: 0.9rem;
    color: var(--cp-text);
}
.adm-diag-corpo:last-child { border-bottom: none; }

@media (max-width: 720px) {
    .adm-filter-bar {
        padding: 12px;
        gap: 10px;
    }
    .adm-filter-bar__hero { flex-basis: 100%; }
    .adm-filter-bar__hero .adm-input { min-height: 44px; font-size: 0.95rem; }
    .adm-filter-bar__select {
        min-width: 0;
        flex: 1 1 140px;
    }
    .adm-filter-bar__actions {
        margin-left: 0;
        flex-basis: 100%;
        justify-content: flex-end;
    }
    .adm-ficha-cabeca { padding: 14px; gap: 12px; }
    .adm-ficha-avatar { width: 64px; height: 64px; }
    .adm-ficha-nome { font-size: 1.15rem; }
    .adm-diag-item {
        grid-template-columns: 1fr auto 20px;
        padding: 12px 14px;
    }
}

