/* CBS review: the application fits the window; entry, tables, reference,
   dialogs and activity panel scroll inside their own areas. The page structure (file
   bar, entry, heading block, callout, footer, dialogs) is shared: app-shell.css .task-page. */
:is(.cbs-review,.review-dialog) .filename { font-size: var(--text-13); font-variant-numeric: tabular-nums; }
:is(.cbs-review,.review-dialog) .code { font-size: var(--text-13); font-variant-numeric: tabular-nums; }

/* Status labels: words always accompany colour. */
:is(.cbs-review,.review-dialog) .status-assessed { border-color: var(--line-strong); color: var(--ink); }
:is(.cbs-review,.review-dialog) .status-conditional { background: var(--warn-soft); color: var(--warn); }
:is(.cbs-review,.review-dialog) .status-unresolved { background: var(--surface-sunken); color: var(--ink-muted); }
:is(.cbs-review,.review-dialog) .status-waiting { border-color: var(--line); color: var(--ink-muted); }

/* Result: header and comparison share one area. */
.cbs-review #result { display: flex; flex-direction: column; flex: 1; min-height: 0; min-width: 0; background: var(--surface); }
.cbs-review .summary-box { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 500px); gap: var(--space-5); padding: var(--space-3) var(--space-4); border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--paper); }
.cbs-review .summary-label { display: flex; align-items: center; gap: var(--space-3); }
.cbs-review .summary-label > * { flex-shrink: 0; white-space: nowrap; }
.cbs-review #summary-content p + p { margin-top: var(--space-1); }
.cbs-review .summary-side { display: grid; gap: var(--space-2); align-content: start; font-size: var(--text-12); }
.cbs-review .assessment-dates { display: grid; grid-template-columns: auto auto auto 1fr; gap: 0 var(--space-3); margin: 0; font-variant-numeric: tabular-nums; }
.cbs-review .assessment-dates dt { color: var(--ink-muted); }
.cbs-review .assessment-dates dd { margin: 0; white-space: nowrap; }
.cbs-review .summary-note { font-size: var(--text-12); }

/* Comparison table: scrolls inside its region, item identity pinned. */
.cbs-review #comparison-view { display: flex; flex-direction: column; flex: 1; min-height: calc(var(--space-8) * 3); }
.cbs-review #comparison-scroll { isolation: isolate; }
.cbs-review .comparison-table { width: 100%; min-width: 1440px; table-layout: fixed; border-collapse: separate; border-spacing: 0; font-size: var(--text-13); line-height: 1.4; text-align: left; }
.cbs-review .comparison-table.has-st { min-width: 1600px; }
.cbs-review .comparison-table .col-item { width: 56px; }
.cbs-review .comparison-table .col-tax { width: 128px; }
.cbs-review .comparison-table .col-st { width: 136px; }
.cbs-review .comparison-table .col-description { width: 240px; }
.cbs-review .comparison-table .col-legal { width: 330px; }
.cbs-review .comparison-table .col-code { width: 280px; }
.cbs-review .comparison-table :is(.col-base,.col-amount) { width: 116px; }
.cbs-review .comparison-table .col-rate { width: 88px; }
.cbs-review .comparison-table :is(th,td) { padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--line); vertical-align: top; background: var(--surface); overflow-wrap: break-word; }
/* Ruled grid (D41): a hairline between every pair of cells; column groups keep their stronger rule below. */
.cbs-review .comparison-table :is(th,td) + :is(th,td) { border-left: 1px solid var(--line); }
.cbs-review .comparison-table tbody tr:last-child > * { border-bottom: 0; }
.cbs-review .comparison-table thead th { position: sticky; z-index: 2; white-space: nowrap; background: var(--surface-sunken); }
.cbs-review .comparison-table .column-groups th { top: 0; height: 32px; }
.cbs-review .comparison-table .column-names th { top: 32px; }
.cbs-review .comparison-table :is(tbody th, .item-identity) { position: sticky; z-index: 1; }
.cbs-review .comparison-table tbody th { left: 0; font-variant-numeric: tabular-nums; }
.cbs-review .comparison-table .item-identity { left: 56px; box-shadow: inset -1px 0 0 var(--line); }
.cbs-review .comparison-table .column-names > :nth-child(-n+2), .cbs-review .comparison-table .column-groups > :first-child { left: 0; z-index: 3; }
.cbs-review .comparison-table .column-names > :nth-child(2) { left: 56px; box-shadow: inset -1px 0 0 var(--line); }
.cbs-review .comparison-table :is(.tax-group-start, .column-groups > :nth-child(n+2), .column-names .group-start) { border-left: 1px solid var(--line-strong); }
.cbs-review .comparison-table tbody tr:hover > * { background: var(--paper); }
.cbs-review .item-link { font-weight: var(--weight-semibold); display: block; width: 100%; min-height: 0; padding: 0; border: 0; background: transparent; text-align: left; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbs-review .item-link:hover:not(:disabled) { background: transparent; }
.cbs-review :is(.cell-note, .cell-value, .scenario-line) { display: block; }
/* Money never breaks inside a number: 116 px columns with 8 px padding fit R$ 1.234.567,89. */
.cbs-review .comparison-table :is(td.proposed-base, td.proposed-amount) { padding-inline: var(--space-2); }
.cbs-review .comparison-table .scenario-line { white-space: nowrap; }
.cbs-review .cell-note { color: var(--ink-muted); font-size: var(--text-12); }
.cbs-review :is(.declared-tax, .proposed-tax) { font-variant-numeric: tabular-nums; }
.cbs-review .declared-st .cell-value { font-size: var(--text-12); white-space: nowrap; }
.cbs-review .unknown { color: var(--ink-muted); font-weight: var(--weight-regular); font-family: var(--font-sans); font-size: var(--text-12); white-space: nowrap; }
.cbs-review .proposed-tax .unknown { white-space: normal; }
.cbs-review .item-codes { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cbs-review .scenario-key { display: inline-block; min-width: 16px; color: var(--ink-muted); font-size: var(--text-11); font-weight: var(--weight-semibold); }
.cbs-review .proposed-wait { vertical-align: middle; background: var(--paper); color: var(--ink-muted); font-size: var(--text-12); }
.cbs-review #mobile-items { display: none; }

/* Secondary full report with a contents rail. */
.review-dialog .item-analysis p { margin: 0 0 var(--space-4); }
.review-dialog .item-analysis a { color: var(--info); text-decoration: underline; text-underline-offset: 3px; }
.review-dialog .item-analysis table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; margin: var(--space-4) 0; }
.review-dialog .item-analysis :is(td,th) { border: 1px solid var(--line); padding: var(--space-2) var(--space-3); }
.review-dialog .item-analysis table { font-size: var(--text-13); line-height: 1.45; font-variant-numeric: tabular-nums; }
.review-dialog .item-analysis :is(td,th) { overflow-wrap: normal; min-width: 72px; }
.review-dialog .item-analysis th { background: var(--surface-sunken); text-align: left; }
.review-dialog .item-analysis :is(pre, .math.block) { display: block; max-width: 100%; overflow: auto; }
.review-dialog .item-analysis .align-left { text-align: left; }
.review-dialog .item-analysis .align-center { text-align: center; }
.review-dialog .item-analysis .align-right { text-align: right; }

/* Dialogs stay inside the window; their bodies scroll. */
.review-dialog dl { display: grid; grid-template-columns: auto 1fr; gap: var(--space-1) var(--space-4); margin: 0; }
.review-dialog dt { color: var(--ink-muted); }
.review-dialog dd { margin: 0; min-width: 0; font-variant-numeric: tabular-nums; }
.review-dialog #source-notice { margin-top: var(--space-3); font-size: var(--text-12); }
.review-dialog#invoice-dialog { width: min(760px, calc(100% - var(--space-6))); }

.review-dialog.item-dialog { width: min(960px, calc(100% - var(--space-6))); padding: 0; overflow: hidden; }
.review-dialog.item-dialog[open] { display: flex; flex-direction: column; }
.item-dialog .item-head { flex-shrink: 0; display: flex; align-items: flex-start; gap: var(--space-4); padding: var(--space-5) var(--space-5) var(--space-3); }
.item-dialog .item-title { display: grid; gap: var(--space-1); min-width: 0; }
.item-dialog .item-meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); font-size: var(--text-12); }
.item-dialog .item-head .actions { margin-left: auto; flex-shrink: 0; flex-wrap: nowrap; }
.item-dialog .item-result-status { padding: 0 var(--space-5); font-size: var(--text-12); }
.item-dialog .item-result-status:empty { display: none; }
.item-dialog .item-body { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.item-dialog .item-compare { flex-shrink: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); padding: var(--space-2) var(--space-5) var(--space-4); }
.item-dialog .item-compare section { display: grid; gap: var(--space-2); align-content: start; padding: var(--space-3) var(--space-4); border-radius: var(--radius-lg); }
.item-dialog .declared-box { border: 1px solid var(--line); background: var(--paper); }
.item-dialog .proposed-box { border: 1px solid var(--line-strong); }
.item-dialog .mini-table-scroll { max-width: 100%; overflow-x: auto; }
.item-dialog .item-cclasstrib { font-size: var(--text-13); color: var(--ink-muted); }
.item-dialog .item-cclasstrib .code { color: var(--ink); }
.item-dialog #item-scenarios > p { font-size: var(--text-13); }
.item-dialog .mini-table { width: 100%; border-collapse: collapse; font-size: var(--text-13); font-variant-numeric: tabular-nums; }
.item-dialog .mini-table :is(th,td) { padding: var(--space-1) var(--space-2); border: 1px solid var(--line); text-align: left; vertical-align: top; }
.item-dialog .mini-table thead th { background: var(--surface-sunken); }
.item-dialog .mini-table :is(th,td) { overflow-wrap: normal; }
.item-dialog .declared-table :is(th,td) { white-space: nowrap; }
.item-dialog .scenario-note { margin-top: var(--space-1); font-size: var(--text-12); }
.item-dialog .scenario-table td:not(:first-child) { white-space: nowrap; overflow-wrap: normal; }
.item-dialog .item-analysis { flex: 1; min-height: calc(var(--space-8) * 2); overflow-y: auto; padding: var(--space-5); font-size: var(--text-16); line-height: 1.65; }
.item-dialog .item-foot { flex-shrink: 0; display: flex; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-5); border-top: 1px solid var(--line); }
.item-dialog .item-foot p { font-size: var(--text-12); }
.item-dialog .item-foot button { margin-left: auto; }

@media (max-width: 960px) {
 .cbs-review .summary-box { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
 .cbs-review .assessment-dates { grid-template-columns: repeat(4, auto); justify-content: start; }
}
@media (max-width: 720px) {
 .cbs-review .summary-side { display: none; }
 .cbs-review #comparison-scroll { display: none; }
 .cbs-review #mobile-items { display: block; flex: 1; min-height: 0; overflow-y: auto; margin: 0; padding: 0 var(--space-3); list-style: none; }
 .cbs-review #mobile-items li { border-bottom: 1px solid var(--line); }
 .cbs-review .mobile-item { display: grid; gap: var(--space-1); justify-content: stretch; width: 100%; padding: var(--space-3) 0; border: 0; border-radius: 0; background: transparent; font-weight: var(--weight-regular); text-align: left; }
 .cbs-review .mobile-item:hover:not(:disabled) { background: transparent; }
 .cbs-review .mobile-title { display: flex; align-items: flex-start; gap: var(--space-2); }
 .cbs-review .mobile-name { flex: 1; font-weight: var(--weight-semibold); font-size: var(--text-14); }
 .cbs-review .mobile-proposal { font-size: var(--text-13); }
 .review-dialog.item-dialog { width: 100%; max-width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border: 0; border-radius: 0; }
 .item-dialog .item-head { flex-wrap: wrap; padding: var(--space-3); }
 .item-dialog .item-head .actions { width: 100%; margin-left: 0; }
 .item-dialog .item-head .actions #close-item { margin-left: auto; }
 .item-dialog .item-body { overflow-y: auto; }
 .item-dialog .item-compare { grid-template-columns: minmax(0, 1fr); padding: var(--space-2) var(--space-3) var(--space-3); }
 .item-dialog .item-analysis { flex: none; min-height: 0; overflow: visible; padding: var(--space-3); }
 .item-dialog .item-foot { padding: var(--space-2) var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom)); }
 .item-dialog .item-foot p { display: none; }
 .item-dialog .item-foot button { width: 100%; }
}
@media (max-width: 600px) {
 :is(.cbs-review,.review-dialog) :is(input,textarea), .cbs-review .file-picker { min-height: 44px; }
 .review-dialog dl { grid-template-columns: minmax(0, 1fr); }
 .review-dialog dd { margin-bottom: var(--space-2); }
}
@media (max-height: 600px) {
 .cbs-review .summary-box { grid-template-columns: minmax(0, 1fr); }
 .cbs-review .summary-side { display: none; }
}

.cbs-review #document-selection { display: grid; gap: var(--space-2); min-width: 0; }
.cbs-review #sped-documents { width: 100%; min-width: 0; font: inherit; color: var(--ink); background: var(--surface); }
.cbs-review #select-documents { justify-self: start; }

.cbs-review :is(.proposed-legal,.mobile-legal) p { margin: 0 0 var(--space-2); }
.cbs-review :is(.proposed-legal,.mobile-legal) a { color: var(--info); text-decoration: underline; }
.cbs-review .mobile-legal { padding: 0 var(--space-4) var(--space-4); font-size: var(--text-13); }

.cbs-review .classification-description { margin-block: var(--space-2); }

/* Filename opens source-level data; item declarations stay in the item dialog. */
.cbs-review .source-details { display: block; max-width: 100%; min-height: 32px; padding: 0; border: 0; background: transparent; color: var(--ink); text-align: left; text-decoration: underline; text-underline-offset: 3px; font-weight: var(--weight-semibold); }
.invoice-document + .invoice-document { margin-top: var(--space-5); padding-top: var(--space-5); border-top: 1px solid var(--line); }
.invoice-document h3 { margin: 0 0 var(--space-3); font-size: var(--text-17); }
.invoice-document dd { overflow-wrap: anywhere; }
@media (max-width: 600px) { .cbs-review .source-details { min-height: 44px; } }

/* The free reference shares the entry column and remains reachable during review. */
.cbs-review .entry-content { margin-block: 0 auto; }
.classification-reference { min-width: 0; width: 100%; text-align: left; }
.reference-heading { display: flex; align-items: baseline; gap: var(--space-2); margin-bottom: var(--space-3); }
.reference-heading h2 { font-size: var(--text-16); line-height: 1.4; }
.reference-heading .eyebrow { flex: none; }
.classification-reference form { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; }
.classification-reference label { width: 100%; font-size: var(--text-13); font-weight: var(--weight-semibold); }
.classification-reference input { min-width: 0; min-height: 44px; flex: 1 1 140px; padding: var(--space-2) var(--space-3); border: 1px solid var(--line-strong); border-radius: var(--radius-md); background: var(--surface); font-size: var(--text-13); }
.classification-reference p { font-size: var(--text-13); margin-block: var(--space-2); }
.classification-reference p:empty { display: none; }
.classification-reference .table-frame { max-height: 280px; overflow: auto; margin: var(--space-2) 0; }
.classification-reference .table-frame:not(:has(tbody tr)) { display: none; }
.classification-reference table { width: 100%; min-width: 520px; }
.classification-reference th { white-space: nowrap; }
.classification-reference td { white-space: normal; overflow-wrap: anywhere; }
.cbs-review .reference-dock { flex: 0 0 auto; max-height: 30%; overflow: auto; padding: var(--space-3) var(--space-5); border-top: 1px solid var(--line); }
.reference-dock .classification-reference { width: min(100%, 600px); margin-inline: auto; }
@media (max-width: 600px) {
 .cbs-review .reference-dock { padding-inline: var(--space-3); }
 .classification-reference input { font-size: var(--text-16); }
 .classification-reference #classification-browse { flex-basis: 100%; }
}
