/* Padrão único de marcas: símbolo, assinatura horizontal, arte e categoria.
   Tamanhos vêm do papel visual, nunca do nome de uma pessoa/transação. */
:root {
    --gf-visual-surface:#f4f6f9;
    --gf-visual-border:#d8e0ea;
    --gf-visual-ink:#53657c;
    --gf-visual-gap:13px;
}

.dark {
    --gf-visual-surface:#1a2330;
    --gf-visual-border:#344155;
    --gf-visual-ink:#a8b8cb;
}

.gf-visual {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:none;
    width:var(--gf-visual-w,36px);
    height:var(--gf-visual-h,36px);
    max-width:100%;
    border-radius:var(--gf-radius);
    vertical-align:middle;
    overflow:hidden;
    box-sizing:border-box;
}

.gf-visual-symbol,.gf-visual-wordmark {
    background:#fff;
    border:1px solid #e6eaf0;
    box-shadow:0 2px 4px #00000012;
    padding:3px;
}

.gf-visual>img {
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    max-width:100%;
    border-radius:0;
}

.gf-visual-square-canvas>img {
    object-fit:cover;
}

.gf-visual-card {
    /* Só o cartão: sem moldura em volta; a própria arte leva cantos e sombra. */
    background:transparent;
    border:0;
    padding:0;
    border-radius:0;
    box-shadow:none;
    overflow:visible;
}

.gf-visual-card>img {
    border-radius:calc(var(--gf-visual-h,36px) * .1);
    filter:drop-shadow(0 2px 5px #0000004d);
}

.gf-visual-icon,.gf-visual-initials {
    background:var(--gf-visual-surface);
    border:1px solid var(--gf-visual-border);
    color:var(--gf-visual-ink);
    box-shadow:none;
}

.gf-visual-icon>img {
    width:72%!important;
    height:72%!important;
    max-width:none!important;
    max-height:none!important;
    flex:none;
    filter:brightness(.65);
}

.dark .gf-visual-icon>img {
    filter:none;
}

/* Arte de reembolso: conserva as cores da nota e a seta em ambos os temas. */
.gf-visual-icon.gf-visual-reimbursement {
    --gf-visual-w:calc(var(--gf-visual-h) * 2)!important;
    background:transparent;
    border:0;
}

.gf-visual-icon.gf-visual-reimbursement>img {
    width:100%!important;
    height:100%!important;
    filter:none;
}

.gf-visual-initials {
    font-size:.7rem;
    font-weight:650;
}

.gf-recurring-edit-modal .fi-input-wrp {
    min-height: 3rem;
    align-items: center;
}

.gf-recurring-edit-modal .fi-select-input-btn {
    min-height: 3rem;
}

.gf-identity {
    display:inline-flex;
    align-items:center;
    gap:var(--gf-visual-gap);
    min-width:0;
    max-width:100%;
    vertical-align:middle;
    text-align:start;
}

.gf-identity-mark {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:none;
}

.gf-identity-copy {
    display:grid;
    min-width:0;
    gap:4px;
    line-height:1.35;
}

.gf-identity-name {
    font-weight:550;
    overflow-wrap:anywhere;
}

.gf-identity-meta {
    font-size:.72rem;
    color:var(--gf-visual-ink);
    font-weight:400;
    overflow-wrap:anywhere;
}

.gf-category-identity {
    --gf-visual-gap:8px;
    color:var(--gf-visual-ink);
}

.gf-category-identity .gf-visual {
    --gf-visual-h:25px!important;
    --gf-visual-w:25px!important;
    border-radius:var(--gf-radius-sm);
    box-shadow:none;
}

.gf-category-identity .gf-visual-icon {
    border:0;
    background:transparent;
}

.gf-category-identity .gf-visual-wordmark {
    --gf-visual-w:45px!important;
}

.gf-category-identity .gf-visual-reimbursement {
    --gf-visual-w:45px!important;
    width:45px!important;
}

.gf-category-identity .gf-identity-name {
    font-weight:450;
}

.gf-category-identity .gf-identity-mark {
    width:45px;
    justify-content:center;
}

.gf-payment-identity {
    --gf-visual-gap:8px;
}

.gf-payment-identity .gf-visual {
    --gf-visual-h:22px!important;
    --gf-visual-w:22px!important;
}

.gf-payment-identity .gf-visual-icon {
    background:transparent;
    border:0;
}

/* A mesma trilha reserva a assinatura larga;
símbolos ficam centralizados. */
.gf-transaction-table-entity {
    gap:13px;
    min-height:46px;
}

.gf-txn-identity {
    align-items:center;
    gap:13px;
}

.gf-txn-identity .gf-table-identity-title {
    white-space:normal;
    line-height:1.35;
    font-weight:650;
}

.gf-transaction-table-mark-shell,.gf-transaction-table-mark-shell.is-horizontal {
    display:inline-flex;
    align-items:center;
    flex:0 0 82px;
    width:82px;
    height:53px;
    justify-content:center;
    margin-inline-end:0;
}

.gf-transaction-table-mark-shell>.gf-visual {
    width:var(--gf-visual-w)!important;
    height:var(--gf-visual-h)!important;
    border-radius:var(--gf-radius)!important;
}

.gf-transaction-table-mark-shell>.gf-visual-card {
    border-radius:var(--gf-radius)!important;
}

.gf-transaction-table-entity.gf-category-identity {
    gap:8px;
    min-height:25px;
}

.gf-category-identity .gf-transaction-table-mark-shell {
    flex:0 0 45px;
    width:45px;
    height:25px;
}

.gf-category-identity .gf-transaction-table-entity-title {
    color:var(--gf-visual-ink);
    font-weight:450;
    white-space:normal;
    line-height:1.35;
}

.gf-transaction-table-entity-title {
    white-space:normal;
    line-height:1.35;
    overflow-wrap:anywhere;
}

.gf-transaction-table-entity-meta {
    color:var(--gf-visual-ink);
    line-height:1.35;
    white-space:normal;
}

.gf-card-art {
    display:flex;
    align-items:center;
    justify-content:center;
    background:transparent!important;
    box-shadow:none!important;
    max-width:100%;
}

.gf-card-art>.gf-visual-card {
    width:100%;
    height:100%;
}

.gf-advisor-card-identity>.gf-visual,.gf-commitment-row-main>.gf-visual {
    flex:none;
}

.gf-advisor-card-identity>div,.gf-commitment-row-main>div {
    min-width:0;
}

.gf-commitment-chip>.gf-visual {
    flex:none;
}

.gf-commitment-chip>.gf-visual-icon {
    background:transparent;
    border:0;
}

.rch-composition-row {
    grid-template-columns:82px minmax(0,1fr) auto;
}

.rch-composition-row>.gf-visual {
    justify-self:center;
}

.rch-composition-row>.gf-visual img {
    width:100%;
    height:100%;
    object-fit:contain;
    border-radius:0;
}

.gf-card-placeholder {
    display:inline-flex;
    align-items:center;
    gap:13px;
    padding:13px;
    border:1px solid var(--gf-visual-border);
    border-radius:var(--gf-radius);
    background:var(--gf-visual-surface);
    max-width:100%;
}

.gf-card-placeholder .gf-identity-name {
    font-size:.8rem;
}

.gf-card-placeholder small {
    font-size:.7rem;
    color:var(--gf-visual-ink);
}

.gf-visual-card-picker {
    min-width:0;
    border:0;
    padding:0;
}

.gf-visual-card-picker legend {
    margin-bottom:8px;
}

.gf-visual-card-options {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));
    gap:8px;
    max-height:260px;
    overflow:auto;
    padding:2px;
}

.gf-visual-card-option {
    display:flex;
    align-items:center;
    gap:8px;
    padding:8px;
    border:1px solid var(--gf-visual-border);
    border-radius:var(--gf-radius);
    cursor:pointer;
    min-width:0;
    font-size:.8rem;
}

.gf-visual-card-option:has(input:checked) {
    border-color:var(--gf-color-open,#38bdf8);
    background:var(--gf-visual-surface);
}

.gf-visual-card-option:focus-within {
    outline:2px solid var(--gf-color-open,#38bdf8);
    outline-offset:1px;
}

.gf-visual-card-option>input {
    width:16px!important;
    height:16px!important;
    min-height:0!important;
    flex:none;
    accent-color:#0284c7;
}

.gf-visual-card-option>span:last-child {
    min-width:0;
    overflow-wrap:anywhere;
}

@media(max-width:767px) {
    .gf-identity {
        --gf-visual-gap:8px;
    }

    .gf-transaction-table-mark-shell,.gf-transaction-table-mark-shell.is-horizontal {
        flex-basis:74px;
        width:74px;
    }

    .gf-transaction-table-mark-shell>.gf-visual-card {
        --gf-visual-h:46px!important;
        --gf-visual-w:73px!important;
    }

    .gf-transaction-table-mark-shell>.gf-visual-wordmark {
        --gf-visual-h:41px!important;
        --gf-visual-w:73px!important;
    }

    .gf-category-identity .gf-transaction-table-mark-shell {
        flex-basis:45px;
        width:45px;
    }

    .rch-composition-row {
        grid-template-columns:74px minmax(0,1fr);
    }

    .rch-composition-row>strong {
        grid-column:2;
    }

}

/* Sistema visual compartilhado. Os tokens são usados por todos os domínios;
   estado financeiro sempre conserva o mesmo significado nos dois temas. */
.gf-brand { display: flex; align-items: center; gap: var(--gf-space-2); font-size: 16px; font-weight: 800; letter-spacing: -.02em; }
.gf-brand img { width: 30px; height: 30px; flex: none; border-radius: var(--gf-radius); }
.gf-brand-dark { display: none; }
html.dark .gf-brand-light { display: none; }
html.dark .gf-brand-dark { display: block; }
.gf-mobile-brand .gf-brand-dark { display: none; }
html.dark .gf-mobile-brand .gf-brand-light { display: none; }
html.dark .gf-mobile-brand .gf-brand-dark { display: block; }
.gf-advisor-section-links { display: flex; flex-wrap: wrap; align-items: center; gap: var(--gf-space-3); }
.gf-empty-state { padding: var(--gf-space-4); border: 1px dashed var(--gf-state-planned-border); border-radius: var(--gf-radius); color: var(--gf-text-muted); }
.gf-empty-state strong { display: block; color: var(--gf-text); font-size: 16px; }
.gf-empty-state p { margin: var(--gf-space-2) 0; }
.gf-empty-marker { color: var(--gf-text-muted); }
.gf-empty-state a { display: inline-block; margin-right: var(--gf-space-3); color: var(--gf-primary-bg); font-weight: 700; }
.gf-installment-insight { margin: var(--gf-space-3) 0; padding: var(--gf-space-3); color: var(--gf-text-muted); background: var(--gf-surface-raised); border-radius: var(--gf-radius); }
.gf-installment-house { margin-top: var(--gf-space-3); }
.gf-installment-house-head { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: var(--gf-space-2); }
.gf-installment-house-head h2 { font-size: 1.05rem; font-weight: 700; }
.gf-installment-house-total { font-weight: 700; }
.gf-installment-house-total span { color: var(--gf-text-muted); font-weight: 500; }
.gf-installment-months { display: grid; gap: var(--gf-space-1); }
.gf-installment-month-row { display: grid; grid-template-columns: 90px minmax(0, 1fr) 130px; align-items: center; gap: var(--gf-space-2); }
.gf-installment-month-label { color: var(--gf-text-muted); font-size: .85rem; }
.gf-installment-bar-track { position: relative; height: 8px; overflow: hidden; border-radius: var(--gf-radius-sm); background: color-mix(in srgb, var(--gf-state-planned-border) 28%, transparent); }
.gf-installment-bar-fill { position: absolute; inset: 0; border-radius: var(--gf-radius-sm); background: var(--gf-state-planned-border); }
.gf-installment-bar-fill.is-peak { background: var(--gf-state-attention-border); }
.gf-installment-month-value { text-align: right; font-weight: 600; }
.gf-installment-income { margin-top: var(--gf-space-3); color: var(--gf-text-muted); font-size: .85rem; }
@media (max-width: 430px) { .gf-installment-month-row { grid-template-columns: 72px minmax(0, 1fr) 108px; } }
.gf-period-nav { position: relative; display: inline-flex; flex: none; flex-wrap: nowrap; align-items: center; gap: var(--gf-space-2); width: max-content; max-width: 100%; height: 36px; justify-self: start; }
.gf-period-segments { display: grid; grid-template-columns: 36px 22ch 36px; height: 36px; flex: none; }
.gf-period-arrow,.gf-period-trigger,.gf-period-today { display: inline-flex; align-items: center; justify-content: center; height: 36px; min-height: 36px; border: 1px solid var(--gf-state-planned-border); background: var(--gf-surface-raised); color: var(--gf-text); font-size: 13px; font-weight: 650; line-height: 1; white-space: nowrap; }
.gf-period-arrow { width: 36px; padding: 0; }
.gf-period-arrow svg,.gf-period-today svg { width: 16px; height: 16px; flex: none; }
.gf-period-arrow:first-child { border-radius: var(--gf-radius) 0 0 var(--gf-radius); }
.gf-period-arrow:last-child { border-radius: 0 var(--gf-radius) var(--gf-radius) 0; }
.gf-period-trigger { position: relative; width: 100%; min-width: 0; padding: 0 var(--gf-space-3); border-left: 0; border-right: 0; gap: var(--gf-space-2); }
.gf-period-label { overflow: hidden; text-overflow: ellipsis; }
.gf-period-caret { width: 13px; height: 13px; flex: none; }
.gf-period-spinner { position: absolute; right: var(--gf-space-2); width: 13px; height: 13px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: gf-period-spin .8s linear infinite; }
.gf-period-loading { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
@keyframes gf-period-spin { to { transform: rotate(360deg); } }
.gf-period-today { width: 82px; padding: 0 var(--gf-space-2); gap: var(--gf-space-1); border-radius: var(--gf-radius); }
.gf-period-nav button:hover:not(:disabled) { background: color-mix(in srgb, var(--gf-focus-ring) 12%, var(--gf-surface-raised)); }
.gf-period-nav button:focus-visible { outline: 3px solid var(--gf-focus-ring); outline-offset: 2px; position: relative; z-index: 2; }
.gf-period-nav button:disabled { cursor: not-allowed; opacity: 1; color: var(--gf-text); background: var(--gf-surface-raised); }
.gf-period-nav:has(.gf-period-popover:not([style*="display: none"])) { z-index: 30; }
.gf-period-popover { position: absolute; top: calc(100% + var(--gf-space-2)); left: 36px; z-index: 40; width: 260px; padding: var(--gf-space-3); border: 1px solid var(--gf-state-planned-border); border-radius: var(--gf-radius); background: var(--gf-surface-raised); box-shadow: 0 12px 30px rgba(15,23,42,.18); color: var(--gf-text); }
.gf-period-popover[x-cloak] { display: none !important; }
.gf-period-year { display: grid; grid-template-columns: 36px 1fr 36px; align-items: center; text-align: center; gap: var(--gf-space-2); margin-bottom: var(--gf-space-2); }
.gf-period-year button { display: grid; place-items: center; width: 36px; height: 36px; border-radius: var(--gf-radius); }
.gf-period-year svg { width: 16px; height: 16px; }
.gf-period-months { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--gf-space-1); }
.gf-period-months button { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 46px; border: 1px solid transparent; border-radius: var(--gf-radius); background: var(--gf-surface-raised); text-transform: capitalize; }
.gf-period-months button[aria-current="date"] { border-color: var(--gf-focus-ring); font-weight: 700; }
.gf-period-months small { font-size: 10px; text-transform: none; }
.ii-coverage-head > .gf-period-nav { margin-left: auto; }
.rel-mobile-exports { display: none; }
@media (max-width: 767.98px) {
    .fi-page:has(.rel-toolbar) .fi-header-actions-ctn { display: none !important; }
    .rel-mobile-exports { display: flex; flex-wrap: wrap; gap: var(--gf-space-2); }
}
.gf-payment-status-caption,
.ret-result-card strong { font-family: var(--gf-number-font-family); font-variant-numeric: tabular-nums; }
@media (max-width: 767.98px) {
    .gf-period-nav { display: grid; grid-template-columns: 44px minmax(0, 1fr) 44px; width: 100%; height: 44px; gap: 0; }
    .gf-period-segments { grid-column: 1 / -1; grid-template-columns: 44px minmax(0, 1fr) 44px; height: 44px; width: 100%; }
    .gf-period-arrow,.gf-period-trigger,.gf-period-today { height: 44px; min-height: 44px; }
    .gf-period-arrow { width: 44px; }
    .gf-period-trigger { padding-right: 52px; padding-left: var(--gf-space-2); }
    .gf-period-today { position: absolute; right: 44px; top: 0; width: 44px; padding: 0; border-radius: 0; border-right: 0; }
    .gf-period-today span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .gf-period-caret { display: none; }
    .gf-period-popover { left: 44px; max-width: calc(100vw - 72px); }
    .ii-coverage-head > .gf-period-nav { width: min(100%, 352px); }
}
.gf-kpi-card .gf-kpi-label { min-height: var(--gf-space-4); align-items: center; }
.audit-page .gf-kpi-label { min-height: var(--gf-space-5); display: flex; align-items: center; }
.ret-filter select, .ret-input { display: block; width: 100%; min-height: 36px; border: 1px solid var(--gf-state-planned-border); border-radius: var(--gf-radius); background: var(--gf-surface); color: var(--gf-text); }
@media (max-width: 767.98px) {
    .ret-filter select, .ret-input { min-height: 44px; }
    .fi-header-heading,
    .gf-dashboard-home #gf-dashboard-title { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip-path: inset(50%) !important; white-space: nowrap !important; }
    body:has(.fi-ta-search-field) .gf-mobile-search { display: none; }
}
:root {
    --gray-500: #5c6878 !important;
    --gf-space-1: 5px;
    --gf-space-2: 8px;
    --gf-space-3: 13px;
    --gf-space-4: 21px;
    --gf-space-5: 34px;
    --gf-radius-sm: 5px;
    --gf-radius: 8px;
    --gf-radius-lg: 13px;
    --radius-xs: var(--gf-radius-sm);
    --radius-sm: var(--gf-radius-sm);
    --radius-md: var(--gf-radius);
    --radius-lg: var(--gf-radius);
    --radius-xl: var(--gf-radius-lg);
    --radius-2xl: var(--gf-radius-lg);
    --radius-3xl: var(--gf-radius-lg);
    --gf-accent-open: #38bdf8;
    --gf-accent-risk: #f43f5e;
    --gf-accent-attention: #f59e0b;
    --gf-accent-paid: #10b981;
    --gf-accent-neutral: #64748b;
    --gf-text: #171e2a;
    --gf-text-muted: #475569;
    --gf-text-subtle: #4a5666;
    --gf-surface: #fff;
    --gf-surface-raised: #f3f5f9;
    --gf-focus-ring: #0369a1;
    --gf-primary-bg: #047857;
    --gf-primary-hover: #065f46;
    --gf-primary-text: #fff;
    --gf-disabled-bg: #e2e8f0;
    --gf-disabled-text: #475569;
    --gf-state-paid-fg: #166534;
    --gf-state-paid-bg: #f0fdf4;
    --gf-state-paid-border: #86efac;
    --gf-state-open-fg: #1e40af;
    --gf-state-open-bg: #eff6ff;
    --gf-state-open-border: #93c5fd;
    --gf-state-planned-fg: #334155;
    --gf-state-planned-bg: #f1f5f9;
    --gf-state-planned-border: #cbd5e1;
    --gf-state-attention-fg: #92400e;
    --gf-state-attention-bg: #fffbeb;
    --gf-state-attention-border: #fcd34d;
    --gf-state-risk-fg: #991b1b;
    --gf-state-risk-bg: #fef2f2;
    --gf-state-risk-border: #fca5a5;
}

html.dark {
    --gray-500: #a7b5c7 !important;
    --gf-text: #e5e7eb;
    --gf-text-muted: #bac5d2;
    --gf-text-subtle: #a7b5c7;
    --gf-surface: #171e2a;
    --gf-surface-raised: #1e293b;
    --gf-focus-ring: #38bdf8;
    --gf-disabled-bg: #334155;
    --gf-disabled-text: #cbd5e1;
    --gf-state-paid-fg: #bbf7d0;
    --gf-state-paid-bg: #14532d;
    --gf-state-paid-border: #22c55e;
    --gf-state-open-fg: #bfdbfe;
    --gf-state-open-bg: #1e3a8a;
    --gf-state-open-border: #3b82f6;
    --gf-state-planned-fg: #cbd5e1;
    --gf-state-planned-bg: #334155;
    --gf-state-planned-border: #64748b;
    --gf-state-attention-fg: #fef3c7;
    --gf-state-attention-bg: #78350f;
    --gf-state-attention-border: #d97706;
    --gf-state-risk-fg: #fecaca;
    --gf-state-risk-bg: #7f1d1d;
    --gf-state-risk-border: #ef4444;
}

.gf-household-color { display: inline-block; width: 20px; height: 20px; border: 1px solid var(--gf-state-planned-border); border-radius: var(--gf-radius-sm); background: var(--household-color); vertical-align: middle; }
.gf-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

.gf-count-up,
.gf-transaction-number,
.gf-number-final,
.gf-money,
.fi-ta-text.gf-count-up,
.gf-transaction-number,
.gf-number-final,
.gf-money,
.fi-in-text.gf-count-up,
.gf-transaction-number,
.gf-number-final,
.gf-money,
.fi-ta-text-item.fi-numeric,
.fi-in-text-item.fi-numeric,
.fi-ta-text-summary > span {
    font-family: var(--gf-number-font-family), "Inter", sans-serif;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}
.fi-in-entry.gf-money { white-space: normal; }
/* Na consulta, valor composto (nº · data · valor) quebra nos espaços em vez de ser cortado;
   o R$ fica grudado ao número pelo espaço não separável de Money::formatBRL. */
.fi-in-text.gf-money { white-space: normal; }
/* Selo longo (ex.: nome de arquivo) respeita a coluna e mostra reticências. */
.fi-in-text-has-badges .fi-badge { max-width: 100%; }
.fi-in-text-has-badges .fi-badge:not(:has(> *)) { display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.gf-transactions-section .fi-ta-cell-amount .fi-ta-text-item-label,
.rch-workspace .rch-history-row dd:last-child { font-family: var(--gf-number-font-family), "Inter", sans-serif; font-variant-numeric: tabular-nums; white-space: nowrap; }
.gf-transactions-section .fi-ta-cell-date .fi-ta-text-description { white-space: nowrap; }
.gf-transactions-section .gf-payment-status { width: max-content; min-width: 90px; min-height: 36px; border-radius: var(--gf-radius); }
.gf-transactions-section .gf-payment-status-copy { align-content: center; }
/* Filament inclui subtotal mesmo quando o grupo tem uma única fatura. */
.fi-resource-card-invoices .fi-ta-table > tbody > tr.fi-ta-group-header-row + tr.fi-clickable + tr.fi-ta-summary-row { display: none !important; }

html :is(a, button, input, select, textarea, summary, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
    outline: 3px solid var(--gf-focus-ring) !important;
    outline-offset: 3px !important;
    transition-property: none !important;
}

/* Esses campos já têm o anel arredondado de foco no wrapper do Filament.
   Preservar o outline dos botões auxiliares, calendário e controles sem wrapper. */
@media (forced-colors: none) {
    html .fi-input-wrp :is(.fi-input, .fi-select-input, .fi-select-input-btn, .fi-fo-date-time-picker-display-text-input):focus-visible,
    html .fi-input-wrp.fi-fo-textarea textarea:focus-visible,
    html :is(input.fi-checkbox-input, input.fi-radio-input, button.fi-toggle):focus-visible:not(:disabled) {
        outline: none !important;
    }
}

.fi-sidebar-item-button:focus-visible {
    background: color-mix(in srgb, var(--gf-focus-ring) 16%, var(--gf-surface-raised));
}

.fi-btn.fi-color-primary:not(.fi-outlined):not([disabled]):not(.fi-disabled) {
    background-color: var(--gf-primary-bg) !important;
    color: var(--gf-primary-text) !important;
}
.fi-btn.fi-color-primary:not(.fi-outlined):not([disabled]):not(.fi-disabled):hover {
    background-color: var(--gf-primary-hover) !important;
    color: var(--gf-primary-text) !important;
}
.fi-btn.fi-color-primary:not(.fi-outlined) > .fi-icon {
    color: currentColor !important;
}
.fi-btn.fi-disabled:not(.fi-force-enabled),
.fi-btn[disabled]:not(.fi-force-enabled) {
    background: var(--gf-disabled-bg) !important;
    color: var(--gf-disabled-text) !important;
    cursor: not-allowed;
    opacity: 1;
    box-shadow: none;
}

.fi-btn { min-height: 36px; }
.fi-input-wrp { min-height: 36px; }
@media (max-width: 767.98px) {
    .fi-btn,
    .fi-input-wrp { min-height: 44px; }
}

html:not(.dark) .gf-identity-name,
html:not(.dark) .gf-table-chip-neutral,
html:not(.dark) .gf-sec-muted,
html:not(.dark) .gf-sec-sub,
html:not(.dark) :is(.fi-ta-placeholder, .fi-in-placeholder) {
    color: var(--gf-text-muted);
}
html:not(.dark) .gf-loan-mark-payable { color: var(--gf-state-risk-fg); }
html:not(.dark) .gf-loan-mark-receivable { color: var(--gf-state-paid-fg); }
html:not(.dark) .gf-loan-mark-financing { color: var(--gf-state-open-fg); }
html:not(.dark) .gf-table-chip-planned { color: var(--gf-state-planned-fg); background: var(--gf-state-planned-bg); border-color: var(--gf-state-planned-border); }
html:not(.dark) .audit-count-ok { color: var(--gf-state-paid-fg); }
html:not(.dark) .rel-neg { color: var(--gf-state-risk-fg); }
html:not(.dark) .rel-attention { color: var(--gf-state-attention-fg); }
html.dark .rel-attention { color: var(--gf-state-attention-fg); }
html:not(.dark) .cl-version { color: var(--gf-primary-bg); }
html:not(.dark) .cl-content :is(h3,p) { color: var(--gf-text-muted); }
html:not(.dark) .cl-content :is(h2,li) { color: var(--gf-text); }
html:not(.dark) .cl-content a,
html:not(.dark) .gf-rec-link { color: var(--gf-primary-bg); }
html:not(.dark) .gf-payroll-eyebrow,
html:not(.dark) .tax-kicker,
html:not(.dark) .tax-sources a { color: var(--gf-primary-bg); }
html:not(.dark) .tax-count.success { color: var(--gf-state-paid-fg); }
html:not(.dark) .tax-count.warning,
html:not(.dark) .tax-lock { color: var(--gf-state-attention-fg); }
html:not(.dark) .tax-count.danger { color: var(--gf-state-risk-fg); }
html.dark .tax-count.danger { color: #fda4af; }
html:not(.dark) .gf-guided-tile { background: var(--gf-surface); border-color: var(--gf-state-planned-border); }
html:not(.dark) .gf-guided-tile:hover { background: #f3f7f9; }
html:not(.dark) .gf-guided-title { color: var(--gf-text); }
html:not(.dark) .gf-guided-meta { color: var(--gf-text-muted); }
html:not(.dark) .fi-select-input-placeholder { color: var(--gf-accent-neutral); }
html:not(.dark) .gf-table-chip-neutral { color: var(--gf-state-planned-fg); }
html:not(.dark) .gf-loan-identity .gf-table-chip { color: var(--gf-state-planned-fg); }
html .gf-commitment-chip.is-active { color: var(--gf-text); }
html:not(.dark) .gf-commitment-status.is-paid { color: var(--gf-state-paid-fg); }
html:not(.dark) .rel-fc-value { color: var(--gf-state-attention-fg); }
html:not(.dark) .ret-money.ret-success { color: var(--gf-state-paid-fg); }
html:not(.dark) .gf-fgts-audit-status--warning { color: var(--gf-state-attention-fg) !important; }
html:not(.dark) .gf-fgts-audit-filters button.is-active { color: var(--gf-primary-hover); }
html:not(.dark) .gf-fgts-audit-filters button.is-active strong { background: var(--gf-primary-hover); }
html .gf-fgts-audit-filters button.is-active strong { background: var(--gf-primary-hover); color: var(--gf-primary-text); }
html:not(.dark) .gf-fgts-range button.is-active,
html:not(.dark) .gf-fgts-events-toggle,
html:not(.dark) .gf-fgts-evidence-links a { color: var(--gf-primary-hover); }
.gf-fgts-rule-note strong { color: var(--gf-state-attention-fg); }
html.dark .gf-fgts-rule-note strong { color: #fbbf24; }
html:not(.dark) .ret-toggle input:checked + span { color: var(--gf-primary-bg); }
.ret-toggle label:has(input:focus-visible) span { outline: 3px solid var(--gf-focus-ring); outline-offset: 3px; }
html:not(.dark) .gf-status-pill.is-success { color: var(--gf-state-paid-fg); background: var(--gf-state-paid-bg); border-color: var(--gf-state-paid-border); }
html:not(.dark) .gf-status-pill.is-danger { color: var(--gf-state-risk-fg); background: var(--gf-state-risk-bg); border-color: var(--gf-state-risk-border); }
html:not(.dark) .audit-check strong,
html:not(.dark) .audit-empty strong,
html:not(.dark) .audit-overflow strong { color: var(--gf-text); }
html:not(.dark) .audit-check span,
html:not(.dark) .audit-empty span,
html:not(.dark) .audit-overflow span { color: var(--gf-text-muted); }
html:not(.dark) .gf-sec-card h3,
html:not(.dark) .gf-sec-title,
html:not(.dark) .gf-sec-rule strong { color: var(--gf-text); }
html:not(.dark) .gf-sec-rule span,
html:not(.dark) .gf-sec-empty { color: var(--gf-text-muted); }
html.dark .gf-empty-state a { color: var(--gf-state-paid-fg); }

@media (min-width: 768px) {
    .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn {
        display: flex;
        align-items: center;
        justify-content: center;
        padding: var(--gf-space-4);
    }
    .fi-modal:not(.fi-modal-slide-over) > .fi-modal-window-ctn > .fi-modal-window {
        max-height: calc(100dvh - 2 * var(--gf-space-4));
        min-height: 0;
        margin: auto;
        overflow: hidden;
        border-radius: var(--gf-radius-lg);
    }
    .fi-modal:not(.fi-modal-slide-over) .fi-modal-header,
    .fi-modal:not(.fi-modal-slide-over) .fi-modal-footer {
        flex: none;
        z-index: 1;
    }
    .fi-modal:not(.fi-modal-slide-over) .fi-modal-content {
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}
