.xava-git-page .xava-ui-page-content {
    display: grid;
    gap: var(--xava-ui-space-4);
}

.xava-git-workspace {
    min-width: 0;
    display: grid;
    grid-template-columns: minmax(19rem, 22rem) minmax(0, 1fr);
    align-items: start;
    gap: var(--xava-ui-space-4);
}

.xava-git-message {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: start;
    gap: var(--xava-ui-space-3);
    padding: .78rem .9rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-success) 46%, transparent);
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-success) 10%, var(--xava-ui-surface));
    color: var(--xava-ui-text);
}

.xava-git-message.is-error {
    border-color: color-mix(in srgb, var(--xava-ui-danger) 48%, transparent);
    background: color-mix(in srgb, var(--xava-ui-danger) 10%, var(--xava-ui-surface));
}

.xava-git-message-icon {
    width: 1.3rem;
    height: 1.3rem;
    color: var(--xava-ui-success);
}

.xava-git-message.is-error .xava-git-message-icon {
    color: var(--xava-ui-danger);
}

.xava-git-message-icon svg,
.xava-git-message > button svg,
.xava-git-search svg,
.xava-git-dialog > header button svg {
    width: 100%;
    height: 100%;
    fill: currentColor;
}

.xava-git-message strong {
    display: block;
    font-size: .82rem;
}

.xava-git-message p {
    margin: .12rem 0 0;
    color: var(--xava-ui-muted);
    font-size: .8rem;
}

.xava-git-message > button,
.xava-git-dialog > header button {
    width: 1.8rem;
    height: 1.8rem;
    display: grid;
    place-items: center;
    padding: .38rem;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--xava-ui-muted);
}

.xava-git-command-bar {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: var(--xava-ui-space-4);
    padding: var(--xava-ui-space-4);
    border: 1px solid color-mix(in srgb, var(--xava-ui-primary) 32%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-lg);
    background:
        linear-gradient(135deg, rgba(var(--xava-ui-primary-rgb), .09), transparent 50%),
        var(--xava-ui-surface);
    box-shadow: var(--xava-ui-shadow-sm);
}

.xava-git-direction {
    display: grid;
    gap: .4rem;
}

.xava-git-direction > span {
    color: var(--xava-ui-text);
    font-size: .7rem;
    font-weight: 760;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.xava-git-direction > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .5rem;
}

.xava-git-direction-option {
    min-width: 0;
    display: grid;
    gap: .18rem;
    padding: .65rem .8rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-surface-raised) 88%, transparent);
    color: var(--xava-ui-text);
    text-align: left;
    transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.xava-git-direction-option:hover:not(:disabled) {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 48%, var(--xava-ui-border));
}

.xava-git-direction-option.is-selected {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 68%, var(--xava-ui-border));
    background: color-mix(in srgb, var(--xava-ui-primary) 12%, var(--xava-ui-surface-raised));
    box-shadow: inset 3px 0 0 var(--xava-ui-primary);
}

.xava-git-direction-option strong {
    font-size: .8rem;
}

.xava-git-direction-option small {
    overflow: hidden;
    color: var(--xava-ui-muted);
    font-size: .68rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-cleanup-mode {
    display: grid;
    gap: .4rem;
    padding-top: var(--xava-ui-space-3);
    border-top: 1px solid var(--xava-ui-border);
}

.xava-git-cleanup-mode > span {
    color: var(--xava-ui-text);
    font-size: .7rem;
    font-weight: 760;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.xava-git-cleanup-button {
    min-width: 0;
    display: grid;
    gap: .18rem;
    padding: .65rem .8rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-surface-raised) 88%, transparent);
    color: var(--xava-ui-text);
    text-align: left;
    transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.xava-git-cleanup-button:hover:not(:disabled) {
    border-color: color-mix(in srgb, var(--xava-ui-warning) 48%, var(--xava-ui-border));
}

.xava-git-cleanup-button.is-selected {
    border-color: color-mix(in srgb, var(--xava-ui-warning) 68%, var(--xava-ui-border));
    background: color-mix(in srgb, var(--xava-ui-warning) 10%, var(--xava-ui-surface-raised));
    box-shadow: inset 3px 0 0 var(--xava-ui-warning);
}

.xava-git-cleanup-button strong {
    font-size: .8rem;
}

.xava-git-cleanup-button small {
    color: var(--xava-ui-muted);
    font-size: .68rem;
    line-height: 1.35;
}

.xava-git-cleanup-overview {
    display: grid;
    gap: .24rem;
    padding: .68rem .75rem;
    border-left: 2px solid color-mix(in srgb, var(--xava-ui-success) 58%, transparent);
    background: color-mix(in srgb, var(--xava-ui-success) 6%, transparent);
}

.xava-git-cleanup-overview strong {
    font-size: .8rem;
}

.xava-git-cleanup-overview small {
    color: var(--xava-ui-muted);
    font-size: .7rem;
    line-height: 1.4;
}

.xava-git-source-picker {
    min-width: 0;
    display: grid;
    gap: .32rem;
}

.xava-git-source-picker > span {
    color: var(--xava-ui-text);
    font-size: .76rem;
    font-weight: 760;
    letter-spacing: .025em;
    text-transform: uppercase;
}

/* The anchor is a dialog trigger, not a native select: the choice needs a state
   summary per option and a named reason on the ones that cannot be chosen.
   Sized to match the select it replaced. */
.xava-git-source-button {
    min-height: var(--xava-ui-control-lg);
    width: 100%;
    min-width: 0;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--xava-ui-space-2, .5rem);
    padding: .3rem .7rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-primary) 48%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-button);
    color: var(--xava-ui-text);
    background: var(--xava-ui-surface-raised);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.xava-git-source-button:hover:not(:disabled) {
    border-color: var(--xava-ui-primary);
}

.xava-git-source-button:disabled {
    opacity: .58;
    cursor: not-allowed;
}

.xava-git-source-button strong {
    font-size: .92rem;
    font-weight: 750;
}

.xava-git-source-button > span {
    min-width: 0;
    overflow: hidden;
    color: var(--xava-ui-muted);
    font-size: .78rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-source-button svg {
    width: 1.1rem;
    height: 1.1rem;
    fill: var(--xava-ui-muted);
}

.xava-git-source-substitution {
    margin: 0;
    padding: .42rem .6rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-warning) 46%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-sm);
    background: color-mix(in srgb, var(--xava-ui-warning) 10%, transparent);
    color: var(--xava-ui-text);
    font-size: .76rem;
}

.xava-git-source-options {
    margin: 0;
    padding: 0;
    display: grid;
    gap: var(--xava-ui-space-2, .5rem);
    list-style: none;
}

.xava-git-source-option {
    width: 100%;
    min-width: 0;
    display: grid;
    gap: .22rem;
    padding: .62rem .74rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-sm);
    color: var(--xava-ui-text);
    background: var(--xava-ui-surface);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.xava-git-source-option:hover:not(:disabled),
.xava-git-source-option[aria-current="true"] {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 58%, var(--xava-ui-border));
    background: color-mix(in srgb, var(--xava-ui-primary) 8%, var(--xava-ui-surface));
}

/* Kept visible rather than filtered out: a source vanishing from the list reads
   as a bug, whereas a disabled row carrying its reason reads as a state. */
.xava-git-source-option.is-blocked {
    opacity: .72;
    cursor: not-allowed;
}

.xava-git-source-option-head {
    display: flex;
    align-items: center;
    gap: var(--xava-ui-space-2, .5rem);
    flex-wrap: wrap;
}

.xava-git-source-option-head strong {
    font-size: .9rem;
    font-weight: 750;
}

.xava-git-source-option-meta {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    color: var(--xava-ui-muted);
    font-size: .74rem;
}

.xava-git-source-option-subject {
    overflow: hidden;
    color: var(--xava-ui-muted);
    font-size: .74rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-source-empty {
    margin: 0 0 var(--xava-ui-space-3, .75rem);
    color: var(--xava-ui-muted);
    font-size: .82rem;
}

.xava-git-source-picker small {
    min-height: 1.1rem;
    color: var(--xava-ui-muted);
    font-size: .73rem;
}

.xava-git-selection-summary {
    min-width: 8.5rem;
    display: flex;
    align-items: baseline;
    justify-content: flex-start;
    gap: .4rem;
    padding-bottom: 0;
    white-space: nowrap;
}

.xava-git-selection-summary strong {
    color: var(--xava-ui-primary);
    font-size: 1.2rem;
}

.xava-git-selection-summary span,
.xava-git-permission-note {
    color: var(--xava-ui-muted);
    font-size: .76rem;
}

.xava-git-selection-summary .xava-ui-button-spinner {
    width: .85rem;
    height: .85rem;
}

.xava-git-permission-note {
    max-width: none;
    margin: 0;
}

.xava-git-command-bar .xava-git-review-button {
    width: 100%;
}

.xava-git-list-shell {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-lg);
    background: var(--xava-ui-surface);
    box-shadow: var(--xava-ui-shadow-sm);
}

.xava-git-list-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--xava-ui-space-4);
    padding: .85rem 1rem;
    border-bottom: 1px solid var(--xava-ui-border);
}

.xava-git-list-toolbar h2 {
    margin: 0;
    font-size: .96rem;
    font-weight: 760;
}

.xava-git-list-toolbar p {
    margin: .12rem 0 0;
    color: var(--xava-ui-muted);
    font-size: .75rem;
}

.xava-git-list-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--xava-ui-space-2);
}

.xava-git-search {
    position: relative;
    width: min(24rem, 38vw);
}

.xava-git-search svg {
    position: absolute;
    top: 50%;
    left: .68rem;
    width: 1rem;
    height: 1rem;
    color: var(--xava-ui-muted);
    transform: translateY(-50%);
    pointer-events: none;
}

.xava-git-search input {
    min-height: var(--xava-ui-control-sm);
    padding-left: 2.05rem;
    font-size: .78rem;
}

.xava-git-table-wrap {
    max-height: min(58vh, 44rem);
    overflow: auto;
}

.xava-git-table {
    width: 100%;
    min-width: 72rem;
    border-collapse: separate;
    border-spacing: 0;
}

.xava-git-table th {
    position: sticky;
    z-index: 2;
    top: 0;
    padding: .58rem .7rem;
    border-bottom: 1px solid var(--xava-ui-border);
    background: var(--xava-ui-surface-muted);
    color: var(--xava-ui-muted);
    font-size: .66rem;
    font-weight: 760;
    letter-spacing: .055em;
    text-transform: uppercase;
    white-space: nowrap;
}

.xava-git-table td {
    height: 3.45rem;
    padding: .56rem .7rem;
    border-bottom: 1px solid color-mix(in srgb, var(--xava-ui-border) 72%, transparent);
    color: var(--xava-ui-text);
    font-size: .78rem;
    vertical-align: middle;
}

.xava-git-table tbody tr {
    transition: background-color var(--xava-ui-transition);
}

.xava-git-table tbody tr:hover {
    background: color-mix(in srgb, var(--xava-ui-primary) 4%, transparent);
}

.xava-git-table tbody tr.is-selected {
    background: color-mix(in srgb, var(--xava-ui-primary) 9%, transparent);
}

.xava-git-table tbody tr.is-source {
    background: color-mix(in srgb, var(--xava-ui-info) 8%, transparent);
    box-shadow: inset 3px 0 color-mix(in srgb, var(--xava-ui-info) 72%, transparent);
}

.xava-git-table tbody tr.is-unavailable {
    background: color-mix(in srgb, var(--xava-ui-muted) 2%, transparent);
}

.xava-git-table tbody tr.is-unavailable td {
    color: color-mix(in srgb, var(--xava-ui-muted) 78%, transparent);
}

.xava-git-table tbody tr:last-child td {
    border-bottom: 0;
}

.xava-git-check-column {
    width: 3rem;
    text-align: center;
}

.xava-git-source-name {
    display: flex;
    align-items: center;
    gap: .4rem;
    white-space: nowrap;
}

.xava-git-source-name strong {
    font-size: .82rem;
}

.xava-git-selection-reason {
    display: block;
    max-width: 34rem;
    margin-top: .24rem;
    color: var(--xava-ui-muted);
    font-size: .68rem;
    line-height: 1.35;
    white-space: normal;
}

.xava-git-source-tools {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .3rem .75rem;
    margin-top: .28rem;
}

.xava-git-description-toggle,
.xava-git-changes-toggle {
    padding: 0;
    border: 0;
    background: transparent;
    color: color-mix(in srgb, var(--xava-ui-primary) 78%, var(--surux-hue-lift) 22%);
    font-size: .68rem;
    font-weight: 700;
    text-align: left;
}

.xava-git-changes-toggle {
    color: color-mix(in srgb, var(--xava-ui-info) 82%, var(--surux-hue-lift) 18%);
}

.xava-git-description-toggle:hover,
.xava-git-changes-toggle:hover {
    text-decoration: underline;
}

.xava-git-description-toggle:disabled,
.xava-git-changes-toggle:disabled {
    opacity: .55;
}

.xava-git-source-description {
    max-width: 34rem;
    margin: .32rem 0 0;
    color: var(--xava-ui-muted);
    font-size: .7rem;
    line-height: 1.45;
    white-space: normal;
}

.xava-git-table-empty {
    padding: 2rem 1rem !important;
    color: var(--xava-ui-muted) !important;
    text-align: center;
}

.xava-git-table tbody tr.is-unavailable .xava-git-selection-reason {
    color: color-mix(in srgb, var(--xava-ui-warning) 72%, var(--xava-ui-muted));
}

.xava-git-saved-badge,
.xava-git-base-badge {
    padding: .14rem .38rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-muted) 34%, transparent);
    border-radius: var(--xava-ui-radius-pill);
    background: color-mix(in srgb, var(--xava-ui-muted) 8%, transparent);
    color: var(--xava-ui-muted);
    font-size: .61rem;
    font-weight: 760;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.xava-git-base-badge {
    border-color: color-mix(in srgb, var(--xava-ui-info) 48%, transparent);
    background: color-mix(in srgb, var(--xava-ui-info) 12%, transparent);
    color: color-mix(in srgb, var(--xava-ui-info) 76%, var(--surux-hue-lift) 24%);
}

.xava-git-branch,
.xava-git-commit,
.xava-git-path {
    color: var(--xava-ui-text);
    font-size: .75rem;
}

.xava-git-branch {
    color: color-mix(in srgb, var(--xava-ui-primary) 72%, var(--surux-hue-lift) 28%);
    white-space: nowrap;
}

.xava-git-gap {
    min-height: 1.4rem;
    display: inline-flex;
    align-items: center;
    padding: .16rem .46rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-pill);
    background: color-mix(in srgb, var(--xava-ui-muted) 7%, transparent);
    color: var(--xava-ui-muted);
    font-size: .68rem;
    font-style: normal;
    font-weight: 720;
    line-height: 1.15;
    white-space: nowrap;
}

.xava-git-gap.is-source,
.xava-git-gap.is-ahead {
    border-color: color-mix(in srgb, var(--xava-ui-info) 42%, transparent);
    background: color-mix(in srgb, var(--xava-ui-info) 10%, transparent);
    color: color-mix(in srgb, var(--xava-ui-info) 76%, var(--surux-hue-lift) 24%);
}

.xava-git-gap.is-synced {
    border-color: color-mix(in srgb, var(--xava-ui-success) 42%, transparent);
    background: color-mix(in srgb, var(--xava-ui-success) 10%, transparent);
    color: color-mix(in srgb, var(--xava-ui-success) 76%, var(--surux-hue-lift) 24%);
}

.xava-git-gap.is-behind {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 46%, transparent);
    background: color-mix(in srgb, var(--xava-ui-primary) 11%, transparent);
    color: color-mix(in srgb, var(--xava-ui-primary) 78%, var(--surux-hue-lift) 22%);
}

.xava-git-gap.is-diverged {
    border-color: color-mix(in srgb, var(--xava-ui-warning) 48%, transparent);
    background: color-mix(in srgb, var(--xava-ui-warning) 10%, transparent);
    color: color-mix(in srgb, var(--xava-ui-warning) 78%, var(--surux-hue-lift) 22%);
}

.xava-git-gap.is-muted {
    opacity: .76;
}

.xava-git-commit,
.xava-git-muted {
    color: var(--xava-ui-muted);
    white-space: nowrap;
}

.xava-git-path {
    max-width: 28rem;
    display: block;
    overflow: hidden;
    color: var(--xava-ui-muted);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-results .xava-ui-surface-body {
    padding: 0;
}

.xava-git-result-list {
    display: grid;
}

.xava-git-result-row {
    display: grid;
    grid-template-columns: 10rem minmax(10rem, .8fr) minmax(12rem, 1fr) auto;
    align-items: center;
    gap: var(--xava-ui-space-3);
    padding: .65rem 1rem;
    border-bottom: 1px solid var(--xava-ui-border);
    font-size: .78rem;
}

.xava-git-result-row:last-child {
    border-bottom: 0;
}

.xava-git-result-row span {
    overflow: hidden;
    color: var(--xava-ui-muted);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-result-detail {
    grid-column: 2 / -1;
    color: var(--xava-ui-danger);
    line-height: 1.45;
}

.xava-git-dialog-backdrop {
    position: fixed;
    z-index: 1040;
    inset: 0;
    background: rgba(2, 7, 16, .7);
    backdrop-filter: blur(3px);
}

.xava-git-dialog {
    position: fixed;
    z-index: 1050;
    top: 50%;
    left: 50%;
    width: min(42rem, calc(100vw - 2rem));
    max-height: calc(100vh - 2rem);
    max-height: calc(100dvh - 2rem);
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--xava-ui-primary) 34%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-lg);
    background: var(--xava-ui-surface-raised);
    box-shadow: 0 1.5rem 5rem rgba(0, 0, 0, .5);
    transform: translate(-50%, -50%);
}

.xava-git-dialog > header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--xava-ui-space-4);
    padding: 1rem 1.1rem;
    border-bottom: 1px solid var(--xava-ui-border);
}

.xava-git-dialog h2 {
    margin: .18rem 0 0;
    color: var(--xava-ui-text);
    font-size: 1.12rem;
}

.xava-git-dialog-body {
    min-height: 0;
    display: grid;
    gap: var(--xava-ui-space-4);
    padding: 1rem 1.1rem;
    overflow: auto;
    overscroll-behavior: contain;
}

.xava-git-dialog-body > p {
    margin: 0;
    color: var(--xava-ui-muted);
    font-size: .82rem;
    line-height: 1.55;
}

.xava-git-dialog-source {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .28rem .7rem;
    padding: .75rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-info) 34%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-info) 8%, transparent);
}

.xava-git-dialog-source span {
    color: var(--xava-ui-muted);
    font-size: .72rem;
}

.xava-git-dialog-source strong {
    font-size: .82rem;
}

.xava-git-dialog-source code {
    grid-column: 1 / -1;
    overflow: hidden;
    color: var(--xava-ui-muted);
    font-size: .72rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-action-options {
    min-width: 0;
    display: grid;
    gap: .5rem;
    margin: 0;
    padding: 0;
    border: 0;
}

.xava-git-action-options legend {
    margin: 0 0 .12rem;
    color: var(--xava-ui-muted);
    font-size: .68rem;
    font-weight: 760;
    letter-spacing: .055em;
    text-transform: uppercase;
}

.xava-git-action-option {
    min-width: 0;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    gap: .7rem;
    padding: .7rem .78rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-md);
    background: var(--xava-ui-surface);
    cursor: pointer;
    transition:
        border-color var(--xava-ui-transition),
        background-color var(--xava-ui-transition);
}

.xava-git-action-option:hover {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 38%, var(--xava-ui-border));
}

.xava-git-action-option.is-selected {
    border-color: color-mix(in srgb, var(--xava-ui-primary) 66%, var(--xava-ui-border));
    background: color-mix(in srgb, var(--xava-ui-primary) 9%, var(--xava-ui-surface));
}

.xava-git-action-option > input {
    margin-top: .17rem;
    accent-color: var(--xava-ui-primary);
}

.xava-git-action-option > span {
    min-width: 0;
    display: grid;
    gap: .16rem;
}

.xava-git-action-option strong {
    color: var(--xava-ui-text);
    font-size: .8rem;
}

.xava-git-action-option strong em {
    margin-left: .35rem;
    padding: .1rem .32rem;
    border-radius: var(--xava-ui-radius-pill);
    background: color-mix(in srgb, var(--xava-ui-primary) 14%, transparent);
    color: color-mix(in srgb, var(--xava-ui-primary) 78%, var(--surux-hue-lift) 22%);
    font-size: .58rem;
    font-style: normal;
    letter-spacing: .03em;
    text-transform: uppercase;
}

.xava-git-action-option small {
    color: var(--xava-ui-muted);
    font-size: .72rem;
    line-height: 1.45;
}

.xava-git-action-explanation {
    padding: .62rem .7rem;
    border-left: 2px solid color-mix(in srgb, var(--xava-ui-info) 54%, transparent);
    background: color-mix(in srgb, var(--xava-ui-info) 6%, transparent);
}

.xava-git-confirm-targets {
    max-height: 16rem;
    display: grid;
    gap: .4rem;
    overflow: auto;
}

.xava-git-confirm-targets > span {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    align-items: center;
    gap: var(--xava-ui-space-3);
    padding: .5rem .65rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-sm);
    background: var(--xava-ui-surface);
    font-size: .76rem;
}

.xava-git-confirm-targets small {
    color: var(--xava-ui-muted);
}

.xava-git-confirm-targets strong,
.xava-git-confirm-targets small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-dialog > footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--xava-ui-space-2);
    padding: .85rem 1.1rem;
    border-top: 1px solid var(--xava-ui-border);
    background: var(--xava-ui-surface-muted);
}

.xava-git-changes-dialog {
    width: min(68rem, calc(100vw - 2rem));
}

.xava-git-changes-error {
    padding: .8rem .9rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-danger) 54%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-danger) 10%, transparent);
    color: var(--xava-ui-text);
}

.xava-git-changes-error strong {
    font-size: .82rem;
}

.xava-git-changes-error p {
    margin: .25rem 0 0;
    color: color-mix(in srgb, var(--xava-ui-danger) 70%, var(--surux-hue-lift) 30%);
    font-size: .75rem;
    line-height: 1.5;
}

.xava-git-change-files,
.xava-git-patch {
    min-width: 0;
    display: grid;
    gap: .5rem;
}

.xava-git-change-section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.xava-git-change-section-heading h3 {
    margin: 0;
    color: var(--xava-ui-text);
    font-size: .78rem;
}

.xava-git-change-section-heading > span,
.xava-git-change-section-heading > code {
    color: var(--xava-ui-muted);
    font-size: .68rem;
}

.xava-git-change-file-list {
    max-height: 14rem;
    overflow: auto;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-md);
    background: var(--xava-ui-surface);
}

.xava-git-change-file {
    min-width: 0;
    display: grid;
    grid-template-columns: 5.4rem minmax(9rem, 1fr) 7.5rem auto;
    align-items: center;
    gap: .65rem;
    padding: .5rem .65rem;
    border-bottom: 1px solid var(--xava-ui-border);
    font-size: .7rem;
}

.xava-git-change-file:last-child {
    border-bottom: 0;
}

.xava-git-change-file > code {
    overflow: hidden;
    color: var(--xava-ui-text);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.xava-git-change-file > small {
    color: var(--xava-ui-muted);
}

.xava-git-change-status {
    width: fit-content;
    padding: .12rem .34rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-warning) 44%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-pill);
    color: color-mix(in srgb, var(--xava-ui-warning) 80%, var(--surux-hue-lift) 20%);
    font-size: .61rem;
    font-weight: 760;
}

.xava-git-change-status.is-added,
.xava-git-change-status.is-copied {
    border-color: color-mix(in srgb, var(--xava-ui-success) 48%, var(--xava-ui-border));
    color: color-mix(in srgb, var(--xava-ui-success) 78%, var(--surux-hue-lift) 22%);
}

.xava-git-change-status.is-deleted,
.xava-git-change-status.is-unmerged {
    border-color: color-mix(in srgb, var(--xava-ui-danger) 48%, var(--xava-ui-border));
    color: color-mix(in srgb, var(--xava-ui-danger) 72%, var(--surux-hue-lift) 28%);
}

.xava-git-change-counts {
    display: flex;
    justify-content: flex-end;
    gap: .35rem;
    font-family: var(--bs-font-monospace);
}

.xava-git-change-counts em {
    font-style: normal;
}

.xava-git-change-counts .is-addition {
    color: color-mix(in srgb, var(--xava-ui-success) 82%, var(--surux-hue-lift) 18%);
}

.xava-git-change-counts .is-deletion {
    color: color-mix(in srgb, var(--xava-ui-danger) 75%, var(--surux-hue-lift) 25%);
}

.xava-git-patch > p,
.xava-git-patch > small {
    margin: 0;
    color: var(--xava-ui-muted);
    font-size: .7rem;
    line-height: 1.45;
}

.xava-git-patch pre {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    max-height: 21rem;
    margin: 0;
    padding: .75rem;
    overflow: auto;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-md);
    background: color-mix(in srgb, var(--xava-ui-surface) 80%, var(--surux-sink) 20%);
    color: var(--xava-ui-text);
    font-size: .68rem;
    line-height: 1.45;
    tab-size: 4;
}

.xava-git-commit-message {
    display: grid;
    gap: .35rem;
}

.xava-git-commit-message > span {
    color: var(--xava-ui-text);
    font-size: .72rem;
    font-weight: 760;
}

.xava-git-commit-message textarea {
    min-height: 4.8rem;
    resize: vertical;
}

.xava-git-commit-message > small {
    color: var(--xava-ui-muted);
    font-size: .68rem;
}

@media (max-width: 1100px) {
    .xava-git-workspace {
        grid-template-columns: minmax(0, 1fr);
    }

    .xava-git-command-bar {
        grid-template-columns: minmax(18rem, 1fr) auto auto;
        align-items: end;
    }

    .xava-git-direction {
        grid-column: 1 / -1;
    }

    .xava-git-direction > div {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .xava-git-selection-summary {
        justify-content: flex-end;
        padding-bottom: .58rem;
    }

    .xava-git-command-bar .xava-git-review-button {
        width: auto;
    }
}

@media (max-width: 820px) {
    .xava-git-command-bar {
        grid-template-columns: 1fr;
        align-items: stretch;
    }

    .xava-git-selection-summary {
        justify-content: flex-start;
        padding: 0;
    }

    .xava-git-command-bar .xava-git-review-button {
        width: 100%;
    }

    .xava-git-list-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .xava-git-list-actions {
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .xava-git-search {
        width: 100%;
        flex: 1 0 100%;
    }
}

@media (max-width: 560px) {
    .xava-git-dialog {
        inset:
            max(.5rem, env(safe-area-inset-top))
            .5rem
            max(.5rem, env(safe-area-inset-bottom));
        width: auto;
        max-height: none;
        transform: none;
    }

    .xava-git-dialog > header {
        padding: .8rem .9rem;
    }

    .xava-git-dialog-body {
        padding: .85rem .9rem;
    }

    .xava-git-command-bar {
        padding: var(--xava-ui-space-3);
    }

    .xava-git-direction > div {
        grid-template-columns: 1fr;
    }

    .xava-git-result-row {
        grid-template-columns: 1fr auto;
    }

    .xava-git-result-row > span {
        grid-column: 1 / -1;
    }

    .xava-git-result-detail {
        grid-column: 1 / -1;
    }

    .xava-git-dialog > footer {
        flex-direction: column-reverse;
    }

    .xava-git-dialog > footer .xava-ui-button {
        width: 100%;
    }

    .xava-git-change-file {
        grid-template-columns: auto minmax(0, 1fr) auto;
    }

    .xava-git-change-file-list {
        max-height: none;
        overflow-y: visible;
    }

    .xava-git-change-file > small {
        grid-column: 2;
    }

    .xava-git-change-counts {
        grid-column: 3;
        grid-row: 1 / span 2;
    }

    .xava-git-patch pre {
        max-height: 16rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .xava-git-table tbody tr {
        transition: none;
    }
}

/* The list of ignored files a removal would destroy, inside the danger callout
   on the cleanup confirmation. Monospace because these are paths. */
.xava-git-ignored-artifacts {
    display: grid;
    gap: .1rem;
    margin: 0 0 var(--xava-ui-space-2);
}

.xava-git-ignored-artifacts strong {
    font-size: var(--xava-ui-text-sm);
}

.xava-git-ignored-artifacts span {
    color: var(--xava-ui-muted);
    font-family: var(--xava-ui-font-mono);
    font-size: var(--xava-ui-text-xs);
    line-height: var(--xava-ui-leading-snug);
    overflow-wrap: anywhere;
}

/* A real gate, so it is sized and spaced to be read rather than tucked away. */
.xava-git-ignored-ack {
    display: flex;
    align-items: flex-start;
    gap: var(--xava-ui-space-2);
    margin-top: var(--xava-ui-space-3);
    font-size: var(--xava-ui-text-sm);
    cursor: pointer;
}

.xava-git-ignored-ack input {
    width: 1rem;
    height: 1rem;
    margin-top: .15rem;
    flex: 0 0 auto;
    accent-color: var(--xava-ui-danger);
}


.xava-git-merge-progress {
    display: grid;
    gap: .65rem;
    min-width: 0;
    padding: .85rem;
    border: 1px solid color-mix(in srgb, var(--xava-ui-primary) 32%, var(--xava-ui-border));
    border-radius: var(--xava-ui-radius-md);
    background: var(--xava-ui-surface-raised);
}

.xava-git-merge-progress-heading {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: baseline;
    gap: .35rem 1rem;
    color: var(--xava-ui-text);
    font-size: var(--xava-ui-text-sm);
}

.xava-git-merge-elapsed {
    display: inline-flex;
    align-items: baseline;
    gap: .5rem;
    color: var(--xava-ui-muted);
}

.xava-git-merge-elapsed strong {
    color: var(--xava-ui-text);
    font-family: var(--xava-ui-font-mono);
    font-variant-numeric: tabular-nums;
}

.xava-git-merge-progress-track {
    height: .45rem;
    overflow: hidden;
    border-radius: 999px;
    background: color-mix(in srgb, var(--xava-ui-primary) 15%, var(--xava-ui-surface));
}

.xava-git-merge-progress-track > span {
    display: block;
    width: 35%;
    height: 100%;
    border-radius: inherit;
    background: var(--xava-ui-primary);
    animation: xava-git-merge-running 1.6s ease-in-out infinite;
}

.xava-git-merge-output {
    margin: 0;
    max-height: 6rem;
    overflow: auto;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    color: var(--xava-ui-muted);
    font-family: var(--xava-ui-font-mono);
    font-size: var(--xava-ui-text-xs);
    line-height: 1.5;
}

@keyframes xava-git-merge-running {
    from { transform: translateX(-110%); }
    to { transform: translateX(300%); }
}

@media (prefers-reduced-motion: reduce) {
    .xava-git-merge-progress-track > span {
        animation: none;
        transform: translateX(90%);
    }
}
.xava-git-view-switch {
    display: flex;
    flex-wrap: wrap;
    gap: var(--xava-ui-space-2);
}

.xava-git-view-switch button {
    padding: .55rem .9rem;
    border: 1px solid var(--xava-ui-border);
    border-radius: var(--xava-ui-radius-sm);
    background: var(--xava-ui-surface);
    color: var(--xava-ui-text);
    font-size: .82rem;
    font-weight: 720;
}

.xava-git-view-switch button:hover:enabled {
    background: var(--xava-ui-surface-raised);
}

.xava-git-view-switch button[aria-pressed="true"] {
    border-color: var(--xava-ui-primary);
    background: color-mix(in srgb, var(--xava-ui-primary) 10%, var(--xava-ui-surface));
}

.xava-git-view-switch button:focus-visible {
    outline: 2px solid var(--xava-ui-primary);
    outline-offset: 3px;
}

.xava-git-view-switch button:disabled {
    opacity: .55;
    cursor: default;
}

.xava-git-history-destination {
    display: grid;
    gap: .4rem;
    max-width: 48rem;
    color: var(--xava-ui-muted);
    font-size: .78rem;
}
