:root {
    --asfalto: #1A1F24;
    --sinal: #E8A500;
    --concreto: #F3F1ED;
    --linha: #E2DED6;
    --texto-2: #5B636B;
    --verde: #2E7D32;
    --amarelo: #D97A00;
    --vermelho: #C62828;
    --titulo: "Barlow Semi Condensed", "Inter", sans-serif;
}

body { background: var(--concreto); }
h1:focus { outline: none; }

/* ---------- marca e moldura ---------- */
.marca {
    font-family: var(--titulo);
    font-weight: 700;
    font-size: 1.5rem;
    letter-spacing: .02em;
    color: inherit;
    text-decoration: none;
    margin-left: .25rem;
}
.marca span {
    background: var(--sinal);
    color: var(--asfalto);
    padding: 0 .3rem;
    margin-left: .15rem;
    border-radius: 4px;
}
/* faixa tracejada de sinalização sob a barra superior */
.faixa {
    position: fixed;
    top: 64px;
    left: 0;
    right: 0;
    height: 4px;
    z-index: 1301;
    background: repeating-linear-gradient(90deg, var(--sinal) 0 28px, transparent 28px 44px), var(--asfalto);
}
@media (max-width: 599px) { .faixa { top: 56px; } }
.menu .mud-nav-link.active { border-left: 3px solid var(--sinal); }

.cabecalho { margin-bottom: 1.25rem; }
.cabecalho .sub { max-width: 760px; margin-top: .25rem; }
.cabecalho-acoes { display: flex; gap: .5rem; margin-top: .25rem; flex-wrap: wrap; }

/* ---------- oportunidades ---------- */
.atalhos { display: flex; align-items: center; flex-wrap: wrap; gap: .25rem; margin-top: .75rem; color: var(--texto-2); font-size: .85rem; }
.atalhos > span { margin-right: .25rem; }
.contagem { margin: 0 0 .75rem; color: var(--texto-2); }
.contagem strong { color: var(--asfalto); font-size: 1.1rem; }

.edital { border-left: 4px solid var(--asfalto) !important; transition: border-color .15s, box-shadow .15s; }
.edital:hover { border-left-color: var(--sinal) !important; box-shadow: 0 4px 16px rgba(26, 31, 36, .08); }
.edital-topo { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.edital-local { display: flex; align-items: center; gap: .3rem; color: var(--texto-2); font-size: .85rem; }
.edital-objeto {
    margin: .4rem 0 .8rem;
    font-weight: 500;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.edital-rodape { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; }
.edital-dados { display: flex; gap: 1.75rem; flex-wrap: wrap; }
.dado { display: flex; flex-direction: column; font-size: .9rem; }
.dado small { color: var(--texto-2); font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; }
.edital-acoes { display: flex; gap: .5rem; align-items: center; }

/* ---------- análise: veredito ---------- */
.veredito {
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 1rem;
    color: #fff;
    background: var(--asfalto);
    border-top: 6px solid var(--cor-veredito);
}
.veredito-verde { --cor-veredito: var(--verde); }
.veredito-amarelo { --cor-veredito: var(--sinal); }
.veredito-vermelho { --cor-veredito: var(--vermelho); }
.veredito-topo { display: flex; gap: 1.25rem; align-items: center; }
.veredito-rotulo { font-family: var(--titulo); font-size: 2rem; font-weight: 700; line-height: 1.1; color: var(--cor-veredito); }
.veredito-vermelho .veredito-rotulo { color: #FF6B6B; }
.veredito-texto { margin: .35rem 0 0; color: #E8EAEC; max-width: 820px; }
.veredito-titulo { font-family: var(--titulo); font-size: 1.05rem; font-weight: 600; margin: .5rem 0 .6rem; color: #fff; letter-spacing: .02em; }
.semaforo {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px;
    background: #0E1114;
    border-radius: 10px;
    flex-shrink: 0;
}
.luz { width: 22px; height: 22px; border-radius: 50%; opacity: .18; }
.l-vermelho { background: #FF5252; }
.l-amarelo { background: #FFC233; }
.l-verde { background: #4CD964; }
.veredito-vermelho .l-vermelho, .veredito-amarelo .l-amarelo, .veredito-verde .l-verde { opacity: 1; box-shadow: 0 0 14px currentColor; }
.veredito-vermelho .l-vermelho { color: #FF5252; }
.veredito-amarelo .l-amarelo { color: #FFC233; }
.veredito-verde .l-verde { color: #4CD964; }

.lista-check { list-style: none; padding: 0; margin: 0; }
.lista-check li { display: flex; gap: .5rem; align-items: flex-start; padding: .3rem 0; color: #E8EAEC; }
.lista-check .mud-icon-root { margin-top: 2px; flex-shrink: 0; }
.lacuna { display: flex; gap: .6rem; align-items: flex-start; padding: .4rem 0; }
.lacuna strong { color: #fff; }
.lacuna p { margin: .15rem 0 0; color: #C9CED3; font-size: .9rem; }
.veredito .vazio { color: #C9CED3; }

.parecer { border-left: 4px solid var(--sinal) !important; }
.parecer p { margin: 0; font-size: 1.05rem; line-height: 1.6; }
.altura-cheia { height: 100%; }

.resumo { display: grid; grid-template-columns: minmax(150px, 34%) 1fr; gap: .45rem 1rem; margin: 0; }
.resumo dt { color: var(--texto-2); font-size: .85rem; }
.resumo dd { margin: 0; font-weight: 500; }

.datas { list-style: none; padding: 0; margin: 0; border-left: 2px solid var(--linha); }
.datas li { position: relative; padding: 0 0 .9rem 1rem; display: flex; flex-direction: column; }
.datas li::before {
    content: "";
    position: absolute;
    left: -6px;
    top: 4px;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--sinal);
    border: 2px solid #fff;
}
.data-quando { font-weight: 600; }
.data-evento { font-size: .92rem; }
.ref { color: var(--texto-2); font-size: .78rem; }

.abas .tabela td, .abas .tabela th { vertical-align: top; }
.nowrap { white-space: nowrap; }
.risco { border-left: 4px solid var(--cor-risco); background: #FAFAF8; border-radius: 6px; padding: .75rem 1rem; margin-bottom: .6rem; }
.risco p { margin: .3rem 0; }
.risco-alta { --cor-risco: var(--vermelho); }
.risco-media { --cor-risco: var(--amarelo); }
.risco-baixa { --cor-risco: #8A949C; }
.risco-topo { display: flex; justify-content: space-between; gap: 1rem; }
.risco-grav { color: var(--cor-risco); font-weight: 600; font-size: .8rem; text-transform: uppercase; white-space: nowrap; }
.grupo { font-family: var(--titulo); font-weight: 600; margin: .75rem 0 .25rem; }

.rodape-analise { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; align-items: center; color: var(--texto-2); font-size: .82rem; padding-bottom: 2rem; }

/* ---------- progresso ---------- */
.progresso-topo { display: flex; gap: 1rem; align-items: center; }
.progresso .dica { color: var(--texto-2); font-style: italic; min-height: 1.5em; }

/* ---------- upload ---------- */
.zona-upload {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .35rem;
    padding: 2.5rem 1rem;
    border: 2px dashed #C9C4BA;
    border-radius: 12px;
    background: #FAFAF8;
    text-align: center;
    cursor: pointer;
}
.zona-upload:hover { border-color: var(--sinal); }
.zona-upload span { color: var(--texto-2); font-size: .88rem; }

/* ---------- análises feitas ---------- */
.item-analise {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    margin-bottom: .6rem;
    background: #fff;
    border: 1px solid var(--linha);
    border-radius: 10px;
    color: inherit;
    text-decoration: none;
}
.item-analise:hover { border-color: var(--sinal); }
.item-texto { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.item-texto strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.item-texto small { color: var(--texto-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bolinha { width: 14px; height: 14px; border-radius: 50%; flex-shrink: 0; }
.b-verde { background: var(--verde); }
.b-amarelo { background: var(--sinal); }
.b-vermelho { background: var(--vermelho); }

/* ---------- próximas fases ---------- */
.fases { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; }
.fase { position: relative; }
.fase-num { position: absolute; top: .75rem; right: 1rem; font-family: var(--titulo); font-size: 2.5rem; font-weight: 700; color: var(--linha); }
.fase-icone { margin-bottom: .5rem; }

/* ---------- login (página estática) ---------- */
.login {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding: 16px;
    background:
        repeating-linear-gradient(90deg, var(--sinal) 0 48px, transparent 48px 80px) center 78% / 100% 6px no-repeat,
        var(--asfalto);
    font-family: Inter, sans-serif;
}
.login-cartao { width: 100%; max-width: 400px; background: #fff; border-radius: 14px; padding: 2rem; box-shadow: 0 20px 60px rgba(0, 0, 0, .35); }
.marca-grande { font-size: 2.2rem; color: var(--asfalto); margin: 0; }
.login-sub { color: var(--texto-2); margin: .5rem 0 1.5rem; line-height: 1.5; }
.login label { display: block; font-size: .85rem; font-weight: 500; margin-bottom: .35rem; }
.login input {
    width: 100%;
    box-sizing: border-box;
    padding: .7rem .8rem;
    border: 1px solid #C9C4BA;
    border-radius: 8px;
    font-size: 1rem;
}
.login input:focus { outline: 2px solid var(--sinal); border-color: var(--sinal); }
.login button {
    width: 100%;
    margin-top: 1rem;
    padding: .75rem;
    border: 0;
    border-radius: 8px;
    background: var(--sinal);
    color: var(--asfalto);
    font-weight: 600;
    font-size: 1rem;
    cursor: pointer;
}
.login button:hover { filter: brightness(1.05); }
.login-erro { color: var(--vermelho); font-size: .88rem; margin: .5rem 0 0; }

/* ---------- impressão ---------- */
@media print {
    .mud-appbar, .mud-drawer, .faixa, .nao-imprime, #blazor-error-ui, #components-reconnect-modal { display: none !important; }
    .mud-main-content { padding: 0 !important; margin: 0 !important; }
    body { background: #fff; }
    .veredito { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .mud-tabs-panels > div { display: block !important; }
}

/* ---------- erro do Blazor ---------- */
.blazor-error-boundary { background: #b32121; padding: 1rem; color: white; }
.blazor-error-boundary::after { content: "Tivemos um problema técnico nesta parte da página."; }

.texto-2 { color: var(--texto-2) !important; }
.prazo { display: flex; align-items: center; gap: .25rem; }

/* ---------- análise em lote ---------- */
.edital-marcado { border-left-color: var(--sinal) !important; background: #FFFBF0 !important; }
.edital-local .mud-checkbox { margin: -6px 0 -6px -10px; }
.barra-lote {
    position: sticky;
    bottom: 16px;
    z-index: 10;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: 1rem;
    padding: .75rem 1rem .75rem 1.25rem;
    background: #fff;
    border: 1px solid var(--linha);
    border-top: 4px solid var(--sinal);
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(26, 31, 36, .18);
}
.barra-lote strong { font-size: 1.1rem; }
@media (max-width: 599px) { .barra-lote-dica { display: none; } }
.fila-item { display: flex; align-items: center; gap: .9rem; padding: .55rem 0; border-top: 1px solid var(--linha); }
.fila-item:first-of-type { border-top: 0; }
.rotulo-semaforo { font-weight: 600; }
.s-verde { color: var(--verde); }
.s-amarelo { color: var(--amarelo); }
.s-vermelho { color: var(--vermelho); }

/* ---------- relatório em PDF e comparação ---------- */
.acoes-relatorio { display: flex; justify-content: flex-end; margin-bottom: .75rem; }
.item-analise { padding: .35rem 1.25rem .35rem .6rem; gap: .25rem; }
.item-link { display: flex; align-items: center; gap: 1rem; flex: 1; min-width: 0; padding: .65rem 0 .65rem .4rem; color: inherit; text-decoration: none; }
.item-marcado { border-color: var(--sinal); background: #FFFBF0; }

.comparacao-rolagem { overflow-x: auto; background: #fff; border: 1px solid var(--linha); border-radius: 12px; margin-bottom: 2rem; }
.comparacao { width: 100%; min-width: 760px; table-layout: fixed; border-collapse: collapse; font-size: .88rem; line-height: 1.45; }
.comparacao th, .comparacao td { padding: .7rem .9rem; vertical-align: top; text-align: left; border-bottom: 1px solid var(--linha); }
.comparacao td { white-space: pre-line; overflow-wrap: anywhere; }
.comparacao thead th { background: var(--asfalto); color: #fff; font-weight: 600; }
.comparacao thead th a {
    color: #fff; text-decoration: none;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.comparacao thead th a:hover { color: var(--sinal); }
.comparacao thead th small {
    color: #C9CED3; font-weight: 400; margin-top: .3rem;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.comparacao tbody tr:nth-child(even) td { background: #FAFAF8; }
.comparacao-rotulo { position: sticky; left: 0; z-index: 1; width: 150px; min-width: 130px; background: #F3F1ED; color: var(--asfalto); font-weight: 600; }
.comparacao thead .comparacao-rotulo { background: var(--asfalto); }
.veredito-celula { font-family: var(--titulo); font-size: 1.15rem; font-weight: 700; border-left: 4px solid currentColor; }
.v-verde { color: var(--verde); }
.v-amarelo { color: var(--amarelo); }
.v-vermelho { color: var(--vermelho); }

/* ---------- filtros de oportunidades ---------- */
.filtros-locais { border-left: 4px solid var(--sinal) !important; }
.filtros-topo { display: flex; justify-content: space-between; align-items: center; gap: .5rem; flex-wrap: wrap; }
.compat { display: flex; align-items: center; gap: .25rem 1rem; flex-wrap: wrap; margin-top: .5rem; }
.compat-regra { font-size: .82rem; }
.aviso-limite { font-size: .82rem; margin-top: .2rem; }
.edital-tags { display: flex; flex-wrap: wrap; gap: .35rem; margin: -.3rem 0 .8rem; }
.tag { font-size: .75rem; padding: .1rem .55rem; border-radius: 999px; background: #EFEDE8; color: var(--texto-2); }
.tag-combina { background: #E6F2E7; color: var(--verde); font-weight: 600; }
