/* ============================================================
   V2 surface reset
   Shared rules for quieter frames, fewer decorative lines, and
   consistent white work surfaces across registries and workbenches.
   ============================================================ */

:root {
    --v2-surface-bg: var(--bg-card);
    --v2-surface-muted-bg: color-mix(in srgb, var(--bg-card) 92%, var(--bg-subtle));
    --v2-surface-soft-bg: color-mix(in srgb, var(--bg-card) 97%, var(--bg-app));
    --v2-surface-border: color-mix(in srgb, var(--border-light) 64%, transparent);
    --v2-surface-line: color-mix(in srgb, var(--border-subtle) 36%, transparent);
    --v2-surface-line-soft: color-mix(in srgb, var(--border-subtle) 18%, transparent);
    --v2-surface-radius: var(--r-md);
    --v2-surface-radius-sm: var(--r-sm);
    --v2-surface-shadow: none;
    --v2-empty-field-bg: color-mix(in srgb, var(--bg-card) 68%, #e7e1d4);
    --v2-empty-field-border: color-mix(in srgb, var(--border-light) 42%, #8f8a7f);
}

body.v2-shell .v2-section-card,
body.v2-shell .v2-toolbar,
body.v2-shell .v2-tablewrap,
body.v2-shell .v2-inline-list,
body.v2-shell .v2-branch-list,
body.v2-shell .v2-metric-list,
body.v2-shell .v2-readiness-list,
body.v2-shell .v2-tool-card,
body.v2-shell .v2-doc-row {
    border-color: var(--v2-surface-border);
    border-radius: var(--v2-surface-radius);
    background: var(--v2-surface-bg);
    box-shadow: var(--v2-surface-shadow);
}

body.v2-shell .v2-section-card-head,
body.v2-shell .v2-tablefoot,
body.v2-shell .v2-inline-edit-panel,
body.v2-shell .v2-inline-panel,
body.v2-shell .v2-branch-panel {
    border-color: var(--v2-surface-line);
}

body.v2-shell .v2-section-card-head {
    background: var(--v2-surface-bg);
}

body.v2-shell .v2-section-card > .v2-section-card-head:first-child,
body.v2-shell .v2-section-card > summary.v2-section-card-head:first-child {
    border-top-left-radius: calc(var(--v2-surface-radius) - 1px);
    border-top-right-radius: calc(var(--v2-surface-radius) - 1px);
}

body.v2-shell .v2-fact,
body.v2-shell .v2-fieldset,
body.v2-shell .v2-inline-row,
body.v2-shell .v2-branch-row,
body.v2-shell .v2-metric-row,
body.v2-shell .v2-readiness-list li,
body.v2-shell .v2-mini-card,
body.v2-shell .v2-timeline-item {
    border-color: var(--v2-surface-line);
}

body.v2-shell .v2-tablewrap .v2-tbl thead tr:first-child th:first-child {
    border-top-left-radius: calc(var(--v2-surface-radius) - 1px);
}

body.v2-shell .v2-tablewrap .v2-tbl thead tr:first-child th:last-child {
    border-top-right-radius: calc(var(--v2-surface-radius) - 1px);
}

body.v2-shell .v2-sidepanel,
body.v2-shell .v2-wizard,
body.v2-shell .v2-summary-box {
    border-color: var(--v2-surface-border);
    border-radius: var(--v2-surface-radius);
    background: var(--v2-surface-bg);
    box-shadow: var(--v2-surface-shadow);
}

body.v2-shell .v2-sidepanel-head,
body.v2-shell .v2-wizard-progress {
    border-top-left-radius: calc(var(--v2-surface-radius) - 1px);
    border-top-right-radius: calc(var(--v2-surface-radius) - 1px);
}

body.v2-shell .v2-sidepanel-head,
body.v2-shell .v2-sidepanel-foot,
body.v2-shell .v2-wizard-progress,
body.v2-shell .v2-wizard-stickybar,
body.v2-shell .v2-summary-box-title {
    border-color: var(--v2-surface-line);
}

body.v2-shell .v2-sidepanel-row,
body.v2-shell .v2-summary-row {
    border-bottom-color: var(--v2-surface-line-soft);
}

body.v2-shell .v2-inline-edit-cell,
body.v2-shell .v2-branch-panel,
body.v2-shell .v2-empty-soft,
body.v2-shell .v2-form .v2-empty-soft {
    background-color: var(--v2-surface-soft-bg);
}

body.v2-shell .v2-form .v2-empty-field,
body.v2-shell .v2-formgrid .v2-empty-field,
body.v2-shell .v2-import-form .v2-empty-field {
    border-color: var(--v2-empty-field-border);
    background-color: var(--v2-empty-field-bg);
    color: var(--text-secondary);
    box-shadow: none;
}

body.v2-shell .v2-form .v2-empty-field:focus,
body.v2-shell .v2-formgrid .v2-empty-field:focus,
body.v2-shell .v2-import-form .v2-empty-field:focus {
    background-color: var(--v2-surface-bg);
    color: var(--text-primary);
}

body.v2-shell .v2-form select:required:invalid,
body.v2-shell .v2-form input[type="date"]:required:invalid,
body.v2-shell .v2-form input[type="datetime-local"]:required:invalid {
    border-color: var(--v2-empty-field-border);
    background-color: var(--v2-empty-field-bg);
    color: var(--text-secondary);
    box-shadow: none;
}

body.v2-shell .v2-form select:required:invalid:focus,
body.v2-shell .v2-form input[type="date"]:required:invalid:focus,
body.v2-shell .v2-form input[type="datetime-local"]:required:invalid:focus {
    background-color: var(--v2-surface-bg);
    color: var(--text-primary);
}

body.v2-shell .v2-toolbar-divider {
    border-color: var(--v2-surface-line);
    background-color: var(--v2-surface-line);
}

body.v2-shell .v2-overview-col + .v2-overview-col,
body.v2-shell .page-contract-detail-v2 .contract-overview-col + .contract-overview-col,
body.v2-shell .page-compensation-case-v2 .comp-profile-overview-col + .comp-profile-overview-col {
    border-color: var(--v2-surface-line);
    background-color: transparent;
}

body.v2-shell .v2-tablewrap {
    --v2-table-header-bg: var(--v2-surface-muted-bg);
    --v2-table-separator: var(--v2-surface-line);
    --v2-table-frame-border: var(--v2-surface-border);
}

body.v2-shell .v2-toolbar-attached,
body.v2-shell .v2-tablewrap-attached-top {
    border-radius: var(--v2-surface-radius);
}

body.v2-shell .v2-toolbar-attached + .v2-tablewrap-attached-top {
    margin-top: var(--s-2);
}

body.v2-shell .v2-registry-page .v2-registry-head {
    margin-bottom: var(--s-2);
}

body.v2-shell .v2-registry-page .v2-toolbar-attached {
    border-bottom-color: transparent;
    border-bottom-right-radius: 0;
    border-bottom-left-radius: 0;
}

body.v2-shell .v2-registry-page .v2-toolbar-attached + .v2-tablewrap-attached-top {
    margin-top: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

body.v2-shell .v2-registry-page .v2-toolbar-attached + .v2-tablewrap-attached-top .v2-tbl thead tr:first-child th:first-child {
    border-top-left-radius: 0;
}

body.v2-shell .v2-registry-page .v2-toolbar-attached + .v2-tablewrap-attached-top .v2-tbl thead tr:first-child th:last-child {
    border-top-right-radius: 0;
}

body.v2-shell .v2-section-card .v2-section-card {
    margin-bottom: var(--s-3);
    border: 0;
    border-top: 1px solid var(--v2-surface-line);
    border-radius: 0;
    background: transparent;
}

body.v2-shell .v2-section-card .v2-section-card:last-child {
    margin-bottom: 0;
}

body.v2-shell .v2-section-card .v2-section-card > .v2-section-card-head,
body.v2-shell .v2-section-card .v2-section-card > summary.v2-section-card-head {
    padding-right: 0;
    padding-left: 0;
    border-radius: 0;
    background: transparent;
}

body.v2-shell .v2-section-card .v2-section-card > .v2-section-card-body {
    padding-right: 0;
    padding-left: 0;
    background: transparent;
}

body.v2-shell .v2-tbl thead th {
    border-bottom-color: var(--v2-surface-line);
}

body.v2-shell .v2-tbl tbody td {
    border-bottom-color: var(--v2-surface-line-soft);
}

body.v2-shell .v2-tbl tbody tr:last-child td {
    border-bottom-color: transparent;
}

/* Shared bridge for page-local finance, import, and compensation dialects. */
body.v2-shell .v2-import-form .v2-import-layout {
    gap: var(--s-4);
}

body.v2-shell .v2-import-form .v2-import-stack {
    gap: var(--s-4);
}

body.v2-shell .v2-import-form .v2-section-card,
body.v2-shell.page-compensation-case-v2 .comp-profile-card,
body.v2-shell.page-compensation-case-v2 .comp-disclosure-list,
body.v2-shell.page-compensation-case-v2 .comp-inline-panel,
body.v2-shell.page-compensation-case-v2 .comp-picker-results {
    border-color: var(--v2-surface-border);
    border-radius: var(--v2-surface-radius);
    background: var(--v2-surface-bg);
    box-shadow: none;
}

body.v2-shell .v2-import-form .v2-section-card-head,
body.v2-shell.page-compensation-case-v2 .comp-profile-card[open] > summary {
    border-bottom-color: var(--v2-surface-line);
    background: var(--v2-surface-bg);
}

body.v2-shell .v2-import-form input:not([type="checkbox"]):not([type="hidden"]),
body.v2-shell .v2-import-form select,
body.v2-shell .v2-import-form textarea,
body.v2-shell.page-compensation-case-v2 .v2-main input:not([type="checkbox"]):not([type="hidden"]):not([type="search"]),
body.v2-shell.page-compensation-case-v2 .v2-main select,
body.v2-shell.page-compensation-case-v2 .v2-main textarea,
body.v2-shell.page-compensation-case-v2 .v2-main .comp-picker-input {
    border-color: var(--v2-surface-line);
    border-radius: var(--r-sm);
    background: var(--v2-surface-bg);
}

body.v2-shell .v2-import-form .v2-empty-field,
body.v2-shell .v2-import-form select:required:invalid,
body.v2-shell .v2-import-form input[type="date"]:required:invalid,
body.v2-shell .v2-import-form input[type="datetime-local"]:required:invalid {
    border-color: var(--v2-empty-field-border);
    background: var(--v2-empty-field-bg);
    color: var(--text-secondary);
    box-shadow: none;
}

body.v2-shell .v2-import-form input[type="file"],
body.v2-shell.page-compensation-case-v2 .v2-main input[type="file"] {
    background: var(--v2-surface-soft-bg);
}

body.v2-shell .v2-import-form .v2-report-grid {
    gap: var(--s-2);
}

body.v2-shell .v2-import-form .v2-report-tile {
    border-color: var(--v2-surface-line);
    border-radius: var(--r-sm);
    background: var(--v2-surface-bg);
    box-shadow: none;
}

body.v2-shell .v2-import-form .v2-report-tile .k {
    color: var(--text-tertiary);
}

body.v2-shell .v2-import-form .v2-warning-list li {
    border-color: color-mix(in srgb, var(--warning) 28%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--warning-bg) 48%, var(--bg-card));
}

body.v2-shell .v2-comp-registry {
    border-color: var(--v2-surface-border);
    background: var(--v2-surface-bg);
    box-shadow: none;
}

body.v2-shell .v2-comp-registry .v2-tbl thead th {
    background: var(--v2-surface-muted-bg);
    border-bottom-color: var(--v2-surface-line);
}

body.v2-shell .v2-comp-registry .v2-tbl tbody td {
    border-bottom-color: var(--v2-surface-line-soft);
}

body.v2-shell .v2-comp-registry .v2-comp-doc-link,
body.v2-shell .v2-comp-registry .v2-comp-doc-action,
body.v2-shell .v2-comp-registry .v2-comp-doc-muted {
    height: 20px;
    padding-inline: 5px;
    border-color: var(--v2-surface-line);
    border-radius: var(--r-sm);
    background: var(--v2-surface-bg);
    box-shadow: none;
    font-size: 10.5px;
}

body.v2-shell .v2-comp-registry .v2-comp-doc-link {
    color: var(--accent-text);
    background: color-mix(in srgb, var(--accent-bg) 38%, var(--bg-card));
}

body.v2-shell .v2-comp-registry .v2-comp-doc-action:hover,
body.v2-shell .v2-comp-registry .v2-comp-doc-link:hover {
    border-color: color-mix(in srgb, var(--accent) 28%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--accent-bg) 48%, var(--bg-card));
}

body.v2-shell .v2-comp-registry .v2-comp-doc-action.is-stale {
    color: var(--warning);
    border-color: color-mix(in srgb, var(--warning) 34%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--warning-bg) 62%, var(--bg-card));
    box-shadow: none;
}

body.v2-shell .v2-comp-registry .v2-comp-doc-muted {
    color: var(--text-tertiary);
    background: var(--v2-surface-soft-bg);
}

body.v2-shell .v2-comp-registry .v2-comp-row-actions .v2-btn-icon,
body.v2-shell .v2-comp-registry .v2-comp-act-action-group .v2-btn-icon {
    border-color: transparent;
    background: transparent;
    box-shadow: none;
}

body.v2-shell .v2-comp-registry .v2-comp-row-actions .v2-btn-icon:hover,
body.v2-shell .v2-comp-registry .v2-comp-act-action-group .v2-btn-icon:hover {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-soft-bg);
}

body.v2-shell .v2-comp-yearlinks a {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-bg);
}

body.v2-shell .v2-comp-yearlinks a.is-active {
    border-color: color-mix(in srgb, var(--accent) 34%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--accent-bg) 56%, var(--bg-card));
}

body.v2-shell.page-compensation-case-v2 .comp-profile-overview-row,
body.v2-shell.page-compensation-case-v2 .comp-disclosure-row,
body.v2-shell.page-compensation-case-v2 .comp-readiness-list li {
    border-color: var(--v2-surface-line-soft);
}

body.v2-shell.page-compensation-case-v2 .comp-profile-cell,
body.v2-shell.page-compensation-case-v2 .comp-inline-panel {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-soft-bg);
}

/* Bridge for the current contract finance local dialect. This keeps the active
   contract worktree untouched while applying the shared surface rules. */
body.v2-shell .finance-import-panel {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-soft-bg);
    box-shadow: none;
}

body.v2-shell .finance-import-item {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-bg);
}

body.v2-shell .finance-component-tab {
    border-radius: var(--r-sm);
}

body.v2-shell .finance-component-tab:hover {
    background: var(--v2-surface-soft-bg);
}

body.v2-shell .finance-component-tab.is-active {
    border-color: color-mix(in srgb, var(--accent) 28%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--accent-bg) 64%, var(--bg-card));
}

body.v2-shell .cash-registry-form .v2-tablewrap {
    border-color: var(--v2-surface-border);
    background: var(--v2-surface-bg);
    box-shadow: none;
}

body.v2-shell .cash-registry-table thead th,
body.v2-shell .cash-registry-table thead .cash-student-col,
body.v2-shell .cash-registry-table thead .cash-class-col {
    background: var(--v2-surface-muted-bg);
    border-bottom-color: var(--v2-surface-line);
}

body.v2-shell .cash-registry-table tbody td {
    border-bottom-color: var(--v2-surface-line-soft);
}

body.v2-shell .cash-registry-table .cash-class-col {
    box-shadow: 1px 0 0 color-mix(in srgb, var(--v2-surface-line-soft) 60%, transparent);
}

body.v2-shell .cash-month-cell {
    min-width: 88px;
    background: var(--v2-surface-bg);
}

body.v2-shell .cash-month-cell.is-none {
    background: var(--v2-surface-soft-bg);
}

body.v2-shell .cash-input {
    width: 74px;
    height: 26px;
    border-color: var(--v2-surface-line);
    border-radius: var(--r-xs);
    background: var(--v2-surface-bg);
}

body.v2-shell .cash-payment-input {
    width: 74px;
}

body.v2-shell .cash-month-cell.is-paid .cash-input {
    border-color: color-mix(in srgb, var(--success) 22%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--success-bg) 58%, var(--bg-card));
    box-shadow: none;
}

body.v2-shell .cash-month-cell.is-overpaid .cash-input {
    border-color: color-mix(in srgb, var(--danger) 22%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--danger-bg) 50%, var(--bg-card));
    box-shadow: none;
}

body.v2-shell .cash-month-cell.is-partial .cash-input {
    border-color: color-mix(in srgb, var(--info) 20%, var(--v2-surface-line));
    background: color-mix(in srgb, var(--info-bg) 48%, var(--bg-card));
    box-shadow: none;
}

body.v2-shell .cash-month-cell.is-adjusted .cash-input {
    border-color: color-mix(in srgb, var(--warning) 24%, var(--v2-surface-line));
    box-shadow: none;
}

body.v2-shell .cash-month-cell.is-missing .cash-input {
    border-color: var(--v2-surface-line);
}

body.v2-shell .cash-adjustment-details {
    right: -13px;
}

body.v2-shell .cash-adjustment-details > summary {
    width: 12px;
    height: 18px;
    border-radius: var(--r-xs);
    font-size: 10px;
}

body.v2-shell .cash-month-cell:hover .cash-adjustment-details > summary,
body.v2-shell .cash-adjustment-details > summary:focus-visible,
body.v2-shell .cash-adjustment-details[open] > summary,
body.v2-shell .cash-adjustment-details.has-adjustment > summary {
    border-color: var(--v2-surface-line);
    background: var(--v2-surface-bg);
}
