:root {
    --bg: #f4f1ea;
    --surface: #ffffff;
    --text: #1f2933;
    --muted: #5f6b76;
    --primary: #1e3a5f;
    --primary-hover: #152a45;
    --accent: #8b6914;
    --border: #d8d2c8;
    --success: #2f6b3a;
    --error: #9b2c2c;
    --info: #1e4d72;
    --shadow: 0 10px 30px rgba(30, 58, 95, 0.08);
    --radius: 12px;
    --font: "Segoe UI", system-ui, -apple-system, sans-serif;
    --font-serif: Georgia, "Times New Roman", serif;
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--font);
    color: var(--text);
    background: linear-gradient(160deg, #f8f5ef 0%, #ebe4d7 100%);
    line-height: 1.5;
}

a {
    color: var(--primary);
}

.main-content {
    min-height: calc(100vh - 64px);
}

.container {
    width: min(1100px, calc(100% - 2rem));
    margin: 0 auto;
}

.site-header {
    background: var(--surface);
    border-bottom: 1px solid var(--border);
    position: sticky;
    top: 0;
    z-index: 10;
}

.header-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 64px;
}

.brand {
    font-family: var(--font-serif);
    font-size: 1.25rem;
    text-decoration: none;
    color: var(--primary);
    letter-spacing: 0.02em;
}

.header-nav {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.user-name {
    color: var(--muted);
    font-size: 0.95rem;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

.role-badge {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: var(--primary);
    color: #fff;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.auth-page .main-content {
    display: grid;
    place-items: center;
    padding: 2rem 1rem;
}

.auth-wrap {
    width: 100%;
    max-width: 420px;
}

.auth-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 2rem;
}

.auth-card h1,
.page-title {
    margin: 0 0 0.5rem;
    font-family: var(--font-serif);
    font-weight: 500;
    color: var(--primary);
    font-size: 1.75rem;
}

.auth-subtitle,
.page-subtitle {
    margin: 0 0 1.5rem;
    color: var(--muted);
}

.form-group {
    margin-bottom: 1rem;
}

.form-group label {
    display: block;
    margin-bottom: 0.35rem;
    font-size: 0.9rem;
    color: var(--muted);
}

.form-group input,
.form-group select,
.form-group textarea {
    width: 100%;
    padding: 0.7rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    font: inherit;
    background: #fff;
}

.form-group textarea {
    min-height: 120px;
    resize: vertical;
}

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    padding: 0.75rem 1.2rem;
    border: none;
    border-radius: 8px;
    font: inherit;
    cursor: pointer;
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease;
}

.btn-primary {
    background: var(--primary);
    color: #fff;
}

.btn-primary:hover {
    background: var(--primary-hover);
}

.btn-ghost {
    background: transparent;
    color: var(--primary);
    border: 1px solid var(--border);
}

.btn-ghost:hover {
    background: #f7f4ef;
}

.btn-sm {
    padding: 0.45rem 0.85rem;
    font-size: 0.9rem;
}

.btn-block {
    width: 100%;
}

.form-links {
    margin-top: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    font-size: 0.92rem;
}

.alert {
    padding: 0.85rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    font-size: 0.95rem;
}

.alert-success {
    background: #e8f3ea;
    color: var(--success);
}

.alert-error {
    background: #fceaea;
    color: var(--error);
}

.alert-info {
    background: #e8f0f7;
    color: var(--info);
}

.result-page {
    text-align: center;
    padding: 3rem 1rem;
}

.result-page h1 {
    font-family: var(--font-serif);
    color: var(--primary);
}

.result-page p {
    color: var(--muted);
    max-width: 32rem;
    margin: 0.75rem auto 1.5rem;
}

.app-section {
    padding: 2rem 0 3rem;
}

.section-header {
    margin-bottom: 2rem;
}

.section-header h1 {
    margin: 0;
    font-family: var(--font-serif);
    color: var(--primary);
}

.section-header p {
    margin: 0.35rem 0 0;
    color: var(--muted);
}

.cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.25rem;
}

.home-cards .card-link {
    display: block;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 2rem;
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.home-cards .card-link:hover {
    transform: translateY(-2px);
    box-shadow: 0 14px 34px rgba(30, 58, 95, 0.12);
}

.home-cards h2 {
    margin: 0 0 0.5rem;
    font-family: var(--font-serif);
    color: var(--primary);
}

.home-cards p {
    margin: 0;
    color: var(--muted);
}

.orgao-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1.25rem;
    box-shadow: var(--shadow);
}

.orgao-card .sigla {
    display: inline-block;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--accent);
    letter-spacing: 0.04em;
    margin-bottom: 0.35rem;
}

.orgao-card h3 {
    margin: 0 0 0.5rem;
    font-size: 1.05rem;
    color: var(--primary);
}

.orgao-meta {
    font-size: 0.9rem;
    color: var(--muted);
}

.orgao-meta span + span::before {
    content: " · ";
}

.toolbar {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 1.5rem;
}

.form-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1.5rem;
    box-shadow: var(--shadow);
    max-width: 720px;
}

.form-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.25rem;
}

.empty-state {
    text-align: center;
    color: var(--muted);
    padding: 2rem;
    border: 1px dashed var(--border);
    border-radius: var(--radius);
    background: rgba(255, 255, 255, 0.6);
}

/* Cards de órgão clicáveis */
.orgao-card-link {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.orgao-card-link:hover {
    transform: translateY(-2px);
    border-color: var(--primary);
    box-shadow: 0 14px 34px rgba(30, 58, 95, 0.12);
}

.orgao-descricao {
    margin: 0.75rem 0 0;
}

.orgao-card-cta {
    margin-top: auto;
    padding-top: 1rem;
    font-size: 0.9rem;
    color: var(--primary);
    font-weight: 600;
}

/* Assistente */
.breadcrumb {
    display: flex;
    gap: 0.5rem;
    font-size: 0.9rem;
    color: var(--muted);
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.breadcrumb a {
    text-decoration: none;
}

.sigla-lg {
    display: inline-block;
    font-weight: 700;
    color: var(--accent);
    letter-spacing: 0.06em;
    font-size: 1rem;
}

.tabs {
    display: flex;
    gap: 0.25rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: 1.5rem;
    overflow-x: auto;
    overflow-y: hidden;
}

.tab {
    padding: 0.75rem 1.1rem;
    text-decoration: none;
    color: var(--muted);
    border-bottom: 3px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.tab:hover {
    color: var(--primary);
}

.tab.active {
    color: var(--primary);
    border-bottom-color: var(--primary);
    font-weight: 600;
}

.tab-count {
    background: #e8e2d6;
    color: var(--muted);
    border-radius: 999px;
    font-size: 0.75rem;
    padding: 0.05rem 0.5rem;
    font-weight: 600;
}

.tab-intro {
    color: var(--muted);
    max-width: 760px;
    margin: 0 0 1.25rem;
}

.collapsible {
    margin-bottom: 1.5rem;
    max-width: none;
}

.collapsible summary {
    cursor: pointer;
    font-weight: 600;
    color: var(--primary);
}

.collapsible[open] summary {
    margin-bottom: 1rem;
}

.contexto-grupo {
    margin-bottom: 2rem;
}

.contexto-grupo h2 {
    font-family: var(--font-serif);
    font-weight: 500;
    color: var(--primary);
    font-size: 1.25rem;
    margin: 0 0 0.75rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--border);
}

.contexto-item {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    margin-bottom: 0.75rem;
}

.contexto-item-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.contexto-item-header h3 {
    margin: 0 0 0.5rem;
    font-size: 1.05rem;
    color: var(--text);
}

.contexto-item-actions {
    display: flex;
    gap: 0.4rem;
    flex-shrink: 0;
}

.contexto-item-actions form {
    margin: 0;
}

.btn-danger {
    color: var(--error);
}

.contexto-conteudo {
    color: var(--text);
    font-size: 0.95rem;
    max-height: 18rem;
    overflow-y: auto;
}

.contexto-meta {
    margin-top: 0.6rem;
    font-size: 0.8rem;
    color: var(--muted);
}

.decisoes-lista {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.decisao-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease;
}

.decisao-card:hover {
    border-color: var(--primary);
}

.decisao-card h3 {
    margin: 0 0 0.3rem;
    color: var(--primary);
    font-size: 1.05rem;
}

.fase-badge {
    background: #e8f0f7;
    color: var(--info);
    border-radius: 999px;
    padding: 0.3rem 0.75rem;
    font-size: 0.8rem;
    font-weight: 600;
    white-space: nowrap;
}

.fase-badge.muted {
    background: #eee9df;
    color: var(--muted);
}

.concluidas {
    margin-top: 2rem;
}

.concluidas summary {
    cursor: pointer;
    color: var(--muted);
    margin-bottom: 0.75rem;
}

/* Conversa da decisão */
.decisao-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.decisao-header h1 {
    margin: 0 0 0.25rem;
    font-family: var(--font-serif);
    font-weight: 500;
    color: var(--primary);
    font-size: 1.6rem;
}

.decisao-header .orgao-meta {
    margin: 0;
}

.fases-trilha {
    list-style: none;
    padding: 0;
    margin: 0 0 1.25rem;
    display: flex;
    gap: 0.5rem;
    overflow-x: auto;
}

.fases-trilha li {
    flex: 1;
    min-width: 120px;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.7rem;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px solid var(--border);
    font-size: 0.82rem;
    color: var(--muted);
}

.fases-trilha .fase-num {
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    display: inline-grid;
    place-items: center;
    background: #e8e2d6;
    font-weight: 700;
    font-size: 0.75rem;
    flex-shrink: 0;
}

.fases-trilha li.feita {
    color: var(--success);
}

.fases-trilha li.feita .fase-num {
    background: #d7eadb;
}

.fases-trilha li.atual {
    background: var(--surface);
    border-color: var(--primary);
    color: var(--primary);
    font-weight: 600;
}

.fases-trilha li.atual .fase-num {
    background: var(--primary);
    color: #fff;
}

.chat {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    display: flex;
    flex-direction: column;
}

.chat-mensagens {
    padding: 1.25rem;
    height: min(62vh, 640px);
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.chat-msg {
    max-width: 82%;
    padding: 0.8rem 1rem;
    border-radius: 12px;
    font-size: 0.97rem;
}

.chat-gestor {
    align-self: flex-end;
    background: var(--primary);
    color: #fff;
    border-bottom-right-radius: 4px;
}

.chat-assistente {
    align-self: flex-start;
    background: #f5f1e9;
    border: 1px solid var(--border);
    border-bottom-left-radius: 4px;
}

.chat-autor {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    opacity: 0.7;
    margin-bottom: 0.3rem;
    font-weight: 600;
}

.chat-texto p {
    margin: 0 0 0.6rem;
}

.chat-texto p:last-child {
    margin-bottom: 0;
}

.chat-texto ul,
.chat-texto ol {
    margin: 0.3rem 0 0.6rem;
    padding-left: 1.3rem;
}

.chat-texto h3,
.chat-texto h4 {
    margin: 0.6rem 0 0.4rem;
    font-size: 1rem;
    color: var(--primary);
}

.chat-texto code {
    background: rgba(0, 0, 0, 0.06);
    padding: 0.05rem 0.3rem;
    border-radius: 4px;
}

.chat-evento {
    align-self: center;
    font-size: 0.82rem;
    color: var(--muted);
    background: #f0ebe1;
    border-radius: 999px;
    padding: 0.3rem 0.9rem;
    text-align: center;
}

.chat-erro {
    align-self: center;
    color: var(--error);
    font-size: 0.9rem;
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.chat-digitando .chat-texto {
    display: flex;
    gap: 0.3rem;
    padding: 0.3rem 0;
}

.chat-digitando .chat-texto span {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--muted);
    animation: digitando 1.2s infinite ease-in-out;
}

.chat-digitando .chat-texto span:nth-child(2) {
    animation-delay: 0.2s;
}

.chat-digitando .chat-texto span:nth-child(3) {
    animation-delay: 0.4s;
}

@keyframes digitando {
    0%, 80%, 100% { opacity: 0.25; transform: translateY(0); }
    40% { opacity: 1; transform: translateY(-3px); }
}

.chat-form {
    display: flex;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--border);
    align-items: flex-end;
}

.chat-form textarea {
    flex: 1;
    padding: 0.7rem 0.85rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    font: inherit;
    resize: vertical;
    min-height: 3rem;
}

.chat-fechado {
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--border);
    color: var(--muted);
    text-align: center;
}

.fase-controle {
    margin-top: 1.25rem;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
}

.fase-controle label {
    display: block;
    font-size: 0.9rem;
    color: var(--muted);
    margin-bottom: 0.4rem;
}

.fase-controle-row {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.fase-controle select {
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    font: inherit;
    background: #fff;
}

.fase-objetivo {
    margin: 0.75rem 0 0;
    font-size: 0.9rem;
    color: var(--muted);
}

/* Contexto institucional */
.ctx-toolbar {
    display: flex;
    justify-content: flex-end;
    margin: 0 0 1rem;
}

.ctx-secao-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 1rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: 0.85rem;
    padding-bottom: 0.4rem;
}

.ctx-secao .ctx-secao-header h2 {
    border-bottom: none;
    margin: 0;
    padding: 0;
}

.ctx-secao-header p {
    margin: 0.15rem 0 0;
    color: var(--muted);
    font-size: 0.88rem;
}

.ctx-vazio {
    color: var(--muted);
    font-size: 0.92rem;
    padding: 0.85rem 1rem;
    border: 1px dashed var(--border);
    border-radius: var(--radius);
    background: rgba(255, 255, 255, 0.5);
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1rem;
}

.ctx-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    margin-bottom: 0.75rem;
}

.ctx-card:target {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(139, 105, 20, 0.15);
}

.ctx-inativo {
    opacity: 0.7;
    background: #faf8f4;
}

.ctx-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
}

.ctx-card-titulo h3 {
    margin: 0.1rem 0 0.35rem;
    font-size: 1.05rem;
    color: var(--text);
}

.ctx-rotulo {
    display: block;
    font-size: 0.75rem;
    color: var(--accent);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.ctx-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-bottom: 0.5rem;
}

.ctx-badge {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    white-space: nowrap;
}

.badge-validado { background: #e3f1e6; color: var(--success); }
.badge-pendente { background: #fbf1d9; color: #7a5a08; }
.badge-rascunho { background: #eee9df; color: var(--muted); }
.badge-arquivado { background: #e9e6e0; color: #6b6458; }
.badge-excluido { background: #fceaea; color: var(--error); }
.badge-oficial { background: #e3edf7; color: var(--info); }
.badge-ia { background: #efe9f7; color: #5b3f8c; }

.ctx-card-toolbar {
    display: flex;
    align-items: flex-start;
    gap: 0.25rem;
    flex-shrink: 0;
}

.ctx-ordem {
    display: flex;
    gap: 0.25rem;
    flex-shrink: 0;
}

.ctx-ordem form,
.ctx-acoes form,
.ctx-menu-form {
    margin: 0;
}

.ctx-menu {
    position: relative;
}

.ctx-menu-btn {
    padding: 0.2rem 0.45rem;
    line-height: 1;
    min-width: 2rem;
}

.ctx-menu-icon {
    display: block;
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--muted);
}

.ctx-menu-btn:hover .ctx-menu-icon,
.ctx-menu-btn[aria-expanded="true"] .ctx-menu-icon {
    color: var(--primary);
}

.ctx-menu-panel {
    position: absolute;
    top: calc(100% + 0.2rem);
    right: 0;
    z-index: 30;
    min-width: 11.5rem;
    padding: 0.35rem 0;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    box-shadow: 0 8px 24px rgba(28, 42, 68, 0.12);
}

.ctx-menu-panel[hidden] {
    display: none;
}

.ctx-menu-item,
.ctx-menu-item-btn {
    display: block;
    width: 100%;
    padding: 0.55rem 1rem;
    text-align: left;
    font-size: 0.9rem;
    font-family: inherit;
    color: var(--text);
    text-decoration: none;
    background: none;
    border: none;
    cursor: pointer;
    white-space: nowrap;
}

.ctx-menu-item:hover,
.ctx-menu-item-btn:hover {
    background: #f5f1ea;
    color: var(--primary);
}

.ctx-menu-validar {
    color: var(--success);
}

.ctx-menu-validar:hover {
    color: var(--success);
    background: #eef6f0;
}

.ctx-menu-danger {
    color: var(--error);
}

.ctx-menu-danger:hover {
    color: var(--error);
    background: #fdf3f3;
}

.btn-icon {
    padding: 0.25rem 0.55rem;
    line-height: 1;
}

.ctx-conteudo {
    font-size: 0.95rem;
}

details.ctx-conteudo summary {
    cursor: pointer;
    list-style: none;
}

details.ctx-conteudo summary::after {
    content: " ver tudo";
    color: var(--primary);
    font-size: 0.85rem;
    font-weight: 600;
}

details.ctx-conteudo[open] summary {
    display: none;
}

.ctx-conteudo-completo {
    max-height: 24rem;
    overflow-y: auto;
}

.ctx-campo,
.ctx-extras {
    font-size: 0.88rem;
    color: var(--text);
    margin-top: 0.4rem;
}

.ctx-extras {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
    color: var(--muted);
}

.ctx-nv,
.ctx-extras em {
    color: #7a5a08;
    font-style: normal;
    font-weight: 600;
}

.ctx-interpretacao,
.ctx-fato {
    margin-top: 0.6rem;
    font-size: 0.9rem;
    border-left: 3px solid var(--border);
    padding: 0.4rem 0.75rem;
    background: #faf8f4;
    border-radius: 0 8px 8px 0;
}

.ctx-interpretacao-ia {
    border-left-color: #b9a6d8;
    background: #f7f4fb;
    font-style: italic;
}

.ctx-fato {
    border-left-color: var(--primary);
    background: #f5f8fb;
}

.ctx-interpretacao-label {
    display: block;
    font-style: normal;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--muted);
    margin-bottom: 0.15rem;
}

.ctx-meta {
    margin-top: 0.6rem;
    font-size: 0.8rem;
    color: var(--muted);
}

.ctx-meta span + span::before {
    content: " · ";
}

.ctx-acoes {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.75rem;
}

.btn-validar {
    color: var(--success);
    border-color: #b9d8bf;
}

.ctx-filhos {
    margin-top: 0.85rem;
    padding-left: 1rem;
    border-left: 2px solid #ece6db;
}

.ctx-filhos .ctx-card {
    background: #fcfbf8;
    padding: 0.75rem 1rem;
}

.ctx-add-filho {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

/* Adicionar */
.ctx-label {
    display: block;
    margin-bottom: 0.5rem;
    font-size: 0.9rem;
    color: var(--muted);
}

.ctx-metodos {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 0.75rem;
}

.ctx-metodo {
    text-align: left;
    background: #fff;
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 0.85rem 1rem;
    cursor: pointer;
    font: inherit;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.ctx-metodo:hover {
    border-color: var(--primary);
    background: #f7f9fc;
}

.ctx-metodo strong {
    color: var(--primary);
}

.ctx-metodo span {
    color: var(--muted);
    font-size: 0.85rem;
}

.ctx-metodo-destaque {
    border-color: var(--accent);
    background: #fdf9ef;
}

.ctx-metodo[hidden] {
    display: none;
}

.ctx-dica {
    margin: 1rem 0 0;
}

/* Formulários */
.ctx-form {
    max-width: 820px;
}

.form-help {
    display: block;
    margin-top: 0.3rem;
    color: var(--muted);
    font-size: 0.82rem;
}

.obrigatorio {
    color: var(--error);
}

.ctx-opcionais {
    margin: 0.5rem 0 0;
    border-top: 1px solid var(--border);
    padding-top: 0.75rem;
}

.ctx-opcionais summary,
.ctx-editar-sugestao summary {
    cursor: pointer;
    color: var(--primary);
    font-weight: 600;
    font-size: 0.92rem;
    margin-bottom: 0.75rem;
}

.ctx-check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.92rem;
    margin: 0.3rem 0;
    color: var(--text);
}

.ctx-check-destaque {
    background: #fdf9ef;
    border: 1px solid #ecdcb4;
    border-radius: 8px;
    padding: 0.6rem 0.8rem;
    margin: 1rem 0;
}

.ctx-seletor {
    display: flex;
    gap: 0.4rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.ctx-campos-linha {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 0.75rem;
}

/* Histórico */
.ctx-h2 {
    font-family: var(--font-serif);
    font-weight: 500;
    color: var(--primary);
    font-size: 1.2rem;
    margin: 1.75rem 0 0.75rem;
}

.ctx-h3 {
    font-size: 1rem;
    color: var(--primary);
    margin: 0 0 0.75rem;
}

.ctx-hist-resumo,
.ctx-fonte-resumo {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.ctx-hist-resumo div,
.ctx-fonte-resumo div {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 0.6rem 0.85rem;
    font-size: 0.92rem;
    overflow-wrap: anywhere;
}

.ctx-hist-resumo span,
.ctx-fonte-resumo span {
    display: block;
    font-size: 0.75rem;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.ctx-alerta-acoes {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.ctx-alerta-acoes .ctx-acoes {
    margin: 0;
}

.ctx-hist-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr);
    gap: 1.5rem;
}

.ctx-timeline {
    list-style: none;
    margin: 0;
    padding: 0 0 0 1rem;
    border-left: 2px solid var(--border);
}

.ctx-timeline li {
    position: relative;
    padding: 0 0 1rem 0.5rem;
    font-size: 0.92rem;
}

.ctx-timeline li::before {
    content: "";
    position: absolute;
    left: -1.42rem;
    top: 0.3rem;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    background: var(--border);
}

.ctx-timeline li.ctx-ev-validacao::before { background: var(--success); }
.ctx-timeline li.ctx-ev-exclusao::before,
.ctx-timeline li.ctx-ev-rejeicao::before { background: var(--error); }
.ctx-timeline li.ctx-ev-sugestao_ia::before { background: #8d74b8; }

.ctx-timeline time {
    display: block;
    font-size: 0.78rem;
    color: var(--muted);
}

.ctx-ev-detalhes summary {
    cursor: pointer;
    font-size: 0.84rem;
    color: var(--primary);
    margin-top: 0.2rem;
}

.ctx-ev-extra {
    display: block;
    color: var(--muted);
    margin-top: 0.15rem;
}

.ctx-versao {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 0.7rem 1rem;
    margin-bottom: 0.6rem;
}

.ctx-versao summary {
    cursor: pointer;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
}

.ctx-prov {
    display: grid;
    grid-template-columns: 11rem minmax(0, 1fr);
    gap: 0.35rem 0.85rem;
    margin: 0.85rem 0 0;
    font-size: 0.9rem;
}

.ctx-prov dt {
    color: var(--muted);
}

.ctx-prov dd {
    margin: 0;
    overflow-wrap: anywhere;
}

.ctx-prov-texto {
    max-height: 14rem;
    overflow-y: auto;
}

.ctx-prov-oficial {
    margin: 0 0 1.25rem;
}

.ctx-hash {
    color: var(--muted);
    font-family: Consolas, monospace;
    font-size: 0.75rem;
}

.ctx-json {
    white-space: pre-wrap;
    font-size: 0.78rem;
    background: #f6f4ef;
    padding: 0.6rem;
    border-radius: 6px;
    max-height: 18rem;
    overflow: auto;
}

.ctx-comparar-form {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.85rem;
    flex-wrap: wrap;
}

.ctx-comparar-form select {
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    font: inherit;
}

.ctx-comparacao {
    max-width: none;
}

.ctx-diff-campo {
    margin: 0.6rem 0;
}

.ctx-diff-label {
    display: block;
    font-size: 0.78rem;
    color: var(--muted);
    font-weight: 600;
}

.ctx-diff {
    font-size: 0.9rem;
    background: #faf8f4;
    padding: 0.45rem 0.65rem;
    border-radius: 6px;
    max-height: 18rem;
    overflow-y: auto;
}

.ctx-diff del {
    background: #fbdede;
    color: #8a2020;
}

.ctx-diff ins {
    background: #d8efdc;
    color: #1f5a2a;
    text-decoration: none;
}

/* Revisão de sugestões */
.ctx-processando {
    display: flex;
    gap: 1rem;
    align-items: center;
    max-width: none;
}

.ctx-spinner {
    width: 2rem;
    height: 2rem;
    border: 3px solid var(--border);
    border-top-color: var(--primary);
    border-radius: 50%;
    animation: ctx-girar 0.9s linear infinite;
    flex-shrink: 0;
}

@keyframes ctx-girar {
    to { transform: rotate(360deg); }
}

.ctx-progresso {
    height: 6px;
    background: #ece6db;
    border-radius: 999px;
    margin: 0.5rem 0;
    overflow: hidden;
    width: min(420px, 70vw);
}

.ctx-progresso div {
    height: 100%;
    background: var(--primary);
    transition: width 0.4s ease;
}

.ctx-oficial {
    border-radius: var(--radius);
    padding: 0.85rem 1.1rem;
    margin-bottom: 1rem;
    font-size: 0.92rem;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.ctx-oficial-ok {
    background: #e6f0f8;
    border: 1px solid #bcd3e8;
    color: var(--info);
}

.ctx-oficial-pendente {
    background: #fbf3df;
    border: 1px solid #ecd9a6;
    color: #6d5208;
}

.ctx-revisao-barra {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1rem;
    color: var(--muted);
    font-size: 0.9rem;
}

.ctx-sugestao {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 0.9rem 1.15rem;
    margin-bottom: 0.7rem;
}

.ctx-sugestao.ctx-nivel-1 {
    margin-left: 1.5rem;
    background: #fcfbf8;
}

.ctx-sugestao:has(input[type=checkbox]:checked) {
    border-color: var(--primary);
    box-shadow: 0 0 0 2px rgba(30, 58, 95, 0.08);
}

.ctx-aplicada {
    opacity: 0.75;
}

.ctx-sugestao-header {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin-bottom: 0.35rem;
}

.ctx-sugestao-header input[type=checkbox] {
    width: 1.15rem;
    height: 1.15rem;
    margin-top: 0.2rem;
    flex-shrink: 0;
}

.ctx-sugestao-header label {
    cursor: pointer;
}

.ctx-pai {
    margin: 0.75rem 0 0.25rem;
    max-width: 520px;
}

.ctx-editar-sugestao {
    margin-top: 0.6rem;
}

.ctx-revisao-acoes {
    position: sticky;
    bottom: 0;
    background: linear-gradient(180deg, rgba(244, 241, 234, 0) 0%, #efe9df 35%);
    padding: 1rem 0;
    flex-wrap: wrap;
}

.ctx-recentes {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    max-width: 820px;
}

.ctx-recentes a {
    display: grid;
    grid-template-columns: 9rem 12rem minmax(0, 1fr) auto;
    gap: 0.75rem;
    align-items: center;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 0.5rem 0.85rem;
    text-decoration: none;
    color: inherit;
    font-size: 0.88rem;
}

.ctx-recentes a:hover {
    border-color: var(--primary);
}

/* Preenchimento automático */
.ctx-auto-cta {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
    padding: 1rem 1.25rem;
    background: linear-gradient(135deg, #1e3a5f 0%, #2c5282 100%);
    color: #fff;
    border-radius: 12px;
    text-decoration: none;
    box-shadow: 0 6px 18px rgba(30, 58, 95, 0.18);
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.ctx-auto-cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 24px rgba(30, 58, 95, 0.24);
    color: #fff;
}

.ctx-auto-cta-icone {
    font-size: 1.6rem;
    color: #f3d98b;
    flex-shrink: 0;
}

.ctx-auto-cta-texto {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    flex: 1;
}

.ctx-auto-cta-texto strong {
    font-size: 1.05rem;
}

.ctx-auto-cta-texto span {
    font-size: 0.88rem;
    opacity: 0.9;
}

.ctx-auto-cta-seta {
    font-size: 1.4rem;
    flex-shrink: 0;
}

.ctx-auto-passos {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.ctx-auto-passos > div {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.ctx-auto-passos span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: var(--primary);
    color: #fff;
    font-weight: 700;
    font-size: 0.85rem;
    margin-bottom: 0.2rem;
}

.ctx-auto-passos small {
    color: var(--muted);
    font-size: 0.82rem;
}

.ctx-ou {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.25rem 0 1rem;
    color: var(--muted);
    font-size: 0.85rem;
}

.ctx-ou::before,
.ctx-ou::after {
    content: "";
    flex: 1;
    border-top: 1px solid var(--border);
}

.ctx-prompt-sugerido textarea {
    width: 100%;
    font-size: 0.88rem;
    margin-bottom: 0.6rem;
    background: #faf8f4;
}

.ctx-auto-resumo {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
    background: var(--surface);
    border: 1px solid var(--border);
    border-left: 4px solid var(--success);
    border-radius: 10px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

.ctx-auto-resumo > div {
    display: flex;
    align-items: baseline;
    gap: 0.45rem;
}

.ctx-auto-resumo strong {
    font-size: 1.6rem;
    color: var(--primary);
}

.ctx-auto-resumo span {
    color: var(--muted);
    font-size: 0.9rem;
}

.ctx-auto-resumo .btn {
    margin-left: auto;
}

.ctx-auto-resumo .ctx-auto-resumo-acoes {
    margin-left: auto;
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.ctx-auto-resumo .ctx-auto-resumo-acoes .btn {
    margin-left: 0;
}

/* Alterações propostas (versão pendente sobre versão validada) */
.ctx-proposta {
    margin: 0.85rem 0 0.5rem;
    border: 1px solid #e3c770;
    border-left: 4px solid var(--accent);
    background: #fffbef;
    border-radius: 10px;
    padding: 0.85rem 1rem;
}

.ctx-proposta-header {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem;
}

.ctx-proposta-header strong {
    color: var(--accent);
    text-transform: uppercase;
    font-size: 0.82rem;
    letter-spacing: 0.04em;
}

.ctx-proposta-header span {
    color: var(--muted);
    font-size: 0.82rem;
}

.ctx-proposta-legenda {
    margin: 0.3rem 0 0.6rem;
    color: var(--muted);
    font-size: 0.82rem;
}

.ctx-diff-campo {
    margin-bottom: 0.6rem;
}

.ctx-diff-rotulo {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-bottom: 0.2rem;
}

.ctx-diff {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    font-size: 0.92rem;
    line-height: 1.6;
    max-height: 22rem;
    overflow-y: auto;
    white-space: normal;
    word-wrap: break-word;
}

.ctx-diff del,
.ctx-proposta-legenda del,
.alert del {
    background: #fde2e2;
    color: #8f1d1d;
    text-decoration: line-through;
    border-radius: 3px;
    padding: 0 2px;
}

.ctx-diff ins,
.ctx-proposta-legenda ins,
.alert ins {
    background: #d9f2dd;
    color: #1d5a2a;
    text-decoration: none;
    border-radius: 3px;
    padding: 0 2px;
}

.ctx-proposta-acoes {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.ctx-proposta-acoes form {
    margin: 0;
}

.ctx-btn-rejeitar {
    color: var(--error);
    border-color: #e4b4b4;
}

.ctx-btn-rejeitar:hover {
    background: #fdf0f0;
}

.ctx-proposta-card {
    margin-bottom: 1rem;
}

.ctx-proposta-card .ctx-meta a {
    color: var(--primary);
}

.ctx-propostas-aviso {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    margin-bottom: 1rem;
    padding: 0.85rem 1.1rem;
    background: #fffbef;
    border: 1px solid #e3c770;
    border-left: 4px solid var(--accent);
    border-radius: 10px;
    color: var(--text);
    text-decoration: none;
}

.ctx-propostas-aviso:hover {
    background: #fff5d6;
}

.ctx-propostas-aviso strong {
    font-size: 1.5rem;
    color: var(--accent);
}

.ctx-propostas-aviso span:not(.ctx-auto-cta-seta) {
    flex: 1;
}

a.ctx-badge {
    text-decoration: none;
}

.ctx-ignorado {
    margin: 0.4rem 0;
    font-size: 0.85rem;
    color: #7a5a08;
    background: #fbf1d9;
    border-radius: 6px;
    padding: 0.35rem 0.6rem;
}

.ctx-texto-material {
    margin-top: 0.4rem;
    font-size: 0.85rem;
    color: var(--muted);
}

.ctx-texto-material summary {
    cursor: pointer;
}

@media (max-width: 720px) {
    .ctx-auto-passos {
        grid-template-columns: 1fr;
    }

    .ctx-auto-resumo .btn {
        margin-left: 0;
    }
}

/* Legislação */
.ctx-busca-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1rem;
}

.ctx-resultados {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.ctx-resultado {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 0.85rem 1.1rem;
}

.ctx-resultado p {
    margin: 0.3rem 0 0.4rem;
    color: var(--muted);
    font-size: 0.9rem;
}

.ctx-provedores {
    margin-top: 2rem;
    font-size: 0.9rem;
    color: var(--muted);
}

.ctx-provedores ul {
    padding-left: 1.2rem;
}

@media (max-width: 860px) {
    .ctx-hist-grid {
        grid-template-columns: 1fr;
    }

    .ctx-recentes a {
        grid-template-columns: 1fr;
        gap: 0.15rem;
    }
}

@media (max-width: 640px) {
    .auth-card,
    .form-card {
        padding: 1.25rem;
    }

    .ctx-prov {
        grid-template-columns: 1fr;
    }

    .ctx-campos-linha {
        grid-template-columns: 1fr;
    }

    .ctx-card-header,
    .ctx-secao-header,
    .ctx-resultado {
        flex-direction: column;
        align-items: flex-start;
    }

    .ctx-card-toolbar {
        align-self: flex-end;
    }

    .chat-msg {
        max-width: 94%;
    }

    .decisao-header,
    .contexto-item-header {
        flex-direction: column;
    }

    .decisao-card {
        flex-direction: column;
        align-items: flex-start;
    }

    .form-actions {
        flex-direction: column;
    }

    .toolbar {
        justify-content: stretch;
    }

    .toolbar .btn {
        width: 100%;
    }
}
