* { margin: 0; padding: 0; box-sizing: border-box; }

:root {
    --verde: #0e6838;
    --verde-claro: #1a8a4a;
    --verde-bg: #f0faf4;
    --azul: #0b8cc9;
    --azul-escuro: #0a7ab5;
    --azul-bg: #eef6fc;
    --cinza-bg: #f4f5f7;
    --cinza-borda: #dde1e6;
    --cinza-texto: #555;
    --branco: #fff;
    --vermelho: #e74c3c;
    --amarelo: #f39c12;
    --sidebar-w: 250px;
}

body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: var(--cinza-bg); color: #333; min-height: 100vh; }

/* ===== LOGIN ===== */
.login-page { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: linear-gradient(135deg, var(--verde), var(--verde-claro)); }
.login-card { background: #fff; border-radius: 16px; padding: 40px; width: 420px; max-width: 95%; box-shadow: 0 8px 40px rgba(0,0,0,0.2); }
.login-card img { height: 180px; display: block; margin: 0 auto 16px; }
.login-card h1 { text-align: center; color: var(--verde); font-size: 1.5rem; margin-bottom: 4px; }
.login-card .subtitle { text-align: center; color: var(--cinza-texto); font-size: 0.85rem; margin-bottom: 24px; }
.login-tabs { display: flex; margin-bottom: 20px; border-radius: 8px; overflow: hidden; border: 2px solid var(--verde); }
.login-tab { flex: 1; padding: 10px; text-align: center; cursor: pointer; font-weight: 600; font-size: 0.9rem; background: #fff; color: var(--verde); transition: all 0.2s; }
.login-tab.active { background: var(--verde); color: #fff; }
.login-form .form-group { margin-bottom: 14px; }
.login-form label { display: block; font-size: 0.82rem; font-weight: 600; color: var(--cinza-texto); margin-bottom: 5px; text-transform: uppercase; letter-spacing: 0.3px; }
.login-form input { width: 100%; padding: 11px 14px; border: 2px solid var(--cinza-borda); border-radius: 8px; font-size: 0.92rem; font-family: inherit; transition: border-color 0.2s; }
.login-form input:focus { outline: none; border-color: var(--azul); }
.login-form .btn { width: 100%; padding: 12px; font-size: 1rem; margin-top: 6px; }
.login-form .link { text-align: center; margin-top: 14px; font-size: 0.85rem; }
.login-form .link a { color: var(--azul); cursor: pointer; text-decoration: underline; }
.login-error { color: var(--vermelho); font-size: 0.85rem; text-align: center; margin-top: 8px; display: none; }

/* ===== HEADER ===== */
header { background: linear-gradient(135deg, var(--verde), var(--verde-claro)); color: #fff; padding: 12px 30px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 2px 8px rgba(0,0,0,0.15); position: sticky; top: 0; z-index: 200; height: 60px; }
.header-esquerda { display: flex; align-items: center; gap: 14px; }
.header-logo { height: 40px; width: auto; }
header h1 { font-size: 1.3rem; font-weight: 700; }
.header-user { display: flex; align-items: center; gap: 14px; }
.header-user .user-nome { font-size: 0.85rem; opacity: 0.9; }
.header-user .user-role { font-size: 0.7rem; background: rgba(255,255,255,0.2); padding: 2px 8px; border-radius: 4px; text-transform: uppercase; }
.btn-header { background: rgba(255,255,255,0.15); color: #fff; border: 1px solid rgba(255,255,255,0.3); padding: 8px 18px; border-radius: 6px; font-weight: 600; cursor: pointer; font-size: 0.85rem; transition: background 0.2s; }
.btn-header:hover { background: rgba(255,255,255,0.25); }

/* ===== LAYOUT ===== */
.layout { display: flex; min-height: calc(100vh - 60px); }

/* ===== SIDEBAR ===== */
#sidebar { width: var(--sidebar-w); min-width: var(--sidebar-w); background: #fff; border-right: 1px solid var(--cinza-borda); padding: 16px 0; position: sticky; top: 60px; height: calc(100vh - 60px); overflow-y: auto; }
#sidebar ul { list-style: none; }
.nav-item { padding: 12px 20px; cursor: pointer; font-size: 0.88rem; font-weight: 500; color: var(--cinza-texto); border-left: 4px solid transparent; transition: all 0.2s; display: flex; align-items: center; gap: 10px; }
.nav-item:hover { background: var(--verde-bg); color: var(--verde); }
.nav-item.active { background: var(--verde-bg); color: var(--verde); border-left-color: var(--verde); font-weight: 700; }
.nav-icon { font-size: 1rem; }
.nav-separator { padding: 8px 20px; font-size: 0.72rem; text-transform: uppercase; color: #aaa; font-weight: 700; letter-spacing: 1px; margin-top: 10px; }

/* ===== MAIN ===== */
main { flex: 1; padding: 28px 36px; max-width: 1100px; overflow-y: auto; }

/* ===== CARDS / SECTIONS ===== */
.secao { background: #fff; border-radius: 10px; padding: 24px 28px; margin-bottom: 20px; box-shadow: 0 1px 6px rgba(0,0,0,0.06); border: 1px solid var(--cinza-borda); }
.secao-titulo { font-size: 1.05rem; font-weight: 700; color: var(--verde); margin-bottom: 18px; padding-bottom: 10px; border-bottom: 2px solid var(--verde-bg); display: flex; align-items: center; gap: 8px; }

/* ===== FORM ===== */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; }
.form-grid.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
.form-group { display: flex; flex-direction: column; gap: 5px; }
.form-group.full { grid-column: 1 / -1; }
.form-group label { font-size: 0.82rem; font-weight: 600; color: var(--cinza-texto); text-transform: uppercase; letter-spacing: 0.3px; }
.form-group input, .form-group select, .form-group textarea { padding: 10px 12px; border: 2px solid var(--cinza-borda); border-radius: 7px; font-size: 0.92rem; font-family: inherit; transition: border-color 0.2s; background: #fff; }
.form-group input:focus, .form-group select:focus { outline: none; border-color: var(--azul); }
.form-group input[readonly] { background: var(--cinza-bg); color: var(--cinza-texto); }

/* ===== DIMENSIONAMENTO ===== */
.dim-box { display: flex; gap: 20px; flex-wrap: wrap; }
.dim-card { flex: 1; min-width: 180px; background: var(--azul-bg); border: 2px solid var(--azul); border-radius: 10px; padding: 16px 20px; text-align: center; }
.dim-card.verde { background: var(--verde-bg); border-color: var(--verde); }
.dim-card h4 { font-size: 0.8rem; text-transform: uppercase; color: var(--cinza-texto); margin-bottom: 6px; }
.dim-card .dim-num { font-size: 2rem; font-weight: 800; color: var(--azul); }
.dim-card.verde .dim-num { color: var(--verde); }

/* ===== TABELA ===== */
table { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
table th { background: var(--verde); color: #fff; padding: 10px 14px; text-align: left; font-weight: 600; font-size: 0.82rem; text-transform: uppercase; }
table td { padding: 9px 14px; border-bottom: 1px solid var(--cinza-borda); }
table tr:hover td { background: var(--cinza-bg); }
table input { width: 100%; padding: 7px 10px; border: 1px solid var(--cinza-borda); border-radius: 5px; font-size: 0.88rem; font-family: inherit; }
table input:focus { outline: none; border-color: var(--azul); }
table input.input-bloqueado { background: #f0f0f0; color: #ccc; cursor: not-allowed; border-color: #eee; }
.col-num { width: 40px; text-align: center; font-weight: 700; color: var(--cinza-texto); }

/* ===== FASES ===== */
.fase-bar { display: flex; gap: 4px; margin-bottom: 24px; }
.fase-step { flex: 1; padding: 12px 8px; text-align: center; background: var(--cinza-bg); border-radius: 8px; font-size: 0.78rem; font-weight: 600; color: #aaa; position: relative; transition: all 0.3s; }
.fase-step.ativa { background: var(--verde); color: #fff; }
.fase-step.concluida { background: var(--verde-bg); color: var(--verde); border: 2px solid var(--verde); }

/* ===== STATUS BADGES ===== */
.badge { display: inline-block; padding: 3px 10px; border-radius: 20px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; }
.badge-pendente { background: #fef3cd; color: #856404; }
.badge-aprovado { background: #d4edda; color: #155724; }
.badge-rejeitado { background: #f8d7da; color: #721c24; }
.badge-aberta { background: #cce5ff; color: #004085; }
.badge-fechada { background: var(--cinza-bg); color: var(--cinza-texto); }

/* ===== CALENDÁRIO ===== */
.calendario-etapa { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px; border-left: 4px solid var(--azul); background: var(--azul-bg); border-radius: 0 8px 8px 0; margin-bottom: 8px; }
.calendario-etapa .etapa-desc { flex: 1; font-size: 0.88rem; font-weight: 500; }
.calendario-etapa .etapa-data { font-weight: 700; color: var(--azul); white-space: nowrap; font-size: 0.88rem; }

/* ===== DOCUMENTOS ===== */
.documento { background: #fff; border: 1px solid var(--cinza-borda); border-radius: 10px; padding: 40px 50px; margin-bottom: 20px; box-shadow: 0 1px 6px rgba(0,0,0,0.06); position: relative; overflow: hidden; max-width: 900px; }
/* Header tripartido dos documentos */
.doc-header-tri { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; padding-bottom: 14px; border-bottom: 2px solid var(--verde); }
.doc-h-left, .doc-h-right { width: 120px; display: flex; align-items: center; }
.doc-h-right { justify-content: flex-end; }
.doc-h-center { text-align: center; flex: 1; }
.doc-h-cipa { font-size: 1.6rem; font-weight: 900; color: var(--verde); letter-spacing: 2px; }
.doc-h-ano { font-size: 1rem; font-weight: 700; color: var(--azul); }
.doc-h-empresa { font-size: 0.82rem; color: var(--cinza-texto); margin-top: 2px; }

/* Capa verde */
.capa-verde { background: linear-gradient(160deg, #0a5c30, #1a8a4a, #0e6838); color: #fff; border-radius: 14px; padding: 60px 40px; text-align: center; margin-bottom: 24px; min-height: 500px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px; }
.capa-logo { height: 120px; margin-bottom: 10px; }
.capa-titulo { font-size: 3rem; font-weight: 900; letter-spacing: 6px; text-shadow: 2px 2px 8px rgba(0,0,0,0.3); }
.capa-subtitulo { font-size: 1.1rem; font-weight: 400; opacity: 0.9; line-height: 1.5; }
.capa-empresa { font-size: 1.3rem; font-weight: 700; margin-top: 20px; padding: 10px 30px; background: rgba(255,255,255,0.15); border-radius: 8px; }
.capa-gestao { font-size: 1rem; opacity: 0.85; }
.capa-logo-cliente { height: 70px; margin-top: 20px; background: rgba(255,255,255,0.9); border-radius: 10px; padding: 8px; }

.doc-header { text-align: center; margin-bottom: 28px; padding-bottom: 16px; border-bottom: 2px solid var(--verde); }
.doc-header img { height: 70px; max-width: 200px; object-fit: contain; margin-bottom: 8px; border-radius: 4px; }
.doc-header .doc-empresa { font-size: 1rem; font-weight: 700; color: var(--verde); }
.doc-header .doc-gestao { font-size: 0.85rem; color: var(--cinza-texto); }
.doc-titulo { text-align: center; font-size: 1.15rem; font-weight: 800; color: var(--verde); margin: 20px 0; text-transform: uppercase; }
.doc-texto { font-size: 0.92rem; line-height: 1.7; text-align: justify; margin-bottom: 16px; color: #333; }
.doc-local-data { margin-top: 30px; font-size: 0.9rem; color: var(--cinza-texto); }
.doc-assinatura { margin-top: 50px; text-align: center; }
.doc-assinatura .linha { border-top: 1px solid #333; width: 300px; margin: 0 auto 4px; }
.doc-assinatura .nome { font-size: 0.85rem; color: var(--cinza-texto); }
.doc-tabela { width: 100%; margin: 16px 0; border-collapse: collapse; font-size: 0.88rem; }
.doc-tabela th { background: var(--verde); color: #fff; padding: 8px 12px; text-align: left; }
.doc-tabela td { padding: 7px 12px; border-bottom: 1px solid var(--cinza-borda); }
.doc-tabela tr:nth-child(even) td { background: var(--cinza-bg); }
.btn-imprimir { display: block; margin-left: auto; margin-bottom: 16px; background: var(--verde); color: #fff; border: none; padding: 8px 18px; border-radius: 6px; font-weight: 600; cursor: pointer; font-size: 0.85rem; transition: background 0.2s; }
.btn-imprimir:hover { background: var(--verde-claro); }

/* ===== CARTAZ ===== */
.cartaz { background: linear-gradient(135deg, var(--verde), var(--verde-claro)); color: #fff; border-radius: 12px; padding: 50px 40px; text-align: center; margin-bottom: 24px; position: relative; }
.cartaz .btn-imprimir { position: absolute; top: 14px; right: 14px; margin: 0; background: rgba(255,255,255,0.2); color: #fff; }
.cartaz h2 { font-size: 2rem; margin-bottom: 8px; }
.cartaz h3 { font-size: 1.1rem; font-weight: 400; opacity: 0.9; }
.cartaz .cartaz-destaque { font-size: 2.5rem; font-weight: 900; margin: 30px 0; text-shadow: 2px 2px 4px rgba(0,0,0,0.2); }
.cartaz .cartaz-gestao { font-size: 1.2rem; opacity: 0.85; }

/* ===== CÉDULAS ===== */
.cedulas-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 16px 0; }
.cedula { border: 2px dashed var(--cinza-borda); border-radius: 8px; padding: 16px; text-align: center; }
.cedula h4 { font-size: 0.9rem; color: var(--verde); margin-bottom: 6px; }
.cedula p { font-size: 0.75rem; color: var(--cinza-texto); margin-bottom: 10px; }
.cedula .candidato-opcao { display: flex; align-items: center; gap: 8px; padding: 5px 10px; border: 1px solid var(--cinza-borda); border-radius: 5px; margin-bottom: 4px; font-size: 0.85rem; text-align: left; }
.cedula .candidato-opcao .check-box { width: 16px; height: 16px; border: 2px solid var(--cinza-borda); border-radius: 3px; flex-shrink: 0; }

/* ===== RESUMO ===== */
.resumo-box { display: flex; gap: 16px; flex-wrap: wrap; margin: 16px 0; }
.resumo-item { flex: 1; min-width: 140px; background: var(--cinza-bg); border-radius: 8px; padding: 14px; text-align: center; border: 1px solid var(--cinza-borda); }
.resumo-item .num { font-size: 1.6rem; font-weight: 800; color: var(--azul); }
.resumo-item .desc { font-size: 0.78rem; color: var(--cinza-texto); margin-top: 4px; }

/* ===== ASSINATURAS ===== */
.lista-assinaturas { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 20px 0; }
.assinatura-linha { border-bottom: 1px solid #999; padding: 12px 8px 4px; font-size: 0.85rem; min-height: 36px; }

/* ===== REUNIÕES ===== */
.reuniao-grid { display: grid; grid-template-columns: auto 1fr 1fr 1fr; gap: 1px; background: var(--cinza-borda); border-radius: 8px; overflow: hidden; margin: 16px 0; }
.reuniao-grid > div { background: #fff; padding: 10px 14px; font-size: 0.88rem; }
.reuniao-grid .rg-header { background: var(--verde); color: #fff; font-weight: 700; font-size: 0.82rem; text-transform: uppercase; }
.reuniao-grid input { width: 100%; border: 1px solid var(--cinza-borda); border-radius: 5px; padding: 6px 8px; font-size: 0.85rem; font-family: inherit; }
.reuniao-grid input:focus { outline: none; border-color: var(--azul); }

/* ===== PORTAL FUNCIONÁRIO ===== */
.portal-hero { background: linear-gradient(135deg, var(--verde), var(--azul)); color: #fff; border-radius: 12px; padding: 30px; margin-bottom: 24px; text-align: center; }
.portal-hero h2 { font-size: 1.4rem; margin-bottom: 6px; }
.portal-hero p { opacity: 0.9; font-size: 0.9rem; }

.votacao-card { background: #fff; border: 2px solid var(--cinza-borda); border-radius: 10px; padding: 18px; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between; cursor: pointer; transition: all 0.2s; }
.votacao-card:hover { border-color: var(--verde); background: var(--verde-bg); }
.votacao-card.selecionado { border-color: var(--verde); background: var(--verde-bg); box-shadow: 0 0 0 3px rgba(14,104,56,0.2); }
.votacao-card .cand-nome { font-weight: 700; font-size: 1rem; }
.votacao-card .cand-funcao { font-size: 0.82rem; color: var(--cinza-texto); }
.votacao-card .radio { width: 24px; height: 24px; border: 3px solid var(--cinza-borda); border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; transition: all 0.2s; }
.votacao-card.selecionado .radio { border-color: var(--verde); }
.votacao-card.selecionado .radio::after { content: ''; width: 12px; height: 12px; background: var(--verde); border-radius: 50%; }

.inscricao-status { padding: 20px; border-radius: 10px; text-align: center; margin: 20px 0; }
.inscricao-status.pendente { background: #fef3cd; border: 2px solid #ffc107; }
.inscricao-status.aprovado { background: #d4edda; border: 2px solid #28a745; }
.inscricao-status.rejeitado { background: #f8d7da; border: 2px solid #dc3545; }

/* ===== LOGO UPLOAD ===== */
/* Logo upload no formulário */
.logo-row { display: flex; align-items: center; gap: 24px; margin-bottom: 12px; }
.logo-upload-wrapper { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.logo-upload-area { width: 160px; height: 160px; border: 3px dashed var(--cinza-borda); border-radius: 14px; display: flex; align-items: center; justify-content: center; cursor: pointer; overflow: hidden; background: #fff; transition: all 0.3s; box-shadow: 0 2px 8px rgba(0,0,0,0.04); }
.logo-upload-area:hover { border-color: var(--verde); background: var(--verde-bg); box-shadow: 0 4px 16px rgba(14,104,56,0.1); }
.logo-upload-area.has-logo { border: 2px solid var(--cinza-borda); border-radius: 14px; padding: 12px; background: #fff; }
.logo-upload-area.has-logo:hover { border-color: var(--verde); }
.logo-upload-area img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; border-radius: 6px; }
.logo-upload-area .placeholder { text-align: center; color: #bbb; font-size: 0.78rem; line-height: 1.5; }
.logo-upload-area .placeholder span { display: block; font-size: 2.2rem; margin-bottom: 6px; opacity: 0.6; }
.logo-info { display: flex; flex-direction: column; gap: 6px; }
.logo-info .logo-label { font-size: 0.82rem; font-weight: 600; color: var(--cinza-texto); text-transform: uppercase; }
.logo-info .logo-hint { font-size: 0.78rem; color: #aaa; }

/* ===== DASHBOARD ===== */
.dash-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.dash-col { background: #fff; border-radius: 12px; border: 1px solid var(--cinza-borda); overflow: hidden; min-height: 200px; }
.dash-col-header { padding: 14px 18px; font-weight: 700; font-size: 0.88rem; display: flex; align-items: center; gap: 8px; color: #fff; }
.dash-col-count { background: rgba(255,255,255,0.3); padding: 2px 8px; border-radius: 10px; font-size: 0.75rem; margin-left: auto; }
.dash-col-cinza { background: #95a5a6; }
.dash-col-azul { background: var(--azul); }
.dash-col-amarelo { background: var(--amarelo); }
.dash-col-verde { background: var(--verde); }
.dash-col-body { padding: 12px; display: flex; flex-direction: column; gap: 10px; }
.dash-empty { text-align: center; color: #bbb; font-size: 0.82rem; padding: 20px 0; }
.dash-card { background: var(--cinza-bg); border: 2px solid transparent; border-radius: 10px; padding: 14px; cursor: pointer; transition: all 0.2s; }
.dash-card:hover { border-color: var(--verde); box-shadow: 0 2px 12px rgba(14,104,56,0.1); }
.dash-card-top { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.dash-card-logo { width: 40px; height: 40px; object-fit: contain; border-radius: 6px; border: 1px solid var(--cinza-borda); background: #fff; padding: 2px; }
.dash-card-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; font-size: 1.3rem; background: var(--verde-bg); border-radius: 8px; }
.dash-card-nome { font-weight: 700; font-size: 0.9rem; color: #333; }
.dash-card-cnpj { font-size: 0.75rem; color: #999; }
.dash-card-top { cursor: pointer; }
.dash-card-bottom { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.dash-card-gestao { font-size: 0.75rem; color: var(--cinza-texto); font-weight: 600; }
.dash-card-qtd { font-size: 0.75rem; color: #aaa; }
.dash-card-acoes { margin-left: auto; display: flex; gap: 4px; }
.btn-icon { background: none; border: 1px solid var(--cinza-borda); width: 30px; height: 30px; border-radius: 6px; cursor: pointer; font-size: 0.9rem; display: flex; align-items: center; justify-content: center; transition: all 0.2s; color: var(--cinza-texto); }
.btn-icon:hover { background: var(--verde-bg); border-color: var(--verde); color: var(--verde); }
.btn-icon-danger:hover { background: #fde8e8; border-color: var(--vermelho); color: var(--vermelho); }
.badge-cinza { background: #ecf0f1; color: #7f8c8d; }
.badge-azul { background: #dbeafe; color: #1e40af; }
.badge-amarelo { background: #fef3cd; color: #856404; }
.badge-verde { background: #d4edda; color: #155724; }
.badge-vermelho { background: #f8d7da; color: #721c24; }

@media (max-width: 1100px) { .dash-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .dash-grid { grid-template-columns: 1fr; } }

/* ===== FICHAS ===== */
.ficha-inscricao { border: 2px solid var(--cinza-borda); border-radius: 8px; padding: 20px 24px; margin-bottom: 16px; }
.ficha-inscricao h4 { font-size: 0.95rem; color: var(--verde); margin-bottom: 12px; text-align: center; }
.ficha-campo { display: flex; gap: 20px; margin-bottom: 6px; font-size: 0.88rem; }
.ficha-campo span { font-weight: 600; color: var(--cinza-texto); }
.ficha-campo .linha-campo { flex: 1; border-bottom: 1px solid #999; min-height: 18px; }

/* ===== BOTÕES ===== */
.btn { border: none; padding: 10px 22px; border-radius: 7px; font-weight: 600; cursor: pointer; font-size: 0.9rem; transition: background 0.2s, transform 0.1s; display: inline-flex; align-items: center; gap: 6px; }
.btn:active { transform: translateY(1px); }
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-success { background: var(--verde); color: #fff; }
.btn-success:hover:not(:disabled) { background: var(--verde-claro); }
.btn-primary { background: var(--azul); color: #fff; }
.btn-primary:hover:not(:disabled) { background: var(--azul-escuro); }
.btn-danger { background: var(--vermelho); color: #fff; }
.btn-danger:hover:not(:disabled) { background: #c0392b; }
.btn-warning { background: var(--amarelo); color: #fff; }
.btn-warning:hover:not(:disabled) { background: #e67e22; }
.btn-outline { background: transparent; border: 2px solid var(--verde); color: var(--verde); }
.btn-outline:hover { background: var(--verde-bg); }
.btn-sm { padding: 6px 14px; font-size: 0.82rem; }

/* ===== MODAL ===== */
.modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 999; }
.modal { background: #fff; padding: 32px 38px; border-radius: 14px; box-shadow: 0 8px 30px rgba(0,0,0,0.2); text-align: center; max-width: 440px; width: 90%; }
.modal p { font-size: 1rem; margin-bottom: 24px; line-height: 1.6; }
.modal .modal-botoes { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.modal .modal-botoes .btn { width: 100%; padding: 12px; justify-content: center; font-size: 0.95rem; }

/* ===== TOAST ===== */
.toast { position: fixed; bottom: 30px; right: 30px; background: var(--verde); color: #fff; padding: 14px 24px; border-radius: 8px; font-weight: 600; font-size: 0.9rem; box-shadow: 0 4px 20px rgba(0,0,0,0.2); z-index: 1000; animation: slideIn 0.3s ease; }
@keyframes slideIn { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }

/* ===== PRINT ===== */
@media print {
    header, #sidebar, .btn-imprimir, .header-acoes, .fase-bar { display: none !important; }
    .layout { display: block; }
    main { padding: 0; max-width: 100%; }
    .documento { border: none; box-shadow: none; padding: 20px; }
    body { background: #fff; }
}

/* ===== MENU MOBILE ===== */
.menu-toggle { display: none; background: none; border: none; color: #fff; font-size: 1.6rem; cursor: pointer; padding: 4px 8px; line-height: 1; }
.sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.4); z-index: 298; }
.sidebar-overlay.show { display: block; }

/* ===== RESPONSIVO ===== */
@media (max-width: 900px) {
    /* Menu */
    .menu-toggle { display: block; }
    #sidebar { position: fixed; top: 56px; left: -280px; width: 270px; min-width: 270px; height: calc(100vh - 56px); z-index: 299; transition: left 0.25s ease; box-shadow: 4px 0 20px rgba(0,0,0,0.15); }
    #sidebar.open { left: 0; }

    /* Header */
    header { padding: 8px 12px; height: 56px; gap: 8px; }
    header h1 { font-size: 1rem; }
    .header-logo { height: 28px; }
    .header-esquerda { gap: 8px; }
    .header-user { gap: 6px; }
    .header-user .user-nome { display: none; }
    .header-user .user-role { font-size: 0.65rem; padding: 2px 6px; }
    .btn-header { padding: 6px 10px; font-size: 0.75rem; }

    /* Main */
    main { padding: 12px 10px; max-width: 100%; }

    /* Seções */
    .secao { padding: 14px 12px; margin-bottom: 12px; }
    .secao-titulo { font-size: 0.92rem; margin-bottom: 12px; padding-bottom: 8px; }

    /* Forms */
    .form-grid { grid-template-columns: 1fr; gap: 10px; }
    .form-group label { font-size: 0.75rem; }
    .form-group input, .form-group select { padding: 9px 10px; font-size: 0.88rem; }

    /* Logo upload */
    .logo-row { flex-direction: column; align-items: center; gap: 12px; }
    .logo-upload-area { width: 120px; height: 120px; }
    .logo-info { text-align: center; }
    .logo-info .logo-label { font-size: 0.78rem; }
    .logo-info .logo-hint { font-size: 0.72rem; }

    /* CNPJ row */
    .form-group > div[style*="display:flex"] { flex-wrap: wrap; }

    /* Dimensionamento */
    .dim-box { flex-direction: row; gap: 10px; }
    .dim-card { min-width: auto; padding: 12px; flex: 1; }
    .dim-card .dim-num { font-size: 1.5rem; }
    .dim-card h4 { font-size: 0.72rem; }
    .dim-card small { font-size: 0.65rem; }

    /* Calendário */
    .calendario-etapa { flex-direction: column; gap: 4px; padding: 10px 12px; }
    .calendario-etapa .etapa-desc { font-size: 0.82rem; }
    .calendario-etapa .etapa-data { font-size: 0.82rem; }

    /* Tabelas */
    table { font-size: 0.8rem; }
    table th { padding: 7px 6px; font-size: 0.72rem; }
    table td { padding: 6px; }
    table input { padding: 6px 8px; font-size: 0.82rem; }
    .col-num { width: 30px; }

    /* Documentos */
    .documento { padding: 16px 14px; margin-bottom: 12px; }
    .doc-titulo { font-size: 0.95rem; }
    .doc-texto { font-size: 0.82rem; line-height: 1.6; }
    .doc-header img { height: 45px; }
    .doc-header .doc-empresa { font-size: 0.88rem; }
    .doc-header .doc-gestao { font-size: 0.78rem; }
    .doc-local-data { font-size: 0.8rem; }
    .doc-assinatura .linha { width: 180px; }
    .doc-assinatura .nome { font-size: 0.78rem; }
    .doc-tabela th { padding: 6px 8px; font-size: 0.75rem; }
    .doc-tabela td { padding: 5px 8px; font-size: 0.8rem; }
    .btn-imprimir { padding: 6px 12px; font-size: 0.78rem; margin-bottom: 10px; }

    /* Cédulas */
    .cedulas-grid { grid-template-columns: 1fr; gap: 10px; }
    .cedula { padding: 12px; }

    /* Fichas */
    .ficha-inscricao { padding: 12px 10px; }
    .ficha-inscricao h4 { font-size: 0.85rem; }
    .ficha-campo { flex-direction: column; gap: 4px; font-size: 0.82rem; }

    /* Dashboard */
    .dash-card { padding: 10px; }
    .dash-card-top { gap: 10px; }
    .dash-card-logo { width: 34px; height: 34px; }
    .dash-card-icon { width: 34px; height: 34px; font-size: 1.1rem; }
    .dash-card-nome { font-size: 0.85rem; }
    .dash-card-cnpj { font-size: 0.7rem; }
    .dash-card-bottom { font-size: 0.72rem; gap: 6px; }
    .dash-card-acoes { gap: 3px; }
    .btn-icon { width: 26px; height: 26px; font-size: 0.8rem; }

    /* Fases */
    .fase-bar { gap: 3px; }
    .fase-step { font-size: 0.65rem; padding: 8px 3px; }

    /* Resumo */
    .resumo-box { gap: 8px; }
    .resumo-item { padding: 10px; min-width: auto; }
    .resumo-item .num { font-size: 1.3rem; }
    .resumo-item .desc { font-size: 0.7rem; }

    /* Reuniões */
    .reuniao-grid { grid-template-columns: auto 1fr; font-size: 0.78rem; }
    .reuniao-grid .rg-header:nth-child(3), .reuniao-grid .rg-header:nth-child(4),
    .reuniao-grid > div:nth-child(4n+3), .reuniao-grid > div:nth-child(4n) { display: none; }

    /* Assinaturas */
    .lista-assinaturas { grid-template-columns: 1fr; }

    /* Portal funcionário */
    .portal-hero { padding: 18px 14px; margin-bottom: 16px; }
    .portal-hero h2 { font-size: 1.05rem; }
    .portal-hero p { font-size: 0.82rem; }
    .votacao-card { padding: 12px 10px; }
    .votacao-card .cand-nome { font-size: 0.9rem; }
    .votacao-card .cand-funcao { font-size: 0.78rem; }
    .inscricao-status { padding: 16px 12px; }
    .inscricao-status h3 { font-size: 0.95rem; }

    /* Login */
    .login-card { margin: 12px; padding: 24px 18px; }
    .login-card img { height: 100px; }
    .login-card h1 { font-size: 1.2rem; }
    .login-card .subtitle { font-size: 0.8rem; margin-bottom: 18px; }
    .login-form input { padding: 10px 12px; }

    /* Modal */
    .modal { padding: 22px 18px; max-width: 92%; }
    .modal p { font-size: 0.9rem; }
    .modal .modal-botoes .btn { padding: 11px; font-size: 0.88rem; }

    /* Toast */
    .toast { left: 12px; right: 12px; bottom: 16px; text-align: center; font-size: 0.85rem; }
}
