/* Telas de login e administração */

/* Login */
.cv-login { min-height: 100vh; display: grid; place-items: center; padding: 24px max(16px, env(safe-area-inset-left, 0px)); }
.cv-login-box { width: min(100%, 26rem); display: flex; flex-direction: column; gap: 22px; }
.cv-login-box img { height: 60px; width: auto; align-self: flex-start; }
.cv-login-card { background: var(--panel); border: 1px solid var(--line); border-top: 3px solid var(--amber); border-radius: 12px; padding: 26px 24px; display: flex; flex-direction: column; gap: 14px; }
.cv-login-card h1 { margin: 0; font-size: 1.7rem; }
.cv-login-card p.sub { margin: -6px 0 6px; color: var(--muted); }
.cv-login-card .cv-btn { width: 100%; padding: 11px; font-size: 1.05rem; }
.cv-login-foot { color: var(--muted); font-size: .85rem; }

/* Administração */
.cv-adm-nav { display: flex; gap: 8px; flex-wrap: wrap; border-bottom: 1px solid var(--line); padding-bottom: 14px; }
.cv-adm-nav a { color: var(--muted); text-decoration: none; font-weight: 700; font-size: 1.05rem; padding: 8px 16px; border: 1.5px solid var(--line); border-radius: 8px; }
.cv-adm-nav a:hover { color: var(--fg); border-color: var(--slate); }
.cv-adm-nav a[aria-current="true"] { color: var(--fg); border-color: var(--amber); background: var(--amber-t); }
.cv-adm-dados { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 14px; align-items: start; }
.cv-adm-dados > .cv-adm-full { grid-column: 1 / -1; }
@media (max-width: 980px) { .cv-adm-dados { grid-template-columns: minmax(0, 1fr); } }
.cv-adm-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); gap: 14px; align-items: start; }

.cv-drop { border: 2px dashed var(--line); border-radius: 12px; padding: 28px 20px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; cursor: pointer; transition: border-color .15s, background .15s; }
.cv-drop:hover, .cv-drop.sobre { border-color: var(--amber); background: var(--amber-t); }
.cv-drop svg { width: 40px; height: 40px; color: var(--amber); }
.cv-drop b { font-size: 1.15rem; }
.cv-drop span { color: var(--muted); font-size: .95rem; }
.cv-drop input { display: none; }

.cv-steps { margin: 0; padding-left: 1.2rem; color: var(--muted); display: flex; flex-direction: column; gap: 6px; }
.cv-steps b { color: var(--fg); }

.cv-table input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--amber); }
.cv-table td.dif.up { color: var(--ok); }
.cv-table td.dif.down { color: var(--bad); }
.cv-table td .novo { color: var(--blue-l); font-weight: 700; }
.cv-check { display: flex; gap: 10px; align-items: center; }
.cv-check input { width: 18px; height: 18px; accent-color: var(--amber); }

.cv-form-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); gap: 12px; }
.cv-prefix { position: relative; }
.cv-prefix::before { content: attr(data-prefixo); position: absolute; left: 12px; bottom: 10px; color: var(--muted); }
.cv-prefix input { padding-left: 38px; }
.cv-tag { display: inline-block; padding: 1px 10px; border-radius: 999px; font-size: .85rem; font-weight: 700; border: 1px solid currentColor; }
.cv-tag.admin { color: var(--amber); }
.cv-tag.comercial { color: var(--blue-l); }
.cv-tag.off { color: var(--muted); }
.cv-mini { font: inherit; font-size: .85rem; font-weight: 700; background: transparent; color: var(--fg); border: 1px solid var(--line); border-radius: 6px; padding: 3px 9px; cursor: pointer; white-space: nowrap; }
.cv-mini:hover { border-color: var(--amber); }
.cv-mini.perigo:hover { border-color: var(--bad); color: var(--bad); }
.cv-row-acoes { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }

/* Perfil */
.cv-banner-alerta { border-left-color: var(--bad); }
.cv-banner-alerta .k { color: var(--bad); }
.cv-dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px 16px; margin: 0; }
.cv-dl dt { color: var(--muted); font-size: .9rem; }
.cv-dl dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }
.cv-regras { list-style: none; margin: -2px 0 12px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: .88rem; color: var(--muted); }
.cv-regras li::before { content: "○ "; }
.cv-regras li.ok { color: var(--ok); }
.cv-regras li.ok::before { content: "● "; }
.cv-perfil-item { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
#form-senha .cv-field { margin-bottom: 12px; }

/* ---------- Administração v2 ---------- */
.cv-adm-stack { display: flex; flex-direction: column; gap: 14px; }
.cv-sub { margin: 10px 0 4px; font-size: 1rem; color: var(--muted); text-transform: uppercase; letter-spacing: .07em; }
.cv-tags { display: inline-flex; flex-wrap: wrap; gap: 4px; }
.cv-tag.st { color: var(--muted); }
.cv-checks { display: flex; flex-wrap: wrap; gap: 8px 18px; border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; margin: 0; }
.cv-checks legend { color: var(--muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; font-weight: 700; padding: 0 6px; }
.cv-checks-cols { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); }
.cv-num { width: 9rem; font: inherit; color: var(--fg); background: var(--bg); border: 1.5px solid var(--line); border-radius: 6px; padding: 4px 8px; text-align: right; }
.cv-motivo { color: var(--muted); font-style: italic; }

/* Competências: calendário */
.cv-comp-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 20px; }
.cv-ano { display: inline-flex; align-items: center; gap: 10px; }
.cv-ano b { font-size: 1.4rem; min-width: 3.5rem; text-align: center; }
.cv-ano .cv-ghost { padding: 4px 12px; font-size: 1.1rem; }
.cv-cal { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 13rem), 1fr)); gap: 10px; }
.cv-mes { font: inherit; text-align: left; color: var(--fg); background: var(--panel); border: 1.5px solid var(--line); border-top: 4px solid var(--st, var(--line)); border-radius: 10px; padding: 12px 14px; cursor: pointer; display: flex; flex-direction: column; gap: 4px; min-height: 6.5rem; }
.cv-mes:hover { border-color: var(--slate); border-top-color: var(--st, var(--slate)); }
.cv-mes.sel { border-color: var(--amber); border-top-color: var(--st, var(--amber)); background: var(--panel-2); }
.cv-mes:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
.cv-mes-topo { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.cv-mes-topo b { font-size: 1.1rem; }
.cv-chip-st { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--st, var(--muted)); }
.cv-mes-total { font-size: 1.25rem; font-weight: 700; }
.cv-mes-info { color: var(--muted); font-size: .88rem; }
.cv-mes-atual { color: var(--amber); font-size: .8rem; font-weight: 700; }
.st-aberta { --st: var(--blue); }
.st-reaberta { --st: var(--amber); }
.st-fechada { --st: var(--slate); }
.st-nova { --st: transparent; border-style: dashed; border-top-style: dashed; }
.st-nova .cv-chip-st { color: var(--muted); }
.cv-comp-detalhe { display: flex; flex-direction: column; gap: 14px; }
.cv-kpis-sm .cv-kpi { padding: 12px 16px; }
.cv-kpis-sm .cv-kpi .val { font-size: 1.5rem; }
.cv-eventos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; max-height: 20rem; overflow: auto; }
.cv-eventos li { border-left: 3px solid var(--line); padding-left: 10px; }

/* Prévia */
.cv-previa { border-color: var(--amber); }
.cv-previa-meses { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 24rem), 1fr)); gap: 12px; }
.cv-pm { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: var(--panel-2); display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cv-pm.bloq { opacity: .75; }
.cv-pm-topo { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.cv-pm-tab th, .cv-pm-tab td { padding: 6px 8px; }
.cv-pm-tab th { background: var(--panel-2); }
.cv-pm-lista { margin: 0; padding-left: 1.1rem; display: flex; flex-direction: column; gap: 4px; font-size: .92rem; color: var(--muted); }
.cv-pm-lista li.warn { color: var(--amber); }
.cv-pm-lista li.bad { color: var(--bad); }
.cv-queda { border: 1.5px solid var(--amber); border-radius: 8px; padding: 8px 10px; color: var(--amber); align-items: flex-start; }

/* Perfis */
.cv-perfis { display: grid; grid-template-columns: minmax(16rem, 1fr) minmax(0, 2.2fr); gap: 14px; align-items: start; }
@media (max-width: 980px) { .cv-perfis { grid-template-columns: minmax(0, 1fr); } }
.cv-lista-perfis { display: flex; flex-direction: column; gap: 8px; }
.cv-perfil-btn { font: inherit; text-align: left; color: var(--fg); background: var(--panel-2); border: 1.5px solid var(--line); border-radius: 10px; padding: 10px 12px; cursor: pointer; display: flex; flex-direction: column; gap: 4px; }
.cv-perfil-btn:hover { border-color: var(--slate); }
.cv-perfil-btn.sel { border-color: var(--amber); }
.cv-perfil-btn.off { opacity: .6; }
.cv-perfil-btn .hint { margin: 0; font-size: .85rem; color: var(--muted); }
.cv-novo-perfil { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; border-top: 1px solid var(--line); padding-top: 12px; }
.cv-novo-perfil .cv-field { flex: 1 1 12rem; }
.cv-perm-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: 10px; }
.cv-perm-mod { border: 1px solid var(--line); border-radius: 10px; padding: 8px 12px 10px; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.cv-perm-mod legend { font-weight: 700; padding: 0 6px; }
.cv-check input:disabled + span { color: var(--muted); }

/* Senha provisória */
.cv-senha-box { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; }
.cv-senha { font-size: 1.4rem; font-weight: 700; letter-spacing: .06em; background: var(--bg); border: 1px dashed var(--amber); border-radius: 8px; padding: 8px 14px; user-select: all; }
.cv-au-mud { font-size: .88rem; color: var(--muted); max-width: 40rem; overflow-wrap: anywhere; }

/* Fidelidade: prévias das planilhas */
.fid-previa { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border: 1.5px solid var(--amber); border-radius: 10px; background: var(--panel-2); }
.fid-pv-tit { font-weight: 700; color: var(--amber); }
.fid-previa .hint { margin: 0; font-size: .92rem; color: var(--muted); }
#tb-fd .cv-num { width: 10rem; }
#tb-fd td { vertical-align: middle; }
