/* ---------------------------------------------------------------- Kanban board (compartilhado: board de projeto + board geral) */
/* As raias ficam sempre lado a lado (nunca quebram linha); a página inteira vira uma coluna
   flex pra esse trecho esticar até o fim da viewport — o scroll horizontal fica ali, colado embaixo. */
.board, .pboard { display: flex; gap: 16px; align-items: stretch; overflow-x: auto; overflow-y: hidden; padding: 2px 2px 16px; }
.board { flex: 1; min-height: 360px; }

/* Container do board geral: um único board, estica até o fim da viewport. */
#wd-unified-board { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
#wd-unified-board > .pboard { flex: 1; min-height: 360px; }

.board-column, .pboard-column {
    background: var(--color-surface-alt); border: 1px solid var(--color-border); border-radius: var(--radius-lg);
    width: 300px; flex-shrink: 0; padding: 4px; display: flex; flex-direction: column; gap: 2px;
    box-shadow: var(--shadow-sm); max-height: 100%;
}
.pboard-column[hidden] { display: none; }
.board-column-add { background: transparent; border: 1.5px dashed var(--color-border-strong); box-shadow: none; padding: 12px; align-self: flex-start; max-height: none; }
.board-column-add form { display: flex; flex-direction: column; gap: 8px; }
.board-column-add input {
    font: inherit; padding: 8px 10px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm);
    background: var(--color-surface); color: var(--color-text);
}
.board-column-add input:focus { outline: none; border-color: var(--color-blue); box-shadow: 0 0 0 3px rgba(31, 111, 235, .14); }

.board-column-header, .pboard-column-header {
    display: flex; justify-content: space-between; align-items: center; font-weight: 700; font-size: 12.5px;
    padding: 11px 10px 10px; color: var(--color-text); flex-shrink: 0;
}
.pboard-column-title { display: flex; align-items: center; gap: 8px; }
.board-column-header .count, .pboard-column-header .count {
    color: var(--color-text-muted); font-weight: 700; background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: 999px; padding: 1px 8px; font-size: 11px; font-variant-numeric: tabular-nums;
}
.board-column-cards, .pboard-column-cards {
    display: flex; flex-direction: column; gap: 8px; min-height: 40px; padding: 2px 6px 8px;
    flex: 1; overflow-y: auto;
}
.board-column-cards.drag-over, .pboard-column-cards.drag-over {
    background: rgba(124, 78, 234, .08); outline: 1.5px dashed rgba(124, 78, 234, .45); outline-offset: -4px; border-radius: 10px;
}
.pboard-empty { font-size: 12px; color: var(--color-text-dim); text-align: center; padding: 14px 4px; border: 1.5px dashed var(--color-border); border-radius: 10px; }

/* Scrollbar fina e discreta — horizontal do board (colada no fim da página) e vertical de cada coluna */
.board, .pboard, .board-column-cards, .pboard-column-cards {
    scrollbar-width: thin; scrollbar-color: var(--color-border-strong) transparent;
}
.board::-webkit-scrollbar, .pboard::-webkit-scrollbar { height: 10px; }
.board-column-cards::-webkit-scrollbar, .pboard-column-cards::-webkit-scrollbar { width: 7px; }
.board::-webkit-scrollbar-track, .pboard::-webkit-scrollbar-track,
.board-column-cards::-webkit-scrollbar-track, .pboard-column-cards::-webkit-scrollbar-track { background: transparent; }
.board::-webkit-scrollbar-thumb, .pboard::-webkit-scrollbar-thumb {
    background-color: var(--color-border-strong); border-radius: 99px; border: 3px solid var(--color-bg); background-clip: padding-box;
    transition: background-color .15s ease;
}
.board-column-cards::-webkit-scrollbar-thumb, .pboard-column-cards::-webkit-scrollbar-thumb {
    background-color: var(--color-border-strong); border-radius: 99px; border: 2px solid var(--color-surface-alt); background-clip: padding-box;
    transition: background-color .15s ease;
}
.board::-webkit-scrollbar-thumb:hover, .pboard::-webkit-scrollbar-thumb:hover,
.board-column-cards::-webkit-scrollbar-thumb:hover, .pboard-column-cards::-webkit-scrollbar-thumb:hover { background-color: var(--color-violet); }

/* Coluna "Concluído": cartões recolhem visualmente, sem sumir */
.board-column-cards.is-done .kanban-card, .pboard-column-cards.is-done .kanban-card { opacity: .68; }
.board-column-cards.is-done .kanban-card:hover, .pboard-column-cards.is-done .kanban-card:hover { opacity: 1; }

.kanban-card {
    display: block; position: relative; background: var(--color-surface); border-radius: 10px; padding: 11px 13px 12px;
    border: 1px solid var(--color-border); border-left: 3px solid var(--pri, var(--color-border-strong));
    box-shadow: 0 1px 2px rgba(20, 22, 40, .05); color: inherit; cursor: grab;
    transition: box-shadow .18s var(--ease-out), border-color .18s var(--ease-out), transform .15s var(--ease-out);
}
.kanban-card:hover { box-shadow: var(--shadow-md); border-color: #cdd6f5; text-decoration: none; transform: translateY(-2px); }
.kanban-card:hover { border-left-color: var(--pri, var(--color-border-strong)); }
.kanban-card:active { cursor: grabbing; }
.kanban-card.dragging { opacity: .4; }

/* Linha 1: número + título + prazo */
.kcard-top { display: flex; align-items: baseline; gap: 8px; margin-bottom: 7px; }
.kcard-num { font-size: 11px; font-weight: 600; color: var(--color-text-dim); font-variant-numeric: tabular-nums; flex-shrink: 0; }
.kcard-title { font-size: 13px; font-weight: 600; color: var(--color-text); flex: 1; min-width: 0; }
.kcard-due { font-size: 10.5px; font-weight: 700; flex-shrink: 0; }

/* Linha 2: projeto */
.kcard-project { margin-bottom: 8px; }

/* Linha 3: responsável + anel de progresso */
.kcard-assignee-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.kcard-assignee { display: flex; align-items: center; gap: 6px; min-width: 0; }
.kcard-assignee-name { font-size: 12px; font-weight: 500; color: var(--color-text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kcard-assignee-none { font-size: 11.5px; color: var(--color-text-dim); }
.kcard-avatar-stack { flex-shrink: 0; }
.kcard-avatar-stack .avatar { margin-left: -7px; border-width: 2px; }
.kcard-avatar-stack .avatar:first-child { margin-left: 0; }
.kcard-compact-line .kcard-avatar-stack .avatar { margin-left: -5px; border-width: 1px; }
.kcard-ring-frac { display: flex; align-items: center; gap: 5px; flex-shrink: 0; }
.kcard-frac { font-size: 10.5px; font-weight: 600; color: var(--color-text-dim); font-variant-numeric: tabular-nums; }

/* Linha 4: tags */
.kanban-card-tags:last-child { margin-bottom: 0; }

.avatar {
    display: inline-flex; align-items: center; justify-content: center; width: 23px; height: 23px; border-radius: 50%;
    background: var(--gradient-brand); color: #fff; font-size: 11px; font-weight: 700; border: 2px solid var(--color-surface); box-shadow: 0 0 0 1px var(--color-border);
}

/* Anel de progresso (SVG) -- substitui a barra linear no card */
.progress-ring-wrap { position: relative; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.progress-ring-wrap svg { transform: rotate(-90deg); }
.progress-ring-track { fill: none; stroke: var(--color-surface-alt); }
.progress-ring-fill { fill: none; stroke: url(#wd-ring-gradient); stroke-linecap: round; transition: stroke-dashoffset .7s var(--ease-out); }
.progress-ring-value { position: absolute; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--color-text); font-size: 9.5px; }
@media (prefers-reduced-motion: reduce) { .progress-ring-fill { transition: none; } }

/* Densidade compacta (board geral, via Config) -- layout de 2 linhas, não só "normal com padding menor" */
#wd-unified-board.is-compact .kanban-card { padding: 7px 10px 8px; }
#wd-unified-board.is-compact .kcard-top { margin-bottom: 4px; }
#wd-unified-board.is-compact .kcard-title { font-size: 12.5px; }
#wd-unified-board.is-compact .kcard-project,
#wd-unified-board.is-compact .kcard-assignee-row { display: none; }
#wd-unified-board.is-compact .kcard-compact-line { display: flex !important; align-items: center; gap: 6px; margin-bottom: 0; }
#wd-unified-board.is-compact .kanban-card-tags { margin-bottom: 0; }
.kcard-compact-line { display: none; }
.kcard-compact-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: currentColor; color: var(--color-border-strong); }
.kcard-compact-line .kcard-due { margin-left: auto; }
.kcard-compact-line .avatar { width: 14px; height: 14px; font-size: 6px; border-width: 1px; }
#wd-unified-board.is-compact .pboard-column-cards { gap: 5px; }

.quick-add-card { padding: 2px 4px; }
.quick-add-card input { width: 100%; border: 1.5px dashed transparent; background: transparent; padding: 8px 8px; font-size: 13px; border-radius: 8px; font: inherit; }
.quick-add-card input:hover { border-color: var(--color-border-strong); }
.quick-add-card input:focus { background: var(--color-surface); border-color: var(--color-blue); border-style: solid; outline: none; box-shadow: 0 0 0 3px rgba(31, 111, 235, .12); }

.status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; box-shadow: 0 0 0 3px var(--color-surface); }
.status-dot.dot-plan { background: #8b8fb3; }
.status-dot.dot-doing { background: var(--color-blue); }
.status-dot.dot-paused { background: var(--color-warning); }
.status-dot.dot-review { background: var(--color-signal-indigo); }
.status-dot.dot-done { background: var(--color-success); }
.status-dot.hue-0 { background: var(--hue-indigo); }
.status-dot.hue-1 { background: var(--hue-coral); }
.status-dot.hue-2 { background: var(--hue-teal); }
.status-dot.hue-3 { background: var(--hue-amber); }
.status-dot.hue-4 { background: var(--hue-rose); }
.status-dot.hue-5 { background: var(--hue-green); }

/* ---------------------------------------------------------------- Board geral: toolbar (busca, filtros, config) */
.board-toolbar { margin-bottom: 18px; }
.board-toolbar-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.board-search { position: relative; display: flex; align-items: center; }
.board-search svg { position: absolute; left: 11px; width: 14px; height: 14px; color: var(--color-text-dim); pointer-events: none; }
.board-search input { font: inherit; font-size: 13px; padding: 8px 12px 8px 32px; border: 1px solid transparent; border-radius: var(--radius-sm); background: var(--color-surface-alt); color: var(--color-text); width: 240px; transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease; }
.board-search input:focus { outline: none; background: var(--color-surface); border-color: var(--color-blue); box-shadow: 0 0 0 3px rgba(31, 111, 235, .12); }

/* Toggles rápidos: Meus cartões / Atrasados — 1 clique, fora do popover */
.quick-toggle {
    display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600;
    padding: 7px 12px; border-radius: var(--radius-sm); border: none; background: none; color: var(--color-text-muted); cursor: pointer;
    transition: background-color .15s var(--ease-out), color .15s var(--ease-out), box-shadow .15s var(--ease-out), transform .12s var(--ease-out);
}
.quick-toggle svg { width: 14px; height: 14px; flex-shrink: 0; }
.quick-toggle:hover:not(:disabled) { background: var(--color-surface-alt); color: var(--color-text); }
.quick-toggle:active:not(:disabled) { transform: scale(.97); }
.quick-toggle:disabled { opacity: .4; cursor: default; }
.quick-toggle.is-on { background: var(--color-surface-alt); color: var(--color-text); box-shadow: inset 0 0 0 1px var(--color-border-strong); }
.quick-toggle-count { font-size: 10.5px; font-weight: 700; background: var(--color-danger); color: #fff; border-radius: 999px; padding: 1px 6px; font-variant-numeric: tabular-nums; }
.quick-toggle-danger.is-on { background: var(--color-danger-bg); color: var(--color-danger); }
.quick-toggle-danger.is-on .quick-toggle-count { background: var(--color-danger); }
.quick-toggle-count-plain { font-size: 10.5px; font-weight: 600; color: var(--color-text-dim); font-variant-numeric: tabular-nums; }
.quick-toggle.is-on .quick-toggle-count-plain { color: var(--color-text); }

.board-active-pills { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.wd-pill {
    display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600;
    background: var(--color-surface-alt); color: var(--color-text); padding: 5px 6px 5px 10px; border-radius: var(--radius-sm);
}
.wd-pill button { display: flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 5px; border: none; background: none; color: var(--color-text-dim); cursor: pointer; padding: 0; font-size: 13px; line-height: 1; }
.wd-pill button:hover { background: var(--color-border-strong); color: var(--color-text); }

.board-toolbar-spacer { flex: 1; }

.sort-select {
    font: inherit; font-size: 12.5px; font-weight: 600; color: var(--color-text-muted);
    padding: 7px 30px 7px 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm);
    background: var(--color-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M5.5 7.5L10 12l4.5-4.5' stroke='%237d7f99' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 10px center;
    appearance: none; -webkit-appearance: none; cursor: pointer;
}

/* Seções secundárias (Pausado/Concluído) recolhidas -- reduz peso visual do que não está ativo */
.accordion { border: 1px solid var(--color-border); border-radius: var(--radius); background: var(--color-surface); box-shadow: var(--shadow-sm); margin-top: 26px; }
.accordion summary {
    list-style: none; display: flex; align-items: center; gap: 8px; padding: 12px 16px; cursor: pointer;
    font-size: 12.5px; font-weight: 600; color: var(--color-text-muted);
}
.accordion summary::-webkit-details-marker { display: none; }
.accordion summary svg { width: 12px; height: 12px; flex-shrink: 0; transition: transform .15s ease; }
.accordion[open] summary svg { transform: rotate(90deg); }
.accordion .accordion-body { padding: 4px 16px 16px; margin-bottom: 0; }

/* Botões da toolbar (Filtros / Config) + popover ancorado */
.toolbar-btn {
    display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600;
    padding: 7px 12px; border-radius: var(--radius-sm); border: 1px solid var(--color-border-strong); background: var(--color-surface); color: var(--color-text-muted); cursor: pointer;
    transition: background-color .15s var(--ease-out), color .15s var(--ease-out), border-color .15s var(--ease-out), transform .12s var(--ease-out), box-shadow .15s var(--ease-out);
}
.toolbar-btn svg { width: 14px; height: 14px; }
.toolbar-btn:hover { background: var(--color-surface-alt); color: var(--color-text); text-decoration: none; }
.toolbar-btn:active { transform: scale(.97); }
.toolbar-btn-icon { padding: 7px; }
.toolbar-btn.is-on { border-color: var(--color-violet); color: var(--color-violet); }

.wd-popover-wrap { position: relative; }
.wd-popover {
    position: absolute; top: calc(100% + 8px); left: 0; z-index: 60; width: 260px; max-height: 70vh; overflow-y: auto;
    background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
    padding: 6px; opacity: 0; transform: translateY(-4px) scale(.98); pointer-events: none; transition: opacity .12s ease, transform .12s ease;
}
.wd-popover[hidden] { display: none; }
.wd-popover.is-open { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; }
.wd-popover-right { left: auto; right: 0; }
.wd-popover-section { padding: 8px 8px 10px; }
.wd-popover-section + .wd-popover-section { border-top: 1px solid var(--color-border); }
.wd-popover-label { display: block; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-dim); margin-bottom: 6px; padding: 0 4px; }
.wd-popover-row { display: flex; align-items: center; gap: 8px; padding: 6px 6px; border-radius: 7px; cursor: pointer; font-size: 13px; color: var(--color-text); }
.wd-popover-row:hover { background: var(--color-surface-alt); }
.wd-popover-row input { margin: 0; accent-color: var(--color-violet); }
.wd-popover-row-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wd-popover-row-count { font-size: 11px; color: var(--color-text-dim); font-variant-numeric: tabular-nums; }
.avatar-xs { width: 19px; height: 19px; font-size: 9.5px; }
.avatar-lg { width: 34px; height: 34px; font-size: 14px; }

/* Dot de status sobreposto no avatar (Colaboradores) — eco do badge da referência, com dado real */
.avatar-status-wrap { position: relative; display: inline-flex; flex-shrink: 0; }
.avatar-status-dot { position: absolute; right: -1px; bottom: -1px; width: 9px; height: 9px; border-radius: 50%; border: 2px solid var(--color-surface); }
.avatar-status-dot.is-active { background: var(--color-success); }
.avatar-status-dot.is-inactive { background: var(--color-text-dim); }

.chip-dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.chip-dot-neutral { color: #8b8fb3; }
.chip-dot-brand { color: var(--color-blue); }
.chip-dot-teal { color: var(--hue-teal); }
.chip-dot-warning { color: var(--color-warning); }
.chip-dot-danger { color: var(--color-danger); }
.chip-dot-hue-0 { color: var(--hue-indigo); }
.chip-dot-hue-1 { color: var(--hue-coral); }
.chip-dot-hue-2 { color: var(--hue-teal); }
.chip-dot-hue-3 { color: var(--hue-amber); }
.chip-dot-hue-4 { color: var(--hue-rose); }
.chip-dot-hue-5 { color: var(--hue-green); }
.chip-dot-indigo { color: var(--hue-indigo); }
.chip-dot-coral { color: var(--hue-coral); }
.chip-dot-teal { color: var(--hue-teal); }
.chip-dot-amber { color: var(--hue-amber); }
.chip-dot-rose { color: var(--hue-rose); }
.chip-dot-green { color: var(--hue-green); }

.wd-segmented-mini { display: flex; background: var(--color-surface-alt); border-radius: var(--radius-sm); padding: 2px; gap: 2px; }
.wd-segmented-mini button { flex: 1; font: inherit; font-size: 12px; font-weight: 600; padding: 6px 8px; border: none; background: none; color: var(--color-text-muted); border-radius: 6px; cursor: pointer; transition: background-color .15s var(--ease-out), color .15s var(--ease-out), box-shadow .15s var(--ease-out), transform .12s var(--ease-out); }
.wd-segmented-mini button:active { transform: scale(.96); }
.wd-segmented-mini button.is-on { background: var(--color-surface); color: var(--color-text); box-shadow: var(--shadow-sm); }
.wd-pop-select, #wd-board-sort { width: 100%; font: inherit; font-size: 13px; padding: 7px 10px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); }

.wd-saved-views { display: flex; flex-direction: column; gap: 2px; margin-bottom: 8px; }
.wd-saved-views-empty { font-size: 12px; color: var(--color-text-dim); padding: 4px; margin: 0; }
.wd-saved-view-item { display: flex; align-items: center; gap: 8px; padding: 6px; border-radius: 7px; }
.wd-saved-view-item:hover { background: var(--color-surface-alt); }
.wd-saved-view-item button.wd-saved-view-apply { flex: 1; text-align: left; background: none; border: none; font: inherit; font-size: 13px; color: var(--color-text); cursor: pointer; padding: 0; }
.wd-saved-view-item button.wd-saved-view-remove { background: none; border: none; color: var(--color-text-dim); cursor: pointer; font-size: 13px; padding: 0 2px; }
.wd-saved-view-item button.wd-saved-view-remove:hover { color: var(--color-danger); }
.wd-save-view-row { display: flex; gap: 6px; }
.wd-save-view-row input { flex: 1; font: inherit; font-size: 12.5px; padding: 7px 9px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); min-width: 0; }
.wd-save-view-row .btn { padding: 7px 11px; font-size: 12px; flex-shrink: 0; }

.board-filtered-empty { text-align: center; color: var(--color-text-muted); font-size: 13px; padding: 40px 20px; }
.board-filtered-empty[hidden] { display: none; }

@media (max-width: 780px) {
    .board-toolbar-bar { flex-wrap: wrap; }
    .board-toolbar-spacer { display: none; }
    .board-search input { width: 100%; }
}

/* Chip nomeado -- base do sistema único de cor pra projeto e tag (project_hue_key(), hue-picker) */
.hue-chip {
    display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600;
    padding: 3px 9px 3px 7px; border-radius: 999px; color: var(--color-text-dim); background: var(--color-surface-alt);
}
.hue-chip::before { content: ''; width: 5px; height: 5px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.proj-hue-0 { color: var(--hue-indigo); background: var(--hue-indigo-bg); }
.proj-hue-1 { color: var(--hue-coral); background: var(--hue-coral-bg); }
.proj-hue-2 { color: var(--hue-teal); background: var(--hue-teal-bg); }
.proj-hue-3 { color: var(--hue-amber); background: var(--hue-amber-bg); }
.proj-hue-4 { color: var(--hue-rose); background: var(--hue-rose-bg); }
.proj-hue-5 { color: var(--hue-green); background: var(--hue-green-bg); }
/* Alias nomeado -- sistema único de cor pra projeto e tag (project_hue_key(), a mesma paleta do .hue-picker) */
.proj-hue-indigo { color: var(--hue-indigo); background: var(--hue-indigo-bg); }
.proj-hue-coral { color: var(--hue-coral); background: var(--hue-coral-bg); }
.proj-hue-teal { color: var(--hue-teal); background: var(--hue-teal-bg); }
.proj-hue-amber { color: var(--hue-amber); background: var(--hue-amber-bg); }
.proj-hue-rose { color: var(--hue-rose); background: var(--hue-rose-bg); }
.proj-hue-green { color: var(--hue-green); background: var(--hue-green-bg); }

.unified-quick-add { display: flex; flex-direction: column; gap: 6px; padding: 2px 4px 6px; }
.unified-quick-add select { font-size: 11.5px; padding: 6px 26px 6px 8px; border: 1px solid transparent; border-radius: 7px; background-color: transparent; color: var(--color-text-dim); }
.unified-quick-add select:hover { border-color: var(--color-border-strong); }

@media (max-width: 640px) {
    .board-toolbar-top { flex-direction: column; align-items: stretch; }
    .board-filter-group + .board-filter-group { padding-left: 0; border-left: none; }
    .board-search input { width: 100%; }
}

/* ---------------------------------------------------------------- Cartão em lista (Backlog e afins) */
.card-row {
    display: flex; align-items: center; gap: 14px; background: var(--color-surface); border: 1px solid var(--color-border);
    border-left: 3px solid var(--pri, var(--color-border-strong)); border-radius: var(--radius); padding: 10px 16px; color: inherit;
    transition: box-shadow .18s var(--ease-out), border-color .18s var(--ease-out), transform .15s var(--ease-out);
}
.card-row:hover { box-shadow: var(--shadow-md); transform: translateY(-1px); text-decoration: none; border-color: #cdd6f5; }
.card-row + .card-row { margin-top: 8px; }
.card-row-num { font-size: 11.5px; font-weight: 600; color: var(--color-text-dim); font-variant-numeric: tabular-nums; width: 34px; flex-shrink: 0; }
.card-row-title { font-size: 13px; font-weight: 600; color: var(--color-text); flex: 1 1 220px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-row-project { flex-shrink: 0; width: 140px; overflow: hidden; }
.card-row-project .hue-chip { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-flex; }
.card-row-assignee { display: flex; align-items: center; gap: 6px; flex-shrink: 0; width: 130px; min-width: 0; }
.card-row-assignee span { font-size: 12px; color: var(--color-text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-row-tags { display: flex; gap: 4px; flex-shrink: 0; width: 150px; overflow: hidden; }
.card-row-ring { display: flex; align-items: center; gap: 5px; flex-shrink: 0; width: 56px; }
.card-row-due { font-size: 11px; font-weight: 600; flex-shrink: 0; width: 56px; text-align: right; }
@media (max-width: 900px) { .card-row-project, .card-row-tags { display: none; } }
@media (max-width: 640px) { .card-row-assignee { display: none; } }

/* ---------------------------------------------------------------- Card detail page */
.card-breadcrumb { margin-bottom: 16px; font-size: 13px; color: var(--color-text-muted); }
.task-detail-actions { display: flex; gap: 10px; margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--color-border); }
.card-page-grid { display: grid; grid-template-columns: 1fr 300px; gap: 30px; }

/* Cartão: modo leitura por padrão, edição atrás do lápis (sutil, não a superfície dominante) */
.card-view-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.card-view-desc-row { display: flex; align-items: flex-start; gap: 6px; }
.card-view-title { font-size: 21px; line-height: 1.3; margin: 0; text-wrap: balance; }
.card-view-title.is-done { text-decoration: line-through; color: var(--color-text-muted); }
.card-edit-toggle {
    flex-shrink: 0; opacity: .55; width: 32px; height: 32px; border-radius: 8px; border: none; background: none;
    color: var(--color-text-muted); cursor: pointer; display: flex; align-items: center; justify-content: center;
    transition: opacity .12s ease, background-color .12s ease, color .12s ease;
}
.card-edit-toggle svg { width: 16px; height: 16px; }
.card-edit-toggle:hover { background: var(--color-surface-alt); color: var(--color-blue); }
.card-view:hover .card-edit-toggle, .card-edit-toggle:focus-visible { opacity: 1; }
.card-view-desc { margin-top: 14px; }
.card-view-desc-empty {
    display: inline-block; margin-top: 14px; background: none; border: none; padding: 0; cursor: pointer;
    font: inherit; font-size: 13px; color: var(--color-text-dim);
}
.card-view-desc-empty:hover { color: var(--color-blue); }
.card-edit-panel { background: var(--color-surface-alt); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 18px 20px; margin-top: 4px; }

.card-danger-zone { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--color-border); }
.link-button-danger {
    display: inline-flex; align-items: center; gap: 7px; background: none; border: none; padding: 6px 4px; margin: -6px -4px;
    border-radius: 7px; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 600; color: var(--color-text-dim);
    transition: color .15s var(--ease-out), background-color .15s var(--ease-out);
}
.link-button-danger svg { width: 14px; height: 14px; flex-shrink: 0; }
.link-button-danger:hover { color: var(--color-danger); background: var(--color-danger-bg); text-decoration: none; }

.card-tasks { margin-top: 28px; }
.card-tasks-hero { display: flex; align-items: center; gap: 16px; margin-bottom: 4px; }
.card-tasks-hero-value {
    font-size: 30px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; flex-shrink: 0;
    background: var(--gradient-brand); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.card-tasks-hero-body { flex: 1; min-width: 0; }
.card-tasks-hero-label { font-size: 12px; font-weight: 700; color: var(--color-text-muted); margin-bottom: 6px; }
.progress-bar { height: 7px; background: var(--color-surface-alt); border-radius: 99px; overflow: hidden; margin: 10px 0; }
.progress-bar-fill { height: 100%; background: var(--gradient-brand); border-radius: 99px; }
.task-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.task-item {
    display: flex; align-items: center; gap: 11px; padding: 8px 8px; border-radius: 8px;
    transition: background-color .15s var(--ease-out);
}
.task-item + .task-item { border-top: 1px solid var(--color-border); }
.task-item:hover { background: var(--color-surface-alt); }
.task-toggle-form { margin: 0; }
.task-checkbox {
    display: flex; align-items: center; justify-content: center;
    width: 19px; height: 19px; border: 1.5px solid var(--color-border-strong); border-radius: 6px; background: var(--color-surface);
    cursor: pointer; color: #fff; padding: 0; flex-shrink: 0; transition: background .15s var(--ease-out), border-color .15s var(--ease-out), transform .12s var(--ease-out);
}
.task-checkbox:active { transform: scale(.9); }
.task-checkbox svg { width: 11px; height: 11px; opacity: 0; transition: opacity .1s ease; }
.task-item.task-done .task-checkbox { background: var(--gradient-brand); border-color: transparent; }
.task-item.task-done .task-checkbox svg { opacity: 1; }
.task-item.task-done .task-title { text-decoration: line-through; color: var(--color-text-muted); }
.task-title { flex: 1; font-size: 13px; color: var(--color-text); min-width: 0; }
.task-title:hover { color: var(--color-blue); text-decoration: none; }
.task-remove {
    display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 7px; flex-shrink: 0;
    background: none; border: none; padding: 0; cursor: pointer; color: var(--color-text-dim); opacity: 0;
    transition: opacity .12s var(--ease-out), background-color .15s var(--ease-out), color .15s var(--ease-out), transform .12s var(--ease-out);
}
.task-remove svg { width: 14px; height: 14px; }
.task-remove:hover { background: var(--color-danger-bg); color: var(--color-danger); }
.task-remove:active { transform: scale(.9); }
.task-item:hover .task-remove, .task-remove:focus-visible { opacity: 1; }
.task-add-form { display: flex; gap: 8px; margin-top: 12px; }
.task-add-form input { flex: 1; padding: 9px 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); font: inherit; background: var(--color-surface); color: var(--color-text); transition: border-color .15s var(--ease-out), background-color .15s var(--ease-out), box-shadow .15s var(--ease-out); }
.task-add-form input:focus { outline: none; background: var(--color-surface); border-color: var(--color-blue); box-shadow: 0 0 0 3px rgba(31, 111, 235, .12); }

.assignee-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }

/* Pill de responsável: avatar + nome. O X de remover só existe visualmente no hover/foco —
   fora disso ele tem largura zero, então a pill fica compacta em vez de reservar o espaço. */
.assignee-item {
    display: inline-flex; align-items: center; max-width: 100%; min-height: 28px; padding: 2px 4px 2px 3px;
    border-radius: 999px; background: var(--color-violet-bg); box-shadow: inset 0 0 0 1px var(--color-violet-border);
    transition: box-shadow .15s var(--ease-out);
}
.assignee-item:hover, .assignee-item:focus-within { box-shadow: inset 0 0 0 1px var(--color-violet); }
.assignee-item .avatar { border-color: var(--color-violet-bg); box-shadow: none; }
.assignee-item .assignee-toggle,
.assignee-item .assignee-toggle.assignee-active {
    min-width: 0; gap: 6px; padding: 0 6px 0 0; background: transparent; box-shadow: none; cursor: default;
    color: var(--color-violet); font-weight: 700;
}
.assignee-item .assignee-toggle:hover { background: transparent; color: var(--color-violet); }
.assignee-item .assignee-toggle:active { transform: none; }
.assignee-item form { margin: 0; display: flex; }
.assignee-name { min-width: 0; max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.assignee-remove {
    display: flex; align-items: center; justify-content: center; width: 0; height: 20px; flex-shrink: 0;
    border: none; border-radius: 999px; padding: 0; cursor: pointer; background: transparent; overflow: hidden;
    color: var(--color-violet); opacity: 0; pointer-events: none;
    transition: width .14s var(--ease-out), opacity .14s var(--ease-out), background-color .15s var(--ease-out), color .15s var(--ease-out), transform .12s var(--ease-out);
}
.assignee-remove svg { width: 12px; height: 12px; flex-shrink: 0; }
.assignee-remove:hover { background: var(--color-danger-bg); color: var(--color-danger); }
.assignee-remove:active { transform: scale(.9); }
.assignee-item:hover .assignee-remove,
.assignee-item:focus-within .assignee-remove { width: 20px; opacity: 1; pointer-events: auto; }
@media (hover: none) {
    /* Touch não tem hover: o X fica sempre visível, senão não há como remover ninguém. */
    .assignee-remove { width: 20px; opacity: .75; pointer-events: auto; }
}
.assignee-toggle {
    display: inline-flex; align-items: center; gap: 7px; text-align: left; background: var(--color-surface-alt); border: 1px solid transparent;
    border-radius: 999px; padding: 5px 12px 5px 5px; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 600; color: var(--color-text-muted);
    transition: background .15s var(--ease-out), color .15s var(--ease-out), box-shadow .15s var(--ease-out), transform .12s var(--ease-out);
}
.assignee-toggle:hover { background: var(--color-border); color: var(--color-text); }
.assignee-toggle:active { transform: scale(.97); }
.assignee-toggle.assignee-active { color: var(--color-violet); font-weight: 700; background: var(--color-violet-bg); box-shadow: inset 0 0 0 1px var(--color-violet-border); }

/* Status badge — mesmo padrão da prioridade: pill clicável abre popover com as colunas */
.badge-status {
    height: 22px; padding: 0 10px 0 7px; display: inline-flex; align-items: center; gap: 7px;
    text-transform: none; letter-spacing: .01em;
    transition: background-color .15s var(--ease-out), color .15s var(--ease-out), box-shadow .15s var(--ease-out);
}
.badge-status .status-dot {
    width: 7px; height: 7px; box-shadow: none;
}
.badge-status-plan { background: var(--color-surface-alt); color: var(--color-text-muted); }
.badge-status-doing { background: rgba(31, 111, 235, .1); color: var(--color-blue); }
.badge-status-review { background: rgba(91, 91, 214, .12); color: var(--color-signal-indigo); }
.badge-status-done { background: var(--color-success-bg); color: var(--color-success); }

.status-options { display: flex; flex-direction: column; gap: 4px; min-width: 180px; }
.status-option { position: relative; cursor: pointer; display: block; }
.status-option input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.status-option > span {
    display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 10px; border-radius: 8px;
    font-size: 13px; font-weight: 600; color: var(--color-text); background: transparent;
    transition: background-color .12s var(--ease-out);
}
.status-option:hover > span { background: var(--color-surface-alt); }
.status-option input:focus-visible + span { outline: 2px solid var(--color-blue); outline-offset: 1px; }
.status-option input:checked + span {
    background: var(--hue-indigo-bg); color: var(--color-blue);
    box-shadow: inset 0 0 0 1px rgba(31, 111, 235, .25);
}
.status-option .status-dot { box-shadow: none; }

/* ---------------------------------------------------------------- Finance */
.finance-layout { display: grid; grid-template-columns: 1fr 300px; gap: 26px; align-items: start; }
.filter-form { margin-bottom: 14px; }
.filter-form select {
    padding: 9px 34px 9px 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-sm); font: inherit; background-color: var(--color-surface); color: var(--color-text);
    appearance: none; -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M5.5 7.5L10 12l4.5-4.5' stroke='%237d7f99' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 11px center;
}

/* Hero de saldo — número grande com gradiente de marca (único uso do gradiente cheio fora de botão/progresso, papel de métrica hero) */
.finance-hero { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: 22px 26px; box-shadow: var(--shadow-sm); margin-bottom: 18px; }
.finance-hero-value {
    font-size: 40px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; line-height: 1.15;
    background: var(--gradient-brand); -webkit-background-clip: text; background-clip: text; color: transparent;
}
.finance-hero-sub { margin-top: 6px; font-size: 12.5px; font-weight: 600; color: var(--color-text-muted); }

/* Tiles de ação — Nova receita / Nova despesa / Extrato completo */
.finance-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 22px; }
.finance-action-tile {
    display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px 10px; text-align: center;
    background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
    cursor: pointer; font: inherit; color: var(--color-text);
    transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
.finance-action-tile:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); text-decoration: none; }
.finance-action-icon { width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.finance-action-icon svg { width: 16px; height: 16px; }
.finance-action-tile.hue-green .finance-action-icon { background: var(--color-success-bg); color: var(--color-success); }
.finance-action-tile.hue-danger .finance-action-icon { background: var(--color-danger-bg); color: var(--color-danger); }
.finance-action-tile.hue-indigo .finance-action-icon { background: var(--hue-indigo-bg); color: var(--hue-indigo); }
.finance-action-label { font-size: 12.5px; font-weight: 700; }

/* Lista de atividade — ícone-avatar + label + valor colorido */
.finance-activity { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 6px; box-shadow: var(--shadow-sm); margin-bottom: 22px; }
.finance-activity-row { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 10px; }
.finance-activity-row + .finance-activity-row { border-top: 1px solid var(--color-border); }
.finance-activity-icon { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.finance-activity-icon svg { width: 16px; height: 16px; }
.finance-activity-icon.is-income { background: var(--color-success-bg); color: var(--color-success); }
.finance-activity-icon.is-expense { background: var(--color-danger-bg); color: var(--color-danger); }
.finance-activity-body { flex: 1; min-width: 0; }
.finance-activity-label { font-size: 13.5px; font-weight: 600; color: var(--color-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.finance-activity-meta { font-size: 11px; color: var(--color-text-muted); margin-top: 1px; }
.finance-activity-amount { font-weight: 700; font-variant-numeric: tabular-nums; font-size: 13px; flex-shrink: 0; }

@media (max-width: 480px) { .finance-actions { grid-template-columns: 1fr; } }

/* Info-tile — icon+valor+label reutilizável (visão geral de projeto e afins) */
.info-tile-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 24px; }
.info-tile {
    display: flex; flex-direction: column; gap: 10px; background: var(--color-surface); border: 1px solid var(--color-border);
    border-radius: var(--radius-lg); padding: 16px; box-shadow: var(--shadow-sm); color: inherit;
    transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
a.info-tile:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); text-decoration: none; border-color: var(--color-border-strong); }
.info-tile-icon { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; }
.info-tile-icon svg { width: 15px; height: 15px; }
.info-tile-value { font-size: 19px; font-weight: 800; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.info-tile-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-dim); }
.info-tile.hue-green .info-tile-icon { background: var(--color-success-bg); color: var(--color-success); }
.info-tile.hue-danger .info-tile-icon { background: var(--color-danger-bg); color: var(--color-danger); }
.info-tile.hue-amber .info-tile-icon { background: var(--hue-amber-bg); color: var(--hue-amber); }
.info-tile.hue-rose .info-tile-icon { background: var(--hue-rose-bg); color: var(--hue-rose); }
.info-tile.hue-indigo .info-tile-icon { background: var(--hue-indigo-bg); color: var(--hue-indigo); }
@media (max-width: 640px) { .info-tile-row { grid-template-columns: 1fr; } }

/* Cabeçalho de formulário de página inteira -- medalhão colorido + título, eco do padrão hero */
.form-header-row { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }
.form-header-row h1 { margin: 0; }
.info-tile-icon.hue-indigo-solid { width: 38px; height: 38px; background: var(--hue-indigo-bg); color: var(--hue-indigo); }
.info-tile-icon.hue-rose-solid { width: 38px; height: 38px; background: var(--hue-rose-bg); color: var(--hue-rose); }

/* ---------------------------------------------------------------- Empty state */
.empty-state { background: var(--color-surface); border: 1.5px dashed var(--color-border-strong); border-radius: var(--radius-lg); padding: 40px 32px; text-align: center; color: var(--color-text-muted); }
.empty-state h1 { color: var(--color-text); }

/* ---------------------------------------------------------------- Dark mode: tuned colors */
/* Everything token-driven already adapted above; these are the few components with
   deliberately distinct hues (badges, hovers) that need their own dark-safe values. */
:root[data-theme="dark"] .table tbody tr:hover { background: rgba(255, 255, 255, .035); }

:root[data-theme="dark"] .badge-success { color: #5fe0a0; }
:root[data-theme="dark"] .badge-danger { color: #ff8f9a; }
:root[data-theme="dark"] .badge-status-em_andamento,
:root[data-theme="dark"] .badge-status-doing { background: rgba(31, 111, 235, .22); color: var(--accent-blue-dark-bg); }
:root[data-theme="dark"] .badge-priority-media { background: rgba(79, 209, 197, .16); color: #4fd1c5; }
:root[data-theme="dark"] .badge-status-pausado,
:root[data-theme="dark"] .badge-priority-alta { color: #e2a355; }
:root[data-theme="dark"] .badge-status-concluido,
:root[data-theme="dark"] .badge-status-done { color: #5fe0a0; }
:root[data-theme="dark"] .badge-status-review { background: rgba(171, 139, 255, .16); color: var(--accent-violet-dark-bg); }
:root[data-theme="dark"] .badge-priority-urgente { color: #ff8f9a; }
:root[data-theme="dark"] .status-option input:checked + span {
    background: rgba(31, 111, 235, .18); color: var(--accent-blue-dark-bg);
    box-shadow: inset 0 0 0 1px rgba(91, 157, 255, .35);
}

:root[data-theme="dark"] .project-card:hover { border-color: rgba(149, 102, 240, .5); }
:root[data-theme="dark"] .kanban-card:hover { border-color: rgba(149, 102, 240, .45); }
/* No escuro o violeta cheio some contra o fundo da pill; usa o tom claro do sidebar. */
:root[data-theme="dark"] .assignee-toggle.assignee-active,
:root[data-theme="dark"] .assignee-item .assignee-toggle:hover,
:root[data-theme="dark"] .assignee-remove { color: var(--accent-violet-dark-bg); }
:root[data-theme="dark"] .status-dot.dot-plan { background: #767a99; }
:root[data-theme="dark"] .proj-hue-0 { color: #8b93f2; background: rgba(139, 147, 242, .16); }
:root[data-theme="dark"] .proj-hue-1 { color: #ff9457; background: rgba(255, 148, 87, .16); }
:root[data-theme="dark"] .proj-hue-2 { color: #4fd1c5; background: rgba(79, 209, 197, .14); }
:root[data-theme="dark"] .proj-hue-3 { color: #e2a355; background: rgba(226, 163, 85, .16); }
:root[data-theme="dark"] .proj-hue-4 { color: #f776a4; background: rgba(247, 118, 164, .14); }
:root[data-theme="dark"] .proj-hue-5 { color: #6fcf80; background: rgba(111, 207, 128, .14); }

/* ---------------------------------------------------------------- Validação e aprovação de cartões */
.wd-modal:has(.review-form-shell) { max-width: 820px; max-height: calc(100vh - 40px); overflow-y: auto; }
.review-form-shell { padding: 24px; }
.review-form-heading { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 22px; }
.review-form-heading h2 { margin: 0 0 4px; font-size: 22px; letter-spacing: -.01em; }
.review-form-heading p { margin: 0; color: var(--color-text-muted); font-size: 13px; line-height: 1.5; }
.review-form-icon {
    width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
    border-radius: var(--radius); background: var(--color-success-bg); color: var(--color-success);
    box-shadow: inset 0 0 0 1px var(--color-success-border);
}
.review-form-icon svg { width: 20px; height: 20px; }
.review-submission-form { display: flex; flex-direction: column; gap: 16px; }
.review-form-section {
    border: 1px solid var(--color-border); border-radius: var(--radius-lg); background: var(--color-surface);
    box-shadow: var(--shadow-sm); padding: 18px; display: flex; flex-direction: column; gap: 16px;
}
.review-form-section-title { display: flex; align-items: flex-start; gap: 10px; }
.review-form-section-title > span {
    width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
    border-radius: 50%; background: var(--color-surface-alt); color: var(--color-text-muted); font-size: 11px; font-weight: 800;
}
.review-form-section-title h3 { margin: 1px 0 2px; font-size: 14px; text-transform: none; letter-spacing: 0; color: var(--color-text); }
.review-form-section-title p { margin: 0; font-size: 12px; color: var(--color-text-muted); }
.review-type-picker { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.review-type-picker label { position: relative; cursor: pointer; }
.review-type-picker input { position: absolute; opacity: 0; pointer-events: none; }
.review-type-picker label > span {
    min-height: 72px; display: grid; grid-template-columns: 24px 1fr; grid-template-rows: auto auto; column-gap: 10px;
    padding: 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius); background: var(--color-surface);
    transition: border-color .15s var(--ease-out), background-color .15s var(--ease-out), box-shadow .15s var(--ease-out);
}
.review-type-picker svg { grid-row: 1 / 3; width: 20px; height: 20px; margin-top: 2px; color: var(--color-text-muted); }
.review-type-picker strong { font-size: 13px; color: var(--color-text); }
.review-type-picker small { font-size: 11.5px; color: var(--color-text-muted); }
.review-type-picker input:checked + span {
    border-color: var(--color-blue); background: var(--hue-indigo-bg); box-shadow: 0 0 0 3px var(--hue-indigo-bg);
}
.review-type-picker input:checked + span svg { color: var(--color-blue); }
.review-design-evidence { display: none; padding-top: 2px; }
.review-submission-form:has(input[name="review_type"][value="design"]:checked) .review-design-evidence { display: block; }
.review-evidence-grid { display: grid; grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.2fr); gap: 12px; }
.review-file-drop {
    position: relative;
    min-height: 132px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
    padding: 16px; border: 1.5px dashed var(--color-border-strong); border-radius: var(--radius); background: var(--color-surface-alt);
    text-align: center; cursor: pointer; overflow: hidden;
    -webkit-tap-highlight-color: transparent;
}
.review-file-drop svg { width: 24px; height: 24px; color: var(--color-violet); pointer-events: none; }
.review-file-drop > span { display: flex; flex-direction: column; gap: 2px; pointer-events: none; }
.review-file-drop strong { font-size: 12.5px; }
.review-file-drop small { font-size: 11px; color: var(--color-text-muted); }
.review-file-drop input {
    position: absolute;
    inset: 0;
    z-index: 2;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    opacity: 0;
    cursor: pointer;
    font-size: 16px;
}
.review-link-fields { display: flex; flex-direction: column; gap: 7px; }
.review-link-row { display: grid; grid-template-columns: .7fr 1.3fr; gap: 7px; }
.review-link-row input { min-width: 0; }
.reviewer-matrix { border: 1px solid var(--color-border); border-radius: var(--radius); overflow: hidden; }
.reviewer-matrix-head,
.reviewer-matrix-row { display: grid; grid-template-columns: minmax(220px, 1fr) repeat(3, 112px); align-items: center; }
.reviewer-matrix-head {
    padding: 8px 12px; background: var(--color-surface-alt); color: var(--color-text-muted);
    font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; text-align: center;
}
.reviewer-matrix-head span:first-child { text-align: left; }
.reviewer-matrix-row { padding: 9px 12px; border-top: 1px solid var(--color-border); }
.reviewer-person { display: flex; align-items: center; gap: 8px; min-width: 0; }
.reviewer-person > span { display: flex; flex-direction: column; min-width: 0; }
.reviewer-person strong { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reviewer-person small { font-size: 10.5px; color: var(--color-text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.reviewer-matrix-row > label { display: flex; justify-content: center; cursor: pointer; }
.reviewer-matrix-row > label span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.reviewer-matrix-row input { width: 16px; height: 16px; margin: 0; accent-color: var(--color-violet); }
.review-form-actions { display: flex; justify-content: flex-end; align-items: center; gap: 10px; padding-top: 2px; }

.card-review-panel { border-left: 3px solid var(--color-violet); }
.card-review-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 14px; }
.card-review-title { display: flex; align-items: center; gap: 9px; }
.card-review-title svg { width: 19px; height: 19px; color: var(--color-violet); }
.card-review-title h2 { margin: 0; }
.review-status { display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; }
.review-status-pending { color: var(--color-warning); background: var(--color-warning-bg); }
.review-status-approved { color: var(--color-success); background: var(--color-success-bg); }
.review-status-changes_requested { color: var(--color-danger); background: var(--color-danger-bg); }
.review-status-superseded { color: var(--color-text-muted); background: var(--color-surface-alt); }
.review-summary-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; font-size: 11.5px; color: var(--color-text-muted); }
.reviewer-list { display: flex; flex-direction: column; gap: 7px; margin-top: 14px; }
.reviewer-state {
    display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px;
    border-radius: var(--radius-sm); background: var(--color-surface-alt);
}
.reviewer-state-person { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 12.5px; font-weight: 600; }
.reviewer-state-meta { display: flex; align-items: center; gap: 7px; font-size: 11px; color: var(--color-text-muted); }
.review-decision-approved { color: var(--color-success); }
.review-decision-changes_requested { color: var(--color-danger); }
.review-evidence-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; margin-top: 14px; }
.review-evidence-item {
    display: flex; align-items: center; gap: 8px; min-width: 0; padding: 8px 10px; border: 1px solid var(--color-border);
    border-radius: var(--radius-sm); background: var(--color-surface); color: var(--color-text); font-size: 12px;
    font-family: inherit; text-align: left; cursor: pointer;
}
.review-evidence-item:hover { text-decoration: none; border-color: var(--color-border-strong); }
.review-evidence-item svg { width: 16px; height: 16px; color: var(--color-blue); flex-shrink: 0; }
.review-evidence-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.review-decision-form { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--color-border); }
.review-decision-form textarea { width: 100%; margin-bottom: 8px; }
.review-decision-actions { display: flex; gap: 8px; justify-content: flex-end; }

@media (max-width: 700px) {
    .review-form-shell { padding: 18px; }
    .review-type-picker, .review-evidence-grid { grid-template-columns: 1fr; }
    .reviewer-matrix { overflow-x: auto; }
    .reviewer-matrix-head, .reviewer-matrix-row { min-width: 620px; }
}

/* ---------------------------------------------------------------- Cabeçalho do cartão: título + faixa de campos */
.card-view-id {
    flex-shrink: 0; font-size: 14px; font-weight: 700; color: var(--color-text-dim);
    font-variant-numeric: tabular-nums;
}
/* Título encostado no ID, à esquerda; o lápis é empurrado pro fim da linha. */
.card-view-title-row { align-items: baseline; justify-content: flex-start; gap: 8px; }
.card-view-title-row .card-view-title { flex: 1 1 auto; min-width: 0; text-wrap: pretty; }
.card-view-title-row .card-edit-toggle { align-self: center; margin-left: auto; }

.card-fields {
    display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr)); gap: 14px 20px;
    margin: 16px 0 4px; padding: 14px 0; border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border);
}
.card-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.card-field-assignees { grid-column: span 2; }
.card-field-label {
    font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-dim);
}
.card-field-control { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-height: 30px; }
.card-field-static { font-size: 13px; font-weight: 500; color: var(--color-text); }
.card-field-static .avatar { flex-shrink: 0; }

/* Seletor de responsáveis: chips + botão de adicionar com busca */
.assignee-field { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.assignee-list:empty::before {
    content: 'Ninguém atribuído'; font-size: 12.5px; color: var(--color-text-dim);
}
.assignee-add {
    display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; flex-shrink: 0;
    border: 1px dashed var(--color-border-strong); border-radius: 50%; background: none; padding: 0; cursor: pointer;
    color: var(--color-text-muted);
    transition: border-color .15s var(--ease-out), color .15s var(--ease-out), background-color .15s var(--ease-out), transform .12s var(--ease-out);
}
.assignee-add svg { width: 14px; height: 14px; }
.assignee-add:hover { border-color: var(--color-violet); border-style: solid; color: var(--color-violet); background: var(--color-surface-alt); }
.assignee-add:active { transform: scale(.92); }

.wd-popover-search { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--color-border); }
.wd-popover-search svg { width: 15px; height: 15px; color: var(--color-text-dim); flex-shrink: 0; }
.wd-popover-search input {
    flex: 1; min-width: 0; border: none; background: none; padding: 0; font: inherit; font-size: 13px; color: var(--color-text);
}
.wd-popover-search input:focus { outline: none; }
.wd-popover-section .wd-popover-row { width: 100%; border: none; background: none; text-align: left; font: inherit; font-size: 13px; }
.wd-popover-empty { margin: 0; padding: 10px; font-size: 12.5px; color: var(--color-text-dim); text-align: center; }

:root[data-theme="dark"] .assignee-add:hover { background: rgba(149, 102, 240, .12); }

@media (max-width: 900px) {
    .card-fields { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
    .card-field-assignees { grid-column: 1 / -1; }
}

/* ---------------------------------------------------------------- Descrição em seção própria */
.card-desc-panel .card-view-desc,
.card-desc-panel .card-view-desc-empty { margin-top: 0; }
.card-desc-panel:hover .card-edit-toggle,
.card-desc-panel:focus-within .card-edit-toggle { opacity: 1; }
.card-desc-panel .card-view-desc-empty {
    display: block; width: 100%; padding: 16px; text-align: left;
    border: 1px dashed var(--color-border-strong); border-radius: var(--radius);
}
.card-desc-panel .card-view-desc-empty:hover {
    color: var(--color-blue); border-color: var(--color-blue); background: var(--hue-indigo-bg); text-decoration: none;
}

/* ---------------------------------------------------------------- Discussão do cartão */
.card-discussion .comment-trigger {
    display: flex; align-items: center; gap: 10px; width: 100%; margin-bottom: 16px; padding: 9px 14px;
    border: 1px solid var(--color-border); border-radius: 999px; background: var(--color-surface-alt);
    font: inherit; font-size: 13px; color: var(--color-text-dim); text-align: left; cursor: pointer;
    transition: border-color .15s var(--ease-out), color .15s var(--ease-out), background-color .15s var(--ease-out);
}
.card-discussion .comment-trigger .avatar { flex-shrink: 0; }
.card-discussion .comment-trigger:hover { border-color: var(--color-blue); color: var(--color-text); background: var(--color-surface); }
.card-discussion:has(.comment-composer-card.is-open) .comment-trigger { display: none; }
.card-discussion .comment-composer-card { margin-top: 0; }
