/* Niwwi redesign layer (2026-10).
   Restyle in place: colours, type, surfaces, states and motion only.
   Nothing here changes which elements exist or the order they appear in.
   Two styles: Formal (data-appearance="general") and Gamer cute
   (data-appearance="kawaii", stored value kept for existing preferences),
   each with light and dark. Loaded last so it wins over older layers. */

/* ------------------------------------------------------------------ tokens */

html[data-theme] {
  --nw-font: Manrope, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --nw-font-label: var(--nw-font);
  --nw-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --nw-ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
  --nw-ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
  --nw-press: 160ms;
  --nw-quick: 180ms;
  --nw-r-control: 10px;
  --nw-r-card: 14px;
  --nw-r-panel: 16px;
  --nw-r-pill: 999px;
}

/* Formal · light */
html[data-theme="light"]:not([data-appearance="kawaii"]) {
  --nw-bg: #F7F6FB;
  --nw-side: #FFFFFF;
  --nw-surface: #FFFFFF;
  --nw-surface-2: #F1EFF7;
  --nw-surface-3: #E7E3F2;
  --nw-line: #E4E1EE;
  --nw-line-strong: #CFCADF;
  --nw-ink: #1E1B2E;
  --nw-muted: #625D78;
  --nw-accent: #5B3FD0;
  --nw-accent-ink: #FFFFFF;
  --nw-accent-soft: #ECE8FB;
  --nw-accent-text: #4B31B8;
  --nw-pos: #13795B;
  --nw-warn: #8F5D00;
  --nw-neg: #BE3348;
  --nw-pos-soft: #E3F3EC;
  --nw-warn-soft: #F8EEDB;
  --nw-neg-soft: #FBE7EA;
  --nw-helion: #B4386F;
  --nw-virtuality: #12798A;
  --nw-shadow: 0 1px 2px rgba(30, 27, 46, 0.05);
  --nw-shadow-pop: 0 12px 32px -8px rgba(30, 27, 46, 0.18);
  --nw-led-a: #5B3FD0;
  --nw-led-b: #8A74E8;
  --nw-led-idle: 0;
  --nw-scrim: rgba(16, 19, 42, 0.36);
  color-scheme: light;
}

/* Formal · dark */
html[data-theme="dark"]:not([data-appearance="kawaii"]) {
  --nw-bg: #10132A;
  --nw-side: #131733;
  --nw-surface: #181C36;
  --nw-surface-2: #22274A;
  --nw-surface-3: #2C3258;
  --nw-line: #2E3456;
  --nw-line-strong: #434A73;
  --nw-ink: #ECEAF6;
  --nw-muted: #A3A0BE;
  --nw-accent: #AE9CFF;
  --nw-accent-ink: #10132A;
  --nw-accent-soft: #2A2752;
  --nw-accent-text: #C4B7FF;
  --nw-pos: #5DD6A2;
  --nw-warn: #F5C76B;
  --nw-neg: #FF8FA0;
  --nw-pos-soft: #173B39;
  --nw-warn-soft: #3A3324;
  --nw-neg-soft: #44233A;
  --nw-helion: #F2A1C8;
  --nw-virtuality: #7FD8E5;
  --nw-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
  --nw-shadow-pop: 0 16px 40px -10px rgba(0, 0, 0, 0.6);
  --nw-led-a: #AE9CFF;
  --nw-led-b: #7FD8E5;
  --nw-led-idle: 0;
  --nw-scrim: rgba(4, 6, 18, 0.6);
  color-scheme: dark;
}

/* Gamer cute · light (grid-paper desk with the lights on) */
html[data-appearance="kawaii"][data-theme="light"] {
  --nw-font-label: "Pixelify Sans", var(--nw-font);
  --nw-bg: #FBF7FC;
  --nw-grid: #EFE6F3;
  --nw-side: #FFFFFF;
  --nw-surface: #FFFFFF;
  --nw-surface-2: #F6EEF8;
  --nw-surface-3: #EEE2F2;
  --nw-line: #E8DCEF;
  --nw-line-strong: #D5C3E0;
  --nw-ink: #2B2346;
  --nw-muted: #6E6288;
  --nw-accent: #6236E8;
  --nw-accent-ink: #FFFFFF;
  --nw-accent-soft: #EEE7FD;
  --nw-accent-text: #5128D0;
  --nw-led: #F06DB8;
  --nw-led-ink: #2B2346;
  --nw-pos: #1B7558;
  --nw-warn: #8F5D00;
  --nw-neg: #B33461;
  --nw-pos-soft: #E2F2EA;
  --nw-warn-soft: #F8EDD8;
  --nw-neg-soft: #FBE5EE;
  --nw-helion: #B33461;
  --nw-virtuality: #127A8A;
  --nw-shadow: 0 3px 0 rgba(43, 35, 70, 0.08);
  --nw-shadow-pop: 0 3px 0 rgba(43, 35, 70, 0.08), 0 14px 32px -10px rgba(43, 35, 70, 0.22);
  --nw-led-a: #6236E8;
  --nw-led-b: #F06DB8;
  --nw-led-idle: 1;
  --nw-scrim: rgba(43, 35, 70, 0.32);
  --nw-r-card: 12px;
  color-scheme: light;
}

/* Gamer cute · dark (the same desk at night) */
html[data-appearance="kawaii"][data-theme="dark"] {
  --nw-font-label: "Pixelify Sans", var(--nw-font);
  --nw-bg: #121934;
  --nw-haze: #534660;
  --nw-side: #141B38;
  --nw-surface: #1A2142;
  --nw-surface-2: #232B52;
  --nw-surface-3: #2C355F;
  --nw-line: #343C68;
  --nw-line-strong: #4A5386;
  --nw-ink: #F3EEFA;
  --nw-muted: #ABA8CC;
  --nw-accent: #C9B2FF;
  --nw-accent-ink: #121934;
  --nw-accent-soft: #2B2D5C;
  --nw-accent-text: #D6C5FF;
  --nw-led: #FFB3DA;
  --nw-led-ink: #121934;
  --nw-pos: #7FE0B4;
  --nw-warn: #FFD9A0;
  --nw-neg: #FF9CB8;
  --nw-pos-soft: #183B3E;
  --nw-warn-soft: #3A3530;
  --nw-neg-soft: #44264A;
  --nw-helion: #FFB3DA;
  --nw-virtuality: #8FE3FF;
  --nw-shadow: inset 0 0 0 1px rgba(201, 178, 255, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.05);
  --nw-shadow-pop: inset 0 0 0 1px rgba(201, 178, 255, 0.16), 0 18px 40px -12px rgba(0, 0, 0, 0.7);
  --nw-led-a: #C9B2FF;
  --nw-led-b: #FFB3DA;
  --nw-led-idle: 1;
  --nw-scrim: rgba(6, 9, 24, 0.62);
  --nw-r-card: 12px;
  color-scheme: dark;
}

/* Map the new tokens onto every older variable family, so the 28 older
   stylesheets pick them up without touching their rules. */
html[data-theme][data-theme] {
  --bg: var(--nw-bg);
  --side: var(--nw-side);
  --surface: var(--nw-surface);
  --surface2: var(--nw-surface-2);
  --surface3: var(--nw-surface-3);
  --line: var(--nw-line);
  --text: var(--nw-ink);
  --muted: var(--nw-muted);
  --purple: var(--nw-accent);
  --purple2: var(--nw-accent);
  --green: var(--nw-pos);
  --green2: var(--nw-pos);
  --coral: var(--nw-neg);
  --yellow: var(--nw-warn);
  --pink: var(--nw-helion);
  --cyan: var(--nw-virtuality);
  --helion: var(--nw-helion);
  --virtuality: var(--nw-virtuality);
  --other: var(--nw-warn);
  --radius: var(--nw-r-card);
  --mova-bg: var(--nw-bg);
  --mova-sidebar: var(--nw-side);
  --mova-surface: var(--nw-surface);
  --mova-surface-raised: var(--nw-surface);
  --mova-surface-soft: var(--nw-surface-2);
  --mova-border: var(--nw-line);
  --mova-border-strong: var(--nw-line-strong);
  --mova-text: var(--nw-ink);
  --mova-text-secondary: var(--nw-muted);
  --mova-text-muted: var(--nw-muted);
  --mova-accent: var(--nw-accent);
  --mova-success: var(--nw-pos);
  --mova-warning: var(--nw-warn);
  --mova-danger: var(--nw-neg);
  --mova-info: var(--nw-virtuality);
  --mova-radius-control: var(--nw-r-control);
  --mova-radius-panel: var(--nw-r-panel);
  --mova-radius-card: var(--nw-r-card);
  --mova-radius-modal: 18px;
  --mova-shadow-card: var(--nw-shadow);
  --mova-shadow-popover: var(--nw-shadow-pop);
  --mova-shadow-modal: var(--nw-shadow-pop);
  --mova-transition: var(--nw-quick) var(--nw-ease-out);
  --mova-focus: 0 0 0 3px color-mix(in srgb, var(--nw-accent) 32%, transparent);
  --mova-font-display: var(--nw-font);
  --mova-font-body: var(--nw-font);
  --niwwi-heading-font: var(--nw-font);
  --niwwi-glow: transparent;
  --niwwi-scroll: var(--nw-line-strong);
  --niwwi-action-gradient: var(--nw-accent);
  --niwwi-header: var(--nw-surface);
  --niwwi-title-end: var(--nw-ink);
  --niwwi-sky: none;
  --niwwi-room-art: none;
  --niwwi-star: none;
  --niwwi-shadow: transparent;
  --niwwi-edge: var(--nw-line);
  --niwwi-glass: var(--nw-surface);
  --room-wallpaper: none;
  --room-panel: var(--nw-surface);
  --room-panel-low: var(--nw-surface-2);
  --room-nav: var(--nw-side);
  --room-edge: var(--nw-line);
  --room-shadow: transparent;
  --room-cloud: transparent;
  --room-halo: 0%;
  --room-icon-bg: var(--nw-surface-2);
}

/* >>> legacy-map (generated) */
/* Generated: legacy hard-coded greys mapped to the new tokens (same selectors, so specificity is unchanged). */
.eyebrow,
.story-copy p,
.mini-proof,
.input-wrap span,
.input-wrap button,
.icon-button,
.nav-label,
.nav-item,
.logout-icon,
.period-control > button,
.segmented button,
.kpi-value small,
.mini-stats span,
.legend,
.bar-group label,
.row-main small,
.badge,
.stat-lines span,
.donut-legend,
.ownership,
.filter,
.calendar-head div,
.day,
.modal-close,
.dropzone small,
.quick-summary small,
.quick-summary p,
.exchange,
.sheet-head,
.money-input span,
.duplicate-form label,
.duplicate-options,
.flow-step small,
.model-bars > div,
.model-result span,
.expense-head,
.expense-row small,
.calendar-legend,
.period-control #periodLabel small,
.period-control #periodLabel > i,
.month-grid button,
.dashboard-switcher button, .dashboard-mode button,
.data-cutoff,
.simple-kpi p,
.simple-section-head p,
.simple-bar-row > span,
.income-total small,
.source-breakdown span,
.source-breakdown small,
.spending-row small,
.category-list span,
.projection-card small,
.projection-card p,
.projection-explain span,
.helion-overview .donut-legend span,
.page-head .head-actions > .exchange,
.detail-grid article:nth-child(2) .row-main small,
.helion-admin > .section-title-row p,
.admin-kpis small,
.admin-kpis span,
.admin-card-head p,
.admin-bars span,
.operating-equation small,
.operating-equation > span,
.payment-item > div small,
.upcoming-list span small,
.period-locked .cal-icon,
.admin-kpis .operating-cost-card small,
.admin-kpis .operating-cost-card span,
.available-highlight p,
.virtuality-income-card .donut-legend span,
.other-income-summary strong em,
.other-income-summary p,
.other-progress > div,
.other-income-detail .section-title-row > div p,
.other-income-row > div small,
.settings-tabs button,
.settings-section-head p,
.company-theme-copy > small,
.theme-meta span,
.settings-note p,
.history-filter button,
.history-kpi small,
.history-section-head p,
.history-legend,
.history-bar-group > b,
.history-table-head,
.history-month-name small,
.history-toggle,
.history-detail-head small, .history-detail-side > div > small,
.history-detail-head > span,
.flow-lines > div,
.history-category span,
.general-dashboard-page .data-cutoff,
.mini-distribution > small,
.mini-distribution span,
.detail-card-title small,
.history-ledger-row > div small,
.debt-detail-head,
.debt-detail-row span,
.debt-detail-row small,
.saving-detail-row > div small,
.history-period-nav > button,
.history-picker-button small,
.history-picker-title small,
.history-quick-ranges button,
.history-period-option,
.history-period-option > div small,
.history-period-option > strong small,
.history-period-title > strong em,
.history-period-title p,
.history-period-metrics span,
.history-range-presets > small, .quick-months > small, .custom-range-head > div > small,
.history-range-presets > button,
.custom-date-values small,
.custom-date-values > i,
.range-calendar-nav button,
.range-calendar-nav span,
.range-calendar-title span,
.range-weekdays span,
.range-days button, .calendar-blank,
.range-calendar-legend,
.range-detail-heading p,
.history-range-close,
.range-empty,
.history-no-data,
.finance-bars-card .simple-bar-row > span,
.business-card-labels > small,
.business-status.archived,
.business-core-meta span,
.business-visibility span,
.business-form label,
.identity-fields > label > div > span,
.business-checks label, .business-state label,
.business-state p,
.business-aware-filter > span,
.report-business-filter > span,
.event-business,
.history-picker-copy small,
:where(.segmented, .dashboard-switcher, .dashboard-mode, .history-filter, .settings-tabs, .mova-segmented) > button,
.business-context-switcher > button,
.dashboard-period-chip small,
.dashboard-period-chip > i,
.dashboard-period-menu-head button,
.dashboard-month-grid button,
.kpi-secondary-line,
.money-position-card .income-total p,
.money-location-list span,
.future-money-reserve p,
.future-money-reserve footer span,
.venuz-billing-form label > span,
.venuz-billing-form label > div b,
.registry-tabs button,
.registry-tabs button small,
.registry-tabs button.active small,
.registry-period > span,
.registry-flow-note p,
.registry-kpi span,
.registry-block-head p,
.registry-concept small,
.registry-money > span,
.registry-state.planned,
.registry-more,
.registry-source,
.registry-planned small, .registry-real > small,
.registry-variance,
.registry-status,
.registry-status.skipped,
.nav-subitem,
.registry-eyebrow,
.registry-page-head p,
.registry-current-note small,
.registry-ai-copy small, .registry-ai-drop > span, .registry-ai-description > span,
.registry-ai-copy p,
.registry-ai-photo-name,
.quick-register-head p, .unified-list-head p,
.quick-register-form label > span,
.quick-money > i,
.registry-impact-preview > span,
.registry-impact-preview > small,
.entry-main small, .entry-account, .entry-impact, .entry-date, .entry-proof,
.registry-ledger-head,
.registry-row-actions button,
.registry-visualizer-head > div:first-child p,
.registry-visual-tabs button,
.registry-business-head p,
.registry-visual-entry > p,
.registry-visual-meta span,
.registry-visual-actions button,
.registry-empty-business,
.sidebar-refresh-status,
.cloud-sync-status,
.cloud-sync-status[data-state="offline"],
.movement-search small,
.movement-date-range > span,
.movement-date-range label > span,
.account-identity span,
.element-quick-actions span,
.element-quick-actions small,
.catalog-card-head p,
.catalog-tags span,
.nav-parent > i,
.upgraded-registry .registry-kpi small, .registry-visualizer .registry-kpi small,
.upgraded-registry .registry-kpi > span, .registry-visualizer .registry-kpi > span,
.planned-opening-edit > span,
.planned-opening-field b,
.planned-opening-field em,
.upgraded-registry .registry-ai-copy small, .upgraded-registry .registry-ai-drop > span, .upgraded-registry .registry-ai-description > span,
.upgraded-registry .registry-ai-copy p,
.upgraded-registry .quick-register-head p,
.upgraded-registry .finance-register-grid label > span, .upgraded-registry .registry-conversion-preview > span, .upgraded-registry .registry-impact-preview > span,
.upgraded-registry .finance-register-grid input:disabled,
.upgraded-registry .quick-money > i,
.upgraded-registry .registry-conversion-preview small,
.upgraded-registry .registry-impact-preview small,
.registry-visualizer .registry-visual-tabs button,
.registry-native-amount span,
.registry-business-compare span,
.registry-type-summary > div:nth-child(2) b,
.registry-type-summary > i,
.registry-type-categories span,
.registry-type-compare-values small,
.registry-type-detail-head > div:first-child b,
.registry-type-detail-head > div:last-child span,
.registry-ledger-mode,
.registry-type-ledger-row > div:nth-child(2) small,
.registry-type-ledger-row > span:nth-child(3), .registry-type-ledger-row > span:nth-child(4),
.registry-ledger-actions button,
.registry-type-empty,
.registry-compare-kpi em,
.movement-summary-strip span,
.movement-ledger-head,
.movement-ledger-row time,
.movement-ledger-row > span small,
.movement-ledger-row > strong small,
.movement-empty,
.movement-detail-head small,
.movement-detail-amount span, .debt-detail-balance span,
.movement-detail-amount b, .debt-detail-balance b,
.movement-detail-panel dt,
.accounts-current-summary small,
.account-currency,
.live-account .account-balance small,
.live-account .ownership span,
.account-transfer-note p, .savings-rule-note p, .settings-note p,
.debt-summary-grid span,
.debt-filter-bar button,
.debt-card-head > div > span,
.debt-main-amount span,
.debt-progress-copy,
.debt-period-box span,
.debt-period-box small,
.debt-account-card dt,
.debt-detail-facts span,
.debt-reconciliation-note p,
.debt-payment-history span, .debt-payment-history small, .debt-payment-history em,
.savings-summary-grid span,
.savings-summary-grid small,
.savings-equation span,
.saving-goal-head small,
.saving-goal-value span,
.saving-goal-facts,
.saving-goal-card > p,
.saving-projection,
.calendar-month-insights small,
.calendar-month-insights span,
.smart-calendar .calendar-head div,
.smart-calendar .day,
.calendar-day-top > small,
.smart-calendar .event small,
.calendar-day-more,
.calendar-day-detail > header p,
.calendar-day-detail-totals small,
.calendar-day-detail-item p,
.calendar-day-detail-item em,
.calendar-day-detail-empty,
.calendar-rule-note,
.analysis-business-switcher > button,
.analysis-period-switcher button,
.analysis-kpis span,
.analysis-card-head p,
.analysis-card-head > div:last-child,
.analysis-bars > div > b,
.analysis-indicators span,
.analysis-line-list span,
.analysis-view-tabs button,
.analysis-horizon span, .analysis-section-copy > div > span, .analysis-forecast-summary article > span, .forecast-result > span,
.analysis-forecast-summary article > small,
.analysis-section-copy > p,
.analysis-forecast-control-grid label > span,
.analysis-forecast-control-grid em button,
.forecast-legend,
.forecast-result > p,
.forecast-result > div small,
.forecast-table th,
.forecast-table td:first-child small,
.analysis-forecast-note,
.analysis-forecast-goals article small,
.forecast-scenario-switch button,
.forecast-v2 .analysis-horizon small,
.forecast-formula > div:not(.analysis-section-copy),
.forecast-upcoming > article > span,
.forecast-upcoming > article small,
.forecast-table td small,
.forecast-simulation-result span,
.forecast-assumptions summary,
.forecast-assumptions ul,
.configuration-deep-view .company-theme-copy > small,
.configuration-deep-view .business-core-meta span, .configuration-deep-view .theme-meta span,
.settings-account-card small,
.settings-account-card p,
.currency-settings > div > small, .fx-example > small,
.currency-settings p, .fx-example p,
.currency-settings > label > span,
.currency-settings > label > div > b,
.currency-settings > label > small,
.remainder-timeline article > small,
.remainder-timeline span,
.remainder-rule, .modal-rule-note,
.preference-list span,
.mova-form-grid label,
:where(input, select, textarea)::placeholder,
.profile-copy small,
.quick-register-head p, .registry-ai-copy p,
.movement-summary-strip span, .debt-summary-grid span, .analysis-kpis span, .savings-summary-grid span,
.registry-type-ledger-row > div:nth-child(2) small, .registry-type-ledger-row > span:nth-child(3), .registry-type-ledger-row > span:nth-child(4),
.debt-main-amount span, .debt-progress-copy, .debt-period-box small,
.saving-goal-facts, .saving-goal-card > p, .saving-projection,
.account-identity span, .live-account .muted,
.calendar-legend, .calendar-rule-note,
.analysis-card-head p, .analysis-card-head > div:last-child, .analysis-bars > div > b, .analysis-line-list span,
.element-quick-actions small, .catalog-card-head p, .settings-account-card p, .currency-settings p, .fx-example p,
.history-kpi small, .history-table-head, .history-detail-head small, .history-detail-side > div > small,
.fv-history-detail-heading small,
.fv-history-detail-heading > span,
.movement-empty, .registry-type-empty, .range-empty,
.planning-repeat-banner p,
.registry-entry-repeat-toggle small,
.registry-entry-repeat-toggle i,
.repeat-entry-panel-head button,
.repeat-entry-months b,
.repeat-entry-months small,
.registry-entry-repeat-panel > p,
.duplicate-source-summary,
.duplicate-year-row > label,
.duplicate-month-grid span,
.duplicate-type-options legend,
.duplicate-type-options label,
.duplicate-opening-option small,
.duplicate-rule-note,
.annual-year-control button,
.annual-year-control small,
.annual-mode-tabs button,
.annual-controls > label span,
.annual-kpi small,
.annual-kpi > span,
.annual-section-head > span,
.annual-table-head,
.annual-table-row small,
.annual-table-row i,
.annual-month-card header small,
.annual-month-card header i,
.annual-month-net > span,
.annual-month-metrics small,
.annual-month-metrics > span > small:last-child,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > span,
.fv-virtuality-total p,
.virtuality-head-actions > small,
.fv-other-count small,
.savings-location-card header small,
.savings-location-empty,
.savings-location-empty > span,
.savings-location-empty small,
.settings-model-status > b,
.fv-helion-models > .simple-section-head p,
.fv-helion-model-card header small,
.fv-helion-model-card header p,
.fv-helion-model-metrics small,
.fv-helion-model-empty p,
.settings-model-economics small,
.notification-sync-note small,
.notification-summary small, .notification-section-title small,
.notification-summary span,
.notification-section-title p,
.withdrawal-notification-card header p,
.withdrawal-notification-money small,
.withdrawal-notification-money em,
.withdrawal-notification-money > i,
.withdrawal-destination-form label > span,
.withdrawal-destination-form label small,
.withdrawal-rule,
.withdrawal-no-account span,
.notification-empty p,
.notification-history .simple-section-head > span,
.notification-history-row small,
.helion-platform-section > .simple-section-head p,
.helion-platform-sync-status,
.helion-platform-totals small,
.helion-platform-totals span,
.helion-platform-model header small,
.helion-platform-model-values small,
.helion-platform-model-values em,
.helion-platform-empty > span,
.helion-platform-empty p,
.notification-model-group header small,
.notification-model-group > header > strong,
.notification-history-model > header span,
.notification-history-row > strong small,
.helion-import-panel label > span,
.helion-import-panel label > small,
.helion-import-rule p,
.registry-account-balance small,
#modalContent:has([data-fv-account-adjustment-target]) .modal-head p, #modalContent:has([data-fv-transfer-source]) .modal-head p,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid label, #modalContent:has([data-fv-transfer-source]) .mova-form-grid label,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid input:disabled,
[data-fv-transfer-quote],
[data-fv-transfer-quote][data-valid="true"],
.upgraded-registry .transfer-fee-field > em,
.upgraded-registry .transfer-calculation > i,
.upgraded-registry .transfer-calculation small,
.upgraded-registry .transfer-calculation em,
.upgraded-registry .transfer-preview-empty small,
.savings-close-notification-card header p,
.savings-close-balance small,
.savings-close-balance em,
.savings-close-form > label > span,
.savings-close-amount i, .savings-close-amount b,
.savings-close-form label > small,
.savings-close-no-account span,
.preference-section-head p,
.sidebar-global-refresh:disabled,
.helion-cost-report > .simple-section-head p,
.helion-cost-period-action > label > span,
.helion-cost-head-tools > label > span,
.helion-cost-totals small,
.helion-cost-type-summary > header small,
.helion-cost-type-summary > header p,
.helion-cost-type-summary-grid article > div small,
.helion-cost-type-summary-grid dt,
.helion-cost-type-summary-grid article > p,
.helion-cost-model > header small,
.helion-cost-model > header > div:last-child span,
.helion-cost-model > header > div:last-child small,
.helion-cost-line > div > small,
.helion-cost-line[data-payment-state="sin-plan"] > div > em,
.helion-cost-line dt,
.helion-cost-line > p,
.helion-cost-model > footer > span,
.helion-cost-model > footer small,
.helion-other-paid small,
.helion-cost-rule p,
.helion-cost-empty > span,
.helion-cost-empty p,
.upgraded-registry .helion-allocation-head span, .upgraded-registry .helion-allocation-method > span,
.upgraded-registry .helion-allocation-head small,
.upgraded-registry .helion-allocation-values > label > span,
.upgraded-registry .helion-allocation-summary,
.upgraded-registry .helion-cost-fields label > span,
.upgraded-registry .helion-economic-note span,
.helion-reality-strip small,
.helion-reality-strip span,
.helion-plan-report > .simple-section-head p,
.helion-plan-totals small,
.helion-plan-model header small,
.helion-plan-model > header > div:last-child span,
.helion-plan-model > header > div:last-child small,
.helion-plan-basis,
.helion-plan-cost-list small,
.helion-plan-cost-list .missing strong,
.helion-plan-model footer small,
.helion-plan-rule p,
.actual-flow-split span,
.registry-ai-review-badge,
.registry-ai-audio-preview span,
.quick-settlement-summary small,
.registry-ai-tools-title,
.registry-ai-workspace .registry-ai-description > span,
.registry-ai-workspace .registry-ai-description textarea::placeholder,
.registry-ai-workspace .registry-ai-dictation-hint,
.session-persistence-note,
.profile-logout,
.sidebar-refresh-status .sync-source b,
.sidebar-refresh-status .sync-source em,
.account-total-dual .available-usd small,
.account-total-dual .available-usd span,
.debt-provider-context,
.calendar-focus-switch button,
.payment-notification-group > header small,
.payment-notification-group > header b,
.payment-notification-card small,
.payment-notification-card p,
.generic-notification-card small,
.generic-notification-card p,
.quick-settlement-amount i,
.simple-kpi .remainder-ending-note,
.registry-ai-draft-head small, .registry-ai-draft-grid small, .registry-draft-receivables > small, .registry-pending-head small,
.registry-draft-evidence,
.registry-draft-receivable-components,
.registry-draft-receivables p,
.registry-ai-dictation-hint,
.registry-draft-transcript,
.registry-ai-plan-head small, .registry-ai-plan-edit-card > div:first-child small, .registry-ai-plan-assumptions small, .registry-ai-plan-edit-grid span, .registry-ai-plan-no-account span,
.registry-ai-plan-copy small,
.registry-ai-plan-evidence,
.registry-ai-plan-foot,
.registry-ai-plan-no-account b,
.mova-ai-settings-head p,
.mova-ai-settings-flow i,
.mova-ai-settings-foot small,
.registry-manual-disclosure > summary small,
.registry-manual-disclosure > summary em,
.registry-pending-head p,
.registry-pending-item small,
.registry-pending-item em,
.movement-ledger-row > span small, .registry-type-ledger-row > div:nth-child(2) small, .history-ledger-row > div small, .movement-ledger-row time,
.fv-helion-model-card header p, .helion-platform-totals span, .helion-platform-model-values em, .helion-reality-strip span,
.accounts-opening-note p,
.dashboard-remainder-reconciliation small,
.dashboard-remainder-reconciliation .remainder-part > span,
.dashboard-remainder-reconciliation .remainder-operator,
.debt-detail-title > div > span,
.credit-card-hero b, .credit-card-hero small,
.credit-payment-options small,
.credit-ownership span,
.credit-cycle-context small,
.credit-cycle-context span,
.credit-evidence-transactions > header > span,
.credit-evidence-transactions article > small,
.debt-plan-head > strong small,
.debt-plan-facts > span,
.debt-installment > div small, .debt-installment > small,
.debt-plan-rule,
.debt-editor-heading small,
.debt-security-note, .debt-installment-schedule small,
.grouped-loan-plan span,
.grouped-loan-empty,
.credit-use-card-summary span, .credit-balance-breakdown span, .credit-statement-calendar small, .credit-use-position span, .credit-use-existing > div > small, .credit-use-form-head small,
.credit-use-card-summary small,
.credit-detail-actions span,
.credit-balance-breakdown > header > span,
.credit-balance-breakdown article small,
.credit-statement-month > div small,
.credit-use-planner .debt-detail-title p,
.credit-use-safety p,
.credit-use-kind-note,
.credit-use-warning span,
.credit-use-row > div:first-child span,
.credit-use-empty,
.movement-evidence-head > span,
.movement-evidence-files small,
.movement-evidence-preview a,
.movement-evidence-loading, .movement-evidence-error,
.account-reconciliation-steps span,
.account-reconciliation-steps i,
.account-reconciliation-intro p,
.account-reconciliation-context label > span, .account-reconciliation-note > span, .account-reconciliation-real > span,
.registry-ledger-actions-help,
.registry-ledger-category-head small,
.panorama-quick-context small,
.account-reconciliation-account small, .account-reconciliation-registered small, .account-reconciliation-result small, .account-reconciliation-preview-row small,
.account-reconciliation-account span,
.account-reconciliation-real em,
.account-reconciliation-footnote,
.account-reconciliation-section-head > p,
.account-reconciliation-preview-row > div > span,
.account-reconciliation-preview-row > i,
.account-reconciliation-suggestion em,
.account-reconciliation-totals article > small,
.account-reconciliation-totals article span,
.account-reconciliation-totals article i,
.account-reconciliation-totals article p,
.account-reconciliation-empty p,
.account-reconciliation-success > p,
.account-reconciliation-success > div span,
.fv-origin-filter > span,
.reconciliation-movement-actions p,
.reconciliation-readonly-summary span,
.sidebar .nav-label,
.sidebar .nav-subitem,
.sidebar-refresh-status:hover .sync-source em, .sidebar-refresh-status:focus-visible .sync-source em,
.commitment-kpi-copy,
.future-money-reserve .commitment-empty-line,
.commitment-detail-total > div:first-child span, .commitment-detail-total > div:first-child small,
.commitment-detail-native span, .commitment-detail-sources span,
.commitment-detail-main small,
.commitment-detail-main div > em,
.commitment-detail-state em,
.commitment-detail-amount small,
.commitment-detail-formula,
.commitment-class-overview span,
.receivable-detail-row > div small,
.receivable-detail-row > em,
.mutual-debt-note span,
.month-start-banner p,
.month-start-dialog > header p,
.month-start-icon-button,
.month-start-stepper li,
.month-start-section-heading p, .month-start-transfer-section > p,
.month-start-account > div small, .month-start-choice small, .month-start-transfer small,
.month-start-account label span, .month-start-date span, .month-start-correction-account > label:last-child span, .month-start-reason > span, .month-start-history-controls label span,
.month-start-account > em,
.month-start-plan > p,
.month-start-excluded,
.month-start-automatic small,
.month-start-automatic-head p,
.month-start-automatic-item > p,
.month-start-debt-editor p,
.month-start-review-grid small,
.month-start-proposed > p,
.month-start-proposed-list small,
.month-start-proposed-list em,
.month-start-empty,
.month-start-loading,
.month-start-history-summary small,
.month-start-revisions small,
.month-start-revisions p,
.month-start-correction-entry p,
.month-start-sources p, .month-start-savings p,
.mova-ai-chat-identity small,
.mova-ai-chat-close,
.mova-ai-message-body small,
.mova-ai-quick-prompts button,
.mova-ai-proposal-description,
.mova-ai-proposal-entry-head small,
.mova-ai-proposal-details dt,
.mova-ai-proposal-row,
.mova-ai-proposal-cancel,
.mova-ai-proposal-status,
.mova-ai-proposal.is-cancelled .mova-ai-proposal-status,
.mova-ai-attachment button,
.mova-ai-chat-input textarea::placeholder,
.mova-ai-tool-button,
.mova-ai-chat-foot,
html[data-theme="light"] #page .fv-debts-view .credit-balance-breakdown > header > span,
html[data-theme="light"] #page .fv-debts-view .credit-balance-breakdown > header small,
html[data-theme="light"] #page .fv-debts-view .credit-balance-breakdown article > span,
html[data-theme="light"] #page .fv-debts-view .credit-balance-breakdown article > small, html[data-theme="light"] #page .fv-debts-view .credit-balance-breakdown > p,
html[data-theme="light"] #page .fv-history-view .fv-history-range input::placeholder,
html[data-theme="light"] #page .fv-history-view :is(.movement-date-range label > span, .fv-origin-filter > span, .history-search > small),
html[data-theme="light"] #page .fv-history-view .history-quick-ranges button,
html[data-theme="light"] #page .fv-history-view :is(.fv-history-detail-heading small, .fv-history-detail-heading > span),
html[data-theme="light"] #page .fv-history-view .history-ledger-row > div small,
.niwwi-workbook-head small,
.niwwi-workbook-head p,
.niwwi-workbook-tabs button,
.niwwi-workbook-summary span,
.niwwi-workbook-summary small,
.niwwi-panorama-freshness,
.niwwi-workbook-sheet .niwwi-four-scenarios span, .niwwi-workbook-sheet .niwwi-four-scenarios small,
.niwwi-workbook-actions .secondary,
.niwwi-workbook-actions .modal-close,
.niwwi-workbook-sheet .niwwi-monthly-stages span,
.niwwi-workbook-sheet .niwwi-monthly-stages small,
.niwwi-workbook-panel thead th,
.niwwi-workbook-panel .empty,
.niwwi-workbook-note,
.niwwi-workbook-footer { color: var(--nw-muted); }
.demo-note,
.helion-admin > .section-title-row p,
.planned-opening-edit > small,
.movement-search > span { color: var(--nw-muted) !important; }
@media ((max-width: 820px)) {
.history-month-summary > strong::before { color: var(--nw-muted); }
}
@media ((max-width: 760px)) {
.mova-mobile-bottom-nav button,
.mova-mobile-register-sheet > span { color: var(--nw-muted); }
}
.input-wrap,
.icon-button,
.profile:hover,
.topbar,
.segmented,
.secondary, .action-btn,
.secondary:hover, .action-btn:hover,
.row-icon,
.status,
.status.paid,
.badge,
.progress,
.donut::after,
.filter,
.day.today,
.event.red,
.event.green,
.event.yellow,
.modal-backdrop,
.modal-close,
.dropzone,
.source-logo.vw,
.exchange,
.duplicate-options,
.source-pill.virtuality,
.calendar-legend,
.period-menu,
.period-menu-head button,
.dashboard-switcher,
.dashboard-mode,
.simple-section-head > span,
.simple-bar-row > div, .category-list > div > div,
.spend-icon,
.dashboard-context .dashboard-switcher,
.source-breakdown > div:hover,
.helion-overview .donut-legend span, .helion-overview .donut-legend b,
.helion-switcher .dashboard-switcher,
.model-result,
.admin-bars i,
.payment-check,
.payment-item button,
.payment-item.paid .payment-check,
.payment-item.soon .payment-check,
.destination-wide .list-row,
.period-control #periodLabel.period-locked,
.admin-bars > div,
.destination-wide .row-icon,
.destination-total,
.general-switcher .dashboard-switcher,
.other-progress > i,
.settings-tabs,
.settings-note > span,
.history-filter,
.history-toggle,
.history-detail,
.history-flow, .history-detail-side,
.flow-lines > div,
.flow-lines .result,
.mini-distribution,
.history-detail-card,
.ledger-icon,
.expense-card .ledger-icon,
.history-picker-panel,
.history-quick-ranges button,
.history-period-option,
.history-period-option:hover,
.history-period-option.active,
.history-period-option > span,
.history-period-metrics > div,
.custom-date-values > span,
.range-calendar-nav button,
.dual-calendars > [data-history-calendar],
.history-range-detail,
.history-range-close,
.finance-bars-card .simple-bar-row,
.business-status.active,
.business-core-meta span,
.business-visibility span,
.business-form section,
.business-checks label, .business-state label,
.business-aware-filter,
.report-business-filter,
:where(.segmented, .dashboard-switcher, .dashboard-mode, .history-filter, .settings-tabs, .mova-segmented),
:where(.period-menu, .history-picker-panel, .mova-dropdown),
.business-context-switcher,
.dashboard-themed .dashboard-context .business-context-switcher,
.dashboard-period-chip:hover:not(:disabled),
.dashboard-period-menu,
.dashboard-period-menu-head button,
.money-location-list > div,
#page[data-dashboard-theme="helion"] .flow-step,
.registry-tabs,
.registry-period,
.registry-flow-note,
.registry-flow-note.copied,
.registry-flow-note.copied > span,
.registry-block-head,
.registry-block-head > div > span,
.registry-block.expense .registry-block-head > div > span, .registry-block.debt .registry-block-head > div > span,
.registry-block.saving .registry-block-head > div > span,
.registry-status,
.registry-status.registered, .registry-row.confirmed .registry-status,
.registry-status.skipped,
.registry-current-note,
.registry-ai-drop em,
.registry-ai-drop:hover em,
.registry-month-badge,
.registry-impact-preview,
.entry-type-icon,
.unified-register-row.expense .entry-type-icon,
.unified-register-row.debt .entry-type-icon,
.registry-ledger-head,
.registry-row-actions button,
.registry-visual-toolbar,
.registry-visual-entry,
.registry-visual-meta span,
.registry-visual-actions button,
.account-brand-logo.is-binance,
.account-brand-logo.is-plata,
.catalog-tags span,
.upgraded-registry .registry-ai-drop:hover em,
.upgraded-registry .finance-register-grid input:disabled,
.upgraded-registry .registry-impact-preview,
.registry-visualizer .registry-visual-toolbar,
.registry-native-amount,
.registry-type-group,
.registry-type-summary > i,
.registry-type-compare-values span,
.registry-type-detail,
.registry-ledger-mode,
.registry-ledger-mode.actual,
.registry-ledger-actions button,
.registry-compare-kpi > div span,
.movement-search,
.movement-ledger-head,
.movement-kind > i,
.movement-kind.expense > i,
.movement-kind.debt > i,
.movement-kind.transfer > i,
.movement-kind.saving > i,
.movement-detail-head button,
.account-currency,
.debt-filter-bar,
.paid-period .debt-period-status,
.debt-period-box,
.debt-account-card dl > div,
.debt-detail-facts > div,
.debt-payment-history .debt-opening-row,
.savings-equation,
.saving-projection,
.calendar-day-top > small,
.smart-calendar .event.status-overdue,
.calendar-day-more,
.calendar-day-detail-backdrop,
.calendar-day-detail-totals span,
.calendar-day-detail-item,
.analysis-toolbar,
.analysis-view-tabs,
.analysis-forecast-control-grid label,
.analysis-forecast-control-grid em button,
.forecast-scenario-switch,
.forecast-formula footer,
.forecast-upcoming > article > span,
.configuration-deep-view .business-core-meta span, .configuration-deep-view .theme-meta span,
.currency-settings > label > div,
.remainder-timeline article,
.remainder-rule, .modal-rule-note,
.mova-form-grid .mova-check,
.history-view .history-period-metrics > div:nth-child(3), .history-view .history-period-metrics .remaining,
.registry-preset-options,
.registry-preset-options button,
.registry-ledger-actions .realize,
.registry-entry-repeat-panel,
.repeat-entry-panel-head button,
.repeat-entry-months span,
.duplicate-source-summary,
.duplicate-month-grid span,
.duplicate-type-options label,
.duplicate-rule-note,
.annual-year-control,
.fv-calendar-month-nav > button,
.annual-mode-tabs button,
.annual-table-row:hover,
.annual-month-metrics > span,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > span, #page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > b,
.savings-location-card > header > span,
.savings-location-row,
.fv-helion-model-card header > span, .fv-helion-model-empty > span,
.fv-helion-model-metrics > span,
.settings-model-economics > span,
.notification-summary article,
.withdrawal-notification-money > span,
.helion-platform-model-values > span,
.helion-platform-empty > span,
.notification-model-group,
.notification-history-model > header,
.fv-accounts-view .live-account > .modal-actions .secondary,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid input:disabled,
.upgraded-registry .transfer-calculation > div:not(.transfer-preview-empty),
.sidebar-refresh-icon,
.models-settings-view .fixed-economic-field,
.helion-cost-totals > span,
.helion-cost-type-summary-grid > article,
.helion-cost-type-summary-grid dl > div,
.helion-cost-line dl > div,
.helion-cost-empty > span,
.upgraded-registry .helion-model-choices > label,
.upgraded-registry .helion-allocation-values > label > div,
.upgraded-registry .helion-allocation-summary,
.upgraded-registry .helion-economic-note,
.helion-reality-strip > div,
.helion-plan-totals > span,
.registry-ai-dictation,
.quick-settlement-summary > :is(span, label),
.registry-ai-workspace .registry-ai-source,
.calendar-focus-switch,
.modal-actions > .modal-close,
.registry-ai-draft-grid > div,
.registry-ai-plan-row,
.registry-ai-plan-edit-card,
.registry-manual-disclosure,
.registry-manual-disclosure[open] > summary,
.registry-pending-item,
.registry-pending-item > button:hover,
.helion-view-tabs,
.helion-profit-core > div,
.credit-line-summary,
#modalContent:has([data-functional-debt-save]) > .modal-head, #modalContent:has([data-card-statement-dialog]) > .modal-head,
.debt-editor-actions,
#modalContent:has(.credit-use-planner),
.credit-use-planner > .modal-head,
.movement-evidence-preview img,
.account-reconciliation-actions,
.registry-ledger-category,
.panorama-quick-context > span,
.account-reconciliation-row,
.account-reconciliation-preview-row,
.reconciliation-readonly-summary > div,
.sidebar-refresh-status,
.sidebar-refresh-status:hover, .sidebar-refresh-status:focus-visible,
.commitment-detail-sources > div,
.commitment-detail-row,
.commitment-rate-disclosure span,
.receivable-detail-group,
.debt-compensation-side,
.month-start-secondary,
.month-start-backdrop,
.month-start-icon-button,
.month-start-stepper,
.month-start-step-marker,
.month-start-account,
.month-start-plan,
.month-start-excluded,
.month-start-automatic,
.month-start-automatic-item,
.month-start-automatic-item.is-included,
.month-start-automatic-total,
.month-start-automatic.is-blocked,
.month-start-debt-editor,
.month-start-review-grid article,
.month-start-transfer-section,
.month-start-transfer,
.month-start-transfer > span:nth-of-type(1),
.month-start-proposed,
.month-start-proposed-list article,
.month-start-empty,
.month-start-actions,
.month-start-history-summary > div,
.month-start-correction-entry,
.month-start-correction-account,
.month-start-sources, .month-start-savings,
.month-start-savings input[readonly],
.mova-ai-chat.is-open .mova-ai-launcher-icon.close-icon,
.mova-ai-chat-head,
.mova-ai-chat-close,
.mova-ai-quick-prompts button,
.mova-ai-typing,
.mova-ai-proposal-mode.actual,
.mova-ai-proposal-mode.planned,
.mova-ai-proposal-rows,
.mova-ai-proposal-cancel,
.mova-ai-chat-attachments,
html[data-theme="dark"] #page .venuz-billing-settings, html[data-theme="dark"] #page .remainder-settings { background-color: var(--nw-surface-2); }
.unified-register-rows::-webkit-scrollbar-track { background-color: var(--nw-surface-2); }
.destination-wide .list-row,
.account-brand-logo.is-binance,
html[data-theme="dark"] body #page article.simple-kpi,
html[data-theme="dark"] .sidebar, html[data-theme="dark"] .mova-mobile-topbar, html[data-theme="dark"] .mova-mobile-bottom-nav,
html[data-theme="dark"] .niwwi-guide, html[data-theme="dark"] .niwwi-preferences,
html[data-theme] #page .settings-credit-card .account-brand-logo.is-rappi { background-color: var(--nw-surface-2) !important; }
@media ((max-width: 760px)) {
.mova-mobile-register-sheet { background-color: var(--nw-surface-2); }
}
.source-card:hover,
.modal,
.sheet-row select, .sheet-row input, .duplicate-form select,
.sheet-add,
.period-control > button:first-child:hover, .period-control > button:last-child:hover,
.period-control #periodLabel,
.period-menu,
.dashboard-switcher,
.dashboard-mode,
.simple-kpi.purple,
.projection-card,
.helion-overview .donut-legend span, .helion-overview .donut-legend b,
.helion-overview .donut-legend span,
.helion-switcher .dashboard-switcher,
.model-result,
.admin-kpis .result,
.payment-item button,
.period-control #periodLabel.period-locked,
.admin-kpis .operating-cost-card,
.admin-bars > div,
.general-switcher .dashboard-switcher,
.income-composition,
.history-filter,
.history-toggle,
.history-month.expanded .history-detail,
.history-flow, .history-detail-side,
.mini-distribution,
.history-detail-card,
.history-quick-ranges button,
.history-period-metrics > div,
.quick-months,
.custom-date-values > span,
.range-calendar-nav button,
.dual-calendars > [data-history-calendar],
.history-range-close,
.finance-bars-card .simple-bar-row,
.business-core-meta span,
.business-visibility span,
.business-form section,
.business-form input:not([type="checkbox"]):not([type="radio"]), .business-form select,
.business-checks label, .business-state label,
.business-aware-filter,
.report-business-filter,
.history-period-nav,
.general-dashboard-page .general-debt-kpi,
.kpi-secondary-line,
.money-location-list > div,
.future-money-reserve footer,
.venuz-billing-form input,
.source-dashboard-page .cashout-kpi,
#page[data-dashboard-theme="helion"] .flow-step,
.registry-flow-note,
.registry-flow-note.copied,
.registry-kpi.income,
.registry-kpi.expense, .registry-kpi.debt,
.registry-row :is(input, select),
.nav-subitems,
.registry-current-note,
.registry-current-note.planning-note,
.registry-ai-description textarea,
.registry-month-badge,
.quick-register-form :is(input, select),
.registry-impact-preview,
.registry-row-actions button,
.registry-visual-toolbar,
.registry-visual-entry,
.registry-visual-meta span,
.registry-visual-actions,
.registry-visual-actions button,
.registry-empty-business,
.sidebar-global-refresh, .sidebar-notification-bell,
.movement-date-range,
.movement-date-range input,
.catalog-tags span,
.upgraded-registry .registry-current-note,
.upgraded-registry .registry-ai-drop em, .upgraded-registry .registry-ai-description textarea,
.upgraded-registry .registry-month-badge,
.upgraded-registry .finance-register-grid input, .upgraded-registry .finance-register-grid select,
.upgraded-registry .registry-conversion-preview,
.upgraded-registry .registry-impact-preview,
.registry-visualizer .registry-visual-toolbar,
.registry-business-compare span,
.registry-type-group,
.registry-type-detail,
.registry-type-detail-head > div:last-child span,
.registry-type-ledger-row,
.registry-ledger-actions button,
.registry-type-empty,
.registry-compare-kpi > div span,
.movement-search,
.movement-extra-filters,
.movement-summary-strip article,
.movement-detail-head button,
.movement-detail-amount, .debt-detail-balance,
.account-currency,
.live-account .ownership,
.debt-summary-grid article,
.debt-filter-bar,
.debt-period-box,
.debt-detail-facts > div,
.debt-payment-history .debt-opening-row,
.savings-equation,
.saving-projection,
.calendar-month-insights article,
.smart-calendar .day,
.calendar-day-more,
.calendar-day-detail,
.calendar-day-detail > header button,
.calendar-day-detail-totals span,
.calendar-day-detail-item,
.analysis-toolbar,
.analysis-kpis article,
.analysis-view-tabs,
.analysis-forecast-summary article,
.analysis-forecast-control-grid label,
.analysis-forecast-control-grid em button,
.forecast-result > div,
.forecast-table td,
.forecast-scenario-switch,
.forecast-status,
.forecast-simulation-result span,
.configuration-deep-view .business-core-meta span, .configuration-deep-view .theme-meta span,
.currency-settings > label > div,
.remainder-timeline article,
.remainder-rule, .modal-rule-note,
.mova-form-grid input, .mova-form-grid select,
.mova-form-grid .mova-check,
.history-view .history-period-metrics > div:nth-child(3), .history-view .history-period-metrics .remaining,
.registry-preset-options,
.registry-preset-options button,
.fv-history-list-tools,
.registry-entry-repeat-panel,
.repeat-entry-panel-head button,
.repeat-entry-months span,
.duplicate-source-summary,
.duplicate-year-row select,
.duplicate-month-grid span,
.duplicate-type-options,
.annual-year-control,
.fv-calendar-month-nav > button,
.annual-controls select,
.annual-table-row,
.annual-month-card,
.annual-month-card header i,
.annual-month-metrics > span,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > span, #page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > b,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > span,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > b,
.savings-location-row,
.savings-location-empty,
.sidebar.collapsed .cloud-sync-status,
.sidebar.collapsed .cloud-sync-status::after,
.fv-helion-model-card,
.fv-helion-model-metrics > span,
.settings-model-economics > span,
.upgraded-registry .registry-conversion-preview .registry-helion-rule-note,
.notification-sync-note,
.notification-summary article,
.withdrawal-notification-money > span,
.withdrawal-destination-form select,
.withdrawal-rule,
.withdrawal-no-account,
.notification-history-row,
.helion-platform-sync-status,
.helion-platform-totals article,
.helion-platform-model,
.helion-platform-model-values > span,
.notification-model-group,
.notification-model-group .withdrawal-notification-card,
.notification-history-model,
.helion-import-panel textarea,
.helion-import-rule,
.registry-account-balance,
.fv-accounts-view .live-account,
.fv-accounts-view .live-account > .modal-actions .secondary,
#modalContent:has([data-fv-account-adjustment-target]), #modalContent:has([data-fv-transfer-source]),
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid input, #modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid select, #modalContent:has([data-fv-transfer-source]) .mova-form-grid input, #modalContent:has([data-fv-transfer-source]) .mova-form-grid select,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid input:disabled,
#modalContent:has([data-fv-account-adjustment-target]) > .modal-actions, #modalContent:has([data-fv-transfer-source]) > .modal-actions,
[data-fv-transfer-quote],
[data-fv-transfer-quote][data-valid="false"],
.upgraded-registry .transfer-calculation,
.upgraded-registry .transfer-calculation > div:not(.transfer-preview-empty),
.savings-close-form select, .savings-close-amount,
.savings-close-actions,
.savings-close-no-account,
.sidebar-global-refresh,
.sidebar-refresh-icon,
.models-settings-view .fixed-economic-field,
.helion-cost-head-tools select,
.helion-cost-totals > span,
.helion-cost-type-summary,
.helion-cost-type-summary-grid > article,
.helion-cost-model,
.helion-cost-line[data-payment-state="pagado"] > div > em,
.helion-cost-line[data-payment-state="sin-plan"] > div > em,
.upgraded-registry .helion-model-allocation,
.upgraded-registry .helion-model-choices > label,
.upgraded-registry .helion-allocation-values > label > div,
.upgraded-registry .helion-allocation-summary,
.upgraded-registry .helion-cost-fields,
.upgraded-registry .helion-economic-note,
.helion-reality-strip > div,
.helion-plan-totals > span,
.helion-plan-model,
.helion-plan-basis,
.actual-flow-split > div,
.future-money-reserve p.money-cushion,
.registry-ai-review-badge,
.registry-ai-dictation,
.sidebar-notification-bell,
.sidebar-notification-bell > b,
.quick-settlement-summary > :is(span, label),
.profile-logout:hover,
.calendar-focus-switch,
.registry-ai-capture .registry-ai-draft,
.registry-ai-draft-head > span,
.registry-ai-draft-grid > div,
.registry-ai-plan-row,
.registry-ai-plan-type,
.registry-ai-plan-assumptions, .registry-ai-plan-evidence, .registry-ai-plan-notice, .registry-ai-plan-question, .registry-ai-plan-message,
.registry-ai-plan-edit-card,
.registry-ai-plan-edit-grid input, .registry-ai-plan-edit-grid select, .registry-ai-plan-no-account b,
.mova-ai-status,
.mova-ai-settings-flow span,
.registry-manual-disclosure,
.registry-manual-disclosure > summary > span,
.registry-pending-head > span,
.registry-pending-item,
.registry-pending-item > button,
.account-brand-logo,
.movement-empty, .range-empty, .registry-type-empty,
.credit-line-summary,
#modalContent:has([data-functional-debt-save]), #modalContent:has([data-card-statement-dialog]),
.debt-editor-section,
.debt-installment-schedule textarea,
.debt-editor-actions,
.movement-evidence,
#modalContent.account-reconciliation-modal,
.account-reconciliation-steps i,
.account-reconciliation-context input, .account-reconciliation-note input, .account-reconciliation-real input,
.registry-ledger-category,
.panorama-quick-context > span,
.account-reconciliation-row,
.account-reconciliation-preview-row,
.account-reconciliation-suggestion,
.account-reconciliation-totals article,
.account-reconciliation-empty,
.account-reconciliation-success > div span,
.fv-origin-filter select,
.reconciliation-readonly-summary > div,
.sidebar .nav-subitems,
.sidebar .side-foot,
.sidebar-refresh-status,
.sidebar-refresh-status:hover, .sidebar-refresh-status:focus-visible,
.sidebar .profile,
.commitment-variable-note,
.commitment-inline-detail,
.commitment-detail-total,
.commitment-detail-sources > div,
.commitment-detail-row,
.commitment-class-overview article,
.commitment-class-overview article:last-child,
.receivable-detail-group,
.platform-flow-chips > div,
.dashboard-platform-activity .subtle-button,
.debt-receivable-row,
.debt-receivable-row dl > div,
.debt-receivable-row .subtle-button,
.debt-receivable-empty,
.debt-planned-receivables,
.debt-planned-receivables > div > div,
.debt-compensation-side,
.debt-compensation-side.receivable,
.month-start-secondary,
.month-start-dialog,
.month-start-icon-button,
.month-start-step-marker,
.month-start-account,
.month-start-account input, .month-start-date input, .month-start-history-controls input, .month-start-correction-account input, .month-start-reason input, .month-start-reason textarea,
.month-start-plan,
.month-start-plan > p,
.month-start-excluded,
.month-start-automatic-item,
.month-start-automatic-choice label,
.month-start-automatic-total,
.month-start-review-grid article,
.month-start-transfer-section,
.month-start-transfer,
.month-start-proposed,
.month-start-proposed-list article,
.month-start-confirmations label,
.month-start-empty,
.month-start-spinner,
.month-start-actions,
.month-start-history-summary > div,
.month-start-correction-entry,
.month-start-correction-account,
.month-start-sources, .month-start-savings,
.mova-ai-chat-close,
.mova-ai-message-body,
.mova-ai-quick-prompts button,
.mova-ai-typing,
.mova-ai-proposal-entry,
.mova-ai-proposal-details,
.mova-ai-proposal-rows,
.mova-ai-proposal-cancel,
.mova-ai-chat-composer,
.mova-ai-tool-button:hover { border-color: var(--nw-line); }
.destination-wide .list-row { border-color: var(--nw-line) !important; }
@media ((max-width: 760px)) {
.movement-detail-panel,
.mova-mobile-bottom-nav,
.mova-mobile-register-sheet,
.mova-mobile-register-sheet button { border-color: var(--nw-line); }
}
@media ((max-width: 1024px)) {
.mova-mobile-drawer-close { border-color: var(--nw-line); }
}
.nav-label,
.profile-copy small,
.notification,
.kpi-label, .section-label,
.mini-stats span,
.legend,
.bar-group label,
.balance-callout,
.row-main small,
.row-amount small, .status,
.badge,
.stat-lines span,
.donut-legend,
.ownership,
.filter,
.calendar-head div,
.day,
.event,
.dropzone small,
.quick-summary small,
.quick-summary p,
.exchange,
.exchange button,
.sheet-head,
.sheet-row select, .sheet-row input, .duplicate-form select,
.money-input span,
.summary-line,
.duplicate-form label,
.duplicate-options,
.flow-step > span,
.flow-step small,
.model-card > .muted,
.model-bars > div,
.model-bars strong,
.model-result span,
.expense-head,
.expense-row,
.expense-row small,
.source-pill,
.calendar-legend,
.period-control #periodLabel small,
.month-grid button,
.dashboard-switcher button,
.dashboard-mode button,
.data-cutoff,
.simple-kpi p,
.simple-section-head p,
.simple-section-head > span,
.simple-bar-row > span,
.simple-bar-row b,
.income-total small,
.source-breakdown > div,
.subtle-button,
.spend-icon,
.spending-row b,
.spending-row small,
.spending-row strong,
.category-list span,
.category-list b,
.projection-card small,
.projection-card p,
.projection-explain span,
.dashboard-context > div:first-child small,
.helion-overview .donut-legend span,
.page-head .head-actions > .exchange,
.page-head .head-actions > .exchange b,
.helion-admin > .section-title-row p,
.admin-view-badge,
.admin-kpis small,
.admin-kpis span,
.admin-card-head p,
.admin-card-head > span,
.admin-bars span,
.admin-bars strong,
.operating-equation small,
.operating-equation b,
.payment-check,
.payment-item > div b,
.payment-item > div small,
.payment-item > strong,
.payment-item button,
.upcoming-list time small,
.upcoming-list span,
.upcoming-list span small,
.upcoming-list b,
.helion-eyebrow,
.admin-bars em,
.admin-bars > div > span,
.destination-total small,
.dashboard-kpis .simple-kpi:not(.available-highlight) p,
.virtuality-total small,
.virtuality-income-card .donut-legend,
.other-income-summary small,
.other-progress > div,
.other-income-detail .section-title-row > div p,
.other-income-row > div small,
.income-account,
.dashboard-eyebrow i,
.settings-section-head > div > span,
.company-theme-copy > small,
.theme-meta span,
.theme-meta b,
.settings-note p,
.history-filter button,
.history-kpi small,
.history-section-head p,
.history-legend,
.history-bar-group > b,
.history-table-head,
.history-month-name > span,
.history-month-name small,
.history-toggle,
.history-detail-head small, .history-detail-side > div > small,
.history-detail-head > span,
.flow-lines > div,
.flow-lines b,
.history-category span,
.history-category strong,
.mini-distribution > small,
.mini-distribution span,
.mini-distribution strong,
.detail-card-title small,
.ledger-icon,
.history-ledger-row > div b,
.history-ledger-row > div small,
.debt-detail-head,
.debt-detail-row b,
.debt-detail-row strong,
.debt-detail-row span,
.debt-detail-row small,
.saving-detail-row > div b,
.saving-detail-row > div small,
.history-picker-button small,
.history-picker-title small,
.history-picker-title > span,
.history-quick-ranges button,
.history-period-option > span,
.history-period-option > div small,
.history-period-option > strong small,
.history-open-detail,
.history-period-title > small,
.history-period-title > strong em,
.history-period-title p,
.history-period-metrics span,
.history-range-presets > small, .quick-months > small, .custom-range-head > div > small,
.history-range-presets > button,
.quick-months .history-period-option > div b,
.quick-months .history-period-option > div small,
.custom-range-head > div > b,
.custom-date-values small,
.custom-date-values b,
.range-calendar-nav span,
.range-calendar-title span,
.range-weekdays span,
.range-calendar-legend,
.range-detail-heading small,
.range-detail-heading p,
.range-empty,
.history-no-data,
.business-card-labels > small,
.business-status,
.business-core-meta span,
.business-visibility span,
.business-modal-eyebrow,
.business-form label,
.business-form input:not([type="checkbox"]):not([type="radio"]), .business-form select,
.identity-fields > label > div > span,
.business-state p,
.business-aware-filter > span,
.business-aware-filter select,
.report-business-filter > span,
.event-business,
.history-picker-copy small,
.history-picker-caret,
:where(.segmented, .dashboard-switcher, .dashboard-mode, .history-filter, .settings-tabs, .mova-segmented) > button,
:where(.mova-field, .sheet-row select, .sheet-row input, .duplicate-form select, .business-form input:not([type="checkbox"]):not([type="radio"]), .business-form select),
.business-context-switcher > button,
.dashboard-period-icon,
.dashboard-period-chip small,
.dashboard-period-chip > i,
.dashboard-month-grid button,
.kpi-secondary-line,
.kpi-secondary-line b,
.money-position-card .income-total p,
.money-location-list span,
.money-location-list b,
.future-money-reserve > div small,
.future-money-reserve p,
.future-money-reserve footer span,
.venuz-billing-settings .analysis-card-head small,
.venuz-billing-form label > span,
.venuz-billing-form label > div b,
.general-dashboard-page .finance-bars-card .simple-section-head > span,
.source-dashboard-page .kpi-grid .kpi-label,
.source-dashboard-page .kpi-grid .delta,
.registry-tabs button small,
.registry-period > span,
.registry-flow-note p,
.registry-kpi small,
.registry-kpi span,
.registry-block-head p,
.registry-block-head .secondary,
.registry-row :is(input, select),
.registry-concept b,
.registry-concept small,
.registry-money > span,
.registry-state,
.registry-source,
.registry-planned small, .registry-real > small,
.registry-planned b,
.registry-variance,
.registry-status,
.nav-parent > i,
.registry-eyebrow,
.registry-current-note > span,
.registry-current-note b,
.registry-current-note small,
.registry-ai-copy small, .registry-ai-drop > span, .registry-ai-description > span,
.registry-ai-copy p,
.registry-ai-drop em,
.registry-ai-photo-name,
.registry-ai-description textarea,
.registry-ai-action,
.quick-register-head p, .unified-list-head p,
.registry-month-badge,
.quick-register-form label > span,
.quick-register-form :is(input, select),
.quick-money > i,
.registry-impact-preview > span,
.registry-impact-preview > b,
.registry-impact-preview > small,
.registry-list-legend,
.entry-main b,
.entry-main small, .entry-account, .entry-impact, .entry-date, .entry-proof,
.unified-register-row > strong,
.registry-ledger-head,
.registry-row-actions button,
.registry-visual-tabs button,
.registry-visual-legend,
.registry-business-head p,
.registry-visual-entry-top > span,
.registry-visual-entry > p,
.registry-visual-meta span,
.registry-visual-actions button,
.registry-empty-business,
.sidebar-global-refresh,
.sidebar-notification-bell b,
.sidebar-refresh-status,
.cloud-sync-status,
.movement-search small,
.movement-date-range label > span,
.account-identity span,
.element-quick-actions span,
.element-quick-actions small,
.catalog-card-head small,
.catalog-card-head p,
.catalog-tags span,
.helion-donut .donut-share,
.upgraded-registry .registry-current-note > span,
.upgraded-registry .registry-current-note b,
.upgraded-registry .registry-current-note small,
.upgraded-registry .registry-kpi small, .registry-visualizer .registry-kpi small,
.upgraded-registry .registry-kpi > span, .registry-visualizer .registry-kpi > span,
.planned-opening-edit > span,
.planned-opening-edit > span i,
.planned-opening-field em,
.upgraded-registry .registry-ai-copy small, .upgraded-registry .registry-ai-drop > span, .upgraded-registry .registry-ai-description > span,
.upgraded-registry .registry-ai-copy p,
.upgraded-registry .registry-ai-drop em, .upgraded-registry .registry-ai-description textarea,
.upgraded-registry .quick-register-head p,
.upgraded-registry .registry-month-badge,
.upgraded-registry .finance-register-grid label > span, .upgraded-registry .registry-conversion-preview > span, .upgraded-registry .registry-impact-preview > span,
.upgraded-registry .finance-register-grid input, .upgraded-registry .finance-register-grid select,
.upgraded-registry .quick-money > i,
.upgraded-registry .registry-conversion-preview small,
.upgraded-registry .registry-impact-preview b,
.upgraded-registry .registry-impact-preview small,
.registry-visualizer .registry-visual-tabs button,
.registry-visualizer .registry-visual-legend,
.registry-native-amount b,
.registry-native-amount span,
.registry-business-compare span,
.registry-business-compare b,
.registry-type-summary > div:nth-child(2) small,
.registry-type-summary > div:nth-child(2) b,
.registry-type-categories span,
.registry-type-compare-values small,
.registry-type-compare-values b,
.registry-type-detail-head > div:first-child small,
.registry-type-detail-head > div:first-child b,
.registry-type-detail-head > div:last-child span,
.registry-ledger-mode,
.registry-type-ledger-row > div:nth-child(2) b,
.registry-type-ledger-row > div:nth-child(2) small,
.registry-type-ledger-row > strong,
.registry-type-empty,
.registry-compare-kpi em,
.movement-search input,
.movement-summary-strip span,
.movement-ledger-head,
.movement-ledger-row time,
.movement-ledger-row > span b,
.movement-ledger-row > span small,
.movement-ledger-row > strong small,
.movement-empty span,
.movement-detail-head small,
.movement-detail-amount span, .debt-detail-balance span,
.movement-detail-amount b, .debt-detail-balance b,
.movement-detail-panel dt,
.movement-detail-panel dd,
.accounts-current-summary span,
.accounts-current-summary small,
.account-currency,
.live-account .account-balance small,
.live-account .muted,
.live-account .ownership span,
.live-account .ownership b,
.account-transfer-note b, .savings-rule-note b, .settings-note b,
.account-transfer-note p, .savings-rule-note p, .settings-note p,
.debt-summary-grid span,
.debt-filter-bar button,
.debt-card-head > div > span,
.debt-period-status,
.debt-main-amount span,
.debt-progress-copy,
.debt-period-box span,
.debt-period-box small,
.debt-account-card dt,
.debt-account-card dd,
.debt-detail-facts span,
.debt-detail-facts b,
.debt-reconciliation-note span,
.debt-reconciliation-note p,
.debt-payment-history span, .debt-payment-history small, .debt-payment-history em,
.debt-payment-history b,
.savings-summary-grid span,
.savings-summary-grid small,
.savings-equation b,
.saving-goal-head small,
.saving-goal-value span,
.saving-goal-facts,
.saving-goal-card > p,
.saving-projection,
.calendar-month-insights small,
.calendar-month-insights span,
.smart-calendar .calendar-head div,
.calendar-day-top > small,
.smart-calendar .event.calendar-day-event-preview .calendar-preview-meta small, .smart-calendar .event.calendar-day-event-preview .calendar-preview-meta em,
.smart-calendar .event b,
.smart-calendar .event small,
.smart-calendar .event em,
.calendar-day-more,
.calendar-day-detail > header small,
.calendar-day-detail > header p,
.calendar-day-detail-totals small,
.calendar-day-detail-item small,
.calendar-day-detail-item b,
.calendar-day-detail-item p,
.calendar-day-detail-item em,
.calendar-day-detail-empty b,
.calendar-day-detail-empty small,
.calendar-rule-note,
.analysis-business-switcher > button,
.analysis-period-switcher button,
.analysis-kpis span,
.analysis-card-head p,
.analysis-card-head > div:last-child,
.analysis-bars > div > b,
.analysis-indicators span,
.analysis-indicators b,
.analysis-line-list span,
.analysis-view-tabs button,
.analysis-horizon span, .analysis-section-copy > div > span, .analysis-forecast-summary article > span, .forecast-result > span,
.analysis-horizon b,
.analysis-forecast-summary article > small,
.analysis-section-copy > p,
.analysis-forecast-control-grid label > span,
.analysis-forecast-control-grid em button,
.forecast-legend,
.forecast-result > p,
.forecast-result > div small,
.forecast-result > div strong,
.forecast-table th,
.forecast-table td,
.forecast-table td:first-child b,
.forecast-table td:first-child small,
.analysis-forecast-note,
.analysis-forecast-goals article b,
.analysis-forecast-goals article small,
.forecast-scenario-switch button,
.forecast-v2 .analysis-horizon small,
.forecast-formula > div:not(.analysis-section-copy),
.forecast-formula > div b,
.forecast-formula footer span,
.forecast-upcoming > article b,
.forecast-upcoming > article small,
.forecast-upcoming > article strong,
.forecast-status,
.forecast-simulation-result span,
.forecast-simulation-result b,
.forecast-assumptions summary,
.forecast-assumptions ul,
.configuration-deep-view .company-theme-copy > small,
.configuration-deep-view .business-core-meta span, .configuration-deep-view .theme-meta span,
.configuration-deep-view .theme-meta b,
.settings-account-card small,
.settings-account-card p,
.settings-account-card > div:nth-of-type(2) > b,
.currency-settings > div > small, .fx-example > small,
.currency-settings p, .fx-example p,
.currency-settings > label > span,
.currency-settings > label > div > b,
.currency-settings > label > small,
.fx-example > b,
.remainder-timeline article > small,
.remainder-timeline span,
.remainder-timeline b,
.remainder-rule, .modal-rule-note,
.preference-list b,
.preference-list span,
.mova-form-grid label,
.mova-form-grid input, .mova-form-grid select,
.registry-preset-options button,
.registry-ledger-actions .realize,
.action-btn, .secondary, .filter,
.nav-subitem,
.dashboard-switcher button, .dashboard-mode button, .history-filter button, .settings-tabs button, .registry-visual-tabs button, .analysis-business-switcher > button, .analysis-period-switcher button, .debt-filter-bar button,
.quick-register-head p, .registry-ai-copy p,
.movement-summary-strip span, .debt-summary-grid span, .analysis-kpis span, .savings-summary-grid span,
.registry-type-summary > div:nth-child(2) small, .registry-type-detail-head > div:first-child small,
.registry-type-summary > div:nth-child(2) b, .registry-type-detail-head > div:first-child b, .registry-type-categories span,
.registry-type-compare-values small, .registry-compare-kpi em,
.registry-type-ledger-row > div:nth-child(2) small, .registry-type-ledger-row > span:nth-child(3), .registry-type-ledger-row > span:nth-child(4),
.debt-card-head > div > span, .debt-period-box span, .debt-account-card dt, .debt-period-status,
.debt-main-amount span, .debt-progress-copy, .debt-period-box small,
.saving-goal-facts, .saving-goal-card > p, .saving-projection,
.account-identity span, .live-account .muted,
.smart-calendar .event small, .smart-calendar .event em,
.calendar-legend, .calendar-rule-note,
.analysis-card-head p, .analysis-card-head > div:last-child, .analysis-bars > div > b, .analysis-line-list span,
.analysis-indicators b, .analysis-line-list strong,
.element-quick-actions span, .catalog-card-head small, .configuration-deep-view .company-theme-copy > small, .settings-account-card small, .currency-settings > div > small, .fx-example > small,
.element-quick-actions small, .catalog-card-head p, .settings-account-card p, .currency-settings p, .fx-example p,
.catalog-tags span, .configuration-deep-view .business-core-meta span, .configuration-deep-view .theme-meta span,
.history-kpi small, .history-table-head, .history-detail-head small, .history-detail-side > div > small,
.fv-history-detail-heading small,
.fv-history-detail-heading > span,
.planning-repeat-banner small,
.planning-repeat-banner p,
.planning-repeat-banner button,
.registry-entry-repeat-toggle small,
.registry-entry-repeat-toggle em,
.registry-entry-repeat-toggle i,
.repeat-entry-panel-head small,
.repeat-entry-panel-head button,
.repeat-entry-months b,
.repeat-entry-months small,
.registry-entry-repeat-panel > p,
.duplicate-eyebrow, .annual-section-head small, .annual-controls small,
.duplicate-source-summary,
.duplicate-year-row > label,
.duplicate-month-grid span,
.duplicate-type-options legend,
.duplicate-type-options label,
.duplicate-opening-option,
.duplicate-opening-option small,
.duplicate-rule-note,
.annual-year-control small,
.annual-mode-tabs button,
.annual-controls > label span,
.annual-kpi small,
.annual-kpi > span,
.annual-section-head > span,
.annual-table-head,
.annual-table-row b, .annual-table-row strong,
.annual-table-row small,
.annual-month-card header > span,
.annual-month-card header small,
.annual-month-card header i,
.annual-month-net > span,
.annual-month-net > small,
.annual-month-metrics small,
.annual-month-metrics strong,
#page[data-dashboard-theme="helion"] .helion-income-clean .donut-legend > span,
.fv-virtuality-total small,
.virtuality-head-actions > small,
.fv-other-count small,
.savings-location-card header small,
.savings-location-row b,
.savings-location-row strong,
.savings-location-empty b,
.savings-location-empty small,
.settings-model-status > b,
.fv-helion-models > .simple-section-head p,
.fv-helion-model-card header small,
.fv-helion-model-card header p,
.fv-helion-model-metrics small,
.fv-helion-model-metrics b,
.fv-helion-model-empty b,
.fv-helion-model-empty p,
.settings-model-economics small,
.settings-model-economics b,
.registry-automatic-badge,
.nav-notification-count,
.sidebar.collapsed .nav-notification-count,
.notification-sync-note b,
.notification-sync-note small,
.notification-summary small, .notification-section-title small,
.notification-summary span,
.notification-section-title p,
.withdrawal-notification-card header small,
.withdrawal-notification-card header p,
.notification-status,
.withdrawal-notification-money small,
.withdrawal-notification-money em,
.withdrawal-destination-form label > span,
.withdrawal-destination-form label small,
.withdrawal-rule,
.withdrawal-no-account span,
.notification-empty p,
.notification-history .simple-section-head > span,
.notification-history-row b,
.notification-history-row small,
.notification-history-row strong,
.helion-platform-section > .simple-section-head p,
.helion-platform-sync-status,
.helion-platform-totals small,
.helion-platform-totals span,
.dashboard-platform-activity .helion-platform-totals small,
.helion-platform-model header small,
.helion-platform-model header > b,
.helion-platform-model-values small,
.helion-platform-model-values b,
.helion-platform-model-values em,
.helion-platform-empty b,
.helion-platform-empty p,
.notification-model-group > header > div > span,
.notification-model-group header small,
.notification-model-group > header > strong,
.notification-history-model > header b,
.notification-history-model > header span,
.notification-history-row > strong small,
.helion-import-panel label > span,
.helion-import-panel textarea,
.helion-import-panel label > small,
.helion-import-rule p,
.registry-account-balance b,
.registry-account-balance small,
#modalContent:has([data-fv-account-adjustment-target]) .modal-head p, #modalContent:has([data-fv-transfer-source]) .modal-head p,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid label, #modalContent:has([data-fv-transfer-source]) .mova-form-grid label,
#modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid input, #modalContent:has([data-fv-account-adjustment-target]) .mova-form-grid select, #modalContent:has([data-fv-transfer-source]) .mova-form-grid input, #modalContent:has([data-fv-transfer-source]) .mova-form-grid select,
[data-fv-transfer-quote],
[data-fv-transfer-quote] b,
.upgraded-registry .transfer-fee-field > em,
.upgraded-registry .transfer-calculation small,
.upgraded-registry .transfer-calculation b,
.upgraded-registry .transfer-calculation em,
.upgraded-registry .transfer-preview-empty b,
.upgraded-registry .transfer-preview-empty small,
.savings-close-notification-card header small,
.savings-close-notification-card header p,
.savings-close-balance small,
.savings-close-balance em,
.savings-close-form > label > span,
.savings-close-amount i, .savings-close-amount b,
.savings-close-form label > small,
.savings-close-no-account b,
.savings-close-no-account span,
.preference-section-head small,
.preference-section-head p,
.helion-cost-report > .simple-section-head p,
.helion-cost-period-action > label > span,
.helion-cost-head-tools > label > span,
.helion-cost-head-tools select,
.helion-cost-totals small,
.helion-cost-totals b,
.helion-cost-type-summary > header small,
.helion-cost-type-summary > header p,
.helion-cost-type-summary-grid article > div small,
.helion-cost-type-summary-grid dt,
.helion-cost-type-summary-grid dd,
.helion-cost-type-summary-grid article > p,
.helion-cost-model > header small,
.helion-cost-model > header > div:last-child span,
.helion-cost-line > div > b,
.helion-cost-line > div > small,
.helion-cost-line > div > em,
.helion-cost-register,
.helion-cost-line dt,
.helion-cost-line dd,
.helion-cost-line > p,
.helion-cost-model > footer > span,
.helion-cost-model > footer small,
.helion-cost-model > footer b,
.helion-other-paid b,
.helion-other-paid small,
.helion-other-paid > strong,
.helion-cost-rule > span,
.helion-cost-rule p,
.helion-cost-empty b,
.helion-cost-empty p,
.upgraded-registry .helion-allocation-head span, .upgraded-registry .helion-allocation-method > span,
.upgraded-registry .helion-allocation-head small,
.upgraded-registry .helion-allocation-head button,
.upgraded-registry .helion-model-choices span,
.upgraded-registry .helion-model-choices p,
.upgraded-registry .helion-allocation-values > label > span,
.upgraded-registry .helion-allocation-values em,
.upgraded-registry .helion-allocation-summary,
.upgraded-registry .helion-cost-fields label > span,
.upgraded-registry .helion-economic-note::before,
.upgraded-registry .helion-economic-note b,
.upgraded-registry .helion-economic-note span,
.helion-reality-strip small,
.helion-reality-strip span,
.helion-section-kicker,
.helion-plan-report > .simple-section-head p,
.helion-plan-totals small,
.helion-plan-totals b,
.helion-plan-model header small,
.helion-plan-model > header > div:last-child span,
.helion-plan-basis,
.helion-plan-cost-list b,
.helion-plan-cost-list small,
.helion-plan-cost-list strong,
.helion-plan-cost-list button,
.helion-plan-model footer small,
.helion-plan-model footer b,
.helion-plan-rule > span,
.helion-plan-rule b,
.helion-plan-rule p,
.actual-flow-split span,
.registry-ai-review-badge,
.registry-ai-dictation,
.registry-ai-audio-preview span,
.registry-ai-audio-preview button,
.sidebar-notification-bell > b,
.virtuality-receivable-action,
.quick-settlement-summary small,
.quick-settlement-summary b,
.upgraded-registry .registry-ai-copy small,
.upgraded-registry .registry-ai-review-badge,
.registry-ai-tools-title,
.registry-ai-workspace .registry-ai-drop > span,
.registry-ai-workspace .registry-ai-description > span,
.registry-ai-workspace .registry-ai-action,
.registry-ai-workspace .registry-ai-dictation,
.registry-ai-workspace .registry-ai-dictation-hint,
.session-persistence-note,
.profile-crown,
.profile-role,
.sidebar-refresh-status .sync-source b,
.sidebar-refresh-status .sync-source em,
.account-total-dual .available-usd small,
.account-total-dual .available-usd span,
.debt-provider-context,
.calendar-focus-switch button,
.payment-notification-group > header small,
.payment-notification-group > header b,
.payment-notification-card small,
.payment-notification-card p,
.generic-notification-card small,
.generic-notification-card p,
.quick-settlement-amount em,
.quick-settlement-amount i,
.quick-settlement-error,
.simple-kpi .remainder-ending-note,
.registry-ai-draft-head small, .registry-ai-draft-grid small, .registry-draft-receivables > small, .registry-pending-head small,
.registry-ai-draft-head > span,
.registry-ai-draft-grid b,
.registry-draft-evidence,
.registry-draft-receivables > span,
.registry-draft-receivables strong,
.registry-draft-receivable-components,
.registry-draft-receivables p,
.registry-ai-draft-warnings p,
.registry-ai-dictation-hint,
.registry-draft-transcript,
.registry-ai-plan-head small, .registry-ai-plan-edit-card > div:first-child small, .registry-ai-plan-assumptions small, .registry-ai-plan-edit-grid span, .registry-ai-plan-no-account span,
.registry-ai-plan-related,
.registry-ai-plan-type,
.registry-ai-plan-copy b,
.registry-ai-plan-copy small,
.registry-ai-plan-row > strong,
.registry-ai-plan-value small,
.registry-ai-plan-assumptions, .registry-ai-plan-evidence, .registry-ai-plan-notice, .registry-ai-plan-question, .registry-ai-plan-message,
.registry-ai-plan-message,
.registry-ai-plan-foot,
.registry-ai-plan-edit-card > div:first-child b,
.mova-ai-settings-head small,
.mova-ai-settings-head p,
.mova-ai-status,
.mova-ai-settings-flow span,
.mova-ai-settings-flow b,
.mova-ai-settings-flow i,
.mova-ai-settings-foot b,
.mova-ai-settings-foot small,
.registry-manual-disclosure > summary b,
.registry-manual-disclosure > summary small,
.registry-manual-disclosure > summary em,
.registry-pending-head p,
.registry-pending-head > span,
.registry-pending-item small,
.registry-pending-item b,
.registry-pending-item em,
.registry-pending-item > strong,
.registry-pending-item > button,
.section-title-row p, .simple-section-head p, .history-section-head p, .analysis-card-head p,
.simple-kpi .kpi-label,
.simple-kpi p, .simple-kpi > small, .simple-kpi .remainder-ending-note,
.savings-summary-grid small, .calendar-month-insights span,
.movement-ledger-row > span b, .registry-type-ledger-row > div:nth-child(2) b, .history-ledger-row > div b,
.movement-ledger-row > span small, .registry-type-ledger-row > div:nth-child(2) small, .history-ledger-row > div small, .movement-ledger-row time,
.fv-helion-model-card header small, .fv-helion-model-metrics small, .helion-platform-totals small, .helion-platform-model header small, .helion-platform-model-values small, .helion-reality-strip small,
.fv-helion-model-card header p, .helion-platform-totals span, .helion-platform-model-values em, .helion-reality-strip span,
.smart-calendar .calendar-head div, .smart-calendar .event b,
.analysis-card-head > div:last-child, .analysis-bars > div > b, .analysis-line-list span,
.analysis-forecast-presets button, .forecast-presets button,
.dashboard-remainder-reconciliation small,
.dashboard-remainder-reconciliation .remainder-part > span,
.helion-profit-actions label,
.helion-profit-summary small,
.helion-profit-summary span,
.helion-venuz-allocation > div small,
.helion-venuz-allocation dt,
.helion-profit-formula,
.helion-profit-model-name small, .helion-profit-result small,
.helion-profit-result em,
.helion-profit-core small,
.helion-profit-costs p small,
.helion-profit-model > footer span,
.debt-detail-title > div > span,
.credit-card-hero b, .credit-card-hero small,
.credit-payment-options small,
.credit-ownership span,
.credit-ownership.compact span,
.credit-cycle-context small,
.credit-cycle-context span,
.credit-evidence-transactions > header > span,
.credit-evidence-transactions article span,
.credit-evidence-transactions article b,
.credit-evidence-transactions article > small,
.debt-plan-head > strong small,
.debt-plan-facts > span,
.debt-plan-facts b,
.debt-installment > span,
.debt-installment > div b,
.debt-installment > div small, .debt-installment > small,
.debt-installment > strong,
.debt-installment > strong em,
.debt-plan-rule,
.debt-editor-heading > span,
.debt-editor-heading small,
.debt-security-note, .debt-installment-schedule small,
.debt-plan-toggle,
.debt-installment-schedule textarea,
.grouped-loan-plan h4, .grouped-loan-month h4,
.grouped-loan-plan span,
.grouped-plan-progress b,
.grouped-plan-settled,
.grouped-loan-month > div b,
.grouped-loan-month > div strong,
.grouped-loan-empty,
.credit-use-card-summary span, .credit-balance-breakdown span, .credit-statement-calendar small, .credit-use-position span, .credit-use-existing > div > small, .credit-use-form-head small,
.credit-use-card-summary small,
.credit-detail-actions span,
.credit-balance-breakdown > header > span,
.credit-balance-breakdown article small,
.credit-statement-month h4,
.credit-statement-month > div span,
.credit-statement-month > div b,
.credit-statement-month > div small,
.credit-use-planner .debt-detail-title p,
.credit-use-safety b,
.credit-use-safety p,
.credit-use-planner .mova-form-grid label,
.credit-use-kind-note,
.credit-use-warning b,
.credit-use-warning span,
.credit-use-row > div:first-child b,
.credit-use-row > div:first-child span,
.credit-use-empty,
.settings-credit-plan-summary,
.movement-evidence-head small,
.movement-evidence-head > span,
.movement-evidence-files b,
.movement-evidence-files small,
.movement-evidence-files em,
.movement-evidence-preview a,
.movement-evidence-loading, .movement-evidence-error,
.account-reconciliation-head p,
.account-reconciliation-steps i,
.account-reconciliation-intro p,
.account-reconciliation-context label > span, .account-reconciliation-note > span, .account-reconciliation-real > span,
.registry-ledger-actions-help,
.registry-ledger-actions-help b,
.registry-ledger-category-head span,
.registry-ledger-category-head small,
.registry-ledger-category-head strong,
.panorama-quick-context small,
.panorama-quick-context b,
.panorama-quick-field-hint,
.account-reconciliation-account small, .account-reconciliation-registered small, .account-reconciliation-result small, .account-reconciliation-preview-row small,
.account-reconciliation-account b,
.account-reconciliation-account span,
.account-reconciliation-registered b,
.account-reconciliation-real em,
.account-reconciliation-result b,
.account-reconciliation-proposal,
.account-reconciliation-footnote,
.account-reconciliation-alert p,
.account-reconciliation-section-head small,
.account-reconciliation-section-head > p,
.account-reconciliation-preview-row > div > b,
.account-reconciliation-preview-row > div > span,
.account-reconciliation-preview-row > i,
.account-reconciliation-suggestion-check,
.account-reconciliation-suggestion small,
.account-reconciliation-suggestion b,
.account-reconciliation-suggestion em,
.account-reconciliation-totals article > small,
.account-reconciliation-totals article span,
.account-reconciliation-totals article i,
.account-reconciliation-totals article b,
.account-reconciliation-totals article p,
.account-reconciliation-empty p,
.account-reconciliation-success > small,
.account-reconciliation-success > p,
.account-reconciliation-success > div span,
.fv-origin-filter > span,
.reconciliation-movement-actions small,
.reconciliation-movement-actions b,
.reconciliation-movement-actions p,
.reconciliation-readonly-summary span,
.reconciliation-readonly-summary b,
.sidebar-refresh-status:hover .sync-source b, .sidebar-refresh-status:focus-visible .sync-source b,
.sidebar-refresh-status:hover .sync-source em, .sidebar-refresh-status:focus-visible .sync-source em,
.sidebar:not(.collapsed) .cloud-sync-status,
.commitment-kpi-copy,
.commitment-kpi em, .receivable-kpi em,
.commitment-inline-detail,
.commitment-detail-total > div:first-child span, .commitment-detail-total > div:first-child small,
.commitment-detail-native > div, .commitment-detail-sources > div,
.commitment-detail-native b, .commitment-detail-sources b,
.commitment-detail-main small,
.commitment-detail-main div > em,
.commitment-source-chip,
.commitment-detail-state span,
.commitment-detail-state em,
.commitment-detail-amount small,
.commitment-rate-disclosure b,
.commitment-rate-disclosure span,
.commitment-detail-formula,
.commitment-class-overview small,
.commitment-class-overview span,
.receivable-detail-group header small,
.receivable-detail-row > div small,
.receivable-detail-row > em,
.affordability-summary small, .affordability-picker header > small, .affordability-outcome > div > small,
.debt-position-overview span, .debt-side-heading > div > span, .debt-receivable-row header small, .debt-compensation-side header span, .debt-compensation-result > span,
.debt-receivable-row > header > span,
.debt-receivable-row dt,
.debt-receivable-row > footer small,
.mutual-debt-note span,
.mutual-debt-note p,
.debt-planned-receivables small,
.forecast-month-review > header small,
.forecast-business-grid thead th,
.forecast-business-grid article > small,
.debt-summary-grid article > small,
.month-start-banner small, .month-start-eyebrow,
.month-start-banner p,
.month-start-stepper li,
.month-start-step-marker,
.month-start-message,
.month-start-section-heading p, .month-start-transfer-section > p,
.month-start-account > div small, .month-start-choice small, .month-start-transfer small,
.month-start-account label span, .month-start-date span, .month-start-correction-account > label:last-child span, .month-start-reason > span, .month-start-history-controls label span,
.month-start-account > em,
.month-start-plan > p,
.month-start-excluded,
.month-start-automatic b,
.month-start-automatic small,
.month-start-automatic strong,
.month-start-automatic-head p,
.month-start-automatic-bulk button,
.month-start-obligation-kind,
.month-start-automatic-choice label,
.month-start-automatic-item > p,
.month-start-automatic.is-blocked li,
.month-start-review-grid b,
.month-start-review-grid small,
.month-start-proposed > p,
.month-start-proposed-list small,
.month-start-proposed-list b,
.month-start-proposed-list em,
.month-start-proposed-list strong,
.month-start-confirmations label,
.month-start-empty,
.month-start-loading,
.month-start-history-summary small,
.month-start-revisions b,
.month-start-revisions small,
.month-start-revisions p,
.month-start-revisions strong,
.month-start-correction-entry p,
.mova-ai-launcher-copy b,
.mova-ai-chat-identity small,
.mova-ai-message-body small,
.mova-ai-quick-prompts button,
.mova-ai-proposal-head small,
.mova-ai-proposal-description,
.mova-ai-proposal-entry-head small,
.mova-ai-proposal-entry-head h4,
.mova-ai-proposal-mode,
.mova-ai-proposal-details,
.mova-ai-proposal-row,
.mova-ai-proposal-row strong,
.mova-ai-proposal-actions button,
.mova-ai-proposal-status,
.mova-ai-request-status button,
.mova-ai-attachment b,
.mova-ai-chat-foot,
html[data-theme] #movaAiChatRoot .mova-ai-proposal-head small,
html[data-theme] #movaAiChatRoot .mova-ai-proposal-entry-head small,
html[data-theme] #movaAiChatRoot .mova-ai-proposal-mode,
html[data-theme] #page .money-overview-kpis .kpi-secondary-line,
html[data-theme] #page .money-overview-kpis .actual-flow-split span,
.niwwi-section-eyebrow,
html[data-theme] #page .dashboard-platform-activity .helion-platform-totals small,
html[data-theme] #page :is(.eyebrow, .niwwi-section-eyebrow),
html[data-theme] #page .registry-ai-workspace :is(.registry-ai-tools-title, .registry-ai-description > span, .registry-ai-dictation-hint),
html[data-theme] #page .registry-ai-workspace .registry-ai-drop > span,
html[data-theme] #page .movement-ledger-row small,
html[data-theme] #page .smart-calendar .calendar-head > div,
html[data-theme] #page .smart-calendar .calendar-day-top > small,
html[data-theme] #page .calendar-preview-meta small,
html[data-theme] #page .calendar-preview-meta em,
html[data-theme] #page .calendar-day-more,
html[data-theme] .sidebar .nav-label,
html[data-theme] #globalRefreshStatus .sync-source b,
html[data-theme] .sidebar .cloud-sync-status,
html[data-theme] .profile .profile-copy small,
html[data-theme] #page .registry-type-summary > div:nth-child(2) b,
html[data-theme] #page .registry-type-categories,
html[data-theme] #page .helion-reality-strip small,
html[data-theme] #page .helion-platform-totals > article > small,
html[data-theme] #page :is(.helion-platform-model, .fv-helion-model-card) header small,
html[data-theme] #page .helion-platform-model header > b,
html[data-theme] #page :is(.helion-platform-model-values, .fv-helion-model-metrics) small,
html[data-theme] #page :is(.helion-platform-model-values, .fv-helion-model-metrics) em,
html[data-theme] #page .fv-business-kpis .simple-kpi > .kpi-label,
html[data-theme] .niwwi-ai-docked-launcher .mova-ai-launcher-copy b,
.niwwi-zero-scale em,
html[data-theme] #page .niwwi-spendable-forecast small,
html[data-theme] #page .registry-pending-item > strong > small:first-child,
html[data-theme] #page .fv-helion-dashboard :is(.helion-cost-type-summary > header small, .helion-cost-type-summary-grid article > div small, .helion-cost-model > header small, .helion-cost-model > header > div:last-child span, .helion-cost-model > footer small, .helion-profit-model-name small, .helion-profit-result small),
html[data-theme] #page .fv-helion-dashboard .helion-profit-core small,
html[data-theme="dark"] #page .fv-accounts-view .live-account .ownership span,
.niwwi-panorama-reference small,
.niwwi-monthly-panorama th small,
.niwwi-panorama-status,
.niwwi-workbook-head small,
.niwwi-workbook-summary small,
.niwwi-workbook-result span,
.niwwi-workbook-result p,
.niwwi-workbook-sheet .niwwi-monthly-stages small,
.niwwi-workbook-panel h3,
.niwwi-workbook-panel thead th,
.niwwi-workbook-note,
.niwwi-workbook-footer,
.fv-helion-dashboard .helion-platform-model-values small,
.fv-helion-dashboard .helion-cost-month-detail > section > header small,
.fv-helion-dashboard .helion-cost-model > header small,
.fv-helion-dashboard .helion-compact-metrics small,
.fv-helion-dashboard .helion-model-detail > footer small,
.fv-helion-dashboard .helion-profit-core small,
html[data-theme] #page .niwwi-share-caption,
html[data-appearance="kawaii"] #page .dashboard-remainder-reconciliation .remainder-part small { font-size: 11.5px; }
.platform-remaining small,
.helion-admin > .section-title-row p,
.dashboard-eyebrow,
.planned-opening-edit > small,
.registry-kpi small,
.registry-kpi > span,
.movement-summary-strip span, .debt-summary-grid span, .savings-summary-grid span, .analysis-kpis span, .calendar-month-insights small, .history-kpi small { font-size: 11.5px !important; }
@media ((max-width: 1150px)) {
.history-month-summary > strong { font-size: 11.5px; }
}
@media ((max-width: 760px)) {
.finance-bars-card .simple-bar-row > span,
.registry-ai-workspace .registry-ai-dictation,
.month-start-step-label,
.mova-mobile-bottom-nav button,
.niwwi-mobile-money-summary small,
.dashboard-platform-activity .platform-flow-chips span,
.dashboard-platform-activity .platform-flow-chips small,
.niwwi-preview-banner,
html[data-theme] #page .smart-calendar .calendar-head > div,
html[data-theme] #page .smart-calendar .calendar-day-top small,
html[data-theme] #page .money-overview-kpis .kpi-label,
html[data-theme] #page .smart-calendar .calendar-day-top > small,
.mova-mobile-bottom-nav .niwwi-ai-docked-launcher .mova-ai-launcher-copy strong,
html[data-theme="light"] #page .dashboard-remainder-reconciliation small,
#page .forecast-month-review > header > div > small,
html[data-theme] #page .fv-registry-visualizer .registry-type-ledger-row:has(.registry-plan-progress) > .registry-ledger-mode { font-size: 11.5px; }
}
@media ((max-width: 700px)) {
.history-picker-copy small { font-size: 11.5px; }
}
@media ((max-width: 620px)) {
.movement-evidence-files b, .movement-evidence-files em, .movement-evidence-preview a,
.movement-evidence-files small, .movement-evidence-loading, .movement-evidence-error { font-size: 11.5px; }
}
@media ((max-width: 680px)) {
.account-reconciliation-steps i,
.account-reconciliation-real em { font-size: 11.5px; }
}
@media ((max-width: 420px)) {
.month-start-step-label,
.mova-mobile-bottom-nav button { font-size: 11.5px; }
}
@media ((max-width: 1024px)) {
body.mova-chat-tight .mova-ai-request-status,
body.mova-chat-tight .mova-ai-request-status button { font-size: 11.5px; }
}
@media ((max-width: 760px)) {
:is(.simple-kpi, .registry-kpi, .history-kpi) :is(small, .simple-label, .kpi-label),
.event, .calendar-event,
html[data-theme] #page .registry-kpi small,
html[data-theme] #page button small,
html[data-theme] #page .registry-type-summary > div small { font-size: 11.5px !important; }
}
@media ((min-width: 1025px)) {
html[data-theme] .niwwi-quick-more > span:last-child,
html[data-theme] .niwwi-all-navigation header small,
html[data-theme] .niwwi-all-navigation h3 { font-size: 11.5px; }
}
/* <<< legacy-map */

/* ------------------------------------------------------------- base type */

html[data-theme] body,
html[data-theme] body :where(*:not(svg, svg *, .material-symbols-outlined)) {
  font-family: var(--nw-font) !important;
}
html[data-theme] body {
  background: var(--nw-bg) !important;
  color: var(--nw-ink);
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
html[data-theme] ::selection { background: color-mix(in srgb, var(--nw-accent) 26%, transparent); color: var(--nw-ink); }
html[data-theme] { caret-color: var(--nw-accent); accent-color: var(--nw-accent); }

/* Gamer cute grounds: grid paper by day, navy with a low haze at night.
   Painted once on the fixed root, never on scrolling containers. */
html[data-appearance="kawaii"][data-theme="light"] body {
  background:
    linear-gradient(var(--nw-grid) 1px, transparent 1px) 0 0 / 22px 22px,
    linear-gradient(90deg, var(--nw-grid) 1px, transparent 1px) 0 0 / 22px 22px,
    var(--nw-bg) !important;
  background-attachment: fixed !important;
}
html[data-appearance="kawaii"][data-theme="dark"] body {
  background:
    linear-gradient(to top, color-mix(in srgb, var(--nw-haze) 55%, transparent), transparent 38%),
    var(--nw-bg) !important;
  background-attachment: fixed !important;
}

/* The illustrated room, sky clouds, sparkles and glows go away. */
html[data-theme] body #app .main::before,
html[data-theme] body #app .main::after,
html[data-theme] body::before,
html[data-theme] body::after,
html[data-theme] body #page .niwwi-page-header::before,
html[data-theme] body #page .niwwi-page-header::after,
html[data-theme] #page .niwwi-kpi-emblem,
html[data-theme] #page :is(.card, .simple-kpi, article)::before,
html[data-theme] #page :is(.card, .simple-kpi, article)::after {
  background-image: none !important;
  box-shadow: none !important;
}
html[data-theme] #page .niwwi-kpi-emblem,
html[data-theme] body #page .niwwi-page-header::before,
html[data-theme] body #app .main::before { display: none !important; }

/* Headings: solid ink, no gradient text. */
html[data-theme] body #page .niwwi-title-copy {
  background: none !important;
  color: var(--nw-ink) !important;
  -webkit-text-fill-color: currentColor !important;
}
html[data-theme] body #page .niwwi-page-title { font-weight: 800; letter-spacing: -0.03em; }
html[data-theme] body #app #page :is(h2, h3) { color: var(--nw-ink); letter-spacing: -0.015em; }
html[data-theme] #page .niwwi-page-header p { color: var(--nw-muted); }

/* --------------------------------------------------------------- surfaces */

/* One surface treatment for every panel. Card art, radial washes and glows
   are replaced by a flat surface with a hairline; hierarchy comes from type. */
html[data-theme] body #page :is(.card, .simple-kpi, .registry-kpi, .history-kpi, .account-card, .debt-account-card,
  .saving-goal-card, .catalog-card, .settings-account-card, .recurring-subscription-card, .niwwi-page-header,
  .accounts-current-summary, .registry-type-card, .registry-business-panel, .dashboard-platform-activity,
  .debt-position-overview article, .analysis-toolbar, .movement-filter-shell):not(.settings-credit-card, .company-theme-card) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  box-shadow: var(--nw-shadow) !important;
}
html[data-theme] body #page :is(.registry-kpi, .history-kpi)::after { display: none !important; }
html[data-theme] body #page :is(.registry-business-panel, .saving-goal-card, .catalog-card) > :is(header, .registry-business-head, .simple-section-head) {
  background: var(--nw-surface-2) !important;
  border-color: var(--nw-line) !important;
}
/* Boxes nested inside a panel sit one step down, never another card. */
html[data-theme] body #page :is(.card, .simple-kpi) :is(.card, .simple-kpi, .dashboard-spendable-estimate, .niwwi-spendable-detail, .money-summary-detail, .available-highlight) {
  background: var(--nw-surface-2) !important;
  border-color: var(--nw-line) !important;
  box-shadow: none !important;
}
html[data-theme] body #page .niwwi-page-header {
  border-radius: var(--nw-r-panel) !important;
}
html[data-theme] #page :is(thead, .movement-table-head, .sheet-head) { background: var(--nw-surface-2) !important; color: var(--nw-muted); }
html[data-theme] #page :is(.row-icon, .spend-icon, .projection-icon, .account-icon, .catalog-icon, .settings-account-icon, .niwwi-title-symbol) {
  background: var(--nw-accent-soft) !important;
  border-color: transparent !important;
  color: var(--nw-accent-text) !important;
  box-shadow: none !important;
}
html[data-theme] #page .niwwi-title-symbol::after { display: none !important; }
/* The sparkles are hidden above (no image), but their loops kept running on
   every screen (and on Helion): stop them so the phone can idle. */
html[data-theme] body #page .niwwi-page-header::after,
html[data-theme] body #page :is(#helion-platform, #helion-model-costs)::before,
html[data-theme] body #page #helion-platform .helion-platform-totals > article::after { animation: none !important; }

/* Amounts: Manrope with tabular figures, ink by default; colour only for meaning. */
html[data-theme] #page :is(.simple-value, .account-balance, .kpi-value, .money-value, strong, b) { font-variant-numeric: tabular-nums; }
html[data-theme] body #page .simple-kpi:not(.positive, .negative) .simple-value { color: var(--nw-ink) !important; }
html[data-theme] body #page .simple-value { font-weight: 800; letter-spacing: -0.02em; }
html[data-theme] #page :is(.kpi-label, .section-label, .eyebrow) {
  color: var(--nw-muted) !important;
  letter-spacing: 0.06em;
  font-weight: 700;
}
html[data-theme] #page .kpi-label .niwwi-help-trigger { color: inherit !important; }

/* Inicio money cards: ink amounts, colour only where it means something
   (income green, spending red, debts amber). "Disponible del mes" is the one
   tinted card, because it answers the question she opens Niwwi for. */
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi { --niwwi-tone: var(--nw-ink); }
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi.positive { --niwwi-tone: var(--nw-pos); }
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi.negative { --niwwi-tone: var(--nw-neg); }
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi.debt { --niwwi-tone: var(--nw-warn); }
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi:is(.purple.featured, .account-balance-kpi, .niwwi-spendable-kpi, .neutral) { --niwwi-tone: var(--nw-ink); }
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi.positive { --niwwi-tone: var(--nw-pos); }
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi.negative { --niwwi-tone: var(--nw-neg); }
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi.debt { --niwwi-tone: var(--nw-warn); }
html[data-theme][data-theme] body #app #page .dashboard-kpis > .simple-kpi > .kpi-label,
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi > .kpi-label { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi {
  --text: var(--nw-ink); --muted: var(--nw-muted); --line: var(--nw-line);
  --surface: var(--nw-surface); --surface2: var(--nw-surface-2);
  background: var(--nw-accent-soft) !important;
  border-color: color-mix(in srgb, var(--nw-accent) 30%, var(--nw-line)) !important;
  box-shadow: var(--nw-shadow) !important;
}
html[data-theme][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi.negative {
  background: var(--nw-neg-soft) !important;
  border-color: color-mix(in srgb, var(--nw-neg) 30%, var(--nw-line)) !important;
}
html[data-theme][data-theme] body #app #page .account-balance-kpi .kpi-secondary-line,
html[data-theme][data-theme] body #app #page .account-balance-kpi .kpi-secondary-line.onlyfans { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .account-balance-kpi .kpi-secondary-line b { color: var(--nw-ink) !important; }

/* ------------------------------------------------------------------ Inicio */

/* One clear size order: the two figures she opens Niwwi for (Total de dinero
   and what is left this month) are the largest, everything else steps down.
   Only size, weight and colour change; nothing moves to another place. */
html[data-theme][data-theme] body #app #page .money-overview-kpis .account-balance-kpi > .simple-value {
  font-size: clamp(32px, 8.6vw, 38px) !important;
  line-height: 1.08 !important;
  font-weight: 800 !important;
  letter-spacing: -0.03em !important;
}
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages strong {
  color: var(--nw-ink) !important;
  font-size: 22px !important;
  font-weight: 750 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.15 !important;
}
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages > div:nth-child(2) > strong {
  font-size: clamp(32px, 8.6vw, 38px) !important;
  font-weight: 800 !important;
  letter-spacing: -0.03em !important;
}
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages span { color: var(--nw-ink) !important; font-size: 14px !important; font-weight: 600; }
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages small,
html[data-theme][data-theme] body #app #page .niwwi-monthly-period { color: var(--nw-muted) !important; font-size: 12.5px !important; letter-spacing: 0 !important; text-transform: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages > div + div { border-top-color: var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .niwwi-monthly-stages .niwwi-monthly-of {
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  padding: 14px 0 0 !important;
}
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi .niwwi-today-basis {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  color: var(--nw-muted) !important;
  font-size: 13px !important;
  line-height: 1.55 !important;
}

/* The phone layout tints every Inicio card with its tone; cards stay plain. */
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi:not(.niwwi-spendable-kpi) {
  background: var(--nw-surface) !important;
  border-color: var(--nw-line) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi:not(.niwwi-spendable-kpi) {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    var(--nw-surface) !important;
}
html[data-theme][data-theme] body #app #page .simple-kpi small { letter-spacing: 0 !important; }
html[data-theme][data-theme] body #app #page .actual-flow-kpi > small { color: var(--nw-muted) !important; font-size: 13px !important; }

/* Card labels: legible on a phone in a hurry (they were 9 to 10px). */
html[data-theme][data-theme] body #app #page :is(.money-overview-kpis .kpi-label, .kpi-secondary-line > span, .actual-flow-split span,
  .niwwi-mobile-money-summary small, .helion-platform-totals small, .niwwi-share-caption, .dashboard-credit-reference > span) {
  font-size: 12px !important;
  line-height: 1.4 !important;
  letter-spacing: 0.04em !important;
}
html[data-theme][data-theme] body #app #page :is(.kpi-secondary-line > span, .actual-flow-split span, .niwwi-mobile-money-summary small, .helion-platform-totals small, .niwwi-share-caption) {
  color: var(--nw-muted) !important;
  font-weight: 700 !important;
}
html[data-theme][data-theme] body #app #page .dashboard-credit-reference > span { color: var(--nw-muted) !important; letter-spacing: 0 !important; font-size: 13px !important; }
/* The credit lines already end in a rule, so the first breakdown row does
   not draw a second one right under it. */
html[data-theme][data-theme] body #app #page .dashboard-credit-reference + .niwwi-money-breakdown > .kpi-secondary-line:first-child { border-top: 0 !important; }
html[data-theme][data-theme] body #app #page :is(.dashboard-credit-reference b, .kpi-secondary-line b) { color: var(--nw-ink) !important; font-size: 15px !important; font-weight: 700 !important; }

/* Actividad real: the two figures as plain rows, not boxes inside a box. */
html[data-theme][data-theme] body #app #page .actual-flow-split > div {
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
html[data-theme][data-theme] body #app #page .actual-flow-split strong { font-size: 24px !important; font-weight: 800 !important; letter-spacing: -0.02em; }
html[data-theme][data-theme] body #app #page .actual-flow-split [data-dashboard-flow="income"] strong { color: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .actual-flow-split [data-dashboard-flow="expense"] strong { color: var(--nw-neg) !important; }

/* Decorations on the money cards (status dots, clock and star watermarks). */
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi::before,
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi::after,
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi > .kpi-label::after,
html[data-theme][data-theme] body #app #page .helion-platform-totals article::before,
html[data-theme][data-theme] body #app #page .helion-platform-totals article::after,
html[data-theme][data-theme] body #app #page .platform-flow-chips > div::before {
  content: none !important;
  display: none !important;
}

/* Cobros and Compromisos: same money format as the rest, colour only on the figure. */
html[data-theme][data-theme] body #app #page .money-overview-kpis > :is(.receivable-kpi, .commitment-kpi) > .simple-value { font-size: 26px !important; font-weight: 800 !important; }
html[data-theme][data-theme] body #app #page .money-overview-kpis > :is(.receivable-kpi, .commitment-kpi) :is(small, .commitment-kpi-copy) { color: var(--nw-muted) !important; font-size: 13px !important; letter-spacing: 0 !important; }
html[data-theme][data-theme] body #app #page .money-overview-kpis > :is(.receivable-kpi, .commitment-kpi) em { color: var(--nw-accent-text) !important; font-style: normal; font-weight: 700; }

/* The three small tiles under the cards (En cuentas, Cierre estimado, Pagos por atender). */
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > * {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  box-shadow: var(--nw-shadow) !important;
  color: var(--nw-ink) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary strong { color: var(--nw-ink) !important; font-size: 22px !important; font-weight: 800 !important; letter-spacing: -0.02em; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary :is(span, b) { color: var(--nw-muted) !important; letter-spacing: 0 !important; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary button > span:last-child { color: var(--nw-accent-text) !important; font-weight: 700; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary .niwwi-mobile-upcoming { grid-template-columns: minmax(0, 1fr) auto auto !important; padding-right: 14px !important; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary .niwwi-mobile-upcoming > svg { display: block !important; position: static !important; width: 16px; height: 16px; color: var(--nw-muted); }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary button > span:last-child svg { display: inline-block !important; vertical-align: -3px; margin-left: 4px; width: 15px; height: 15px; }

/* "Disponible del mes" lower down: the same tinted look as the card above,
   so it reads as the same number, not a different app. */
html[data-theme][data-theme] body #app #page .money-position-card .money-position-trigger {
  background: var(--nw-accent-soft) !important;
  border: 1px solid color-mix(in srgb, var(--nw-accent) 30%, var(--nw-line)) !important;
  border-radius: var(--nw-r-card) !important;
  box-shadow: none !important;
  color: var(--nw-ink) !important;
}
html[data-theme][data-theme] body #app #page .money-position-trigger small { color: var(--nw-muted) !important; letter-spacing: 0.04em; font-size: 12px; font-weight: 700; }
html[data-theme][data-theme] body #app #page .money-position-trigger strong { color: var(--nw-ink) !important; font-size: clamp(32px, 8.6vw, 38px) !important; font-weight: 800 !important; letter-spacing: -0.03em; }
html[data-theme][data-theme] body #app #page .money-position-trigger span { color: var(--nw-accent-text) !important; font-weight: 700; }
html[data-theme][data-theme] body #app #page .money-position-card > p { color: var(--nw-muted) !important; }

/* "Ver panorama del mes": the arrow stays beside its words. */
html[data-theme][data-theme] body #app #page .niwwi-panorama-open { white-space: nowrap; }
html[data-theme][data-theme] body #app #page .niwwi-panorama-open svg { display: inline-block !important; vertical-align: -3px; margin-left: 6px; width: 16px; height: 16px; }

/* OnlyFans block: plain panels, colour only on the figure that means something. */
html[data-theme][data-theme] body #app #page .helion-platform-totals article,
html[data-theme][data-theme] body #app #page .platform-flow-chips > * {
  background: var(--nw-surface-2) !important;
  border: 1px solid var(--nw-line) !important;
  border-left-width: 1px !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .platform-flow-chips > div { padding-left: 16px !important; }
html[data-theme][data-theme] body #app #page .helion-platform-totals b,
html[data-theme][data-theme] body #app #page .platform-flow-chips b { color: var(--nw-ink) !important; font-weight: 800 !important; }
html[data-theme][data-theme] body #app #page .helion-platform-totals article[data-platform-activity="current"] b { color: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page :is(.helion-platform-totals, .platform-flow-chips) :is(span, small) { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .helion-platform-totals .niwwi-metric-icon { background: var(--nw-surface) !important; border: 1px solid var(--nw-line) !important; color: var(--nw-muted) !important; box-shadow: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-section-eyebrow { color: var(--nw-muted) !important; letter-spacing: 0.06em; font-size: 12px; }
html[data-theme][data-theme] body #app #page .niwwi-section-icon { background: var(--nw-accent-soft) !important; color: var(--nw-accent-text) !important; border-color: transparent !important; box-shadow: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-action-sparkles,
html[data-theme][data-theme] body #app #page .niwwi-model-flower { display: none !important; }
html[data-theme][data-theme] body #app #page .platform-disclosures .niwwi-action-icon { background: var(--nw-surface) !important; border: 1px solid var(--nw-line) !important; color: var(--nw-muted) !important; box-shadow: none !important; }

/* "Ver movimientos" is a normal button, not the loudest thing on screen. */
html[data-theme][data-theme] body #app #page .dashboard-platform-activity .niwwi-shimmer-button {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-accent-text) !important;
  animation: none !important;
}

/* Bars: one accent for categories, meaning colours for income and spending. */
html[data-theme][data-theme] body #app #page .category-list i { background: var(--nw-accent) !important; }
html[data-theme][data-theme] body #app #page :is(.category-list > div > div, .simple-bar-row > div) { background: var(--nw-surface-2) !important; border: 0 !important; }
html[data-theme][data-theme] body #app #page .simple-bar-row i.positive { background: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .simple-bar-row i.negative { background: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page .simple-bar-row i.debt { background: var(--nw-warn) !important; }
html[data-theme][data-theme] body #app #page .simple-bar-row i.saving { background: var(--nw-accent) !important; }
html[data-theme][data-theme] body #app #page .simple-bar-row b { color: var(--nw-ink) !important; font-weight: 800 !important; }
html[data-theme][data-theme] body #app #page .category-list span { color: var(--nw-muted) !important; font-size: 13px !important; }
html[data-theme][data-theme] body #app #page .category-list b { color: var(--nw-ink) !important; font-size: 14px !important; font-weight: 700 !important; }

/* The small button beside each bar opens that figure in Panorama, so it
   shows an arrow, not a plus that looks like "add". */
html[data-theme][data-theme] body #app #page .niwwi-metric-plus {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  font-size: 0 !important;
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-muted) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .niwwi-metric-plus::before {
  content: "";
  width: 7px;
  height: 7px;
  margin-left: -3px;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg);
}

/* Movimientos recientes: rows keep their own height (they were squeezed and
   printed over each other) and the list scrolls inside its card as before. */
html[data-theme][data-theme] body #app #page .spending-list > .spending-row {
  flex: 0 0 auto !important;
  min-height: 56px;
  border-bottom: 1px solid var(--nw-line) !important;
}
html[data-theme][data-theme] body #app #page .spending-row > div { min-width: 0; }
html[data-theme][data-theme] body #app #page .spending-row b { color: var(--nw-ink) !important; font-size: 15px !important; font-weight: 700 !important; }
html[data-theme][data-theme] body #app #page .spending-row small {
  display: block;
  color: var(--nw-muted) !important;
  font-size: 13px !important;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
html[data-theme][data-theme] body #app #page .spending-row strong { font-size: 15px !important; font-weight: 800 !important; white-space: nowrap; }
html[data-theme][data-theme] body #app #page .spending-row strong.positive { color: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .spending-row strong.negative { color: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page .spending-row .spend-icon { background: var(--nw-surface-2) !important; color: var(--nw-muted) !important; }

/* Help: a small "?" beside the label shows that it can be tapped. */
html[data-theme][data-theme] body #app #page .niwwi-help-trigger::after {
  content: "?";
  display: inline-grid;
  place-items: center;
  width: 15px;
  height: 15px;
  margin-left: 6px;
  vertical-align: 1px;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0;
  opacity: 0.6;
}
html[data-theme] body .niwwi-help-bubble {
  border-color: var(--nw-line) !important;
  border-radius: var(--nw-r-panel) !important;
  background: var(--nw-surface) !important;
  color: var(--nw-ink) !important;
  box-shadow: var(--nw-shadow-pop) !important;
}
html[data-theme] body .niwwi-help-bubble > :is(strong, p) { color: var(--nw-ink) !important; }

/* One disclosure look: no browser triangle, a chevron on the right that turns. */
html[data-theme][data-theme] body #app #page :is(.money-summary-detail, .niwwi-guide details) > summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
html[data-theme][data-theme] body #app #page :is(.money-summary-detail, .niwwi-guide details) > summary::-webkit-details-marker { display: none; }
html[data-theme][data-theme] body #app #page :is(.money-summary-detail, .niwwi-guide details) > summary::after {
  content: "";
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page :is(.money-summary-detail, .niwwi-guide details)[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
html[data-theme][data-theme] body #app #page :is(.niwwi-spendable-detail, .asset-position-disclosure) .niwwi-action-chevron svg,
html[data-theme][data-theme] body #app #page .niwwi-spendable-detail > summary > svg { transition: transform var(--nw-quick) var(--nw-ease-out); }
html[data-theme][data-theme] body #app #page .asset-position-disclosure[open] .niwwi-action-chevron svg,
html[data-theme][data-theme] body #app #page .niwwi-spendable-detail[open] > summary > svg { transform: rotate(180deg); }

/* The "Mis Finanzas" header: a quiet panel, the switch keeps its place. */
html[data-theme][data-theme] body #app #page .niwwi-page-header { background: var(--nw-surface) !important; }

/* ---------------------------------------------------------- other screens */

/* Summary tiles and grouped panels on Panorama, Movimientos, Deudas,
   Calendario, Cuentas, Análisis and Ahorros: flat, one hairline, no washes. */
html[data-theme][data-theme] body #app #page :is(.registry-type-group, .accounts-credit-card, .forecast-business-card,
  .calendar-month-insights > article, .debt-summary-grid > article, .movement-summary-strip > article, .debt-side-section,
  .niwwi-debt-history, .settings-credit-card, .savings-location-card) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: var(--nw-shadow) !important;
}
html[data-theme][data-theme] body #app #page :is(.calendar-month-insights > article, .debt-summary-grid > article, .movement-summary-strip > article) {
  border-radius: var(--nw-r-card) !important;
}
/* Overdue keeps its meaning with a red figure, not a red wash. */
html[data-theme][data-theme] body #app #page .calendar-month-insights > article.has-overdue b { color: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page :is(.calendar-month-insights, .debt-summary-grid, .movement-summary-strip) > article :is(small, span) { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page :is(.calendar-month-insights, .debt-summary-grid, .movement-summary-strip) > article b { color: var(--nw-ink); }

/* Boxes inside panels: one step down, flat. */
html[data-theme][data-theme] body #app #page :is(.dashboard-period-chip, .planned-opening-field, .quick-register-head, .registry-ai-workspace,
  .registry-conversion-preview, .registry-entry-repeat, .registry-impact-preview, .revolving-primary, .credit-use-card-summary,
  .asset-position-totals > div, .source-breakdown > div, .savings-location-card > header, .calendar-legend) {
  background: var(--nw-surface-2) !important;
  border-color: var(--nw-line) !important;
  box-shadow: none !important;
  color: var(--nw-ink);
}
html[data-theme][data-theme] body #app #page .dashboard-period-chip :is(small, i) { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .dashboard-period-chip b { color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .calendar-legend span { color: var(--nw-ink) !important; background: var(--nw-surface) !important; border-color: var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .planned-opening-field input { background: transparent !important; border: 0 !important; }

/* Calendar days: plain cells; today is the one marked in accent. */
html[data-theme][data-theme] body #app #page .smart-calendar .day,
html[data-theme][data-theme] body #app #page .fv-calendar-view .day {
  background: var(--nw-surface) !important;
  border-color: var(--nw-line) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page :is(.smart-calendar, .fv-calendar-view) .day.today {
  background: var(--nw-accent-soft) !important;
  border-color: var(--nw-accent) !important;
}
html[data-theme][data-theme] body #app #page :is(.smart-calendar, .fv-calendar-view) .day .day-num { color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav > button {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-ink) !important;
  box-shadow: none !important;
}

/* Progress bars: one solid colour. */
html[data-theme][data-theme] body #app #page :is(.debt-progress, .forecast-month-track, .saving-progress, .goal-progress) > i {
  background: var(--nw-accent) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .forecast-month-track > i { background: color-mix(in srgb, var(--nw-accent) 42%, var(--nw-surface-2)) !important; }
html[data-theme][data-theme] body #app #page .forecast-month-track > span { color: var(--nw-ink) !important; text-shadow: none !important; }
html[data-theme][data-theme] body #app #page :is(.debt-progress, .forecast-month-track, .saving-progress, .goal-progress) {
  background: var(--nw-surface-2) !important;
}

/* Small marks and icon tiles: accent tint, no gradients. */
html[data-theme] body :is(.mova-ai-chat-avatar, .mova-ai-message-avatar),
html[data-theme][data-theme] body #app #page :is(.registry-ai-icon, .registry-business-mark, .settings-model-mark, .source-logo.debt-generic-icon) {
  background: var(--nw-accent-soft) !important;
  border: 1px solid transparent !important;
  color: var(--nw-accent-text) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .accounts-current-summary::after,
html[data-theme][data-theme] body #app #page .registry-ai-capture::before,
html[data-theme] body .niwwi-shimmer-button::before,
html[data-theme] body .niwwi-shimmer-button::after { content: none !important; display: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-shimmer-button:not(.dashboard-platform-activity .niwwi-shimmer-button) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-accent-text) !important;
  box-shadow: none !important;
  animation: none !important;
}

/* The "Niwwi AI · borrador seguro" card in Registrar: a plain panel. */
html[data-theme][data-theme] body #app #page .registry-ai-capture {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: var(--nw-shadow) !important;
}
html[data-theme][data-theme] body #app #page .registry-ai-review-badge { color: var(--nw-muted) !important; background: var(--nw-surface-2) !important; border-color: var(--nw-line) !important; }

/* Guía de uso and other plain disclosures: no browser triangle. */
html[data-theme][data-theme] body #app #page :is(.niwwi-guide, .config-guide, .guide-view) details > summary { list-style: none; }
html[data-theme][data-theme] body #app #page :is(.niwwi-guide, .config-guide, .guide-view) details > summary::-webkit-details-marker { display: none; }

/* Perfil y preferencias: the two styles shown as small screens, and the
   profile picture as your initial in the colour you pick (no characters). */
html[data-theme][data-theme] body #app #page .niwwi-style-option {
  border-color: var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  background: var(--nw-surface) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .niwwi-style-option:has(:checked) {
  border-color: var(--nw-accent) !important;
  box-shadow: 0 0 0 1px var(--nw-accent) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview {
  position: relative;
  align-items: flex-end;
  border-radius: 10px !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview i {
  flex: 1;
  height: 62%;
  border-radius: 6px;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview i:nth-child(2) { height: 82%; }
html[data-theme][data-theme] body #app #page .niwwi-style-preview.general {
  background: #F7F6FB !important;
  border-color: #E4E1EE !important;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview.general i {
  background: #FFFFFF !important;
  border: 1px solid #E4E1EE;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview.general i:nth-child(2) { background: #ECE7FB !important; border-color: #CFC4F3; }
html[data-theme][data-theme] body #app #page .niwwi-style-preview.kawaii {
  background:
    linear-gradient(90deg, #C9B2FF, #FFB3DA) top / 100% 3px no-repeat,
    linear-gradient(to top, #534660 0%, transparent 60%),
    #121934 !important;
  border-color: #2A3462 !important;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview.kawaii i {
  background:
    linear-gradient(#2E2A5A, #2E2A5A) top / 100% 5px no-repeat,
    #1B2448 !important;
  border: 1px solid #2A3462;
}
html[data-theme][data-theme] body #app #page .niwwi-style-preview.kawaii i:nth-child(2) {
  background:
    linear-gradient(#FFB3DA, #FFB3DA) top / 100% 5px no-repeat,
    #1B2448 !important;
}

html[data-theme] body .niwwi-avatar[data-avatar] { --nw-avatar: #6E56CF; }
html[data-theme] body .niwwi-avatar[data-avatar="mimi"] { --nw-avatar: #D9468F; }
html[data-theme] body .niwwi-avatar[data-avatar="pipo"] { --nw-avatar: #1F9E84; }
html[data-theme] body .niwwi-avatar[data-avatar="nori"] { --nw-avatar: #C7831A; }
html[data-theme] body .niwwi-avatar[data-avatar="nuba"] { --nw-avatar: #3A74D8; }
html[data-theme][data-theme] body .niwwi-avatar[data-avatar] {
  display: inline-grid !important;
  place-items: center;
  background: color-mix(in srgb, var(--nw-avatar) 18%, var(--nw-surface)) !important;
  background-image: none !important;
  border: 1px solid color-mix(in srgb, var(--nw-avatar) 40%, var(--nw-line)) !important;
  box-shadow: none !important;
  color: color-mix(in srgb, var(--nw-avatar) 72%, var(--nw-ink)) !important;
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  text-indent: 0 !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page .niwwi-avatar-options .niwwi-avatar[data-avatar] { font-size: 20px; }
html[data-theme][data-theme] body #app #page .niwwi-avatar-options button {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  box-shadow: none !important;
  color: var(--nw-ink) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-avatar-options button[aria-pressed="true"] {
  border-color: var(--nw-accent) !important;
  box-shadow: 0 0 0 1px var(--nw-accent) !important;
}

/* Fonts changed width; this header keeps its button on the line below, as before. */
html[data-theme] body #page .mova-review-allocations > .chart-head > div { flex: 1 1 100%; }

/* Registrar: the save button reads as one button (arrow beside the words). */
html[data-theme][data-theme] body #app #page :is(.registry-save, .registry-ai-action) {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.1 !important;
  white-space: nowrap;
}
html[data-theme][data-theme] body #app #page :is(.registry-save, .registry-ai-action) svg { display: inline-block !important; width: 18px; height: 18px; flex: none; }
html[data-theme][data-theme] body #app #page .registry-save::after { content: none !important; display: none !important; }

/* Panorama groups: label on one line, then total and chevron. */
html[data-theme][data-theme] body #app #page .registry-type-group > .registry-type-summary small { font-size: 13px !important; letter-spacing: 0.03em !important; font-weight: 800 !important; }
html[data-theme][data-theme] body #app #page .registry-type-group > .registry-type-summary b { font-size: 12.5px !important; color: var(--nw-muted) !important; font-weight: 600 !important; }
html[data-theme][data-theme] body #app #page .registry-type-group > .registry-type-summary strong { font-size: 20px !important; font-weight: 800 !important; color: var(--nw-ink); }
html[data-theme][data-theme] body #app #page .registry-type-categories span { font-size: 13px !important; color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .registry-type-categories b { font-size: 13px !important; color: var(--nw-ink) !important; font-weight: 700 !important; }
/* Group names keep their meaning colour, dark enough to read on white. */
html[data-theme="light"][data-theme] body #app #page .registry-type-group.income > .registry-type-summary small { color: var(--nw-pos) !important; }
html[data-theme="light"][data-theme] body #app #page .registry-type-group.expense > .registry-type-summary small { color: var(--nw-neg) !important; }
html[data-theme="light"][data-theme] body #app #page .registry-type-group.debt > .registry-type-summary small { color: var(--nw-warn) !important; }
html[data-theme="light"][data-theme] body #app #page .registry-type-group.saving > .registry-type-summary small { color: var(--nw-accent-text) !important; }
html[data-theme="light"][data-theme] body #app #page .registry-type-group:is(.transfer, .withdrawal) > .registry-type-summary small { color: var(--nw-ink) !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .registry-type-summary:has(> .registry-type-icon) {
    grid-template-columns: minmax(0, 1fr) auto 22px !important;
    min-height: 0 !important;
    align-items: center !important;
  }
  html[data-theme][data-theme] body #app #page .registry-type-summary > .registry-type-icon { display: none !important; }
  /* The old sheet pins the total and the chevron to columns 3 and 4; follow the new three columns. */
  html[data-theme][data-theme] body #app #page .registry-type-summary:has(> .registry-type-icon) > div { grid-column: 1 !important; }
  html[data-theme][data-theme] body #app #page .registry-type-summary:has(> .registry-type-icon) > strong { grid-column: 2 !important; white-space: nowrap; }
  html[data-theme][data-theme] body #app #page .registry-type-summary:has(> .registry-type-icon) > i { grid-column: 3 !important; }
}

/* Movimientos (phone): the concept name gets its room back (it was 0px wide
   next to long amount notes), and the list scrolls with the page. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .movement-ledger-row {
    grid-template-columns: 58px minmax(0, 1fr) minmax(0, max-content) !important;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row > strong { max-width: 44vw; text-align: right; }
  html[data-theme][data-theme] body #app #page .movement-ledger-row > strong small {
    display: block;
    white-space: normal !important;
    font-size: 12px !important;
    line-height: 1.3 !important;
    color: var(--nw-muted) !important;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row .movement-kind b {
    display: block;
    font-size: 15px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row time { font-size: 12px !important; color: var(--nw-muted) !important; white-space: normal; }
  html[data-theme][data-theme] body #app #page .movement-ledger { max-height: none !important; overflow: visible !important; }
  /* Header buttons wrap to a second line instead of hiding off the edge. */
  html[data-theme][data-theme] body #app #page .page-head .head-actions { flex-wrap: wrap !important; overflow: visible !important; }
}
html[data-theme][data-theme] body #app #page .movement-ledger-row > strong { font-variant-numeric: tabular-nums; }

/* Deudas: what she owes is ink, not success green; colour only for state. */
html[data-theme][data-theme] body #app #page :is(.revolving-primary strong, .revolving-metrics b, .debt-main-amount strong, .credit-use-card-summary b, .debt-period-box b) {
  color: var(--nw-ink) !important;
}
/* Inside each debt card the boxes become plain rows. */
html[data-theme][data-theme] body #app #page .debt-account-card :is(.revolving-primary, .revolving-metrics > span, .debt-period-box, .credit-use-card-summary, .debt-reconciliation-note) {
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
html[data-theme][data-theme] body #app #page .debt-reconciliation-note :is(p, span) { color: var(--nw-muted) !important; font-size: 13px !important; }
html[data-theme][data-theme] body #app #page .debt-reconciliation-note > span { color: var(--nw-warn) !important; font-weight: 800; font-size: 12px !important; }
html[data-theme][data-theme] body #app #page .debt-main-amount span { font-size: 13px !important; color: var(--nw-muted) !important; }

/* Calendario: the day badge shows the worst state; past days are quieter. */
html[data-theme][data-theme] body #app #page .smart-calendar .calendar-day-top > small {
  min-width: 20px;
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  font-size: 12px !important;
  font-weight: 800 !important;
  border: 0 !important;
}
html[data-theme][data-theme] body #app #page .smart-calendar .day:has(.status-due_today) .calendar-day-top > small { background: var(--nw-warn-soft) !important; color: var(--nw-warn) !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .day:has(.status-overdue) .calendar-day-top > small { background: var(--nw-neg-soft) !important; color: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .event.calendar-day-event-preview { border-left-width: 1px !important; border-radius: 8px !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .event.status-overdue { background: var(--nw-neg-soft) !important; border-color: transparent !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .event.status-due_today { background: var(--nw-warn-soft) !important; border-color: transparent !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .event.status-upcoming { background: var(--nw-surface-2) !important; border-color: transparent !important; }
html[data-theme][data-theme] body #app #page .smart-calendar .calendar-day-events > :nth-child(n+3) { display: none !important; }

/* Disabled buttons look unavailable, not broken. */
html[data-theme][data-theme] body #app #page :is(.secondary, .action-btn, .subtle-button):disabled {
  opacity: 1 !important;
  background: var(--nw-surface-2) !important;
  color: var(--nw-muted) !important;
  border: 1px dashed var(--nw-line-strong) !important;
  cursor: not-allowed;
}

/* ---------------------------------------------------------------- Análisis */

/* ¿Me alcanza?: the answer carries its colour. The verdict card and the
   "después de todo" card both say yes or no at a glance, in place. */
html[data-theme][data-theme] body #app #page .affordability-outcome[data-nw-verdict] {
  border-color: var(--nw-verdict-line, var(--nw-line)) !important;
  background: var(--nw-verdict-soft, var(--nw-surface)) !important;
}
html[data-theme][data-theme] body #app #page .affordability-outcome[data-nw-verdict="yes"] { --nw-verdict-line: color-mix(in srgb, var(--nw-pos) 45%, var(--nw-line)); --nw-verdict-soft: color-mix(in srgb, var(--nw-pos) 9%, var(--nw-surface)); --nw-verdict-ink: var(--nw-pos); }
html[data-theme][data-theme] body #app #page .affordability-outcome[data-nw-verdict="no"] { --nw-verdict-line: color-mix(in srgb, var(--nw-neg) 45%, var(--nw-line)); --nw-verdict-soft: color-mix(in srgb, var(--nw-neg) 8%, var(--nw-surface)); --nw-verdict-ink: var(--nw-neg); }
html[data-theme][data-theme] body #app #page .affordability-outcome[data-nw-verdict] h2 {
  color: var(--nw-verdict-ink, var(--nw-ink)) !important;
  font-size: clamp(24px, 6.4vw, 30px) !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em;
}
html[data-theme][data-theme] body #app #page .affordability-outcome :is(dt, p) { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .affordability-outcome dd { color: var(--nw-ink) !important; font-weight: 800 !important; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .affordability-view[data-nw-verdict="yes"][data-nw-verdict] .affordability-summary > article.result:last-child { border-color: color-mix(in srgb, var(--nw-pos) 45%, var(--nw-line)) !important; background: color-mix(in srgb, var(--nw-pos) 9%, var(--nw-surface)) !important; }
html[data-theme][data-theme] body #app #page .affordability-view[data-nw-verdict="no"][data-nw-verdict] .affordability-summary > article.result:last-child { border-color: color-mix(in srgb, var(--nw-neg) 45%, var(--nw-line)) !important; background: color-mix(in srgb, var(--nw-neg) 8%, var(--nw-surface)) !important; }
html[data-theme][data-theme] body #app #page .affordability-summary > article.result:last-child b { font-size: clamp(28px, 7.6vw, 34px) !important; }

/* Summary tiles: quiet labels, the amount is the loud part. */
html[data-theme][data-theme] body #app #page :is(.affordability-summary small, .affordability-picker header > small, .affordability-outcome > div > small, .analysis-section-copy > div > span, .forecast-month-review header small) {
  font-size: 12px !important;
  letter-spacing: 0.04em !important;
  font-weight: 700 !important;
  color: var(--nw-muted) !important;
  line-height: 1.3;
}
html[data-theme][data-theme] body #app #page .affordability-summary b { font-size: 22px; font-weight: 800 !important; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .affordability-summary span { color: var(--nw-muted) !important; font-size: 13px !important; }

/* Scenario switch: three equal choices that always fit the screen. */
html[data-theme][data-theme] body #app #page .affordability-scenarios {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  overflow: visible !important;
  gap: 2px;
}
html[data-theme][data-theme] body #app #page .affordability-scenarios > button {
  min-width: 0 !important;
  min-height: 44px;
  white-space: normal !important;
  line-height: 1.2;
  font-size: 13px !important;
  padding: 6px 8px !important;
}

/* Sources and income rows: one line each, amount on the right. */
html[data-theme][data-theme] body #app #page .affordability-choice {
  display: grid !important;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  align-items: center;
  column-gap: 12px;
  row-gap: 2px;
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: none !important;
  padding: 12px 14px !important;
}
html[data-theme][data-theme] body #app #page .affordability-choice.selected { border-color: color-mix(in srgb, var(--nw-accent) 55%, var(--nw-line)) !important; }
html[data-theme][data-theme] body #app #page .affordability-choice > input { grid-row: 1 / span 2; margin: 0 !important; }
html[data-theme][data-theme] body #app #page .affordability-choice > span { min-width: 0; }
html[data-theme][data-theme] body #app #page .affordability-choice > span b { color: var(--nw-ink) !important; font-size: 15px !important; }
html[data-theme][data-theme] body #app #page .affordability-choice > span small { color: var(--nw-muted) !important; font-size: 12.5px !important; }
html[data-theme][data-theme] body #app #page .affordability-choice > strong { grid-column: 3; grid-row: 1; justify-self: end; color: var(--nw-ink) !important; font-size: 15px !important; font-weight: 800 !important; white-space: nowrap; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .affordability-choice > small { grid-column: 3; grid-row: 2; justify-self: end; color: var(--nw-muted) !important; font-size: 12px !important; white-space: nowrap; }
/* A row that can't be used stays readable; the box says it's off. */
html[data-theme][data-theme] body #app #page .affordability-choice.disabled { opacity: 1 !important; background: var(--nw-surface-2) !important; border-style: dashed !important; }
html[data-theme][data-theme] body #app #page .affordability-choice.disabled > span b,
html[data-theme][data-theme] body #app #page .affordability-choice.disabled > strong { color: var(--nw-muted) !important; }

/* Payments: name and amount on one line, the priority picker under them. */
html[data-theme][data-theme] body #app #page .affordability-payment {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: start;
  column-gap: 12px;
  row-gap: 8px;
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: none !important;
  padding: 12px 14px !important;
}
html[data-theme][data-theme] body #app #page .affordability-payment > div b { color: var(--nw-ink) !important; font-size: 15px !important; }
html[data-theme][data-theme] body #app #page .affordability-payment > div small { color: var(--nw-muted) !important; font-size: 12.5px !important; }
html[data-theme][data-theme] body #app #page .affordability-payment > strong { color: var(--nw-ink) !important; font-size: 15px !important; font-weight: 800 !important; white-space: nowrap; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .affordability-payment > label { grid-column: 1 / -1; }
html[data-theme][data-theme] body #app #page .affordability-payment select { min-height: 40px !important; height: 40px; font-size: 14px !important; }
/* iPhone: a select under 16px makes Safari zoom the whole page when tapped. */
@media (hover: none) and (pointer: coarse) {
  html[data-theme][data-theme] body #app #page .affordability-payment select { font-size: 16px !important; }
}
html[data-theme][data-theme] body #app #page .affordability-payment[data-priority="excluded"] > div b,
html[data-theme][data-theme] body #app #page .affordability-payment[data-priority="excluded"] > strong { color: var(--nw-muted) !important; }

/* Lowest balance and the day-by-day list: a card of tidy rows. */
html[data-theme][data-theme] body #app #page #analysisAffordabilityPanel > p { color: var(--nw-muted) !important; font-size: 14px !important; margin: 4px 2px 8px; }
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline {
  list-style: none;
  margin: 0 0 14px;
  padding: 4px 14px !important;
  background: var(--nw-surface);
  border: 1px solid var(--nw-line);
  border-radius: var(--nw-r-card);
}
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline li {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: baseline;
  gap: 12px !important;
  padding: 10px 0;
  border-top: 1px solid var(--nw-line);
  font-size: 14px;
}
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline li:first-child { border-top: 0; }
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline time { color: var(--nw-muted); font-size: 12.5px; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline span { color: var(--nw-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html[data-theme][data-theme] body #app #page .niwwi-cash-timeline b { color: var(--nw-neg); font-weight: 800; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* Notes between cards read as notes, not as the loudest text. */
html[data-theme][data-theme] body #app #page :is(div.forecast-money-note > p, p.forecast-money-note) { color: var(--nw-muted) !important; font-size: 13.5px !important; line-height: 1.5; }

/* Helion per-model trend: a figure never breaks in two. */
html[data-theme][data-theme] body #app #page :is(.niwwi-trend-summary article strong, .forecast-business-result strong, .analysis-forecast-summary article > b) {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
html[data-theme][data-theme] body #app #page .niwwi-trend-summary article strong { font-size: clamp(15px, 4.4vw, 20px) !important; }

/* Sliders take the accent instead of mint and cyan. */
html[data-theme][data-theme] body #app #page .analysis-forecast-control-grid input[type="range"] { accent-color: var(--nw-accent) !important; }

/* Month cards: each figure and its bar share one colour. */
html[data-theme][data-theme] body #app #page .niwwi-horizon-measure b { color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .niwwi-horizon-measure b.positive { color: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .niwwi-zero-scale i.neutral { background: var(--nw-accent) !important; }
html[data-theme][data-theme] body #app #page .niwwi-zero-scale i.positive { background: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .niwwi-zero-scale i.saving { background: color-mix(in srgb, var(--nw-accent) 55%, var(--nw-surface)) !important; }
html[data-theme][data-theme] body #app #page .niwwi-zero-scale em { color: var(--nw-muted) !important; }

/* Plan vs real per business: the income and expense blocks sit flat in the
   card; only their heading keeps the colour. */
html[data-theme][data-theme] body #app #page .forecast-business-card :is(.forecast-comparison-table tbody > tr, .forecast-business-result) {
  background: var(--nw-surface-2) !important;
  border-color: var(--nw-line) !important;
  box-shadow: none !important;
}

/* Wide tables say they scroll sideways. */
html[data-theme][data-theme] body #app #page .forecast-table-scroll {
  overflow-x: auto !important;
  scrollbar-width: thin;
  scrollbar-color: var(--nw-line-strong) transparent;
  padding-bottom: 6px;
}
html[data-theme][data-theme] body #app #page .forecast-table-scroll::-webkit-scrollbar { display: block !important; height: 6px; }
html[data-theme][data-theme] body #app #page .forecast-table-scroll::-webkit-scrollbar-thumb { background: var(--nw-line-strong); border-radius: 3px; }
html[data-theme][data-theme] body #app #page .forecast-table td:first-child { min-width: 132px; }

/* The remaining native disclosure triangles become the same chevron. */
html[data-theme][data-theme] body #app #page :is(.forecast-source-details, .niwwi-horizon-grid, .forecast-assumptions, .accounts-platform-position, .forecast-money-note) details > summary,
html[data-theme][data-theme] body #app #page details:is(.forecast-assumptions, .forecast-money-note) > summary {
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page :is(.forecast-source-details, .niwwi-horizon-grid, .forecast-assumptions, .accounts-platform-position, .forecast-money-note) details > summary::-webkit-details-marker,
html[data-theme][data-theme] body #app #page details:is(.forecast-assumptions, .forecast-money-note) > summary::-webkit-details-marker { display: none; }
html[data-theme][data-theme] body #app #page :is(.forecast-source-details, .niwwi-horizon-grid, .forecast-assumptions, .accounts-platform-position, .forecast-money-note) details > summary::after,
html[data-theme][data-theme] body #app #page details:is(.forecast-assumptions, .forecast-money-note) > summary::after {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 200ms var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page :is(.forecast-source-details, .niwwi-horizon-grid, .forecast-assumptions, .accounts-platform-position, .forecast-money-note) details[open] > summary::after,
html[data-theme][data-theme] body #app #page details:is(.forecast-assumptions, .forecast-money-note)[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
html[data-theme][data-theme] body #app #page .forecast-source-details details > summary { font-size: 15px !important; font-weight: 700 !important; color: var(--nw-ink) !important; }

/* ----------------------------------------------------------- Configuración */

/* "Revisar aperturas" keeps its words on the phone, and header buttons wrap
   instead of hiding in a sideways scroller. */
@media (max-width: 420px) {
  html[data-theme][data-theme] body #app #page .month-start-compact-access span { display: inline !important; }
}
html[data-theme][data-theme] body #app #page .niwwi-page-header .head-actions.mova-local-scroll { overflow: visible !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .niwwi-page-header { flex-wrap: wrap !important; }
  html[data-theme][data-theme] body #app #page .niwwi-page-header .head-actions { flex-wrap: wrap !important; max-width: 100% !important; position: static !important; }
}

/* Delete is a small red button at the end, not an empty full-width row. */
html[data-theme][data-theme] body #app #page .settings-card-actions .icon-button.danger {
  width: 44px !important;
  min-width: 44px !important;
  height: 44px !important;
  min-height: 44px !important;
  flex: 0 0 44px !important;
  justify-self: end;
  align-self: flex-end;
  margin-left: auto;
  padding: 0 !important;
  display: inline-grid !important;
  place-items: center;
  color: var(--nw-neg) !important;
  background: var(--nw-neg-soft) !important;
  border: 1px solid color-mix(in srgb, var(--nw-neg) 30%, var(--nw-line)) !important;
  border-radius: var(--nw-r-control) !important;
  font-size: 18px !important;
}
html[data-theme][data-theme] body #app #page .settings-card-actions .icon-button.danger svg { width: 18px; height: 18px; }

/* Preferences: plain groups with a clear title instead of browser boxes. */
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset {
  border: 0 !important;
  padding: 0 !important;
  margin: 0 0 22px !important;
  min-inline-size: 0;
  background: transparent !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .niwwi-preferences legend {
  padding: 0 !important;
  margin: 0 0 10px !important;
  font-size: 15px !important;
  font-weight: 750 !important;
  color: var(--nw-ink) !important;
}
/* Light or dark: two side-by-side choices, the chosen one lit. */
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset:has(> label > input[name="niwwi-theme"]) {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset > label:has(> input[name="niwwi-theme"]) {
  position: relative;
  display: flex !important;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  border-radius: var(--nw-r-control);
  border: 1px solid var(--nw-line-strong);
  background: var(--nw-surface);
  color: var(--nw-muted);
  font-size: 15px;
  font-weight: 650;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset > label > input[name="niwwi-theme"] { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset > label:has(> input[name="niwwi-theme"]:checked) {
  background: var(--nw-accent-soft);
  border-color: var(--nw-accent);
  color: var(--nw-accent-text);
  font-weight: 800;
}
html[data-theme][data-theme] body #app #page .niwwi-preferences fieldset > label:has(> input[name="niwwi-theme"]:focus-visible) { outline: 2px solid var(--nw-accent); outline-offset: 2px; }

/* On/off settings: readable rows with a switch on the right. */
html[data-theme][data-theme] body #app #page .preference-list > label {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 56px;
  padding: 10px 0 !important;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page .preference-list > label > div { min-width: 0; display: grid; gap: 2px; }
html[data-theme][data-theme] body #app #page .preference-list > label > div > b { font-size: 15px !important; font-weight: 650 !important; color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .preference-list > label > div > span { font-size: 13px !important; color: var(--nw-muted) !important; line-height: 1.4; }
html[data-theme][data-theme] body #app #page .preference-list > label > input[type="checkbox"] {
  -webkit-appearance: none;
  appearance: none;
  flex: 0 0 44px;
  width: 44px !important;
  height: 26px !important;
  margin: 0 !important;
  border-radius: 13px !important;
  border: 0 !important;
  cursor: pointer;
  background-color: color-mix(in srgb, var(--nw-muted) 38%, var(--nw-surface-2)) !important;
  background-image: radial-gradient(circle closest-side, #FFFFFF 92%, transparent 100%) !important;
  background-size: 22px 22px !important;
  background-repeat: no-repeat !important;
  background-position: 2px 2px !important;
  box-shadow: none !important;
  transition: background-color 160ms ease, background-position 160ms var(--nw-ease-out) !important;
}
html[data-theme][data-theme] body #app #page .preference-list > label > input[type="checkbox"]:checked {
  background-color: var(--nw-accent) !important;
  background-position: 20px 2px !important;
}
html[data-theme][data-theme] body #app #page .preference-list > label > input[type="checkbox"]:focus-visible { outline: 2px solid var(--nw-accent); outline-offset: 2px; }
html[data-theme][data-theme] body #app #page .preference-list > label > input[type="checkbox"]::before,
html[data-theme][data-theme] body #app #page .preference-list > label > input[type="checkbox"]::after { content: none !important; }
html[data-theme][data-theme] body #app #page .preference-section-head p { font-size: 13px !important; color: var(--nw-muted) !important; }

/* Notes: the title leads, the paragraph supports. */
html[data-theme][data-theme] body #app #page .card.settings-note > div > b { font-size: 15px !important; font-weight: 750 !important; color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .card.settings-note > div > p { font-size: 13.5px !important; color: var(--nw-muted) !important; line-height: 1.5; }
/* Modelos "Criterio general": one column on the phone so the text and the
   picker get the full width. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .settings-note.helion-shared-allocation-setting { flex-wrap: wrap !important; }
  html[data-theme][data-theme] body #app #page .settings-note.helion-shared-allocation-setting > div { flex: 1 1 0 !important; min-width: 0 !important; }
  html[data-theme][data-theme] body #app #page .settings-note.helion-shared-allocation-setting > button { flex: 1 1 100% !important; width: 100% !important; }
  html[data-theme][data-theme] body #app #page .settings-note.helion-shared-allocation-setting > div :is(select, input) { width: 100% !important; max-width: none !important; height: 44px !important; font-size: 16px !important; }
}

/* Model rules: the number is the big part, labels sit quietly above. */
html[data-theme][data-theme] body #app #page .settings-model-economics {
  gap: 1px !important;
  background: var(--nw-line) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page .settings-model-economics > span {
  background: var(--nw-surface-2) !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 10px 12px !important;
}
html[data-theme][data-theme] body #app #page .settings-model-economics > span:last-child:nth-child(odd) { grid-column: 1 / -1; }
html[data-theme][data-theme] body #app #page .settings-model-economics > span > small { font-size: 12px !important; letter-spacing: 0.02em !important; color: var(--nw-muted) !important; font-weight: 650 !important; }
html[data-theme][data-theme] body #app #page .settings-model-economics > span > b { font-size: 17px !important; font-weight: 800 !important; color: var(--nw-ink) !important; font-variant-numeric: tabular-nums; }

/* One status chip everywhere. */
html[data-theme][data-theme] body #app #page :is(.business-status, .subscription-status) {
  display: inline-flex !important;
  align-items: center;
  min-height: 24px;
  padding: 0 10px !important;
  border-radius: var(--nw-r-pill) !important;
  font-size: 12px !important;
  font-weight: 650 !important;
  letter-spacing: 0 !important;
  border: 0 !important;
  box-shadow: none !important;
  background: var(--nw-surface-2) !important;
  color: var(--nw-muted) !important;
}
html[data-theme][data-theme] body #app #page :is(.business-status, .subscription-status).active { background: var(--nw-pos-soft) !important; color: var(--nw-pos) !important; }

/* Elementos: a list, not a stack of boxes that look like inputs. */
html[data-theme][data-theme] body #app #page .catalog-functional-row {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 44px 44px;
  align-items: center;
  gap: 4px;
  min-height: 56px;
  padding: 6px 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-bottom: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .catalog-functional-row > span { min-width: 0; display: grid; gap: 2px; }
html[data-theme][data-theme] body #app #page .catalog-functional-row > span > b { font-size: 15px !important; font-weight: 650 !important; color: var(--nw-ink) !important; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html[data-theme][data-theme] body #app #page .catalog-functional-row > span > small { font-size: 13px !important; color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .catalog-functional-row > .text-button { width: 44px !important; height: 44px !important; min-width: 44px !important; display: grid !important; place-items: center; padding: 0 !important; color: var(--nw-muted) !important; border-radius: var(--nw-r-control) !important; background: transparent !important; border: 0 !important; }
html[data-theme][data-theme] body #app #page .catalog-functional-row > .text-button.danger { color: var(--nw-neg) !important; }

/* Niwwi AI settings: no empty icon square before each title. */
html[data-theme][data-theme] body #app #page .niwwi-ai-settings-card > h2::before { display: none !important; content: none !important; }

/* Niwwi AI steps on Datos: a quiet inline stepper, not three fake buttons. */
html[data-theme][data-theme] body #app #page .mova-ai-settings-flow > span {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  font-size: 13px !important;
  font-weight: 650 !important;
  color: var(--nw-ink) !important;
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  padding: 0 !important;
}
html[data-theme][data-theme] body #app #page .mova-ai-settings-flow > span > b {
  display: inline-grid !important;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  font-size: 12px !important;
}
html[data-theme][data-theme] body #app #page .mova-ai-status { font-size: 12px !important; font-weight: 650 !important; min-height: 24px; padding: 2px 10px !important; border-radius: var(--nw-r-pill) !important; }
html[data-theme][data-theme] body #app #page .mova-ai-status.warning { background: var(--nw-warn-soft) !important; color: var(--nw-warn) !important; border: 0 !important; }
html[data-theme][data-theme] body #app #page .mova-ai-settings-head p,
html[data-theme][data-theme] body #app #page .mova-ai-settings-foot small,
html[data-theme][data-theme] body #app #page p.remainder-rule { font-size: 13px !important; color: var(--nw-muted) !important; }

/* Suscripciones: a monthly cost is not good news and a month is not money;
   both read in ink. */
html[data-theme][data-theme] body #app #page .subscription-settings-summary article strong { color: var(--nw-ink) !important; font-size: 26px !important; font-weight: 800 !important; font-variant-numeric: tabular-nums; }
html[data-theme][data-theme] body #app #page .recurring-subscription-card .subscription-amount { color: var(--nw-ink) !important; font-variant-numeric: tabular-nums; }

/* Empresas: neutral cards; the company colour lives on the badge only. */
html[data-theme][data-theme] body #app #page .company-theme-card {
  background: var(--nw-surface) !important;
  background-image: none !important;
}
html[data-theme][data-theme] body #app #page .company-theme-card::before,
html[data-theme][data-theme] body #app #page .company-theme-card::after { display: none !important; }
html[data-theme][data-theme] body #app #page .theme-meta span i { box-shadow: 0 0 0 1px var(--nw-line-strong) !important; }

/* Month names keep Spanish casing ("septiembre de 2026"). */
html[data-theme][data-theme] body #app #page .niwwi-remainder-review h3 { text-transform: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-remainder-review h3::first-letter { text-transform: uppercase; }

/* Guía de uso: plain rows with a chevron, one divider. */
html[data-theme][data-theme] body #app #page .niwwi-guide details { border: 0 !important; border-bottom: 1px solid var(--nw-line) !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-guide details[open] { border-left: 0 !important; }
html[data-theme][data-theme] body #app #page .niwwi-guide details > summary {
  background: transparent !important;
  color: var(--nw-ink) !important;
  font-size: 15px !important;
  font-weight: 650 !important;
  min-height: 52px;
  padding: 0 4px !important;
  border: 0 !important;
  border-radius: 0 !important;
}

/* ---------------------------------------------------------------- buttons */

html[data-theme] body :is(.primary, .primary-action, .action-btn.primary-action, .registry-save, .registry-ai-action, .mova-ai-chat-send:not(:disabled)) {
  background: var(--nw-accent) !important;
  color: var(--nw-accent-ink) !important;
  border: 1px solid transparent !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: var(--nw-shadow) !important;
  text-shadow: none !important;
  filter: none !important;
}
html[data-theme] #page .registry-save::after { display: none !important; }
html[data-theme] body :is(#page, .modal, .niwwi-preferences, .side-foot) :is(.secondary, .subtle-button, .action-btn, .filter):not(.danger, .primary-action, .niwwi-shimmer-button) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-accent-text) !important;
  box-shadow: none !important;
  font-weight: 700;
}
html[data-theme] body :is(.icon-button, .modal-close, .niwwi-theme-toggle, .mova-ai-chat-close, .mova-mobile-drawer-close) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-ink) !important;
  box-shadow: none !important;
}
html[data-theme] #page .dashboard-platform-activity .niwwi-shimmer-button {
  background: var(--nw-accent-soft) !important;
  border: 1px solid transparent !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-accent-text) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}
html[data-theme] #page .dashboard-platform-activity .niwwi-shimmer-button::before,
html[data-theme] #page .dashboard-platform-activity .niwwi-shimmer-button::after { display: none !important; }
html[data-theme] #page .dashboard-platform-activity .platform-disclosures summary {
  background: var(--nw-surface-2) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: none !important;
}
html[data-theme] body :is(.primary, .action-btn, .secondary, .subtle-button, .registry-save, .registry-ai-action):disabled { opacity: 0.45; }

/* Segmented controls and tabs: a quiet track, the chosen one lifted. */
html[data-theme][data-theme] body #app #page :is(.segmented, .dashboard-mode, .dashboard-switcher, .dashboard-business-switcher, .business-context-switcher,
  .mova-dashboard-mode-switch, .analysis-tabs, .registry-visualizer-tabs, .registry-visual-tabs, .debt-filter-bar, .history-quick-ranges, .analysis-period-switcher,
  .analysis-business-switcher, .analysis-view-tabs, .forecast-scenario-switch, .calendar-focus-switch, .registry-ledger-mode, .settings-tabs,
  .niwwi-workbook-tabs, .helion-view-tabs, .fv-business-switcher, .annual-mode-tabs, .affordability-scenarios) {
  background: var(--nw-surface-2) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: calc(var(--nw-r-control) + 4px) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page :is(.segmented, .dashboard-mode, .dashboard-switcher, .dashboard-business-switcher, .business-context-switcher,
  .mova-dashboard-mode-switch, .analysis-tabs, .registry-visualizer-tabs, .registry-visual-tabs, .debt-filter-bar, .history-quick-ranges, .analysis-period-switcher,
  .analysis-business-switcher, .analysis-view-tabs, .forecast-scenario-switch, .calendar-focus-switch, .registry-ledger-mode, .settings-tabs,
  .niwwi-workbook-tabs, .helion-view-tabs, .fv-business-switcher, .annual-mode-tabs, .affordability-scenarios) > button {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-muted) !important;
  box-shadow: none !important;
  font-weight: 650;
}
html[data-theme][data-theme] body #app #page :is(.segmented, .dashboard-mode, .dashboard-switcher, .dashboard-business-switcher, .business-context-switcher,
  .mova-dashboard-mode-switch, .analysis-tabs, .registry-visualizer-tabs, .registry-visual-tabs, .debt-filter-bar, .history-quick-ranges, .analysis-period-switcher,
  .analysis-business-switcher, .analysis-view-tabs, .forecast-scenario-switch, .calendar-focus-switch, .registry-ledger-mode, .settings-tabs,
  .niwwi-workbook-tabs, .helion-view-tabs, .fv-business-switcher, .annual-mode-tabs, .affordability-scenarios) > button:is(.active, [aria-pressed="true"], [aria-selected="true"]) {
  background: var(--nw-surface) !important;
  border-color: color-mix(in srgb, var(--nw-accent) 45%, var(--nw-line-strong)) !important;
  color: var(--nw-accent-text) !important;
  box-shadow: var(--nw-shadow) !important;
  font-weight: 800;
}

/* Disclosures. */
html[data-theme] #page details:not(.niwwi-spendable-detail, .platform-disclosures details) > summary { color: var(--nw-accent-text); font-weight: 700; }
html[data-theme] #page .forecast-assumptions details > summary { background: var(--nw-surface-2) !important; }

/* ------------------------------------------------------------- forms */

html[data-theme] :is(#page, .modal, .login-card, .mova-ai-chat) :is(input:not([type="radio"], [type="checkbox"], [type="range"], [type="color"], [type="file"]), textarea, select) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-ink) !important;
  box-shadow: none !important;
}
html[data-theme] :is(#page, .modal, .login-card, .mova-ai-chat) :is(input, textarea, select):focus-visible {
  border-color: var(--nw-accent) !important;
  outline: 3px solid color-mix(in srgb, var(--nw-accent) 22%, transparent) !important;
  outline-offset: 0 !important;
}
/* Login: the box with the icon is the field; the input inside it has no frame of its own. */
html[data-theme] body #loginForm .input-wrap {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: none !important;
}
html[data-theme] body #loginForm .input-wrap:focus-within {
  border-color: var(--nw-accent) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-accent) 22%, transparent) !important;
}
html[data-theme] body #loginForm .input-wrap input {
  background: transparent !important;
  border: 0 !important;
  outline: none !important;
}
html[data-theme] body #loginForm h2 {
  background: var(--nw-title-grad);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
  -webkit-text-fill-color: transparent;
}

/* ------------------------------------------------------------- the shell */

html[data-theme][data-theme] body #app .sidebar {
  background: var(--nw-side) !important;
  border-color: var(--nw-line) !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app .sidebar .nav-label { color: var(--nw-muted); letter-spacing: 0.08em; }
html[data-theme][data-theme] body #app .sidebar :is(.nav-label, .side-head)::after { display: none !important; }
html[data-theme][data-theme] body #app .sidebar :is(.nav-item, .nav-subitem) {
  border: 1px solid transparent !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-ink) !important;
  background: transparent !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app .sidebar .nav-icon {
  background: transparent !important;
  border-color: transparent !important;
  box-shadow: none !important;
  color: var(--nw-muted) !important;
}
html[data-theme][data-theme] body #app .sidebar :is(.nav-item, .nav-subitem).active {
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  font-weight: 750;
}
html[data-theme][data-theme] body #app .sidebar .nav-item.active .nav-icon { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app .sidebar .brand-name { color: var(--nw-ink) !important; background: none !important; -webkit-text-fill-color: currentColor !important; font-weight: 800; letter-spacing: -0.02em; }
html[data-theme] body .side-foot :is(.sidebar-notification-bell, .sidebar-global-refresh, .profile, .cloud-sync-status, .sidebar-refresh-status) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: none !important;
}

/* Top bar with the light strip underneath (the signature). */
html[data-theme] body .topbar {
  position: relative;
  background: var(--nw-bg) !important;
  border-bottom: 1px solid var(--nw-line) !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
html[data-theme] body .mobile-title > span { color: var(--nw-ink) !important; background: none !important; -webkit-text-fill-color: currentColor !important; font-weight: 800; }
html[data-theme] body .niwwi-today { color: var(--nw-muted); }
html[data-theme] body .niwwi-today b { color: var(--nw-ink); }

/* Phone bottom bar. */
html[data-theme] body .mova-mobile-bottom-nav {
  background: var(--nw-side) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: var(--nw-shadow-pop) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
html[data-theme] body .mova-mobile-bottom-nav button { color: var(--nw-muted) !important; background: transparent !important; }
html[data-theme] body .mova-mobile-bottom-nav button.active {
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  border-radius: var(--nw-r-control) !important;
}
html[data-theme] body .mova-mobile-bottom-nav [data-mobile-register] > span:first-child {
  background: var(--nw-accent) !important;
  color: var(--nw-accent-ink) !important;
  border-radius: var(--nw-r-control) !important;
  box-shadow: var(--nw-shadow) !important;
}
html[data-theme] body .niwwi-ai-ears { display: none !important; }
html[data-theme] body .mova-ai-chat-launcher {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: var(--nw-shadow-pop) !important;
  color: var(--nw-ink) !important;
}
html[data-theme] body .mova-mobile-bottom-nav .mova-ai-chat-launcher { box-shadow: none !important; border-color: transparent !important; background: transparent !important; }
html[data-theme] body .mova-ai-chat-launcher::before { display: none !important; }

/* Modals and the AI panel. */
html[data-theme] .modal {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: 18px !important;
  box-shadow: var(--nw-shadow-pop) !important;
}
html[data-theme] .modal-backdrop { background: var(--nw-scrim) !important; backdrop-filter: none !important; }
html[data-theme] .mova-ai-chat-panel {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  box-shadow: var(--nw-shadow-pop) !important;
}
html[data-theme] .mova-ai-chat-head { background: var(--nw-surface) !important; border-color: var(--nw-line) !important; backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
html[data-theme] .mova-ai-quick-prompts button {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-control) !important;
  color: var(--nw-ink) !important;
}
html[data-theme] .mova-ai-message-body { border-radius: 14px !important; box-shadow: none !important; border-color: var(--nw-line) !important; }
html[data-theme] .mova-ai-message.assistant .mova-ai-message-body { background: var(--nw-surface-2) !important; color: var(--nw-ink) !important; }
html[data-theme] body .mova-ai-chat-send:disabled { background: var(--nw-surface-2) !important; color: var(--nw-muted) !important; border-color: transparent !important; box-shadow: none !important; }
html[data-theme] body .mova-ai-chat-composer { background: var(--nw-surface) !important; border-color: var(--nw-line-strong) !important; box-shadow: none !important; }
html[data-theme] .mova-ai-message.user .mova-ai-message-body { background: var(--nw-accent) !important; color: var(--nw-accent-ink) !important; }

/* ------------------------------------------------- Gamer cute character */

/* Window chrome: panels carry a thin title strip, drawn inside the existing
   top padding so nothing below it moves. */
html[data-appearance="kawaii"] {
  --nw-chrome: color-mix(in srgb, var(--nw-accent) 14%, var(--nw-surface));
}
html[data-appearance="kawaii"][data-theme="dark"] {
  --nw-chrome: color-mix(in srgb, var(--nw-accent) 16%, var(--nw-surface));
}
html[data-appearance="kawaii"][data-theme] body #app #page :is(.card, .simple-kpi, .account-card, .debt-account-card, .saving-goal-card,
  .catalog-card, .settings-account-card, .recurring-subscription-card, .registry-type-card, .registry-business-panel,
  .dashboard-platform-activity, .accounts-current-summary):not(.settings-credit-card, .company-theme-card, .accounts-current-summary, .savings-summary-grid > .total, :is(.card, .simple-kpi) :is(.card, .simple-kpi)) {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    var(--nw-surface) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    var(--nw-accent-soft) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi.negative {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    var(--nw-neg-soft) !important;
}
/* Small labels speak in the pixel face; numbers and sentences never do. */
html[data-appearance="kawaii"] body :is(#page .kpi-label, #page .section-label, #page .eyebrow, .sidebar .nav-label,
  #page .registry-type-summary small, #page .niwwi-page-header small) {
  font-family: var(--nw-font-label) !important;
  font-weight: 500 !important;
  letter-spacing: 0.04em !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page .kpi-label :is(.niwwi-help-trigger, button) { font-family: inherit !important; letter-spacing: inherit !important; }
html[data-appearance="kawaii"][data-theme] body #app #page .dashboard-kpis > .simple-kpi > .kpi-label { color: var(--nw-muted) !important; }
/* The register key is the one lit button on the desk. */
html[data-appearance="kawaii"] body .mova-mobile-bottom-nav [data-mobile-register] > span:first-child {
  background: var(--nw-led) !important;
  color: var(--nw-led-ink) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page .niwwi-page-header {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    var(--nw-surface) !important;
}

/* -------------------------------------------------- the light strip (LED) */

/* A thin light under the header. Formal keeps it dark until something
   happens; Gamer cute leaves it softly on. It answers three moments:
   Niwwi AI thinking, a save landing, and the ¿me alcanza? verdict. */
html[data-theme] body .topbar::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -1px;
  height: 2px;
  pointer-events: none;
  background: linear-gradient(90deg, var(--nw-led-a), var(--nw-led-b));
  opacity: var(--nw-led-idle);
  transition: opacity 240ms var(--nw-ease-out), background-color 240ms ease;
}
html[data-appearance="kawaii"] body .topbar::after { height: 3px; opacity: 0.85; }
html[data-theme] body .topbar[data-nw-led="ai"]::after {
  opacity: 1;
  background: linear-gradient(90deg, transparent 0 30%, var(--nw-led-a) 45%, var(--nw-led-b) 55%, transparent 70% 100%) 0 0 / 300% 100%, color-mix(in srgb, var(--nw-led-a) 25%, transparent);
  animation: nw-led-run 1.1s linear infinite;
}
html[data-theme] body .topbar[data-nw-led="saved"]::after { opacity: 1; background: var(--nw-pos); }
html[data-theme] body .topbar[data-nw-led="yes"]::after { opacity: 1; background: var(--nw-pos); }
html[data-theme] body .topbar[data-nw-led="tight"]::after { opacity: 1; background: var(--nw-warn); }
html[data-theme] body .topbar[data-nw-led="no"]::after { opacity: 1; background: var(--nw-neg); }
@keyframes nw-led-run { from { background-position: 100% 0, 0 0; } to { background-position: 0 0, 0 0; } }

/* ------------------------------------------------ colour and light pass */

/* Rena (19 oct): more colour, titles that shine, numbers that stand out,
   buttons that glow at night. Colour still means something: violet is
   Niwwi, the hero card is "what's left this month", pink is OnlyFans. */
html[data-theme="light"]:not([data-appearance="kawaii"]) {
  --nw-title-grad: linear-gradient(100deg, #3A21A8 0%, #6B3FD8 48%, #B4386F 100%);
  --nw-hero-bg: linear-gradient(135deg, #36209E 0%, #5B3FD0 52%, #8E3BB0 100%);
  --nw-hero-neg: linear-gradient(135deg, #7E1F37 0%, #B02E45 55%, #C9475C 100%);
  --nw-hero-of: #FFD3EA;
  --nw-bar-grad: linear-gradient(90deg, #5B3FD0, #B4386F);
  --nw-glow: rgba(91, 63, 208, 0.34);
  --nw-led-idle: 0.9;
}
html[data-theme="dark"]:not([data-appearance="kawaii"]) {
  --nw-title-grad: linear-gradient(100deg, #EEE9FF 0%, #C4B7FF 45%, #F2A1C8 100%);
  --nw-hero-bg: linear-gradient(135deg, #3D2BB0 0%, #5F45D6 50%, #9A44B0 100%);
  --nw-hero-neg: linear-gradient(135deg, #6E1B33 0%, #A12B44 55%, #BD4459 100%);
  --nw-hero-of: #FFD3EA;
  --nw-bar-grad: linear-gradient(90deg, #AE9CFF, #F2A1C8);
  --nw-glow: rgba(174, 156, 255, 0.5);
  --nw-led-idle: 1;
}
html[data-appearance="kawaii"][data-theme="light"] {
  --nw-title-grad: linear-gradient(100deg, #5128D0 0%, #8A3FE0 45%, #D9408F 100%);
  --nw-hero-bg: linear-gradient(135deg, #5A2FE0 0%, #8C3FD8 52%, #C93D8E 100%);
  --nw-hero-neg: linear-gradient(135deg, #7E1F44 0%, #A82A5A 55%, #C23E6E 100%);
  --nw-hero-of: #FFE0F1;
  --nw-bar-grad: linear-gradient(90deg, #6236E8, #E0559F);
  --nw-glow: rgba(240, 109, 184, 0.4);
}
html[data-appearance="kawaii"][data-theme="dark"] {
  --nw-title-grad: linear-gradient(100deg, #EEE6FF 0%, #C9B2FF 45%, #FFB3DA 100%);
  --nw-hero-bg: linear-gradient(135deg, #4A35C9 0%, #7E46CF 50%, #C24A92 100%);
  --nw-hero-neg: linear-gradient(135deg, #6E1B3A 0%, #9E2B52 55%, #BA4468 100%);
  --nw-hero-of: #FFD9EC;
  --nw-bar-grad: linear-gradient(90deg, #C9B2FF, #FFB3DA);
  --nw-glow: rgba(255, 179, 218, 0.5);
}

/* Page titles: Niwwi's gradient, with one soft shine when the page opens. */
html[data-theme][data-theme] body #app #page .niwwi-title-copy {
  background-image: linear-gradient(100deg, transparent 38%, rgba(255, 255, 255, 0.85) 50%, transparent 62%), var(--nw-title-grad) !important;
  background-size: 260% 100%, 100% 100% !important;
  background-repeat: no-repeat !important;
  background-position: 130% 0, 0 0;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  color: transparent !important;
  -webkit-text-fill-color: transparent !important;
  animation: nw-title-shine 1.5s var(--nw-ease-out) 0.15s 1 both;
}
@keyframes nw-title-shine { from { background-position: 130% 0, 0 0; } to { background-position: -30% 0, 0 0; } }
html[data-theme][data-theme] body #app #page .niwwi-title-symbol {
  background: var(--nw-hero-bg) !important;
  color: #FFFFFF !important;
  box-shadow: 0 8px 20px -10px var(--nw-glow) !important;
}
/* A soft colour wash in the corner of every page header. */
html[data-theme][data-theme] body #app #page .niwwi-page-header {
  background:
    radial-gradient(85% 120% at 100% 0%, color-mix(in srgb, var(--nw-accent) 15%, transparent), transparent 62%),
    radial-gradient(55% 90% at 78% 110%, color-mix(in srgb, var(--nw-helion) 11%, transparent), transparent 60%),
    var(--nw-surface) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page .niwwi-page-header {
  background:
    linear-gradient(var(--nw-chrome), var(--nw-chrome)) top / 100% 7px no-repeat,
    linear-gradient(var(--nw-line), var(--nw-line)) 0 7px / 100% 1px no-repeat,
    radial-gradient(85% 120% at 100% 0%, color-mix(in srgb, var(--nw-accent) 18%, transparent), transparent 62%),
    radial-gradient(55% 90% at 78% 110%, color-mix(in srgb, var(--nw-led) 16%, transparent), transparent 60%),
    var(--nw-surface) !important;
}

/* Section titles get a short gradient bar again. */
html[data-theme][data-theme] body #app #page :is(.simple-section-head, .section-title-row, .history-section-head, .analysis-card-head, .section-heading, .preference-section-head, .settings-section-head) h2::after {
  content: "" !important;
  display: block !important;
  width: 28px !important;
  height: 3px !important;
  margin-top: 8px !important;
  border-radius: 2px !important;
  background: var(--nw-bar-grad) !important;
  position: static !important;
  opacity: 1 !important;
}

/* Inicio: labels in colour, the total in Niwwi violet. */
html[data-theme][data-theme] body #app #page .money-overview-kpis > .simple-kpi > .kpi-label,
html[data-theme][data-theme] body #app #page.general-dashboard-page .dashboard-kpis > article.simple-kpi > .kpi-label,
html[data-appearance="kawaii"][data-theme] body #app #page .dashboard-kpis > .simple-kpi > .kpi-label { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app #page .money-overview-kpis .account-balance-kpi > .simple-value { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app #page .money-position-card .niwwi-monthly-stages strong,
html[data-theme][data-theme] body #app #page .money-position-card > div strong { color: var(--nw-accent-text) !important; }

/* "Disponible del mes" is the hero: Niwwi's colour, white figures. Its own
   palette is set on the card, so everything inside follows it. */
html[data-theme][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi,
html[data-theme][data-theme] body #app #page .money-position-card .money-position-trigger {
  --nw-ink: #FFFFFF;
  --nw-muted: rgba(255, 255, 255, 0.8);
  --nw-line: rgba(255, 255, 255, 0.2);
  --nw-line-strong: rgba(255, 255, 255, 0.42);
  --nw-surface: rgba(255, 255, 255, 0.1);
  --nw-surface-2: rgba(255, 255, 255, 0.12);
  --nw-accent-soft: rgba(255, 255, 255, 0.16);
  --nw-accent-text: #FFFFFF;
  --nw-pos: #A8F5D2;
  --nw-neg: #FFC9D2;
  --nw-chrome: rgba(255, 255, 255, 0.16);
  --text: #FFFFFF;
  --muted: rgba(255, 255, 255, 0.8);
  color: #FFFFFF !important;
  background: var(--nw-hero-bg) !important;
  border-color: transparent !important;
  box-shadow: 0 18px 40px -20px var(--nw-glow), inset 0 1px 0 rgba(255, 255, 255, 0.16) !important;
}
html[data-theme][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi.negative { background: var(--nw-hero-neg) !important; }
html[data-appearance="kawaii"][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi {
  background:
    linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16)) top / 100% 7px no-repeat,
    var(--nw-hero-bg) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi.negative {
  background:
    linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16)) top / 100% 7px no-repeat,
    var(--nw-hero-neg) !important;
}
html[data-theme][data-theme] body #app #page.general-dashboard-page .money-overview-kpis > article.niwwi-spendable-kpi > .kpi-label { color: #FFFFFF !important; }
/* OnlyFans' estimate sits in its own pink-lit box inside the hero. */
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi .niwwi-monthly-stages .niwwi-monthly-of {
  background: rgba(255, 255, 255, 0.12) !important;
  border: 1px solid rgba(255, 255, 255, 0.18) !important;
  border-radius: var(--nw-r-control) !important;
  padding: 12px 14px !important;
  margin-top: 12px;
}
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi .niwwi-monthly-of strong { color: var(--nw-hero-of) !important; }
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi :is(.secondary, .niwwi-panorama-open) {
  background: rgba(255, 255, 255, 0.95) !important;
  color: #3A21A8 !important;
  border-color: transparent !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page .niwwi-spendable-kpi :is(.secondary, .niwwi-panorama-open) { color: #5128D0 !important; }
html[data-theme][data-theme] body #app #page .money-position-card .money-position-trigger :is(small, strong, span) { color: #FFFFFF !important; }

/* Bars take the gradient; income and spending keep green and red. */
html[data-theme][data-theme] body #app #page .category-list i { background: var(--nw-bar-grad) !important; }

/* Buttons that lead: a coloured lift by day, a glow at night. */
html[data-theme="light"] body :is(#page, .modal, .mova-ai-chat, .login-card) :is(.primary, .primary-action, .registry-save, .registry-ai-action):not(:disabled) { box-shadow: 0 8px 18px -10px var(--nw-glow) !important; }
html[data-theme="dark"] body :is(#page, .modal, .mova-ai-chat, .login-card) :is(.primary, .primary-action, .registry-save, .registry-ai-action):not(:disabled) {
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--nw-accent) 55%, transparent), 0 8px 26px -8px var(--nw-glow) !important;
}
html[data-theme="dark"] body #app #page :is(.segmented, .dashboard-mode, .dashboard-switcher, .dashboard-business-switcher, .business-context-switcher,
  .mova-dashboard-mode-switch, .analysis-tabs, .registry-visualizer-tabs, .registry-visual-tabs, .debt-filter-bar, .history-quick-ranges, .analysis-period-switcher,
  .analysis-business-switcher, .analysis-view-tabs, .forecast-scenario-switch, .calendar-focus-switch, .registry-ledger-mode, .settings-tabs,
  .niwwi-workbook-tabs, .helion-view-tabs, .fv-business-switcher, .annual-mode-tabs, .affordability-scenarios) > button:is(.active, [aria-pressed="true"], [aria-selected="true"]) {
  border-color: color-mix(in srgb, var(--nw-accent) 55%, transparent) !important;
  box-shadow: 0 0 16px -4px var(--nw-glow) !important;
}
html[data-theme="dark"] body .mova-mobile-bottom-nav button.active,
html[data-theme="dark"][data-theme] body #app .sidebar :is(.nav-item, .nav-subitem).active {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nw-accent) 35%, transparent), 0 0 18px -6px var(--nw-glow) !important;
}
/* Registrar, the one key that's always lit: at night its glow pulses three
   times when the bar appears, then stays lit and still (no endless blur
   animation on the bottom bar). Reduced motion: lit and still from the start. */
html[data-theme] body .mova-mobile-bottom-nav [data-mobile-register] { position: relative; isolation: isolate; }
html[data-theme] body .mova-mobile-bottom-nav [data-mobile-register] > span:first-child { position: relative; z-index: 1; box-shadow: 0 8px 18px -8px var(--nw-glow) !important; }
html[data-theme="dark"] body .mova-mobile-bottom-nav [data-mobile-register]::before {
  content: "";
  position: absolute;
  z-index: 0;
  left: 50%;
  top: 6px;
  width: 44px;
  height: 36px;
  margin-left: -22px;
  border-radius: 14px;
  background: var(--nw-glow);
  filter: blur(10px);
  opacity: 0.55;
  pointer-events: none;
  animation: nw-breathe 3.2s ease-in-out 3;
}
/* Each pulse keeps today's depth (0.35 to 0.85) but starts and ends on the
   resting glow, so the last one settles exactly on the still state. */
@keyframes nw-breathe { 0%, 100% { opacity: 0.55; } 25% { opacity: 0.35; } 70% { opacity: 0.85; } }

/* The same light on the other screens: each one's main figure gets the
   hero card (Cuentas: total in accounts; Ahorros: total saved). */
html[data-theme][data-theme] body #app #page .accounts-current-summary,
html[data-theme][data-theme] body #app #page .savings-summary-grid > article.total {
  --nw-ink: #FFFFFF;
  --nw-muted: rgba(255, 255, 255, 0.8);
  --nw-line: rgba(255, 255, 255, 0.2);
  --nw-accent-text: #FFFFFF;
  --text: #FFFFFF;
  --muted: rgba(255, 255, 255, 0.8);
  color: #FFFFFF !important;
  background: var(--nw-hero-bg) !important;
  border-color: transparent !important;
  box-shadow: 0 18px 40px -20px var(--nw-glow), inset 0 1px 0 rgba(255, 255, 255, 0.16) !important;
}
html[data-appearance="kawaii"][data-theme] body #app #page :is(.accounts-current-summary, .savings-summary-grid > article.total) {
  background:
    linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16)) top / 100% 7px no-repeat,
    var(--nw-hero-bg) !important;
}
html[data-theme][data-theme] body #app #page :is(.accounts-current-summary, .savings-summary-grid > article.total) > :is(span, strong, b) { color: #FFFFFF !important; }
html[data-theme][data-theme] body #app #page :is(.accounts-current-summary, .savings-summary-grid > article.total) > small { color: rgba(255, 255, 255, 0.8) !important; }

/* Summary tiles: the label in Niwwi's colour, so not everything is black or white. */
html[data-theme][data-theme] body #app #page :is(.savings-summary-grid > article:not(.total), .analysis-forecast-summary > article, .movement-summary-strip > article) > span,
html[data-theme][data-theme] body #app #page .registry-kpi.remaining > small { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app #page .analysis-forecast-summary > article:first-child > b { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app #page .savings-summary-grid > article:not(.total) > b { color: var(--nw-ink) !important; }

/* Progress bars take the same gradient as the category bars on Inicio. */
html[data-theme][data-theme] body #app #page :is(.debt-progress, .saving-progress, .goal-progress) > i { background: var(--nw-bar-grad) !important; }

/* Planeación: the note under the editable amount is a sentence, not a label. */
html[data-theme][data-theme] body #app #page .planned-opening-edit > small {
  text-transform: none !important;
  letter-spacing: 0 !important;
  font-size: 12.5px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
  color: var(--nw-muted) !important;
}
/* Real: the three steps under "Cuéntale a Niwwi" are readable. */
html[data-theme][data-theme] body #app #page .registry-ai-review-badge {
  display: block !important;
  width: fit-content;
  max-width: 100%;
  font-size: 12px !important;
  line-height: 1.6 !important;
  white-space: normal !important;
  text-wrap: balance;
  border-radius: 10px !important;
  padding: 4px 10px !important;
}
html[data-theme][data-theme] body #app #page .registry-ai-review-badge svg { display: inline-block !important; width: 12px; height: 12px; vertical-align: -1px; }

/* ---------------------------------------------- press and hover (Emil) */

html[data-theme] body :is(button, summary, [role="button"], label.mova-ai-tool-button, .nav-item, .nav-subitem) {
  -webkit-tap-highlight-color: transparent;
}
/* Every pressable answers the finger: a quick, small press. */
html[data-theme] body :is(button, summary, [role="button"], label.mova-ai-tool-button):not(:disabled) {
  transition:
    transform var(--nw-press) var(--nw-ease-out),
    background-color var(--nw-quick) ease,
    border-color var(--nw-quick) ease,
    color var(--nw-quick) ease,
    box-shadow var(--nw-quick) ease,
    opacity var(--nw-quick) ease !important;
}
html[data-theme] body :is(button, summary, [role="button"], label.mova-ai-tool-button):not(:disabled):active {
  transform: scale(0.97) !important;
}
/* Wide rows and whole cards press less, or the edges travel too far. */
html[data-theme] body #page :is(.movement-ledger-row, .registry-type-summary, .money-position-trigger, .simple-kpi, .card, .smart-calendar .day, details > summary.money-position-trigger, .nw-inicio-q, .nw-inicio-hero-main, .nw-inicio-duo > button):not(:disabled):active {
  transform: scale(0.99) !important;
}
/* Nothing lifts or slides on hover; hover only changes colour, and only
   where a real pointer exists, so nothing sticks after a tap. */
html[data-theme] body :is(button, summary, [role="button"], .nav-item, .card):hover:not(:active) { transform: none !important; }
html[data-theme] body :is(button, summary, [role="button"]):hover { filter: none !important; }
@media (hover: hover) and (pointer: fine) {
  html[data-theme] body :is(#page, .modal, .side-foot, .niwwi-preferences) :is(.secondary, .subtle-button, .action-btn, .filter):not(.danger, .primary-action, :disabled):hover {
    background: var(--nw-accent-soft) !important;
    border-color: var(--nw-accent) !important;
  }
  html[data-theme] body :is(.primary, .primary-action, .registry-save, .registry-ai-action):not(:disabled):hover {
    background: color-mix(in srgb, var(--nw-accent) 88%, var(--nw-ink)) !important;
  }
  html[data-theme][data-theme] body #app .sidebar :is(.nav-item, .nav-subitem):not(.active):hover { background: var(--nw-surface-2) !important; }
  html[data-theme][data-theme] body #app #page :is(.segmented, .dashboard-mode, .business-context-switcher, .registry-visual-tabs, .debt-filter-bar, .history-quick-ranges, .analysis-business-switcher, .analysis-view-tabs, .forecast-scenario-switch, .calendar-focus-switch, .analysis-period-switcher) > button:not(.active, [aria-selected="true"], [aria-pressed="true"]):hover { color: var(--nw-ink) !important; }
  html[data-theme] body #page :is(.movement-ledger-row, .list-row, .registry-type-summary, .history-toggle):hover { background: var(--nw-surface-2) !important; }
}
@media (hover: none) {
  html[data-theme] body :is(button, summary, [role="button"], .nav-item):hover { box-shadow: inherit; }
}

/* Phone bar: one highlight that slides to the chosen tab. The bar itself
   never re-renders, so the move is a plain transition. */
@media (max-width: 760px) {
  html[data-theme] body .mova-mobile-bottom-nav::before {
    content: "";
    position: absolute;
    top: 7px;
    bottom: 7px;
    left: 7px;
    width: calc((100% - 14px) / 5);
    border-radius: var(--nw-r-control);
    background: var(--nw-accent-soft);
    opacity: 0;
    transform: translateX(0);
    transition: transform 240ms var(--nw-ease-out), opacity var(--nw-quick) ease;
    pointer-events: none;
  }
  html[data-theme] body .mova-mobile-bottom-nav:has(> button:nth-child(1).active)::before { opacity: 1; transform: translateX(0); }
  html[data-theme] body .mova-mobile-bottom-nav:has(> button:nth-child(2).active)::before { opacity: 1; transform: translateX(100%); }
  html[data-theme] body .mova-mobile-bottom-nav:has(> button:nth-child(3).active)::before { opacity: 1; transform: translateX(200%); }
  html[data-theme] body .mova-mobile-bottom-nav:has(> button:nth-child(4).active)::before { opacity: 1; transform: translateX(300%); }
  html[data-theme] body .mova-mobile-bottom-nav button.active { background: transparent !important; }
  html[data-theme] body .mova-mobile-bottom-nav > * { position: relative; z-index: 1; }
}

/* Overlays enter from just below their resting place; the modal stays
   centred. Entrances only, nothing loops. */
html[data-theme] .modal-backdrop:not(.hidden) .modal {
  animation: nw-pop-in 200ms var(--nw-ease-out) both;
}
html[data-theme] .toast.show,
html[data-theme] .toast.visible {
  animation: nw-sticker-in 220ms var(--nw-ease-out) both;
}
@keyframes nw-pop-in { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: none; } }
@keyframes nw-sticker-in { from { opacity: 0; transform: translateY(8px) scale(0.96); } to { opacity: 1; transform: none; } }

/* --------------------------------------------------------- focus & scroll */

html[data-theme] :focus-visible {
  outline: 2px solid var(--nw-accent) !important;
  outline-offset: 2px !important;
}
html[data-theme] { scrollbar-color: var(--nw-line-strong) transparent; }
html[data-theme] ::-webkit-scrollbar-thumb { background: var(--nw-line-strong); }
html[data-theme] ::-webkit-scrollbar-thumb:hover { background-color: var(--nw-muted); }

/* ----------------------------------------------------------------- motion */

@media (prefers-reduced-motion: reduce) {
  html[data-theme] *, html[data-theme] *::before, html[data-theme] *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* ==== Revisión de detalle G ==== */

/* G · Page headers on every screen except Inicio ("Mis Finanzas", which keeps
   its own layout). Only the header's own buttons are touched: the Presupuesto /
   Hoy / Cierre switch of the Personal, Helion and Virtuality dashboards stays
   as it is. */

/* D04 · Every header button is the same 44 px tall, the violet one included. */
html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(button, .action-btn),
html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(.csv-actions, .modal-actions, .account-settings-head-actions) > :is(button, .action-btn) {
  min-height: 44px !important;
  height: 44px !important;
}
/* An empty actions row (Análisis) leaves no gap under the subtitle. */
html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions:empty { display: none !important; }

@media (max-width: 760px) {
  /* A10 · B32 · C08 · D02 · D03 · One column, one left edge: icon + title,
     subtitle and buttons all start where the panel's padding starts. No
     second flex column (the old wrap sent "Revisar aperturas" off the right
     edge in Niwwi AI). */
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header {
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    text-align: left !important;
    /* Gamer cute kept a 158 px floor from the old mascot room; the header now
       ends where its content ends, as in Formal (Análisis had 60 px of air). */
    min-height: 0 !important;
  }
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header > div:first-child {
    flex: 0 0 auto !important;
    width: 100% !important;
    margin-inline: 0 !important;
    text-align: left !important;
  }
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .niwwi-page-title { justify-content: flex-start !important; }
  /* C08 · D04 · Buttons fill their row and share one size: one per row, full
     width, 8 px apart, in their original order. */
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions {
    display: flex !important;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    align-items: flex-start !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    margin: 0 !important;
  }
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(button, .action-btn, .csv-actions, .modal-actions, .account-settings-head-actions) {
    align-self: stretch !important;
    flex: 0 0 auto !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
  }
  /* Grouped buttons (Exportar CSV, Transferir / Nueva cuenta, Conciliar
     saldos / Nueva cuenta) follow the same column. */
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(.csv-actions, .modal-actions, .account-settings-head-actions) {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    gap: 8px !important;
    padding: 0 !important;
  }
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(button, .action-btn),
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) .niwwi-page-header .head-actions > :is(.csv-actions, .modal-actions, .account-settings-head-actions) > :is(button, .action-btn) {
    flex: 0 0 auto !important;
    width: 100% !important;
    justify-content: center !important;
    margin: 0 !important;
  }
}
/* ==== fin G ==== */

/* ==== Revisión de detalle A ==== */

/* A01 · Inicio · Total de dinero · «Ver detalle»: aire a los lados y esquinas redondeadas. */
html[data-theme][data-theme] body #app #page .account-balance-kpi > .money-summary-detail {
  border-radius: var(--nw-r-control) !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page .account-balance-kpi > .money-summary-detail > summary {
  padding: 12px 14px 12px 16px !important;
  min-height: 44px;
}
html[data-theme][data-theme] body #app #page .account-balance-kpi > .money-summary-detail > small {
  margin-top: 0 !important;
  padding: 0 16px 12px;
}

/* A02 · Inicio · Disponible del mes · «Ver cálculo y pagos»: franja redondeada, sin línea superior. */
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi > .niwwi-spendable-detail {
  border-top: 0 !important;
  border-radius: var(--nw-r-control) !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi > .niwwi-spendable-detail > summary {
  padding: 12px 14px 12px 16px !important;
}
html[data-theme][data-theme] body #app #page .niwwi-spendable-kpi > .niwwi-spendable-detail > div {
  padding: 0 16px 14px;
}

/* A07 · Inicio · bloque morado «Disponible del mes»: sin el rectángulo gris detrás. */
html[data-theme][data-theme] body #app #page .money-position-card > .niwwi-spendable-detail {
  background: transparent !important;
  border-radius: var(--nw-r-card) !important;
}

/* A08 · Inicio · Total de dinero · renglones: un solo separador (abajo) por renglón. */
html[data-theme][data-theme] body #app #page .account-balance-kpi .niwwi-money-breakdown {
  gap: 0 !important;
}
html[data-theme][data-theme] body #app #page .account-balance-kpi .niwwi-money-breakdown > .kpi-secondary-line {
  border-top: 0 !important;
  padding-block: 8px !important;
}

/* A30 · Inicio · Cobros pendientes / Compromisos firmes: sin hueco entre cifra y nota. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .money-overview-kpis > :is(.receivable-kpi, .commitment-kpi) {
    min-height: 0 !important;
  }
  html[data-theme][data-theme] body #app #page .money-overview-kpis > :is(.receivable-kpi, .commitment-kpi) > small {
    margin-top: 0 !important;
  }
}

/* A32 · Inicio · OnlyFans · «Ver por modelo» y «Ver cálculo» arrancan en el mismo punto. */
html[data-theme][data-theme] body #app #page .dashboard-platform-activity .platform-disclosures .niwwi-action-icon {
  display: none !important;
}

/* A41 · Segmentados que llenan su caja en el teléfono. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .dashboard-top .contextual-dashboard-mode {
    width: 100% !important;
  }
  html[data-theme][data-theme] body #app #page .dashboard-top .contextual-dashboard-mode > button {
    flex: 1 1 auto !important;
  }
  html[data-theme][data-theme] body #app #page .fv-history-toolbar .analysis-period-switcher > button {
    flex: 1 1 0 !important;
  }
}

/* A43 · Inicio · Movimientos recientes: sin línea bajo el último renglón.
   En el teléfono la lista (máximo 6) ya no se corta en un desplazamiento interno,
   así la tarjeta termina en el último movimiento y no en un separador. */
html[data-theme][data-theme] body #app #page .spending-list > .spending-row:last-child {
  border-bottom: 0 !important;
}
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page.general-dashboard-page .spending-section .spending-list {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
  }
}

/* A09 · Panorama, Análisis y ¿Me alcanza?: etiquetas y cifras de una fila a la misma altura. */
html[data-theme][data-theme] body #app #page :is(.registry-visualizer .registry-summary > .registry-kpi, .analysis-forecast-summary > article, .affordability-summary > article) {
  justify-content: flex-start !important;
}
/* Con subgrid, etiqueta, cifra y nota comparten renglón con las tarjetas vecinas:
   si una etiqueta ocupa dos líneas, las cifras de esa fila siguen a la misma altura. */
@supports (grid-template-rows: subgrid) {
  html[data-theme][data-theme] body #app #page :is(.registry-visualizer .registry-summary > .registry-kpi, .analysis-forecast-summary > article, .affordability-summary > article) {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: subgrid;
    grid-row: span 3;
    align-content: start;
    min-height: 0 !important;
  }
  html[data-theme][data-theme] body #app #page .registry-visualizer .registry-summary > .registry-kpi { row-gap: 9px; }
  html[data-theme][data-theme] body #app #page .analysis-forecast-summary > article { row-gap: 7px; }
  html[data-theme][data-theme] body #app #page .affordability-summary > article { row-gap: 8px; }
}

/* A11 · Historial, Análisis y ¿Me alcanza?: selector de área en una fila deslizable. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .analysis-business-switcher {
    flex-wrap: nowrap !important;
    overflow-x: auto;
    scrollbar-width: none;
  }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher::-webkit-scrollbar { display: none; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher > button {
    flex: 0 0 auto !important;
  }
  /* La activa siempre a la vista: si es de las últimas, la fila arranca desde el final
     (mismo orden visual; row-reverse + order invertido solo cambia dónde inicia el desplazamiento). */
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) {
    flex-direction: row-reverse !important;
  }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(1) { order: 1; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(2) { order: 2; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(3) { order: 3; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(4) { order: 4; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(5) { order: 5; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(6) { order: 6; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(7) { order: 7; }
  html[data-theme][data-theme] body #app #page .analysis-business-switcher:has(> button:nth-last-child(-n+2).active):not(:has(> button:nth-last-child(9))) > button:nth-last-child(8) { order: 8; }
}

/* A12 · Historial · rangos rápidos en una fila deslizable, sin cortar palabras. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges {
    flex-wrap: nowrap !important;
    overflow-x: auto;
    scrollbar-width: none;
  }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges::-webkit-scrollbar { display: none; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges > button {
    flex: 0 0 auto !important;
    white-space: nowrap !important;
  }
  /* Mes anterior / Este año / Todo activos: la fila arranca desde el final, mismo orden visual. */
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) {
    flex-direction: row-reverse !important;
  }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(1) { order: 1; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(2) { order: 2; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(3) { order: 3; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(4) { order: 4; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(5) { order: 5; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(6) { order: 6; }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges:has(> button:nth-last-child(-n+3).active):not(:has(> button:nth-last-child(8))) > button:nth-last-child(7) { order: 7; }
}

/* A20 · Historial · tarjetas de cifras: la cifra justo debajo de su etiqueta. */
html[data-theme][data-theme] body #app #page .history-kpis > .history-kpi {
  justify-content: flex-start !important;
  gap: 8px !important;
  min-height: 0 !important;
}

/* A21 · Historial · movimientos: cifra en su columna a la derecha y flecha con su cuadrito. */
@media (max-width: 480px) {
  html[data-theme][data-theme] body #app #page .fv-history-view .history-ledger-row {
    grid-template-columns: 28px minmax(0, 1fr) auto !important;
  }
  html[data-theme][data-theme] body #app #page .fv-history-view .history-ledger-row > strong {
    grid-column: 3 !important;
    grid-row: 1 !important;
    justify-self: end !important;
    align-self: center;
    white-space: nowrap;
  }
}
html[data-theme][data-theme] body #app #page .fv-history-view .history-ledger-row > .ledger-icon {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: var(--nw-r-control);
  background: var(--nw-surface-2) !important;
}

/* A22 · Historial · resumen del mes: aire entre columnas y «OCT» con su cuadrito. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-history-view .history-month-summary {
    column-gap: 24px !important;
  }
}
html[data-theme][data-theme] body #app #page .fv-history-view .history-month-name > span {
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
}

/* A23 · Historial · buscador con un solo marco. */
html[data-theme][data-theme] body #app #page .fv-history-view .history-search input {
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  padding-inline: 0 !important;
  text-overflow: ellipsis;
}

/* A24 · Historial · «Exportar CSV» del tamaño de su texto. */
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-export {
  width: auto !important;
  border-radius: var(--nw-r-control) !important;
  padding-inline: 16px !important;
}
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-export { align-self: flex-start; }
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-export > svg {
  color: currentColor !important;
}

/* A36 · Análisis · «Mes analizado» al mismo borde que el resto de la tarjeta. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .forecast-toolbar .analysis-horizon {
    padding-inline: 0 !important;
  }
}

/* A39 · ¿Me alcanza? · pagos: nombre y cifra arriba, la fecha a todo el ancho debajo. */
html[data-theme][data-theme] body #app #page .affordability-payment {
  row-gap: 4px !important;
}
html[data-theme][data-theme] body #app #page .affordability-payment > div { display: contents; }
html[data-theme][data-theme] body #app #page .affordability-payment > div > b { grid-area: 1 / 1; }
html[data-theme][data-theme] body #app #page .affordability-payment > strong { grid-area: 1 / 2; }
html[data-theme][data-theme] body #app #page .affordability-payment > div > small { grid-column: 1 / -1; }
html[data-theme][data-theme] body #app #page .affordability-payment > label {
  grid-column: 1 / -1;
  margin-top: 4px;
}

/* ==== fin A ==== */

/* ==== Revisión de detalle B ==== */

/* B01 · Movimientos: the search box is the field; the input inside has no frame of its own. */
html[data-theme][data-theme] body #app #page .movement-search {
  height: 48px !important;
  padding: 0 12px !important;
}
html[data-theme][data-theme] body #app #page .movement-search input {
  border: 0 !important;
  background: transparent !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  outline: none !important;
  min-height: 0 !important;
  height: 100% !important;
  padding: 0 !important;
  font-size: 16px !important;
  text-overflow: ellipsis;
}
html[data-theme][data-theme] body #app #page .movement-search:focus-within {
  border-color: var(--nw-accent) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--nw-accent) 22%, transparent) !important;
}
html[data-theme][data-theme] body #app #page .movement-search > span {
  flex: 0 0 18px !important;
  width: 18px !important;
  display: grid !important;
  place-items: center;
}
html[data-theme][data-theme] body #app #page .movement-search > span svg { width: 18px !important; height: 18px !important; max-width: none !important; }
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .movement-search { height: 40px !important; }
  html[data-theme][data-theme] body #app #page .movement-search input { font-size: 14px !important; }
}

/* B04 · Movimientos y Calendario (phone): filters in two columns, same order; search and «Más filtros» full width. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page :is(.movement-primary-filters, .calendar-filter-toolbar) {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    column-gap: 10px !important;
  }
  html[data-theme][data-theme] body #app #page .movement-primary-filters > :is(.movement-search, .secondary) { grid-column: 1 / -1 !important; }
  html[data-theme][data-theme] body #app #page :is(.movement-primary-filters, .calendar-filter-toolbar) select {
    padding-left: 12px !important;
    padding-right: 8px !important;
    text-overflow: ellipsis;
  }
}

/* B38 · Movimientos y Calendario (computer): filter text at 14px and «Más filtros» as tall as the selects. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page :is(.movement-primary-filters, .calendar-filter-toolbar) select { font-size: 14px !important; }
  html[data-theme][data-theme] body #app #page .movement-primary-filters > .secondary { height: 40px !important; min-height: 40px !important; }
}

/* B02 + B03 · Movimientos (phone): the concept name gets room; company·category and account·status
   each on one line, aligned with the name. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .movement-ledger-row {
    grid-template-columns: 44px minmax(0, 1fr) auto !important;
    gap: 6px 8px !important;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row > strong { max-width: 27vw !important; }
  html[data-theme][data-theme] body #app #page .movement-ledger-row .movement-kind {
    grid-template-columns: 28px minmax(0, 1fr) !important;
    column-gap: 8px !important;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row .movement-kind > i { width: 28px !important; height: 28px !important; }
  html[data-theme][data-theme] body #app #page .movement-ledger-row > span:nth-child(n+3) {
    display: block !important;
    padding-left: 36px;
    line-height: 1.4 !important;
  }
  html[data-theme][data-theme] body #app #page .movement-ledger-row > span:nth-child(n+3) > :is(b, small) {
    display: inline !important;
    margin: 0 !important;
    overflow: visible !important;
    white-space: normal !important;
  }
  /* The separator sticks to the first part, so a wrapped line never starts with a dot. */
  html[data-theme][data-theme] body #app #page .movement-ledger-row > span:nth-child(n+3) > small::before { content: '\00a0·\0020'; }
}

/* B39 · Movimientos: no double line under the last row, and no empty pager. */
html[data-theme][data-theme] body #app #page [data-fv-movement-rows] > .movement-ledger-row:last-child { border-bottom: 0 !important; }
html[data-theme][data-theme] body #app #page [data-fv-movement-pagination]:empty { display: none !important; }

/* B05 · Calendario (phone): arrows in 44px columns with the chevron centred, «Hoy» on the arrows' row,
   the month picker full width below. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-calendar-month-nav {
    grid-template-columns: 44px minmax(0, 1fr) 44px !important;
    gap: 10px !important;
  }
  html[data-theme][data-theme] body #app #page .fv-calendar-month-nav > button {
    width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    display: grid !important;
    place-items: center !important;
  }
  html[data-theme][data-theme] body #app #page .fv-calendar-period {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    align-items: center !important;
    gap: 12px !important;
  }
  html[data-theme][data-theme] body #app #page .fv-calendar-period > .dashboard-period-wrap { grid-column: 1 / -1; }
}

/* B27 · Calendario: the four summaries keep label, figure and note at the same height. */
html[data-theme][data-theme] body #app #page .calendar-month-insights > article { align-content: start !important; }

/* B29 · Calendario: the legend is a key, not a row of buttons — dot and grey text, no pill or box. */
html[data-theme][data-theme] body #app #page .calendar-legend.calendar-legend {
  background: transparent !important;
  border: 0 !important;
  padding: 0 4px !important;
  margin: -2px 0 13px !important;
  gap: 6px 16px !important;
}
html[data-theme][data-theme] body #app #page .calendar-legend.calendar-legend span {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  min-height: 0 !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  color: var(--nw-muted) !important;
}
html[data-theme][data-theme] body #app #page .calendar-legend.calendar-legend i { width: 8px !important; height: 8px !important; }

/* B10 · Planeación y Real: summary tiles read from the top, so label and figure line up across a row;
   on the phone the opening and closing remainders frame the summary at full width. */
html[data-theme][data-theme] body #app #page .upgraded-registry .registry-kpi { justify-content: flex-start !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .upgraded-registry .remainder-summary > .registry-kpi { min-height: 0 !important; }
  html[data-theme][data-theme] body #app #page .upgraded-registry .remainder-summary > .registry-kpi.remaining { grid-column: 1 / -1 !important; }
}

/* B21 · Planeación y Real (phone): amount and currency share a row, same order. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .functional-registry .finance-register-grid { grid-template-columns: minmax(0, 1fr) 112px !important; }
  html[data-theme][data-theme] body #app #page .functional-registry .finance-register-grid > * { grid-column: 1 / -1 !important; }
  html[data-theme][data-theme] body #app #page .functional-registry .finance-register-grid > label:has([data-registry-amount]) { grid-column: 1 !important; }
  html[data-theme][data-theme] body #app #page .functional-registry .finance-register-grid > label:has(> [data-registry-currency]) { grid-column: 2 !important; }
}

/* B13 · Real (computer): the third column of the AI box is as wide as its button, so the label fits. */
@media (min-width: 1181px) {
  html[data-theme][data-theme] body #app #page .registry-ai-workspace {
    grid-template-columns: minmax(285px, .8fr) minmax(0, 1.55fr) max-content !important;
  }
}

/* B36 · Real: photo labels without a white patch and with air above their box; the dictation dot sits
   beside its words, like the microphone on «Grabar audio». */
html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-drop > span {
  background: transparent !important;
  padding: 0 !important;
  margin-bottom: 6px !important;
}
/* On the computer the label sits on the panel (the dashed box is the target); the phone keeps its card. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-drop { background: transparent !important; }
}
html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-dictation[data-functional-ai-dictation] { padding: 0 12px !important; }
html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-dictation[data-functional-ai-dictation]::before {
  position: static !important;
  display: inline-block;
  margin-right: 8px;
  transform: none !important;
  vertical-align: middle;
}

/* B40 · Real (phone): «Fotos, comprobantes o voz» opens with the same right-hand chevron as the other disclosures. */
html[data-theme][data-theme] body #app #page .niwwi-mobile-evidence > summary {
  list-style: none !important;
  display: flex !important;
  align-items: center;
  justify-content: space-between;
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-evidence > summary::-webkit-details-marker { display: none; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-evidence > summary::after {
  content: '';
  flex: none;
  width: 7px;
  height: 7px;
  margin: 0 4px 0 12px;
  border-right: 1.5px solid var(--nw-muted);
  border-bottom: 1.5px solid var(--nw-muted);
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-evidence[open] > summary::after { transform: translateY(2px) rotate(-135deg); }

/* B37 · Entrada: mail, lock and eye icons at a size that reads next to 16px text. */
html[data-theme] body #loginForm .input-wrap > span {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
}
html[data-theme] body #loginForm .input-wrap > span svg { width: 18px !important; height: 18px !important; max-width: none !important; }
html[data-theme] body #loginForm #togglePassword svg { width: 20px !important; height: 20px !important; max-width: none !important; }

/* ==== fin B ==== */

/* ==== Revisión de detalle C ==== */

/* C01 · Deudas: "Pagos exigibles observados" keeps the same 20 px as the other cards. */
html[data-theme][data-theme] body #app #page .fv-debts-view [data-debt-payment-demands] { margin-bottom: 20px !important; }
/* C14 · Its explanation reads as supporting text, not as a second title. */
html[data-theme][data-theme] body #app #page [data-debt-payment-demands] > p {
  margin: 12px 0 0 !important;
  color: var(--nw-muted) !important;
  font-size: 13px !important;
  line-height: 1.5 !important;
}

/* C15 · Summary tiles: content starts at the top, so the labels line up. */
html[data-theme][data-theme] body #app #page :is(.niwwi-debt-current-summary, .debt-position-overview) > article {
  justify-content: flex-start !important;
  align-content: start !important;
}
/* C20 · Labels are always grey; the figures keep a colour that means something
   (red debt, green paid or progress, violet for neutral amounts). */
html[data-theme][data-theme] body #app #page .debt-position-overview article > span { color: var(--nw-muted) !important; }
html[data-theme][data-theme] body #app #page .niwwi-debt-current-summary > article:nth-child(4) > b { color: var(--nw-pos) !important; }
html[data-theme][data-theme] body #app #page .niwwi-debt-current-summary > article:is(:nth-child(3), :nth-child(5)) > b { color: var(--nw-accent) !important; }
/* C16 · One bar style on the page: a visible rail and the Niwwi gradient. */
html[data-theme][data-theme] body #app #page :is(.niwwi-debt-current-summary, .niwwi-debt-history-metrics) > article > i {
  display: block !important;
  height: 6px !important;
  border-radius: 999px !important;
  background: var(--nw-surface-2) !important;
  overflow: hidden;
}
html[data-theme][data-theme] body #app #page :is(.niwwi-debt-current-summary, .niwwi-debt-history-metrics) > article > i > em {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--nw-bar-grad) !important;
}
/* C17 · Phone: total across the top, the other four in two columns. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article:first-child { grid-column: 1 / -1 !important; grid-row: auto !important; }
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article:not(:first-child) { grid-column: auto !important; grid-row: auto !important; }
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article {
    min-width: 0;
    min-height: 0 !important;
    padding: 14px !important;
  }
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article > b { font-size: 22px !important; }
  /* Two-line room for the labels, so the figures of each pair line up. */
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article:not(:first-child) > span { min-height: 2.8em; min-height: 2lh; }
}

/* C18 · "Total conocido": no square grey plate behind the rounded row; the
   row itself keeps the tint, so it still reads as the total. */
html[data-theme][data-theme] body #app #page .niwwi-period-groups tfoot { background: transparent !important; }
html[data-theme][data-theme] body #app #page .niwwi-period-groups tfoot > tr { background: var(--nw-surface-2) !important; }
/* C19 · The boxes under "Pagos del periodo" line up with the cards, and the
   "datos pendientes" disclosure gets the same box and chevron as its neighbours. */
html[data-theme][data-theme] body #app #page .debt-month-disclosure { padding: 0 !important; border: 0 !important; }
html[data-theme][data-theme] body #app #page .niwwi-period-groups > details {
  margin-top: 12px !important;
  padding: 8px 16px !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: 14px !important;
  background: var(--nw-surface) !important;
}
html[data-theme][data-theme] body #app #page :is(.niwwi-period-groups, .debt-month-disclosure) > details > summary {
  list-style: none;
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page :is(.niwwi-period-groups, .debt-month-disclosure) > details > summary::-webkit-details-marker { display: none; }
html[data-theme][data-theme] body #app #page :is(.niwwi-period-groups, .debt-month-disclosure) > details > summary::after {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 200ms var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page :is(.niwwi-period-groups, .debt-month-disclosure) > details[open] > summary::after { transform: translateY(2px) rotate(-135deg); }

/* C02 · Inside each debt card every row has the same rhythm: 14 px above and
   below its line; the buttons sit 6 px under the last row. */
html[data-theme][data-theme] body #app #page .debt-account-card > :is(.revolving-primary, .debt-reconciliation-note, .debt-period-box, .credit-use-card-summary) {
  margin-block: 14px 0 !important;
  padding-block: 14px !important;
}
html[data-theme][data-theme] body #app #page .debt-account-card > :is(.revolving-primary, .debt-reconciliation-note, .debt-period-box, .credit-use-card-summary, .revolving-metrics) + :is(.revolving-primary, .debt-reconciliation-note, .debt-period-box, .credit-use-card-summary) { margin-top: 0 !important; }
html[data-theme][data-theme] body #app #page .debt-account-card > .revolving-metrics { margin: 0 !important; row-gap: 0 !important; }
html[data-theme][data-theme] body #app #page .debt-account-card > .revolving-metrics > span { padding-block: 14px !important; }
html[data-theme][data-theme] body #app #page .debt-account-card > .debt-progress.revolving-utilization { margin: 0 !important; }
html[data-theme][data-theme] body #app #page .debt-account-card > :is(.credit-card-actions, .modal-actions) {
  margin: 6px 0 0 !important;
  padding-top: 0 !important;
  border-top: 0 !important;
}
/* C13 · The last button row keeps the same 10 px as the others. */
html[data-theme][data-theme] body #app #page .debt-account-card > .credit-card-actions + .full-button { margin-top: 10px !important; }
/* C03 · "Editar programación" spans the card like the other buttons. */
html[data-theme][data-theme] body #app #page .debt-account-card .debt-reconciliation-note { grid-template-columns: minmax(0, 1fr) !important; }
html[data-theme][data-theme] body #app #page .debt-account-card .debt-reconciliation-note > button {
  width: 100%;
  margin-top: 8px !important;
}
/* C04 · The main figure never splits; "restantes de…" drops below when needed. */
html[data-theme][data-theme] body #app #page .debt-account-card .debt-main-amount {
  flex-wrap: wrap !important;
  row-gap: 4px !important;
}
html[data-theme][data-theme] body #app #page .debt-account-card .debt-main-amount strong { white-space: nowrap !important; }
/* C21 · Personal loan: title like the other cards, the amount owed stands out. */
html[data-theme][data-theme] body #app #page [data-personal-loan] > h2 {
  font-size: 20px !important;
  line-height: 1.4 !important;
  margin: 6px 0 0 !important;
}
html[data-theme][data-theme] body #app #page [data-personal-loan] > strong {
  display: block;
  margin-top: 14px !important;
  font-size: clamp(27px, 2.6vw, 34px) !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
/* C22 · "Registrar pago", the action used most, is the filled one. */
html[data-theme][data-theme] body #app #page .debt-account-card [data-fv-register-debt-payment] {
  background: var(--nw-accent) !important;
  border-color: transparent !important;
  color: var(--nw-accent-ink) !important;
  box-shadow: 0 8px 18px -10px var(--nw-glow) !important;
}
html[data-theme="dark"][data-theme] body #app #page .debt-account-card [data-fv-register-debt-payment] {
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--nw-accent) 55%, transparent), 0 8px 26px -8px var(--nw-glow) !important;
}
@media (hover: hover) and (pointer: fine) {
  html[data-theme][data-theme] body #app #page .debt-account-card [data-fv-register-debt-payment]:hover {
    background: color-mix(in srgb, var(--nw-accent) 88%, var(--nw-ink)) !important;
  }
}

/* C07 · Cuentas: the balance in its own currency gets the same air above the
   line as the peso balances (about 10 px of visible space). */
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account .account-native { margin-bottom: 6px !important; }
/* C23 · "10 UBICACIONES" stays on one line and moves under the title if needed. */
html[data-theme][data-theme] body #app #page .account-distribution-card .simple-section-head {
  flex-wrap: wrap !important;
  gap: 8px 12px !important;
}
html[data-theme][data-theme] body #app #page .account-distribution-card .simple-section-head > span {
  white-space: nowrap !important;
  align-self: flex-start;
}

/* C05 · Ahorros: room between "Sin ubicación…" and the buttons, and between buttons. */
html[data-theme][data-theme] body #app #page .saving-goal-card > .saving-placements { margin-bottom: 12px !important; }
html[data-theme][data-theme] body #app #page .saving-goal-card > button + button { margin-top: 10px !important; }
@media (max-width: 760px) {
  /* C06 · The equation stays on one centred line, as on the computer. */
  html[data-theme][data-theme] body #app #page .savings-equation {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    justify-content: center !important;
    gap: 4px 10px !important;
  }
  /* C24 · The grey header reads as an inner box. */
  html[data-theme][data-theme] body #app #page .savings-location-card > header {
    border-radius: var(--nw-r-card) !important;
    border-bottom: 0 !important;
  }
}

/* ==== fin C ==== */

/* ==== Revisión de detalle D ==== */

/* D01 · Cuentas, Deudas y Modelos: la lista crece con la página (sin caja con scroll propio). */
html[data-theme][data-theme] body #app #page .configuration-deep-view .settings-account-list {
  max-height: none !important;
  overflow: visible !important;
  padding-right: 0 !important; /* el hueco de 4 px era para la barra de scroll interna */
}

/* D05 · Elementos: filas de lista limpias, sin recuadro interno que parece campo de texto. */
html[data-theme][data-theme] body #app #page .catalog-functional-row > span {
  border: 0 !important;
  background: transparent !important;
  padding: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* D06 · Títulos y párrafos de tarjeta en la misma escala que el resto de Configuración. */
html[data-theme][data-theme] body #app #page :is(.mova-review-allocations, .niwwi-data-center, .credit-liability-guide, .niwwi-preferences, .data-settings-view > section[class="card"]) h2 {
  font-size: 19px !important;
  line-height: 1.3 !important;
}
html[data-theme][data-theme] body #app #page :is(.mova-review-allocations, .niwwi-data-center, .credit-liability-guide, .data-settings-view > section[class="card"], .subscription-settings-summary article) p {
  font-size: 14px !important;
  color: var(--nw-muted) !important;
  line-height: 1.5 !important;
}

/* D07 · Modelos y Deudas: el × de eliminar comparte renglón con el último botón. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .settings-card-actions:has(> .icon-button.danger) {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px !important;
  }
  html[data-theme][data-theme] body #app #page .settings-card-actions:has(> .icon-button.danger) > .secondary { flex: 1 1 100% !important; }
  html[data-theme][data-theme] body #app #page .settings-card-actions > .secondary:has(+ .icon-button.danger:last-child) { flex: 1 1 0 !important; min-width: 0 !important; }
  html[data-theme][data-theme] body #app #page .settings-card-actions > .icon-button.danger { margin-left: 0 !important; align-self: auto !important; }
}

/* D19 · Empresas: tarjetas con borde gris y radio estándar; el color vive en la insignia. */
html[data-theme][data-theme] body #app #page .company-theme-card {
  border-color: var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
}

/* D20 · Elementos: «+ Agregar» no se encoge junto al título largo. */
html[data-theme][data-theme] body #app #page .catalog-card-head > button {
  flex: 0 0 auto !important;
  white-space: nowrap !important;
  padding-inline: 14px !important;
}

/* D21 · Suscripciones: «Pausar» con el mismo estilo que Clasificar/Editar. */
html[data-theme][data-theme] body #app #page .subscription-card-actions > .text-button:not(.danger) {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-accent-text) !important;
  font-weight: 700 !important;
}

/* D22 · Datos: pasos de Niwwi AI en un renglón alineado a la izquierda. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .mova-ai-settings-flow {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
    gap: 8px 18px !important;
  }
  html[data-theme][data-theme] body #app #page .mova-ai-settings-flow > i { display: none !important; }
}

/* D23 · Guía de uso: filas más compactas y sin línea bajo la última. */
html[data-theme][data-theme] body #app #page .niwwi-guide details { padding: 2px 0 !important; }
html[data-theme][data-theme] body #app #page .niwwi-guide details:last-of-type { border-bottom: 0 !important; }

/* D24 · Un solo estilo de etiqueta pequeña sobre títulos. */
html[data-theme][data-theme] body #app #page :is(.niwwi-data-center header small, .settings-backup .analysis-card-head small, .niwwi-preferences > div > small, .credit-liability-guide small, .subscription-settings-summary article > small, .fx-example > small, .venuz-billing-settings .analysis-card-head small, .accounts-credit-section .simple-section-head small) {
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  color: var(--nw-muted) !important;
}

/* D33 · Centro (computadora): botones de tarjeta a su ancho natural y en una línea. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .catalog-card > .modal-actions {
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
  }
  html[data-theme][data-theme] body #app #page .catalog-card > .modal-actions > button {
    flex: 0 0 auto !important;
    white-space: nowrap !important;
    width: auto !important;
  }
}

/* D34 · Modelos: «Vigente desde» con etiqueta encima y relleno interno. */
html[data-theme][data-theme] body #app #page .helion-shared-allocation-setting label {
  display: grid !important;
  gap: 6px !important;
  font-size: 14px !important;
  color: var(--nw-muted) !important;
}
html[data-theme][data-theme] body #app #page .helion-shared-allocation-setting :is(select, input) { color: var(--nw-ink) !important; }
html[data-theme][data-theme] body #app #page .helion-shared-allocation-setting input[type="month"] {
  padding-inline: 14px !important;
  max-width: 340px;
}
@media (min-width: 761px) {
  /* mismo alto que el selector de arriba (40 px) en vez de 26 px */
  html[data-theme][data-theme] body #app #page .helion-shared-allocation-setting input[type="month"] {
    min-height: 40px !important;
    font-size: 14px !important;
  }
}

/* D35 · Datos: aire antes del primer mes y botón secundario normal. */
html[data-theme][data-theme] body #app #page .remainder-settings .niwwi-remainder-month:first-of-type { margin-top: 12px !important; }
html[data-theme][data-theme] body #app #page .niwwi-remainder-opening {
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line-strong) !important;
  color: var(--nw-accent-text) !important;
}

/* D38 · Notas: la letra o símbolo va en la misma insignia de 36 px que los demás íconos. */
html[data-theme][data-theme] body #app #page .card.settings-note > span:first-child {
  flex: 0 0 36px !important;
  height: 36px !important;
  align-self: flex-start !important;
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  border: 0 !important;
  border-radius: var(--nw-r-control) !important;
  font-size: 16px !important;
  line-height: 1 !important;
  font-weight: 750 !important;
}
/* el «÷» de la fuente es diminuto: solo ese símbolo va más grande para que no parezca un «+» */
html[data-theme][data-theme] body #app #page .card.settings-note.helion-shared-allocation-setting > span:first-child { font-size: 26px !important; font-weight: 500 !important; }

/* D39 · Cuentas y Deudas (computadora): sin línea suelta sobre los botones. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .settings-account-card > .settings-card-actions {
    border-top: 0 !important;
    padding-top: 0 !important;
  }
}

/* D40 · Perfil: los 5 colores en un renglón y sin línea bajo el último interruptor. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .niwwi-avatar-options {
    grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
    gap: 6px !important;
  }
  html[data-theme][data-theme] body #app #page .niwwi-avatar-options > button { padding: 8px 2px !important; min-height: 0 !important; }
  html[data-theme][data-theme] body #app #page .niwwi-avatar-options .niwwi-avatar { width: 40px !important; height: 40px !important; font-size: 16px !important; }
  html[data-theme][data-theme] body #app #page .niwwi-avatar-options > button > b { font-size: 12px !important; }
}
html[data-theme][data-theme] body #app #page .preference-list > label:last-of-type { border-bottom: 0 !important; }

/* ==== fin D ==== */

/* ==== Propuestas L1 ==== */

/* 12 · Entrada: sin la casilla fija, «¿Olvidaste tu contraseña?» queda sola, a la derecha, bajo la contraseña.
   (la Entrada vive fuera de #app #page, por eso este selector empieza en #loginForm) */
html[data-theme][data-theme] body #loginForm .login-options {
  display: flex !important;
  flex-direction: row !important;
  justify-content: flex-end !important;
  align-items: center !important;
  margin-top: -6px !important;
}
html[data-theme][data-theme] body #loginForm .login-options .text-button { text-align: right !important; }

/* 10 · Computadora: el acceso a Niwwi AI queda solo como ícono redondo (sin «Hablar con») y vive en la barra
   superior fija, a la derecha, en vez de flotar sobre la página: así nunca tapa botones, cifras, selectores ni el
   calendario. La barra reserva su lugar. El nombre accesible sigue en aria-label.
   (el acceso y la barra viven fuera de #page; el acceso cuelga de body) */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app .main > .topbar { padding-right: 94px !important; }
  html[data-theme][data-theme] body > .niwwi-ai-dock[data-niwwi-ai-dock="desktop"] {
    top: 6px !important;
    right: 38px !important;
    bottom: auto !important;
  }
  html[data-theme][data-theme] body > .niwwi-ai-dock[data-niwwi-ai-dock="desktop"] > .niwwi-ai-docked-launcher {
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    gap: 0 !important;
    border-radius: var(--nw-r-pill) !important;
    justify-content: center !important;
    box-shadow: var(--nw-glow) !important;
  }
  html[data-theme][data-theme] body > .niwwi-ai-dock[data-niwwi-ai-dock="desktop"] > .niwwi-ai-docked-launcher .mova-ai-launcher-copy {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    margin: -1px !important;
    padding: 0 !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
  }
  html[data-theme][data-theme] body > .niwwi-ai-dock[data-niwwi-ai-dock="desktop"] > .niwwi-ai-docked-launcher .mova-ai-launcher-icon.open-icon {
    width: 28px !important;
    height: 28px !important;
    flex: 0 0 28px !important;
    margin: 0 !important;
  }
}

/* 16 · Inicio (teléfono): el mosaico que repetía «En cuentas» ahora es un acceso a Análisis (pestaña ¿Me alcanza? arriba). */
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > .niwwi-mobile-affordability {
  justify-content: space-between !important;
  gap: 12px !important;
  background: linear-gradient(160deg, var(--nw-accent-soft), var(--nw-surface) 78%) !important;
  border-color: var(--nw-line-strong) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > .niwwi-mobile-affordability > small { color: var(--nw-accent-text) !important; }
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > .niwwi-mobile-affordability > span:last-child {
  display: inline-flex !important;
  align-items: center !important;
  align-self: flex-start !important;
  gap: 4px !important;
  min-height: 36px !important;
  padding: 0 14px !important;
  border-radius: var(--nw-r-pill) !important;
  background: var(--nw-accent) !important;
  color: var(--nw-accent-ink) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  box-shadow: var(--nw-glow) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > .niwwi-mobile-affordability > span:last-child svg { margin-left: 0 !important; color: currentColor !important; }

/* 23 · Panorama (teléfono): sin la leyenda de seis colores; cada tipo ya trae su nombre y su color. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-registry-visualizer .registry-visual-legend { display: none !important; }
}

/* 29 · Panorama: los tipos sin movimientos se juntan en una sola línea al final de cada área. */
html[data-theme][data-theme] body #app #page .fv-registry-visualizer .registry-type-empty-summary {
  margin: 12px 0 0 !important;
  padding: 10px 14px !important;
  border: 1px dashed var(--nw-line) !important;
  border-radius: var(--nw-r-control) !important;
  background: var(--nw-surface-2) !important;
  color: var(--nw-muted) !important;
  font-size: 14px !important;
  line-height: 1.45 !important;
}
@media (min-width: 761px) {
  /* En computadora la línea va con la misma sangría que las tarjetas de tipo (16 px) y no toca el borde del área. */
  html[data-theme][data-theme] body #app #page .fv-registry-visualizer .registry-type-empty-summary { margin: 0 16px 16px !important; }
}

/* 30–31 · Historial: sin la caja «DESGLOSE DEL MES» ni el scroll interno; 10 movimientos a la vista y el resto en «Ver todos los movimientos». */
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-ledger {
  max-height: none !important;
  overflow: visible !important;
  padding-right: 0 !important;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-month.expanded .fv-history-preview:has(.fv-history-more[open]) { max-height: none !important; }
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more > summary {
  list-style: none;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: fit-content !important;
  min-height: 44px !important;
  margin: 14px auto 6px !important;
  padding: 0 20px !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-pill) !important;
  background: var(--nw-accent-soft) !important;
  color: var(--nw-accent-text) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more > summary::-webkit-details-marker { display: none; }
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more > summary::after {
  content: "";
  width: 7px;
  height: 7px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
/* Abierto, «Ver menos» baja al final de la lista (después del último movimiento), para cerrarla sin volver a subir. */
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] { position: relative !important; padding-bottom: 64px !important; }
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] > summary {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 6px !important;
  margin: 0 auto !important;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more:not([open]) .fv-history-more-open,
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] .fv-history-more-closed { display: none !important; }

/* 20 · Inicio (Hoy): sin la tarjeta repetida, «Actividad real hasta hoy» ocupa todo el ancho en computadora. */
html[data-theme][data-theme] body #app #page .dashboard-main-grid > .finance-bars-card:only-child { grid-column: 1 / -1 !important; }
@media (min-width: 761px) {
  /* A todo el ancho, las cuatro barras van en dos columnas para que cada cifra quede cerca de su nombre. */
  html[data-theme][data-theme] body #app #page .dashboard-main-grid > .finance-bars-card:only-child .simple-bars { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* ==== fin propuestas L1 ==== */

/* ==== Propuestas L2 ==== */

/* 34 · Movimientos: «Fecha», «Tipo», «Empresa», «Cuenta» in plain case, without spaced capitals. */
html[data-theme][data-theme] body #app #page .fv-movements-view .movement-primary-filters > label:not(.movement-search) > span {
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-size: 13.5px !important;
  font-weight: 650 !important;
  color: var(--nw-muted) !important;
}
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view .movement-primary-filters > label:not(.movement-search) > span { font-size: 12.5px !important; }
}

/* 39 · Planeación: «Gastos recurrentes y prioridades» and «Ajustar referencia de apertura» live in the header,
   under the month, as compact buttons. */
html[data-theme][data-theme] body #app #page .planning-registry > .registry-page-head .registry-head-actions {
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 10px !important;
}
html[data-theme][data-theme] body #app #page .registry-head-actions > .niwwi-context-actions {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  margin: 0 !important;
}
html[data-theme][data-theme] body #app #page .registry-head-actions > .niwwi-context-actions > button {
  flex: 0 1 auto !important;
  width: auto !important;
  min-height: 36px !important;
  height: auto !important;
  padding: 7px 13px !important;
  border-radius: var(--nw-r-pill, 999px) !important;
  font-size: 13px !important;
  font-weight: 650 !important;
  line-height: 1.25 !important;
  white-space: nowrap !important;
}
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .planning-registry > .registry-page-head .registry-head-actions { align-items: flex-end !important; }
  html[data-theme][data-theme] body #app #page .registry-head-actions > .niwwi-context-actions { justify-content: flex-end !important; }
}

/* 42 · Planeación: no «Supuesto editable» line; the pencil sits inside the editable amount. */
html[data-theme][data-theme] body #app #page .planned-opening-field {
  grid-template-columns: 20px minmax(0, 1fr) auto 24px !important;
  column-gap: 6px !important;
}
html[data-theme][data-theme] body #app #page .planned-opening-field > .planned-opening-pencil {
  display: grid !important;
  place-items: center !important;
  width: 24px !important;
  height: 24px !important;
  color: var(--nw-accent-text) !important;
  font-style: normal !important;
}
html[data-theme][data-theme] body #app #page .planned-opening-field > .planned-opening-pencil svg { width: 15px !important; height: 15px !important; }

/* 44 · Planeación: the form labels read in plain case («Monto», «Certeza»…), not spaced capitals. */
html[data-theme][data-theme] body #app #page .planning-registry .quick-register-form label > span {
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-size: 13.5px !important;
  font-weight: 650 !important;
}

/* 47 · Planeación: one quiet line instead of the «Efecto al guardar» box (the box stays in the page, hidden). */
html[data-theme][data-theme] body #app #page .planning-registry .quick-register-form > .registry-impact-preview { display: none !important; }
html[data-theme][data-theme] body #app #page .planning-registry .quick-register-form > .registry-impact-line {
  grid-column: 1 / -1 !important;
  margin: 0 !important;
  padding: 0 !important;
  color: var(--nw-muted) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  line-height: 1.4 !important;
}

/* 53 · Real: «Confirma lo que ya ocurrió» keeps only its title and «Ver todos (n)». The count and
   «Mostrando…» stay for screen readers (visually hidden), so the list size is still announced. */
html[data-theme][data-theme] body #app #page .registry-pending-confirmations :is([data-registry-pending-count], [data-registry-pending-visible]) {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  min-width: 0 !important;
  min-height: 0 !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-head h2 { margin: 0 !important; }
html[data-theme][data-theme] body #app #page .registry-pending-footer { justify-content: flex-start !important; }
html[data-theme][data-theme] body #app #page .registry-pending-footer:not(:has(button:not([hidden]))) { display: none !important; }

/* 54 + 55 · Real: each pending item is a short row — name and date on the left, amount on the right,
   a small «Registrar» below. */
html[data-theme][data-theme] body #app #page .registry-pending-item {
  grid-template-columns: 34px minmax(0, 1fr) auto !important;
  align-items: start !important;
  gap: 10px 12px !important;
  padding: 14px 16px !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-item > span { grid-column: 1 !important; grid-row: 1 !important; }
html[data-theme][data-theme] body #app #page .registry-pending-item > div { grid-column: 2 !important; grid-row: 1 !important; gap: 3px !important; }
html[data-theme][data-theme] body #app #page .registry-pending-item > strong {
  grid-column: 3 !important;
  grid-row: 1 !important;
  align-self: start !important;
  margin-top: 18px !important;
  text-align: right !important;
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  font-size: 18px !important;
  line-height: 1.3 !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-item > strong > small:first-child:not(:last-child) { margin: 0 0 2px !important; }
html[data-theme][data-theme] body #app #page .registry-pending-item > strong > small:last-child {
  display: inline !important;
  margin: 0 0 0 2px !important;
  font-size: 11px !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-item > button {
  grid-column: 2 / -1 !important;
  grid-row: 2 !important;
  justify-self: start !important;
  min-height: 36px !important;
  padding: 6px 16px !important;
  font-size: 13px !important;
}

/* 56 + 57 · Real: «Capturar a mano ›» is one tappable line right under the Niwwi AI card. */
html[data-theme][data-theme] body #app #page .functional-registry.real-registry > .registry-manual-disclosure { order: 4 !important; margin-bottom: 16px !important; }
html[data-theme][data-theme] body #app #page .functional-registry.real-registry > .registry-pending-confirmations { order: 5 !important; margin-bottom: 0 !important; }
html[data-theme][data-theme] body #app #page .registry-manual-disclosure > summary {
  grid-template-columns: 34px minmax(0, 1fr) auto !important;
  min-height: 56px !important;
  align-items: center !important;
}
html[data-theme][data-theme] body #app #page .registry-manual-disclosure > summary > div { align-self: center !important; }
html[data-theme][data-theme] body #app #page .registry-manual-disclosure > summary > em.registry-manual-chevron {
  grid-column: 3 !important;
  display: grid !important;
  place-items: center !important;
  width: 28px !important;
  height: 28px !important;
  color: var(--nw-accent-text) !important;
  transition: transform .18s var(--nw-ease-out, ease) !important;
}
html[data-theme][data-theme] body #app #page .registry-manual-disclosure > summary > em.registry-manual-chevron svg { width: 18px !important; height: 18px !important; }
html[data-theme][data-theme] body #app #page .registry-manual-disclosure[open] > summary > em.registry-manual-chevron { transform: rotate(90deg) !important; }

/* 52 · Real: «Fotos o voz» heads the evidence column, in plain case. */
html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-tools-title {
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-size: 13.5px !important;
  font-weight: 650 !important;
}
html[data-theme][data-theme] body #app #page .registry-ai-workspace .registry-ai-dictation-hint:empty { display: none !important; }

/* 60 · Calendario: the month shows once, between the arrows; tapping it opens the month picker. */
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav > .dashboard-period-wrap {
  position: relative !important;
  min-width: 0 !important;
  width: 100% !important;
  justify-self: stretch !important;
}
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip {
  width: 100% !important;
  min-height: 44px !important;
  height: 44px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  padding: 0 4px !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip > .dashboard-period-icon { display: none !important; }
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip > span { display: block !important; min-width: 0 !important; }
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip b {
  display: block !important;
  font-size: 16px !important;
  font-weight: 750 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip > i {
  position: static !important;
  font-style: normal !important;
  color: var(--nw-accent-text) !important;
}
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-chip:hover:not(:disabled) { background: var(--nw-accent-soft) !important; }
/* The picker opens centred under the month (it no longer hangs off the chip's right edge into the sidebar),
   and the period card rises above the summary cards while it is open, so a tap on a month never reaches
   «Vencidos» or «Vencen hoy» underneath. */
html[data-theme][data-theme] body #app #page .fv-calendar-month-nav .dashboard-period-menu {
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
}
html[data-theme][data-theme] body #app #page .fv-calendar-period:has(.dashboard-period-menu:not(.hidden)) {
  position: relative !important;
  z-index: 5 !important;
}
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-calendar-month-nav { gap: 6px !important; }
}

/* 61 · Calendario: «Vencidos» and «Vencen hoy» are buttons that apply the Estado filter. */
html[data-theme][data-theme] body #app #page .calendar-month-insights > article:has(> .calendar-insight-filter) {
  position: relative !important;
  cursor: pointer !important;
  transition: border-color .15s ease, box-shadow .15s ease !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights .calendar-insight-filter {
  appearance: none !important;
  display: grid !important;
  align-content: start !important;
  gap: inherit !important;
  width: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: inherit !important;
  font: inherit !important;
  text-align: left !important;
  cursor: pointer !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights > article > .calendar-insight-filter > small {
  font-size: 12px !important;
  line-height: 1.55 !important;
  letter-spacing: .02em !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights > article > .calendar-insight-filter > b {
  display: block !important;
  font-size: clamp(25px, 2.3vw, 32px) !important;
  line-height: 1.25 !important;
  margin-block: 12px !important;
  font-variant-numeric: tabular-nums !important;
  overflow-wrap: anywhere !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights > article > .calendar-insight-filter > small::after {
  content: '\203A';
  margin-left: 6px;
  color: var(--nw-accent-text);
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights .calendar-insight-filter::after {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: inherit !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights .calendar-insight-filter:focus-visible { outline: none !important; }
html[data-theme][data-theme] body #app #page .calendar-month-insights > article:has(> .calendar-insight-filter:focus-visible) {
  outline: 2px solid var(--nw-accent) !important;
  outline-offset: 2px !important;
}
html[data-theme][data-theme] body #app #page .calendar-month-insights > article:has(> .calendar-insight-filter:hover) { border-color: var(--nw-accent) !important; }
html[data-theme][data-theme] body #app #page .calendar-month-insights > article:has(> .calendar-insight-filter.active) {
  border-color: var(--nw-accent) !important;
  box-shadow: 0 0 0 2px var(--nw-accent-soft) !important;
}
/* While «Vencidos» or «Vencen hoy» is on, the other cards (which count only the filtered payments) step back. */
html[data-theme][data-theme] body #app #page .calendar-month-insights:has(.calendar-insight-filter.active) > article:not(:has(> .calendar-insight-filter.active)) {
  opacity: .58 !important;
  transition: opacity .15s ease !important;
}
/* 63 · Calendario (phone): the four filters fold into a «Filtros» button, with a dot when one is set. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar.has-mobile-filters {
    display: block !important;
    padding: 0 !important;
  }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filters > summary {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    min-height: 48px !important;
    padding: 0 18px !important;
    color: var(--nw-accent-text) !important;
    font-size: 15px !important;
    font-weight: 700 !important;
    list-style: none !important;
    cursor: pointer !important;
  }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filters > summary::-webkit-details-marker { display: none !important; }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filters > summary::after {
    content: '' !important;
    width: 8px !important;
    height: 8px !important;
    margin-left: auto !important;
    border-right: 2px solid currentColor !important;
    border-bottom: 2px solid currentColor !important;
    transform: translateY(-2px) rotate(45deg) !important;
    transition: transform .18s var(--nw-ease-out, ease) !important;
  }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filters[open] > summary::after { transform: translateY(2px) rotate(-135deg) !important; }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-filter-dot {
    display: none !important;
    width: 8px !important;
    height: 8px !important;
    border-radius: 50% !important;
    background: var(--nw-accent) !important;
    box-shadow: 0 0 0 3px var(--nw-accent-soft) !important;
  }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filters.has-active-filters .niwwi-filter-dot { display: block !important; }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filter-fields {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px 10px !important;
    padding: 4px 18px 18px !important;
  }
  html[data-theme][data-theme] body #app #page .calendar-filter-toolbar .niwwi-mobile-filter-fields > label { min-width: 0 !important; }
}

/* ==== fin propuestas L2 ==== */

/* ==== Propuestas L3 ==== */
/* 67 · Cuentas: «Ajustar» chico arriba a la derecha de cada cuenta, junto a la moneda. */
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account .account-head { justify-content: flex-start !important; gap: 8px !important; }
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account .account-head > .account-currency { margin-left: auto !important; }
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account .account-head > .account-adjust-chip {
  width: auto !important;
  min-width: 0 !important;
  min-height: 36px !important;
  height: 36px !important;
  padding: 0 14px !important;
  margin: 0 !important;
  flex: 0 0 auto !important;
  border-radius: var(--nw-r-pill) !important;
  background: var(--nw-accent-soft) !important;
  border: 1px solid transparent !important;
  color: var(--nw-accent-text) !important;
  font-size: 14px !important;
  font-weight: 750 !important;
  line-height: 1 !important;
}
/* sin el botón ancho la tarjeta ya no necesita alto mínimo */
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account { min-height: 0 !important; }
/* 64 · Distribución: «Total con OnlyFans» en tipo oración y el dólar en la misma línea que el equivalente. */
html[data-theme][data-theme] body #app #page .fv-accounts-view .account-total-dual .income-total small { letter-spacing: 0 !important; text-transform: none !important; }
html[data-theme][data-theme] body #app #page .fv-accounts-view .account-total-dual .available-usd b { white-space: normal !important; }
html[data-theme][data-theme] body #app #page .fv-accounts-view .account-total-dual .available-usd b > .account-usd-rate {
  display: inline !important;
  white-space: nowrap !important;
  color: var(--nw-muted) !important;
  font-size: 14px !important;
  font-weight: 650 !important;
  letter-spacing: 0 !important;
}
/* 73 · Deudas: sin pagos exigibles anotados, la tarjeta queda en una línea: título y botón. */
html[data-theme][data-theme] body #app #page .fv-debts-view .debt-payment-demands-empty > .section-heading {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  margin: 0 !important;
}
html[data-theme][data-theme] body #app #page .fv-debts-view .debt-payment-demands-empty > .section-heading > h2 { margin: 0 !important; }
html[data-theme][data-theme] body #app #page .fv-debts-view .debt-payment-demands-empty > .section-heading > button { width: auto !important; flex: 0 0 auto !important; margin: 0 !important; }
/* 74 · Sin las notas bajo las cifras, las tarjetas del resumen no guardan alto vacío. */
html[data-theme][data-theme] body #app #page .fv-debts-view .debt-position-overview > article { min-height: 0 !important; }
/* 95 · 98 · 99 · 101 · desplegables nuevos de Análisis y ¿Me alcanza? (mismo chevron que los demás). */
html[data-theme][data-theme] body #app #page :is(.nw-l3-more, .forecast-table-more) > summary {
  list-style: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  min-height: 44px !important;
  padding: 10px 2px !important;
  cursor: pointer !important;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
}
html[data-theme][data-theme] body #app #page :is(.nw-l3-more, .forecast-table-more) > summary::-webkit-details-marker { display: none !important; }
html[data-theme][data-theme] body #app #page :is(.nw-l3-more, .forecast-table-more) > summary::after {
  content: "" !important;
  flex: none !important;
  width: 7px !important;
  height: 7px !important;
  margin-right: 4px !important;
  border-right: 2px solid currentColor !important;
  border-bottom: 2px solid currentColor !important;
  transform: translateY(-2px) rotate(45deg) !important;
  transition: transform 200ms var(--nw-ease-out) !important;
}
html[data-theme][data-theme] body #app #page :is(.nw-l3-more, .forecast-table-more)[open] > summary::after { transform: translateY(2px) rotate(-135deg) !important; }
/* 88 · Sin «Asignar ahorro libre», la meta no guarda alto vacío sobre su botón. */
html[data-theme][data-theme] body #app #page .saving-goal-card { min-height: 0 !important; }
/* 91 · Sin el letrero, «Cómo va el mes» sube a la línea de «15 / 31 días». */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .forecast-month-review > header > div:not(:has(> small)) > h2 { grid-column: 1 !important; grid-row: 1 !important; align-self: center !important; margin: 0 !important; }
}
/* 92 · El título con «?» conserva el tamaño de los demás títulos de sección. */
html[data-theme][data-theme] body #app #page .niwwi-horizon .analysis-section-copy h2 > .niwwi-help-trigger {
  display: inline !important;
  min-height: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-align: left !important;
}
/* 95 · Plan vs. real: 8 partidas a la vista; el resto al abrir «Ver todas las partidas». */
html[data-theme][data-theme] body #app #page .forecast-table-card:not(:has(> details.forecast-table-more[open])) tr.forecast-row-more { display: none !important; }
html[data-theme][data-theme] body #app #page .forecast-table-more { margin-top: 8px !important; border-top: 1px solid var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .forecast-table-more:not([open]) .when-open,
html[data-theme][data-theme] body #app #page .forecast-table-more[open] .when-closed { display: none !important; }
/* 98 · 99 · ¿Me alcanza?: «Ver todos» bajo los 5 primeros y una sola línea para las fechas que faltan. */
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more { margin: 4px 0 0 !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more > .niwwi-cash-timeline { margin-top: 6px !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-pending {
  margin: 12px 0 16px !important;
  padding: 4px 14px !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  background: var(--nw-warn-soft) !important;
}
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-pending > summary > span { color: var(--nw-warn) !important; font-weight: 700 !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-pending > summary > b { margin-left: auto !important; color: var(--nw-accent-text) !important; font-weight: 750 !important; white-space: nowrap !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-pending > ul { margin: 0 0 10px !important; padding-left: 18px !important; color: var(--nw-muted) !important; font-size: 14px !important; line-height: 1.5 !important; }
/* 101 · Paso 2: vencidos y este mes abiertos; cada mes siguiente en su desplegable. */
html[data-theme][data-theme] body #app #page .affordability-view .affordability-payment-group { display: grid !important; gap: 10px !important; }
html[data-theme][data-theme] body #app #page .affordability-view .affordability-payment-group + .affordability-payment-group { margin-top: 14px !important; }
/* Mismo encabezado para grupos abiertos y meses cerrados: tipo oración, mismo color y peso; solo cambia el chevron. */
html[data-theme][data-theme] body #app #page .affordability-view .affordability-payment-group > h3,
html[data-theme][data-theme] body #app #page .affordability-view details.affordability-payment-group > summary {
  margin: 0 !important;
  padding: 10px 2px !important;
  min-height: 44px !important;
  display: flex !important;
  align-items: center !important;
  color: var(--nw-ink) !important;
  font-size: 15px !important;
  font-weight: 750 !important;
  line-height: 1.35 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
html[data-theme][data-theme] body #app #page .affordability-view details.affordability-payment-group { border-top: 1px solid var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .affordability-view details.affordability-payment-group:not([open]) { gap: 0 !important; }
/* Vencidos con más de 10 pagos: los 5 primeros y «Ver todos (N)» con el resto. */
html[data-theme][data-theme] body #app #page .affordability-view .affordability-payment-more { display: grid !important; gap: 10px !important; border-top: 1px solid var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .affordability-view .affordability-payment-more:not([open]) { gap: 0 !important; }
/* 102 · Aire entre la tarjeta RESULTADO y el saldo mínimo que la sigue. */
html[data-theme][data-theme] body #app #page .affordability-view .affordability-outcome { margin-bottom: 16px !important; }
/* 93 · Sin el párrafo, el título de cada sección conserva su aire sobre el primer renglón. */
html[data-theme][data-theme] body #app #page :is(.forecast-formula, .forecast-upcoming) > .analysis-section-copy { margin-bottom: 12px !important; }
html[data-theme][data-theme] body #app #page .forecast-source-details > .analysis-section-copy { margin-bottom: 8px !important; }
/* ==== fin propuestas L3 ==== */

/* ==== Propuestas L4 ==== */

/* 107 · Centro de control: «Más ajustes» al final, con aire y en cuadrícula. */
html[data-theme][data-theme] body #app #page .niwwi-more-settings { margin-top: 12px !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .niwwi-more-settings > .modal-actions { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .niwwi-more-settings > .modal-actions { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
}

/* 104 · Etiquetas escritas normal (sin mayúsculas forzadas). */
html[data-theme][data-theme] body #app #page :is(.settings-model-economics small, .business-card-labels > small, .catalog-card-head small, .subscription-card-heading > small, .venuz-billing-form label > span) { text-transform: none !important; letter-spacing: 0 !important; }

/* 118 · 121 · El saldo y la deuda usada como cifra grande en su propia línea. */
html[data-theme][data-theme] body #app #page .settings-account-card .settings-account-balance {
  display: block !important;
  margin: 6px 0 2px !important;
  color: var(--nw-ink) !important;
  font-size: clamp(24px, 2vw, 28px) !important;
  font-weight: 750 !important;
  line-height: 1.15 !important;
  letter-spacing: -0.01em !important;
  font-variant-numeric: tabular-nums;
}
html[data-theme][data-theme] body #app #page .settings-account-card .settings-account-balance.is-negative { color: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page .settings-account-card .settings-figure-label {
  display: block !important;
  margin-top: 8px !important;
  color: var(--nw-muted) !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
}
html[data-theme][data-theme] body #app #page .settings-account-card .settings-figure-label + .settings-account-balance { margin-top: 2px !important; }

/* 117 · «Configurar tarjeta» junto a «Administrar tarjetas». */
html[data-theme][data-theme] body #app #page .niwwi-credit-actions { display: flex !important; flex-wrap: wrap !important; gap: 8px !important; margin-top: 4px !important; }
html[data-theme][data-theme] body #app #page .niwwi-credit-actions > button { flex: 1 1 auto !important; margin: 0 !important; }
html[data-theme][data-theme] body #app #page .niwwi-credit-actions-solo { margin-top: 12px !important; }
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .niwwi-credit-actions > button { flex: 0 0 auto !important; justify-content: center !important; text-align: center !important; }
}

/* 120 · Menú de tres puntos: lo de siempre a la vista, lo demás dentro. */
html[data-theme][data-theme] body #app #page .subscription-card-actions:has(> .niwwi-more-actions) { display: flex !important; flex-wrap: nowrap !important; align-items: stretch !important; gap: 8px !important; }
html[data-theme][data-theme] body #app #page .subscription-card-actions > .niwwi-more-actions { flex: 0 0 46px !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .settings-card-actions:has(> .niwwi-more-actions) { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) 46px !important; align-items: stretch !important; }
  html[data-theme][data-theme] body #app #page .subscription-card-actions:has(> .niwwi-more-actions) > button { flex: 1 1 0 !important; min-width: 0 !important; }
}
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .settings-card-actions > .niwwi-more-actions { align-self: stretch !important; }
  html[data-theme][data-theme] body #app #page .subscription-card-actions > .niwwi-more-actions { margin-left: auto !important; }
  html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary { min-height: 40px !important; }
}
html[data-theme][data-theme] body #app #page .niwwi-more-actions { position: relative !important; min-width: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary {
  list-style: none !important;
  display: grid !important;
  place-items: center !important;
  box-sizing: border-box !important;
  width: 46px !important;
  height: 100% !important;
  min-height: 44px !important;
  padding: 0 !important;
  border: 1px solid var(--nw-line-strong) !important;
  border-radius: var(--nw-r-control) !important;
  background: var(--nw-surface) !important;
  color: var(--nw-accent-text) !important;
  cursor: pointer;
  transition: background-color var(--nw-quick) var(--nw-ease-out), border-color var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary::-webkit-details-marker { display: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary::marker { content: "" !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary::after,
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary::before { display: none !important; content: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary { -webkit-tap-highlight-color: transparent; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions[open] > summary::before {
  content: "" !important;
  display: block !important;
  position: fixed !important;
  inset: 0 !important;
  z-index: 29 !important;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  transform: none !important;
  opacity: 1 !important;
  cursor: default;
}
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary svg { width: 20px !important; height: 20px !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions[open] > summary { margin: 0 !important; background: var(--nw-accent-soft) !important; border-color: var(--nw-accent) !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions > summary:focus-visible { outline: 2px solid var(--nw-accent) !important; outline-offset: 2px !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions-list {
  position: absolute !important;
  right: 0 !important;
  top: calc(100% + 6px) !important;
  z-index: 30 !important;
  display: grid !important;
  gap: 6px !important;
  width: max-content !important;
  min-width: 200px !important;
  margin: 0 !important;
  padding: 8px !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-card) !important;
  background: var(--nw-surface) !important;
  box-shadow: var(--nw-shadow-pop) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-more-actions-list > button {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  width: 100% !important;
  min-height: 44px !important;
  margin: 0 !important;
  padding: 0 14px !important;
  border: 1px solid var(--nw-line) !important;
  border-radius: var(--nw-r-control) !important;
  background: var(--nw-surface) !important;
  color: var(--nw-accent-text) !important;
  font-size: 14px !important;
  font-weight: 650 !important;
  text-align: left !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .niwwi-more-actions-list > button.danger { color: var(--nw-neg) !important; }
html[data-theme][data-theme] body #app #page .niwwi-more-actions-list > button:disabled { opacity: 0.55 !important; }
html[data-theme][data-theme] body #app #page :is(.settings-account-card, .recurring-subscription-card):has(.niwwi-more-actions[open]) { position: relative !important; z-index: 6 !important; }
@media (max-width: 760px) {
  /* The last subscription opens its menu upward so the bottom bar never covers it. */
  html[data-theme][data-theme] body #app #page .recurring-subscription-list > .recurring-subscription-card:last-child .niwwi-more-actions-list { top: auto !important; bottom: calc(100% + 6px) !important; }
}
@media (min-width: 761px) {
  /* Desktop: the last row opens upward too, clear of the floating Niwwi AI button. */
  html[data-theme][data-theme] body #app #page .recurring-subscription-list > .recurring-subscription-card:nth-last-child(-n+2) .niwwi-more-actions-list { top: auto !important; bottom: calc(100% + 6px) !important; }
}

/* 122 · Suscripciones: «Promedio al mes» y «Se planea desde» escritas normal. */
html[data-theme][data-theme] body #app #page .subscription-settings-summary article small { text-transform: none !important; letter-spacing: 0 !important; }

/* 124 · 132 · Sin avisos fijos: el estado solo aparece cuando hay algo que decir. */
html[data-theme][data-theme] body #app #page :is(.niwwi-ai-status, [data-niwwi-save-status]):empty { display: none !important; }
html[data-theme][data-theme] body #app #page .mova-ai-settings-foot > div:has(> [data-functional-ai-status-copy]:empty):has(> [data-functional-ai-status-models]:empty) { display: none !important; }

/* 129 · Sobrante: el mes actual abierto y «Ver otros meses» plegado. */
html[data-theme][data-theme] body #app #page .niwwi-remainder-others { margin-top: 14px !important; border-top: 1px solid var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .niwwi-remainder-others > summary {
  list-style: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  min-height: 48px !important;
  padding: 0 4px !important;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 650 !important;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page .niwwi-remainder-others > summary::-webkit-details-marker { display: none !important; }
html[data-theme][data-theme] body #app #page .niwwi-remainder-others > summary::after {
  content: "";
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page .niwwi-remainder-others[open] > summary::after { transform: translateY(2px) rotate(-135deg); }
html[data-theme][data-theme] body #app #page .remainder-settings .niwwi-remainder-others > .niwwi-remainder-review { margin-top: 12px !important; }
html[data-theme][data-theme] body #app #page .remainder-settings .niwwi-remainder-others .niwwi-remainder-month:first-of-type { margin-top: 0 !important; }
@media (min-width: 1101px) {
  html[data-theme][data-theme] body #app #page .remainder-settings > .niwwi-remainder-review,
  html[data-theme][data-theme] body #app #page .remainder-settings > .niwwi-remainder-others > .niwwi-remainder-review { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

/* 135 · Guía: los horarios dentro de «Actualizaciones y horarios». */
html[data-theme][data-theme] body #app #page .niwwi-guide .niwwi-guide-subhead {
  margin: 14px 4px 4px !important;
  color: var(--nw-ink) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
}

/* 110 · Empresas: sin códigos hex, el punto de color siempre visible y las dos muestras en una línea. */
html[data-theme][data-theme] body #app #page .settings-companies .theme-meta span i { width: 11px !important; height: 11px !important; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nw-ink) 30%, transparent) !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .settings-companies .theme-meta { display: flex !important; flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; gap: 8px !important; }
  html[data-theme][data-theme] body #app #page .settings-companies .theme-meta span { flex: 0 0 auto !important; width: auto !important; }
  /* 112 · Modelos: sin la etiqueta de arriba, el nombre queda centrado con la M y sin hueco antes de la línea. */
  html[data-theme][data-theme] body #app #page .settings-model-card .settings-model-copy > h2:only-child { margin: 0 !important; }
  html[data-theme][data-theme] body #app #page .settings-model-card:has(.settings-model-copy > h2:only-child) > .settings-card-actions { margin-top: 2px !important; }
}

/* ==== fin propuestas L4 ==== */

/* ==== Reparaciones ronda 1 ==== */

/* R1 · Deudas (teléfono): las cinco tarjetas del resumen usan el mismo margen
   interior de 18 px que las tres de arriba, así etiquetas y cifras caen en la
   misma vertical (x≈33). */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-debts-view .niwwi-debt-current-summary > article { padding: 14px 18px !important; }
}

/* R2 · Cuentas: «10 UBICACIONES» con su fondo de pastilla en todos los temas
   (en claro tenía el mismo fondo que la tarjeta y parecía mal alineado). */
html[data-theme][data-theme] body #app #page .account-distribution-card .simple-section-head > span {
  background: var(--nw-surface-2) !important;
  border-radius: 999px !important;
}

/* R3 · Historial: el detalle de cada movimiento no deja una sola palabra o
   letra en la última línea. */
html[data-theme][data-theme] body #app #page .fv-history-view .history-ledger-row > div small { text-wrap: pretty; }

/* R4 · Real (teléfono): en cada fila del resumen las cifras quedan a la misma
   altura aunque una etiqueta ocupe dos renglones. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .upgraded-registry .remainder-summary > .registry-kpi:not(.remaining) > strong { margin-top: auto !important; }
}

/* R5 · Movimientos y Calendario (teléfono): «Exportar CSV» y «Nuevo
   recordatorio» del ancho de su texto, a la izquierda, como «Exportar CSV»
   en Historial. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) :is(.fv-movements-view, .fv-calendar-view) .niwwi-page-header .head-actions > :is(button, .action-btn, .csv-actions) {
    align-self: flex-start !important;
    width: auto !important;
  }
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) :is(.fv-movements-view, .fv-calendar-view) .niwwi-page-header .head-actions > :is(button, .action-btn),
  html[data-theme][data-theme] body #app #page:not(.general-dashboard-page) :is(.fv-movements-view, .fv-calendar-view) .niwwi-page-header .head-actions > .csv-actions > :is(button, .action-btn) {
    width: auto !important;
    padding-inline: 16px !important;
  }
}

/* R6 · Centro de control (computadora): los botones de cada tarjeta con 12 px
   a los lados, para que los tres de Helion quepan en un renglón también en
   Gamer oscuro, donde la tarjeta es más angosta. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .catalog-card > .modal-actions > button { padding-inline: 12px !important; }
}

/* ==== fin reparaciones 1 ==== */

/* ==== Reparaciones ronda 2 ==== */

/* A · Historial: el detalle de cada movimiento solo se corta entre datos
   completos («13 oct», «Personal», «Salud», «Efectivo»). El «·» va al inicio
   de cada dato y queda fuera de la caja cuando ese dato empieza renglón, así
   ningún renglón empieza ni termina con un punto suelto. */
html[data-theme][data-theme] body #app #page .fv-history-view .history-ledger-row > div small.fv-meta-chunks {
  display: block !important;
  overflow: hidden !important;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-meta-chunks > span {
  display: flex !important;
  flex-wrap: wrap !important;
  margin-left: -0.8em !important;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-meta-chunk {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-meta-chunk:first-child { padding-left: 0.8em; }
html[data-theme][data-theme] body #app #page :is(.fv-history-view, .fv-movements-view) .fv-meta-sep {
  display: inline-block;
  width: 0.8em;
  font-style: normal;
  text-align: center;
}

/* F · Movimientos: «Generado bruto $1,080 USD» y «Helion 50%» en su propio
   renglón, sin dejar «50%» solo. */
html[data-theme][data-theme] body #app #page .fv-movements-view .fv-gross-note > .fv-share-chunk {
  display: block !important;
  white-space: nowrap !important;
}
html[data-theme][data-theme] body #app #page .fv-movements-view .fv-gross-note > .fv-share-chunk > .fv-meta-sep { display: none !important; }

/* B · Deudas: «Pendiente», «Congelada»… con fondo de pastilla en todos los
   temas, como «10 ubicaciones» en Cuentas. */
html[data-theme][data-theme] body #app #page .fv-debts-view .debt-account-card .debt-card-head > .debt-period-status {
  display: inline-flex !important;
  align-items: center !important;
  align-self: flex-start !important;
  min-height: 26px !important;
  padding: 3px 11px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: var(--nw-surface-2) !important;
  color: var(--nw-ink) !important;
  font-size: 12.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  white-space: nowrap !important;
}

/* E · Deudas: Préstamo A (préstamos personales) con «Registrar pago» y «Ver
   detalles» lado a lado, como Préstamo B y las tarjetas. */
html[data-theme][data-theme] body #app #page .fv-debts-view [data-personal-loan] > .modal-actions {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
}
html[data-theme][data-theme] body #app #page .fv-debts-view [data-personal-loan] > .modal-actions > button {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 44px !important;
  margin: 0 !important;
  padding-top: 10px !important;
  padding-bottom: 10px !important;
  line-height: 1.45 !important;
}
html[data-theme][data-theme] body #app #page .fv-debts-view [data-personal-loan] > .modal-actions > button:only-child { grid-column: 1 / -1; }

/* Q · Deudas: «Cobros esperados en Planeación» con el chevron a la derecha,
   como los demás desplegables. AA · Datos: «Cómo se obtiene este saldo» y
   «Actividad registrada del mes» igual que «Ver otros meses». */
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements) > summary {
  list-style: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  min-height: 44px !important;
  padding: 10px 2px !important;
  cursor: pointer;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 650 !important;
  line-height: 1.35 !important;
}
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements) > summary::-webkit-details-marker { display: none !important; }
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements) > summary::marker { content: "" !important; }
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements) > summary::before { content: none !important; display: none !important; }
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements) > summary::after {
  content: "" !important;
  flex: none !important;
  width: 7px !important;
  height: 7px !important;
  margin-right: 4px !important;
  border-right: 2px solid currentColor !important;
  border-bottom: 2px solid currentColor !important;
  transform: translateY(-2px) rotate(45deg) !important;
  transition: transform var(--nw-quick) var(--nw-ease-out) !important;
}
html[data-theme][data-theme] body #app #page :is(.debt-planned-receivables, .niwwi-remainder-calculation, .niwwi-remainder-economic, .niwwi-remainder-movements)[open] > summary::after { transform: translateY(2px) rotate(-135deg) !important; }
/* AA · «Ver otros meses» empieza en el mismo borde que el mes y la línea. */
html[data-theme][data-theme] body #app #page .niwwi-remainder-others > summary { padding: 0 2px 0 0 !important; }

/* D · Análisis: «Cómo va el mes» con el tamaño de los otros títulos de
   sección y «15 / 31 días» centrado en su línea. */
html[data-theme][data-theme] body #app #page .fv-analysis-view .forecast-month-review > header { align-items: center !important; }
html[data-theme][data-theme] body #app #page .fv-analysis-view .forecast-month-review > header > div > h2 {
  font-size: 21px !important;
  line-height: 1.3 !important;
}
html[data-theme][data-theme] body #app #page .fv-analysis-view .forecast-month-review > header > div > h2 > .niwwi-help-trigger {
  display: inline !important;
  min-height: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  color: inherit !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-align: left !important;
}
html[data-theme][data-theme] body #app #page .fv-analysis-view .forecast-month-review > header > span { align-self: center !important; }

/* M · Análisis, «Qué se cumplió y qué falta»: el mismo aire entre título y
   tabla que en las demás secciones; las líneas de cada fila van en la fila
   completa (no por celda), y en teléfono un desvanecido a la derecha avisa
   que la tabla sigue de lado. */
html[data-theme][data-theme] body #app #page .forecast-table-card > .analysis-section-copy { margin-bottom: 8px !important; }
html[data-theme][data-theme] body #app #page .forecast-table-card .forecast-table { border-collapse: collapse !important; }
html[data-theme][data-theme] body #app #page .forecast-table-card .forecast-table :is(td, th) { border-top: 0 !important; border-bottom: 0 !important; box-shadow: none !important; }
html[data-theme][data-theme] body #app #page .forecast-table-card .forecast-table tbody tr + tr { border-top: 1px solid var(--nw-line) !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .forecast-table-card .forecast-table-scroll {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 32px), transparent);
  }
  html[data-theme][data-theme] body #app #page .forecast-table-card .forecast-table :is(td, th):last-child { padding-right: 36px !important; }
}

/* H · «Ver todos»: una sola forma en toda la app, la de Análisis (renglón
   dentro de la tarjeta, texto a la izquierda y chevron a la derecha). */
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more > summary {
  justify-content: space-between !important;
  width: auto !important;
  margin: 0 !important;
  padding: 10px 2px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  font-size: 15px !important;
}
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more > summary::after { margin-right: 4px !important; }
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] { padding-bottom: 50px !important; }
html[data-theme][data-theme] body #app #page .fv-history-view .fv-history-more[open] > summary {
  bottom: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-confirmations .registry-pending-footer {
  display: block !important;
  margin-top: 8px !important;
  padding: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-confirmations .registry-pending-footer > [data-registry-pending-toggle] {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  width: 100% !important;
  min-height: 44px !important;
  margin: 0 !important;
  padding: 10px 2px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  text-align: left !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-confirmations .registry-pending-footer > [data-registry-pending-toggle]::after {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  margin-right: 4px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--nw-quick) var(--nw-ease-out);
}
html[data-theme][data-theme] body #app #page .registry-pending-confirmations .registry-pending-footer > [data-registry-pending-toggle][aria-expanded="true"]::after { transform: translateY(2px) rotate(-135deg); }
/* ¿Me alcanza?: «Ver todos (21)» dentro de la tarjeta de la lista, no suelto
   en el margen; al abrirla, baja al final. */
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline:has(+ .niwwi-cash-timeline-more) {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
  border-bottom: 0 !important;
  border-bottom-left-radius: 0 !important;
  border-bottom-right-radius: 0 !important;
}
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline + .niwwi-cash-timeline-more {
  position: relative !important;
  margin: 0 0 14px !important;
  padding: 0 14px 2px !important;
  background: var(--nw-surface) !important;
  border: 1px solid var(--nw-line) !important;
  border-top: 0 !important;
  border-radius: 0 0 var(--nw-r-card) var(--nw-r-card) !important;
}
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more > summary {
  border: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  background: none !important;
}
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more > .niwwi-cash-timeline {
  margin: 0 !important;
  padding: 0 !important;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
}
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more > .niwwi-cash-timeline li:first-child { border-top: 1px solid var(--nw-line) !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more[open] { padding-bottom: 46px !important; }
html[data-theme][data-theme] body #app #page .affordability-view .niwwi-cash-timeline-more[open] > summary {
  position: absolute !important;
  left: 14px !important;
  right: 14px !important;
  bottom: 2px !important;
}

/* I · Cuentas: el botón principal primero, como en Deudas y Ahorros. */
html[data-theme][data-theme] body #app #page .fv-accounts-view .niwwi-page-header .modal-actions > [data-open-account-settings] { order: -1 !important; }

/* J · Botones compactos con área de toque de 44 px y la esquina estándar. */
html[data-theme][data-theme] body #app #page .registry-head-actions > .niwwi-context-actions > button {
  min-height: 44px !important;
  border-radius: var(--nw-r-control) !important;
}
html[data-theme][data-theme] body #app #page .registry-pending-item > button { min-height: 44px !important; }
html[data-theme][data-theme] body #app #page .fv-accounts-view .live-account .account-head > .account-adjust-chip {
  min-height: 44px !important;
  height: 44px !important;
  border-radius: var(--nw-r-control) !important;
}
html[data-theme][data-theme] body #app #page .niwwi-mobile-money-summary > .niwwi-mobile-affordability > span:last-child { border-radius: var(--nw-r-control) !important; }

/* N · ¿Me alcanza?: casillas sin marcar con un borde que se ve (3:1). */
html[data-theme][data-theme] body #app #page .affordability-choice > input[type="checkbox"] {
  -webkit-appearance: none !important;
  appearance: none !important;
  display: grid !important;
  place-content: center !important;
  width: 20px !important;
  height: 20px !important;
  border: 2px solid var(--nw-muted) !important;
  border-radius: 5px !important;
  background: var(--nw-surface) !important;
  cursor: pointer;
}
html[data-theme][data-theme] body #app #page .affordability-choice > input[type="checkbox"]:checked {
  border-color: var(--nw-accent) !important;
  background: var(--nw-accent) !important;
}
html[data-theme][data-theme] body #app #page .affordability-choice > input[type="checkbox"]:checked::after {
  content: "";
  width: 10px;
  height: 5px;
  margin-top: -2px;
  border-left: 2.5px solid var(--nw-accent-ink);
  border-bottom: 2.5px solid var(--nw-accent-ink);
  transform: rotate(-45deg);
}
html[data-theme][data-theme] body #app #page .affordability-choice > input[type="checkbox"]:disabled { cursor: not-allowed; opacity: 1 !important; }
html[data-theme][data-theme] body #app #page .affordability-choice > input[type="checkbox"]:focus-visible { outline: 2px solid var(--nw-accent) !important; outline-offset: 2px !important; }

/* P · Filas de botones que se deslizan (Historial y Análisis, teléfono): un
   desvanecido a la derecha avisa que hay más, sin tapar el último botón. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page :is(.fv-history-view, .fv-analysis-view) .analysis-toolbar .analysis-business-switcher,
  html[data-theme][data-theme] body #app #page .fv-history-view .history-quick-ranges {
    padding-right: 28px !important;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
  }
}

/* K · Calendario: «Empresa / Tipo / Estado / Cuenta» con la misma letra que
   los filtros de Movimientos. */
html[data-theme][data-theme] body #app #page .fv-calendar-view .calendar-filter-toolbar label > span {
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-size: 13.5px !important;
  font-weight: 650 !important;
  color: var(--nw-muted) !important;
}
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .fv-calendar-view .calendar-filter-toolbar label > span { font-size: 12.5px !important; }
}

/* R · Niwwi AI: el aviso vacío ya no deja un hueco bajo el encabezado (sigue
   presente para lectores de pantalla). */
html[data-theme][data-theme] body #app #page .niwwi-ai-settings-page > .niwwi-ai-status:empty {
  display: block !important;
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  margin: -1px !important;
  padding: 0 !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  border: 0 !important;
}
/* La página es una rejilla con 16px entre bloques: el encabezado deja solo
   4px propios para que la primera tarjeta quede a 20px, como en las demás. */
html[data-theme][data-theme] body #app #page .niwwi-ai-settings-page > .page-head { margin-bottom: 4px !important; }

/* S · Elementos: «Conceptos» y «Categorías, modelos y tipos» como títulos de
   tarjeta, con la descripción debajo en gris. */
html[data-theme][data-theme] body #app #page .elements-settings-view .catalog-card-head small {
  display: block !important;
  color: var(--nw-ink) !important;
  font-size: 18px !important;
  font-weight: 650 !important;
  line-height: 1.3 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
}
html[data-theme][data-theme] body #app #page .elements-settings-view .catalog-card-head p {
  margin-top: 4px !important;
  color: var(--nw-muted) !important;
  font-size: 15px !important;
}

/* U · Datos: las notas de una línea ya no parecen campos vacíos (fondo
   suave, sin borde, con la barra de acento de las demás notas). */
html[data-theme][data-theme] body #app #page .configuration-deep-view p.remainder-rule {
  border: 0 !important;
  border-left: 3px solid var(--nw-accent) !important;
  border-radius: var(--nw-r-control) !important;
  background: var(--nw-surface-2) !important;
  box-shadow: none !important;
  padding: 10px 14px !important;
  min-height: 0 !important;
}

/* X · Configuración: las etiquetas pequeñas que quedaban en mayúsculas
   («Banco · MXN», «Crédito disponible»…) escritas normal, como las demás. */
html[data-theme][data-theme] body #app #page .configuration-deep-view :is(.settings-account-card > div > small, .accounts-credit-section .simple-section-head > div > small, .mova-ai-settings-head small, .settings-backup .analysis-card-head small, .fx-main-currency > small, .fx-example > small, .venuz-billing-settings .analysis-card-head small, .preference-section-head > small) {
  text-transform: none !important;
  letter-spacing: 0 !important;
}
html[data-theme][data-theme] body #app #page .configuration-deep-view .accounts-credit-section .simple-section-head > div > small::first-letter { text-transform: uppercase; }
html[data-theme][data-theme] body #app #page .configuration-deep-view .accounts-credit-section .simple-section-head > div > small { text-transform: lowercase !important; display: block !important; }

/* Y · Empresas: cada color se ve como muestra aunque sea casi blanco
   (cuadrito con orilla), no como un botón de opción. */
html[data-theme][data-theme] body #app #page .company-theme-card .theme-meta > span > i {
  border: 0 !important;
  border-radius: 4px !important;
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nw-ink) 28%, transparent) !important;
}

/* Z · Centro de control (computadora): «Más ajustes» ocupa la celda libre
   junto a «Apertura y ahorro», con botones del ancho de su texto. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .configuration-deep-view:has(> .catalog-grid + .niwwi-more-settings) {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px !important;
    align-items: stretch !important;
  }
  html[data-theme][data-theme] body #app #page .configuration-deep-view:has(> .catalog-grid + .niwwi-more-settings) > :not(.catalog-grid, .niwwi-more-settings) {
    grid-column: 1 / -1 !important;
    margin-bottom: 14px !important;
  }
  html[data-theme][data-theme] body #app #page .configuration-deep-view:has(> .catalog-grid + .niwwi-more-settings) > .catalog-grid { display: contents !important; }
  html[data-theme][data-theme] body #app #page .configuration-deep-view > .catalog-grid + .niwwi-more-settings { margin: 0 !important; }
  html[data-theme][data-theme] body #app #page .niwwi-more-settings > .modal-actions {
    display: flex !important;
    flex-wrap: wrap !important;
    grid-template-columns: none !important;
  }
  html[data-theme][data-theme] body #app #page .niwwi-more-settings > .modal-actions > button { width: auto !important; flex: 0 0 auto !important; }
}

/* AB · Teléfono: el contenido de estas tarjetas empieza en el mismo borde que
   el encabezado (x = 33), como en Deudas. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page :is(.subscription-settings-summary > article, .recurring-subscription-card, .models-settings-view .mova-review-allocations, .models-settings-view .helion-shared-allocation-setting, .models-settings-view .settings-model-card, .data-settings-view > section.card, .data-settings-view > .settings-data-grid > article.card, .upgraded-registry .remainder-summary > .registry-kpi) {
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
}

/* AC · Perfil: la descripción de cada opción no deja una palabra sola y
   «Opciones» / «Recordatorio» arrancan con el mismo aire que «Niwwi AI». */
html[data-theme][data-theme] body #app #page .preference-list > label > div > span { text-wrap: balance; }
html[data-theme][data-theme] body #app #page .configuration-deep-view > section.card.preference-list { padding-top: 18px !important; }
html[data-theme][data-theme] body #app #page .configuration-deep-view > section.card.preference-list > .preference-section-head { margin-top: 0 !important; padding-top: 0 !important; }

/* AE · Suscripciones (computadora): «Editar» y «⋯» juntos, como en Cuentas. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .subscription-card-actions > .niwwi-more-actions { margin-left: 0 !important; }
}

/* AG · Modelos (teléfono): «Administrar fuentes» debajo del texto, a lo ancho,
   sin partirse en dos renglones. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page section.settings-note:has(> [data-functional-model-sources]) {
    flex-wrap: wrap !important;
    grid-template-columns: minmax(0, 1fr) !important;
    padding-left: 18px !important;
    padding-right: 18px !important;
  }
  html[data-theme][data-theme] body #app #page section.settings-note > [data-functional-model-sources] {
    flex: 1 1 100% !important;
    width: 100% !important;
    min-height: 44px !important;
    white-space: nowrap !important;
  }
}

/* ==== fin reparaciones 2 ==== */

/* ==== Reparaciones ronda 3 ==== */

/* R3-1 · Movimientos: «Generado bruto $990 USD» nunca se corta. En el teléfono
   el renglón sobresale hacia la izquierda, bajo «Generación» (la columna del
   monto sigue estrecha para que el nombre no se recorte); «Helion 50%» queda
   debajo, así que el bloque es de dos líneas. */
html[data-theme][data-theme] body #app #page .fv-movements-view .fv-gross-note > .fv-gross-chunk { white-space: nowrap !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view .movement-ledger-row > strong > small.fv-gross-note {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
  }
}
/* Computadora: la columna MONTO se ensancha. Desde 1181 px «Helion 50%» va en
   la misma línea que «Generado bruto $990 USD» (renglón de 64 px, como los
   demás); más angosto va debajo (dos líneas). El ancho sale de FECHA («14 oct»
   cabe en 72–80 px) y de MOVIMIENTO, así CUENTA y CATEGORÍA no se recortan
   más que antes. Entre 1181 y 1399 px MOVIMIENTO cede lo que le sobraba
   («Transferencia» ocupa ~122 px), CUENTA no baja de 204 px para que
   «OnlyFans · generado en plataforma» se lea completo también a 1200 px,
   EMPRESA no baja de 166 px («EMPRESA / CATEGORÍA» en una línea y
   «Vivienda · Sin modelo asignado» completo) y el espacio entre columnas
   baja a 8 px. Si aun así no cabe (Gamer, ~1181–1215 px), lo cede FECHA:
   pasa de 72 px a no menos de 46 («14 oct» ocupa ~43 px) y MONTO de 232 a
   no menos de 226. */
@media (min-width: 1181px) and (max-width: 1399px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view :is(.movement-ledger-head, .movement-ledger-row) {
    grid-template-columns: minmax(46px, 72px) minmax(122px, .7fr) minmax(166px, 1fr) minmax(204px, 1.05fr) minmax(226px, 232px) !important;
    column-gap: 8px !important;
  }
}
@media (min-width: 1400px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view :is(.movement-ledger-head, .movement-ledger-row) {
    grid-template-columns: 80px minmax(170px, 1fr) minmax(130px, .95fr) minmax(135px, 1.05fr) 236px !important;
  }
}
@media (min-width: 1181px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view .fv-gross-note > .fv-share-chunk { display: inline !important; }
  html[data-theme][data-theme] body #app #page .fv-movements-view .fv-gross-note > .fv-share-chunk > .fv-meta-sep { display: inline !important; width: auto !important; }
}
@media (min-width: 901px) and (max-width: 1180px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view :is(.movement-ledger-head, .movement-ledger-row) {
    grid-template-columns: 88px minmax(160px, 1.35fr) minmax(110px, .9fr) minmax(120px, 1fr) 156px !important;
  }
}
@media (min-width: 761px) and (max-width: 900px) {
  html[data-theme][data-theme] body #app #page .fv-movements-view :is(.movement-ledger-head, .movement-ledger-row) {
    grid-template-columns: 82px minmax(150px, 1.4fr) minmax(120px, .85fr) 156px !important;
  }
}

/* R3-2 · Análisis (teléfono): «Resultado real del mes», «Cierre proyectado» y
   «Ahorro potencial total» ya no tienen nota abajo; sin el renglón vacío de la
   nota, el aire de abajo es igual al de arriba. */
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .analysis-forecast-summary > article:not(:has(> small)) {
    grid-row: span 2 !important;
  }
  html[data-theme][data-theme] body #app #page .analysis-forecast-summary > article:not(:has(> small)) > b { margin-bottom: 0 !important; }
}

/* R3-3 · Datos: «Fuente y fecha» y «Calcular con un cambio real» como
   renglón con el chevron a la derecha, igual que «Cómo se obtiene este saldo». */
html[data-theme][data-theme] body #app #page .fx-settings-editor details > summary {
  list-style: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  min-height: 44px !important;
  padding: 10px 2px !important;
  cursor: pointer;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 650 !important;
  line-height: 1.35 !important;
}
html[data-theme][data-theme] body #app #page .fx-settings-editor details > summary::-webkit-details-marker { display: none !important; }
html[data-theme][data-theme] body #app #page .fx-settings-editor details > summary::marker { content: "" !important; }
html[data-theme][data-theme] body #app #page .fx-settings-editor details > summary::before { content: none !important; display: none !important; }
html[data-theme][data-theme] body #app #page .fx-settings-editor details > summary::after {
  content: "" !important;
  flex: none !important;
  width: 7px !important;
  height: 7px !important;
  margin-right: 4px !important;
  border-right: 2px solid currentColor !important;
  border-bottom: 2px solid currentColor !important;
  transform: translateY(-2px) rotate(45deg) !important;
  transition: transform var(--nw-quick) var(--nw-ease-out) !important;
}
html[data-theme][data-theme] body #app #page .fx-settings-editor details[open] > summary::after { transform: translateY(2px) rotate(-135deg) !important; }

/* R3-4 · Empresas: el color se ve como muestra de color (barrita de 22 × 12
   con orilla de contraste 3:1) y sin el contorno de pastilla, así no parece
   una casilla ni un botón de opción. */
html[data-theme][data-theme] body #app #page .company-theme-card .theme-meta > span {
  display: inline-flex !important;
  align-items: center !important;
  gap: 7px !important;
  min-height: 0 !important;
  padding: 2px 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
}
html[data-theme][data-theme] body #app #page .company-theme-card .theme-meta > span > i {
  flex: none !important;
  width: 22px !important;
  height: 12px !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 4px !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--nw-ink) 55%, transparent) !important;
}
html[data-theme][data-theme] body #app #page .company-theme-card .theme-meta {
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 6px 18px !important;
}

/* R3-5 · Perfil: «Niwwi AI» con el mismo título que «Opciones» y
   «Recordatorio» (20 px y la barrita de color debajo). */
html[data-theme][data-theme] body #app #page .configuration-deep-view > section.card.niwwi-preferences > h2:first-child {
  margin: 5px 0 0 !important;
  font-size: 20px !important;
  line-height: 28px !important;
  letter-spacing: -0.3px !important;
}
html[data-theme][data-theme] body #app #page .configuration-deep-view > section.card.niwwi-preferences > h2:first-child::after {
  content: "" !important;
  display: block !important;
  width: 28px !important;
  height: 3px !important;
  margin-top: 8px !important;
  border-radius: 2px !important;
  background: var(--nw-bar-grad) !important;
}

/* R3-6 · Inicio: «Ver todos» de Movimientos recientes al pie de la tarjeta,
   como renglón con chevron (la forma de Historial, Real, ¿Me alcanza? y
   Análisis); el chevron apunta a la derecha porque abre Movimientos. */
html[data-theme][data-theme] body #app #page .spending-section .spending-list > .simple-section-head:has(> [data-page="movimientos"]) { display: contents !important; }
html[data-theme][data-theme] body #app #page .spending-section .spending-list > .simple-section-head > div { margin-bottom: 4px !important; }
html[data-theme][data-theme] body #app #page .spending-section .spending-list > .simple-section-head > button[data-page="movimientos"] {
  order: 1 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 12px !important;
  flex: none !important;
  width: 100% !important;
  min-height: 44px !important;
  margin: 4px 0 0 !important;
  padding: 10px 2px !important;
  border: 0 !important;
  border-top: 1px solid var(--nw-line) !important;
  border-radius: 0 !important;
  background: none !important;
  box-shadow: none !important;
  color: var(--nw-accent-text) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1.35 !important;
  text-align: left !important;
}
html[data-theme][data-theme] body #app #page .spending-section .spending-list > .simple-section-head > button[data-page="movimientos"]::after {
  content: "" !important;
  flex: none !important;
  width: 7px !important;
  height: 7px !important;
  margin-right: 4px !important;
  border-right: 2px solid currentColor !important;
  border-bottom: 2px solid currentColor !important;
  transform: rotate(-45deg) !important;
}
@media (min-width: 761px) {
  /* La tarjeta tiene scroll propio en computadora: el renglón queda fijo al pie. */
  html[data-theme][data-theme] body #app #page .spending-section .spending-list > .simple-section-head > button[data-page="movimientos"] {
    position: sticky !important;
    bottom: -24px !important;
    margin-bottom: -24px !important;
    padding-bottom: 18px !important;
    background: var(--nw-surface) !important;
    z-index: 1;
  }
}

/* ==== fin reparaciones 3 ==== */

/* ==== Inicio · Opción 2 (teléfono) ==== */
/* Rena chose «Opción 2» for the phone: «Puedes gastar este mes» first, then
   «Tus preguntas», and today's Inicio below inside «Ver Inicio completo».
   Everything here exists only on the phone General Inicio (classes set by
   mova-functional-views.js at ≤760 px); desktop never matches. */
@media (max-width: 760px) {
  /* Top bar: month pill after ☰, bell before the theme toggle. «Niwwi» and the
     date make room on Inicio only; every other screen keeps them. */
  html[data-theme][data-theme] body #app .main > .topbar.nw-inicio-topbar .mobile-title > span:not([class]),
  html[data-theme][data-theme] body #app .main > .topbar.nw-inicio-topbar .niwwi-today { display: none !important; }
  html[data-theme][data-theme] body #app .main > .topbar.nw-inicio-topbar .mobile-title { gap: 8px !important; min-width: 0; flex: 1 1 auto; }
  html[data-theme][data-theme] body #app .main > .topbar.nw-inicio-topbar .niwwi-utilities { gap: 8px !important; flex: none; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month {
    position: relative; display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 14px 0 12px; min-width: 0;
    max-width: calc(100vw - 14px * 2 - 44px * 3 - 8px * 3); box-sizing: border-box;
    border-radius: var(--nw-r-pill); border: 1px solid var(--nw-line); background: var(--nw-surface);
    color: var(--nw-ink); font: 700 14px/1 var(--nw-font); letter-spacing: -0.005em; white-space: nowrap;
    box-shadow: var(--nw-shadow);
  }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month b { font-weight: 700; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .mova-icon { width: 17px; height: 17px; flex: none; color: var(--nw-accent-text); }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month-text { display: inline-flex; min-width: 0; overflow: hidden; }
  /* Presupuesto: the pill is the existing month control (same menu, same handlers). */
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month.is-menu { padding: 0; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-wrap { position: static !important; display: flex !important; height: 100%; min-width: 0; margin: 0 !important; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip {
    display: inline-flex !important; align-items: center !important; gap: 8px !important; height: 100% !important; min-height: 0 !important; width: auto !important; min-width: 0;
    padding: 0 14px 0 12px !important; margin: 0 !important; border: 0 !important; border-radius: inherit !important;
    background: none !important; box-shadow: none !important; color: inherit !important; font: inherit !important;
  }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip > span:not(.dashboard-period-icon) { display: inline-flex !important; min-width: 0; overflow: hidden; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip b { font: inherit !important; color: inherit !important; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-icon { display: inline-grid !important; place-items: center; width: 17px !important; height: 17px !important; min-width: 0 !important; padding: 0 !important; margin: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; color: var(--nw-accent-text) !important; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-icon svg { width: 17px; height: 17px; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip > i { display: inline-grid; place-items: center; font-style: normal; color: var(--nw-muted); }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip > i .mova-icon { width: 15px; height: 15px; color: var(--nw-muted); }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-chip[aria-expanded="true"] > i { transform: rotate(180deg); }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-month .dashboard-period-menu {
    position: absolute !important; top: calc(100% + 6px) !important; left: 0 !important; right: auto !important; z-index: 60;
    width: min(300px, calc(100vw - 28px)) !important; transform-origin: top left;
  }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-bell {
    position: relative; flex: none; width: 44px; height: 44px; padding: 0; border-radius: 12px; border: 1px solid var(--nw-line);
    background: var(--nw-surface); color: var(--nw-ink); display: grid; place-items: center; box-shadow: var(--nw-shadow);
  }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-bell svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-bell .nw-inicio-bell-count {
    position: absolute; top: -5px; right: -6px; min-width: 20px; height: 20px; padding: 0 6px; box-sizing: border-box; border-radius: 999px;
    background: var(--nw-neg); color: #FFFFFF; font: 800 11px/16px var(--nw-font); text-align: center; border: 2px solid var(--nw-side);
    font-variant-numeric: tabular-nums; display: none;
  }
  html[data-theme][data-theme] body #app .main > .topbar .nw-inicio-bell.has-alerts .nw-inicio-bell-count { display: block; }
  /* Night: the badge is a light pink, so the number is dark (white on it is 2:1). */
  html[data-theme="dark"][data-theme] body #app .main > .topbar .nw-inicio-bell .nw-inicio-bell-count { color: var(--nw-side); }

  /* One month control: the in-page copy hides while the pill is in the top bar. */
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .fv-dashboard-context-row .dashboard-period-wrap { display: none !important; }

  /* Title row flattened; the three views move into the hero («Hoy ▾»). */
  /* Spacing above «Ver Inicio completo» is kept tight enough that the button clears the bottom bar on iPhones
     with a home indicator (bar raised by the 34 px inset): 390×844, Hoy, all four looks. */
  html[data-theme][data-theme] body #app #page.nw-inicio-on { padding-top: 8px !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on > .fv-dashboard-view.dashboard-top { margin: 0 !important; padding: 0 !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .dashboard-top .page-head > .head-actions { display: none !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .page-head.niwwi-page-header,
  html[data-appearance="kawaii"][data-theme] body #app #page.nw-inicio-on .page-head.niwwi-page-header {
    background: none !important; border: 0 !important; box-shadow: none !important; padding: 0 2px !important; margin: 0 !important; min-height: 0 !important; gap: 0 !important;
  }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .page-head.niwwi-page-header::before,
  html[data-theme][data-theme] body #app #page.nw-inicio-on .page-head.niwwi-page-header::after { display: none !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .niwwi-title-symbol { width: 38px !important; height: 38px !important; min-width: 38px !important; border-radius: 11px !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .page-head h1 { font-size: 29px !important; font-weight: 800 !important; letter-spacing: -0.03em !important; line-height: 1.1 !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .page-head p { display: none !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on .contextual-dashboard-mode { display: none !important; }

  /* Scope chips: 36 px pills, 44 px targets, a fade on the right when they scroll. */
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .fv-dashboard-context-row { margin: 6px 0 0 !important; padding: 0 !important; background: none !important; border: 0 !important; box-shadow: none !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher {
    display: flex !important; flex-wrap: nowrap !important; gap: 6px !important; padding: 0 14px 0 0 !important; margin: 0 -14px 0 0 !important; width: auto !important;
    background: none !important; border: 0 !important; box-shadow: none !important; border-radius: 0 !important; overflow-x: auto !important; scrollbar-width: none;
    -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent);
  }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher::-webkit-scrollbar { display: none; }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher > button {
    position: relative; isolation: isolate; display: inline-flex !important; align-items: center !important; gap: 7px !important;
    height: 44px !important; min-height: 44px !important; padding: 0 13px !important; flex: none !important; width: auto !important;
    border: 0 !important; background: none !important; box-shadow: none !important; border-radius: var(--nw-r-pill) !important;
    font: 600 13.5px/1 var(--nw-font) !important; letter-spacing: 0 !important; color: var(--nw-muted) !important;
  }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher > button::before {
    content: "" !important; display: block !important; position: absolute !important; inset: 4px 0 !important; z-index: -1 !important;
    width: auto !important; height: auto !important; border-radius: var(--nw-r-pill) !important; opacity: 1 !important; transform: none !important;
    border: 1px solid var(--nw-line) !important; background: var(--nw-surface) !important;
  }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher > button > i {
    width: 7px !important; height: 7px !important; border-radius: 999px !important; flex: none; background: var(--selector-accent) !important;
  }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher > button.active { color: var(--nw-accent-text) !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-scope .dashboard-switcher > button.active::before {
    background: var(--nw-accent-soft) !important; border-color: color-mix(in srgb, var(--nw-accent) 45%, transparent) !important;
  }

  /* Hero «Puedes gastar este mes»: the same recipe as DISPONIBLE DEL MES. */
  html[data-theme][data-theme] body #app #page .nw-inicio { display: block; margin: 0; }
  html[data-theme][data-theme] body #app #page .nw-inicio-hero {
    position: relative; margin: 10px 0 0; padding: 16px 18px 13px; border-radius: var(--nw-r-panel); overflow: visible;
    background: var(--nw-hero-bg); color: #FFFFFF;
    box-shadow: 0 18px 40px -20px var(--nw-glow), inset 0 1px 0 rgba(255, 255, 255, 0.16);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-hero.is-negative { background: var(--nw-hero-neg); }
  html[data-appearance="kawaii"][data-theme] body #app #page .nw-inicio-hero {
    background: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16)) top / 100% 7px no-repeat, var(--nw-hero-bg);
    border-radius: var(--nw-r-card); padding-top: 18px;
  }
  html[data-appearance="kawaii"][data-theme] body #app #page .nw-inicio-hero.is-negative {
    background: linear-gradient(rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.16)) top / 100% 7px no-repeat, var(--nw-hero-neg);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-hero-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 20px; }
  html[data-theme][data-theme] body #app #page .nw-inicio-kicker {
    margin: 0; padding: 0; font: 800 12px/1.2 var(--nw-font); letter-spacing: 0.08em; text-transform: uppercase;
    color: rgba(255, 255, 255, 0.92); background: none; -webkit-text-fill-color: currentColor;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-kicker::after { display: none !important; content: none !important; }
  /* Gamer cute: small labels speak in the pixel face, as the other kickers do (:3948). The base type rule is
     !important, so these are too. */
  html[data-appearance="kawaii"][data-theme] body #app #page .nw-inicio-kicker { font-family: var(--nw-font-label) !important; font-weight: 500 !important; letter-spacing: 0.04em !important; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode { position: relative; flex: none; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-trigger {
    display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 10px; margin: -12px -10px -12px 0;
    background: none; border: 0; border-radius: 10px; box-shadow: none; color: rgba(255, 255, 255, 0.96); font: 600 12.5px/1 var(--nw-font);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-trigger .mova-icon { width: 14px; height: 14px; transition: transform 180ms var(--nw-ease-out); }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-trigger[aria-expanded="true"] .mova-icon { transform: rotate(180deg); }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu {
    position: absolute; top: calc(100% + 8px); right: -6px; z-index: 5; min-width: 190px; padding: 6px; display: grid; gap: 2px;
    background: var(--nw-surface); color: var(--nw-ink); border: 1px solid var(--nw-line); border-radius: 12px;
    box-shadow: var(--nw-shadow-pop); transform-origin: top right;
    animation: nw-inicio-pop-in 160ms var(--nw-ease-out) both;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu[hidden] { display: none; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu.is-closing { animation: nw-inicio-pop-out 120ms var(--nw-ease-out) both; pointer-events: none; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu > button {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 44px; padding: 0 12px; margin: 0;
    border: 0; border-radius: 8px; background: none; box-shadow: none; font: 600 14px/1.2 var(--nw-font); color: var(--nw-ink); text-align: left;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu > button[aria-pressed="true"] { background: var(--nw-accent-soft); color: var(--nw-accent-text); }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu > button .mova-icon { width: 16px; height: 16px; }
  html[data-theme][data-theme] body #app #page .nw-inicio-hero-main {
    display: block; width: 100%; padding: 0; margin: 6px 0 0; background: none; border: 0; box-shadow: none; color: inherit;
    text-align: left; border-radius: 10px; font: inherit;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-big {
    display: block; color: #FFFFFF; font: 800 clamp(30px, 10.3vw, 40px)/1.05 var(--nw-font); letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-big .budget-amount-unknown { font-size: 0.62em; color: #FFFFFF; }
  html[data-theme][data-theme] body #app #page .nw-inicio-sub { display: block; margin-top: 4px; font: 500 13.5px/1.35 var(--nw-font); color: rgba(255, 255, 255, 0.96); }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo {
    display: grid; grid-template-columns: 1fr 1fr; margin-top: 11px; padding-top: 11px; border-top: 1px solid rgba(255, 255, 255, 0.2);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo.is-single { grid-template-columns: 1fr; }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo > button {
    display: flex; flex-direction: column; justify-content: center; gap: 3px; min-width: 0; min-height: 44px; padding: 0; margin: 0;
    background: none; border: 0; border-radius: 8px; box-shadow: none; color: inherit; text-align: left; font: inherit;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo > button + button { border-left: 1px solid rgba(255, 255, 255, 0.2); border-radius: 0 8px 8px 0; padding-left: 14px; }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo small { display: block; font: 600 12px/1.25 var(--nw-font); color: rgba(255, 255, 255, 0.96); letter-spacing: 0; text-transform: none; }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo b { display: block; font: 800 19px/1.2 var(--nw-font); color: #FFFFFF; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo .nw-inicio-of b { color: var(--nw-hero-of); }
  html[data-theme][data-theme] body #app #page .nw-inicio-duo b .budget-amount-unknown { font-size: 14px; color: #FFFFFF; }
  html[data-theme][data-theme] body #app #page .nw-inicio-hero :is(button):focus-visible { outline-color: #FFFFFF !important; }

  /* «Tus preguntas»: one list, five answers that open their own screens. */
  html[data-theme][data-theme] body #app #page .nw-inicio-label {
    margin: 14px 4px 7px; padding: 0; font: 700 11.5px/1.2 var(--nw-font-label); letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--nw-muted); background: none; -webkit-text-fill-color: currentColor;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-label::after { display: none !important; content: none !important; }
  html[data-appearance="kawaii"][data-theme] body #app #page .nw-inicio-label { font-family: var(--nw-font-label) !important; font-weight: 500 !important; letter-spacing: 0.04em !important; }
  /* Gamer cute day: the room background is pink, so the label goes a step darker to stay above 4.5:1. */
  html[data-appearance="kawaii"][data-theme="light"] body #app #page .nw-inicio-label { color: color-mix(in srgb, var(--nw-muted) 75%, var(--nw-ink)); }
  html[data-theme][data-theme] body #app #page .nw-inicio-questions {
    list-style: none; margin: 0; padding: 1px 0; background: var(--nw-surface);
    border: 1px solid var(--nw-line); border-radius: var(--nw-r-card); box-shadow: var(--nw-shadow);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-questions > li { margin: 0; padding: 0; }
  html[data-theme][data-theme] body #app #page .nw-inicio-questions > li + li { border-top: 1px solid var(--nw-line); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q {
    display: flex; align-items: center; gap: 12px; width: 100%; min-height: 56px; padding: 0 12px 0 13px; margin: 0;
    background: none; border: 0; border-radius: var(--nw-r-card); box-shadow: none; color: var(--nw-ink); text-align: left; font: inherit;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon { flex: none; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon .mova-icon { width: 19px; height: 19px; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon.tone-neg { background: var(--nw-neg-soft); color: var(--nw-neg); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon.tone-warn { background: var(--nw-warn-soft); color: var(--nw-warn); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon.tone-acc { background: var(--nw-accent-soft); color: var(--nw-accent-text); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-icon.tone-hel { background: color-mix(in srgb, var(--nw-helion) 14%, transparent); color: var(--nw-helion); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text { flex: 1 1 auto; min-width: 0; display: block; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text b { display: block; font: 700 14.5px/1.25 var(--nw-font); letter-spacing: -0.01em; color: var(--nw-ink); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text small {
    display: block; margin-top: 2px; font: 500 12.5px/1.3 var(--nw-font); color: var(--nw-muted);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: 0; text-transform: none;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text small .is-overdue { color: var(--nw-neg); font-weight: 700; }
  /* A long category name shortens on its own; the prefix and the amount around it stay whole. */
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text small:has(> .nw-inicio-trunc) { display: flex; white-space: pre; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-text small > .nw-inicio-trunc { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-value {
    flex: none; max-width: 42%; font: 800 15.5px/1.2 var(--nw-font); font-variant-numeric: tabular-nums; text-align: right;
    color: var(--nw-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-value:empty { display: none; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-value.tone-neg { color: var(--nw-neg); }
  html[data-theme][data-theme] body #app #page .nw-inicio-verdict {
    flex: none; display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px;
    font: 800 13.5px/1 var(--nw-font); background: var(--nw-surface-2); color: var(--nw-muted); white-space: nowrap;
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-verdict[data-nw-inicio-verdict="yes"] { background: var(--nw-pos-soft); color: var(--nw-pos); }
  html[data-theme][data-theme] body #app #page .nw-inicio-verdict[data-nw-inicio-verdict="no"] { background: var(--nw-neg-soft); color: var(--nw-neg); }
  html[data-theme][data-theme] body #app #page .nw-inicio-verdict[data-nw-inicio-verdict="pending"] { background: var(--nw-warn-soft); color: var(--nw-warn); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-chev { flex: none; display: grid; place-items: center; margin-left: -4px; color: var(--nw-muted); }
  html[data-theme][data-theme] body #app #page .nw-inicio-q-chev .mova-icon { width: 18px; height: 18px; }
  html[data-theme][data-theme] body #app #page .nw-inicio-q.is-filled :is([data-nw-inicio-detail], [data-nw-inicio-value], .nw-inicio-verdict) { animation: nw-inicio-fade 160ms var(--nw-ease-out) both; }
  html[data-theme][data-theme] body #app #page .nw-inicio-more {
    display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 44px; margin: 10px 0 0; padding: 0 16px;
    border: 1px solid var(--nw-line); border-radius: 12px; background: var(--nw-surface-2); box-shadow: none;
    font: 700 14px/1.2 var(--nw-font); color: var(--nw-accent-text);
  }
  html[data-theme][data-theme] body #app #page .nw-inicio-more .mova-icon { width: 17px; height: 17px; transition: transform 180ms var(--nw-ease-out); }
  html[data-theme][data-theme] body #app #page .nw-inicio-more[aria-expanded="true"] .mova-icon { transform: rotate(180deg); }

  /* «Ver Inicio completo»: every child of #page after the head and the new section is today's Inicio. Matched
     as children of #page (one parent check per node; a «.nw-inicio ~ *» selector walks the siblings of every
     node in the page and slowed long lists). */
  html[data-theme][data-theme] body #app #page.nw-inicio-on.nw-inicio-collapsed > :not(.dashboard-top):not(.nw-inicio) { display: none !important; }
  html[data-theme][data-theme] body #app #page.nw-inicio-on > :not(.dashboard-top):not(.nw-inicio) { scroll-margin-top: calc(var(--mova-mobile-header, 58px) + var(--mova-safe-top, 0px) + 12px); }
}
@keyframes nw-inicio-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes nw-inicio-pop-in { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
@keyframes nw-inicio-pop-out { from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.96); } }
@media (max-width: 760px) and (prefers-reduced-motion: reduce) {
  html[data-theme][data-theme] body #app #page :is(.nw-inicio-q, .nw-inicio-hero-main, .nw-inicio-duo > button):active { transform: none !important; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu { animation-name: nw-inicio-fade !important; }
  html[data-theme][data-theme] body #app #page .nw-inicio-mode-menu.is-closing { animation-name: none !important; }
}
/* Desktop safety: the phone-only nodes never show above 760 px (they are also removed there). */
@media (min-width: 761px) {
  html[data-theme][data-theme] body :is(.nw-inicio, .nw-inicio-month, .nw-inicio-bell) { display: none !important; }
}
/* ==== fin Inicio · Opción 2 ==== */


/* ==== Reparaciones ronda 4 ==== */

/* R4-1 · Inicio (computadora): «Movimientos recientes» muestra solo renglones
   completos. Las dos tarjetas miden 413 px: encabezado (90 px; el título
   cambia de tamaño con el ancho, así que su renglón queda fijo en 33 px),
   cuatro renglones de 68.5 px y «Ver todos» (49 px), así el renglón fijo
   empieza en la raya del cuarto movimiento y el resto sigue en el
   desplazamiento de la tarjeta. «Gastos por categoría» empieza a la misma
   altura que los movimientos y termina en su cuarta categoría, sin asomar la
   quinta. */
@media (min-width: 761px) {
  html[data-theme][data-theme] body #app #page .fv-dashboard-view ~ .spending-section :is(.spending-list, .category-card) > .simple-section-head h2 { line-height: 33px !important; }
  html[data-theme][data-theme] body #app #page .fv-dashboard-view ~ .spending-section :is(.spending-list, .category-card) {
    height: 413px !important;
    min-height: 413px !important;
    max-height: 413px !important;
  }
  html[data-theme][data-theme] body #app #page .fv-dashboard-view ~ .spending-section .category-card { padding-bottom: 20px !important; }
  html[data-theme][data-theme] body #app #page .fv-dashboard-view ~ .spending-section .category-card > .category-list { margin-top: 4px !important; }
}

/* R4-4 · Configuración › Datos: todas las tarjetas con el título de
   Preferencias (20/28 px y la barrita de color debajo) y el texto de abajo a
   14/21 px en el color tenue, 12 px bajo la barrita. «Niwwi AI» deja el icono
   del encabezado para empezar en la misma columna que las demás. Las seis
   tarjetas tienen el mismo margen interior (20 px; 16/18 px en el teléfono) y
   la etiqueta pequeña de arriba, donde la hay, mide 18 px y queda a 4 px del
   título. */
html[data-theme][data-theme] body #app #page .data-settings-view > :is(.mova-ai-settings, .venuz-billing-settings, .remainder-settings) { padding: 20px !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .data-settings-view > :is(.mova-ai-settings, .venuz-billing-settings, .remainder-settings) { padding: 16px 18px !important; }
}
html[data-theme][data-theme] body #app #page .data-settings-view > .niwwi-data-center > header > h2,
html[data-theme][data-theme] body #app #page .data-settings-view > section[class="card"] > h2,
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head h2,
html[data-theme][data-theme] body #app #page .data-settings-view > :is(.settings-backup, .venuz-billing-settings, .remainder-settings) > .analysis-card-head h2 {
  margin: 0 !important;
  padding: 0 !important;
  font-size: 20px !important;
  line-height: 28px !important;
  letter-spacing: -0.3px !important;
}
html[data-theme][data-theme] body #app #page .data-settings-view > .niwwi-data-center > header > h2::after,
html[data-theme][data-theme] body #app #page .data-settings-view > section[class="card"] > h2::after,
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head h2::after {
  content: "" !important;
  display: block !important;
  width: 28px !important;
  height: 3px !important;
  margin-top: 8px !important;
  border-radius: 2px !important;
  background: var(--nw-bar-grad) !important;
}
html[data-theme][data-theme] body #app #page .data-settings-view > .niwwi-data-center > header + details { margin-top: 12px !important; }
html[data-theme][data-theme] body #app #page .data-settings-view > .niwwi-data-center > p,
html[data-theme][data-theme] body #app #page .data-settings-view > section[class="card"] > h2 + p,
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head h2 + p,
html[data-theme][data-theme] body #app #page .data-settings-view > :is(.settings-backup, .venuz-billing-settings, .remainder-settings) > .analysis-card-head h2 + p {
  margin-top: 12px !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: var(--nw-muted) !important;
}
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head small:has(+ h2),
html[data-theme][data-theme] body #app #page .data-settings-view > :is(.settings-backup, .venuz-billing-settings) > .analysis-card-head small:has(+ h2) {
  display: block !important;
  margin: 0 !important;
  line-height: 18px !important;
}
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head small + h2,
html[data-theme][data-theme] body #app #page .data-settings-view > :is(.settings-backup, .venuz-billing-settings) > .analysis-card-head small + h2 { margin-top: 4px !important; }
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings .mova-ai-settings-mark { display: none !important; }
html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head { grid-template-columns: minmax(0, 1fr) auto !important; }
@media (max-width: 760px) {
  html[data-theme][data-theme] body #app #page .data-settings-view > .mova-ai-settings > .mova-ai-settings-head { grid-template-columns: minmax(0, 1fr) !important; }
}

/* R4-5 · Configuración › Deudas (computadora): tarjetas y préstamos con las
   mismas columnas. La de botones tiene ancho fijo y los alinea a la derecha, y
   «Revisar saldo y corte» / «Revisar pagos y saldo» miden lo mismo, así la
   fecha y «Editar datos» quedan en la misma vertical en toda la lista. Los
   botones se acomodan desde la derecha (×, Revisar, Editar, Planear): si no
   caben en un renglón (~1151–1300 px) «Planear uso de crédito» sube solo al
   renglón de arriba y «Editar datos · Revisar · ×» siguen juntos abajo, en
   la misma vertical que en los préstamos. En pantalla y al tabular el orden
   sigue siendo Planear, Editar, Revisar, ×. */
@media (min-width: 1151px) {
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card:has(> .settings-card-actions [data-functional-debt-edit]) {
    grid-template-columns: 42px minmax(180px, 1.5fr) minmax(160px, .8fr) minmax(0, 520px) !important;
  }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) {
    flex-direction: row-reverse !important;
    flex-wrap: wrap-reverse !important;
    justify-content: flex-start !important;
  }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) > [data-fv-plan-credit-use] { order: 4 !important; }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) > [data-functional-debt-edit] { order: 3 !important; }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) > :is([data-functional-card-statement], [data-config-debt-review]) { order: 2 !important; }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) > [data-functional-debt-delete] { order: 1 !important; }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions:has([data-functional-debt-edit]) > .icon-button.danger { margin-left: 0 !important; }
  html[data-theme][data-theme] body #app #page .settings-account-list > .settings-account-card > .settings-card-actions > :is([data-functional-card-statement], [data-config-debt-review]) { min-width: 168px !important; }
}

/* ==== fin reparaciones 4 ==== */
