/* Finanzas personales — paridad mockup escritorio */

.app-body.finanzas-mode .main-panel {
  padding: 0;
  background:
    radial-gradient(ellipse 65% 40% at 75% 0%, rgba(88, 28, 180, 0.2), transparent 55%),
    linear-gradient(180deg, #05050f 0%, #0a0c16 45%, #070912 100%);
}

.app-body.finanzas-mode #view-finanzas.view.active {
  display: flex;
  flex-direction: column;
  height: 100%;
}

#view-finanzas { position: relative; }

.fnz-shell {
  position: relative;
  --fnz-bg: #05050f;
  --fnz-card: rgba(14, 16, 28, 0.88);
  --fnz-border: rgba(148, 163, 184, 0.12);
  --fnz-purple: #8b5cf6;
  --fnz-purple-hi: #a78bfa;
  --fnz-green: #10b981;
  --fnz-red: #ef4444;
  --fnz-text: #f1f5f9;
  --fnz-muted: #94a3b8;
  color: var(--fnz-text);
  padding: 14px 20px 12px;
  min-height: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.fnz-shell.fnz-locked .fnz-content { filter: blur(8px); pointer-events: none; user-select: none; }
.fnz-lock-overlay {
  position: absolute; inset: 0; z-index: 50;
  display: flex; align-items: center; justify-content: center;
  background: rgba(5, 5, 15, 0.75);
  backdrop-filter: blur(6px);
}
.fnz-lock-card {
  background: var(--fnz-card); border: 1px solid var(--fnz-border);
  border-radius: 16px; padding: 28px 32px; text-align: center; max-width: 320px;
}
.fnz-lock-card h3 { margin: 0 0 8px; font-size: 18px; }
.fnz-lock-card p { margin: 0 0 16px; color: var(--fnz-muted); font-size: 13px; }
.fnz-lock-card input {
  width: 100%; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--fnz-border);
  background: rgba(0,0,0,0.35); color: var(--fnz-text); text-align: center; letter-spacing: 0.3em;
  margin-bottom: 12px;
}

.fnz-header { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px 16px; }
.fnz-title-block h1 { margin: 0; font-size: 22px; font-weight: 700; }
.fnz-title-block p { margin: 4px 0 0; font-size: 12px; color: var(--fnz-muted); }
.fnz-header-controls {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-left: auto;
}
.fnz-select, .fnz-search {
  border: 1px solid var(--fnz-border); background: rgba(12, 14, 26, 0.95);
  color: var(--fnz-text); border-radius: 10px; padding: 8px 12px; font-size: 13px;
}
.fnz-search { min-width: 200px; }
.fnz-icon-btn {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--fnz-border);
  background: rgba(12, 14, 26, 0.9); color: var(--fnz-text); cursor: pointer;
  display: grid; place-items: center; position: relative;
}
.fnz-icon-btn:hover { border-color: var(--fnz-purple); }
.fnz-badge-dot {
  position: absolute; top: 2px; right: 2px; min-width: 16px; height: 16px; border-radius: 999px;
  background: var(--fnz-purple); font-size: 10px; font-weight: 700; display: grid; place-items: center;
}

.fnz-tabs { display: flex; flex-wrap: wrap; gap: 4px; border-bottom: 1px solid var(--fnz-border); }
.fnz-tab {
  padding: 10px 14px; border: none; background: transparent; color: var(--fnz-muted);
  font-size: 13px; font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.fnz-tab:hover { color: var(--fnz-text); }
.fnz-tab.active { color: var(--fnz-purple-hi); border-bottom-color: var(--fnz-purple); }
.fnz-tab .fnz-tab-badge {
  display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 999px;
  background: rgba(139, 92, 246, 0.25); color: var(--fnz-purple-hi); font-size: 11px;
}

.fnz-kpi-row { display: grid; grid-template-columns: 1.4fr 1fr 0.9fr; gap: 12px; }
@media (max-width: 1100px) { .fnz-kpi-row { grid-template-columns: 1fr; } }
.fnz-card {
  background: var(--fnz-card); border: 1px solid var(--fnz-border); border-radius: 14px;
  padding: 16px 18px; position: relative; overflow: hidden;
}
.fnz-card-label { font-size: 11px; color: var(--fnz-muted); text-transform: uppercase; letter-spacing: 0.06em; }
.fnz-balance-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-top: 6px; }
.fnz-balance { font-size: 32px; font-weight: 800; letter-spacing: -0.02em; }
.fnz-balance.fnz-hidden { filter: blur(6px); }
.fnz-eye-btn { border: none; background: transparent; color: var(--fnz-muted); cursor: pointer; font-size: 18px; }
.fnz-income-expense { display: flex; gap: 20px; margin-top: 10px; font-size: 13px; }
.fnz-income-expense .inc { color: var(--fnz-green); }
.fnz-income-expense .exp { color: var(--fnz-red); }
.fnz-compare { margin-top: 8px; font-size: 12px; color: var(--fnz-green); }
.fnz-compare.neg { color: var(--fnz-red); }
.fnz-spark { width: 120px; height: 48px; flex-shrink: 0; }
.fnz-spark svg { width: 100%; height: 100%; }
.fnz-spark-labels { display: flex; justify-content: space-between; font-size: 9px; color: var(--fnz-muted); margin-top: 2px; }

.fnz-budget-bar { margin: 10px 0 6px; height: 8px; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; }
.fnz-budget-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #7c3aed, #a78bfa); }
.fnz-budget-amt { font-size: 22px; font-weight: 700; }
.fnz-budget-sub { font-size: 12px; color: var(--fnz-muted); margin-top: 4px; }
.fnz-mascot { position: absolute; right: 12px; bottom: 8px; font-size: 42px; opacity: 0.9; }

.fnz-accounts-icons { display: flex; gap: 8px; margin: 10px 0; font-size: 28px; }
.fnz-sync-ok { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fnz-green); }
.fnz-btn {
  border: none; border-radius: 10px; padding: 8px 14px; font-size: 13px; font-weight: 600;
  cursor: pointer; background: rgba(139, 92, 246, 0.2); color: var(--fnz-purple-hi);
  border: 1px solid rgba(139, 92, 246, 0.35);
}
.fnz-btn:hover { background: rgba(139, 92, 246, 0.35); }
.fnz-btn.primary { background: linear-gradient(135deg, #7c3aed, #8b5cf6); color: #fff; border: none; }
.fnz-btn.ghost { background: transparent; border-color: var(--fnz-border); color: var(--fnz-muted); }
.fnz-btn.sm { padding: 5px 10px; font-size: 12px; }

.fnz-quick { display: flex; flex-wrap: wrap; gap: 8px; }
.fnz-quick .fnz-btn { display: inline-flex; align-items: center; gap: 6px; }

.fnz-grid-main { display: grid; grid-template-columns: 1.5fr 1fr; gap: 12px; align-items: start; }
@media (max-width: 1100px) { .fnz-grid-main { grid-template-columns: 1fr; } }
.fnz-grid-side { display: flex; flex-direction: column; gap: 12px; }

.fnz-table-wrap { overflow: auto; max-height: 340px; }
.fnz-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fnz-table th {
  text-align: left; padding: 8px 10px; color: var(--fnz-muted); font-weight: 600;
  font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em;
  border-bottom: 1px solid var(--fnz-border); position: sticky; top: 0; background: var(--fnz-card);
}
.fnz-table td { padding: 10px; border-bottom: 1px solid rgba(148,163,184,0.06); vertical-align: middle; }
.fnz-table tr:hover td { background: rgba(139, 92, 246, 0.04); }
.fnz-mov-icon {
  width: 32px; height: 32px; border-radius: 8px; display: grid; place-items: center;
  background: rgba(255,255,255,0.05); margin-right: 10px; flex-shrink: 0;
}
.fnz-mov-cell { display: flex; align-items: center; }
.fnz-cat-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 6px; }
.fnz-amt-pos { color: var(--fnz-green); font-weight: 600; }
.fnz-amt-neg { color: var(--fnz-red); font-weight: 600; }
.fnz-amt.fnz-hidden { filter: blur(5px); }

.fnz-st { display: inline-block; padding: 3px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; background: transparent; }
.fnz-st-auto { border: 1px solid rgba(148,163,184,0.35); color: #94a3b8; }
.fnz-st-ok { border: 1px solid rgba(16,185,129,0.45); color: #6ee7b7; }
.fnz-st-rec { border: 1px solid rgba(96,165,250,0.45); color: #93c5fd; }
.fnz-st-ret { border: 1px solid rgba(234,179,8,0.4); color: #fde047; }
.fnz-st-nc { border: 1px solid rgba(148,163,184,0.25); color: #cbd5e1; }
.fnz-st-pend { border: 1px solid rgba(249,115,22,0.45); color: #fdba74; }
.fnz-st-dup, .fnz-st-rej { border: 1px solid rgba(239,68,68,0.35); color: #fca5a5; }

.fnz-alert {
  display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; font-size: 13px;
}
.fnz-alert.warn { background: rgba(249, 115, 22, 0.12); border: 1px solid rgba(249, 115, 22, 0.35); }
.fnz-alert.info { background: rgba(59, 130, 246, 0.1); border: 1px solid rgba(59, 130, 246, 0.3); }
.fnz-alert-actions { margin-left: auto; display: flex; gap: 6px; }

.fnz-goal-ring {
  width: 56px; height: 56px; border-radius: 50%;
  background: conic-gradient(var(--fnz-purple) var(--fnz-pct), rgba(255,255,255,0.08) 0);
  display: grid; place-items: center; font-size: 13px; font-weight: 700; flex-shrink: 0;
}
.fnz-goal-ring span { width: 42px; height: 42px; border-radius: 50%; background: var(--fnz-card); display: grid; place-items: center; }
.fnz-goal-row { display: flex; gap: 14px; align-items: center; margin-top: 10px; }
.fnz-goal-bar { flex: 1; height: 6px; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; margin-top: 8px; }
.fnz-goal-fill { height: 100%; background: linear-gradient(90deg, #7c3aed, #c084fc); border-radius: 999px; }

.fnz-sub-list { list-style: none; margin: 10px 0 0; padding: 0; }
.fnz-sub-list li {
  display: flex; justify-content: space-between; align-items: center; padding: 8px 0;
  border-bottom: 1px solid rgba(148,163,184,0.06); font-size: 13px;
}
.fnz-sub-price { font-weight: 600; }

.fnz-insight {
  display: flex; gap: 12px; align-items: flex-start;
  background: linear-gradient(135deg, rgba(88,28,135,0.25), rgba(14,16,28,0.9));
  border: 1px solid rgba(139, 92, 246, 0.25);
}
.fnz-insight-avatar { font-size: 36px; line-height: 1; }
.fnz-insight p { margin: 6px 0 0; font-size: 13px; color: var(--fnz-muted); line-height: 1.45; }
.fnz-link { color: var(--fnz-purple-hi); font-size: 12px; cursor: pointer; border: none; background: none; padding: 0; }

.fnz-footer {
  display: flex; flex-wrap: wrap; gap: 16px 24px; padding: 10px 4px 4px;
  border-top: 1px solid var(--fnz-border); font-size: 11px; color: var(--fnz-muted); margin-top: auto;
}
.fnz-footer span { display: inline-flex; align-items: center; gap: 6px; }
.fnz-footer .ok { color: var(--fnz-green); }

.fnz-section-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.fnz-section-head h3 { margin: 0; font-size: 15px; font-weight: 700; }
.fnz-settings-block { margin-bottom: 4px; }
.fnz-settings-title { margin: 0 0 8px; font-size: 13px; font-weight: 600; color: var(--fnz-text, #e2e8f0); }
.fnz-settings-divider { border: none; border-top: 1px solid var(--fnz-border, rgba(255,255,255,.08)); margin: 14px 0; }

.fnz-budget-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.fnz-budget-cat { padding: 12px; border-radius: 12px; border: 1px solid var(--fnz-border); background: rgba(0,0,0,0.2); }
.fnz-budget-cat h4 { margin: 0 0 8px; font-size: 13px; }

.fnz-modal-backdrop {
  position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,0.65);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
.fnz-modal {
  background: #0e101c; border: 1px solid var(--fnz-border); border-radius: 16px;
  width: min(480px, 100%); max-height: 90vh; overflow: auto; padding: 20px 22px;
}
.fnz-modal h3 { margin: 0 0 14px; font-size: 17px; }
.fnz-field { margin-bottom: 12px; }
.fnz-field label { display: block; font-size: 12px; color: var(--fnz-muted); margin-bottom: 4px; }
.fnz-field input, .fnz-field select, .fnz-field textarea {
  width: 100%; box-sizing: border-box; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--fnz-border); background: rgba(0,0,0,0.35); color: var(--fnz-text); font-size: 13px;
}
.fnz-modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }

.fnz-empty { padding: 32px; text-align: center; color: var(--fnz-muted); font-size: 14px; }
.fnz-content { position: relative; flex: 1; display: flex; flex-direction: column; gap: 14px; min-height: 0; }
.fnz-analysis-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.fnz-stat-big { font-size: 28px; font-weight: 800; margin: 6px 0; }

/* ── Escritorio — paridad mockup ── */
.fnz-root--desk { width: 100%; }
.fnz-root--desk .fnz-shell { max-width: none; width: 100%; padding: 16px 22px 10px; }
.fnz-desk-select-wrap {
  display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid var(--fnz-border); border-radius: 10px;
  background: rgba(12, 14, 26, 0.95); padding: 0 10px;
}
.fnz-desk-select-wrap svg { width: 14px; height: 14px; color: var(--fnz-muted); flex-shrink: 0; }
.fnz-desk-select-wrap .fnz-select { border: none; background: transparent; padding: 8px 0; min-width: 120px; }
.fnz-desk-avatar { border-radius: 50%; border: 2px solid rgba(139, 92, 246, 0.35); object-fit: cover; }
.fnz-kpi-balance { min-height: 148px; }
.fnz-kpi-budget { min-height: 148px; }
.fnz-kpi-accounts { min-height: 148px; overflow: hidden; }
.fnz-label-eye { display: inline-flex; align-items: center; gap: 6px; }
.fnz-eye-btn svg { width: 14px; height: 14px; display: block; }
.fnz-budget-amt .exp { color: #f97316; }
.fnz-budget-limit { font-size: 14px; color: var(--fnz-muted); font-weight: 500; }
.fnz-budget-sub.ok { color: var(--fnz-green); }
.fnz-mascot-img {
  position: absolute; right: 8px; bottom: 4px; width: 72px; height: auto;
  pointer-events: none; object-fit: contain;
}
.fnz-accounts-body { display: flex; align-items: flex-end; justify-content: space-between; gap: 8px; margin-top: 8px; }
.fnz-accounts-meta { font-size: 13px; margin-bottom: 6px; }
.fnz-accounts-3d { width: 120px; height: auto; object-fit: contain; flex-shrink: 0; }
.fnz-btn-manage { margin-top: 10px; }
.fnz-desk-quick { margin: 4px 0 14px; }
.fnz-desk-pill {
  border: 1px solid rgba(139, 92, 246, 0.28); background: rgba(12, 14, 26, 0.95);
  color: var(--fnz-text); border-radius: 999px; padding: 8px 14px 8px 8px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px;
}
.fnz-desk-grid {
  display: grid; grid-template-columns: 1.45fr 0.82fr 0.82fr; gap: 12px; align-items: start;
}
@media (max-width: 1200px) { .fnz-desk-grid { grid-template-columns: 1fr; } }
.fnz-desk-table-wrap { max-height: 360px; }
.fnz-hint-pill {
  display: inline-block; margin-left: 8px; padding: 2px 8px; border-radius: 999px;
  background: rgba(139, 92, 246, 0.12); border: 1px solid rgba(139, 92, 246, 0.22);
  font-size: 10px; font-weight: 600; color: var(--fnz-purple-hi); vertical-align: middle;
}
.fnz-desk-mid, .fnz-desk-side { display: flex; flex-direction: column; gap: 12px; }
.fnz-desk-sub-hint { font-size: 12px; color: var(--fnz-muted); margin-bottom: 8px; }
.fnz-desk-sub-list { list-style: none; margin: 0; padding: 0; }
.fnz-desk-sub-list li {
  display: flex; align-items: center; gap: 10px; padding: 10px 0;
  border-bottom: 1px solid rgba(148,163,184,0.08); font-size: 13px;
}
.fnz-desk-sub-name { flex: 1; font-weight: 600; }
.fnz-desk-sub-price { font-weight: 700; }
.fnz-sub-asset, .fnz-tx-asset { border-radius: 8px; object-fit: contain; flex-shrink: 0; }
.fnz-desk-upcoming { list-style: none; margin: 0; padding: 0; }
.fnz-desk-upcoming li {
  display: flex; justify-content: space-between; gap: 8px; padding: 8px 0;
  border-bottom: 1px solid rgba(148,163,184,0.08); font-size: 13px;
}
.fnz-desk-upcoming li span:last-child { color: var(--fnz-muted); font-size: 12px; }
.fnz-desk-review { flex-direction: column; align-items: stretch; }
.fnz-desk-goal-amt { color: var(--fnz-green); font-weight: 600; margin: 6px 0 8px; }
.fnz-goal-ring--lg { width: 64px; height: 64px; font-size: 14px; }
.fnz-goal-ring--lg span { width: 48px; height: 48px; }
.fnz-desk-insight { display: flex; gap: 12px; align-items: flex-start; }
.fnz-desk-insight-lead { color: var(--fnz-green); font-weight: 600; margin: 4px 0 2px; font-size: 13px; }
.fnz-desk-insight-sub { margin: 0; font-size: 12px; color: var(--fnz-muted); line-height: 1.45; }
.fnz-root--desk .fnz-income-expense .exp { color: #f97316; }
.fnz-acc-check { color: var(--fnz-green); margin-right: 4px; font-weight: 700; }
.fnz-pill-icon--svg svg { width: 14px; height: 14px; display: block; }
.fnz-desk-table-head { align-items: center; }
.fnz-desk-table-tools { display: flex; align-items: center; gap: 8px; }
.fnz-select-sm { padding: 6px 10px; font-size: 12px; min-width: 72px; }
.fnz-icon-btn--sm { width: 32px; height: 32px; }
.fnz-icon-btn--sm svg { width: 14px; height: 14px; }
.fnz-desk-upcoming li { align-items: center; }
.fnz-desk-up-name { font-weight: 600; flex: 1; min-width: 0; }
.fnz-desk-up-meta { color: var(--fnz-muted); font-size: 12px; white-space: nowrap; }
.fnz-desk-up-chevron { color: var(--fnz-muted); opacity: 0.45; display: grid; place-items: center; }
.fnz-desk-up-chevron svg { width: 14px; height: 14px; }
.fnz-footer-bio { margin-left: auto; }
.fnz-footer-bio svg { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }

/* Pills de estado rellenos en escritorio */
.fnz-root--desk .fnz-st { border: none; }
.fnz-root--desk .fnz-st-auto { background: rgba(148,163,184,0.15); color: #cbd5e1; }
.fnz-root--desk .fnz-st-ok { background: rgba(16,185,129,0.15); color: #6ee7b7; }
.fnz-root--desk .fnz-st-rec { background: rgba(96,165,250,0.15); color: #93c5fd; }
.fnz-root--desk .fnz-st-ret { background: rgba(16,185,129,0.12); color: #6ee7b7; }
.fnz-root--desk .fnz-st-nc { background: rgba(148,163,184,0.12); color: #94a3b8; }
.fnz-root--desk .fnz-st-pend { background: rgba(249,115,22,0.15); color: #fdba74; }

/* ── Móvil / PWA — paridad mockup (densidad cómoda en pantallas pequeñas) ── */
.fnz-root--mob {
  height: 100%;
  min-height: 0;
  display: flex;
  justify-content: center;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
.fnz-shell--mob {
  height: 100%;
  min-height: 0;
  padding: 0;
  gap: 0;
  width: 100%;
  max-width: min(100%, 400px);
  margin: 0 auto;
  position: relative;
}
.fnz-mob-scroll {
  height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
  padding:
    calc(14px + env(safe-area-inset-top, 0px))
    18px
    calc(78px + env(safe-area-inset-bottom, 0px));
  -webkit-overflow-scrolling: touch;
}
.fnz-mob-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
  padding-top: 2px;
}
.fnz-mob-brand { display: flex; gap: 8px; align-items: flex-start; }
.fnz-mob-brand h1 { margin: 0; font-size: 15px; font-weight: 700; }
.fnz-mob-brand p { margin: 2px 0 0; font-size: 9px; color: var(--fnz-muted); }
.fnz-mob-wallet {
  width: 32px; height: 32px; border-radius: 10px;
  background: rgba(139, 92, 246, 0.2); color: var(--fnz-purple-hi);
  display: grid; place-items: center; flex-shrink: 0;
}
.fnz-mob-wallet svg { width: 18px; height: 18px; }
.fnz-mob-header-actions { display: flex; align-items: center; gap: 8px; }
.fnz-mob-avatar-img {
  width: 30px; height: 30px; border-radius: 50%;
  border: 2px solid rgba(139, 92, 246, 0.35);
  object-fit: cover;
}
.fnz-icon-btn svg { width: 16px; height: 16px; }
.fnz-mob-filters {
  display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 8px;
}
.fnz-mob-filter {
  display: flex; align-items: center; gap: 6px;
  border: 1px solid var(--fnz-border); border-radius: 10px;
  background: rgba(12, 14, 26, 0.95); padding: 0 8px;
}
.fnz-filter-icon { color: var(--fnz-muted); display: grid; place-items: center; flex-shrink: 0; }
.fnz-filter-icon svg { width: 13px; height: 13px; }
.fnz-mob-filter .fnz-mob-select {
  border: none; background: transparent; padding: 7px 0; flex: 1; min-width: 0; font-size: 11px;
}
.fnz-mob-tabs {
  overflow-x: auto; flex-wrap: nowrap; white-space: nowrap;
  scrollbar-width: none; margin-bottom: 8px;
}
.fnz-mob-tabs::-webkit-scrollbar { display: none; }
.fnz-mob-tabs .fnz-tab { flex-shrink: 0; padding: 6px 8px; font-size: 10px; }
.fnz-mob-summary { padding: 10px 10px; }
.fnz-mob-summary-top { display: flex; gap: 8px; align-items: flex-start; justify-content: space-between; }
.fnz-mob-summary-main { flex: 1; min-width: 0; }
.fnz-label-eye { display: flex; align-items: center; gap: 6px; }
.fnz-eye-btn svg { width: 14px; height: 14px; display: block; }
.fnz-mob-balance { font-size: 20px; margin: 2px 0 6px; letter-spacing: -0.02em; }
.fnz-mob-stats-row {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 3px; align-items: end;
}
.fnz-stat-col { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fnz-stat-lbl { font-size: 8px; color: var(--fnz-muted); }
.fnz-stat-val { font-size: 9px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fnz-stat-val.inc { color: var(--fnz-green); }
.fnz-stat-val.exp { color: var(--fnz-red); }
.fnz-stat-compare .fnz-stat-val { color: var(--fnz-green); font-size: 10px; font-weight: 600; }
.fnz-stat-compare.neg .fnz-stat-val { color: var(--fnz-red); }
.fnz-mob-spark { width: 72px; flex-shrink: 0; margin-top: 2px; }
.fnz-mob-sync-card {
  display: flex; align-items: center; gap: 7px;
  padding: 7px 10px; margin-bottom: 8px;
  border-radius: 11px; border: 1px solid rgba(16, 185, 129, 0.22);
  background: rgba(16, 185, 129, 0.06); font-size: 11px;
}
.fnz-mob-sync-icon {
  width: 24px; height: 24px; border-radius: 50%;
  background: rgba(16, 185, 129, 0.2); color: var(--fnz-green);
  display: grid; place-items: center; font-weight: 700; flex-shrink: 0; font-size: 12px;
}
.fnz-mob-sync-text { flex: 1; line-height: 1.35; }
.fnz-mob-sync-sub { display: block; font-size: 11px; color: var(--fnz-muted); font-weight: 400; margin-top: 2px; }
.fnz-mob-quick {
  display: flex; gap: 6px; margin-bottom: 10px; overflow-x: auto; scrollbar-width: none;
}
.fnz-mob-quick::-webkit-scrollbar { display: none; }
.fnz-mob-pill {
  flex-shrink: 0; border: 1px solid rgba(139, 92, 246, 0.25);
  background: rgba(12, 14, 26, 0.95); color: var(--fnz-text);
  border-radius: 999px; padding: 5px 10px 5px 5px; font-size: 10px; font-weight: 600;
  cursor: pointer; display: inline-flex; align-items: center; gap: 5px;
}
.fnz-pill-icon {
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(139, 92, 246, 0.2); color: var(--fnz-purple-hi);
  display: grid; place-items: center; font-size: 11px; font-weight: 700; flex-shrink: 0;
}
.fnz-mob-pill--more { padding-right: 16px; }
.fnz-brand {
  width: 32px; height: 32px; border-radius: 50%;
  display: grid; place-items: center; font-size: 13px; font-weight: 800; flex-shrink: 0;
}
.fnz-brand-netflix { background: #e50914; color: #fff; }
.fnz-brand-spotify { background: #1db954; color: #fff; }
.fnz-brand-gym { background: rgba(139, 92, 246, 0.25); font-size: 16px; }
.fnz-brand-icloud { background: rgba(59, 130, 246, 0.25); color: #93c5fd; }
.fnz-brand-default { background: rgba(255,255,255,0.08); }
.fnz-mob-sub-hint { font-size: 11px; color: var(--fnz-muted); margin-bottom: 6px; }
.fnz-mob-sub-list { list-style: none; margin: 0; padding: 0; }
.fnz-mob-sub-list li {
  display: flex; align-items: center; gap: 8px; padding: 7px 0;
  border-bottom: 1px solid rgba(148,163,184,0.08); font-size: 12px;
}
.fnz-mob-sub-name { flex: 1; font-weight: 600; font-size: 12px; }
.fnz-mob-sub-meta { font-size: 10px; color: var(--fnz-muted); white-space: nowrap; }
.fnz-mob-sub-chevron { color: var(--fnz-muted); opacity: 0.5; display: grid; place-items: center; }
.fnz-mob-sub-chevron svg { width: 16px; height: 16px; }
.fnz-mob-sub-row { align-items: center; }
.fnz-mob-alert { margin-top: 10px; font-size: 12px; flex-wrap: wrap; }
.fnz-mob-split {
  display: grid; grid-template-columns: 1fr; gap: 10px; margin-bottom: 10px;
}
.fnz-mob-split-card { padding: 10px 11px; }
.fnz-mob-split-card h3 { margin: 0 0 6px; font-size: 12px; }
.fnz-mob-upcoming { list-style: none; margin: 0; padding: 0; }
.fnz-mob-upcoming li {
  display: flex; align-items: center; gap: 6px; padding: 6px 0;
  font-size: 11px; border-bottom: 1px solid rgba(148,163,184,0.06);
}
.fnz-mob-up-icon { font-size: 16px; }
.fnz-mob-up-amt { margin-left: auto; color: var(--fnz-muted); font-size: 10px; text-align: right; }
.fnz-mob-goal-amt { font-size: 13px; margin: 6px 0; color: var(--fnz-green); font-weight: 600; }
.fnz-mob-goal-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 8px; }
.fnz-mob-tx-list { display: flex; flex-direction: column; gap: 2px; }
.fnz-mob-tx { padding: 10px 0; border-bottom: 1px solid rgba(148,163,184,0.06); }
.fnz-mob-tx-main { display: flex; align-items: center; gap: 10px; }
.fnz-mob-tx-body { flex: 1; min-width: 0; }
.fnz-mob-tx-title { font-weight: 600; font-size: 12px; line-height: 1.25; }
.fnz-mob-tx-meta { font-size: 10px; color: var(--fnz-muted); margin-top: 2px; }
.fnz-mob-tx-right { text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.fnz-mob-tx-amt { font-size: 12px; font-weight: 700; }
.fnz-mov-icon { width: 32px; height: 32px; display: grid; place-items: center; flex-shrink: 0; }
.fnz-tx-icon {
  width: 32px; height: 32px; border-radius: 8px;
  background: rgba(255,255,255,0.05); display: grid; place-items: center; font-size: 16px;
}
.fnz-mob-review { margin-top: 12px; flex-direction: column; align-items: stretch; }
.fnz-mob-insight { position: relative; margin-bottom: 12px; padding-right: 36px; }
.fnz-insight-avatar-img {
  width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
  border: 2px solid rgba(139, 92, 246, 0.3); object-fit: cover;
}
.fnz-insight-body { flex: 1; min-width: 0; }
.fnz-mob-insight-lead { color: var(--fnz-green); font-weight: 600; margin: 4px 0 2px; font-size: 13px; }
.fnz-mob-insight-sub { margin: 0; font-size: 12px; color: var(--fnz-muted); line-height: 1.4; }
.fnz-mob-trend { position: absolute; right: 14px; top: 14px; display: grid; place-items: center; }
.fnz-mob-trend svg { width: 20px; height: 20px; }
.fnz-mob-trend.ok { color: var(--fnz-green); }
.fnz-mob-footer {
  text-align: center; padding: 8px 8px 4px; font-size: 11px; color: var(--fnz-muted);
  display: flex; align-items: center; justify-content: center; gap: 6px;
}
.fnz-mob-footer svg { width: 14px; height: 14px; }
.fnz-mob-footer.ok { color: var(--fnz-green); }
.fnz-mob-footer-btn {
  border: none; background: transparent; color: inherit; font: inherit;
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer; padding: 4px 8px;
}
.fnz-mob-tx .fnz-tx-asset,
.fnz-mob-tx .fnz-sub-asset,
.fnz-mob-sub-list .fnz-sub-asset { width: 28px; height: 28px; border-radius: 8px; object-fit: cover; flex-shrink: 0; }
.fnz-mob-search { width: 100%; margin-bottom: 12px; box-sizing: border-box; }
.fnz-mob-dock {
  position: absolute; left: 14px; right: 14px; bottom: calc(8px + env(safe-area-inset-bottom, 0px));
  z-index: 30; display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px;
  padding: 6px 4px; border-radius: 16px;
  background: rgba(10, 12, 22, 0.94); border: 1px solid rgba(148, 163, 184, 0.18);
  backdrop-filter: blur(18px); box-shadow: 0 10px 36px rgba(0, 0, 0, 0.5);
}
.fnz-dock-item {
  border: none; background: transparent; color: var(--fnz-muted);
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 5px 2px; border-radius: 10px; cursor: pointer; font-size: 9px; font-weight: 600;
}
.fnz-dock-item svg { width: 16px; height: 16px; }
.fnz-dock-item:hover { color: var(--fnz-text); background: rgba(255,255,255,0.04); }
.fnz-dock-item--active { color: var(--fnz-purple-hi); }
.fnz-more-opt { width: 100%; margin-bottom: 8px; display: block; }

html:not(.platform-desktop) .app-body.finanzas-mode .sidebar,
html:not(.platform-desktop) .app-body.finanzas-mode .topbar { display: none !important; }
html:not(.platform-desktop) .app-body.finanzas-mode .main-panel {
  padding: 0;
  padding-bottom: 0;
  background:
    radial-gradient(ellipse 65% 40% at 75% 0%, rgba(88, 28, 180, 0.2), transparent 55%),
    linear-gradient(180deg, #05050f 0%, #0a0c16 45%, #070912 100%);
}
html:not(.platform-desktop) .app-body.finanzas-mode #view-finanzas.view.active {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}

.fnz-ronin-banner {
  margin: 12px 0;
  padding: 12px 14px;
  border-radius: 12px;
  background: rgba(139, 92, 246, 0.08);
  border: 1px solid rgba(139, 92, 246, 0.3);
}
.fnz-ronin-banner p { margin: 0 0 8px; font-size: 13px; color: var(--fnz-text); }
.fnz-mov-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; align-items: center; }
.fnz-mov-add-row { display: flex; flex-wrap: wrap; gap: 6px; }
.fnz-kpi-row--3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 12px; }
.fnz-tools-list { list-style: none; margin: 0; padding: 0; }
.fnz-tools-list li { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--fnz-border); font-size: 13px; }
.fnz-tools-list li span { color: var(--fnz-muted); font-size: 12px; }
.fnz-row-dim { opacity: 0.55; }
.fnz-segment { display: inline-flex; gap: 4px; padding: 4px; border-radius: 999px; background: rgba(255,255,255,0.04); border: 1px solid var(--fnz-border); }
.fnz-seg { border: 0; background: transparent; color: var(--fnz-muted); padding: 6px 12px; border-radius: 999px; font-size: 12px; cursor: pointer; }
.fnz-seg.active { background: #8b5cf6; color: #fff; }
.fnz-chart-bars { display: flex; gap: 10px; align-items: flex-end; min-height: 120px; padding: 8px 0; }
.fnz-chart-col { flex: 1; text-align: center; font-size: 10px; color: var(--fnz-muted); }
.fnz-chart-bar-wrap { display: flex; gap: 3px; align-items: flex-end; justify-content: center; height: 90px; margin-bottom: 6px; }
.fnz-chart-bar { width: 10px; border-radius: 4px 4px 0 0; min-height: 4px; }
.fnz-chart-bar--inc { background: #34d399; }
.fnz-chart-bar--exp { background: #f87171; }
.fnz-dist-row { display: grid; grid-template-columns: 1fr 2fr auto; gap: 8px; align-items: center; margin: 8px 0; font-size: 12px; }
.fnz-dist-bar { height: 8px; background: rgba(148,163,184,0.15); border-radius: 999px; overflow: hidden; }
.fnz-dist-fill { height: 100%; background: linear-gradient(90deg, #7c3aed, #a78bfa); border-radius: 999px; }
.fnz-sim-result { margin-top: 12px; padding: 12px; border-radius: 12px; background: rgba(139,92,246,0.12); border: 1px solid rgba(139,92,246,0.25); }
.fnz-sim-result span { display: block; font-size: 12px; color: var(--fnz-muted); margin-top: 4px; }
.fnz-goals-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.fnz-goal-card { padding: 12px; border: 1px solid var(--fnz-border); border-radius: 12px; }
.fnz-edit-icon { min-width: 32px; padding: 4px 8px; }
.fnz-hint { font-size: 12px; color: var(--fnz-muted); }

.fnz-cancel-steps { margin: 10px 0 0; padding-left: 18px; font-size: 12px; color: var(--fnz-muted); }
.fnz-cancel-steps li { margin-bottom: 6px; }
.fnz-provider-link { display: inline-block; margin-top: 8px; font-weight: 600; }
.fnz-cancelled-block { margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.08); }
.fnz-cancelled-block h4 { margin: 0 0 10px; font-size: 12px; color: var(--fnz-muted); text-transform: uppercase; letter-spacing: 0.06em; }
.fnz-sub-item--cancelled, .fnz-row-cancelled, .fnz-table--cancelled tr { opacity: 0.72; }
.fnz-sub-actions-cell { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 900px) {
  .fnz-kpi-row--3 { grid-template-columns: 1fr; }
}
html:not(.platform-desktop) .app-body.finanzas-mode .app-body,
html:not(.platform-desktop) .app-body.finanzas-mode {
  height: 100dvh;
}

/* —— Handoff móvil (App review 12) —— */
.fnz-mob-logo svg { display: block; width: 42px; height: 42px; }
.fnz-mob-sync { flex-shrink: 0; display: flex; align-items: center; gap: 5px; font-size: 10px; color: var(--fnz-green); font-weight: 600; line-height: 1.25; text-align: right; }
.fnz-mob-sync-dot { width: 7px; height: 7px; border-radius: 50%; background: #22c55e; flex-shrink: 0; }
.fnz-mob-tabs--pill { gap: 6px; padding-bottom: 4px; }
.fnz-tab-pill { border: none !important; border-radius: 999px !important; padding: 9px 16px !important; font-size: 12px !important; font-weight: 700 !important; background: transparent !important; color: var(--fnz-muted) !important; }
.fnz-tab-pill.active { background: #7c3aed !important; color: #fff !important; box-shadow: none !important; }
.fnz-mob-summary--nebula {
  position: relative; overflow: hidden;
  background: radial-gradient(120% 140% at 85% 15%, rgba(124,58,237,.28), transparent 60%), #12152a !important;
  border-radius: 18px !important; padding: 18px !important;
}
.fnz-mob-summary--nebula::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: radial-gradient(1.5px 1.5px at 20% 30%, rgba(255,255,255,.5), transparent), radial-gradient(1px 1px at 85% 55%, rgba(255,255,255,.4), transparent);
}
.fnz-mob-summary-top { position: relative; display: flex; justify-content: space-between; align-items: flex-start; }
.fnz-mob-summary-label { font-size: 12px; color: var(--fnz-muted); display: flex; align-items: center; gap: 6px; }
.fnz-mob-account-pill {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius: 999px;
  border: 1px solid rgba(148,163,184,.2); background: rgba(10,12,24,.5); font-size: 10px; font-weight: 600;
}
.fnz-mob-income-expense { position: relative; display: flex; align-items: center; gap: 14px; margin-top: 10px; font-size: 13px; }
.fnz-mob-stat-sep { width: 1px; height: 14px; background: rgba(148,163,184,.3); }
.fnz-mob-compare { position: relative; margin-top: 8px; font-size: 12px; color: var(--fnz-green); font-weight: 600; }
.fnz-mob-compare.neg { color: var(--fnz-red); }
.fnz-mob-spark--wide { position: relative; width: 100%; margin-top: 10px; }
.fnz-mob-spark--wide svg { width: 100%; height: 70px; display: block; }
.fnz-spark-active { color: var(--fnz-text) !important; font-weight: 700; }
.fnz-mob-quick--circles { display: flex; justify-content: space-between; gap: 6px; margin: 4px 0; }
.fnz-mob-circle-action { flex: 1; border: none; background: transparent; color: var(--fnz-text); display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 600; cursor: pointer; padding: 4px 0; }
.fnz-circle { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-size: 16px; font-weight: 800; flex-shrink: 0; }
.fnz-circle--expense { background: #7c3aed; color: #fff; }
.fnz-circle--income { background: #16a34a; color: #fff; }
.fnz-circle--scan { background: #312150; color: #c4b5fd; font-size: 14px; }
.fnz-mob-ronin-banner { display: flex; align-items: center; gap: 14px; padding: 14px 16px !important; }
.fnz-ronin-bot-img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; flex-shrink: 0; }
.fnz-mob-ronin-label { font-size: 10px; font-weight: 700; letter-spacing: .06em; color: #a78bfa; }
.fnz-mob-ronin-banner--alert .fnz-mob-ronin-label { color: #fb923c; }
.fnz-mob-ronin-msg { font-size: 13px; margin-top: 3px; line-height: 1.35; }
.fnz-mob-ronin-msg strong { font-size: 16px; color: #c4b5fd; }
.fnz-btn-ronin-pill { margin-top: 8px; padding: 8px 13px; border-radius: 999px; border: 1px solid rgba(139,92,246,.35); background: rgba(139,92,246,.15); color: #c4b5fd; font-size: 11px; font-weight: 700; cursor: pointer; }
.fnz-mob-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fnz-mob-grid-card { padding: 14px 16px !important; }
.fnz-mob-grid-card h3 { margin: 0 0 10px; font-size: 13px; font-weight: 800; }
.fnz-mob-timeline { list-style: none; margin: 0; padding: 0 0 0 14px; border-left: 1px solid rgba(148,163,184,.2); }
.fnz-mob-timeline li { position: relative; margin-bottom: 12px; display: flex; gap: 7px; align-items: flex-start; }
.fnz-mob-timeline li::before { content: ''; position: absolute; left: -18px; top: 3px; width: 7px; height: 7px; border-radius: 50%; background: #a78bfa; }
.fnz-mob-timeline small { display: block; font-size: 11px; color: var(--fnz-muted); margin-top: 2px; }
.fnz-mob-sub-icons { display: flex; gap: 8px; margin-top: 8px; }
.fnz-mob-sub-icon-item { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 5px; font-size: 10px; text-align: center; }
.fnz-mob-sub-icon-item small { color: var(--fnz-muted); font-size: 9px; }
.fnz-mob-goal-suggest { display: block; margin-top: 10px; font-size: 10px; color: var(--fnz-muted); }
.fnz-mob-footer--bio { justify-content: center; padding: 6px 0 4px; font-size: 12px; gap: 8px; }
.fnz-mob-mov-hero { display: flex; align-items: center; gap: 16px; padding: 14px 16px !important; text-align: left; position: relative; overflow: hidden; }
.fnz-mob-mov-hero::before { content: ''; position: absolute; inset: 0; background: radial-gradient(60% 100% at 100% 30%, rgba(124,58,237,.22), transparent 70%); pointer-events: none; }
.fnz-mob-mov-hero strong { display: block; font-size: 15px; }
.fnz-mob-mov-hero small { color: var(--fnz-muted); font-size: 10px; }
.fnz-mob-filter-chips { display: flex; gap: 8px; overflow-x: auto; margin-bottom: 10px; }
.fnz-chip { flex-shrink: 0; border: 1px solid rgba(148,163,184,.15); background: rgba(20,23,38,.9); color: var(--fnz-muted); border-radius: 999px; padding: 8px 14px; font-size: 11px; cursor: pointer; }
.fnz-chip.active { background: rgba(124,58,237,.25); border-color: rgba(167,139,250,.35); color: #fff; }
.fnz-mob-fab { width: 100%; margin-top: 12px; border-radius: 999px; }
.fnz-mob-kpi-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.fnz-mob-kpi-row .fnz-card { padding: 10px !important; }
.fnz-mob-kpi-row small { display: block; font-size: 9px; color: var(--fnz-muted); }
.fnz-mob-bar-chart { display: flex; justify-content: space-evenly; align-items: flex-end; gap: 6px; min-height: 80px; padding-top: 8px; }
.fnz-bar-group { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.fnz-bar { width: 10px; border-radius: 4px; }
.fnz-bar.inc { background: rgba(52,211,153,.85); }
.fnz-bar.exp { background: rgba(248,113,113,.85); }
.fnz-mob-budget-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fnz-mob-budget-cat.over { border-color: rgba(239,68,68,.35); }
.fnz-donut-wrap { display: flex; align-items: center; gap: 14px; }
.fnz-donut { width: 72px; height: 72px; border-radius: 50%; background: conic-gradient(#7c3aed calc(var(--fnz-pct) * 1%), rgba(255,255,255,.08) 0); display: grid; place-items: center; flex-shrink: 0; }
.fnz-donut span { width: 52px; height: 52px; border-radius: 50%; background: #12152a; display: grid; place-items: center; font-size: 14px; font-weight: 700; }
.fnz-mob-sub-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.fnz-sub-chip { padding: 8px 12px; border-radius: 12px; background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.25); font-size: 11px; }
.fnz-sub-chip em { display: block; font-style: normal; font-size: 9px; color: var(--fnz-muted); margin-top: 2px; }
.fnz-mob-pin-foot { text-align: center; font-size: 9px; color: var(--fnz-muted); padding: 8px 0; }
.fnz-pin-badge { font-size: 9px; padding: 4px 8px; border-radius: 999px; background: rgba(52,211,153,.15); color: var(--fnz-green); }
.fnz-an-cat-row { display: grid; grid-template-columns: 72px 1fr auto; align-items: center; gap: 8px; padding: 6px 0; }
.fnz-donut-legend { list-style: none; margin: 0; padding: 0; flex: 1; }
.fnz-donut-legend li { display: flex; align-items: center; gap: 8px; font-size: 11px; padding: 4px 0; }
.fnz-donut-legend em { margin-left: auto; font-style: normal; color: var(--fnz-muted); font-size: 10px; }
.fnz-donut-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.fnz-an-donut { margin-top: 8px; }
.fnz-mob-top-merchants ol { list-style: none; margin: 0; padding: 0; }
.fnz-mob-top-merchants li { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid rgba(148,163,184,.08); }
.fnz-mob-top-merchants li:last-child { border-bottom: none; }
.fnz-rank { width: 22px; height: 22px; border-radius: 50%; background: rgba(124,58,237,.25); color: #c4b5fd; font-size: 11px; font-weight: 800; display: grid; place-items: center; flex-shrink: 0; }
.fnz-mob-line-forecast { margin-top: 12px; }
.fnz-ronin-bot-wrap { position: relative; flex-shrink: 0; }
.fnz-ronin-alert-dot { position: absolute; bottom: -2px; right: -2px; width: 15px; height: 15px; border-radius: 50%; background: #ef4444; color: #fff; font-size: 10px; font-weight: 800; display: grid; place-items: center; border: 2px solid #0a0e1a; }
.fnz-mob-ronin-side { flex-shrink: 0; }
.fnz-mob-ronin-banner--alert { background: rgba(248,113,113,.08) !important; border-color: rgba(248,113,113,.3) !important; }
.fnz-mob-ronin-sub { font-size: 10.5px; color: var(--fnz-muted); margin-top: 2px; }
.fnz-mob-sub-dots { display: flex; justify-content: center; gap: 5px; margin-top: 10px; }
.fnz-mob-sub-dots span { width: 6px; height: 6px; border-radius: 50%; background: rgba(148,163,184,.3); }
.fnz-mob-sub-dots span.active { background: #a78bfa; }
.fnz-mob-mov-search-row { display: flex; gap: 8px; align-items: center; }
.fnz-mob-filter-menu { width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(148,163,184,.15); background: rgba(20,23,38,.9); color: #a78bfa; cursor: pointer; flex-shrink: 0; }
.fnz-search-ico { color: var(--fnz-muted); }
.fnz-mob-mov-stat { display: flex; align-items: center; gap: 9px; position: relative; }
.fnz-mob-mov-icon { width: 34px; height: 34px; border-radius: 50%; background: rgba(139,92,246,.15); border: 1px solid rgba(139,92,246,.35); color: #a78bfa; display: grid; place-items: center; font-size: 15px; }
.fnz-mob-mov-icon.inc { background: rgba(34,197,94,.15); border-color: transparent; color: #4ade80; width: 28px; height: 28px; font-size: 12px; }
.fnz-mob-mov-icon.exp { background: rgba(248,113,113,.15); border-color: transparent; color: #f87171; width: 28px; height: 28px; font-size: 12px; }
.fnz-mob-mov-sep { width: 1px; height: 30px; background: rgba(148,163,184,.15); }
.fnz-mob-review-banner { display: flex; align-items: center; gap: 12px; padding: 12px 14px !important; background: rgba(139,92,246,.08) !important; border-color: rgba(139,92,246,.3) !important; }
.fnz-mob-tx-group-label { font-size: 11.5px; font-weight: 700; color: #a78bfa; margin: 8px 0 6px; }
.fnz-mob-tx--row { display: flex; align-items: center; gap: 11px; padding: 11px 13px; background: rgba(20,23,38,.9); border: 1px solid rgba(148,163,184,.1); border-radius: 13px; margin-bottom: 10px; }
.fnz-mob-tx-state { font-size: 9.5px; color: var(--fnz-muted); text-align: right; }
.fnz-mob-tx-menu { border: none; background: transparent; color: var(--fnz-muted); cursor: pointer; padding: 0 4px; }
.fnz-link-split { align-self: flex-end; margin: -4px 0 8px; font-size: 11px; }
.fnz-mob-fab--end { align-self: flex-end; width: auto; padding: 11px 18px; }
.fnz-mob-budget-hero { padding: 18px !important; overflow: hidden; }
.fnz-mob-budget-hero-body { display: flex; gap: 16px; align-items: center; margin-top: 8px; }
.fnz-donut--lg { width: 118px; height: 118px; flex-shrink: 0; }
.fnz-donut-inner { width: 92px; height: 92px; border-radius: 50%; background: #12152a; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 4px; font-size: 9px; line-height: 1.2; }
.fnz-donut-inner strong { font-size: 14px; }
.fnz-mob-budget-hero-copy p { margin: 0; font-size: 11.5px; color: #9aa1b5; line-height: 1.5; }
.fnz-forecast-box { display: flex; align-items: center; gap: 8px; margin-top: 12px; padding: 9px 11px; border-radius: 12px; background: rgba(139,92,246,.12); border: 1px solid rgba(139,92,246,.25); }
.fnz-forecast-box small { display: block; font-size: 9.5px; color: var(--fnz-muted); }
.fnz-budget-cat-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.fnz-budget-cat-icon { width: 28px; height: 28px; border-radius: 8px; background: rgba(139,92,246,.15); display: grid; place-items: center; font-size: 13px; }
.fnz-budget-cat-amt { font-size: 12.5px; font-weight: 700; }
.fnz-budget-cat-amt span { font-weight: 600; color: var(--fnz-muted); }
.fnz-budget-cat-meta { display: flex; justify-content: space-between; align-items: center; margin-top: 5px; font-size: 10px; }
.fnz-budget-cat-meta .warn { color: #fbbf24; font-weight: 700; }
.fnz-budget-bar.warn .fnz-budget-fill { background: linear-gradient(90deg,#a78bfa,#fbbf24); }
.fnz-budget-bar.over .fnz-budget-fill { background: #f87171; }
.fnz-section-head--plain { margin: 4px 0; }
.fnz-mob-plan-hero { padding: 16px !important; overflow: hidden; }
.fnz-mob-plan-balance { font-size: 27px; margin-top: 8px; }
.fnz-badge-soft { padding: 5px 10px; border-radius: 999px; border: 1px solid rgba(148,163,184,.2); background: rgba(10,12,24,.6); font-size: 10px; color: #c9cede; font-weight: 600; }
.fnz-dot-violet { width: 7px; height: 7px; border-radius: 50%; background: #a78bfa; display: inline-block; }
.fnz-mob-plan-proj { display: flex; align-items: center; gap: 6px; font-size: 11.5px; margin-top: 8px; }
.fnz-btn-outline { border: 1px solid rgba(139,92,246,.4); background: transparent; color: #a78bfa; }
.fnz-mob-goal-card--full { padding: 16px 18px !important; }
.fnz-mob-goal-amt.gold { font-size: 19px; font-weight: 800; color: #eab308; margin-top: 4px; }
.fnz-goal-bar--gold .fnz-goal-fill { background: linear-gradient(90deg,#f59e0b,#a78bfa); }
.fnz-mob-goal-foot-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 10px; }
.fnz-goal-date-box { flex-shrink: 0; text-align: center; padding: 6px 10px; border: 1px solid rgba(148,163,184,.15); border-radius: 11px; }
.fnz-goal-date-box small { display: block; font-size: 9px; color: var(--fnz-muted); }
.fnz-goal-date-box strong { font-size: 10.5px; color: #a78bfa; }
.fnz-mob-rules { list-style: none; margin: 0; padding: 0; }
.fnz-mob-rules li { display: flex; align-items: center; gap: 8px; padding: 6px 0; font-size: 11.5px; }
.fnz-rule-icon { width: 26px; height: 26px; border-radius: 8px; background: rgba(139,92,246,.15); display: grid; place-items: center; font-size: 12px; }
.fnz-rule-arrow { color: var(--fnz-muted); }
.fnz-mob-sim-card { display: flex; align-items: center; gap: 12px; padding: 14px 16px !important; }
.fnz-sim-icon { width: 34px; height: 34px; border-radius: 9px; background: rgba(139,92,246,.15); display: grid; place-items: center; font-size: 15px; flex-shrink: 0; }
.fnz-mob-kpi-row--icons .fnz-card { padding: 11px !important; }
.fnz-kpi-icon { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; margin-bottom: 6px; }
.fnz-kpi-icon.exp { background: rgba(248,113,113,.15); color: #f87171; }
.fnz-kpi-icon.inc { background: rgba(34,197,94,.15); color: #4ade80; }
.fnz-kpi-icon:not(.exp):not(.inc) { background: rgba(139,92,246,.15); color: #a78bfa; }
.fnz-mob-kpi-row em { display: block; font-style: normal; font-size: 9px; color: var(--fnz-muted); margin-top: 2px; }
.fnz-muted-label { font-size: 10px; color: var(--fnz-muted); }
.fnz-bar-legend { display: flex; gap: 12px; font-size: 10px; color: var(--fnz-muted); margin-bottom: 8px; }
.fnz-bar-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 4px; }
.fnz-bar-legend i.inc { background: #7c3aed; }
.fnz-bar-legend i.exp { background: #f87171; }
.fnz-mob-bar-chart--dual .fnz-bar-pair { display: flex; gap: 3px; align-items: flex-end; height: 70px; }
.fnz-mob-bar-chart--dual .fnz-bar.inc { background: #7c3aed; width: 10px; }
.fnz-mob-bar-chart--dual .fnz-bar.exp { background: #f87171; width: 10px; }
.fnz-bar-group.active small { color: var(--fnz-text); font-weight: 700; }
.fnz-donut--an { width: 96px; height: 96px; }
.fnz-donut-center { width: 64px; height: 64px; border-radius: 50%; background: #141726; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.fnz-donut-center strong { font-size: 14px; }
.fnz-donut-center small { font-size: 8px; color: var(--fnz-muted); }
.fnz-link-center { display: block; text-align: center; margin-top: 10px; width: 100%; }
.fnz-top-merchant { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid rgba(148,163,184,.08); }
.fnz-top-merchant-amt { margin-left: auto; text-align: right; }
.fnz-top-merchant-amt small { display: block; font-size: 9.5px; color: var(--fnz-muted); }
.fnz-pattern-card { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px !important; margin-bottom: 10px; }
.fnz-pattern-icon { width: 30px; height: 30px; border-radius: 9px; background: rgba(139,92,246,.15); display: grid; place-items: center; font-size: 13px; flex-shrink: 0; }
.fnz-mob-sub-hero--full { position: relative; display: flex; align-items: center; gap: 14px; padding: 16px !important; overflow: hidden; }
.fnz-pin-badge--float { position: absolute; top: 6px; right: 10px; }
.fnz-mob-sub-orbit { width: 78px; height: 78px; border-radius: 50%; background: radial-gradient(circle,rgba(124,58,237,.25),transparent 70%); display: grid; place-items: center; flex-shrink: 0; }
.fnz-mob-sub-orbit span { width: 56px; height: 56px; border-radius: 50%; border: 1.5px solid rgba(167,139,250,.5); display: grid; place-items: center; font-size: 20px; color: #a78bfa; }
.fnz-mob-sub-hero-copy strong { display: block; font-size: 24px; margin-top: 2px; }
.fnz-mob-sub-hero-copy strong small { font-size: 12px; font-weight: 600; color: var(--fnz-muted); }
.fnz-sub-chip-rich { flex: 1; text-align: center; background: rgba(20,23,38,.9); border: 1px solid rgba(148,163,184,.1); border-radius: 13px; padding: 9px 4px; }
.fnz-sub-chip-rich em { display: block; font-style: normal; font-size: 9.5px; color: #a78bfa; font-weight: 700; margin-bottom: 5px; }
.fnz-mob-sub-cards { display: flex; flex-direction: column; gap: 10px; }
.fnz-mob-sub-card { display: flex; align-items: center; gap: 11px; padding: 12px 14px !important; }
.fnz-mob-sub-card-body { flex: 1; min-width: 0; }
.fnz-mob-sub-card-amt { text-align: right; }
.fnz-mob-sub-card-actions { display: flex; justify-content: flex-end; gap: 8px; margin: -4px 0 6px; }
.fnz-btn-alert-pill { padding: 7px 12px; border-radius: 999px; border: 1px solid rgba(248,113,113,.4); background: rgba(248,113,113,.12); color: #f87171; font-size: 11px; font-weight: 700; }
.fnz-btn-cancel { border: 1px solid rgba(248,113,113,.4); color: #f87171; background: transparent; }
.fnz-mob-sub-year { display: flex; align-items: center; gap: 12px; }
.fnz-mob-sub-year > div { flex: 1; }
.fnz-mob-sub-year small { display: block; color: var(--fnz-muted); font-size: 10.5px; margin-top: 2px; }
strong.lav, .lav { color: #c4b5fd; }
.ok { color: #4ade80; }
.fnz-ronin-bot-sm { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; }
