/* ══════════════════════════════════════════════════════════
   VAULTIQ — FUTURISTIC FINANCE CSS
   ══════════════════════════════════════════════════════════ */

/* ── Variables ── */
:root {
  --bg0: #07090e;
  --bg1: #0a0e1a;
  --bg2: #11151f;
  --bg3: #161b26;
  --bg4: #1d2330;
  --neon: #10B981;
  --neon-bright: #34D399;
  --neon-deep: #059669;
  --neon2: #047857;
  --neon-glow: rgba(16,185,129,.18);
  --neon-glow2: rgba(16,185,129,.08);
  --gradient-primary: linear-gradient(135deg, #34D399 0%, #10B981 50%, #047857 100%);
  --gradient-card-1: linear-gradient(135deg, #10B981 0%, #047857 100%);
  --gradient-card-2: linear-gradient(135deg, #3B82F6 0%, #1D4ED8 100%);
  --gradient-card-3: linear-gradient(135deg, #F59E0B 0%, #B45309 100%);
  --gradient-card-4: linear-gradient(135deg, #EC4899 0%, #BE185D 100%);
  --red: #F87171;
  --red2: rgba(248,113,113,.12);
  --blue: #60A5FA;
  --blue2: rgba(96,165,250,.12);
  --yellow: #FBBF24;
  --yellow2: rgba(251,191,36,.12);
  --text1: #F5F7FA;
  --text2: #A0AEC0;
  --text3: #6B7280;
  --border: rgba(255,255,255,.06);
  --border2: rgba(255,255,255,.10);
  --glass-bg: rgba(22,27,38,.65);
  --glass-blur: blur(20px);
  --sb-w: 252px;
  --r: 14px;
  --r-sm: 9px;
  --shadow: 0 2px 16px rgba(0,0,0,.4);
  --shadow-neon: 0 0 16px rgba(0,230,118,.25);
  --f-head: 'Space Grotesk', sans-serif;
  --f-body: 'Inter', sans-serif;
  --f-mono: 'JetBrains Mono', monospace;
  --ease: cubic-bezier(.4,0,.2,1);
  --dur: .2s;
}


/* ── LIGHT MODE ── */
[data-theme="light"] {
  --bg0: #F4F7F9;
  --bg1: #F6F8FA;
  --bg2: #FFFFFF;
  --bg3: #FCFDFE;
  --bg4: #EEF2F5;
  --neon: #10B981;
  --neon-bright: #34D399;
  --neon-deep: #059669;
  --neon2: #047857;
  --neon-glow: rgba(16,185,129,.12);
  --neon-glow2: rgba(16,185,129,.05);
  --gradient-primary: linear-gradient(135deg, #34D399 0%, #10B981 50%, #047857 100%);
  --gradient-card-1: linear-gradient(135deg, #10B981 0%, #047857 100%);
  --gradient-card-2: linear-gradient(135deg, #3B82F6 0%, #1D4ED8 100%);
  --gradient-card-3: linear-gradient(135deg, #F59E0B 0%, #B45309 100%);
  --gradient-card-4: linear-gradient(135deg, #EC4899 0%, #BE185D 100%);
  --red: #F87171;
  --red2: rgba(248,113,113,.08);
  --blue: #3B82F6;
  --blue2: rgba(59,130,246,.08);
  --yellow: #F59E0B;
  --yellow2: rgba(245,158,11,.10);
  --text1: #0F1F2E;
  --text2: #4A5568;
  --text3: #9CA3AF;
  --border: rgba(15,23,42,.08);
  --border2: rgba(15,23,42,.14);
  --shadow: 0 1px 3px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.06);
  --shadow-neon: 0 8px 24px rgba(16,185,129,.25);
  --glass-bg: rgba(255,255,255,.75);
  --glass-blur: blur(20px);
}
[data-theme="light"] .grid-bg {
  background-image:
    linear-gradient(rgba(15,31,24,.03) 1px,transparent 1px),
    linear-gradient(90deg,rgba(15,31,24,.03) 1px,transparent 1px);
}
[data-theme="light"] .scan-line { opacity:.12; }
[data-theme="light"] .orb { opacity:.05; }
[data-theme="light"] .topbar { background: rgba(240,244,240,.92); }
[data-theme="light"] .sidebar { box-shadow: 2px 0 16px rgba(0,0,0,.08); }
[data-theme="light"] select,
[data-theme="light"] .finput-wrap input,
[data-theme="light"] .fgroup select,
[data-theme="light"] .fgroup input,
[data-theme="light"] .tsearch input { background: #f4f8f4; color: #0f1f0f; }
[data-theme="light"] .login-card { box-shadow: 0 8px 40px rgba(0,0,0,.12); }
[data-theme="light"] .mockup-topbar,
[data-theme="light"] .mockup-body,
[data-theme="light"] .mc-left,
[data-theme="light"] .mc-right { background: #e8f0e8; }

/* Theme toggle button */
.theme-toggle {
  width: 36px; height: 36px;
  border-radius: var(--r-sm);
  background: var(--bg2); border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; cursor: pointer;
  transition: all var(--dur) var(--ease);
}
.theme-toggle:hover { border-color: var(--neon); }

/* Category pie chart card */
.cat-pie-card {
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--r); padding: 20px;
}
.cat-pie-wrap {
  position: relative; height: 200px;
  display: flex; align-items: center; justify-content: center;
}
.cat-legend {
  display: flex; flex-direction: column; gap: 6px; margin-top: 14px;
}
.cat-leg-row {
  display: flex; justify-content: space-between; align-items: center; font-size: 12px;
}
.cat-leg-row .cl { display: flex; align-items: center; gap: 6px; color: var(--text2); font-family: var(--f-mono); }
.cat-leg-row .cdot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.cat-leg-row .cv { font-weight: 700; font-family: var(--f-head); font-size: 12px; }

/* ── Reset ── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--f-body);background:var(--bg0);color:var(--text1);-webkit-font-smoothing:antialiased;overflow-x:hidden}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;color:var(--text1)}
a{text-decoration:none;color:inherit}
::-webkit-scrollbar{width:4px;height:4px}
::-webkit-scrollbar-track{background:var(--bg1)}
::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:99px}
canvas{display:block}
table{width:100%;border-collapse:collapse}

/* ── Utils ── */
.hidden{display:none!important}
.w-full{width:100%}
.pg{min-height:100vh}
.neon-text{color:var(--neon);text-shadow:0 0 20px rgba(74,222,128,.4)}

/* ══════════════════════════════════════════════════════════
   LOADER
   ══════════════════════════════════════════════════════════ */
.loader{
  position:fixed;inset:0;z-index:9999;
  background:var(--bg0);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;
  transition:opacity .5s var(--ease);
}
.loader-ring{position:relative;width:60px;height:60px}
.loader-ring div{
  position:absolute;inset:0;border:3px solid transparent;border-radius:50%;
  animation:lspin 1.2s cubic-bezier(.5,0,.5,1) infinite;
}
.loader-ring div:nth-child(1){border-top-color:var(--neon);animation-delay:-.45s}
.loader-ring div:nth-child(2){border-top-color:rgba(74,222,128,.5);animation-delay:-.3s}
.loader-ring div:nth-child(3){border-top-color:rgba(74,222,128,.25);animation-delay:-.15s}
@keyframes lspin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.loader-brand{font-family:var(--f-head);font-size:28px;font-weight:700;letter-spacing:4px;color:var(--text1)}
.loader-brand span{color:var(--neon)}
.loader-sub{font-size:12px;color:var(--text3);font-family:var(--f-mono);letter-spacing:2px}

/* ══════════════════════════════════════════════════════════
   TOAST
   ══════════════════════════════════════════════════════════ */
.toast{
  position:fixed;bottom:24px;right:24px;z-index:9998;
  background:var(--bg3);border:1px solid var(--border2);
  border-radius:var(--r-sm);padding:13px 18px;
  font-size:13px;box-shadow:var(--shadow),var(--shadow-neon);
  transform:translateY(80px);opacity:0;transition:all .4s var(--ease);
  pointer-events:none;max-width:320px;
  font-family:var(--f-mono);letter-spacing:.5px;
}
.toast.show{transform:translateY(0);opacity:1;pointer-events:auto}

/* ══════════════════════════════════════════════════════════
   AMBIENT / BACKGROUNDS
   ══════════════════════════════════════════════════════════ */
.grid-bg{
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:
    linear-gradient(rgba(74,222,128,.03) 1px,transparent 1px),
    linear-gradient(90deg,rgba(74,222,128,.03) 1px,transparent 1px);
  background-size:48px 48px;
}
.scan-line{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:1;
  background:linear-gradient(90deg,transparent,var(--neon),transparent);
  opacity:.3;animation:scan 4s linear infinite;
}
@keyframes scan{0%{top:0}100%{top:100%}}
.orb{position:fixed;border-radius:50%;filter:blur(100px);pointer-events:none;z-index:0}
.orb1{width:500px;height:500px;background:var(--neon);top:-150px;right:-100px;opacity:.04;animation:orbf 10s ease-in-out infinite}
.orb2{width:400px;height:400px;background:var(--blue);bottom:-100px;left:-80px;opacity:.03;animation:orbf 14s ease-in-out infinite reverse}
@keyframes orbf{0%,100%{transform:scale(1)}50%{transform:scale(1.1)translateY(-20px)}}
.pulse-dot{display:inline-block;width:7px;height:7px;background:var(--neon);border-radius:50%;animation:pdot 2s infinite}
@keyframes pdot{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(74,222,128,.4)}50%{opacity:.5;box-shadow:0 0 0 6px rgba(74,222,128,0)}}
.sb-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);z-index:150}
.sb-overlay.show{display:block}

/* ══════════════════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════════════════ */
.btn-ghost{padding:8px 18px;border-radius:var(--r-sm);font-size:14px;font-weight:500;color:var(--text2);transition:all var(--dur) var(--ease)}
.btn-ghost:hover{color:var(--text1);background:rgba(255,255,255,.04)}
.btn-neon{
  padding:8px 20px;border-radius:var(--r-sm);font-size:14px;font-weight:600;font-family:var(--f-head);letter-spacing:1px;
  background:var(--neon);color:#000;transition:all var(--dur) var(--ease);
  box-shadow:0 0 16px rgba(74,222,128,.3);
}
.btn-neon:hover{transform:translateY(-1px);box-shadow:0 0 28px rgba(74,222,128,.5)}
.btn-neon-lg{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 32px;border-radius:var(--r-sm);font-size:16px;font-weight:700;font-family:var(--f-head);letter-spacing:1.5px;
  background:var(--neon);color:#000;transition:all var(--dur) var(--ease);
  box-shadow:0 0 30px rgba(74,222,128,.35);
}
.btn-neon-lg:hover{transform:translateY(-2px);box-shadow:0 0 50px rgba(74,222,128,.55)}
.btn-outline-lg{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 32px;border-radius:var(--r-sm);font-size:16px;font-weight:600;font-family:var(--f-head);letter-spacing:1px;
  background:transparent;color:var(--text1);border:1px solid var(--border2);transition:all var(--dur) var(--ease);
}
.btn-outline-lg:hover{border-color:var(--neon);color:var(--neon)}
.btn-neon-sm{
  padding:8px 16px;border-radius:var(--r-sm);font-size:13px;font-weight:600;font-family:var(--f-head);letter-spacing:1px;
  background:var(--neon);color:#000;transition:all var(--dur) var(--ease);box-shadow:0 0 12px rgba(74,222,128,.25);
}
.btn-neon-sm:hover{box-shadow:0 0 22px rgba(74,222,128,.45)}
.btn-neon-full{
  width:100%;padding:13px;border-radius:var(--r-sm);font-size:15px;font-weight:700;font-family:var(--f-head);letter-spacing:1.5px;
  background:var(--neon);color:#000;transition:all var(--dur) var(--ease);box-shadow:0 0 20px rgba(74,222,128,.3);
  margin-top:8px;display:flex;align-items:center;justify-content:center;gap:8px;
}
.btn-neon-full:hover{box-shadow:0 0 36px rgba(74,222,128,.5);transform:translateY(-1px)}
.btn-sm-neon{
  padding:6px 14px;border-radius:7px;font-size:12px;font-weight:600;font-family:var(--f-head);letter-spacing:1px;
  border:1px solid var(--border2);color:var(--neon);transition:all var(--dur) var(--ease);
}
.btn-sm-neon:hover{background:var(--neon-glow);box-shadow:var(--shadow-neon)}
.btn-ghost-sm{padding:5px 12px;border-radius:7px;font-size:12px;color:var(--text2);border:1px solid var(--border);transition:all var(--dur) var(--ease)}
.btn-ghost-sm:hover{color:var(--red);border-color:rgba(248,113,113,.3)}
.btn-danger{padding:5px 10px;border-radius:6px;font-size:11px;color:var(--red);border:1px solid rgba(248,113,113,.2);transition:all var(--dur) var(--ease)}
.btn-danger:hover{background:var(--red2)}
.btn-edit{padding:5px 10px;border-radius:6px;font-size:11px;color:var(--neon);border:1px solid var(--border2);transition:all var(--dur) var(--ease)}
.btn-edit:hover{background:var(--neon-glow)}

/* ══════════════════════════════════════════════════════════
   BRAND
   ══════════════════════════════════════════════════════════ */
.brand{font-family:var(--f-head);font-size:22px;font-weight:700;letter-spacing:4px;cursor:pointer;color:var(--text1)}
.brand span{color:var(--neon)}

/* ══════════════════════════════════════════════════════════
   LANDING NAV
   ══════════════════════════════════════════════════════════ */
.lnav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 48px;height:64px;
  background:rgba(8,12,14,.85);backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
}
.lnav-links{display:flex;gap:28px}
.lnav-links a{font-size:14px;color:var(--text2);transition:color var(--dur) var(--ease);font-family:var(--f-head);letter-spacing:1px;font-weight:500}
.lnav-links a:hover{color:var(--neon)}
.lnav-right{display:flex;gap:10px;align-items:center}
.ham{display:none;flex-direction:column;gap:5px;padding:4px}
.ham span{display:block;width:22px;height:2px;background:var(--text2);border-radius:2px;transition:all var(--dur) var(--ease)}
.mob-menu{
  display:none;flex-direction:column;gap:12px;
  position:fixed;top:64px;left:0;right:0;z-index:99;
  background:var(--bg1);border-bottom:1px solid var(--border);
  padding:20px 24px;
}
.mob-menu.open{display:flex}
.mob-menu a{font-family:var(--f-head);font-size:16px;color:var(--text2);padding:10px 0;border-bottom:1px solid var(--border)}

/* ══════════════════════════════════════════════════════════
   HERO
   ══════════════════════════════════════════════════════════ */
.hero{
  position:relative;z-index:1;
  min-height:100vh;padding:120px 24px 80px;
  display:flex;flex-direction:column;align-items:center;text-align:center;
}
.hero-chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 16px;border-radius:99px;
  background:rgba(74,222,128,.07);border:1px solid rgba(74,222,128,.2);
  font-size:11px;font-weight:500;color:var(--neon);
  font-family:var(--f-mono);letter-spacing:1px;
  margin-bottom:28px;
}
.hero-h1{
  font-family:var(--f-head);
  font-size:clamp(44px,8vw,90px);
  font-weight:700;line-height:1.0;letter-spacing:-1px;
  margin-bottom:20px;
}
.hero-p{font-size:clamp(15px,2vw,18px);color:var(--text2);max-width:520px;line-height:1.75;margin-bottom:36px;font-weight:300}
.hero-btns{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-bottom:48px}
.hero-stats{display:flex;align-items:center;gap:24px;padding-top:36px;border-top:1px solid var(--border);flex-wrap:wrap;justify-content:center;margin-bottom:48px}
.hstat{text-align:center}
.hstat strong{display:block;font-family:var(--f-head);font-size:26px;font-weight:700;color:var(--neon);letter-spacing:1px}
.hstat span{font-size:11px;color:var(--text3);font-family:var(--f-mono);margin-top:3px}
.hstat-sep{width:1px;height:36px;background:var(--border)}

/* Hero mockup */
.hero-mockup{width:100%;max-width:760px;border-radius:var(--r);overflow:hidden;border:1px solid var(--border2);box-shadow:0 24px 80px rgba(0,0,0,.8),0 0 0 1px rgba(74,222,128,.08),var(--shadow-neon)}
.mockup-topbar{height:36px;background:var(--bg2);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;padding:0 14px;font-size:11px;color:var(--text3);font-family:var(--f-mono)}
.mockup-dots{display:flex;gap:6px}
.mockup-dots i{display:block;width:10px;height:10px;border-radius:50%}
.mockup-dots i:nth-child(1){background:#f87171}
.mockup-dots i:nth-child(2){background:#facc15}
.mockup-dots i:nth-child(3){background:#4ade80}
.mockup-live{margin-left:auto;display:flex;align-items:center;gap:5px;color:var(--neon);font-size:10px;letter-spacing:1px}
.mockup-body{background:var(--bg1);padding:14px}
.mockup-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.mk{border-radius:9px;padding:12px;border:1px solid var(--border);display:flex;flex-direction:column;gap:3px}
.mk.green{border-color:rgba(74,222,128,.2);background:rgba(74,222,128,.04)}
.mk.red{border-color:rgba(248,113,113,.2);background:rgba(248,113,113,.04)}
.mk.blue{border-color:rgba(96,165,250,.2);background:rgba(96,165,250,.04)}
.mk.yellow{border-color:rgba(250,204,21,.2);background:rgba(250,204,21,.04)}
.mk small{font-size:9px;color:var(--text3);font-family:var(--f-mono)}
.mk strong{font-size:14px;font-weight:700;font-family:var(--f-head)}
.mk.green strong{color:var(--neon)}
.mk.red strong{color:var(--red)}
.mk.blue strong{color:var(--blue)}
.mk.yellow strong{color:var(--yellow)}
.mk em{font-size:9px;font-style:normal;font-family:var(--f-mono)}
.mk em.up{color:var(--neon)}
.mk em.dn{color:var(--red)}
.mockup-charts{display:grid;grid-template-columns:2fr 1fr;gap:10px}
.mc-left{background:var(--bg2);border-radius:9px;padding:12px;border:1px solid var(--border)}
.mc-bar-wrap{display:flex;align-items:flex-end;gap:4px;height:70px}
.mc-bar{flex:1;border-radius:3px 3px 0 0;background:rgba(74,222,128,.5)}
.mc-bar.r{background:rgba(248,113,113,.4)}
.mc-right{background:var(--bg2);border-radius:9px;padding:12px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center}
.mc-donut{width:60px;height:60px;border-radius:50%;border:8px solid rgba(74,222,128,.15);border-left-color:var(--neon);border-top-color:var(--neon);animation:lspin 3s linear infinite;display:flex;align-items:center;justify-content:center}
.mc-donut-inner{font-family:var(--f-head);font-size:12px;font-weight:700;color:var(--neon)}

/* ══════════════════════════════════════════════════════════
   LANDING SECTIONS
   ══════════════════════════════════════════════════════════ */
.sec-tag{display:flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:11px;color:var(--neon);letter-spacing:2px;margin-bottom:12px}
.feat-section,.how-section{position:relative;z-index:1;padding:80px 48px;max-width:1200px;margin:0 auto}
.feat-section h2,.how-section h2{font-family:var(--f-head);font-size:clamp(26px,4vw,44px);font-weight:700;letter-spacing:-0.5px;margin-bottom:44px;line-height:1.15}
.feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.feat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:28px;transition:all var(--dur) var(--ease);position:relative;overflow:hidden}
.feat-card::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,var(--neon-glow2),transparent);opacity:0;transition:opacity var(--dur) var(--ease)}
.feat-card:hover{border-color:var(--border2);transform:translateY(-4px);box-shadow:var(--shadow),var(--shadow-neon)}
.feat-card:hover::before{opacity:1}
.feat-ico{font-size:28px;margin-bottom:14px}
.feat-card h3{font-family:var(--f-head);font-size:17px;font-weight:700;letter-spacing:.5px;margin-bottom:8px}
.feat-card p{font-size:13px;color:var(--text2);line-height:1.65}
.steps{display:flex;align-items:flex-start;gap:0}
.step{flex:1;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:32px 24px;text-align:center}
.step-arrow{font-size:24px;color:var(--neon);padding:40px 12px;flex-shrink:0}
.step-n{font-family:var(--f-head);font-size:44px;font-weight:700;color:transparent;-webkit-text-stroke:2px var(--neon);margin-bottom:14px;opacity:.4}
.step h3{font-family:var(--f-head);font-size:18px;font-weight:700;margin-bottom:8px;letter-spacing:.5px}
.step p{font-size:13px;color:var(--text2);line-height:1.65}
.cta-sec{position:relative;z-index:1;padding:80px 24px}
.cta-box{max-width:660px;margin:0 auto;background:var(--bg2);border:1px solid var(--border2);border-radius:20px;padding:60px 44px;text-align:center;position:relative;overflow:hidden}
.cta-glow{position:absolute;top:-80px;left:50%;transform:translateX(-50%);width:400px;height:300px;background:radial-gradient(circle,rgba(74,222,128,.1),transparent 70%);pointer-events:none}
.cta-box h2{font-family:var(--f-head);font-size:clamp(22px,4vw,38px);font-weight:700;letter-spacing:-0.5px;margin:12px 0 10px;line-height:1.1}
.cta-box p{color:var(--text2);font-size:15px;margin-bottom:28px}
.lfooter{position:relative;z-index:1;padding:28px 48px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.lfooter p{font-size:12px;color:var(--text3);font-family:var(--f-mono)}

/* ══════════════════════════════════════════════════════════
   LOGIN
   ══════════════════════════════════════════════════════════ */
#pgLogin{display:flex;align-items:center;justify-content:center}
.login-wrap{position:relative;z-index:1;width:100%;max-width:420px;padding:24px;display:flex;flex-direction:column;gap:14px}
.back-btn{font-size:13px;color:var(--text2);cursor:pointer;transition:color var(--dur);font-family:var(--f-mono);align-self:flex-start}
.back-btn:hover{color:var(--neon)}
.login-card{background:var(--bg2);border:1px solid var(--border2);border-radius:20px;padding:40px 34px;box-shadow:var(--shadow),var(--shadow-neon)}
.login-brand{font-family:var(--f-head);font-size:26px;font-weight:700;letter-spacing:4px;text-align:center;margin-bottom:18px}
.login-brand span{color:var(--neon)}
.login-card h2{font-family:var(--f-head);font-size:22px;font-weight:700;text-align:center;margin-bottom:4px;letter-spacing:.5px}
.login-sub{font-size:13px;color:var(--text2);text-align:center;margin-bottom:24px}
.login-err{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.3);border-radius:var(--r-sm);padding:10px 14px;font-size:13px;color:var(--red);margin-bottom:14px;font-family:var(--f-mono)}
.fgroup{margin-bottom:14px}
.fgroup label{display:block;font-size:12px;font-weight:500;color:var(--text2);margin-bottom:6px;font-family:var(--f-mono);letter-spacing:.5px}
.finput-wrap{position:relative}
.ficon{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:14px;font-family:var(--f-mono);pointer-events:none}
.finput-wrap input,.finput-wrap select,input[type=email],input[type=password],input[type=text],input[type=number],input[type=date],select{
  width:100%;padding:11px 13px 11px 38px;
  background:var(--bg1);border:1px solid var(--border);
  border-radius:var(--r-sm);font-size:14px;
  outline:none;transition:border-color var(--dur),box-shadow var(--dur);
  color:var(--text1);
}
.finput-wrap input:focus,.finput-wrap select:focus,input:focus,select:focus{border-color:var(--neon);box-shadow:0 0 0 3px rgba(74,222,128,.1)}
input::placeholder{color:var(--text3)}
.fgroup select,.fgroup input[type=date],.fgroup input[type=text],.fgroup input[type=number]{
  width:100%;padding:11px 13px;
  background:var(--bg1);border:1px solid var(--border);
  border-radius:var(--r-sm);font-size:14px;
  outline:none;transition:border-color var(--dur),box-shadow var(--dur);
  color:var(--text1);
}
.f-eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--text3);transition:color var(--dur)}
.f-eye:hover{color:var(--neon)}
.btn-login{
  width:100%;padding:12px;margin-top:8px;border-radius:var(--r-sm);
  font-size:15px;font-weight:700;font-family:var(--f-head);letter-spacing:1.5px;
  background:var(--neon);color:#000;
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:all var(--dur) var(--ease);box-shadow:0 0 24px rgba(74,222,128,.3);
}
.btn-login:hover{box-shadow:0 0 40px rgba(74,222,128,.5);transform:translateY(-1px)}
.btn-login:disabled{opacity:.5;cursor:not-allowed;transform:none}
.spin{width:16px;height:16px;border:2px solid rgba(0,0,0,.3);border-top-color:#000;border-radius:50%;animation:lspin .7s linear infinite}
.login-note{margin-top:18px;padding:12px 14px;background:var(--bg1);border:1px solid var(--border);border-radius:var(--r-sm);font-size:12px;color:var(--text2);display:flex;gap:10px;line-height:1.6}
.login-note strong{color:var(--text1)}

/* ══════════════════════════════════════════════════════════
   DASHBOARD LAYOUT
   ══════════════════════════════════════════════════════════ */
.dash-root{display:flex;min-height:100vh}

/* SIDEBAR */
.sidebar{
  width:var(--sb-w);min-height:100vh;
  background:var(--bg1);border-right:1px solid var(--border);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;z-index:200;
  transition:transform var(--dur) var(--ease);
}
.sb-brand{font-family:var(--f-head);font-size:20px;font-weight:700;letter-spacing:4px;padding:22px 20px 18px;border-bottom:1px solid var(--border)}
.sb-brand span{color:var(--neon)}
.sb-user{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:11px}
.sb-av{width:36px;height:36px;border-radius:9px;background:linear-gradient(135deg,var(--neon),#22c55e);display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:800;color:#000;flex-shrink:0;font-family:var(--f-head)}
.sb-user strong{display:block;font-size:14px;font-weight:600;font-family:var(--f-head);letter-spacing:.5px}
.sb-user small{font-size:11px;color:var(--text3);font-family:var(--f-mono)}
.sb-nav{flex:1;padding:16px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}
.sb-lbl{font-size:10px;font-weight:600;color:var(--text3);letter-spacing:2px;padding:14px 10px 6px;font-family:var(--f-mono)}
.sb-btn{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:10px 12px;border-radius:var(--r-sm);
  font-size:14px;font-weight:500;color:var(--text2);font-family:var(--f-head);letter-spacing:.5px;
  transition:all var(--dur) var(--ease);text-align:left;
}
.sb-btn i{font-style:normal;font-size:16px;width:20px;text-align:center}
.sb-btn:hover{background:var(--neon-glow2);color:var(--text1)}
.sb-btn.active{background:var(--neon-glow);color:var(--neon);border:1px solid var(--border2)}
.sb-foot{padding:14px 12px;border-top:1px solid var(--border)}
.sb-sync{display:flex;align-items:center;gap:8px;padding:9px 12px;background:rgba(255,255,255,.02);border-radius:var(--r-sm);font-size:12px;color:var(--text3);font-family:var(--f-mono);margin-bottom:6px}
.sb-logout{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:var(--r-sm);font-size:14px;color:var(--text2);font-family:var(--f-head);transition:all var(--dur) var(--ease)}
.sb-logout i{font-style:normal}
.sb-logout:hover{background:rgba(248,113,113,.08);color:var(--red)}

/* MAIN */
.dash-main{flex:1;margin-left:var(--sb-w);display:flex;flex-direction:column;min-height:100vh}

/* TOPBAR */
.topbar{
  position:sticky;top:0;z-index:100;
  background:rgba(8,12,14,.9);backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
  height:62px;padding:0 26px;
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.tb-l{display:flex;align-items:center;gap:13px}
.tb-ham{display:none;flex-direction:column;gap:5px;padding:4px}
.tb-ham span{display:block;width:20px;height:2px;background:var(--text2);border-radius:2px}
.tb-greet h2{font-family:var(--f-head);font-size:17px;font-weight:700;letter-spacing:.5px}
.tb-greet p{font-size:11px;color:var(--text3);font-family:var(--f-mono);margin-top:1px}
.tb-r{display:flex;align-items:center;gap:10px}
.tb-search{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 13px;transition:border-color var(--dur)}
.tb-search:focus-within{border-color:var(--neon)}
.tb-search input{background:none;color:var(--text1);font-size:13px;width:170px;outline:none;border:none}
.tb-search input::placeholder{color:var(--text3);font-family:var(--f-mono)}
.tb-search span{color:var(--text3);font-size:16px;font-family:var(--f-mono)}
.tb-ico{width:36px;height:36px;border-radius:var(--r-sm);background:var(--bg2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--text2);transition:all var(--dur)}
.tb-ico:hover{border-color:var(--neon);color:var(--neon)}
.tb-ico.spinning svg{animation:lspin .8s linear infinite}
.tb-av{width:36px;height:36px;border-radius:var(--r-sm);background:linear-gradient(135deg,var(--neon),#22c55e);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#000;font-family:var(--f-head);cursor:pointer}

/* CONTENT */
.sec-wrap{flex:1;padding:24px 26px}
.dsec{display:none}
.dsec.active{display:block;animation:secIn .35s var(--ease)}
@keyframes secIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Section header */
.sec-head{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:20px}
.sec-head h1{font-family:var(--f-head);font-size:24px;font-weight:700;letter-spacing:.5px}
.sec-head p{font-size:13px;color:var(--text2);margin-top:3px;font-family:var(--f-mono)}

/* Range tabs */
.range-row{display:flex;gap:3px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-sm);padding:3px}
.rtab{padding:5px 14px;border-radius:7px;font-size:12px;font-weight:500;color:var(--text3);font-family:var(--f-head);letter-spacing:.5px;transition:all var(--dur)}
.rtab.active{background:var(--bg3);color:var(--neon)}
.rtab:hover:not(.active){color:var(--text2)}

/* ── KPI GRID ── */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:18px}
.kpi-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:18px 18px 14px;position:relative;overflow:hidden;transition:all var(--dur) var(--ease)}
.kpi-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;opacity:0;transition:opacity var(--dur)}
.kpi-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.kpi-card:hover::before{opacity:1}
.kc-green::before{background:linear-gradient(90deg,var(--neon),transparent)}
.kc-red::before{background:linear-gradient(90deg,var(--red),transparent)}
.kc-blue::before{background:linear-gradient(90deg,var(--blue),transparent)}
.kc-yellow::before{background:linear-gradient(90deg,var(--yellow),transparent)}
.kc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.kc-lbl{font-size:10px;font-weight:600;color:var(--text3);letter-spacing:1px;font-family:var(--f-mono)}
.kc-ico{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;background:var(--bg3)}
.kc-val{font-family:var(--f-head);font-size:26px;font-weight:800;letter-spacing:-.5px;margin-bottom:9px}
.kc-green .kc-val{color:var(--neon)}
.kc-red .kc-val{color:var(--red)}
.kc-blue .kc-val{color:var(--blue)}
.kc-yellow .kc-val{color:var(--yellow)}
.kc-bot{display:flex;align-items:center;justify-content:space-between}
.kc-badge{font-size:10px;font-weight:700;padding:2px 8px;border-radius:99px;font-family:var(--f-mono)}
.bc-green{background:rgba(74,222,128,.12);color:var(--neon)}
.bc-red{background:var(--red2);color:var(--red)}
.bc-blue{background:var(--blue2);color:var(--blue)}
.bc-yellow{background:var(--yellow2);color:var(--yellow)}
.bc-neutral{background:var(--bg4);color:var(--text3)}
.kc-per{font-size:10px;color:var(--text3);font-family:var(--f-mono)}

/* ── CHARTS ── */
.charts-row{display:grid;grid-template-columns:2fr 1fr;gap:13px;margin-bottom:16px}
.chart-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:20px}
.cc-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px}
.cc-head h3{font-family:var(--f-head);font-size:15px;font-weight:700;letter-spacing:.5px}
.cc-head p{font-size:11px;color:var(--text2);margin-top:2px;font-family:var(--f-mono)}
.cc-legend{display:flex;gap:12px}
.cleg{font-size:11px;color:var(--text2);font-family:var(--f-mono)}
.cleg.green{color:var(--neon)}
.cleg.red{color:var(--red)}
.cc-body{height:200px;position:relative}
.chart-lg .cc-body{height:220px}

/* Donut */
.donut-wrap{position:relative;display:flex;align-items:center;justify-content:center;height:180px}
.donut-mid{position:absolute;text-align:center;pointer-events:none}
.donut-mid span{display:block;font-family:var(--f-head);font-size:22px;font-weight:700;color:var(--neon)}
.donut-mid small{font-size:10px;color:var(--text3);font-family:var(--f-mono)}
.donut-leg{margin-top:12px;display:flex;flex-direction:column;gap:7px}
.donut-leg-r{display:flex;justify-content:space-between;font-size:12px;align-items:center}
.donut-leg-r .ll{color:var(--text2);display:flex;align-items:center;gap:5px;font-family:var(--f-mono)}
.donut-leg-r .dot{width:7px;height:7px;border-radius:50%}
.donut-leg-r .lv{font-weight:700;font-family:var(--f-head)}

/* Leyenda donut (filas IngreSos / Gastos / Balance) */
.donut-leg-row{
  display:flex;align-items:center;justify-content:space-between;
  font-size:13px;padding:7px 4px;
}
.donut-leg-row .dleg-left{
  display:inline-flex;align-items:center;gap:9px;
  color:var(--text2);font-weight:600;
}
.donut-leg-row .dleg-dot{
  width:9px;height:9px;border-radius:50%;display:inline-block;flex-shrink:0;
}
.donut-leg-row .dleg-right{
  font-family:var(--f-head);font-weight:800;font-size:14px;
  font-variant-numeric:tabular-nums;letter-spacing:-.2px;
}

/* Donut card en ancho completo del dashboard */
.chart-card.chart-full{grid-column:1 / -1}

/* ── ANALYSIS ── */
.analysis-row{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-bottom:16px}
.acard{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:18px}
.acard-title{font-family:var(--f-head);font-size:14px;font-weight:700;letter-spacing:.5px;margin-bottom:13px}
.alist{display:flex;flex-direction:column}
.ar{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}
.ar:last-child{border-bottom:none}
.ar .al{color:var(--text2);font-size:12px;font-family:var(--f-mono)}
.ar .av{font-weight:700;font-family:var(--f-head);font-size:13px}
.alerts-wrap{display:flex;flex-direction:column;gap:8px}
.al-item{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;border-radius:var(--r-sm);font-size:12px;line-height:1.6;font-family:var(--f-mono)}
.al-item.warn{background:rgba(250,204,21,.06);border:1px solid rgba(250,204,21,.18)}
.al-item.info{background:rgba(74,222,128,.05);border:1px solid rgba(74,222,128,.15)}
.al-item.danger{background:rgba(248,113,113,.06);border:1px solid rgba(248,113,113,.18)}
.al-item.good{background:rgba(74,222,128,.06);border:1px solid rgba(74,222,128,.18)}
.al-ico{flex-shrink:0;margin-top:1px}

/* ── TABLE ── */
.tcard{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:16px}
.tcard-head{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}
.tcard-head h3{font-family:var(--f-head);font-size:15px;font-weight:700;letter-spacing:.5px}
.tcontrols{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tsearch{display:flex;align-items:center;gap:6px;background:var(--bg1);border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 11px}
.tsearch input{background:none;color:var(--text1);font-size:12px;width:120px;outline:none;border:none;font-family:var(--f-mono)}
.tsearch input::placeholder{color:var(--text3)}
select{padding:6px 10px;background:var(--bg1);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text2);font-size:12px;cursor:pointer;outline:none;transition:border-color var(--dur)}
select:focus{border-color:var(--neon)}
.tscroll{overflow-x:auto}
th{padding:10px 18px;font-size:10px;font-weight:700;color:var(--text3);text-align:left;text-transform:uppercase;letter-spacing:1px;background:var(--bg1);border-bottom:1px solid var(--border);cursor:pointer;white-space:nowrap;font-family:var(--f-mono)}
th:hover{color:var(--neon)}
th em{opacity:.3;font-style:normal}
td{padding:12px 18px;font-size:12px;border-bottom:1px solid var(--border);white-space:nowrap;font-family:var(--f-mono)}
tr:last-child td{border-bottom:none}
tbody tr{transition:background var(--dur)}
tbody tr:hover{background:rgba(74,222,128,.02)}
.bt-ing{padding:3px 8px;border-radius:99px;font-size:10px;font-weight:700;background:rgba(74,222,128,.12);color:var(--neon)}
.bt-gas{padding:3px 8px;border-radius:99px;font-size:10px;font-weight:700;background:var(--red2);color:var(--red)}
.amt-p{color:var(--neon);font-weight:700}
.amt-n{color:var(--red);font-weight:700}
.tfoot{padding:12px 20px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.tfoot span{font-size:11px;color:var(--text3);font-family:var(--f-mono)}
.tpag{display:flex;gap:4px}
.pb{width:28px;height:28px;border-radius:6px;background:var(--bg3);border:1px solid var(--border);color:var(--text2);font-size:11px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--dur);font-family:var(--f-mono)}
.pb:hover,.pb.active{background:var(--neon);border-color:var(--neon);color:#000;font-weight:700}
.empty-row td{text-align:center;padding:36px;color:var(--text3);font-size:13px}

/* ── EDITOR ── */
.editor-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
.editor-form-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:22px}
.ef-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.ef-head h3{font-family:var(--f-head);font-size:15px;font-weight:700;letter-spacing:.5px}
.ef-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:4px}
.editor-recent-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:20px}
.editor-recent-card h3{font-family:var(--f-head);font-size:15px;font-weight:700;margin-bottom:14px;letter-spacing:.5px}
.ed-recent{display:flex;flex-direction:column;gap:8px}
.ed-item{display:flex;align-items:center;justify-content:space-between;padding:10px 13px;background:var(--bg3);border-radius:var(--r-sm);border:1px solid var(--border)}
.ed-item-info small{font-size:10px;color:var(--text3);font-family:var(--f-mono)}
.ed-item-info span{display:block;font-size:12px;color:var(--text2);font-family:var(--f-mono)}
.ed-item-amt{font-family:var(--f-head);font-size:14px;font-weight:700}
.ed-item-actions{display:flex;gap:5px;margin-top:4px}

/* ── CAT BARS ── */
.cat-bars{display:flex;flex-direction:column;gap:11px;margin-top:4px}
.cb-item{display:flex;flex-direction:column;gap:4px}
.cb-info{display:flex;justify-content:space-between;font-size:12px}
.cb-lbl{color:var(--text2);font-family:var(--f-mono)}
.cb-val{font-weight:700;font-family:var(--f-head)}
.cb-bg{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden}
.cb-fill{height:100%;border-radius:99px;transition:width 1.2s var(--ease)}

/* ── BUDGET ── */
.budget-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.bcard{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:20px;transition:all var(--dur)}
.bcard:hover{border-color:var(--border2)}
.bcard-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.bcard-name{font-family:var(--f-head);font-size:15px;font-weight:700;letter-spacing:.5px}
.bcard-del{font-size:12px;color:var(--text3);cursor:pointer;transition:color var(--dur)}
.bcard-del:hover{color:var(--red)}
.bcard-amounts{display:flex;justify-content:space-between;font-size:12px;margin-bottom:8px;font-family:var(--f-mono)}
.bcard-spent{color:var(--text1);font-weight:600}
.bcard-limit{color:var(--text3)}
.bcard-bar-bg{height:8px;background:var(--bg3);border-radius:99px;overflow:hidden}
.bcard-bar-fill{height:100%;border-radius:99px;transition:width .8s var(--ease)}
.bcard-pct{font-size:11px;color:var(--text3);margin-top:6px;font-family:var(--f-mono)}

/* Modal */
.modal{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.7);backdrop-filter:blur(6px)}
.modal-card{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--r);padding:28px;width:100%;max-width:380px;box-shadow:var(--shadow),var(--shadow-neon)}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.modal-head h3{font-family:var(--f-head);font-size:17px;font-weight:700;letter-spacing:.5px}
.modal-head button{color:var(--text2);font-size:18px;transition:color var(--dur)}
.modal-head button:hover{color:var(--red)}

/* ── PROJECTION ── */
.proj-banner{background:linear-gradient(135deg,rgba(74,222,128,.06),rgba(96,165,250,.04));border:1px solid rgba(74,222,128,.15);border-radius:var(--r);padding:26px;position:relative;overflow:hidden}
.proj-glow{position:absolute;top:-60px;right:-60px;width:200px;height:200px;background:radial-gradient(circle,rgba(74,222,128,.15),transparent 70%);pointer-events:none}
.proj-kpis{display:flex;align-items:center;flex-wrap:wrap;gap:0;margin-top:16px}
.pk{flex:1;padding:0 20px;min-width:130px}
.pk span{display:block;font-size:11px;color:var(--text2);margin-bottom:5px;font-family:var(--f-mono)}
.pk strong{font-family:var(--f-head);font-size:22px;font-weight:700}
.pk-sep{width:1px;height:44px;background:var(--border)}

/* ══════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════ */
@media(max-width:1100px){
  .kpi-grid{grid-template-columns:repeat(2,1fr)}
  .charts-row{grid-template-columns:1fr}
  .analysis-row{grid-template-columns:1fr}
  .editor-layout{grid-template-columns:1fr}
}
@media(max-width:900px){
  .feat-grid{grid-template-columns:repeat(2,1fr)}
  .steps{flex-direction:column}
  .step-arrow{padding:8px;text-align:center}
}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0);box-shadow:0 0 60px rgba(0,0,0,.8)}
  .dash-main{margin-left:0}
  .tb-ham{display:flex}
  .tb-search{display:none}
  .sec-wrap{padding:14px}
  .topbar{padding:0 14px}
  .lnav{padding:0 18px}
  .lnav-links,.lnav-right{display:none}
  .ham{display:flex}
  .feat-section,.how-section{padding:60px 18px}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:10px}
  .kc-val{font-size:18px}
  .ef-grid{grid-template-columns:1fr}
  td:nth-child(5),th:nth-child(5){display:none}
  .pk-sep{display:none}
  .pk{padding:10px 0;border-bottom:1px solid var(--border)}
  .pk:last-child{border-bottom:none}
}
@media(max-width:480px){
  .kpi-grid{grid-template-columns:1fr}
  .feat-grid{grid-template-columns:1fr}
  .hero-h1{letter-spacing:-0.5px}
  .mockup-kpis{grid-template-columns:repeat(2,1fr)}
  .login-card{padding:28px 20px}
  .cta-box{padding:36px 22px}
  .lfooter{padding:20px;flex-direction:column}
  .lnav{padding:0 16px}
}

/* ── Animations ── */
@keyframes fadeUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.fu{animation:fadeUp .45s var(--ease) both}
.d1{animation-delay:.08s}.d2{animation-delay:.16s}.d3{animation-delay:.24s}.d4{animation-delay:.32s}

/* ══════════════════════════════════════════════════════════
   V3 ADDITIONS — New metrics & components (same theme)
   ══════════════════════════════════════════════════════════ */

/* Light mode */
[data-theme="light"] {
  --bg0:#f4f7f4;--bg1:#edf2ed;--bg2:#ffffff;--bg3:#f0f5f0;--bg4:#e4ece4;
  --text1:#0a1a0a;--text2:#3a5a3a;--text3:#7a9a7a;
  --border:rgba(22,163,74,.1);--border2:rgba(22,163,74,.2);
  --shadow:0 2px 20px rgba(0,0,0,.08);--shadow-neon:0 0 14px rgba(22,163,74,.12);
  --neon:#16a34a;--neon2:#15803d;--neon-glow:rgba(22,163,74,.14);--neon-glow2:rgba(22,163,74,.06);
  --red:#dc2626;--red2:rgba(220,38,38,.1);
  --blue:#2563eb;--blue2:rgba(37,99,235,.1);
  --yellow:#d97706;--yellow2:rgba(217,119,6,.1);
}
[data-theme="light"] .grid-bg{background-image:linear-gradient(rgba(22,163,74,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(22,163,74,.05) 1px,transparent 1px)}
[data-theme="light"] .scan-line{opacity:.08}
[data-theme="light"] .orb{opacity:.04}
[data-theme="light"] .topbar{background:rgba(244,247,244,.9)}
[data-theme="light"] .sidebar{box-shadow:2px 0 20px rgba(0,0,0,.06)}
[data-theme="light"] .loader{background:var(--bg0)}

/* Theme toggle */
.theme-toggle{width:36px;height:36px;border-radius:var(--r-sm);background:var(--bg2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;transition:all var(--dur) var(--ease)}
.theme-toggle:hover{border-color:var(--neon)}

/* Cat pie chart */
.cat-pie-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:20px}
.cat-pie-wrap{position:relative;display:flex;align-items:center;justify-content:center}
.cat-legend{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.cat-leg-row{display:flex;justify-content:space-between;align-items:center;font-size:12px}
.cat-leg-row .cl{display:flex;align-items:center;gap:6px;color:var(--text2);font-family:var(--f-mono)}
.cat-leg-row .cdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.cat-leg-row .cv{font-weight:700;font-family:var(--f-head);font-size:12px}

/* ── REGISTER ── */
/* (reuses login styles from existing CSS) */

/* ── INSIGHT CARD ── */
.insight-card{
  background:linear-gradient(135deg,rgba(99,102,241,.1),rgba(74,222,128,.06));
  border:1px solid rgba(99,102,241,.2);border-radius:var(--r);padding:16px 18px;
  display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;
}
.insight-ico{font-size:22px;flex-shrink:0;margin-top:2px}
.insight-card strong{display:block;font-size:10px;letter-spacing:2px;color:#a78bfa;font-family:var(--f-mono);margin-bottom:5px}
.insight-card p{font-size:14px;color:var(--text1);line-height:1.55}

/* ── BIG KPI STACK (goclever style) ── */
.big-kpi-stack{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}
.big-kpi{
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);
  padding:20px 22px;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:space-between;
}
.big-kpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:4px 0 0 4px}
.big-kpi.bk-green::before{background:var(--neon)}
.big-kpi.bk-red::before{background:var(--red)}
.big-kpi.bk-blue::before{background:var(--blue)}
.big-kpi-left .bk-label{font-size:11px;color:var(--text2);font-family:var(--f-mono);letter-spacing:.5px;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.big-kpi-left .bk-val{font-family:var(--f-head);font-size:34px;font-weight:800;letter-spacing:-1.5px;line-height:1}
.big-kpi-left .bk-chg{font-size:12px;margin-top:6px;font-family:var(--f-mono);display:flex;align-items:center;gap:4px}
.big-kpi-left .bk-chg.up{color:var(--neon)}
.big-kpi-left .bk-chg.dn{color:var(--red)}
.big-kpi-right{opacity:.15}
.big-kpi-right canvas{width:80px!important;height:40px!important}

/* ── PEAK INFO ── */
.peak-info{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:12px;color:var(--text2);font-family:var(--f-mono)}
.peak-info strong{color:var(--red)}
.peak-info .pi-badge{background:var(--red2);color:var(--red);padding:2px 8px;border-radius:99px;font-size:10px;font-weight:700}

/* ── RECURRING LIST ── */
.recurring-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.rec-item{display:flex;align-items:center;gap:14px;padding:10px 0;border-bottom:1px solid var(--border)}
.rec-item:last-child{border-bottom:none}
.rec-badge{width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;font-family:var(--f-head);flex-shrink:0;border:2px solid}
.rec-info{flex:1}
.rec-info strong{display:block;font-size:13px;font-weight:600;color:var(--text1)}
.rec-info small{font-size:11px;color:var(--text3);font-family:var(--f-mono)}
.rec-amount{font-family:var(--f-head);font-size:15px;font-weight:700;color:var(--red)}

/* ── CATEGORY LEGEND (goclever style) ── */
.res-cat-legend{display:flex;flex-direction:column;gap:0;margin-top:8px}
.rcl-row{
  display:flex;align-items:center;gap:10px;padding:10px 0;
  border-bottom:1px solid var(--border);font-size:13px;cursor:pointer;
  transition:background var(--dur);
}
.rcl-row:last-child{border-bottom:none}
.rcl-row:hover{background:var(--neon-glow2);border-radius:8px;padding-left:8px}
.rcl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.rcl-name{flex:1;font-weight:500;color:var(--text1)}
.rcl-pct{font-size:11px;color:var(--text3);font-family:var(--f-mono);margin-right:8px}
.rcl-val{font-weight:700;font-family:var(--f-head);font-size:13px}

/* ── ACTIVITY FEED ── */
.activity-feed{display:flex;flex-direction:column;gap:0;margin-top:8px}
.act-item{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 0;border-bottom:1px solid var(--border);
}
.act-item:last-child{border-bottom:none}
.act-left strong{display:block;font-size:13px;font-weight:600;color:var(--text1)}
.act-left small{font-size:11px;color:var(--text3);font-family:var(--f-mono);margin-top:2px;display:block}
.act-amount{font-family:var(--f-head);font-size:14px;font-weight:700}
.act-amount.pos{color:var(--neon)}
.act-amount.neg{color:var(--red)}
.activity-see-all{
  width:100%;margin-top:12px;padding:10px;border-radius:var(--r-sm);
  font-size:13px;color:var(--text2);font-family:var(--f-mono);
  border:1px solid var(--border);background:none;
  transition:all var(--dur);text-align:center;
}
.activity-see-all:hover{border-color:var(--neon);color:var(--neon)}

/* ── SETTINGS ── */
.settings-av{
  width:60px;height:60px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(135deg,var(--neon),#22c55e);
  display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:800;color:#000;font-family:var(--f-head);
}
.theme-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.theme-opt{
  border:2px solid var(--border);border-radius:var(--r-sm);
  padding:14px;text-align:center;cursor:pointer;
  transition:all var(--dur) var(--ease);
}
.theme-opt.active{border-color:var(--neon);background:var(--neon-glow)}
.theme-opt span{font-size:13px;color:var(--text2);font-family:var(--f-mono);display:block;margin-top:8px}
.theme-opt.active span{color:var(--neon)}
.theme-preview{height:50px;border-radius:8px}
.dark-prev{background:linear-gradient(135deg,#080c0e,#162022)}
.light-prev{background:linear-gradient(135deg,#f4f7f4,#edf2ed)}

/* ── MINI SPARKLINE ── */
.sparkline-wrap{width:80px;height:40px;opacity:.3}

/* Currency badge in KPI */
.curr-badge{font-size:10px;padding:2px 6px;border-radius:99px;background:var(--bg3);color:var(--text3);font-family:var(--f-mono);font-weight:400;letter-spacing:.5px}

/* Mobile nav bar (bottom tabs like goclever) */
.mobile-tabs{
  display:none;
  position:fixed;bottom:0;left:0;right:0;z-index:300;
  background:var(--bg1);border-top:1px solid var(--border);
  padding:8px 0 16px;
  grid-template-columns:repeat(5,1fr);
}
.mob-tab{
  display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 4px;font-size:9px;font-family:var(--f-mono);
  color:var(--text3);cursor:pointer;transition:color var(--dur);
  border:none;background:none;
}
.mob-tab .mt-ico{font-size:20px;line-height:1}
.mob-tab.active{color:var(--neon)}
@media(max-width:768px){
  .mobile-tabs{display:grid}
  .sec-wrap{padding-bottom:80px}
  .sidebar{display:none}
  .main{margin-left:0}
}

/* ── SECTION TRANSITIONS ── */
.dsec {
  display: none;
  opacity: 0;
  transform: translateY(10px);
}
.dsec.active {
  display: block;
  animation: secSlideIn .35s cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes secSlideIn {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ── KPI CARD number counter animation ── */
.kc-val, .big-kpi-left .bk-val {
  transition: color .3s ease;
}
.kc-val.flash { animation: numFlash .4s ease; }
@keyframes numFlash {
  0%   { opacity: 0; transform: translateY(6px) scale(.97); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── Stronger income green / expense red ── */
.kc-green .kc-val { color: #1ee78c !important; text-shadow: 0 0 24px rgba(30,231,140,.45); }
.kc-red   .kc-val { color: #ff4d5c !important; text-shadow: 0 0 24px rgba(255,77,92,.45); }
.kc-blue  .kc-val { color: #60a5fa !important; }
.kc-yellow .kc-val{ color: #facc15 !important; }

.amt-p { color: #1ee78c !important; font-weight: 800; }
.amt-n { color: #ff4d5c !important; font-weight: 800; }

.bk-green .bk-val { color: #1ee78c !important; }
.bk-red   .bk-val { color: #ff4d5c !important; }
.bk-blue  .bk-val { color: #60a5fa !important; }

/* ── Improved sidebar sync indicator ── */
.sb-sync { border: 1px solid var(--border); transition: all .3s; }
.sb-sync.syncing { border-color: rgba(250,204,21,.2); }
.sb-sync.ok { border-color: rgba(34,197,94,.2); }
.sb-sync.err { border-color: rgba(239,68,68,.2); }

/* ── Empty state for dashboard ── */
.empty-dashboard {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 60px 24px; text-align: center;
  background: var(--bg2); border: 1px dashed var(--border2); border-radius: var(--r);
  margin: 20px 0;
}
.empty-dashboard .ed-ico { font-size: 48px; margin-bottom: 16px; opacity: .6; }
.empty-dashboard h3 { font-family: var(--f-head); font-size: 20px; font-weight: 700; margin-bottom: 8px; }
.empty-dashboard p { font-size: 14px; color: var(--text2); line-height: 1.65; max-width: 340px; margin-bottom: 20px; }

/* ── Font weight improvements ── */
.topbar-greet h2, .tb-greet h2 { font-weight: 800; letter-spacing: -.3px; }
.sec-head h1 { font-weight: 800; letter-spacing: -.4px; }
.kpi-card .kc-label { font-weight: 700; letter-spacing: 1.2px; }
.chart-card .cc-head h3 { font-weight: 700; }

/* ── Loader improved ── */
.loader-brand {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 800;
  letter-spacing: 2px;
}

/* ── Mobile tab active indicator ── */
.mob-tab.active .mt-ico {
  filter: drop-shadow(0 0 6px var(--neon));
  transform: translateY(-2px);
  transition: all .2s ease;
}

/* ── Registration form clean (no prefill hint) ── */
.login-note.reg-note {
  background: rgba(34,197,94,.06);
  border-color: rgba(34,197,94,.2);
}

/* ══════════════════════════════════════════════════════════
   BILANS V4 — PROFESSIONAL ADDITIONS
   ══════════════════════════════════════════════════════════ */

/* ── SPLASH SCREEN ── */
.splash-screen {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--bg0);
  display: flex; align-items: center; justify-content: center;
  transition: opacity .6s cubic-bezier(.4,0,.2,1);
}
.splash-screen.out { opacity: 0; pointer-events: none; }
.splash-content { display: flex; flex-direction: column; align-items: center; gap: 24px; }
.splash-logo-wrap { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.splash-icon {
  animation: splashBounce .9s cubic-bezier(.34,1.56,.64,1) both;
  filter: drop-shadow(0 0 28px rgba(34,197,94,.55));
}
@keyframes splashBounce {
  0%   { opacity: 0; transform: scale(.4) translateY(20px); }
  70%  { transform: scale(1.1) translateY(-6px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
.splash-brand-name {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 34px; font-weight: 800; letter-spacing: 7px;
  color: var(--neon); text-shadow: 0 0 36px rgba(34,197,94,.6);
  animation: splashFade .5s .4s both;
}
.splash-tagline {
  font-size: 13px; color: var(--text3);
  letter-spacing: 1.5px; animation: splashFade .5s .6s both;
}
@keyframes splashFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.splash-loader {
  width: 160px; animation: splashFade .4s .7s both;
}
.splash-track { height: 2px; background: var(--bg3); border-radius: 99px; overflow: hidden; }
.splash-fill {
  height: 100%; border-radius: 99px;
  background: linear-gradient(90deg, var(--neon), #34d399);
  animation: splashProgress 1.6s .7s cubic-bezier(.4,0,.2,1) forwards;
  width: 0;
}
@keyframes splashProgress { 0%{width:0} 60%{width:70%} 100%{width:100%} }

/* ── REMEMBER ME ── */
.remember-wrap { margin: 2px 0 14px; }
.remember-label {
  display: flex; align-items: center; gap: 10px;
  cursor: pointer; font-size: 13px; color: var(--text2);
  user-select: none;
}
.remember-label input[type=checkbox] { position: absolute; opacity: 0; width: 0; height: 0; }
.remember-box {
  width: 18px; height: 18px; border-radius: 5px; flex-shrink: 0;
  border: 2px solid var(--border2); background: var(--bg1);
  display: flex; align-items: center; justify-content: center;
  transition: all var(--dur) var(--ease);
}
.remember-label input:checked ~ .remember-box {
  background: var(--neon); border-color: var(--neon);
}
.remember-label input:checked ~ .remember-box::after {
  content: ''; display: block;
  width: 4px; height: 8px;
  border: 2px solid #000; border-left: none; border-top: none;
  transform: rotate(45deg); margin-top: -2px;
}

/* ── MOVES CARD STYLE (like reference) ── */
.moves-filter-bar {
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--r); padding: 14px; margin-bottom: 12px;
  display: flex; flex-direction: column; gap: 10px;
}
.moves-search-box {
  display: flex; align-items: center; gap: 9px;
  background: var(--bg1); border: 1px solid var(--border);
  border-radius: var(--r-sm); padding: 10px 14px;
  transition: border-color var(--dur);
}
.moves-search-box:focus-within { border-color: var(--neon); }
.moves-search-box input {
  flex: 1; background: none; color: var(--text1);
  font-size: 14px; outline: none; border: none;
}
.moves-search-box input::placeholder { color: var(--text3); }
.moves-filter-pills { display: flex; gap: 6px; }
.mpill {
  padding: 6px 16px; border-radius: 99px; font-size: 13px; font-weight: 600;
  border: 1.5px solid var(--border); color: var(--text2);
  transition: all var(--dur) var(--ease); background: none;
  font-family: 'Space Grotesk', sans-serif;
}
.mpill.active { background: var(--neon); border-color: var(--neon); color: #000; }
.mpill:active { transform: scale(.95); }
.moves-selects { display: flex; gap: 8px; flex-wrap: wrap; }
.moves-selects select {
  flex: 1; min-width: 120px; padding: 8px 10px;
  background: var(--bg1); border: 1px solid var(--border);
  border-radius: var(--r-xs); color: var(--text2); font-size: 12px;
  cursor: pointer; outline: none;
}
.moves-card-list { display: flex; flex-direction: column; gap: 8px; }
.move-item {
  display: flex; align-items: center; gap: 14px;
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--r); padding: 14px 16px;
  transition: all var(--dur) var(--ease);
  cursor: default; position: relative; overflow: hidden;
}
/* iOS-style press effect */
.move-item::before {
  content: ''; position: absolute; inset: 0;
  background: var(--neon-glow); opacity: 0;
  transition: opacity var(--dur); border-radius: var(--r);
  pointer-events: none;
}
.move-item:active::before { opacity: 1; }
.move-item:hover { border-color: var(--border2); transform: translateX(2px); }
.move-cat-icon {
  width: 44px; height: 44px; border-radius: 12px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.move-cat-icon svg { width: 20px; height: 20px; }
.move-cat-icon.cat-green { background: rgba(34,197,94,.12); color: var(--neon); }
.move-cat-icon.cat-red   { background: rgba(239,68,68,.12);  color: var(--red); }
.move-cat-icon.cat-blue  { background: rgba(96,165,250,.12); color: var(--blue); }
.move-cat-icon.cat-amber { background: rgba(245,158,11,.12); color: var(--amber); }
.move-cat-icon.cat-purple{ background: rgba(167,139,250,.12);color: var(--purple); }
.move-cat-icon.cat-orange{ background: rgba(249,115,22,.12); color: #f97316; }
.move-body { flex: 1; min-width: 0; }
.move-title { font-size: 14px; font-weight: 600; color: var(--text1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.move-sub { font-size: 11px; color: var(--text3); margin-top: 3px; display: flex; align-items: center; gap: 5px; }
.move-sub-sep { opacity: .4; }
.move-right { text-align: right; flex-shrink: 0; }
.move-amount { font-family: 'Space Grotesk', sans-serif; font-size: 16px; font-weight: 800; display: block; }
.move-amount.pos { color: var(--neon); }
.move-amount.neg { color: var(--red); }
.move-date-sm { font-size: 11px; color: var(--text3); display: block; margin-top: 2px; }
.move-action-row { display: flex; gap: 6px; margin-top: 3px; }
.move-act { width: 26px; height: 26px; border-radius: 7px; display: flex; align-items: center; justify-content: center; transition: all var(--dur); }
.move-act.edit { background: var(--neon-glow); color: var(--neon); }
.move-act.del  { background: rgba(239,68,68,.1); color: var(--red); }
.move-act:active { transform: scale(.9); }
.moves-foot { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; flex-wrap: wrap; gap: 8px; }
.moves-foot span { font-size: 12px; color: var(--text3); }

/* ── MOBILE BOTTOM NAV ── */
.mob-bottom-nav {
  display: none;
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 300;
  background: rgba(13,20,22,.88);
  backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
  border-top: 1px solid var(--border);
  padding: 8px 4px env(safe-area-inset-bottom,12px);
  grid-template-columns: repeat(5,1fr);
}
[data-theme="light"] .mob-bottom-nav { background: rgba(239,242,239,.92); }
.mbn-item {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 6px 4px; font-size: 10px; color: var(--text3);
  transition: all .18s var(--ease); border: none; background: none;
  font-family: 'Space Grotesk', sans-serif; font-weight: 500;
}
.mbn-item svg { transition: transform .18s var(--ease); }
.mbn-item:active { transform: scale(.88); }
.mbn-item:active svg { transform: scale(.85); }
.mbn-item.active { color: var(--neon); }
.mbn-item.active svg { filter: drop-shadow(0 0 6px rgba(34,197,94,.5)); }
.mbn-center { position: relative; }
.mbn-add {
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--neon); color: #000;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 0 24px rgba(34,197,94,.4);
  margin-bottom: 2px; transition: all .18s var(--ease);
}
.mbn-center:active .mbn-add { transform: scale(.9); box-shadow: none; }
.mbn-item span { line-height: 1; }

/* ── iOS-style transparent press on all buttons ── */
.btn-login:active, .btn-neon-full:active, .btn-auth-main:active {
  filter: brightness(.88);
  transform: scale(.98);
}
.kpi-card:active { transform: scale(.98); opacity: .9; }
.sb-item:active { opacity: .7; }
.tb-ico:active, .icon-btn:active { opacity: .6; transform: scale(.92); }

/* ── Section transitions ── */
.dsec {
  animation: secSlide .32s cubic-bezier(.4,0,.2,1) both;
}
@keyframes secSlide {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}

/* ── Improved mobile spacing ── */
@media (max-width: 768px) {
  .mob-bottom-nav { display: grid; }
  .sec-wrap, .content { padding-bottom: 84px !important; }
  .kpi-val { font-size: 26px !important; }
  .kpi-card { padding: 18px 16px 14px !important; }
  .kpi-grid { grid-template-columns: 1fr 1fr !important; gap: 10px !important; }
  .charts-row { grid-template-columns: 1fr !important; }
  .analysis-row { grid-template-columns: 1fr !important; }
  .editor-layout { grid-template-columns: 1fr !important; }
  .settings-grid { grid-template-columns: 1fr !important; }
}
@media (max-width: 480px) {
  .kpi-val { font-size: 22px !important; }
  .kpi-grid { grid-template-columns: 1fr !important; }
  .moves-filter-pills { flex-wrap: wrap; }
}

/* ── Empty state ── */
.empty-moves {
  text-align: center; padding: 48px 20px;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
}
.empty-moves svg { color: var(--text3); opacity: .4; }
.empty-moves h3 { font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; color: var(--text2); }
.empty-moves p { font-size: 13px; color: var(--text3); max-width: 260px; line-height: 1.6; }

/* ══════════════════════════════════════════════════════════
   V6 — REDESIGN OVERRIDES (mint vibrant + iOS native + BIG numbers)
   ══════════════════════════════════════════════════════════ */

:root {
  /* More vibrant mint-green, juicy red, electric blue (goclever-tier) */
  --neon: #1ee78c;
  --neon-bright: #2dffa3;
  --neon-glow: rgba(30,231,140,.22);
  --neon-glow2: rgba(30,231,140,.08);
  --red: #ff4d5c;
  --red2: rgba(255,77,92,.14);
  --blue: #4d8bff;
  --blue2: rgba(77,139,255,.14);
  --yellow: #ffc933;
  --yellow2: rgba(255,201,51,.14);
  --text1: #eaf6ec;
  --text2: #8aa790;
  --text3: #4a6852;
  --border: rgba(30,231,140,.10);
  --border2: rgba(30,231,140,.20);
  --f-display: 'Archivo', 'Space Grotesk', sans-serif;
}
[data-theme="light"] {
  --bg0: #f5f8f5;
  --bg1: #ffffff;
  --bg2: #ffffff;
  --bg3: #f1f5f1;
  --bg4: #e6ede6;
  --neon: #00c266;
  --neon-bright: #00d97a;
  --neon-glow: rgba(0,194,102,.18);
  --neon-glow2: rgba(0,194,102,.07);
  --red: #e8344a;
  --red2: rgba(232,52,74,.12);
  --blue: #2563eb;
  --blue2: rgba(37,99,235,.10);
  --yellow: #d97706;
  --text1: #0c1a10;
  --text2: #4a6a52;
  --text3: #8aa492;
  --border: rgba(0,0,0,.08);
  --border2: rgba(0,0,0,.14);
  --shadow: 0 1px 0 rgba(0,0,0,.04), 0 4px 18px rgba(0,0,0,.06);
  --shadow-neon: 0 0 0 rgba(0,194,102,0);
}
[data-theme="light"] body { background: var(--bg0); }

/* Neon text — keep mint glow on dark, no glow on light */
.neon-text { color: var(--neon); text-shadow: 0 0 22px rgba(30,231,140,.45); }
[data-theme="light"] .neon-text { text-shadow: none; }

/* ── HERO: bigger, bolder display ── */
.hero-h1 {
  font-family: var(--f-display);
  font-weight: 900;
  letter-spacing: -2px;
  line-height: .92;
  text-transform: uppercase;
  font-size: clamp(54px, 11vw, 120px);
}
.hero-h1 .neon-text { color: var(--neon-bright); }
.feat-section h2, .how-section h2, .cta-box h2 {
  font-family: var(--f-display);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: -1.5px;
  line-height: 1;
  font-size: clamp(34px, 6vw, 64px);
}
.lnav .brand, .login-brand, .sb-brand {
  font-family: var(--f-display);
  font-weight: 900;
}

/* ── V6 ANALYSIS / ALERTS / CAT-ROW ── */
.acard { padding: 22px; border-radius: 18px; }
.acard-title {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--f-display);
  font-weight: 800;
  font-size: 15px;
  letter-spacing: .3px;
  margin-bottom: 14px;
  text-transform: uppercase;
}
.acard-title::before {
  content: '';
  width: 4px; height: 18px;
  background: var(--neon); border-radius: 2px;
  display: inline-block; flex-shrink: 0;
}

/* analysis rows */
.arow, .ar {
  display: flex !important;
  align-items: center;
  justify-content: space-between !important;
  gap: 12px;
  padding: 11px 0;
  border-bottom: 1px solid var(--border);
  font-size: 13px;
}
.arow:last-child, .ar:last-child { border-bottom: none; }
.arow-lbl, .ar .al {
  color: var(--text2);
  font-family: var(--f-mono);
  font-size: 12px;
  letter-spacing: .2px;
  flex: 1; min-width: 0;
}
.arow-val, .ar .av {
  font-family: var(--f-display);
  font-weight: 800;
  font-size: 14px;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

/* alerts */
.alerts-wrap { display: flex; flex-direction: column; gap: 10px; }
.alert-item, .al-item {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  font-size: 13px;
  line-height: 1.5;
  font-family: var(--f-body);
  border: 1px solid var(--border);
  background: var(--bg3);
}
.alert-item.warn, .al-item.warn { background: rgba(255,201,51,.08); border-color: rgba(255,201,51,.25); color: #ffd966; }
.alert-item.info, .al-item.info { background: rgba(77,139,255,.08); border-color: rgba(77,139,255,.25); color: var(--blue); }
.alert-item.danger, .al-item.danger { background: rgba(255,77,92,.08); border-color: rgba(255,77,92,.28); color: var(--red); }
.alert-item.good, .al-item.good { background: rgba(30,231,140,.08); border-color: rgba(30,231,140,.25); color: var(--neon); }
.alert-item svg, .al-item svg { flex-shrink: 0; margin-top: 1px; opacity: .9; }
.alert-item span, .al-item span { color: var(--text1); }
.alert-item.warn span { color: var(--text1); }
.alert-item.danger span, .alert-item.good span, .alert-item.info span { color: var(--text1); }

/* Make the analysis row 2-col on desktop, single on mobile */
@media (max-width: 900px) {
  .analysis-row { grid-template-columns: 1fr !important; }
}

/* ── CATEGORY LIST (replaces tiny dot legend) ── */
.cat-legend { display: flex; flex-direction: column; gap: 6px; margin-top: 14px; }
.cat-row {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 8px;
  border-radius: 12px;
  transition: background .15s var(--ease);
}
.cat-row:hover { background: var(--bg3); }
.cat-row-ico {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.cat-row-ico svg { width: 18px; height: 18px; }
.cat-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.cat-row-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cat-row-name { font-size: 14px; font-weight: 600; color: var(--text1); }
.cat-row-val { font-family: var(--f-display); font-weight: 800; font-size: 15px; color: var(--text1); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cat-row-bar-bg { height: 5px; background: var(--bg3); border-radius: 99px; overflow: hidden; }
.cat-row-bar-fill { height: 100%; border-radius: 99px; transition: width .8s var(--ease); }
.cat-row-pct { font-size: 11px; color: var(--text3); font-family: var(--f-mono); letter-spacing: .3px; }

/* Cat pie wrap smaller so list dominates */
.cat-pie-card { padding: 22px; }
.cat-pie-card .cat-pie-wrap { height: 170px; }

[data-theme="light"] .alert-item, [data-theme="light"] .al-item { background: #fff; }
[data-theme="light"] .cat-row:hover { background: var(--bg3); }

/* ── KPI CARDS V2 ── */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
  margin-bottom: 18px;
}
.kpi-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-left: 4px solid var(--text3);
  border-radius: 18px;
  padding: 18px 20px;
  display: grid;
  grid-template-columns: 1fr 78px;
  gap: 10px;
  align-items: center;
  position: relative;
  overflow: hidden;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.kpi-card::before { display: none !important; }
.kpi-card.kc-green  { border-left-color: var(--neon); }
.kpi-card.kc-red    { border-left-color: var(--red); }
.kpi-card.kc-blue   { border-left-color: var(--blue); }
.kpi-card.kc-yellow { border-left-color: var(--yellow); }
.kpi-card:hover { transform: translateY(-2px); box-shadow: 0 12px 36px rgba(0,0,0,.18); }
[data-theme="light"] .kpi-card:hover { box-shadow: 0 8px 28px rgba(0,0,0,.08); }

.kc-main { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.kc-top {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 0 !important;
  justify-content: flex-start !important;
}
.kc-ico {
  width: 30px; height: 30px; border-radius: 9px;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg3);
  flex-shrink: 0; font-size: 14px;
}
.kc-green .kc-ico  { background: rgba(30,231,140,.14); color: var(--neon); }
.kc-red .kc-ico    { background: rgba(255,77,92,.14); color: var(--red); }
.kc-blue .kc-ico   { background: rgba(77,139,255,.14); color: var(--blue); }
.kc-yellow .kc-ico { background: rgba(255,201,51,.16); color: var(--yellow); }
.kc-lbl {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.6px;
  color: var(--text2);
  font-family: var(--f-mono);
  text-transform: uppercase;
}
.kc-val {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: 38px;
  letter-spacing: -1.5px;
  line-height: 1;
  margin: 4px 0 8px;
  font-variant-numeric: tabular-nums;
  color: var(--text1);
}
.kc-green .kc-val  { color: var(--neon); }
.kc-red .kc-val    { color: var(--red); }
.kc-blue .kc-val   { color: var(--blue); }
.kc-yellow .kc-val { color: var(--yellow); }
.kc-bot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.kc-badge, .kpi-badge {
  font-family: var(--f-mono);
  font-size: 11px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 999px;
  letter-spacing: .3px;
}
.bc-green   { background: rgba(30,231,140,.14); color: var(--neon); }
.bc-red     { background: rgba(255,77,92,.14); color: var(--red); }
.bc-blue    { background: rgba(77,139,255,.14); color: var(--blue); }
.bc-yellow  { background: rgba(255,201,51,.16); color: var(--yellow); }
.bc-neutral { background: var(--bg3); color: var(--text2); }
.kpb-up     { background: rgba(30,231,140,.14); color: var(--neon); }
.kpb-down   { background: rgba(255,77,92,.14); color: var(--red); }
.kpb-blue   { background: rgba(77,139,255,.14); color: var(--blue); }
.kpb-neutral{ background: var(--bg3); color: var(--text2); }
.kc-per { font-size: 11px; color: var(--text3); font-family: var(--f-mono); letter-spacing: .3px; }

.kc-spark {
  position: relative;
  height: 56px;
  width: 78px;
  align-self: stretch;
  display: flex; align-items: center;
  opacity: .85;
}
.kc-spark canvas { width: 100%; height: 100%; }

/* Numeric flash anim */
.kc-val.flash { animation: numFlash .45s ease; }
@keyframes numFlash { 0%{opacity:.3;transform:translateY(6px)} 100%{opacity:1;transform:none} }

/* ── SIDEBAR ICONS ── */
.sb-ico { display: inline-flex; width: 22px; height: 22px; align-items: center; justify-content: center; flex-shrink: 0; }
.sb-ico svg { width: 18px; height: 18px; }
.sb-btn { padding: 11px 14px; border-radius: 11px; font-weight: 600; font-family: var(--f-body); }
.sb-btn.active { background: var(--neon-glow); color: var(--neon); border: 1px solid var(--border2); }
.sb-logout .sb-ico svg { width: 18px; height: 18px; }

/* ── LOGIN/REG icons ── */
.ficon { display: inline-flex; align-items: center; justify-content: center; left: 12px; color: var(--text3); }
.ficon svg { display: block; }
.f-eye svg { display: block; color: var(--text3); }
.f-eye:hover svg { color: var(--neon); }
.login-note .ln-ico { display: inline-flex; align-items: center; justify-content: center; color: var(--neon); width: 18px; flex-shrink: 0; margin-top: 1px; }

/* ── THEME TOGGLE ── */
.theme-toggle { color: var(--text2); }
.theme-toggle svg { transition: transform .25s var(--ease); }
.theme-toggle:hover { color: var(--neon); border-color: var(--border2); }
.theme-toggle:active svg { transform: rotate(-20deg); }
[data-theme="light"] .theme-toggle svg { transform: rotate(180deg); }

/* ── FEATURE ICO ── */
.feat-ico { display: inline-flex; }
.feat-ico svg { display: block; }

/* ── SECTION HEADINGS ── */
.sec-head h1 {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: 30px;
  letter-spacing: -.8px;
  text-transform: none;
  line-height: 1.05;
}
.sec-head h1 .neon-text { color: var(--neon); }
.sec-head p { color: var(--text2); }

/* ── INSIGHT card icon ── */
.insight-ico {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%;
  background: rgba(167,139,250,.16); color: #a78bfa;
  flex-shrink: 0;
}
.insight-card { border-radius: 16px; }

/* ── BIG KPI on resumen page ── */
.big-kpi { border-radius: 18px; padding: 22px 24px; }
.big-kpi::before { width: 5px; }
.big-kpi-left .bk-val {
  font-family: var(--f-display);
  font-weight: 900;
  font-size: 42px;
  letter-spacing: -1.8px;
  font-variant-numeric: tabular-nums;
}

/* ══════════════════════════════════════════════════════════
   MOBILE — iOS-NATIVE FEEL, BIG NUMBERS
   ══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  body { background: var(--bg0); -webkit-tap-highlight-color: transparent; }

  .sec-wrap { padding: 14px 14px 100px !important; }
  .topbar { padding: 0 14px; height: 58px; }
  .topbar .tb-search { display: none !important; }

  /* Hide redundant in-content theme toggle on mobile — topbar has it */
  .sec-head .range-row + .theme-toggle { display: none !important; }

  .sec-head h1 { font-size: 26px; letter-spacing: -.6px; }
  .sec-head { gap: 12px; margin-bottom: 16px; }
  .sec-head > div:first-child p { font-size: 12.5px; }

  /* Filter pills row: bigger tap target, segmented control feel */
  .sec-head > div:last-child {
    gap: 10px !important;
    width: 100%;
    flex-wrap: nowrap;
  }
  .sec-head .range-row {
    flex: 1;
    justify-content: stretch;
    padding: 4px !important;
    border-radius: 14px;
    height: 44px;
    align-items: center;
  }
  .sec-head .range-row .rtab {
    flex: 1;
    padding: 8px 6px !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
    border-radius: 10px;
    min-height: 36px;
    letter-spacing: .3px;
  }
  .sec-head .range-row .rtab.active {
    background: var(--bg2) !important;
    color: var(--text1) !important;
    box-shadow: 0 1px 4px rgba(0,0,0,.25), 0 0 0 1px var(--border);
    font-weight: 700 !important;
  }
  .sec-head .range-row .rtab.active#curPEN,
  .sec-head .range-row .rtab.active#curUSD { color: var(--neon) !important; }

  /* ─── KPI CARDS — CLEVER STYLE (one tall card per row) ─── */
  .kpi-grid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
    margin-bottom: 18px;
  }
  .kpi-card {
    padding: 18px 20px !important;
    border-radius: 20px;
    border: 1px solid var(--border) !important;
    border-left: 5px solid var(--text3) !important;
    background: var(--bg2);
    grid-template-columns: 1fr 70px !important;
    gap: 6px !important;
    align-items: center;
    position: relative;
    overflow: hidden;
  }
  .kpi-card::after { display: none !important; }
  .kpi-card.kc-green  { border-left-color: var(--neon) !important; }
  .kpi-card.kc-red    { border-left-color: var(--red) !important; }
  .kpi-card.kc-blue   { border-left-color: var(--blue) !important; }
  .kpi-card.kc-yellow { border-left-color: var(--yellow) !important; }

  /* Light-mode soft tinted background per card (like Clever) */
  [data-theme="light"] .kpi-card.kc-blue { background: #f0f5ff; }
  [data-theme="light"] .kpi-card.kc-green { background: #f0fdf4; }
  [data-theme="light"] .kpi-card.kc-red { background: #fff5f6; }
  [data-theme="light"] .kpi-card.kc-yellow { background: #fffbeb; }

  .kc-main {
    display: flex; flex-direction: column;
    gap: 4px;
    min-width: 0;
  }
  .kc-top {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 12px !important;
    margin-bottom: 6px !important;
  }
  .kc-ico {
    width: 42px !important;
    height: 42px !important;
    border-radius: 50% !important;
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
  }
  .kc-ico svg { width: 19px; height: 19px; stroke-width: 2.2; }
  .kc-lbl {
    font-family: var(--f-display) !important;
    font-size: 17px !important;
    font-weight: 700 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: var(--text1) !important;
  }
  .kc-lbl::after {
    content: attr(data-currency);
    display: block;
    font-family: var(--f-mono);
    font-size: 11px;
    font-weight: 500;
    color: var(--text2);
    letter-spacing: .5px;
    margin-top: 1px;
  }
  .kc-val {
    font-family: var(--f-display) !important;
    font-size: 44px !important;
    font-weight: 900 !important;
    letter-spacing: -2px !important;
    margin: 4px 0 8px !important;
    line-height: 1 !important;
    color: var(--text1) !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: clip;
  }
  /* Override per-color val colors on mobile — keep numbers high contrast like Clever */
  .kpi-card.kc-green .kc-val,
  .kpi-card.kc-red .kc-val,
  .kpi-card.kc-blue .kc-val,
  .kpi-card.kc-yellow .kc-val { color: var(--text1) !important; }

  .kc-bot {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    margin-top: 0;
  }
  .kc-badge {
    background: transparent !important;
    padding: 0 !important;
    font-family: var(--f-mono) !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    letter-spacing: 0 !important;
  }
  .bc-green, .kpb-up { color: var(--neon) !important; }
  .bc-red, .kpb-down { color: var(--red) !important; }
  .bc-blue, .kpb-blue { color: var(--blue) !important; }
  .bc-yellow { color: var(--yellow) !important; }
  .bc-neutral, .kpb-neutral { color: var(--text3) !important; }
  .kc-per { display: none !important; }

  /* Sparkline — only show when there's data; collapse to 0 width when hidden */
  .kc-spark {
    display: flex !important;
    width: 70px !important;
    height: 48px !important;
    align-self: center;
    opacity: 1 !important;
    transition: width .2s;
  }
  .kc-spark[style*="opacity: 0"] { width: 0 !important; height: 0 !important; }
}

@media (max-width: 480px) {
  .kc-val { font-size: 40px !important; letter-spacing: -1.8px !important; }
  .kc-ico { width: 40px !important; height: 40px !important; }
  .kc-ico svg { width: 18px; height: 18px; }
  .kpi-card { padding: 18px 20px !important; grid-template-columns: 1fr 64px !important; }
  .kc-spark { width: 64px !important; height: 44px !important; }
}

@media (max-width: 360px) {
  .kc-val { font-size: 34px !important; }
  .kc-lbl { font-size: 16px !important; }
  .kpi-card { grid-template-columns: 1fr 56px !important; }
  .kc-spark { width: 56px !important; height: 40px !important; }
}

/* ─── BOTTOM NAV: bigger icons (mobile only) ─── */
@media (max-width: 768px) {
  .mob-bottom-nav {
    padding: 10px 8px 12px !important;
    border-radius: 26px !important;
  }
  .mbn-item {
    padding: 8px 4px !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    gap: 4px !important;
  }
  .mbn-item svg { width: 26px !important; height: 26px !important; stroke-width: 1.9; }
  .mbn-add {
    width: 56px !important; height: 56px !important;
    box-shadow: 0 8px 24px rgba(30,231,140,.5) !important;
  }
  .mbn-add svg { width: 28px !important; height: 28px !important; stroke-width: 2.6; }
}

/* ── MOBILE BOTTOM NAV (iOS-style, floating pill) ── */
@media (max-width: 768px) {
  .mob-bottom-nav {
    display: flex !important;
    position: fixed;
    left: 12px; right: 12px; bottom: 12px;
    z-index: 300;
    background: var(--bg2);
    border: 1px solid var(--border);
    border-radius: 22px;
    padding: 8px 6px;
    justify-content: space-around;
    align-items: center;
    box-shadow: 0 8px 28px rgba(0,0,0,.35), 0 0 0 1px rgba(255,255,255,.02) inset;
    backdrop-filter: blur(20px);
  }
  [data-theme="light"] .mob-bottom-nav { box-shadow: 0 8px 28px rgba(0,0,0,.10); }
  .mbn-item {
    flex: 1;
    padding: 8px 4px;
    font-size: 10px;
    letter-spacing: .2px;
  }
  .mbn-item svg { width: 22px; height: 22px; }
  .mbn-center { flex: 0 0 auto; margin: 0 4px; }
  .mbn-add {
    width: 50px; height: 50px;
    background: linear-gradient(135deg, var(--neon-bright), var(--neon));
    box-shadow: 0 6px 20px rgba(30,231,140,.45);
    margin-bottom: 0;
  }
  .mbn-add svg { width: 24px; height: 24px; }
  .mbn-item.active { color: var(--neon); }
}

/* ── TOPBAR mobile polish ── */
@media (max-width: 768px) {
  .topbar { background: rgba(8,12,14,.92); }
  [data-theme="light"] .topbar { background: rgba(245,248,245,.94); }
  .tb-greet h2 { font-family: var(--f-display); font-weight: 800; font-size: 18px; }
  .tb-greet p { font-size: 11px; }
}

/* ── Range row mobile: better tap targets ── */
@media (max-width: 768px) {
  .range-row { padding: 4px; border-radius: 12px; }
  .rtab { padding: 8px 14px; font-size: 13px; border-radius: 9px; min-height: 36px; }
}

/* ── Chart cards mobile ── */
@media (max-width: 768px) {
  .chart-card, .cat-pie-card, .acard, .tcard, .insight-card, .big-kpi, .editor-form-card, .editor-recent-card, .bcard {
    border-radius: 18px;
  }
  .chart-card { padding: 18px 16px; }
  .cc-head h3 { font-size: 16px; font-family: var(--f-display); font-weight: 800; }
  .acard-title { font-family: var(--f-display); font-weight: 800; font-size: 15px; }
}

/* ── MOVE ITEMS (transaction cards) — bigger touch + bigger amount ── */
@media (max-width: 768px) {
  .move-item { padding: 14px 14px !important; border-radius: 16px !important; }
  .move-title { font-size: 15px !important; font-weight: 600 !important; }
  .move-amount { font-family: var(--f-display) !important; font-weight: 800 !important; font-size: 17px !important; letter-spacing: -.3px; }
}

/* ── Make sure splash brand uses display font ── */
.splash-brand-name { font-family: var(--f-display) !important; font-weight: 900; letter-spacing: 6px; }

/* Tabular numbers everywhere money is shown */
.kc-val, .bk-val, .move-amount, .rcl-val, .ed-item-amt,
.amt-p, .amt-n, .plr-val, .rec-amount, td.amt-p, td.amt-n {
  font-variant-numeric: tabular-nums;
}

/* ── Big KPI on mobile (resumen page) ── */
@media (max-width: 768px) {
  .big-kpi { padding: 20px 22px; border-radius: 20px; }
  .big-kpi-left .bk-val { font-size: 40px; letter-spacing: -1.6px; }
  .big-kpi-left .bk-label { font-size: 12px; letter-spacing: 1.4px; }
}

/* Login on mobile: cleaner, native-feeling */
@media (max-width: 768px) {
  .login-card { border-radius: 22px; padding: 30px 22px; }
  .login-brand { font-size: 28px; letter-spacing: 5px; }
  .login-card h2 { font-family: var(--f-display); font-weight: 800; font-size: 24px; }
  .btn-login { padding: 14px; font-size: 16px; border-radius: 14px; }
  .fgroup label { font-size: 11px; }
  input, select { font-size: 16px !important; /* prevents iOS zoom on focus */ }
  .finput-wrap input { padding: 13px 13px 13px 40px !important; }
  .fgroup select, .fgroup input[type="date"], .fgroup input[type="text"], .fgroup input[type="number"] { padding: 13px !important; }
}

/* CTA glow stronger */
.cta-glow { background: radial-gradient(circle, rgba(30,231,140,.18), transparent 70%); }

/* Buttons: stronger neon glow */
.btn-neon, .btn-neon-lg, .btn-neon-sm, .btn-login, .btn-neon-full {
  background: var(--neon);
  color: #001a0c;
}
.btn-neon-lg { box-shadow: 0 0 36px rgba(30,231,140,.45); }
.btn-neon-lg:hover { box-shadow: 0 0 60px rgba(30,231,140,.65); }

/* Pulse dot brighter */
.pulse-dot { background: var(--neon); box-shadow: 0 0 8px var(--neon); }

/* Sidebar active state stronger */
.sb-btn.active { background: var(--neon-glow); color: var(--neon); border: 1px solid var(--border2); }
.brand span, .login-brand span, .sb-brand span { color: var(--neon); }

/* Light-mode polish */
[data-theme="light"] {
  --shadow-neon: 0 0 0 transparent;
}
[data-theme="light"] .kpi-card,
[data-theme="light"] .chart-card,
[data-theme="light"] .acard,
[data-theme="light"] .cat-pie-card,
[data-theme="light"] .big-kpi,
[data-theme="light"] .insight-card,
[data-theme="light"] .tcard,
[data-theme="light"] .editor-form-card,
[data-theme="light"] .editor-recent-card,
[data-theme="light"] .bcard,
[data-theme="light"] .login-card {
  box-shadow: 0 1px 0 rgba(0,0,0,.03), 0 6px 22px rgba(0,0,0,.06);
  border: 1px solid rgba(0,0,0,.06);
}
[data-theme="light"] .sidebar { background: #fff; border-right-color: rgba(0,0,0,.06); }
[data-theme="light"] .topbar { background: rgba(255,255,255,.92); border-bottom-color: rgba(0,0,0,.06); }
[data-theme="light"] .mob-bottom-nav { background: #fff; border-color: rgba(0,0,0,.06); }
[data-theme="light"] .grid-bg { background-image: linear-gradient(rgba(0,194,102,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,194,102,.04) 1px,transparent 1px); }



/* ══════════════════════════════════════════════════════════
   V3 UPDATES — 3-col KPI + Ahorro card + Salud Financiera
   ══════════════════════════════════════════════════════════ */

/* KPI grid: 3 columns on desktop (Ingresos, Gastos, Balance) */
.kpi-grid { grid-template-columns: repeat(3, 1fr) !important; }
@media (max-width: 1100px) { .kpi-grid { grid-template-columns: repeat(3, 1fr) !important; } }
@media (max-width: 768px)  { .kpi-grid { grid-template-columns: 1fr !important; } }

/* ── AHORRO standalone card ─────────────────────────────── */
.saving-card {
  display: grid;
  grid-template-columns: 1fr 220px;
  gap: 18px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-left: 4px solid var(--yellow);
  border-radius: 20px;
  padding: 22px 24px;
  margin-bottom: 18px;
  align-items: center;
  position: relative;
  overflow: hidden;
}
[data-theme="light"] .saving-card { background: #fffbeb; }
.sv-head { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.sv-ico {
  width: 38px !important; height: 38px !important; border-radius: 50%;
  background: rgba(255,201,51,.16); color: var(--yellow);
  display: flex; align-items: center; justify-content: center;
}
.sv-val {
  font-family: var(--f-display);
  font-size: 56px;
  font-weight: 900;
  letter-spacing: -2px;
  line-height: 1;
  color: var(--yellow);
  margin: 4px 0 10px;
}
.sv-bot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sv-spark { width: 100%; height: 80px; opacity: .9; }
.sv-spark canvas { width: 100% !important; height: 100% !important; }

/* ── SALUD FINANCIERA ──────────────────────────────────── */
.health-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 24px;
  margin-bottom: 22px;
  position: relative;
  overflow: hidden;
}
.health-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 18px;
}
.health-head h3 {
  font-family: var(--f-display);
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -.5px;
  margin: 0 0 4px;
}
.health-head p { color: var(--text2); font-size: 13px; margin: 0; }
.health-tag {
  font-family: var(--f-mono);
  font-size: 12px;
  font-weight: 700;
  padding: 6px 12px;
  border-radius: 99px;
  letter-spacing: .5px;
  background: rgba(255,201,51,.12);
  color: var(--yellow);
  border: 1px solid rgba(255,201,51,.25);
  white-space: nowrap;
}
.health-tag.tag-good   { background: rgba(30,231,140,.12); color: var(--neon); border-color: rgba(30,231,140,.3); }
.health-tag.tag-warn   { background: rgba(255,201,51,.14); color: var(--yellow); border-color: rgba(255,201,51,.3); }
.health-tag.tag-bad    { background: rgba(255,77,92,.12); color: var(--red); border-color: rgba(255,77,92,.3); }
.health-tag.tag-empty  { background: var(--bg3); color: var(--text3); border-color: var(--border); }

.health-body {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 28px;
  align-items: start;
}

/* Mascot */
.health-mascot {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 8px 4px 20px;
}
.mascot-glow {
  position: absolute;
  top: 50%; left: 50%;
  width: 240px; height: 240px;
  transform: translate(-50%, -55%);
  border-radius: 50%;
  background: radial-gradient(circle, rgba(30,231,140,.18) 0%, rgba(30,231,140,0) 65%);
  pointer-events: none;
  transition: background .5s ease;
  filter: blur(2px);
}
.mascot-glow.glow-good { background: radial-gradient(circle, rgba(30,231,140,.28) 0%, rgba(30,231,140,0) 65%); }
.mascot-glow.glow-warn { background: radial-gradient(circle, rgba(255,201,51,.28) 0%, rgba(255,201,51,0) 65%); }
.mascot-glow.glow-bad  { background: radial-gradient(circle, rgba(255,77,92,.32) 0%, rgba(255,77,92,0) 65%); }
.mascot-glow.glow-empty{ background: radial-gradient(circle, rgba(120,135,140,.2) 0%, rgba(120,135,140,0) 65%); }

.mascot-img {
  position: relative;
  width: 220px;
  height: 220px;
  object-fit: contain;
  filter: drop-shadow(0 18px 28px rgba(0,0,0,.45));
  transition: transform .4s var(--ease), filter .4s ease;
  z-index: 1;
}
.mood-good   { animation: bobHappy 2.6s ease-in-out infinite; filter: drop-shadow(0 18px 28px rgba(30,231,140,.35)); }
.mood-warn   { animation: bobNeutral 3.4s ease-in-out infinite; filter: drop-shadow(0 18px 28px rgba(255,201,51,.32)); }
.mood-bad    { animation: bobSad 4s ease-in-out infinite; filter: drop-shadow(0 18px 28px rgba(255,77,92,.38)) grayscale(.15); transform: translateY(6px); }
.mood-neutral{ animation: bobNeutral 3.4s ease-in-out infinite; }
.mood-empty  { filter: drop-shadow(0 12px 18px rgba(0,0,0,.4)) grayscale(.55) opacity(.7); }

@keyframes bobHappy {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  50%      { transform: translateY(-10px) rotate(2deg); }
}
@keyframes bobNeutral {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-4px); }
}
@keyframes bobSad {
  0%, 100% { transform: translateY(8px) rotate(-1deg); }
  50%      { transform: translateY(6px) rotate(1deg); }
}

.mascot-bubble {
  position: relative;
  margin-top: 12px;
  background: var(--bg3);
  border: 1px solid var(--border);
  color: var(--text1);
  padding: 10px 14px;
  border-radius: 14px;
  font-size: 13px;
  text-align: center;
  max-width: 240px;
  line-height: 1.35;
  z-index: 2;
}
.mascot-bubble::before {
  content: '';
  position: absolute;
  top: -7px; left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 12px; height: 12px;
  background: var(--bg3);
  border-left: 1px solid var(--border);
  border-top: 1px solid var(--border);
}

/* Health score ring */
.health-meta { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.health-score-row { display: flex; align-items: center; gap: 18px; }
.health-score { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.hs-ring { position: relative; width: 118px; height: 118px; flex-shrink: 0; }
.hs-mid {
  position: absolute; inset: 0;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  font-family: var(--f-display);
}
.hs-mid strong { font-size: 36px; font-weight: 900; letter-spacing: -1px; line-height: 1; color: var(--text1); }
.hs-mid small { font-size: 11px; color: var(--text3); font-family: var(--f-mono); margin-top: 2px; }
.hs-label { display: flex; flex-direction: column; gap: 4px; }
.hs-status {
  font-family: var(--f-display);
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -.3px;
  color: var(--text1);
}
.hs-hint { font-size: 13px; color: var(--text2); max-width: 360px; line-height: 1.4; }

/* Rule bar 50/30/20 */
.rule-bar { position: relative; padding: 4px 0 20px; }
.rb-stack {
  display: flex;
  width: 100%;
  height: 24px;
  border-radius: 99px;
  overflow: hidden;
  background: var(--bg3);
  border: 1px solid var(--border);
}
.rb-seg {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 700;
  color: #0d1413;
  letter-spacing: .3px;
  white-space: nowrap;
  overflow: hidden;
  transition: width .8s var(--ease);
}
.rb-seg span { padding: 0 6px; opacity: .85; }
.rb-need { background: linear-gradient(90deg, #4d8bff, #6aa1ff); }
.rb-want { background: linear-gradient(90deg, #ffc933, #ffd966); }
.rb-save { background: linear-gradient(90deg, #1ee78c, #4cf2a8); }
.rb-targets { position: relative; height: 0; }
.rb-tk {
  position: absolute;
  top: -28px;
  width: 2px; height: 32px;
  background: var(--text3);
  opacity: .5;
  transform: translateX(-1px);
}
.rb-tk::after {
  content: '';
  position: absolute; top: -2px; left: -3px;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--text3);
  opacity: .9;
}

/* Rule grid: 3 cells */
.rule-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.rule-cell {
  background: var(--bg3);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  position: relative;
}
.rc-top { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.rc-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.rc-need .rc-dot { background: #4d8bff; box-shadow: 0 0 0 3px rgba(77,139,255,.18); }
.rc-want .rc-dot { background: #ffc933; box-shadow: 0 0 0 3px rgba(255,201,51,.2); }
.rc-save .rc-dot { background: #1ee78c; box-shadow: 0 0 0 3px rgba(30,231,140,.18); }
.rc-name { font-family: var(--f-display); font-size: 14px; font-weight: 700; color: var(--text1); flex: 1; }
.rc-target { font-family: var(--f-mono); font-size: 10px; color: var(--text3); letter-spacing: .5px; }
.rc-val {
  font-family: var(--f-display);
  font-size: 32px;
  font-weight: 900;
  letter-spacing: -1px;
  line-height: 1;
  margin-bottom: 4px;
}
.rc-need .rc-val { color: #4d8bff; }
.rc-want .rc-val { color: #ffc933; }
.rc-save .rc-val { color: #1ee78c; }
.rule-cell.is-over .rc-val { color: var(--red) !important; }
.rc-sub { font-family: var(--f-mono); font-size: 12px; color: var(--text2); margin-bottom: 6px; }
.rc-desc { font-size: 11.5px; color: var(--text3); line-height: 1.35; }

.health-tip {
  background: var(--bg3);
  border: 1px solid var(--border);
  border-left: 3px solid var(--neon);
  border-radius: 12px;
  padding: 12px 14px;
  font-size: 13px;
  color: var(--text2);
  line-height: 1.45;
}
.health-tip strong { color: var(--text1); }

/* ── RESPONSIVE: tablet ───────────────────────────────── */
@media (max-width: 900px) {
  .health-body { grid-template-columns: 1fr; gap: 18px; }
  .health-mascot { padding: 4px 4px 10px; }
  .mascot-img { width: 190px; height: 190px; }
  .mascot-glow { width: 210px; height: 210px; }
  .rule-grid { grid-template-columns: 1fr; gap: 10px; }
}

/* ── RESPONSIVE: mobile — BIGGER everything ───────────── */
@media (max-width: 768px) {
  /* KPI cards: even bigger */
  .kc-val { font-size: 52px !important; letter-spacing: -2.4px !important; }
  .kc-ico {
    width: 52px !important;
    height: 52px !important;
  }
  .kc-ico svg { width: 24px !important; height: 24px !important; stroke-width: 2.3; }
  .kc-lbl { font-size: 19px !important; }
  .kc-lbl::after { font-size: 12px !important; }
  .kc-badge { font-size: 14px !important; }
  .kpi-card {
    padding: 22px 22px !important;
    grid-template-columns: 1fr 78px !important;
  }
  .kc-spark { width: 78px !important; height: 56px !important; }

  /* Ahorro card mobile */
  .saving-card {
    grid-template-columns: 1fr;
    padding: 22px 22px;
    gap: 10px;
  }
  .sv-head { gap: 14px; margin-bottom: 4px; }
  .sv-ico { width: 52px !important; height: 52px !important; }
  .sv-ico svg { width: 24px !important; height: 24px !important; }
  .saving-card .kc-lbl { font-size: 19px !important; }
  .sv-val { font-size: 64px; letter-spacing: -2.8px; margin: 6px 0 8px; }
  .sv-bot { gap: 8px; }
  .saving-card .kc-badge { font-size: 14px !important; }
  .sv-spark { height: 64px; }

  /* Health card mobile */
  .health-card { padding: 20px 18px; border-radius: 22px; }
  .health-head h3 { font-size: 24px; }
  .health-head p { font-size: 12.5px; }
  .health-tag { font-size: 11px; padding: 5px 10px; }
  .mascot-img { width: 210px; height: 210px; }
  .mascot-glow { width: 230px; height: 230px; }
  .mascot-bubble { font-size: 13px; padding: 10px 14px; max-width: 280px; }

  .hs-ring { width: 130px; height: 130px; }
  .hs-ring svg { width: 130px !important; height: 130px !important; }
  .hs-mid strong { font-size: 40px; }
  .hs-status { font-size: 24px; }
  .hs-hint { font-size: 13.5px; }

  .rb-stack { height: 28px; }
  .rb-seg { font-size: 11px; }
  .rc-val { font-size: 36px; }
  .rc-name { font-size: 15px; }
  .rc-desc { font-size: 12.5px; }
  .health-tip { font-size: 13.5px; }

  /* SIDEBAR icons — bigger on mobile */
  .sb-ico { width: 30px !important; height: 30px !important; }
  .sb-ico svg { width: 26px !important; height: 26px !important; stroke-width: 2.1; }
  .sb-btn { padding: 14px 16px !important; font-size: 15.5px !important; gap: 12px; }
  .sb-logout .sb-ico svg { width: 24px !important; height: 24px !important; }
}

@media (max-width: 480px) {
  .kc-val { font-size: 46px !important; letter-spacing: -2px !important; }
  .kc-ico { width: 48px !important; height: 48px !important; }
  .kc-ico svg { width: 22px !important; height: 22px !important; }
  .kc-lbl { font-size: 17.5px !important; }
  .kpi-card { padding: 20px 20px !important; grid-template-columns: 1fr 70px !important; }
  .kc-spark { width: 70px !important; height: 50px !important; }

  .sv-val { font-size: 56px; }
  .saving-card { padding: 20px 20px; }
  .sv-ico { width: 48px !important; height: 48px !important; }
  .sv-ico svg { width: 22px !important; height: 22px !important; }

  .health-card { padding: 18px 16px; }
  .health-head h3 { font-size: 22px; }
  .mascot-img { width: 190px; height: 190px; }
  .mascot-glow { width: 210px; height: 210px; }
  .hs-ring { width: 120px; height: 120px; }
  .hs-ring svg { width: 120px !important; height: 120px !important; }
  .hs-mid strong { font-size: 36px; }
  .hs-status { font-size: 21px; }
  .rc-val { font-size: 32px; }

  .sb-ico { width: 28px !important; height: 28px !important; }
  .sb-ico svg { width: 24px !important; height: 24px !important; }
  .sb-btn { padding: 13px 14px !important; font-size: 15px !important; }
}

@media (max-width: 360px) {
  .kc-val { font-size: 40px !important; }
  .sv-val { font-size: 48px; }
  .kpi-card { grid-template-columns: 1fr 60px !important; }
  .kc-spark { width: 60px !important; height: 44px !important; }
}


/* ══════════════════════════════════════════════════════════
   V4 UPDATES — Salud en sección propia + colores vibrantes
   ══════════════════════════════════════════════════════════ */

/* PEN/USD: lock KPI layout so it doesn't shrink when symbol changes */
.kpi-card {
  min-width: 0;
}
.kc-main { min-width: 0 !important; }
.kc-val {
  /* Lock width-independent sizing; clip overflow without affecting layout */
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
  min-width: 0;
}

/* Mobile: lock fixed sizes regardless of currency length */
@media (max-width: 768px) {
  .kpi-card {
    padding: 22px 22px !important;
    grid-template-columns: minmax(0, 1fr) 78px !important;
    gap: 12px !important;
  }
  .kc-main { min-width: 0 !important; overflow: hidden; }
  .kc-val {
    font-size: 52px !important;
    letter-spacing: -2.4px !important;
    min-width: 0 !important;
    max-width: 100%;
    /* Don't shrink based on content */
    width: auto;
  }
  /* Hide currency suffix on label — value already shows symbol */
  .kc-lbl::after { display: none !important; }
  /* Smaller spark column on narrow screens with long currency labels */
  .kc-spark { width: 78px !important; height: 56px !important; flex-shrink: 0; }
  .kc-ico { width: 52px !important; height: 52px !important; flex-shrink: 0; }
}
@media (max-width: 480px) {
  .kpi-card { grid-template-columns: minmax(0, 1fr) 64px !important; padding: 20px 18px !important; }
  .kc-val { font-size: 46px !important; }
  .kc-spark { width: 64px !important; height: 50px !important; }
}
@media (max-width: 380px) {
  .kpi-card { grid-template-columns: minmax(0, 1fr) 0 !important; }
  .kc-val { font-size: 42px !important; }
  .kc-spark { width: 0 !important; height: 0 !important; opacity: 0 !important; }
}

/* ── MASCOT V4: no background, vivid glow ──────────────── */
.health-mascot {
  background: transparent !important;
  padding: 0 4px 14px !important;
}
.mascot-img {
  background: transparent !important;
  width: 240px;
  height: 240px;
  filter: drop-shadow(0 22px 36px rgba(0,255,170,.32));
}
.mood-good {
  filter: drop-shadow(0 22px 36px rgba(34,255,140,.55)) drop-shadow(0 0 30px rgba(34,255,140,.35));
}
.mood-warn {
  filter: drop-shadow(0 22px 36px rgba(255,200,40,.55)) drop-shadow(0 0 30px rgba(255,200,40,.35));
}
.mood-bad {
  filter: drop-shadow(0 22px 36px rgba(255,70,90,.6)) drop-shadow(0 0 30px rgba(255,70,90,.4)) grayscale(.1);
  transform: translateY(6px);
}
.mood-neutral, .mood-empty {
  filter: drop-shadow(0 18px 28px rgba(80,200,255,.35)) drop-shadow(0 0 24px rgba(80,200,255,.2));
}
/* Bigger, more vibrant glow halo */
.mascot-glow { width: 280px; height: 280px; opacity: .85; filter: blur(8px); }
.mascot-glow.glow-good  { background: radial-gradient(circle, rgba(34,255,140,.55) 0%, rgba(34,255,140,0) 60%); }
.mascot-glow.glow-warn  { background: radial-gradient(circle, rgba(255,200,40,.55) 0%, rgba(255,200,40,0) 60%); }
.mascot-glow.glow-bad   { background: radial-gradient(circle, rgba(255,70,90,.6)  0%, rgba(255,70,90,0)  60%); }
.mascot-glow.glow-neutral,
.mascot-glow.glow-empty { background: radial-gradient(circle, rgba(80,200,255,.45) 0%, rgba(80,200,255,0) 60%); }

/* ── More VIBRANT colors for health section ────────────── */
.rb-need { background: linear-gradient(90deg, #2A7BFF, #5B9EFF) !important; }
.rb-want { background: linear-gradient(90deg, #FFB800, #FFD24A) !important; }
.rb-save { background: linear-gradient(90deg, #00E676, #5BFFB0) !important; }
.rc-need .rc-dot { background: #2A7BFF !important; box-shadow: 0 0 0 4px rgba(42,123,255,.25) !important; }
.rc-want .rc-dot { background: #FFB800 !important; box-shadow: 0 0 0 4px rgba(255,184,0,.25) !important; }
.rc-save .rc-dot { background: #00E676 !important; box-shadow: 0 0 0 4px rgba(0,230,118,.25) !important; }
.rc-need .rc-val { color: #2A7BFF !important; text-shadow: 0 0 18px rgba(42,123,255,.35); }
.rc-want .rc-val { color: #FFB800 !important; text-shadow: 0 0 18px rgba(255,184,0,.4); }
.rc-save .rc-val { color: #00E676 !important; text-shadow: 0 0 18px rgba(0,230,118,.4); }

.rule-cell {
  border: 1px solid var(--border);
  background: linear-gradient(180deg, var(--bg3), var(--bg2));
}
.rc-need { border-top: 3px solid #2A7BFF; }
.rc-want { border-top: 3px solid #FFB800; }
.rc-save { border-top: 3px solid #00E676; }

.health-tag.tag-good {
  background: linear-gradient(90deg, rgba(0,230,118,.18), rgba(0,230,118,.08));
  color: #00E676; border-color: rgba(0,230,118,.4);
}
.health-tag.tag-warn {
  background: linear-gradient(90deg, rgba(255,184,0,.18), rgba(255,184,0,.08));
  color: #FFB800; border-color: rgba(255,184,0,.4);
}
.health-tag.tag-bad {
  background: linear-gradient(90deg, rgba(255,70,90,.18), rgba(255,70,90,.08));
  color: #FF4660; border-color: rgba(255,70,90,.45);
}

/* Score ring bigger and more colorful */
.hs-ring { width: 138px; height: 138px; }
.hs-ring svg { width: 138px !important; height: 138px !important; }
.hs-mid strong { font-size: 42px; }

/* ── Rule info card (educación) ───────────────────────── */
.rule-info {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 26px 28px;
  margin-top: 18px;
}
.rule-info-title {
  font-family: var(--f-display);
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -.4px;
  margin: 0 0 8px;
}
.rule-info-lead {
  font-size: 14px;
  color: var(--text2);
  line-height: 1.5;
  margin: 0 0 20px;
  max-width: 640px;
}
.rule-info-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.ri-card {
  background: var(--bg3);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 20px 20px 22px;
  position: relative;
  overflow: hidden;
}
.ri-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 4px;
}
.ri-need::before { background: linear-gradient(90deg, #2A7BFF, #5B9EFF); }
.ri-want::before { background: linear-gradient(90deg, #FFB800, #FFD24A); }
.ri-save::before { background: linear-gradient(90deg, #00E676, #5BFFB0); }
.ri-pct {
  font-family: var(--f-display);
  font-size: 56px;
  font-weight: 900;
  letter-spacing: -2.5px;
  line-height: 1;
  margin: 4px 0 6px;
}
.ri-need .ri-pct { color: #2A7BFF; }
.ri-want .ri-pct { color: #FFB800; }
.ri-save .ri-pct { color: #00E676; }
.ri-name {
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 700;
  color: var(--text1);
  margin-bottom: 8px;
}
.ri-desc {
  font-size: 13px;
  color: var(--text2);
  line-height: 1.5;
}
.ri-desc strong { color: var(--text1); }

@media (max-width: 900px) {
  .rule-info-grid { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .rule-info { padding: 22px 18px; border-radius: 22px; }
  .rule-info-title { font-size: 22px; }
  .ri-pct { font-size: 64px; }
  .ri-name { font-size: 18px; }
  .ri-desc { font-size: 14px; }
  .mascot-img { width: 240px; height: 240px; }
  .mascot-glow { width: 300px; height: 300px; }
}

/* Health-card padding adjustments since it now lives in its own section */
#sec-health .health-card { margin-bottom: 18px; }


/* ══════════════════════════════════════════════════════════
   V5 — Budget rediseñado + Gasto por Tarjeta donut
   ══════════════════════════════════════════════════════════ */

/* Hide currency toggle entirely (we use only S/) */
#curPEN, #curUSD { display: none !important; }

/* ── Budget head with month picker & action pills ──────── */
.sec-head.budget-head { gap: 14px; flex-wrap: wrap; }
.budget-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.month-picker {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 99px;
  padding: 4px 4px;
  font-family: var(--f-display);
  font-weight: 700;
  font-size: 14px;
  color: var(--text1);
}
.month-picker span { padding: 0 12px; min-width: 110px; text-align: center; }
.mp-arrow {
  width: 28px; height: 28px;
  border: none; background: transparent;
  border-radius: 50%;
  color: var(--text2);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background .15s;
}
.mp-arrow:hover { background: var(--bg3); color: var(--text1); }
.btn-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 16px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 99px;
  font-family: var(--f-body);
  font-size: 13px;
  font-weight: 600;
  color: var(--text1);
  cursor: pointer;
  transition: all .15s;
}
.btn-pill:hover { background: var(--bg3); border-color: var(--text3); }
.btn-icon-red {
  width: 36px; height: 36px;
  border: 1px solid var(--border);
  background: var(--bg2);
  border-radius: 50%;
  color: var(--red);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all .15s;
}
.btn-icon-red:hover { background: rgba(255,77,92,.1); border-color: rgba(255,77,92,.4); }

/* ── 3 KPI cards: Total (dark) / Gastado / Disponible ─── */
.bg-kpis {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 16px;
}
.bgk {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 18px 20px 16px;
  position: relative;
  overflow: hidden;
}
.bgk-total {
  background: #0d1413 !important;
  border-color: #1a2422;
  color: #fff;
}
[data-theme="light"] .bgk-total { background: #131b1a !important; }
.bgk-total .bgk-lbl,
.bgk-total .bgk-sub { color: #a8b0ad !important; }
.bgk-total .bgk-val { color: #fff !important; }
.bgk-total .bgk-ico { background: rgba(255,255,255,.08); color: #fff; }
.bgk-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.bgk-ico {
  width: 32px; height: 32px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.bgk-spent .bgk-ico { background: rgba(0,230,118,.14); color: #00E676; }
.bgk-avail .bgk-ico { background: rgba(0,230,118,.14); color: #00E676; }
.bgk-lbl {
  font-family: var(--f-display);
  font-size: 15px;
  font-weight: 700;
  color: var(--text1);
  flex: 1;
  min-width: 0;
}
.bgk-edit {
  width: 30px; height: 30px;
  border: none;
  background: rgba(255,255,255,.08);
  color: #fff;
  border-radius: 50%;
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.bgk-edit:hover { background: rgba(255,255,255,.15); }
.bgk-val {
  font-family: var(--f-display);
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -1.2px;
  line-height: 1;
  margin: 6px 0 8px;
  color: var(--text1);
  font-variant-numeric: tabular-nums;
}
.bgk-sub {
  font-size: 12px;
  color: var(--text3);
  font-family: var(--f-mono);
}

/* ── Uso global bar ─────────────────────────────────── */
.bg-global-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 18px 20px;
  margin-bottom: 22px;
}
.bg-global-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 10px;
}
.bg-global-head span {
  font-family: var(--f-display);
  font-size: 14px;
  font-weight: 700;
  color: var(--text1);
}
.bg-global-head strong {
  font-family: var(--f-display);
  font-size: 14px;
  font-weight: 800;
  color: #00E676;
  font-variant-numeric: tabular-nums;
}
.bg-global-bar {
  height: 12px;
  background: var(--bg3);
  border-radius: 99px;
  overflow: hidden;
}
.bg-global-fill {
  height: 100%;
  background: linear-gradient(90deg, #00E676, #5BFFB0);
  border-radius: 99px;
  transition: width .8s var(--ease);
}
.bg-global-fill.warn { background: linear-gradient(90deg, #FFB800, #FFD24A); }
.bg-global-fill.danger { background: linear-gradient(90deg, #FF4660, #FF7080); }

/* ── Sub-sections ──────────────────────────────────── */
.bg-section { margin-bottom: 22px; }
.bg-section-title {
  font-family: var(--f-display);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: -.2px;
  margin: 0 0 12px;
  color: var(--text1);
}
.bg-list-card {
  background: var(--bg2);
  border: 1px dashed var(--border);
  border-radius: 18px;
  padding: 28px 20px;
}
.bg-empty {
  text-align: center;
  display: flex; flex-direction: column;
  align-items: center; gap: 12px;
}
.bg-empty p {
  color: var(--text3);
  font-size: 13px;
  max-width: 520px;
  line-height: 1.5;
  margin: 0;
}

/* When list has items, switch the dashed container to solid card style */
.bg-list-card.has-items {
  border-style: solid;
  padding: 16px;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.bg-item {
  background: var(--bg3);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 14px 16px;
}
.bg-item-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.bg-item-name { font-family: var(--f-display); font-weight: 700; font-size: 14px; color: var(--text1); }
.bg-item-del {
  background: transparent; border: none;
  color: var(--text3);
  font-size: 11px;
  cursor: pointer;
}
.bg-item-del:hover { color: var(--red); }
.bg-item-amts {
  display: flex; justify-content: space-between;
  font-family: var(--f-mono); font-size: 12px;
  margin-bottom: 8px;
}
.bg-item-amts strong { color: var(--text1); font-weight: 700; }
.bg-item-amts em { color: var(--text3); font-style: normal; }
.bg-item-bar { height: 8px; background: var(--bg2); border-radius: 99px; overflow: hidden; }
.bg-item-fill { height: 100%; background: #00E676; border-radius: 99px; transition: width .6s var(--ease); }
.bg-item-fill.warn { background: #FFB800; }
.bg-item-fill.danger { background: #FF4660; }
.bg-item-pct { font-family: var(--f-mono); font-size: 11px; color: var(--text3); margin-top: 6px; }

/* ── Gasto por Tarjeta donut ───────────────────────── */
.card-spend-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 20px 22px;
  margin-bottom: 16px;
}
.csp-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 14px;
  gap: 12px;
  flex-wrap: wrap;
}
.csp-title { display: flex; align-items: center; gap: 10px; }
.csp-ico {
  width: 36px; height: 36px;
  border-radius: 10px;
  background: var(--bg3);
  color: var(--text2);
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.csp-title h3 {
  margin: 0;
  font-family: var(--f-display);
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -.2px;
}
.csp-title p { margin: 2px 0 0; font-size: 12px; color: var(--text3); }

.csp-tabs {
  display: inline-flex;
  background: var(--bg3);
  border: 1px solid var(--border);
  border-radius: 99px;
  padding: 3px;
}
.csp-tab {
  border: none; background: transparent;
  padding: 6px 14px;
  border-radius: 99px;
  font-family: var(--f-body);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text2);
  cursor: pointer;
  transition: all .15s;
}
.csp-tab.active { background: var(--bg2); color: var(--text1); box-shadow: 0 1px 4px rgba(0,0,0,.12); }

.csp-body {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 24px;
  align-items: center;
}
.csp-donut-wrap {
  position: relative;
  width: 100%;
  height: 200px;
}
.csp-legend {
  display: flex; flex-direction: column; gap: 12px;
}
.csp-leg-row {
  display: grid;
  grid-template-columns: 16px 1fr auto auto;
  gap: 12px;
  align-items: center;
  font-family: var(--f-body);
  font-size: 14px;
}
.csp-leg-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
}
.csp-leg-name { font-weight: 600; color: var(--text1); }
.csp-leg-amt {
  font-family: var(--f-mono);
  font-weight: 700;
  color: var(--text1);
  font-variant-numeric: tabular-nums;
}
.csp-leg-pct {
  font-family: var(--f-mono);
  color: var(--text3);
  font-size: 13px;
  min-width: 38px;
  text-align: right;
}
.csp-empty {
  text-align: center;
  padding: 40px 0;
  color: var(--text3);
  font-size: 13px;
  grid-column: 1 / -1;
}

/* ── MOBILE-FIRST adjustments ──────────────────────── */
@media (max-width: 900px) {
  .bg-kpis { grid-template-columns: 1fr; gap: 12px; }
  .bgk { padding: 18px 20px; }
  .bgk-val { font-size: 36px; }
  .csp-body { grid-template-columns: 1fr; gap: 16px; }
  .csp-donut-wrap { height: 200px; max-width: 240px; margin: 0 auto; }
  .bg-list-card.has-items { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
  .sec-head.budget-head { flex-direction: column; align-items: stretch; }
  .budget-actions { justify-content: space-between; gap: 8px; }
  .month-picker { font-size: 13px; padding: 3px 3px; }
  .month-picker span { padding: 0 8px; min-width: 90px; }
  .btn-pill { padding: 8px 14px; font-size: 12.5px; }
  .btn-icon-red { width: 38px; height: 38px; }

  .bgk-val { font-size: 40px; letter-spacing: -1.6px; }
  .bgk-lbl { font-size: 16px; }
  .bgk-ico { width: 36px; height: 36px; }
  .bgk-ico svg { width: 18px; height: 18px; }
  .bgk-sub { font-size: 13px; }

  .bg-global-card { padding: 18px 20px; }
  .bg-global-head span { font-size: 15px; }
  .bg-global-head strong { font-size: 15px; }
  .bg-global-bar { height: 14px; }

  .bg-section-title { font-size: 17px; }
  .bg-list-card { padding: 26px 18px; }
  .bg-empty p { font-size: 13.5px; }

  /* Gasto por Tarjeta */
  .card-spend-card { padding: 18px 18px; border-radius: 22px; }
  .csp-title h3 { font-size: 19px; }
  .csp-title p { font-size: 13px; }
  .csp-ico { width: 42px; height: 42px; }
  .csp-ico svg { width: 22px; height: 22px; }
  .csp-tab { padding: 7px 14px; font-size: 13.5px; }
  .csp-donut-wrap { height: 220px; max-width: 220px; }
  .csp-leg-row { font-size: 15px; grid-template-columns: 18px 1fr auto auto; gap: 14px; }
  .csp-leg-dot { width: 14px; height: 14px; }
  .csp-leg-amt { font-size: 15px; }
  .csp-leg-pct { font-size: 14px; }
}
@media (max-width: 480px) {
  .bgk { padding: 18px 18px; border-radius: 18px; }
  .bgk-val { font-size: 36px; }
  .csp-donut-wrap { height: 200px; }
}


/* ══════════════════════════════════════════════════════════
   V6 — KPI cards más compactas en móvil + bottom nav más grande
   ══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* KPI cards: menos altas, número pegado al label */
  .kpi-card {
    padding: 12px 18px 14px !important;
    grid-template-columns: minmax(0, 1fr) 78px !important;
    gap: 8px !important;
    border-radius: 18px !important;
    align-items: center;
  }
  .kc-main { gap: 0 !important; }
  .kc-top {
    margin-bottom: 6px !important;
    gap: 10px !important;
  }
  .kc-ico { width: 44px !important; height: 44px !important; }
  .kc-ico svg { width: 20px !important; height: 20px !important; stroke-width: 2.3; }
  .kc-lbl { font-size: 17px !important; }
  .kc-val {
    font-size: 40px !important;
    letter-spacing: -1.8px !important;
    margin: 0 !important;
    line-height: 1 !important;
  }
  .kc-bot {
    margin-top: 6px !important;
    min-height: 14px;
  }
  .kc-badge { font-size: 12px !important; }
  .kc-spark { width: 78px !important; height: 50px !important; align-self: center; }

  /* Ahorro card (independiente) también más compacta */
  .saving-card {
    padding: 14px 18px !important;
    border-radius: 18px !important;
    gap: 6px !important;
  }
  .sv-head { gap: 12px; margin-bottom: 4px !important; }
  .sv-ico { width: 44px !important; height: 44px !important; }
  .sv-ico svg { width: 20px !important; height: 20px !important; }
  .saving-card .kc-lbl { font-size: 17px !important; }
  .sv-val {
    font-size: 48px;
    letter-spacing: -2px;
    margin: 2px 0 6px;
    line-height: 1;
  }
  .sv-bot { gap: 8px; }
  .sv-spark { height: 50px; }
}

@media (max-width: 480px) {
  .kpi-card { padding: 12px 16px 14px !important; }
  .kc-val { font-size: 36px !important; letter-spacing: -1.6px !important; }
  .kc-ico { width: 42px !important; height: 42px !important; }
  .kc-ico svg { width: 19px !important; height: 19px !important; }
  .kc-lbl { font-size: 16px !important; }
  .sv-val { font-size: 42px; }
}
@media (max-width: 380px) {
  .kc-val { font-size: 34px !important; }
  .kpi-card { grid-template-columns: minmax(0, 1fr) 0 !important; }
}

/* ── BOTTOM NAV: ligeramente más grande (todas las pestañas) ── */
@media (max-width: 768px) {
  .mob-bottom-nav {
    padding: 12px 10px 14px !important;
    border-radius: 28px !important;
    left: 10px !important; right: 10px !important; bottom: 10px !important;
  }
  .mbn-item {
    padding: 8px 4px !important;
    gap: 6px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    letter-spacing: .2px !important;
  }
  .mbn-item svg {
    width: 28px !important;
    height: 28px !important;
    stroke-width: 2 !important;
  }
  .mbn-center { margin: 0 6px !important; }
  .mbn-add {
    width: 60px !important;
    height: 60px !important;
    box-shadow: 0 10px 28px rgba(30,231,140,.55) !important;
  }
  .mbn-add svg {
    width: 30px !important;
    height: 30px !important;
    stroke-width: 2.6 !important;
  }
}
@media (max-width: 380px) {
  .mbn-item { font-size: 11px !important; }
  .mbn-item svg { width: 26px !important; height: 26px !important; }
}

/* ══════════════════════════════════════════════════════════
   BILANS — KPI CARDS ESTILO MÓVIL (como la foto)
   Cards ancho completo, números enormes, borde lateral color
   ══════════════════════════════════════════════════════════ */

/* ── Reset grid → columna única en móvil ── */
.kpi-grid {
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  width: 100% !important;
  margin-bottom: 18px !important;
}

/* ── Card base ── */
.kpi-card {
  width: 100% !important;
  border-radius: 18px !important;
  padding: 22px 22px 18px 22px !important;
  border: none !important;
  border-left: 5px solid transparent !important;
  box-shadow: 0 2px 12px rgba(0,0,0,.06) !important;
  position: relative !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}

/* ── Colores de fondo suaves por tipo (como en la foto) ── */
.kc-income  { background: #f0faf4 !important; border-left-color: #16c653 !important; }
.kc-expense { background: #fff5f5 !important; border-left-color: #ef4444 !important; }
.kc-balance { background: #eff6ff !important; border-left-color: #3b82f6 !important; }
.kc-saving  { background: #fffbeb !important; border-left-color: #f59e0b !important; }

[data-theme="dark"] .kc-income  { background: rgba(22,198,83,.08)  !important; }
[data-theme="dark"] .kc-expense { background: rgba(239,68,68,.08)  !important; }
[data-theme="dark"] .kc-balance { background: rgba(59,130,246,.08) !important; }
[data-theme="dark"] .kc-saving  { background: rgba(245,158,11,.08) !important; }

/* ── Row 1: ícono + label ── */
.kpi-row1 {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  margin-bottom: 4px !important;
}

/* ── Ícono circular grande (como en la foto) ── */
.kpi-icon-box {
  width: 42px !important;
  height: 42px !important;
  border-radius: 50% !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  flex-shrink: 0 !important;
}
.kpi-icon-box svg { width: 20px !important; height: 20px !important; }
.kib-green  { background: rgba(22,198,83,.18)  !important; color: #16c653 !important; }
.kib-red    { background: rgba(239,68,68,.18)  !important; color: #ef4444 !important; }
.kib-blue   { background: rgba(59,130,246,.18) !important; color: #3b82f6 !important; }
.kib-amber  { background: rgba(245,158,11,.18) !important; color: #f59e0b !important; }

/* ── Label del KPI ── */
.kpi-label {
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  color: var(--text1) !important;
}

/* ── NÚMERO PRINCIPAL — enorme como en la foto ── */
.kpi-val {
  font-size: 42px !important;
  font-weight: 900 !important;
  letter-spacing: -1.5px !important;
  line-height: 1.05 !important;
  margin: 4px 0 !important;
  font-family: 'Space Grotesk', sans-serif !important;
}
.kc-income  .kpi-val { color: #111 !important; }
.kc-expense .kpi-val { color: #111 !important; }
.kc-balance .kpi-val { color: #111 !important; }
.kc-saving  .kpi-val { color: #111 !important; }
[data-theme="dark"] .kpi-val { color: #f0f4f0 !important; }

/* ── Row badge ── */
.kpi-row3 {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  margin-top: 2px !important;
}
.kpi-badge {
  font-size: 12px !important;
  font-weight: 600 !important;
  padding: 3px 10px !important;
  border-radius: 99px !important;
}
.kpb-up      { background: rgba(22,198,83,.15)  !important; color: #16c653 !important; }
.kpb-down    { background: rgba(239,68,68,.15)  !important; color: #ef4444 !important; }
.kpb-blue    { background: rgba(59,130,246,.15) !important; color: #3b82f6 !important; }
.kpb-amber   { background: rgba(245,158,11,.15) !important; color: #f59e0b !important; }
.kpb-neutral { background: rgba(0,0,0,.06)      !important; color: #888    !important; }
.kpi-period  { font-size: 11px !important; color: var(--text3) !important; }

/* ── Layout general móvil ── */
@media (max-width: 900px) {
  /* Quitar sidebar, expandir contenido */
  .sidebar, #sidebar { display: none !important; }
  .dash-main, .main  { margin-left: 0 !important; width: 100% !important; }

  /* Padding contenedor */
  .sec-container, .sec-wrap, .content-area, .content {
    padding: 12px 12px 100px !important;
  }

  /* Topbar */
  .topbar {
    padding: 0 12px !important;
    height: 56px !important;
  }
  .tb-search { display: none !important; }

  /* Charts apilados */
  .charts-duo, .charts-row, .two-col-grid {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
  }

  /* Chart areas más altas en móvil */
  .chart-area { height: 200px !important; }
  .chart-big .chart-area { height: 220px !important; }

  /* Editor */
  .editor-layout { grid-template-columns: 1fr !important; }
  .settings-grid { grid-template-columns: 1fr !important; }
}

/* ── Ancho completo en pantallas pequeñas ── */
@media (max-width: 480px) {
  .kpi-val { font-size: 36px !important; }
  .sec-container, .sec-wrap, .content-area, .content {
    padding: 10px 10px 96px !important;
  }
}

/* ══════════════════════════════════════════════════════════
   BILANS — FIXES: Filtros PWA, alineación izquierda, botón salud
   ══════════════════════════════════════════════════════════ */

/* ── Números KPI alineados a la IZQUIERDA ── */
.kpi-card { text-align: left !important; align-items: flex-start !important; }
.kpi-val  { text-align: left !important; width: 100% !important; }
.kpi-row1 { justify-content: flex-start !important; text-align: left !important; }
.kpi-row3 { justify-content: flex-start !important; }
.kpi-label { text-align: left !important; }

/* ── Filtros Todo/Año/Mes + PEN/USD — siempre visibles en PWA ── */
.overview-controls {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
  align-items: center !important;
  width: 100% !important;
  margin-bottom: 4px !important;
}
.range-row {
  display: flex !important;
  background: var(--bg2) !important;
  border: 1px solid var(--border) !important;
  border-radius: 10px !important;
  padding: 3px !important;
  gap: 2px !important;
}
.rtab {
  padding: 6px 14px !important;
  border-radius: 7px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  color: var(--text3) !important;
  transition: all .18s !important;
  white-space: nowrap !important;
}
.rtab.active {
  background: var(--bg3) !important;
  color: var(--neon) !important;
}
/* En PWA standalone — asegurar visibilidad */
@media all and (display-mode: standalone) {
  .overview-controls { display: flex !important; }
  .range-row { display: flex !important; }
  .sec-head { flex-direction: column !important; align-items: flex-start !important; }
}
/* En móvil — filtros abajo del título, ancho completo */
@media (max-width: 768px) {
  .sec-head {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 10px !important;
  }
  .overview-controls {
    width: 100% !important;
    flex-direction: row !important;
  }
  .range-row { flex: 1 !important; justify-content: space-around !important; }
  .rtab { flex: 1 !important; text-align: center !important; padding: 7px 8px !important; }
}

/* ── Botón "Ver salud financiera" ── */
.btn-salud {
  display: inline-flex !important;
  align-items: center !important;
  gap: 6px !important;
  margin-top: 14px !important;
  padding: 10px 18px !important;
  border-radius: 10px !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  font-family: 'Space Grotesk', sans-serif !important;
  background: var(--neon) !important;
  color: #000 !important;
  border: none !important;
  cursor: pointer !important;
  transition: all .18s !important;
  width: 100% !important;
  justify-content: center !important;
}
/* ══════════════════════════════════════════════════════════
   MASCOT VIDEO (v3.3) — robot saludando, fondo blanco → chroma-key
   ══════════════════════════════════════════════════════════ */
.mascot-video {
  display: block !important;
  background: transparent !important;
  object-fit: contain !important;
  /* SVG filter recorta el fondo blanco del mp4 dejando solo el robot */
  filter: url(#mascot-chromakey);
  -webkit-filter: url(#mascot-chromakey);
  pointer-events: none;
}
/* Por seguridad, ocultar el <img> estático cuando exista el <video> */
#mascotImg + #mascotVideo,
#mascotVideo ~ #mascotImg { display: none !important; }
@media (max-width: 480px) {
  .mascot-video { width: 210px !important; height: 210px !important; }
}

/* ── EVOLUCIÓN DE GASTO (dashboard) ────────────────────── */
.evo-card{
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);
  padding:22px 22px 18px;margin-top:16px;
}
.evo-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:14px}
.evo-head h3{font-size:18px;font-weight:800;color:var(--text1);letter-spacing:-.3px}
.evo-tabs{
  display:inline-flex;background:var(--bg1);border:1px solid var(--border);
  border-radius:999px;padding:4px;gap:2px;
}
.evo-tab{
  padding:7px 16px;border-radius:999px;font-size:12.5px;font-weight:600;
  color:var(--text2);transition:all var(--dur) var(--ease);
  font-family:var(--f-body);
}
.evo-tab:hover{color:var(--text1)}
.evo-tab.active{
  background:var(--bg3);color:var(--text1);
  box-shadow:0 1px 3px rgba(0,0,0,.18);
}
[data-theme="light"] .evo-tab.active{background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.evo-body{height:240px;position:relative}
.evo-sub{
  margin-top:14px;padding:12px 14px;border-radius:14px;
  background:rgba(255,77,92,.08);border:1px solid rgba(255,77,92,.15);
  display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text2);
}
.evo-sub-ico{
  width:36px;height:36px;border-radius:10px;background:rgba(255,77,92,.18);
  color:#ff4d5c;display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.evo-sub strong{color:#ff4d5c;font-weight:800;margin-right:4px}
.evo-sub.positive{background:rgba(30,231,140,.08);border-color:rgba(30,231,140,.18)}
.evo-sub.positive .evo-sub-ico{background:rgba(30,231,140,.18);color:#1ee78c}
.evo-sub.positive strong{color:#1ee78c}
@media (max-width:640px){
  .evo-card{padding:18px 14px 14px;border-radius:18px}
  .evo-head h3{font-size:16px}
  .evo-tab{padding:6px 12px;font-size:11.5px}
  .evo-body{height:210px}
}
.subs-list-card{
  background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);
  padding:18px 18px 14px;margin-top:16px;
}
.subs-list-title{font-size:14px;font-weight:700;color:var(--text1);margin-bottom:14px;letter-spacing:-.2px}
.subs-list{display:flex;flex-direction:column;gap:10px}
.sub-item{
  display:grid;grid-template-columns:48px 1fr auto auto auto;gap:14px;align-items:center;
  padding:14px;background:var(--bg1);border:1px solid var(--border);border-radius:14px;
  transition:all var(--dur) var(--ease);
}
.sub-item:hover{border-color:var(--border2);transform:translateX(2px)}
.sub-logo{
  width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font-family:var(--f-head);font-weight:800;font-size:20px;color:#fff;letter-spacing:-.5px;
  text-shadow:0 1px 2px rgba(0,0,0,.25);
}
.sub-body{min-width:0}
.sub-name{font-size:15px;font-weight:700;color:var(--text1);margin-bottom:3px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
.sub-meta{font-size:12px;color:var(--text3);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sub-meta-dot{width:3px;height:3px;border-radius:50%;background:var(--text3);display:inline-block}
.sub-amount{text-align:right}
.sub-amount-val{font-family:var(--f-head);font-weight:800;font-size:17px;color:var(--text1);letter-spacing:-.4px}
.sub-amount-cur{font-size:11px;color:var(--text3);font-family:var(--f-mono);text-transform:uppercase;letter-spacing:.5px}
.sub-days{
  display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 14px;border-radius:12px;
  background:var(--bg2);border:1px solid var(--border);min-width:78px;
}
.sub-days-n{font-family:var(--f-head);font-weight:800;font-size:22px;line-height:1;color:var(--text1);letter-spacing:-.5px}
.sub-days-l{font-size:10px;color:var(--text3);font-family:var(--f-mono);text-transform:uppercase;letter-spacing:.5px}
.sub-days.urgent{border-color:rgba(255,77,92,.35);background:rgba(255,77,92,.08)}
.sub-days.urgent .sub-days-n{color:#ff4d5c;text-shadow:0 0 12px rgba(255,77,92,.35)}
.sub-days.warn{border-color:rgba(255,201,51,.3);background:rgba(255,201,51,.08)}
.sub-days.warn .sub-days-n{color:#ffc933}
.sub-days.ok{border-color:rgba(30,231,140,.25);background:rgba(30,231,140,.06)}
.sub-days.ok .sub-days-n{color:#1ee78c}
.sub-actions{display:flex;gap:6px}
.sub-act{
  width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  transition:all var(--dur) var(--ease);
}
.sub-act.edit{background:rgba(77,139,255,.12);color:var(--blue)}
.sub-act.del{background:rgba(255,77,92,.12);color:var(--red)}
.sub-act:hover{transform:scale(1.08)}
.sub-act:active{transform:scale(.92)}
.subs-empty{
  text-align:center;padding:36px 16px;color:var(--text3);font-size:13px;
  border:1px dashed var(--border2);border-radius:14px;
}
.subs-empty strong{display:block;color:var(--text1);font-size:15px;margin-bottom:6px}
@media (max-width:640px){
  .sub-item{grid-template-columns:44px 1fr auto;gap:10px;padding:12px}
  .sub-amount{grid-column:2 / span 2;text-align:left;padding-top:2px}
  .sub-amount-val{font-size:15px}
  .sub-days{grid-column:3;grid-row:1;padding:6px 10px;min-width:64px}
  .sub-days-n{font-size:18px}
  .sub-actions{grid-column:1/-1;justify-content:flex-end;padding-top:6px;border-top:1px dashed var(--border);margin-top:4px;width:100%}
}

/* ── ROBOT SALUD (PNG con fondo ya transparente, sin chroma-key) ── */
.mascot-img.robot-salud {
  object-fit: contain !important;
  filter: drop-shadow(0 18px 28px rgba(0,0,0,.45)) drop-shadow(0 0 24px rgba(80,200,255,.18)) !important;
  -webkit-filter: drop-shadow(0 18px 28px rgba(0,0,0,.45)) drop-shadow(0 0 24px rgba(80,200,255,.18)) !important;
  background: transparent !important;
  pointer-events: none;
}

/* ──────────────────────────────────────────────────────────
   ACTIVIDAD RECIENTE (v3.5) — feed compacto en dashboard
   ────────────────────────────────────────────────────────── */
.activity-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 20px 20px 16px;
  margin-bottom: 16px;
}
.activity-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 8px;
}
.activity-head h3 {
  font-family: var(--f-head);
  font-size: 17px; font-weight: 800;
  letter-spacing: -.2px;
  color: var(--text1);
}
.activity-feed-list { display: flex; flex-direction: column; }
.afl-item {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px;
  padding: 14px 0;
  border-bottom: 1px solid var(--border);
}
.afl-item:last-child { border-bottom: none; }
.afl-info { min-width: 0; flex: 1; }
.afl-title {
  font-family: var(--f-head);
  font-size: 14px; font-weight: 700;
  color: var(--text1);
  letter-spacing: -.1px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: 4px;
}
.afl-meta {
  font-family: var(--f-mono);
  font-size: 11px; font-weight: 500;
  color: var(--text3);
  letter-spacing: .5px;
}
.afl-amount {
  font-family: var(--f-head);
  font-size: 14px; font-weight: 700;
  white-space: nowrap;
  letter-spacing: -.1px;
}
.afl-amount.pos { color: var(--neon); }
.afl-amount.neg { color: var(--text1); }
.afl-empty {
  text-align: center; padding: 24px 0;
  color: var(--text3); font-size: 13px;
  font-family: var(--f-mono);
}
.activity-see-all-btn {
  width: 100%;
  margin-top: 14px;
  padding: 12px;
  border-radius: 12px;
  font-size: 13px; font-weight: 600;
  font-family: var(--f-head);
  color: var(--text2);
  background: var(--bg1);
  border: 1px solid var(--border);
  transition: all .18s;
  letter-spacing: .3px;
}
.activity-see-all-btn:hover {
  background: var(--neon-glow2);
  color: var(--neon);
  border-color: var(--border2);
}

/* ──────────────────────────────────────────────────────────
   PEN / USD — visibilidad reforzada
   ────────────────────────────────────────────────────────── */
.sec-head .overview-controls { display: flex !important; }
.sec-head .overview-controls .range-row { display: flex !important; }
#curPEN, #curUSD {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* ══════════════════════════════════════════════════════════
   MOBILE FIXES (v3.1) — safe-area top + PEN/USD selector
   ══════════════════════════════════════════════════════════ */

/* 1) Franja superior para no chocar con la hora/batería del teléfono.
      Usa env(safe-area-inset-top) en iOS/Android PWA standalone y
      añade un mínimo de 8px en navegador normal. */
@media (max-width: 900px) {
  .topbar {
    padding-top: env(safe-area-inset-top, 0px) !important;
    padding-left: max(12px, env(safe-area-inset-left)) !important;
    padding-right: max(12px, env(safe-area-inset-right)) !important;
    height: calc(56px + env(safe-area-inset-top, 0px)) !important;
    align-items: flex-end !important;
    padding-bottom: 8px !important;
    box-sizing: border-box !important;
  }
  /* En PWA standalone — la franja debe ser visible siempre */
  @supports (padding-top: env(safe-area-inset-top)) {
    .topbar {
      padding-top: max(env(safe-area-inset-top), 10px) !important;
      height: calc(56px + max(env(safe-area-inset-top), 10px)) !important;
    }
  }
  /* El contenido del topbar centrado verticalmente debajo de la franja */
  .topbar .tb-l,
  .topbar .tb-r {
    align-items: center !important;
    height: 44px !important;
  }
  /* La sticky topbar arranca desde el borde superior real (0), la franja
     queda dentro del propio topbar como padding. */
  .topbar { top: 0 !important; }
}

/* En PWA / standalone (instalada en home screen) — refuerza la franja */
@media all and (display-mode: standalone) {
  .topbar {
    padding-top: max(env(safe-area-inset-top), 14px) !important;
    height: calc(56px + max(env(safe-area-inset-top), 14px)) !important;
  }
  body { padding-top: 0 !important; }
}

/* 2) Selector PEN/USD — siempre visible junto a Todo/Año/Mes en móvil.
      Quitamos el flex:1 de cada range-row para que ambos queden lado a lado,
      y si no entran (< 380px) hacemos wrap a la siguiente línea. */
@media (max-width: 768px) {
  .sec-head .overview-controls {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    width: 100% !important;
    gap: 8px !important;
  }
  .sec-head .overview-controls .range-row {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    display: flex !important;
  }
  /* Todo/Año/Mes ocupa la mayor parte */
  .sec-head .overview-controls .range-row:first-child {
    flex: 2 1 60% !important;
  }
  /* PEN/USD compacto a la derecha */
  .sec-head .overview-controls .range-row:last-child {
    flex: 1 1 30% !important;
    min-width: 110px !important;
  }
  .sec-head .overview-controls .rtab {
    flex: 1 !important;
    text-align: center !important;
    padding: 8px 6px !important;
    font-size: 13px !important;
    min-height: 38px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }
}

/* Pantallas muy pequeñas — PEN/USD pasa a su propia fila */
@media (max-width: 380px) {
  .sec-head .overview-controls .range-row:first-child,
  .sec-head .overview-controls .range-row:last-child {
    flex: 1 1 100% !important;
    min-width: 100% !important;
  }
}

/* ══════════════════════════════════════════════════════════
   MOBILE FIXES (v3.2) — sidebar drawer + PEN/USD pill group
   ══════════════════════════════════════════════════════════ */

/* ── 1) SIDEBAR DRAWER en móvil ─────────────────────────────
   Anular el display:none anterior y volver al patrón
   translateX(-100%) / .open → translateX(0). */
@media (max-width: 900px) {
  .sidebar,
  #sidebar {
    display: flex !important;
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    height: 100vh !important;
    width: 270px !important;
    max-width: 82vw !important;
    z-index: 200 !important;
    transform: translateX(-100%) !important;
    transition: transform .26s cubic-bezier(.4,0,.2,1) !important;
    box-shadow: 0 0 60px rgba(0,0,0,.6) !important;
    padding-top: env(safe-area-inset-top, 0px) !important;
  }
  .sidebar.open,
  #sidebar.open {
    transform: translateX(0) !important;
  }
  /* Hamburguesa visible y con buen tap target en móvil */
  .tb-ham {
    display: flex !important;
    width: 40px; height: 40px;
    align-items: center; justify-content: center;
    padding: 0 !important; gap: 4px !important;
    border-radius: 10px;
  }
  .tb-ham span { width: 22px !important; height: 2px !important; }
  /* Overlay */
  .sb-overlay { z-index: 150 !important; }
}

/* ── 2) PEN/USD — dos píldoras lado a lado ──────────────────
   Para que coincida con el mockup del usuario. */
.sec-head .overview-controls .range-row#__currency-stub { display:none; }

@media (max-width: 768px) {
  .sec-head .overview-controls {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 10px !important;
    width: 100% !important;
  }
  /* Primera fila: Todo / Año / Mes — ocupa la mayor parte */
  .sec-head .overview-controls .range-row:first-child {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    background: var(--bg2) !important;
    border: 1px solid var(--border) !important;
    border-radius: 12px !important;
    padding: 4px !important;
    gap: 2px !important;
    display: flex !important;
  }
  /* Segunda fila: PEN / USD — compacta a la derecha */
  .sec-head .overview-controls .range-row:last-child {
    flex: 0 0 auto !important;
    background: var(--bg2) !important;
    border: 1px solid var(--border) !important;
    border-radius: 12px !important;
    padding: 4px !important;
    gap: 2px !important;
    display: flex !important;
    width: auto !important;
    min-width: 130px !important;
  }
  .sec-head .overview-controls .range-row .rtab {
    flex: 1 1 0 !important;
    padding: 9px 10px !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    border-radius: 8px !important;
    min-height: 40px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    color: var(--text3) !important;
    background: transparent !important;
  }
  .sec-head .overview-controls .range-row .rtab.active {
    background: var(--bg0) !important;
    color: var(--text1) !important;
    box-shadow: 0 1px 3px rgba(0,0,0,.25);
  }
  .sec-head .overview-controls .range-row .rtab.active#curPEN,
  .sec-head .overview-controls .range-row .rtab.active#curUSD {
    color: var(--neon) !important;
  }
}

/* Pantallas muy estrechas → PEN/USD baja a su propia fila */
@media (max-width: 380px) {
  .sec-head .overview-controls {
    flex-wrap: wrap !important;
  }
  .sec-head .overview-controls .range-row:first-child,
  .sec-head .overview-controls .range-row:last-child {
    flex: 1 1 100% !important;
    min-width: 100% !important;
  }
}

/* ── Google Auth Button ── */
.btn-google-auth {
  width:100%;display:flex;align-items:center;justify-content:center;
  gap:10px;padding:12px 16px;border-radius:var(--r-sm);margin-top:6px;
  background:#ffffff;color:#1f1f1f;border:1.5px solid #dadce0;
  font-size:14px;font-weight:600;font-family:var(--f-main);
  cursor:pointer;transition:all var(--dur);box-shadow:0 1px 3px rgba(0,0,0,.1);
}
.btn-google-auth:hover{box-shadow:0 2px 8px rgba(0,0,0,.15);transform:translateY(-1px)}
.btn-google-auth:active{transform:scale(.98);opacity:.9}

/* ── Auth divider ── */
.auth-or{display:flex;align-items:center;gap:12px;margin:14px 0;color:var(--text3);font-size:12px;}
.auth-or::before,.auth-or::after{content:'';flex:1;height:1px;background:var(--border);}


/* ══════════════════════════════════════════════════════════
/* ══════════════════════════════════════════════════════════
   SALUD: tarjeta intro de Bilo + sistema de NIVELES XP
   ══════════════════════════════════════════════════════════ */
/* Sin columna izquierda con mascota dentro del health-card */
.health-body { grid-template-columns: 1fr !important; }

/* Bilo intro card */
.bilo-intro-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 22px 24px;
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 22px;
  align-items: center;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}
.bilo-intro-card::before {
  content:'';
  position:absolute;
  inset:auto -20% -60% auto;
  width: 60%;
  aspect-ratio: 1/1;
  background: radial-gradient(circle, rgba(30,231,140,.10), transparent 70%);
  pointer-events:none;
}
.bilo-intro-img {
  position: relative;
  width: 130px;
  height: 130px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.bilo-intro-img img {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 2;
  filter: drop-shadow(0 8px 22px rgba(0,0,0,.45));
}
.bilo-glow {
  position:absolute;
  inset:8% 8% 12% 8%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(96,165,250,.22), rgba(30,231,140,.08) 55%, transparent 75%);
  filter: blur(6px);
  z-index: 1;
  animation: biloPulse 3.6s ease-in-out infinite;
}
@keyframes biloPulse {
  0%,100% { opacity: .55; transform: scale(.96); }
  50%     { opacity: 1;   transform: scale(1.04); }
}
.bilo-intro-text strong {
  display:block;
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 19px;
  letter-spacing: -.3px;
  color: var(--text1);
  margin-bottom: 6px;
}
.bilo-intro-text p {
  margin: 0;
  font-size: 14px;
  color: var(--text2);
  line-height: 1.55;
  text-wrap: pretty;
  max-width: 600px;
}
@media (max-width: 640px) {
  .bilo-intro-card {
    grid-template-columns: 1fr;
    text-align: center;
    padding: 22px 18px;
    gap: 14px;
  }
  .bilo-intro-img { margin: 0 auto; width: 150px; height: 150px; }
  .bilo-intro-text strong { font-size: 17px; }
  .bilo-intro-text p { font-size: 13.5px; }
}

/* ── XP / niveles ── */
.xp-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 22px 24px 24px;
  margin-bottom: 16px;
  position: relative;
  overflow: hidden;
}
.xp-card::before {
  content:'';
  position:absolute;
  inset:0 0 auto 0;
  height: 3px;
  background: linear-gradient(90deg, var(--neon), #60a5fa, transparent);
  opacity: .6;
}
.xp-head {
  display:flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 22px;
  flex-wrap: wrap;
}
.xp-tag {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 11px;
  letter-spacing: 2px;
  color: var(--neon);
  display:block;
  margin-bottom: 6px;
}
.xp-head h3 {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 20px;
  letter-spacing: -.3px;
  color: var(--text1);
  margin: 0 0 4px;
}
.xp-head p {
  margin: 0;
  font-size: 13px;
  color: var(--text2);
  line-height: 1.5;
  max-width: 520px;
}
.xp-stats {
  display:flex;
  gap: 18px;
}
.xp-stat {
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 10px 14px;
  text-align: center;
  min-width: 86px;
}
.xp-stat small {
  display:block;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  color: var(--text3);
  letter-spacing: 1px;
  margin-bottom: 4px;
  text-transform: uppercase;
}
.xp-stat strong {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 22px;
  color: var(--text1);
  letter-spacing: -.3px;
}

/* Pista de niveles (5 avatares) */
.xp-track {
  display:grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 10px;
  margin-bottom: 22px;
  position: relative;
}
.xp-track::before {
  content:'';
  position:absolute;
  top: 44px;
  left: 10%;
  right: 10%;
  height: 2px;
  background: var(--border);
  z-index: 0;
}
.xp-level {
  display:flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  position: relative;
  z-index: 1;
}
.xp-avatar {
  width: 88px;
  height: 88px;
  border-radius: 50%;
  background: var(--bg1);
  border: 2px solid var(--border);
  position: relative;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow: hidden;
  transition: all .35s cubic-bezier(.4,0,.2,1);
}
.xp-placeholder {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  color: var(--text3);
  letter-spacing: 1px;
  text-align: center;
  background: repeating-linear-gradient(
    45deg,
    rgba(255,255,255,.02) 0 6px,
    rgba(255,255,255,.05) 6px 12px
  );
  width: 100%;
  height: 100%;
  display:flex;
  align-items:center;
  justify-content:center;
}
.xp-avatar img {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit: contain;
  display: none;
}
.xp-avatar img[src]:not([src=""]) {
  display:block;
}
.xp-avatar:has(img[src]:not([src=""])) .xp-placeholder { display:none; }

.xp-level-info {
  text-align:center;
}
.xp-level-info strong {
  display:block;
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 700;
  font-size: 12px;
  color: var(--text2);
  letter-spacing: -.2px;
}
.xp-level-info small {
  display:block;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10px;
  color: var(--text3);
  margin-top: 2px;
}

/* Estados de cada nivel */
.xp-level.locked .xp-avatar {
  filter: grayscale(1) brightness(.55);
  opacity: .55;
}
.xp-level.current .xp-avatar {
  border-color: var(--neon);
  box-shadow: 0 0 0 4px rgba(30,231,140,.15), 0 8px 20px rgba(30,231,140,.25);
  transform: translateY(-4px) scale(1.04);
}
.xp-level.current .xp-level-info strong { color: var(--neon); }
.xp-level.done .xp-avatar {
  border-color: var(--neon);
  box-shadow: 0 0 0 2px rgba(30,231,140,.25);
}
.xp-level.done .xp-level-info strong { color: var(--text1); }
.xp-level.done .xp-avatar::after {
  content:'✓';
  position:absolute;
  bottom: 2px;
  right: 2px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--neon);
  color: #0c1214;
  font-weight: 900;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size: 12px;
  border: 2px solid var(--bg2);
  z-index: 3;
}

/* Barra de progreso */
.xp-progress-wrap {
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 16px 18px;
}
.xp-progress-head {
  display:flex;
  justify-content:space-between;
  align-items: baseline;
  margin-bottom: 10px;
  font-size: 13px;
  color: var(--text2);
  gap: 12px;
  flex-wrap: wrap;
}
.xp-progress-head strong { color: var(--text1); font-weight: 700; }
.xp-progress-pct {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 12.5px;
  color: var(--text3);
}
.xp-progress-pct strong {
  color: var(--neon);
  font-weight: 800;
}
.xp-progress-bar {
  height: 14px;
  background: var(--bg2);
  border-radius: 99px;
  overflow: hidden;
  position: relative;
  border: 1px solid var(--border);
}
.xp-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--neon), #60a5fa);
  border-radius: 99px;
  transition: width .8s cubic-bezier(.4,0,.2,1);
  box-shadow: 0 0 12px rgba(30,231,140,.5);
  position: relative;
}
.xp-progress-fill::after {
  content:'';
  position:absolute;
  inset:0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255,255,255,.25) 50%,
    transparent 100%
  );
  animation: xpShine 2.2s linear infinite;
}
@keyframes xpShine {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
.xp-progress-foot {
  margin-top: 10px;
  font-size: 12px;
  color: var(--text3);
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  line-height: 1.5;
}
.xp-level.max .xp-avatar {
  border-color: var(--yellow);
  box-shadow: 0 0 0 4px rgba(255,201,51,.2), 0 8px 22px rgba(255,201,51,.3);
}
.xp-level.max .xp-level-info strong { color: var(--yellow); }

/* Responsive: pista de niveles */
@media (max-width: 768px) {
  .xp-card { padding: 20px 18px; }
  .xp-head { gap: 12px; }
  .xp-head h3 { font-size: 18px; }
  .xp-stats { width: 100%; gap: 10px; }
  .xp-stat { flex:1; padding: 9px 8px; min-width: 0; }
  .xp-stat strong { font-size: 18px; }
  .xp-track { gap: 6px; }
  .xp-track::before { top: 38px; }
  .xp-avatar { width: 72px; height: 72px; }
  .xp-level.current .xp-avatar { transform: translateY(-3px) scale(1.05); }
  .xp-level-info strong { font-size: 11px; }
  .xp-level-info small { font-size: 9.5px; }
}
@media (max-width: 480px) {
  .xp-track::before { top: 32px; }
  .xp-avatar { width: 60px; height: 60px; }
  .xp-level-info small { display:none; }
}

/* ══════════════════════════════════════════════════════════
   RESUMEN — insight, big KPIs, recurring list, activity feed
   ══════════════════════════════════════════════════════════ */
.insight-card {
  display:flex;
  align-items: flex-start;
  gap: 14px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 16px 18px;
  margin-bottom: 16px;
  position: relative;
  overflow:hidden;
}
.insight-card::before {
  content:'';
  position:absolute;
  inset:0 auto 0 0;
  width: 4px;
  background: linear-gradient(180deg, var(--neon), #60a5fa);
}
.insight-ico {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: rgba(30,231,140,.14);
  color: var(--neon);
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.insight-card strong {
  display:block;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10.5px;
  letter-spacing: 2px;
  color: var(--neon);
  margin-bottom: 4px;
}
.insight-card p {
  margin: 0;
  font-size: 14px;
  color: var(--text1);
  line-height: 1.55;
  text-wrap: pretty;
}

.big-kpi-stack { display:grid; gap: 12px; margin-bottom: 16px; }
.big-kpi {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 18px 22px;
  display:flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  position: relative;
  overflow:hidden;
}
.big-kpi::before {
  content:'';
  position:absolute;
  inset:0 auto 0 0;
  width: 4px;
  background: var(--text3);
}
.big-kpi.bk-inc::before { background: var(--neon); }
.big-kpi.bk-exp::before { background: var(--red); }
.big-kpi.bk-bal::before { background: var(--blue); }
.big-kpi-left small {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 11px;
  letter-spacing: 1.5px;
  color: var(--text3);
  text-transform: uppercase;
  display:block;
  margin-bottom: 4px;
}
.big-kpi-left .bk-val {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 30px;
  letter-spacing: -.6px;
  color: var(--text1);
}
.big-kpi.bk-inc .bk-val { color: var(--neon); }
.big-kpi.bk-exp .bk-val { color: var(--red); }
.big-kpi.bk-bal .bk-val { color: var(--blue); }
.big-kpi-right {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 11.5px;
  color: var(--text3);
  text-align: right;
  max-width: 140px;
  line-height: 1.4;
}

.peak-info {
  display:flex;
  align-items:center;
  gap: 10px;
  font-size: 12.5px;
  color: var(--text3);
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  margin-bottom: 10px;
  padding: 8px 12px;
  background: var(--bg1);
  border-radius: 10px;
  border: 1px solid var(--border);
}
.peak-info strong { color: var(--text1); font-weight: 700; }

.recurring-list { display:flex; flex-direction:column; gap: 8px; }
.rec-row {
  display:grid;
  grid-template-columns: 36px 1fr auto;
  gap: 12px;
  align-items: center;
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 14px;
}
.rec-row .rec-cnt {
  background: rgba(30,231,140,.16);
  color: var(--neon);
  border-radius: 8px;
  text-align: center;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-weight: 700;
  padding: 6px 0;
  font-size: 13px;
}
.rec-row .rec-name {
  font-size: 14px;
  color: var(--text1);
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rec-row .rec-name small {
  display:block;
  font-size: 11.5px;
  color: var(--text3);
  font-weight: 400;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  margin-top: 2px;
}
.rec-row .rec-amt {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 700;
  font-size: 14px;
  color: var(--red);
}

.activity-feed { display:flex; flex-direction:column; gap: 6px; }
.activity-feed .afi {
  display:grid;
  grid-template-columns: 44px 1fr auto;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  background: var(--bg1);
  border: 1px solid var(--border);
  align-items: center;
}
.activity-feed .afi-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  display:flex; align-items:center; justify-content:center;
}
.activity-feed .afi-icon.inc { background: rgba(30,231,140,.14); color: var(--neon); }
.activity-feed .afi-icon.exp { background: rgba(255,77,92,.14); color: var(--red); }
.activity-feed .afi-body strong {
  display:block;
  font-size: 14px;
  color: var(--text1);
  font-weight: 600;
  margin-bottom: 2px;
}
.activity-feed .afi-body small {
  font-size: 11.5px;
  color: var(--text3);
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
}
.activity-feed .afi-amt {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 700;
  font-size: 14.5px;
}
.activity-feed .afi-amt.pos { color: var(--neon); }
.activity-feed .afi-amt.neg { color: var(--red); }
.activity-see-all {
  display:block;
  margin: 12px auto 0;
  padding: 10px 22px;
  font-size: 13px;
  color: var(--neon);
  background: transparent;
  border: 1px solid rgba(30,231,140,.3);
  border-radius: 99px;
  font-weight: 600;
  transition: all .2s;
}
.activity-see-all:hover { background: rgba(30,231,140,.08); }

.res-cat-legend { display:flex; flex-direction:column; gap: 6px; margin-top: 12px; }
.res-cat-legend .rcl-row {
  display:grid;
  grid-template-columns: 12px 1fr auto auto;
  gap: 10px;
  align-items: center;
  padding: 8px 12px;
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 10px;
  font-size: 13px;
}
.res-cat-legend .rcl-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
}
.res-cat-legend .rcl-name { color: var(--text1); font-weight: 500; }
.res-cat-legend .rcl-amt {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  color: var(--text2);
  font-size: 12.5px;
}
.res-cat-legend .rcl-pct {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  color: var(--text3);
  font-size: 12px;
  min-width: 44px;
  text-align: right;
}

.afl-empty,
.rec-empty,
.activity-feed:empty + * { color: var(--text3); }
.rec-empty,
.activity-feed-empty {
  text-align: center;
  padding: 22px 12px;
  color: var(--text3);
  font-size: 13px;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
}


/* ══════════════════════════════════════════════════════════
   AHORRO XP — versión "1 Bilo a la vez" (current level)
   ══════════════════════════════════════════════════════════ */
.xp-card .xp-track { display: none !important; } /* viejo layout, oculto */
.xp-card .xp-stats { gap: 12px; }

.xp-hero {
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 28px;
  align-items: center;
  background: linear-gradient(135deg, rgba(30,231,140,.06), rgba(96,165,250,.04));
  border: 1px solid var(--border);
  border-radius: 22px;
  padding: 24px 28px;
  margin-bottom: 22px;
  position: relative;
  overflow: hidden;
}
.xp-hero::before {
  content:'';
  position: absolute;
  inset: -30% 50% auto -30%;
  height: 100%;
  background: radial-gradient(circle, rgba(30,231,140,.15), transparent 65%);
  pointer-events: none;
}
.xp-hero-avatar {
  position: relative;
  width: 220px;
  height: 220px;
  display:flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}
.xp-hero-glow {
  position: absolute;
  inset: 6%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(30,231,140,.35), rgba(96,165,250,.15) 50%, transparent 75%);
  filter: blur(8px);
  z-index: 0;
  animation: xpHeroPulse 3.5s ease-in-out infinite;
}
@keyframes xpHeroPulse {
  0%,100% { opacity: .6; transform: scale(.96); }
  50%     { opacity: 1;  transform: scale(1.05); }
}
.xp-hero-avatar img {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: contain;
  z-index: 2;
  filter: drop-shadow(0 14px 32px rgba(0,0,0,.55));
  animation: xpHeroFloat 5s ease-in-out infinite;
  transition: opacity .35s ease;
}
@keyframes xpHeroFloat {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-6px); }
}
.xp-hero-badge {
  position: absolute;
  bottom: 4px;
  right: 4px;
  background: var(--neon);
  color: #0c1214;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 1px;
  padding: 5px 12px;
  border-radius: 99px;
  border: 2px solid var(--bg2);
  z-index: 3;
  box-shadow: 0 4px 16px rgba(30,231,140,.4);
}

.xp-hero-info {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.xp-hero-tag {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10.5px;
  letter-spacing: 2px;
  color: var(--neon);
  text-transform: uppercase;
}
.xp-hero-info strong#xpHeroTitle {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 26px;
  letter-spacing: -.4px;
  color: var(--text1);
  line-height: 1.1;
}
.xp-hero-info small#xpHeroRange {
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 12px;
  color: var(--text3);
  margin-bottom: 14px;
}

/* La barra de progreso va dentro del hero-info — reset margin */
.xp-hero-info .xp-progress-wrap { margin-top: 4px; }

/* Dots de 5 niveles abajo */
.xp-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 4px 0 2px;
}
.xp-dot {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--bg1);
  border: 2px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:center;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-weight: 800;
  font-size: 13px;
  color: var(--text3);
  transition: all .3s ease;
  flex-shrink: 0;
}
.xp-dot i { font-style: normal; }
.xp-dot-line {
  flex: 1;
  height: 2px;
  background: var(--border);
  max-width: 60px;
  transition: background .3s ease;
}
.xp-dot.done {
  background: rgba(30,231,140,.18);
  border-color: var(--neon);
  color: var(--neon);
}
.xp-dot.current {
  background: var(--neon);
  border-color: var(--neon);
  color: #0c1214;
  transform: scale(1.15);
  box-shadow: 0 0 0 4px rgba(30,231,140,.18), 0 6px 16px rgba(30,231,140,.35);
}
.xp-dot-line.done { background: var(--neon); }

/* Animación al cambiar de nivel */
.xp-hero-avatar.level-up img {
  animation: xpLevelUp .8s cubic-bezier(.34,1.56,.64,1);
}
@keyframes xpLevelUp {
  0%   { transform: scale(.4) rotate(-15deg); opacity: 0; }
  60%  { transform: scale(1.12) rotate(6deg); opacity: 1; }
  100% { transform: scale(1) rotate(0); }
}

/* Responsive */
@media (max-width: 768px) {
  .xp-hero {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 22px 18px;
    text-align: center;
  }
  .xp-hero-avatar { width: 200px; height: 200px; }
  .xp-hero-info { align-items: center; }
  .xp-hero-info strong#xpHeroTitle { font-size: 22px; }
  .xp-hero-info .xp-progress-wrap { width: 100%; text-align: left; }
  .xp-dots { gap: 4px; }
  .xp-dot { width: 28px; height: 28px; font-size: 11px; }
  .xp-dot-line { max-width: 40px; }
}
@media (max-width: 480px) {
  .xp-hero-avatar { width: 170px; height: 170px; }
  .xp-hero-info strong#xpHeroTitle { font-size: 20px; }
}


/* ══════════════════════════════════════════════════════════
   KPI CARDS: fondo tintado suave (Ingresos / Gastos / Balance
   / Ahorro) en TODOS los temas — Subscripciones también
   ══════════════════════════════════════════════════════════ */
.kpi-card.kc-green  { background: linear-gradient(180deg, rgba(30,231,140,.08), rgba(30,231,140,.02)); }
.kpi-card.kc-red    { background: linear-gradient(180deg, rgba(255,77,92,.08), rgba(255,77,92,.02)); }
.kpi-card.kc-blue   { background: linear-gradient(180deg, rgba(77,139,255,.08), rgba(77,139,255,.02)); }
.kpi-card.kc-yellow { background: linear-gradient(180deg, rgba(255,201,51,.08), rgba(255,201,51,.02)); }

[data-theme="light"] .kpi-card.kc-green  { background: #f0fdf4; }
[data-theme="light"] .kpi-card.kc-red    { background: #fff5f6; }
[data-theme="light"] .kpi-card.kc-blue   { background: #f0f5ff; }
[data-theme="light"] .kpi-card.kc-yellow { background: #fffbeb; }

/* Mantener la línea izquierda y el sutil text-shadow original */


/* ══════════════════════════════════════════════════════════
   BOTTOM SHEET — Edición rápida de movimiento
   ══════════════════════════════════════════════════════════ */
.qe-sheet {
  position: fixed;
  inset: 0;
  z-index: 1200;
  pointer-events: none;
  visibility: hidden;
  transition: visibility 0s linear .35s;
}
.qe-sheet.open {
  pointer-events: auto;
  visibility: visible;
  transition: visibility 0s linear 0s;
}
.qe-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(4px);
  opacity: 0;
  transition: opacity .25s ease;
}
.qe-sheet.open .qe-backdrop { opacity: 1; }
.qe-panel {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translate(-50%, 100%);
  width: 100%;
  max-width: 560px;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-bottom: none;
  border-top-left-radius: 28px;
  border-top-right-radius: 28px;
  padding: 6px 22px max(22px, env(safe-area-inset-bottom, 22px));
  box-shadow: 0 -22px 60px rgba(0,0,0,.55);
  transition: transform .35s cubic-bezier(.34, 1.05, .5, 1);
  max-height: 92vh;
  overflow-y: auto;
}
.qe-sheet.open .qe-panel { transform: translate(-50%, 0); }

.qe-grab {
  width: 44px;
  height: 5px;
  border-radius: 99px;
  background: var(--border);
  margin: 8px auto 14px;
  cursor: grab;
}

.qe-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}
.qe-head h3 {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 18px;
  letter-spacing: -.2px;
  color: var(--text1);
  margin: 0;
}
.qe-close {
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 50%;
  width: 34px; height: 34px;
  display: flex; align-items: center; justify-content: center;
  color: var(--text2);
}
.qe-close:hover { background: var(--bg3); color: var(--text1); }

.qe-type-toggle {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 5px;
  margin-bottom: 18px;
}
.qe-tt {
  padding: 11px 10px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-weight: 700;
  font-size: 13.5px;
  color: var(--text3);
  transition: all .25s ease;
  font-family: inherit;
}
.qe-tt.active.qe-tt-ing { background: rgba(30,231,140,.16); color: var(--neon); box-shadow: 0 2px 10px rgba(30,231,140,.18); }
.qe-tt.active.qe-tt-gas { background: rgba(255,77,92,.16); color: var(--red); box-shadow: 0 2px 10px rgba(255,77,92,.18); }

.qe-amount-wrap {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 18px 20px;
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 18px;
  margin-bottom: 16px;
}
.qe-amount-sym {
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 22px;
  color: var(--text3);
}
.qe-amount-wrap input {
  flex: 1;
  border: none;
  background: transparent;
  outline: none;
  font-family: var(--f-head, 'Space Grotesk', sans-serif);
  font-weight: 800;
  font-size: 36px;
  color: var(--text1);
  letter-spacing: -.6px;
  min-width: 0;
}
.qe-amount-wrap input::placeholder { color: var(--text3); opacity: .5; }

.qe-fields { display: flex; flex-direction: column; gap: 12px; margin-bottom: 18px; }
.qe-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qe-field label {
  display: block;
  font-family: var(--f-mono, 'JetBrains Mono', monospace);
  font-size: 10.5px;
  letter-spacing: 1.2px;
  color: var(--text3);
  text-transform: uppercase;
  margin-bottom: 6px;
}
.qe-field input,
.qe-field select {
  width: 100%;
  padding: 11px 13px;
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text1);
  font-size: 14px;
  outline: none;
  font-family: inherit;
}
.qe-field input:focus,
.qe-field select:focus { border-color: var(--neon); }

/* Acciones: cuando el botón "Eliminar" está oculto, el "Guardar/Crear"
   debe ocupar todo el ancho (sin columna vacía del grid) */
.qe-actions {
  display: grid;
  grid-template-columns: 100px 1fr;
  gap: 10px;
}
.qe-actions:has(.qe-btn-del[style*="display: none"]),
.qe-actions:has(.qe-btn-del[style*="display:none"]) {
  grid-template-columns: 1fr;
}
.qe-btn-save { width: 100%; }
.qe-btn {
  padding: 16px 18px;
  border-radius: 14px;
  font-family: inherit;
  font-weight: 700;
  font-size: 15px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all .2s ease;
  letter-spacing: .2px;
}

/* Fecha más compacta (centra texto y reduce padding vertical) */
.qe-field input[type="date"] {
  padding: 9px 12px;
  font-size: 13.5px;
  text-align: left;
  appearance: none;
  -webkit-appearance: none;
}

/* En móvil: campos un poco más compactos en general */
@media (max-width: 480px) {
  .qe-field input,
  .qe-field select { padding: 10px 12px; font-size: 14px; }
  .qe-field input[type="date"] { padding: 8px 12px; font-size: 13px; }
  .qe-btn { padding: 15px 18px; }
}
.qe-btn-del {
  background: rgba(255,77,92,.1);
  color: var(--red);
  border: 1px solid rgba(255,77,92,.2);
}
.qe-btn-del:hover { background: rgba(255,77,92,.18); }
.qe-btn-save {
  background: var(--neon);
  color: #0c1214;
  border: none;
  box-shadow: 0 6px 18px rgba(30,231,140,.3);
}
.qe-btn-save:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(30,231,140,.4); }
.qe-btn-save:active { transform: translateY(0); }

@media (max-width: 480px) {
  .qe-panel { padding: 6px 18px max(18px, env(safe-area-inset-bottom, 18px)); border-radius: 24px 24px 0 0; }
  .qe-amount-wrap input { font-size: 30px; }
  .qe-amount-sym { font-size: 18px; }
  .qe-actions { grid-template-columns: 88px 1fr; }
  .qe-field-row { grid-template-columns: 1fr; }
}


/* ══════════════════════════════════════════════════════════
   MÓVIL — Espacio superior para hora/notch en topbar del dashboard
   ══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .topbar {
    padding-top: max(env(safe-area-inset-top, 0px), 22px) !important;
  }
}
@media all and (display-mode: standalone) {
  .topbar {
    padding-top: max(env(safe-area-inset-top, 0px), 28px) !important;
  }
}

/* ── Remove underline from KPI numbers ── */
.kc-val, .kpi-val, #kIncome, #kExpense, #kBalance, #kSaving {
  text-decoration: none !important;
  border-bottom: none !important;
  box-shadow: none !important;
}

/* ── Spinner: stop rotating when not syncing ── */
#refreshBtn:not(.spinning) svg,
#refreshBtn:not(.spinning) .ico {
  animation: none !important;
}

/* ── Email correos: lectura automática info box ── */
.email-sync-info {
  background: rgba(30,231,140,.07);
  border: 1px solid rgba(30,231,140,.2);
  border-radius: 10px;
  padding: 12px 14px;
  font-size: 12px;
  color: var(--text2);
  margin-top: 12px;
  line-height: 1.6;
}

/* ═══════════════════════════════════════════════════════
   CONTROL DE TARJETAS DE CRÉDITO
═══════════════════════════════════════════════════════ */
.cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 18px;
  margin-top: 16px;
}

.credit-card {
  background: linear-gradient(135deg, var(--bg2), var(--bg1));
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 20px;
  position: relative;
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
}
.credit-card:hover { transform: translateY(-3px); box-shadow: 0 12px 35px rgba(0,0,0,.25); }
.credit-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  background: var(--card-color, var(--neon));
}

.credit-card-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.credit-card-bank {
  font-family: var(--f-mono);
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--card-color, var(--neon));
}
.credit-card-actions { display: flex; gap: 6px; }
.credit-card-act-btn {
  background: rgba(255,255,255,.06);
  border: 1px solid var(--border);
  color: var(--text2);
  width: 28px; height: 28px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: .2s;
}
.credit-card-act-btn:hover { background: rgba(255,255,255,.12); color: var(--text1); }

.credit-card-name {
  font-size: 18px;
  font-weight: 800;
  margin-bottom: 18px;
  color: var(--text1);
}

.card-cycle {
  background: rgba(255,255,255,.04);
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 12px;
}
.card-cycle-row {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.card-cycle-label {
  font-family: var(--f-mono);
  font-size: 10px;
  color: var(--text3);
  letter-spacing: 1px;
  text-transform: uppercase;
}
.card-cycle-value {
  font-size: 16px;
  font-weight: 700;
  color: var(--text1);
}
.card-cycle-value.urgent { color: var(--red); animation: cardPulse 1.4s infinite; }
.card-cycle-value.soon { color: #ffc933; }
.card-cycle-value.ok { color: var(--neon); }

@keyframes cardPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .55; }
}

.card-progress-bar {
  height: 8px;
  background: rgba(255,255,255,.08);
  border-radius: 4px;
  overflow: hidden;
  margin-top: 6px;
}
.card-progress-fill {
  height: 100%;
  background: var(--card-color, var(--neon));
  border-radius: 4px;
  transition: width 1s ease;
}
.card-progress-fill.urgent { background: var(--red); }
.card-progress-fill.soon { background: #ffc933; }

.card-timeline {
  position: relative;
  height: 50px;
  margin: 14px 0 6px 0;
  background: rgba(255,255,255,.04);
  border-radius: 8px;
  padding: 0 12px;
}
.card-timeline-track {
  position: absolute;
  top: 50%;
  left: 12px;
  right: 12px;
  height: 3px;
  background: rgba(255,255,255,.1);
  border-radius: 2px;
}
.card-timeline-fill {
  position: absolute;
  top: 50%;
  left: 12px;
  height: 3px;
  background: var(--card-color, var(--neon));
  border-radius: 2px;
  transition: width 1s;
}
.card-timeline-marker {
  position: absolute;
  top: 50%;
  width: 12px; height: 12px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  background: var(--bg1);
  border: 2px solid var(--card-color, var(--neon));
  z-index: 2;
}
.card-timeline-marker.today {
  width: 16px; height: 16px;
  background: var(--card-color, var(--neon));
  box-shadow: 0 0 12px var(--card-color, var(--neon));
  animation: cardPulse 2s infinite;
}
.card-timeline-label {
  position: absolute;
  top: 2px;
  font-size: 9px;
  font-family: var(--f-mono);
  color: var(--text3);
  transform: translateX(-50%);
  text-transform: uppercase;
}
.card-timeline-label.bottom { top: auto; bottom: 2px; }

.card-status-msg {
  font-size: 12px;
  font-family: var(--f-mono);
  color: var(--text2);
  text-align: center;
  padding: 8px 0;
  border-top: 1px solid var(--border);
  margin-top: 10px;
}
.card-status-msg.good { color: var(--neon); }
.card-status-msg.warn { color: #ffc933; }
.card-status-msg.urgent { color: var(--red); }

/* Modal */
.card-modal {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.7);
  z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.card-modal.hidden { display: none; }
.card-modal-panel {
  background: var(--bg1);
  border: 1px solid var(--border);
  border-radius: 18px;
  width: 100%;
  max-width: 460px;
  max-height: 90vh;
  overflow-y: auto;
}
.card-modal-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 18px 22px;
  border-bottom: 1px solid var(--border);
}
.card-modal-head h2 { font-size: 20px; }
.card-modal-x {
  background: none; border: none;
  color: var(--text2);
  font-size: 28px;
  cursor: pointer;
  line-height: 1;
}
.card-modal-body { padding: 22px; }

.card-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.color-picker {
  display: flex; gap: 8px;
  margin-top: 6px;
}
.color-opt {
  width: 28px; height: 28px;
  border-radius: 50%;
  cursor: pointer;
  border: 2px solid transparent;
  transition: .2s;
}
.color-opt.active {
  border-color: var(--text1);
  transform: scale(1.15);
}

.btn-cancel {
  flex: 1;
  background: rgba(255,255,255,.06);
  border: 1px solid var(--border);
  color: var(--text1);
  padding: 12px;
  border-radius: 10px;
  cursor: pointer;
  font-family: var(--f-mono);
}

/* Educación */
.edu-card {
  background: rgba(30,231,140,.06);
  border: 1px solid rgba(30,231,140,.2);
  border-radius: 12px;
  padding: 16px;
  margin-top: 12px;
}
.edu-timeline {
  position: relative;
  height: 80px;
  margin: 20px 0;
}
.edu-timeline-line {
  position: absolute; top: 50%; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--neon), #4d8bff, var(--red));
  border-radius: 1px;
}
.edu-timeline-point {
  position: absolute;
  top: 50%;
  width: 14px; height: 14px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  background: var(--bg1);
  border: 2px solid var(--neon);
}
.edu-timeline-label {
  position: absolute;
  font-size: 11px;
  font-family: var(--f-mono);
  color: var(--text2);
  transform: translateX(-50%);
}

/* Ranking mejorado */
.ranking-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px;
  border-radius: 12px;
  transition: background .2s, transform .2s;
  border: 1px solid transparent;
}
.ranking-row:hover {
  background: rgba(255,255,255,.04);
  border-color: var(--border);
  transform: translateX(2px);
}
.rank-pos {
  font-size: 18px;
  font-weight: 800;
  min-width: 32px;
  text-align: center;
  font-family: var(--f-mono);
}
.rank-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.rank-icon svg { width: 18px; height: 18px; }

/* ═══════════════════════════════════════════════════════
   SIMULADOR DE TARJETAS — apartado "Si compras hoy"
═══════════════════════════════════════════════════════ */
.card-sim {
  background: rgba(255,255,255,.04);
  border: 1px dashed var(--border);
  border-radius: 12px;
  padding: 14px;
  margin-top: 12px;
}
.card-sim-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 10px;
}
.card-sim-title {
  font-family: var(--f-mono);
  font-size: 11px;
  color: var(--text3);
  letter-spacing: 1px;
  text-transform: uppercase;
}
.card-sim-days {
  font-size: 15px;
  font-weight: 800;
}
.card-sim-bar {
  position: relative;
  height: 10px;
  background: rgba(255,255,255,.06);
  border-radius: 5px;
  overflow: visible;
  margin-bottom: 22px;
}
.card-sim-fill {
  height: 100%;
  border-radius: 5px;
  transition: width 1s ease, background .3s;
}
.card-sim-marker {
  position: absolute;
  top: 100%; margin-top: 4px;
  transform: translateX(-50%);
  font-size: 9px;
  color: var(--text3);
  font-family: var(--f-mono);
}
.card-sim-tip {
  font-size: 11px;
  color: var(--text2);
  font-style: italic;
  text-align: center;
  margin-top: 4px;
}

/* ═══════════════════════════════════════════════════════
   SECCIÓN EDUCATIVA — Simulador interactivo
═══════════════════════════════════════════════════════ */
.edu-concepts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 10px;
}
.edu-concept {
  background: rgba(255,255,255,.04);
  border-radius: 10px;
  padding: 12px;
}
.edu-concept-tag {
  display: inline-block;
  font-family: var(--f-mono);
  font-size: 10px;
  font-weight: 800;
  padding: 3px 9px;
  border-radius: 6px;
  letter-spacing: 1px;
  margin-bottom: 6px;
}
.edu-concept p {
  font-size: 12px;
  color: var(--text2);
  line-height: 1.5;
}

.edu-sim-card {
  background: linear-gradient(135deg, rgba(77,139,255,.08), rgba(30,231,140,.04));
}
.edu-sim-controls {
  display: grid;
  gap: 14px;
  margin-bottom: 18px;
}
.edu-sim-group label {
  display: block;
  font-size: 12px;
  color: var(--text2);
  margin-bottom: 6px;
}
.edu-sim-group label strong {
  color: var(--neon);
  font-family: var(--f-mono);
  font-size: 14px;
  margin-left: 4px;
}
.edu-sim-group input[type=range] {
  width: 100%;
  -webkit-appearance: none;
  appearance: none;
  height: 6px;
  background: rgba(255,255,255,.1);
  border-radius: 3px;
  outline: none;
}
.edu-sim-group input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--neon);
  cursor: pointer;
  border: 3px solid var(--bg1);
  box-shadow: 0 2px 8px rgba(30,231,140,.5);
  transition: transform .15s;
}
.edu-sim-group input[type=range]::-webkit-slider-thumb:hover { transform: scale(1.15); }
.edu-sim-group input[type=range]::-moz-range-thumb {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--neon);
  cursor: pointer;
  border: 3px solid var(--bg1);
}

.edu-sim-result {
  text-align: center;
  padding: 18px;
  margin: 14px 0;
  background: rgba(255,255,255,.04);
  border-radius: 12px;
}
.edu-sim-num {
  font-size: 42px;
  font-weight: 900;
  font-family: var(--f-mono);
  color: var(--neon);
  margin-bottom: 4px;
  line-height: 1;
}
.edu-sim-msg {
  font-size: 13px;
  color: var(--text2);
}

.edu-sim-bar {
  position: relative;
  height: 12px;
  background: rgba(255,255,255,.06);
  border-radius: 6px;
  overflow: visible;
  margin: 12px 0 26px 0;
}
.edu-sim-bar-fill {
  height: 100%;
  border-radius: 6px;
  background: var(--neon);
  transition: width .4s, background .3s;
}
.edu-sim-bar-markers {
  position: absolute;
  top: 100%; left: 0; right: 0;
  margin-top: 6px;
  height: 12px;
}
.edu-sim-bar-markers span {
  position: absolute;
  transform: translateX(-50%);
  font-size: 10px;
  color: var(--text3);
  font-family: var(--f-mono);
}

.edu-sim-tip {
  text-align: center;
  font-size: 13px;
  padding: 10px 14px;
  border-radius: 10px;
  margin-top: 14px;
  line-height: 1.5;
}
.edu-sim-tip.ok { background: rgba(30,231,140,.08); color: var(--neon); }
.edu-sim-tip.warn { background: rgba(255,201,51,.08); color: #ffc933; }
.edu-sim-tip.bad { background: rgba(255,77,92,.08); color: var(--red); }

.edu-rule {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.edu-rule:last-child { border-bottom: none; }
.edu-rule-icon {
  width: 36px; height: 36px;
  border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}
.edu-rule div { font-size: 13px; line-height: 1.5; color: var(--text1); }

.edu-notif-list {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 8px;
}
.edu-notif-chip {
  font-family: var(--f-mono);
  font-size: 11px;
  padding: 5px 10px;
  border-radius: 6px;
  background: rgba(30,231,140,.1);
  color: var(--neon);
}

/* ═══════════════════════════════════════════════════════
   v12.3 — REFINAMIENTOS PREMIUM (sin tocar tamaños)
═══════════════════════════════════════════════════════ */

/* Reducir el "neon glow" en modo oscuro — más sutil */
.neon-text {
  color: var(--neon);
  text-shadow: none;
}

/* Botones principales en verde más elegante */
.btn-neon, .btn-neon-full, .btn-neon-sm {
  box-shadow: none;
}
.btn-neon:hover, .btn-neon-full:hover, .btn-neon-sm:hover {
  box-shadow: 0 2px 10px rgba(22,198,106,.18);
}

/* FAB y botones flotantes: usar el verde brillante */
.fab, .move-fab, .btn-fab {
  background: var(--neon-bright);
  box-shadow: 0 4px 14px rgba(0,230,118,.30);
}

/* Modo claro — tarjetas con sombra sutil en vez de borde fuerte */
[data-theme="light"] .acard,
[data-theme="light"] .credit-card,
[data-theme="light"] .move-card,
[data-theme="light"] .kpi-card,
[data-theme="light"] .chart-card,
[data-theme="light"] .login-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  box-shadow: 0 1px 2px rgba(15,31,24,.04), 0 2px 8px rgba(15,31,24,.04);
}
[data-theme="light"] .acard:hover,
[data-theme="light"] .credit-card:hover {
  box-shadow: 0 1px 2px rgba(15,31,24,.04), 0 4px 14px rgba(15,31,24,.08);
}

/* Sidebar y topbar más limpios en modo claro */
[data-theme="light"] .sidebar {
  background: #FFFFFF;
  border-right: 1px solid var(--border);
  box-shadow: none;
}
[data-theme="light"] .topbar {
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid var(--border);
  backdrop-filter: blur(12px);
}

/* Eliminar glow del título BILANS */
.brand, .topbar-brand {
  text-shadow: none !important;
}

/* Inputs más limpios en modo claro */
[data-theme="light"] input,
[data-theme="light"] select,
[data-theme="light"] textarea {
  background: #FFFFFF !important;
  border: 1px solid var(--border) !important;
  color: var(--text1) !important;
}
[data-theme="light"] input:focus,
[data-theme="light"] select:focus,
[data-theme="light"] textarea:focus {
  border-color: var(--neon) !important;
  box-shadow: 0 0 0 3px rgba(22,198,106,.10) !important;
  outline: none;
}

/* Modo oscuro - efectos más sutiles en orbs y scan */
[data-theme="dark"] .orb, .orb { opacity: .04 !important; }
[data-theme="dark"] .scan-line, .scan-line { opacity: .06 !important; }
.grid-bg {
  background-image:
    linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);
}

/* Cards en modo oscuro - solo borde sutil, sin glow */
[data-theme="dark"] .acard,
[data-theme="dark"] .credit-card,
.acard, .credit-card {
  border-color: var(--border);
  box-shadow: none;
}

/* Simulador: barra completamente visible en modo claro */
[data-theme="light"] .edu-sim-bar {
  background: #EEF2F0;
}
[data-theme="light"] .card-sim-bar {
  background: #EEF2F0;
}
[data-theme="light"] .card-progress-bar {
  background: #EEF2F0;
}
[data-theme="light"] .edu-sim-bar-fill,
[data-theme="light"] .card-sim-fill,
[data-theme="light"] .card-progress-fill {
  min-width: 2px;
}

/* Asegurar contraste de markers en modo claro */
[data-theme="light"] .edu-sim-bar-markers span,
[data-theme="light"] .card-sim-marker {
  color: var(--text2);
}

/* ═══════════════════════════════════════════════════════
   GAMIFICACIÓN — XP & Niveles
═══════════════════════════════════════════════════════ */
.gami-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: var(--shadow);
}
.gami-head {
  display: flex; gap: 14px; align-items: center; margin-bottom: 18px;
}
.gami-emoji {
  width: 64px; height: 64px;
  border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  font-size: 32px;
  flex-shrink: 0;
}
.gami-info { flex: 1; min-width: 0; }
.gami-lvl-tag {
  font-family: var(--f-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  margin-bottom: 2px;
}
.gami-name { margin: 2px 0; font-size: 18px; color: var(--text1); }
.gami-desc { font-size: 12px; color: var(--text2); margin: 0; }

.gami-xp { margin: 14px 0; }
.gami-xp-row {
  display: flex; justify-content: space-between;
  font-size: 12px; color: var(--text2);
  margin-bottom: 6px;
}
.gami-xp-row strong { color: var(--text1); font-family: var(--f-mono); }
.gami-xp-bar {
  height: 10px;
  background: rgba(255,255,255,.06);
  border-radius: 5px;
  overflow: hidden;
}
[data-theme="light"] .gami-xp-bar { background: #EEF2F0; }
.gami-xp-fill {
  height: 100%;
  border-radius: 5px;
  transition: width .8s ease;
}
.gami-hint {
  font-size: 11px;
  color: var(--text3);
  margin-top: 8px;
  text-align: center;
}

.gami-levels {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 8px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}
.gami-level {
  text-align: center;
  padding: 10px 6px;
  border-radius: 10px;
  background: rgba(255,255,255,.02);
  border: 1px solid var(--border);
  transition: .2s;
}
[data-theme="light"] .gami-level { background: #FAFBFA; }
.gami-level.unlocked { border-color: var(--lv-color, var(--neon)); }
.gami-level.current {
  background: rgba(22,198,106,.05);
  box-shadow: 0 0 0 2px var(--lv-color);
}
.gami-level-emoji { font-size: 22px; margin-bottom: 4px; }
.gami-level.locked .gami-level-emoji { opacity: .35; filter: grayscale(1); }
.gami-level-num {
  font-family: var(--f-mono);
  font-size: 9px;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 1px;
}
.gami-level-name {
  font-size: 11px;
  font-weight: 600;
  color: var(--text1);
  margin: 2px 0;
  line-height: 1.3;
}
.gami-level-xp {
  font-size: 10px;
  color: var(--text2);
  font-family: var(--f-mono);
}
.gami-level.locked .gami-level-name,
.gami-level.locked .gami-level-xp { color: var(--text3); }

@media (max-width: 600px) {
  .gami-levels { grid-template-columns: repeat(5, 1fr); gap: 4px; }
  .gami-level { padding: 8px 4px; }
  .gami-level-name { font-size: 10px; }
}

/* ═══════════════════════════════════════════════════════
   SALUD FINANCIERA — score + recomendaciones
═══════════════════════════════════════════════════════ */
.salud-card {
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: var(--shadow);
}
.salud-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.salud-score { text-align: right; }
.salud-score-num {
  font-family: var(--f-mono);
  font-size: 42px;
  font-weight: 900;
  line-height: 1;
}
.salud-score-lbl {
  font-size: 11px;
  letter-spacing: 1px;
  text-transform: uppercase;
  font-weight: 700;
}
.salud-bar {
  height: 8px;
  background: rgba(255,255,255,.06);
  border-radius: 4px;
  overflow: hidden;
  margin: 4px 0 18px;
}
[data-theme="light"] .salud-bar { background: #EEF2F0; }
.salud-bar-fill { height: 100%; transition: width .8s; border-radius: 4px; }

.salud-stats {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  margin-bottom: 18px;
  padding: 14px; border-radius: 12px;
  background: rgba(255,255,255,.02);
}
[data-theme="light"] .salud-stats { background: #FAFBFA; }
.salud-stat { display: flex; flex-direction: column; gap: 2px; }
.salud-stat-lbl {
  font-family: var(--f-mono);
  font-size: 10px;
  color: var(--text3);
  text-transform: uppercase;
  letter-spacing: 1px;
}
.salud-stat strong { font-size: 16px; font-family: var(--f-mono); }

.salud-recs-title { margin: 14px 0 10px; font-size: 14px; }
.salud-recs { display: flex; flex-direction: column; gap: 10px; }
.salud-rec {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 12px;
  border-radius: 12px;
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border);
}
[data-theme="light"] .salud-rec { background: #FAFBFA; }
.salud-rec.good { border-left: 3px solid var(--neon); }
.salud-rec.warn { border-left: 3px solid var(--yellow); }
.salud-rec.bad  { border-left: 3px solid var(--red); }
.salud-rec-icon { font-size: 22px; line-height: 1; flex-shrink: 0; }
.salud-rec-body strong { font-size: 13px; color: var(--text1); }
.salud-rec-body p { margin: 2px 0 0; font-size: 12px; color: var(--text2); line-height: 1.5; }

/* ═══════════════════════════════════════════════════════
   METAS DE AHORRO
═══════════════════════════════════════════════════════ */
.metas-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 14px;
}
.btn-mini {
  background: var(--neon);
  color: var(--bg0);
  border: none;
  font-family: var(--f-mono);
  font-size: 11px;
  padding: 6px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-weight: 700;
}
[data-theme="light"] .btn-mini { color: white; }

.metas-empty {
  text-align: center; padding: 20px 12px;
  color: var(--text2);
}
.metas-empty p { font-size: 13px; margin-bottom: 12px; }

.meta-card {
  background: rgba(255,255,255,.02);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px;
  margin-bottom: 10px;
}
[data-theme="light"] .meta-card { background: #FAFBFA; }
.meta-card.done { border-color: var(--neon); background: rgba(22,198,106,.05); }
.meta-head { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.meta-emoji { font-size: 28px; }
.meta-info { flex: 1; min-width: 0; }
.meta-info strong { font-size: 14px; color: var(--text1); }
.meta-progress-txt {
  display: block;
  font-size: 11px;
  color: var(--text2);
  margin-top: 2px;
}
.meta-actions { display: flex; gap: 6px; }
.meta-act {
  width: 30px; height: 30px;
  border-radius: 8px;
  background: rgba(255,255,255,.05);
  border: 1px solid var(--border);
  color: var(--text1);
  font-size: 16px;
  cursor: pointer;
  font-weight: 700;
}
.meta-act:hover { background: var(--neon); color: var(--bg0); border-color: var(--neon); }
.meta-act.red:hover { background: var(--red); color: white; border-color: var(--red); }
.meta-bar {
  height: 8px;
  background: rgba(255,255,255,.06);
  border-radius: 4px;
  overflow: hidden;
}
[data-theme="light"] .meta-bar { background: #EEF2F0; }
.meta-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--neon), var(--neon-bright));
  border-radius: 4px;
  transition: width .8s;
}
.meta-pct {
  font-family: var(--f-mono);
  font-size: 11px;
  color: var(--text3);
  text-align: right;
  margin-top: 4px;
}

/* ═══════════════════════════════════════════════════════
   BOTTOM SHEET (cs- prefijo = card sheet)
═══════════════════════════════════════════════════════ */
.cs-sheet {
  position: fixed; inset: 0;
  z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 24px 16px;
  pointer-events: none;
}
@media (max-width: 720px) {
  .cs-sheet {
    align-items: flex-end;
    padding: 0;
  }
}
.cs-sheet.hidden { display: none; }
.cs-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.55);
  opacity: 0;
  transition: opacity .25s;
  pointer-events: auto;
}
.cs-sheet.open .cs-overlay { opacity: 1; }
.cs-panel {
  position: relative;
  width: 100%;
  max-width: 520px;
  max-height: 90vh;
  background: var(--bg2);
  border-radius: 22px;
  border: 1px solid var(--border);
  overflow-y: auto;
  transform: translateY(-30px) scale(.96);
  opacity: 0;
  transition: transform .3s cubic-bezier(.2,.8,.2,1), opacity .25s;
  pointer-events: auto;
  box-shadow: 0 12px 40px rgba(0,0,0,.30);
}
.cs-sheet.open .cs-panel {
  transform: translateY(0) scale(1);
  opacity: 1;
}
@media (max-width: 720px) {
  .cs-panel {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-bottom: none;
    transform: translateY(100%);
    opacity: 1;
    max-height: 92vh;
  }
  .cs-sheet.open .cs-panel { transform: translateY(0); }
}
.cs-grab {
  width: 50px; height: 5px;
  background: var(--border2);
  border-radius: 3px;
  margin: 10px auto 6px;
  cursor: grab;
}
.cs-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 22px 14px;
  cursor: grab;
}
.cs-head h2 { font-size: 18px; margin: 0; }
.cs-x {
  background: none; border: none;
  color: var(--text2);
  font-size: 26px;
  cursor: pointer;
  line-height: 1;
  padding: 0 8px;
}
.cs-body { padding: 0 22px 28px; }

/* Bank presets */
.cs-bank-presets {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-top: 4px;
}
.bank-preset {
  background: rgba(255,255,255,.05);
  border: 1px solid var(--border);
  color: var(--text1);
  padding: 8px 12px;
  border-radius: 8px;
  font-family: var(--f-mono);
  font-size: 11px;
  cursor: pointer;
  transition: .2s;
}
[data-theme="light"] .bank-preset { background: #F0F4F2; }
.bank-preset:hover { border-color: var(--neon); }
.bank-preset.active {
  background: var(--neon);
  color: var(--bg0);
  border-color: var(--neon);
  font-weight: 700;
}
[data-theme="light"] .bank-preset.active { color: white; }

/* Simulador - rango min/promedio/max */
.sim-rango {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-top: 8px;
  padding: 12px;
  background: rgba(255,255,255,.03);
  border-radius: 12px;
}
[data-theme="light"] .sim-rango { background: #FAFBFA; border: 1px solid var(--border); }
.sim-rango-item {
  text-align: center;
}
.sim-rango-item .lbl {
  display: block;
  font-family: var(--f-mono);
  font-size: 10px;
  color: var(--text3);
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-bottom: 4px;
}
.sim-rango-item strong {
  font-family: var(--f-mono);
  font-size: 18px;
  font-weight: 800;
}

/* Resaltar el slider de compra (el único que el usuario mueve cuando ya eligió banco) */
.edu-sim-highlight {
  background: rgba(22,198,106,.06);
  border: 1px solid rgba(22,198,106,.2);
  padding: 12px;
  border-radius: 12px;
  margin-top: 6px;
}
.edu-sim-highlight label {
  color: var(--neon) !important;
  font-weight: 700;
}

/* ═══════════════════════════════════════════════════════
   REDISEÑO PREMIUM iOS · v13.0
   Mantiene toda la funcionalidad, solo cambia estética
═══════════════════════════════════════════════════════ */

/* Tipografía SF Pro Display iOS-like (sin tocar el resto) */
body, .acard, .kpi-card, .move-card, .credit-card, .gami-card {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Fondo con sutil patrón de fluidez en modo oscuro */
[data-theme="dark"] body {
  background: var(--bg0);
  background-image:
    radial-gradient(circle at 15% 0%, rgba(16,185,129,.04) 0%, transparent 50%),
    radial-gradient(circle at 85% 30%, rgba(59,130,246,.04) 0%, transparent 50%),
    radial-gradient(circle at 50% 80%, rgba(236,72,153,.03) 0%, transparent 50%);
}
[data-theme="light"] body {
  background: var(--bg0);
  background-image:
    radial-gradient(circle at 15% 0%, rgba(16,185,129,.06) 0%, transparent 50%),
    radial-gradient(circle at 85% 30%, rgba(59,130,246,.05) 0%, transparent 50%);
}

/* KPI cards con degradado y efecto cristal */
.kpi-card {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 22px !important;
  padding: 20px !important;
  box-shadow: var(--shadow, 0 4px 14px rgba(0,0,0,.05));
  transition: transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s;
  position: relative;
  overflow: hidden;
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(0,0,0,.08); }
.kpi-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 100%;
  pointer-events: none;
  background: radial-gradient(circle at 100% 0%, rgba(255,255,255,.04), transparent 60%);
}

/* KPI ingresos: degradado verde */
.kpi-card.kpi-income, .kpi-card[data-kpi="ingresos"] {
  background: var(--gradient-card-1);
  border: none;
  color: #fff;
}
.kpi-card.kpi-income *, .kpi-card[data-kpi="ingresos"] * { color: #fff !important; }
.kpi-card.kpi-income .kpi-label, .kpi-card[data-kpi="ingresos"] .kpi-label { opacity: .8; }

/* Acards con bordes suaves y sombras flotantes */
.acard, .chart-card {
  background: var(--bg2) !important;
  border: .5px solid var(--border) !important;
  border-radius: 22px !important;
  padding: 20px !important;
  box-shadow: var(--shadow, 0 2px 10px rgba(0,0,0,.04)) !important;
}
[data-theme="dark"] .acard, [data-theme="dark"] .chart-card { box-shadow: none !important; }

/* Move-card iOS style */
.move-card {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 18px;
  padding: 14px 16px;
  margin-bottom: 8px;
  transition: transform .2s cubic-bezier(.2,.8,.2,1), background .2s;
  box-shadow: var(--shadow, none);
}
.move-card:active { transform: scale(.98); background: var(--bg3); }
[data-theme="dark"] .move-card { box-shadow: none; }

.move-ico {
  border-radius: 14px !important;
  width: 44px !important;
  height: 44px !important;
}

/* Sidebar más limpio */
.sidebar {
  background: var(--bg2);
  border-right: .5px solid var(--border);
  box-shadow: none;
}
[data-theme="light"] .sidebar { background: #FFFFFF; }

.sb-btn {
  border-radius: 14px !important;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
  margin-bottom: 4px;
}
.sb-btn.active, .sb-btn:hover {
  background: var(--neon-glow) !important;
  color: var(--neon) !important;
}
.sb-btn.active {
  background: var(--gradient-card-1) !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(16,185,129,.25);
}
.sb-btn.active .sb-ico { color: #fff !important; }

/* Botones primarios con degradado */
.btn-neon, .btn-neon-full {
  background: var(--gradient-primary) !important;
  border: none !important;
  border-radius: 14px !important;
  box-shadow: 0 4px 14px rgba(16,185,129,.25) !important;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
  font-weight: 600 !important;
}
.btn-neon:hover, .btn-neon-full:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(16,185,129,.35) !important;
}
.btn-neon:active, .btn-neon-full:active {
  transform: scale(.98);
}

.btn-neon-sm {
  background: var(--gradient-primary) !important;
  border: none !important;
  border-radius: 12px !important;
  box-shadow: 0 2px 8px rgba(16,185,129,.20) !important;
}

/* FAB con efecto de pulse */
.fab, .move-fab, .btn-fab, .qe-fab {
  background: var(--gradient-primary) !important;
  border: none !important;
  box-shadow: 0 8px 24px rgba(16,185,129,.4), 0 0 0 0 rgba(16,185,129,.5) !important;
  animation: fabPulse 2.5s infinite;
}
@keyframes fabPulse {
  0%, 100% { box-shadow: 0 8px 24px rgba(16,185,129,.4), 0 0 0 0 rgba(16,185,129,.5); }
  50%      { box-shadow: 0 8px 24px rgba(16,185,129,.4), 0 0 0 12px rgba(16,185,129,0); }
}

/* Topbar con efecto cristal */
.topbar {
  background: var(--glass-bg) !important;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border-bottom: .5px solid var(--border) !important;
}

/* Inputs y selects iOS-style */
input, select, textarea {
  border-radius: 12px !important;
  background: var(--bg3) !important;
  border: .5px solid var(--border) !important;
  transition: all .2s;
  font-family: inherit;
}
input:focus, select:focus, textarea:focus {
  border-color: var(--neon) !important;
  box-shadow: 0 0 0 3px var(--neon-glow) !important;
  outline: none;
}

/* Range slider iOS-style */
input[type="range"] {
  height: 6px !important;
  background: var(--bg4) !important;
  border-radius: 3px !important;
  -webkit-appearance: none;
  appearance: none;
}
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: #fff;
  cursor: pointer;
  border: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.15), 0 0 0 1px rgba(0,0,0,.04);
  transition: transform .15s;
}
input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.15); }
input[type="range"]::-moz-range-thumb {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: #fff;
  border: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}

/* Toast iOS-style */
.toast {
  background: var(--glass-bg) !important;
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border: .5px solid var(--border) !important;
  border-radius: 16px !important;
  box-shadow: 0 12px 30px rgba(0,0,0,.15) !important;
  color: var(--text1) !important;
  font-weight: 500;
}

/* Sec-head más limpio */
.sec-head h1 {
  font-size: 28px !important;
  font-weight: 700 !important;
  letter-spacing: -0.5px !important;
}
.sec-head p {
  font-size: 13px !important;
  color: var(--text2) !important;
}
.neon-text {
  background: var(--gradient-primary);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: none !important;
}

/* Credit cards con degradados premium */
.credit-card {
  background: var(--gradient-card-1) !important;
  border: none !important;
  border-radius: 22px !important;
  padding: 22px !important;
  position: relative;
  overflow: hidden;
  box-shadow: 0 12px 30px rgba(16,185,129,.20) !important;
  color: #fff !important;
}
.credit-card:nth-child(2n) { background: var(--gradient-card-2) !important; box-shadow: 0 12px 30px rgba(59,130,246,.20) !important; }
.credit-card:nth-child(3n) { background: var(--gradient-card-3) !important; box-shadow: 0 12px 30px rgba(245,158,11,.20) !important; }
.credit-card:nth-child(4n) { background: var(--gradient-card-4) !important; box-shadow: 0 12px 30px rgba(236,72,153,.20) !important; }
.credit-card::before {
  content: '';
  position: absolute;
  top: -50px; right: -50px;
  width: 180px; height: 180px;
  border-radius: 50%;
  background: rgba(255,255,255,.08);
  pointer-events: none;
}
.credit-card::after {
  content: '';
  position: absolute;
  bottom: -60px; left: -30px;
  width: 140px; height: 140px;
  border-radius: 50%;
  background: rgba(255,255,255,.05);
  pointer-events: none;
}
.credit-card * { color: #fff !important; }
.credit-card-bank, .credit-card-name { color: #fff !important; }
.card-cycle, .card-sim {
  background: rgba(255,255,255,.12) !important;
  backdrop-filter: blur(12px);
  border: .5px solid rgba(255,255,255,.15) !important;
}
.card-progress-bar, .card-sim-bar {
  background: rgba(255,255,255,.20) !important;
}
.card-progress-fill, .card-sim-fill {
  background: #fff !important;
}
.card-cycle-label, .card-sim-title { color: rgba(255,255,255,.7) !important; }

/* Bottom sheet más iOS */
.cs-panel {
  border-radius: 28px !important;
  box-shadow: 0 20px 60px rgba(0,0,0,.35) !important;
  background: var(--bg2) !important;
}
[data-theme="light"] .cs-panel { background: #FFFFFF !important; }

.cs-grab {
  background: var(--text3) !important;
  opacity: .5;
}

/* Color picker más bonito */
.color-opt {
  width: 34px !important;
  height: 34px !important;
  box-shadow: 0 2px 6px rgba(0,0,0,.1);
  transition: transform .15s;
}
.color-opt.active {
  transform: scale(1.15);
  box-shadow: 0 0 0 3px var(--bg2), 0 0 0 5px currentColor;
}

/* Loader iOS-style */
.loader-ring div {
  border-color: var(--neon) transparent transparent transparent !important;
}

/* Move actions más bonitos */
.move-act, .qe-act {
  border-radius: 10px !important;
  transition: all .2s;
}

/* Health/Gami cards */
.gami-card, .salud-card {
  background: var(--bg2) !important;
  border: .5px solid var(--border) !important;
  border-radius: 22px !important;
  box-shadow: var(--shadow, none) !important;
}

/* Avatar iniciales con degradado */
.user-avatar, .avatar-circle, .sb-avatar {
  background: var(--gradient-primary) !important;
  color: #fff !important;
}

/* Animaciones de entrada */
@keyframes slideUp {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
.acard, .move-card, .credit-card, .kpi-card {
  animation: slideUp .35s cubic-bezier(.2,.8,.2,1) backwards;
}
.move-card:nth-child(1) { animation-delay: .02s; }
.move-card:nth-child(2) { animation-delay: .04s; }
.move-card:nth-child(3) { animation-delay: .06s; }
.move-card:nth-child(4) { animation-delay: .08s; }
.move-card:nth-child(5) { animation-delay: .10s; }

/* Smooth scroll en toda la app */
* { scroll-behavior: smooth; }

/* Scrollbar estilo iOS */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--border2);
  border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover { background: var(--text3); }

/* Tags mejorados */
.bt-ing, .bt-gas {
  border-radius: 8px !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  padding: 3px 8px !important;
  letter-spacing: .5px;
}
.bt-ing { background: rgba(16,185,129,.15) !important; color: var(--neon) !important; }
.bt-gas { background: rgba(248,113,113,.15) !important; color: var(--red) !important; }

/* === BALANCE OCULTABLE === */
.balance-hidden {
  filter: blur(12px);
  transition: filter .3s;
  user-select: none;
}
.eye-toggle {
  cursor: pointer;
  padding: 6px;
  border-radius: 10px;
  background: rgba(255,255,255,.08);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .2s;
  border: none;
  color: var(--text2);
}
.eye-toggle:hover { background: rgba(255,255,255,.15); color: var(--text1); }

/* Sin glow text shadows en ningún lado */
* { text-shadow: none !important; }
.neon-text { /* permitir el gradient text */ }

/* Mobile: ajustes para uso en celular */
@media (max-width: 720px) {
  body { font-size: 15px; }
  .sec-head h1 { font-size: 24px !important; }
  .kpi-card { padding: 16px !important; border-radius: 18px !important; }
  .move-card { padding: 12px 14px; border-radius: 16px; }
  .credit-card { border-radius: 18px !important; padding: 18px !important; }
  .acard, .chart-card { border-radius: 18px !important; padding: 16px !important; }
  .btn-neon, .btn-neon-full { border-radius: 12px !important; padding: 14px 18px; }
}

/* Bottom nav para móvil (oculta en desktop) */
.mobile-nav {
  display: none;
  position: fixed;
  bottom: 0; left: 0; right: 0;
  background: var(--glass-bg);
  backdrop-filter: var(--glass-blur);
  -webkit-backdrop-filter: var(--glass-blur);
  border-top: .5px solid var(--border);
  padding: 10px 12px calc(env(safe-area-inset-bottom, 0px) + 10px);
  justify-content: space-around;
  align-items: center;
  z-index: 100;
}
@media (max-width: 720px) {
  .mobile-nav { display: flex; }
  .sidebar { display: none; }
  .topbar { padding-bottom: 8px; }
  main, .main { padding-bottom: 100px; }
}
.mobile-nav-item {
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: 3px;
  padding: 6px 12px;
  border-radius: 12px;
  color: var(--text3);
  cursor: pointer;
  transition: all .2s;
  min-width: 56px;
}
.mobile-nav-item.active { color: var(--neon); }
.mobile-nav-item svg { width: 22px; height: 22px; }
.mobile-nav-item span { font-size: 10px; font-weight: 600; }
.mobile-nav-fab {
  width: 52px; height: 52px;
  border-radius: 50%;
  background: var(--gradient-primary);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 20px rgba(16,185,129,.4);
  margin-top: -22px;
  color: #fff;
}


/* ═══════════════════════════════════════════════════════
   v13.0 — Ajustes finales del rediseño premium
═══════════════════════════════════════════════════════ */

/* Header del KPI Balance con el botón eye bien alineado */
.kpi-card .kc-top {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}
.eye-toggle {
  width: 32px; height: 32px;
  padding: 0;
  font-size: 14px;
}
[data-theme="dark"] .eye-toggle {
  background: rgba(255,255,255,.06);
  color: var(--text2);
}
[data-theme="light"] .eye-toggle {
  background: rgba(15,23,42,.04);
  color: var(--text2);
}

/* Quick editor panel también con estilo iOS */
.qe-panel, .quick-editor-panel {
  border-radius: 20px !important;
  border: .5px solid var(--border) !important;
  background: var(--bg2) !important;
}

/* Move icon usa los gradientes según tipo */
.move-card .move-ico {
  background: var(--gradient-card-1) !important;
}
.move-card.is-gas .move-ico {
  background: linear-gradient(135deg, #F87171, #DC2626) !important;
}
.move-card.is-ing .move-ico {
  background: linear-gradient(135deg, #34D399, #10B981) !important;
}
.move-ico svg, .move-ico i { color: #fff !important; }

/* Charts containers más limpios */
.chart-card canvas { border-radius: 12px; }

/* Botones de tipo (ingreso/gasto) en editor con estilo iOS */
.edt-type-btn, .qe-type-btn {
  border-radius: 14px !important;
  border: .5px solid var(--border) !important;
  background: var(--bg3) !important;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
}
.edt-type-btn.active, .qe-type-btn.active {
  background: var(--gradient-primary) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 4px 14px rgba(16,185,129,.25);
}
.edt-type-btn[data-type="GASTO"].active, .qe-type-btn[data-type="GASTO"].active {
  background: linear-gradient(135deg, #F87171, #DC2626) !important;
  box-shadow: 0 4px 14px rgba(248,113,113,.25);
}

/* Categoría chips con gradient suave */
.cat-chip, .qe-cat-chip {
  border-radius: 12px !important;
  border: .5px solid var(--border) !important;
  transition: all .2s;
}
.cat-chip:hover, .qe-cat-chip:hover {
  border-color: var(--neon) !important;
  transform: translateY(-1px);
}
.cat-chip.active, .qe-cat-chip.active {
  background: var(--gradient-primary) !important;
  color: #fff !important;
  border-color: transparent !important;
  box-shadow: 0 4px 12px rgba(16,185,129,.25);
}

/* Filtros del topbar más limpios */
.range-chip, .filter-chip {
  border-radius: 10px !important;
  background: var(--bg3) !important;
  border: .5px solid var(--border) !important;
  transition: all .2s;
}
.range-chip.active, .filter-chip.active {
  background: var(--gradient-primary) !important;
  color: #fff !important;
  border-color: transparent !important;
}

/* Logos y branding más sutiles */
.brand, .topbar-brand, .login-brand {
  text-shadow: none !important;
  letter-spacing: -.5px;
}

/* Banner verde del balance que ocupa la KPI completa en modo claro */
[data-theme="light"] .kpi-card.kc-blue {
  background: var(--gradient-card-1) !important;
  color: #fff !important;
  border: none !important;
}
[data-theme="light"] .kpi-card.kc-blue .kc-lbl,
[data-theme="light"] .kpi-card.kc-blue .kc-val,
[data-theme="light"] .kpi-card.kc-blue .kc-per,
[data-theme="light"] .kpi-card.kc-blue .kc-ico {
  color: #fff !important;
}
[data-theme="light"] .kpi-card.kc-blue .kc-ico {
  background: rgba(255,255,255,.18) !important;
}
[data-theme="light"] .kpi-card.kc-blue .eye-toggle {
  background: rgba(255,255,255,.18) !important;
  color: #fff !important;
}

[data-theme="dark"] .kpi-card.kc-blue {
  background: var(--gradient-card-1) !important;
  color: #fff !important;
  border: none !important;
  box-shadow: 0 12px 30px rgba(16,185,129,.20);
}
[data-theme="dark"] .kpi-card.kc-blue * { color: #fff !important; }
[data-theme="dark"] .kpi-card.kc-blue .kc-ico { background: rgba(255,255,255,.18) !important; }
[data-theme="dark"] .kpi-card.kc-blue .eye-toggle {
  background: rgba(255,255,255,.18) !important;
  color: #fff !important;
}

/* Topbar logo más limpio */
.topbar-logo, .topbar .brand {
  font-weight: 700;
  letter-spacing: -.5px;
}

/* Empty state más iOS */
.empty-dashboard {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 22px;
  padding: 40px 20px;
  text-align: center;
}
.empty-dashboard h3 {
  font-size: 17px;
  font-weight: 600;
  margin-bottom: 6px;
}
.empty-dashboard p {
  color: var(--text2);
  font-size: 14px;
  margin-bottom: 16px;
}

/* Modo login renovado */
.login-card {
  border-radius: 24px !important;
  border: .5px solid var(--border) !important;
  background: var(--bg2) !important;
  box-shadow: 0 20px 60px rgba(0,0,0,.15) !important;
}
.login-google-btn {
  border-radius: 14px !important;
  background: var(--gradient-primary) !important;
  border: none !important;
  box-shadow: 0 4px 14px rgba(16,185,129,.25) !important;
}

/* Transiciones suaves entre secciones */
.dsec {
  animation: secFade .35s cubic-bezier(.2,.8,.2,1);
}
@keyframes secFade {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Notch para iPhone (top inset) */
.topbar {
  padding-top: max(12px, env(safe-area-inset-top, 0px));
}

/* ═══════════════════════════════════════════════════════
   v13.1 — HERO BALANCE CARD iOS-style
═══════════════════════════════════════════════════════ */
.hero-balance {
  position: relative;
  background: linear-gradient(135deg, #10B981 0%, #059669 55%, #047857 100%);
  border-radius: 28px;
  padding: 24px 22px;
  margin-bottom: 16px;
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(16,185,129,.28);
  color: #fff;
  animation: heroSlideIn .5s cubic-bezier(.2,.8,.2,1);
}
@keyframes heroSlideIn {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}
.hero-bg-orb {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}
.hero-bg-orb-1 {
  top: -50px; right: -40px;
  width: 180px; height: 180px;
  background: rgba(255,255,255,.10);
}
.hero-bg-orb-2 {
  bottom: -60px; left: -30px;
  width: 140px; height: 140px;
  background: rgba(255,255,255,.06);
}
.hero-head {
  position: relative;
  z-index: 2;
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}
.hero-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.5px;
  color: rgba(255,255,255,.75);
}
.hero-val-wrap {
  position: relative;
  z-index: 2;
  margin-bottom: 6px;
}
.hero-val {
  font-size: 38px;
  font-weight: 800;
  letter-spacing: -1.2px;
  color: #fff;
  font-variant-numeric: tabular-nums;
  display: inline-block;
}
.hero-change {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  color: #A7F3D0;
  font-weight: 600;
  margin-bottom: 18px;
}
.hero-mini-grid {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.hero-mini {
  background: rgba(255,255,255,.14);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: .5px solid rgba(255,255,255,.18);
  border-radius: 16px;
  padding: 12px 14px;
  transition: transform .2s;
}
.hero-mini:active { transform: scale(.97); }
.hero-mini-top {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}
.hero-mini-ico {
  width: 22px; height: 22px;
  border-radius: 7px;
  background: rgba(167,243,208,.22);
  color: #A7F3D0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero-mini-ico-red {
  background: rgba(252,165,165,.22);
  color: #FCA5A5;
}
.hero-mini-lbl {
  font-size: 10px;
  letter-spacing: 1px;
  color: rgba(255,255,255,.75);
  font-weight: 600;
}
.hero-mini-val {
  font-size: 16px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -.3px;
  font-variant-numeric: tabular-nums;
}

/* === Ojo SOLO oculta el balance del hero === */
.eye-toggle {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(255,255,255,.16);
  border: .5px solid rgba(255,255,255,.20);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  transition: background .2s, transform .15s;
}
.eye-toggle:hover { background: rgba(255,255,255,.25); }
.eye-toggle:active { transform: scale(.94); }

/* Balance hidden — SOLO el hero-val */
.hero-val.balance-hidden {
  filter: blur(14px);
  user-select: none;
}

/* Esconder el blur de los minis (NO afecta ingresos/gastos) */
.hero-mini-val.balance-hidden,
#kIncome.balance-hidden,
#kExpense.balance-hidden { filter: none; }

/* ═══════════════════════════════════════════════════════
   QUICK ACTIONS GRID (Ingreso / Gasto / Tarjeta / Más)
═══════════════════════════════════════════════════════ */
.quick-actions {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.qa-btn {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 20px;
  padding: 14px 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  transition: transform .15s cubic-bezier(.2,.8,.2,1), box-shadow .15s;
  font-family: inherit;
  font-size: 12px;
  color: var(--text2);
  font-weight: 500;
}
.qa-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,0,0,.06); }
.qa-btn:active { transform: scale(.96); }
.qa-ico {
  width: 38px; height: 38px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
}
.qa-ico-green { background: linear-gradient(135deg,#34D399,#10B981); box-shadow: 0 4px 12px rgba(16,185,129,.30); }
.qa-ico-red   { background: linear-gradient(135deg,#F87171,#DC2626); box-shadow: 0 4px 12px rgba(248,113,113,.30); }
.qa-ico-blue  { background: linear-gradient(135deg,#60A5FA,#2563EB); box-shadow: 0 4px 12px rgba(59,130,246,.30); }
.qa-ico-amber { background: linear-gradient(135deg,#FBBF24,#D97706); box-shadow: 0 4px 12px rgba(245,158,11,.30); }

/* ═══════════════════════════════════════════════════════
   MEJORAR ICONOS DE CATEGORÍAS (más bonitos, gradientes iOS)
═══════════════════════════════════════════════════════ */
.move-card .move-ico,
.cat-chip .cat-ico,
.qe-cat-chip .qe-cat-ico {
  width: 44px !important;
  height: 44px !important;
  border-radius: 13px !important;
  box-shadow: 0 4px 10px rgba(0,0,0,.08);
}

/* Mapeo de categoría a gradiente */
.move-ico[data-cat*="Cafe"], .move-ico[data-cat*="Caf"] { background: linear-gradient(135deg,#A78B5F,#6B4423) !important; }
.move-ico[data-cat*="Fast"], .move-ico[data-cat*="Comida"] { background: linear-gradient(135deg,#FCA5A5,#EF4444) !important; }
.move-ico[data-cat*="Delivery"] { background: linear-gradient(135deg,#FBBF24,#D97706) !important; }
.move-ico[data-cat*="Transport"] { background: linear-gradient(135deg,#60A5FA,#1D4ED8) !important; }
.move-ico[data-cat*="Aliment"] { background: linear-gradient(135deg,#86EFAC,#16A34A) !important; }
.move-ico[data-cat*="Salud"] { background: linear-gradient(135deg,#FB7185,#BE123C) !important; }
.move-ico[data-cat*="Suscrip"] { background: linear-gradient(135deg,#A78BFA,#6D28D9) !important; }
.move-ico[data-cat*="Tecno"] { background: linear-gradient(135deg,#67E8F9,#0E7490) !important; }
.move-ico[data-cat*="Compras"] { background: linear-gradient(135deg,#F0ABFC,#A21CAF) !important; }
.move-ico[data-cat*="Educ"] { background: linear-gradient(135deg,#FDE047,#CA8A04) !important; }
.move-ico[data-cat*="Entret"] { background: linear-gradient(135deg,#F9A8D4,#DB2777) !important; }
.move-ico[data-cat*="Servicios"], .move-ico[data-cat*="Hogar"] { background: linear-gradient(135deg,#94A3B8,#475569) !important; }
.move-ico[data-cat*="Viajes"] { background: linear-gradient(135deg,#5EEAD4,#0F766E) !important; }
.move-ico[data-cat*="Vivienda"] { background: linear-gradient(135deg,#FED7AA,#C2410C) !important; }
.move-ico[data-cat*="Seguros"] { background: linear-gradient(135deg,#BAE6FD,#0369A1) !important; }
.move-ico[data-cat*="Pagos a terceros"] { background: linear-gradient(135deg,#7DD3FC,#0284C7) !important; }
.move-ico[data-cat*="Pago de deudas"] { background: linear-gradient(135deg,#FCA5A5,#B91C1C) !important; }
.move-ico[data-cat*="Salario"], .move-ico[data-cat*="ingreso"] { background: linear-gradient(135deg,#34D399,#059669) !important; }

/* Quitar transacciones (texto), metas y racha del perfil (clase oculta) */
.profile-stat-transacciones,
.profile-stat-metas,
.profile-stat-racha,
.btn-cambiar-contrasena,
[data-action="cambiar-contrasena"] { display: none !important; }

/* ═══════════════════════════════════════════════════════
   MEJORAS GENERALES DE UX iOS
═══════════════════════════════════════════════════════ */
button, .btn, .qa-btn, .sb-btn, .mobile-nav-item {
  -webkit-tap-highlight-color: transparent;
}
* { -webkit-touch-callout: none; }

/* Transiciones más suaves */
* { transition-timing-function: cubic-bezier(.2,.8,.2,1); }

/* Section heads más limpios */
.sec-head {
  margin-bottom: 16px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 12px;
}
.sec-head h1 {
  font-size: 26px !important;
  font-weight: 700 !important;
  letter-spacing: -.6px !important;
  margin: 0 !important;
}
.sec-head p {
  font-size: 13px !important;
  color: var(--text2) !important;
  margin: 2px 0 0 !important;
}

/* Topbar más iOS — saludo personalizado */
.topbar-greeting {
  font-size: 12px;
  color: var(--text2);
  letter-spacing: .5px;
}
.topbar-user {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -.3px;
}

@media (max-width: 720px) {
  .hero-val { font-size: 34px; }
  .hero-balance { padding: 20px 18px; border-radius: 24px; }
  .qa-btn { padding: 12px 6px; border-radius: 18px; }
  .qa-ico { width: 36px; height: 36px; }
}

/* ═══════════════════════════════════════════════════════
   v13.1 — CONFIGURACIÓN ESTILO iOS NATIVO
═══════════════════════════════════════════════════════ */

/* Profile hero */
.profile-hero {
  position: relative;
  background: linear-gradient(135deg, #10B981 0%, #047857 100%);
  border-radius: 24px;
  padding: 32px 22px 28px;
  margin-bottom: 20px;
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(16,185,129,.25);
}
.profile-hero-bg-orb {
  position: absolute;
  top: -60px; right: -40px;
  width: 200px; height: 200px;
  border-radius: 50%;
  background: rgba(255,255,255,.08);
}
.profile-hero-content {
  position: relative;
  z-index: 2;
  text-align: center;
}
.profile-avatar-big {
  width: 84px; height: 84px;
  border-radius: 24px;
  background: rgba(255,255,255,.18);
  backdrop-filter: blur(20px);
  border: 1px solid rgba(255,255,255,.25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 34px;
  font-weight: 700;
  color: #fff;
  margin: 0 auto 14px;
  letter-spacing: -1px;
}
.profile-name {
  font-size: 22px;
  font-weight: 700;
  color: #fff;
  margin: 0 0 4px;
  letter-spacing: -.4px;
}
.profile-email {
  font-size: 13px;
  color: rgba(255,255,255,.80);
  margin: 0;
  font-family: var(--f-mono), ui-monospace, monospace;
}

/* iOS groups */
.ios-group {
  margin-bottom: 22px;
}
.ios-group-title {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.2px;
  color: var(--text3);
  margin: 0 12px 8px;
  text-transform: uppercase;
}
.ios-card {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: var(--shadow, 0 1px 2px rgba(0,0,0,.04));
}

.ios-row {
  position: relative;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  border-bottom: .5px solid var(--border);
  cursor: pointer;
  transition: background .15s;
  min-height: 56px;
}
.ios-row:last-child { border-bottom: none; }
.ios-row:hover { background: var(--bg3); }
.ios-row:active { background: var(--bg4); }
.ios-row-toggle { cursor: default; }
.ios-row-toggle:hover { background: transparent; }

.ios-row-ico {
  width: 32px; height: 32px;
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 2px 6px rgba(0,0,0,.10);
}

.ios-row-text {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.ios-row-lbl {
  font-size: 15px;
  font-weight: 500;
  color: var(--text1);
}
.ios-row-sub {
  font-size: 12px;
  color: var(--text3);
}
.ios-row-val {
  font-size: 14px;
  color: var(--text2);
  margin-left: auto;
  font-weight: 500;
}
.ios-row-chev {
  color: var(--text3);
  margin-left: auto;
}
.ios-row-input {
  background: transparent !important;
  border: none !important;
  padding: 0 !important;
  font-size: 13px !important;
  color: var(--text2) !important;
  text-align: right !important;
  width: auto !important;
  font-family: inherit;
}
.ios-row-input:focus {
  box-shadow: none !important;
  border: none !important;
  outline: none;
  color: var(--text1) !important;
}

/* iOS switch */
.ios-switch {
  position: relative;
  display: inline-block;
  width: 50px;
  height: 30px;
  flex-shrink: 0;
}
.ios-switch input {
  opacity: 0;
  width: 0;
  height: 0;
}
.ios-switch-slider {
  position: absolute;
  cursor: pointer;
  top: 0; left: 0; right: 0; bottom: 0;
  background: #d1d5db;
  border-radius: 30px;
  transition: background .25s cubic-bezier(.2,.8,.2,1);
}
[data-theme="dark"] .ios-switch-slider { background: #374151; }
.ios-switch-slider::before {
  position: absolute;
  content: "";
  height: 26px; width: 26px;
  left: 2px; top: 2px;
  background: #fff;
  border-radius: 50%;
  transition: transform .25s cubic-bezier(.2,.8,.2,1);
  box-shadow: 0 2px 6px rgba(0,0,0,.15);
}
.ios-switch input:checked + .ios-switch-slider {
  background: linear-gradient(135deg, #34D399, #10B981);
}
.ios-switch input:checked + .ios-switch-slider::before {
  transform: translateX(20px);
}

@media (max-width: 720px) {
  .ios-row { padding: 14px 16px; }
  .ios-row-lbl { font-size: 16px; }
}

/* ═══════════════════════════════════════════════════════
   v13.2 — TOPBAR LIMPIO iOS + PANEL COMPLETO
═══════════════════════════════════════════════════════ */

.topbar-ios {
  background: transparent !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  border-bottom: none !important;
  padding: 12px 18px 8px;
  display: flex !important;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.topbar-ios .tb-l { display: flex; align-items: center; flex: 1; min-width: 0; }
.topbar-ios .tb-r { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.tb-hi {
  font-size: 11px;
  letter-spacing: 1.5px;
  color: var(--text3);
  font-weight: 600;
  margin: 0;
}
.tb-name {
  font-size: 22px;
  font-weight: 700;
  color: var(--text1);
  margin: 0;
  letter-spacing: -.4px;
}

.tb-icon-btn {
  width: 38px; height: 38px;
  border-radius: 12px;
  background: var(--bg2);
  border: .5px solid var(--border);
  color: var(--text2);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
}
.tb-icon-btn:hover { color: var(--neon); transform: scale(1.04); }
.tb-icon-btn:active { transform: scale(.95); }

.tb-av-grad {
  background: linear-gradient(135deg, #34D399, #10B981) !important;
  color: #fff !important;
  width: 38px !important;
  height: 38px !important;
  border-radius: 12px !important;
  font-weight: 700 !important;
  cursor: pointer;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 4px 12px rgba(16,185,129,.30);
  transition: transform .2s;
}
.tb-av-grad:hover { transform: scale(1.04); }
.tb-av-grad:active { transform: scale(.95); }

/* Panel completo (drawer lateral) */
.panel-completo {
  position: fixed; inset: 0;
  z-index: 10000;
  pointer-events: none;
}
.panel-completo[aria-hidden="false"] { pointer-events: auto; }
.panel-completo-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.55);
  opacity: 0;
  transition: opacity .3s;
}
.panel-completo.open .panel-completo-backdrop { opacity: 1; }
.panel-completo-side {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 88%;
  max-width: 360px;
  background: var(--bg1);
  box-shadow: -16px 0 40px rgba(0,0,0,.20);
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(.2,.8,.2,1);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.panel-completo.open .panel-completo-side { transform: translateX(0); }

.panel-completo-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: calc(env(safe-area-inset-top, 0px) + 20px) 18px 14px;
  border-bottom: .5px solid var(--border);
  background: var(--bg1);
  position: sticky;
  top: 0;
  z-index: 2;
}
.panel-completo-head h2 {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -.4px;
  margin: 0;
  color: var(--text1);
}
.panel-completo-x {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--bg2);
  border: .5px solid var(--border);
  color: var(--text2);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.panel-completo-x:hover { color: var(--text1); }

.panel-completo-body {
  flex: 1;
  overflow-y: auto;
  padding: 8px 14px 20px;
}
.panel-section { margin-top: 16px; }
.panel-section-title {
  font-size: 10px;
  letter-spacing: 1.2px;
  color: var(--text3);
  font-weight: 600;
  margin: 0 8px 8px;
  text-transform: uppercase;
}
.panel-link {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 12px 14px;
  background: transparent;
  border: none;
  border-radius: 12px;
  color: var(--text1);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: background .15s;
  text-align: left;
}
.panel-link:hover { background: var(--bg3); }
.panel-link:active { background: var(--bg4); }
.panel-link svg { color: var(--neon); flex-shrink: 0; }
.panel-link-danger { color: var(--red); }
.panel-link-danger svg { color: var(--red); }

/* Badge Conectado */
.conectado-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(16,185,129,.10);
  color: var(--neon);
  padding: 2px 8px;
  border-radius: 8px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .3px;
}
.conectado-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--neon);
  box-shadow: 0 0 6px rgba(16,185,129,.6);
  animation: dotPulse 1.8s infinite;
}
@keyframes dotPulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .4; }
}

/* Input editable estilo iOS */
.ios-row-input-editable {
  cursor: pointer;
  pointer-events: auto;
}
.ios-row-edit-ico {
  color: var(--text3);
  margin-left: 6px;
  flex-shrink: 0;
}
.ios-row-edit:hover .ios-row-edit-ico { color: var(--neon); }

/* Gestor de categorías */
.gestor-cat-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.gestor-cat-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  background: var(--bg3);
  border: .5px solid var(--border);
  border-radius: 12px;
}
.gestor-cat-info {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-width: 0;
}
.gestor-cat-info strong {
  font-size: 13px;
  color: var(--text1);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gestor-cat-info span {
  font-size: 12px;
  color: var(--text2);
  margin-top: 2px;
}
.gestor-cat-del {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: rgba(248,113,113,.10);
  border: .5px solid rgba(248,113,113,.20);
  color: var(--red);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: all .2s;
}
.gestor-cat-del:hover { background: var(--red); color: #fff; }

/* Iconos Ingreso/Gasto en quick actions con colores correctos */
.qa-ico-green {
  background: linear-gradient(135deg, #34D399, #10B981) !important;
  box-shadow: 0 4px 12px rgba(16,185,129,.30);
}
.qa-ico-red {
  background: linear-gradient(135deg, #F87171, #DC2626) !important;
  box-shadow: 0 4px 12px rgba(248,113,113,.30);
}

/* ═══════════════════════════════════════════════════════
   v13.3 — Panel completo desde la IZQUIERDA + Campanita
═══════════════════════════════════════════════════════ */

/* Panel completo desde la izquierda */
.panel-completo-left .panel-completo-side {
  left: 0;
  right: auto;
  transform: translateX(-100%);
  box-shadow: 16px 0 40px rgba(0,0,0,.20);
  transition: transform .35s cubic-bezier(.32,.72,.16,1);
}
.panel-completo-left.open .panel-completo-side {
  transform: translateX(0);
}

/* Backdrop con animación suave */
.panel-completo-backdrop {
  transition: opacity .35s cubic-bezier(.32,.72,.16,1);
}

/* Campanita: estado normal y desactivada */
.tb-bell-off {
  color: var(--red) !important;
  background: rgba(248,113,113,.10) !important;
  border-color: rgba(248,113,113,.20) !important;
}
.tb-bell-off:hover {
  background: rgba(248,113,113,.18) !important;
  color: var(--red) !important;
}
.tb-bell {
  transition: all .25s cubic-bezier(.2,.8,.2,1);
}
.tb-bell:not(.tb-bell-off):hover {
  color: var(--neon) !important;
}

/* Animación suave al abrir/cerrar el panel */
@keyframes panelSlideIn {
  from { transform: translateX(-100%); }
  to { transform: translateX(0); }
}

/* Mejora visual de los iconos del panel (más Apple) */
.panel-link svg {
  width: 20px !important;
  height: 20px !important;
}
.panel-link {
  padding: 13px 14px !important;
  font-size: 15px !important;
  font-weight: 500 !important;
  border-radius: 14px !important;
  margin-bottom: 2px;
}
.panel-link:hover {
  background: var(--bg3) !important;
  transform: translateX(2px);
  transition: transform .2s, background .15s;
}

/* Sección activa del panel (la que el usuario tiene abierta) */
.panel-link.is-active {
  background: var(--gradient-primary) !important;
  color: #fff !important;
  font-weight: 600 !important;
  box-shadow: 0 4px 14px rgba(16,185,129,.25);
}
.panel-link.is-active svg { color: #fff !important; }
.panel-link.is-active:hover {
  background: var(--gradient-primary) !important;
  transform: translateX(0) translateY(-1px) !important;
  box-shadow: 0 8px 20px rgba(16,185,129,.35) !important;
}

/* ═══════════════════════════════════════════════════════
   v13.4 — Topbar auto-hide al scroll
═══════════════════════════════════════════════════════ */
.topbar-ios {
  position: sticky;
  top: 0;
  z-index: 50;
  transition: transform .35s cubic-bezier(.32,.72,.16,1), opacity .25s;
  will-change: transform;
}
.topbar-ios.topbar-hidden {
  transform: translateY(-100%);
  opacity: 0;
  pointer-events: none;
}


/* ═══════════════════════════════════════════════════════
   v13.6 — MÓDULO DEUDAS
═══════════════════════════════════════════════════════ */
.deudas-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
  background: var(--bg2);
  padding: 4px;
  border-radius: 14px;
  border: .5px solid var(--border);
}
.deuda-tab {
  flex: 1;
  background: transparent;
  border: none;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text2);
  cursor: pointer;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  transition: all .2s;
}
.deuda-tab.active {
  background: var(--gradient-primary);
  color: #fff;
  box-shadow: 0 2px 8px rgba(16,185,129,.20);
}
.deuda-tab-count {
  background: rgba(255,255,255,.20);
  color: inherit;
  padding: 1px 8px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 700;
}
.deuda-tab:not(.active) .deuda-tab-count {
  background: var(--bg3);
  color: var(--text3);
}

.deudas-add-row {
  display: flex;
  gap: 8px;
  margin-bottom: 14px;
}
.deudas-add-row > button { flex: 1; }
.deudas-add-row .btn-cancel {
  background: linear-gradient(135deg, #F87171, #DC2626) !important;
  color: #fff !important;
  border: none !important;
  font-weight: 600;
  box-shadow: 0 4px 14px rgba(248,113,113,.25);
}
.deudas-add-row .btn-cancel:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(248,113,113,.35) !important;
}

.deudas-summary {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 16px;
}
.deuda-sum-card {
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 14px;
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.deuda-sum-card.deuda-sum-cobrar { border-left: 3px solid var(--neon); }
.deuda-sum-card.deuda-sum-pagar  { border-left: 3px solid var(--red); }
.deuda-sum-lbl {
  font-size: 11px;
  letter-spacing: .5px;
  color: var(--text2);
  font-weight: 600;
}
.deuda-sum-card strong {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -.3px;
}
.deuda-sum-cobrar strong { color: var(--neon); }
.deuda-sum-pagar strong { color: var(--red); }

.deudas-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.deuda-row {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 14px;
  padding: 12px 14px;
  transition: all .2s;
}
.deuda-row.deuda-cobrar { border-left: 3px solid var(--neon); }
.deuda-row.deuda-pagar  { border-left: 3px solid var(--red); }
.deuda-row.is-done { opacity: .55; }
.deuda-row.is-done .deuda-nombre { text-decoration: line-through; }

.deuda-check {
  width: 28px; height: 28px;
  border-radius: 50%;
  border: 2px solid var(--border2);
  background: transparent;
  cursor: pointer;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: transparent;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
}
.deuda-check:hover { border-color: var(--neon); }
.deuda-row.is-done .deuda-check {
  background: var(--neon);
  border-color: var(--neon);
  color: #fff;
}

.deuda-body {
  flex: 1;
  min-width: 0;
  cursor: pointer;
}
.deuda-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 2px;
}
.deuda-tipo {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .5px;
  color: var(--text3);
  text-transform: uppercase;
}
.deuda-fecha {
  font-size: 11px;
  color: var(--text3);
  font-family: var(--f-mono, ui-monospace);
}
.deuda-nombre {
  font-size: 14px;
  font-weight: 600;
  color: var(--text1);
  display: block;
}
.deuda-desc {
  font-size: 12px;
  color: var(--text2);
  margin: 2px 0 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.deuda-monto {
  font-size: 15px;
  font-weight: 700;
  color: var(--text1);
  letter-spacing: -.2px;
  flex-shrink: 0;
}
.deuda-row.deuda-cobrar .deuda-monto { color: var(--neon); }
.deuda-row.deuda-pagar .deuda-monto  { color: var(--red); }

.deuda-del {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: transparent;
  border: none;
  color: var(--text3);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  opacity: .6;
}
.deuda-del:hover { color: var(--red); opacity: 1; background: rgba(248,113,113,.10); }

/* ═══════════════════════════════════════════════════════
   v13.7 — Fix: panel cerrado NUNCA bloquea la UI
═══════════════════════════════════════════════════════ */
.panel-completo:not(.open) {
  pointer-events: none !important;
}
.panel-completo:not(.open) .panel-completo-backdrop {
  opacity: 0 !important;
  pointer-events: none !important;
}
.panel-completo:not(.open) .panel-completo-side {
  transform: translateX(-100%) !important;
}

/* ═══════════════════════════════════════════════════════
   v13.8 — LOGIN iOS STYLE
═══════════════════════════════════════════════════════ */
#pgLogin {
  background: var(--bg0);
  min-height: 100vh;
  position: relative;
}
.login-ios-wrap {
  max-width: 440px;
  margin: 0 auto;
  padding: max(env(safe-area-inset-top, 0px), 24px) 28px max(env(safe-area-inset-bottom, 0px), 24px);
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.back-btn-ios {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--bg2);
  border: .5px solid var(--border);
  color: var(--text2);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  margin-bottom: 24px;
  transition: all .2s;
}
.back-btn-ios:hover {
  background: var(--bg3);
  color: var(--text1);
}
.login-ios-content {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.login-ios-logo {
  width: 110px; height: 110px;
  border-radius: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 28px;
  box-shadow: 0 16px 50px rgba(16,185,129,.35), 0 0 80px rgba(16,185,129,.15);
  overflow: hidden;
  background: transparent;
}
.login-ios-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.login-ios-title {
  font-size: 28px;
  font-weight: 700;
  text-align: center;
  color: var(--text1);
  margin: 0 0 8px;
  letter-spacing: -.6px;
}
.login-ios-subtitle {
  font-size: 16px;
  color: var(--text2);
  text-align: center;
  margin: 0 0 32px;
}

.login-google-ios {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 18px;
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 18px;
  font-size: 16px;
  font-weight: 600;
  color: var(--text1);
  cursor: pointer;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
  font-family: inherit;
  margin-bottom: 0;
  box-shadow: 0 2px 8px rgba(15,23,42,.04);
}
.login-google-ios:hover {
  border-color: var(--neon);
  transform: translateY(-1px);
  box-shadow: 0 8px 20px rgba(15,23,42,.08);
}
.login-google-ios:active { transform: scale(.98); }

.login-ios-divider {
  text-align: center;
  position: relative;
  margin: 22px 0;
  color: var(--text3);
  font-size: 14px;
}
.login-ios-divider::before,
.login-ios-divider::after {
  content: '';
  position: absolute;
  top: 50%;
  width: calc(50% - 16px);
  height: 1px;
  background: var(--border);
}
.login-ios-divider::before { left: 0; }
.login-ios-divider::after { right: 0; }

.login-ios-field {
  position: relative;
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 18px;
  padding: 0 20px;
  height: 58px;
  transition: all .2s;
}
.login-ios-field:focus-within {
  border-color: var(--neon);
  box-shadow: 0 0 0 3px var(--neon-glow);
}
.login-ios-icon {
  color: var(--text3);
  margin-right: 10px;
  flex-shrink: 0;
}
.login-ios-field input {
  flex: 1;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  box-shadow: none !important;
  font-size: 15px;
  color: var(--text1);
  padding: 0 !important;
  font-family: inherit;
}
.login-ios-field input::placeholder {
  color: var(--text3);
}
.login-ios-eye {
  background: transparent;
  border: none;
  color: var(--text3);
  cursor: pointer;
  padding: 6px;
  display: flex;
  align-items: center;
}
.login-ios-eye:hover { color: var(--text1); }

.login-ios-forgot {
  background: transparent;
  border: none;
  color: var(--neon);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  padding: 0;
  margin: 6px 0 22px;
  text-align: left;
  align-self: flex-start;
}
.login-ios-forgot:hover { text-decoration: underline; }

.login-ios-primary {
  width: 100%;
  padding: 18px;
  background: var(--gradient-primary);
  border: none;
  border-radius: 18px;
  color: #fff;
  font-size: 17px;
  font-weight: 700;
  cursor: pointer;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
  box-shadow: 0 12px 30px rgba(16,185,129,.35), 0 0 60px rgba(16,185,129,.15);
  margin-bottom: 0;
  font-family: inherit;
  letter-spacing: -.2px;
}
.login-ios-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 12px 28px rgba(16,185,129,.40);
}
.login-ios-primary:active { transform: scale(.98); }

.login-ios-footer {
  text-align: center;
  font-size: 14px;
  color: var(--text2);
  margin-top: auto;
  padding-top: 20px;
}
.login-ios-footer button {
  background: transparent;
  border: none;
  color: var(--neon);
  font-weight: 600;
  cursor: pointer;
  font-size: 14px;
}
.login-ios-footer button:hover { text-decoration: underline; }

/* ═══════════════════════════════════════════════════════
   EDITOR DE CATEGORÍAS
═══════════════════════════════════════════════════════ */
.cat-add-row {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
}
.cat-add-row input {
  flex: 1;
  padding: 12px 14px !important;
  border-radius: 12px !important;
}
.cat-add-row .btn-neon {
  width: 50px;
  height: 50px;
  border-radius: 12px !important;
  font-size: 24px;
  font-weight: 800;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
}

.editor-cat-section {
  margin-bottom: 16px;
}
.editor-cat-sect-title {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.2px;
  color: var(--text3);
  margin: 0 4px 8px;
  text-transform: uppercase;
}
.editor-cat-list {
  display: flex;
  flex-direction: column;
}
.editor-cat-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 14px;
  background: var(--bg3);
  border: .5px solid var(--border);
  border-radius: 12px;
  margin-bottom: 6px;
  transition: all .15s;
}
.editor-cat-row-custom { border-left: 3px solid var(--neon); }
.editor-cat-name {
  font-size: 14px;
  font-weight: 500;
  color: var(--text1);
  flex: 1;
}
.editor-cat-del {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: rgba(248,113,113,.10);
  border: .5px solid rgba(248,113,113,.20);
  color: var(--red);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: all .2s;
}
.editor-cat-del:hover { background: var(--red); color: #fff; }

@media (max-width: 480px) {
  .login-ios-wrap { padding: max(env(safe-area-inset-top, 0px), 16px) 20px 20px; }
  .login-ios-title { font-size: 24px; }
}


/* ═══════════════════════════════════════════════════════
   v13.10 — Login limpio (sin barra de navegación móvil)
═══════════════════════════════════════════════════════ */
/* Ocultar mobile-nav y cualquier elemento de la app cuando se está en login */
body:has(#pgLogin:not(.hidden)) .mobile-nav,
body:has(#pgLogin.pg:not(.hidden)) .mobile-nav {
  display: none !important;
}
/* Fallback con JS: clase en body cuando login está activo */
body.is-login .mobile-nav,
body.is-login .topbar,
body.is-login .sidebar {
  display: none !important;
}

/* Centrar login un poco más abajo desde el logo */
.login-ios-wrap {
  padding-top: max(env(safe-area-inset-top, 0px), 60px) !important;
  justify-content: flex-start !important;
}
.login-ios-content {
  margin-top: 8vh;
}
@media (max-width: 720px) {
  .login-ios-content { margin-top: 4vh; }
}

/* ═══════════════════════════════════════════════════════
   v13.13 — Botón Actualizar movimientos (en sec-moves)
═══════════════════════════════════════════════════════ */
.btn-actualizar-mov {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 16px;
  background: var(--bg2);
  border: .5px solid var(--border);
  border-radius: 12px;
  color: var(--neon);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: all .2s cubic-bezier(.2,.8,.2,1);
  white-space: nowrap;
}
.btn-actualizar-mov:hover {
  background: var(--gradient-primary);
  color: #fff;
  border-color: transparent;
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(16,185,129,.25);
}
.btn-actualizar-mov:active { transform: scale(.97); }
.btn-actualizar-mov svg { flex-shrink: 0; }
.btn-actualizar-mov.spinning svg { animation: spinRot .8s linear infinite; }
@keyframes spinRot { to { transform: rotate(360deg); } }

/* Login un poco más abajo y bien centrado */
.login-ios-content { margin-top: 10vh; }
@media (max-width: 720px) { .login-ios-content { margin-top: 7vh; } }

/* v13.16 — Botón re-escanear */
.btn-reescanear { color: var(--text2); margin-left: 6px; }
.btn-reescanear:hover { background: var(--bg3); color: var(--neon); border-color: var(--neon); box-shadow: none; }

/* v13.19 — Ocultar Resumen del panel (disponible para futuro) */
.sb-btn[data-s="resumen"] { display: none !important; }
.panel-link[data-sec="resumen"] { display: none !important; }

/* Login un poco más abajo */
.login-ios-content { margin-top: 13vh; }
@media (max-width: 720px) { .login-ios-content { margin-top: 9vh; } }
