:root {
    --bg: #f3f7fb;
    --panel: #ffffff;
    --border: #e6ebf2;
    --text: #333333;
    --muted: #6c788f;
    --primary: #007BFF;
    --primary-soft: #eaf4ff;
    --danger: #ff6b6b;
    --success: #17b26a;
    --accent: #2f9cff;
    --shadow: 0 12px 30px rgba(18, 38, 63, 0.08);
    font-family: 'Inter', sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; }
a { text-decoration: none; }
.app-shell { display: flex; min-height: 100vh; }
.sidebar { width: 292px; background: linear-gradient(180deg, #ffffff 0%, #f6fbff 100%); color: var(--text); padding: 28px 20px; display: flex; flex-direction: column; border-right:1px solid var(--border); }
.brand-block { display: flex; gap: 14px; align-items: center; margin-bottom: 28px; }
.brand-icon { width: 52px; height: 52px; border-radius: 16px; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #335dff, #6f5cff); color: #fff; font-weight: 700; font-size: 18px; box-shadow: var(--shadow); }
.brand-icon.large { width: 68px; height: 68px; font-size: 24px; }
.brand-block h1 { margin: 0; font-size: 20px; }
.brand-block p { margin: 4px 0 0; color: #5f7389; font-size: 13px; }
.sidebar-nav { display: flex; flex-direction: column; gap: 8px; }
.nav-item { color: #506072; padding: 11px 14px; border-radius: 14px; font-weight: 600; }
.nav-item:hover, .nav-item.active { background: var(--primary-soft); color: var(--primary); }
.sidebar-footer { margin-top: auto; }
.logout-btn { display: block; text-align: center; background: rgba(255,255,255,.08); color: #fff; padding: 12px; border-radius: 14px; }
.main-panel { flex: 1; padding: 24px; }
.topbar { background: var(--panel); border: 1px solid var(--border); border-radius: 22px; padding: 18px 24px; display: flex; justify-content: space-between; align-items: center; box-shadow: var(--shadow); }
.topbar h2 { margin: 0; font-size: 24px; }
.topbar span { color: var(--muted); font-size: 14px; }
.topbar-user { display: flex; align-items: center; gap: 12px; }
.avatar { width: 44px; height: 44px; border-radius: 14px; background: var(--primary-soft); color: var(--primary); display: flex; align-items: center; justify-content: center; font-weight: 700; }
.topbar-user small { display: block; color: var(--muted); }
.content-area { margin-top: 24px; }
.cards-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.summary-card { background: var(--panel); border: 1px solid var(--border); border-radius: 22px; padding: 22px; box-shadow: var(--shadow); }
.summary-card span { display:block; color: var(--muted); font-size: 14px; margin-bottom: 10px; }
.summary-card strong { display:block; font-size: 28px; margin-bottom: 8px; }
.summary-card small { color: var(--muted); }
.summary-card.danger strong { color: var(--danger); }
.summary-card.accent strong { color: var(--accent); }
.dashboard-grid { display: grid; grid-template-columns: 1.7fr 1fr; gap: 18px; margin-top: 24px; }
.panel-card { background: var(--panel); border: 1px solid var(--border); border-radius: 22px; padding: 22px; box-shadow: var(--shadow); }
.panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 18px; }
.panel-header h3 { margin: 0; font-size: 20px; }
.panel-header span { color: var(--muted); font-size: 14px; }
.accounts-list, .quick-stats { display: flex; flex-direction: column; gap: 14px; }
.account-row, .quick-stat { display:flex; justify-content:space-between; align-items:center; padding: 14px 16px; background: #f8fafc; border-radius: 16px; }
.account-row small, .quick-stat span { color: var(--muted); display:block; margin-top: 4px; }
.amount, .quick-stat strong { font-weight: 700; }
.mt-24 { margin-top: 24px; }
.table-wrapper { overflow-x: auto; }
.table-clean { width:100%; border-collapse: collapse; }
.table-clean th, .table-clean td { padding: 14px 12px; border-bottom: 1px solid var(--border); text-align:left; }
.table-clean th { color: var(--muted); font-size: 13px; font-weight: 600; }
.login-body { min-height: 100vh; display:flex; align-items:center; justify-content:center; background: linear-gradient(135deg, #0f172a, #172554); }
.login-shell { width:min(1100px, 92vw); display:grid; grid-template-columns: 1.1fr .9fr; background: rgba(255,255,255,.08); border-radius: 28px; overflow:hidden; box-shadow: 0 24px 50px rgba(0,0,0,.24); }
.login-panel { padding: 48px; }
.info-panel { color:#fff; background: linear-gradient(135deg, rgba(51,93,255,.92), rgba(111,92,255,.92)); }
.info-panel h1 { margin: 18px 0 12px; font-size: 38px; }
.info-panel p { color: rgba(255,255,255,.9); line-height: 1.6; }
.info-panel ul { margin-top: 24px; padding-left: 20px; line-height: 1.9; }
.form-panel { background: white; }
.form-panel h2 { margin: 0 0 8px; font-size: 30px; }
.form-panel p { color: var(--muted); margin-bottom: 24px; }
.form-group { margin-bottom: 18px; }
.form-group label { display:block; margin-bottom: 8px; font-weight: 600; }
.form-control { width:100%; border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; font-size: 15px; }
.form-control:focus { outline:none; border-color: var(--primary); box-shadow: 0 0 0 4px rgba(51,93,255,.12); }
.btn-primary { display:inline-flex; align-items:center; justify-content:center; width:auto; border:none; background: linear-gradient(135deg, #335dff, #6f5cff); color:#fff; padding: 14px 18px; border-radius: 14px; font-size: 15px; font-weight: 700; cursor:pointer; box-shadow: var(--shadow); }
.form-panel .btn-primary { width:100%; display:flex; }
.validation, .field-validation { color:#d92d20; font-size: 14px; margin-bottom: 12px; }
@media (max-width: 1100px) { .cards-grid { grid-template-columns: repeat(2, 1fr); } .dashboard-grid { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .login-shell { grid-template-columns: 1fr; } .sidebar { display:none; } .main-panel { padding:16px; } .cards-grid { grid-template-columns: 1fr; } .topbar { flex-direction: column; gap: 16px; align-items: flex-start; } }

.success-message{background:#ecfdf3;color:#067647;padding:12px 14px;border-radius:12px;margin-bottom:16px;border:1px solid #abefc6;}
.login-links{margin-top:16px;display:flex;justify-content:center;}
.login-links a{color:#4f46e5;text-decoration:none;font-weight:600;}
.two-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
@media(max-width:760px){.two-cols{grid-template-columns:1fr;}}


.nav-item.disabled{opacity:.55;cursor:not-allowed;}
.panel-header-wrap{gap:16px;flex-wrap:wrap;}
.btn-inline,.btn-secondary-inline,.table-link{display:inline-flex;align-items:center;justify-content:center;border-radius:14px;padding:12px 16px;font-weight:700;font-size:14px;}
.btn-inline{background:linear-gradient(135deg,#335dff,#6f5cff);color:#fff;box-shadow:var(--shadow);}
.btn-secondary-inline{background:#f8fafc;color:var(--text);border:1px solid var(--border);}
.table-link{padding:8px 12px;background:#eef2ff;color:#335dff;}
.text-right{text-align:right;}
.error-message{background:#fef3f2;color:#b42318;padding:12px 14px;border-radius:12px;margin-bottom:16px;border:1px solid #fecdca;}
.empty-state{padding:18px;color:var(--muted);text-align:center;}
.status-badge{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700;background:#eef2ff;color:#335dff;}
.status-badge.active{background:#ecfdf3;color:#067647;}
.status-badge.inactive{background:#fef3f2;color:#b42318;}
.status-badge.info{background:#eff6ff;color:#1d4ed8;}
.form-card-narrow{max-width:920px;}
.form-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:10px;}
.filters-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:16px;align-items:end;margin:18px 0 22px;}
.filters-grid.compact-filters{grid-template-columns:minmax(260px,340px) auto;}
.filter-actions{display:flex;gap:12px;align-items:end;}
.checkbox-wrap{display:flex;align-items:center;}
.checkbox-inline{display:flex;gap:10px;align-items:center;font-weight:600;margin-top:34px;}
.cards-grid-three{grid-template-columns:repeat(3,1fr);}
textarea.form-control{resize:vertical;min-height:110px;}
@media (max-width: 1200px){.filters-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.filter-actions{grid-column:1/-1;}}
@media (max-width: 760px){.filters-grid,.filters-grid.compact-filters{grid-template-columns:1fr;}.form-actions{flex-direction:column-reverse;}.cards-grid-three{grid-template-columns:1fr;}}

.charts-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;}
.chart-shell{position:relative;min-height:320px;}
.doughnut-shell{min-height:320px;}
.bottom-grid{grid-template-columns:1.5fr 1fr;}
.goals-list{display:flex;flex-direction:column;gap:14px;}
.goal-item{padding:14px 16px;background:#f8fafc;border-radius:16px;}
.goal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:12px;}
.progress-line{width:100%;height:10px;background:#e9eef6;border-radius:999px;overflow:hidden;margin-top:10px;}
.progress-line>div{height:100%;background:linear-gradient(135deg,#335dff,#6f5cff);border-radius:999px;}
.quick-stat-column{display:block;}
.quick-stat-column small,.goal-item small{display:block;color:var(--muted);margin-top:8px;}
@media (max-width: 1100px){.charts-grid,.bottom-grid{grid-template-columns:1fr;}}

.row-actions{display:flex;justify-content:flex-end;gap:10px;align-items:center;flex-wrap:wrap;}
.inline-form{display:inline;}
.btn-danger-inline{display:inline-flex;align-items:center;justify-content:center;border-radius:14px;padding:8px 12px;font-weight:700;font-size:14px;border:1px solid #fecdca;background:#fef3f2;color:#b42318;cursor:pointer;}
.info-banner{background:#eff6ff;color:#1d4ed8;padding:14px 16px;border-radius:14px;border:1px solid #bfdbfe;margin-bottom:16px;}
.text-muted{color:var(--muted);}
.compact-summary-grid{margin-bottom:18px;}


.alerts-list{display:flex;flex-direction:column;gap:16px;}
.alert-card{border:1px solid var(--border);border-radius:20px;padding:18px;background:#fff;box-shadow:var(--shadow);}
.alert-card.unread{border-left:5px solid #335dff;background:#f8fbff;}
.alert-card.read{opacity:.92;}
.alert-card-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:10px;}
.alert-card-topline{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.alert-card h4{margin:0 0 6px;font-size:18px;}
.alert-card small{color:var(--muted);}
.alert-card p{margin:0;color:var(--text);line-height:1.55;}
.status-badge.warning{background:#fffaeb;color:#b54708;}
.status-badge.danger{background:#fef3f2;color:#b42318;}
button[disabled], .btn-inline[disabled]{opacity:.55;cursor:not-allowed;}

.quick-stat-link{color:inherit;text-decoration:none;}
.quick-stat-link small{display:block;color:var(--muted);margin-top:6px;}
.quick-stat-link:hover{background:#eef2ff;}


.cards-grid-four{grid-template-columns:repeat(4,1fr);}
.summary-card.success-tone strong{color:var(--success);}
.filters-grid-pro{grid-template-columns:repeat(6,minmax(0,1fr)) auto;}
.form-group-search{grid-column:span 2;}
.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 16px;flex-wrap:wrap;}
.table-toolbar-chip{display:inline-flex;align-items:center;padding:8px 12px;border-radius:999px;background:#eef2ff;color:#335dff;font-weight:700;font-size:13px;}
.table-toolbar-chip.subtle{background:#f8fafc;color:var(--muted);border:1px solid var(--border);}
.table-movimientos-pro td{vertical-align:middle;}
.table-primary{font-weight:700;}
.amount-positive{color:var(--success);}
.amount-negative{color:var(--danger);}
.amount-neutral{color:var(--text);}
@media (max-width: 1320px){.filters-grid-pro{grid-template-columns:repeat(3,minmax(0,1fr));}.form-group-search{grid-column:span 2;}}
@media (max-width: 900px){.cards-grid-four{grid-template-columns:repeat(2,1fr);} .filters-grid-pro{grid-template-columns:repeat(2,minmax(0,1fr));}.form-group-search{grid-column:span 2;}}
@media (max-width: 760px){.cards-grid-four,.filters-grid-pro{grid-template-columns:1fr;}.form-group-search{grid-column:span 1;}}

.page-card,.surface-card{background:var(--panel);border:1px solid var(--border);border-radius:22px;padding:22px;box-shadow:var(--shadow);}
.page-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:18px;}
.page-card-header > div:last-child{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.page-card-header h3,.surface-card h3{margin:0 0 6px;}
.page-card-header p{margin:0;color:var(--muted);}
.table-modern{width:100%;border-collapse:collapse;}
.table-modern th,.table-modern td{padding:12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top;}
.table-modern th{font-size:13px;color:var(--muted);}
.filters-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.input{width:100%;border:1px solid var(--border);border-radius:14px;padding:12px 14px;font-size:14px;background:#fff;}
.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px rgba(51,93,255,.12);}
.btn-secondary{display:inline-flex;align-items:center;justify-content:center;border-radius:14px;padding:12px 16px;font-weight:700;font-size:14px;background:#f8fafc;color:var(--text);border:1px solid var(--border);}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.form-grid label{display:block;margin-bottom:8px;font-weight:600;}
.checkbox-row{display:flex;align-items:center;gap:10px;padding-top:30px;}
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.stat-card{background:#f8fafc;border:1px solid var(--border);border-radius:18px;padding:18px;}
.stat-card span{display:block;color:var(--muted);font-size:14px;margin-bottom:10px;}
.stat-card strong{font-size:26px;}
.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;}
@media(max-width:900px){.form-grid,.stats-grid,.grid-two{grid-template-columns:1fr;}}

.topbar-shortcuts{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-right:12px;}
.topbar-shortcuts .btn-secondary{padding:10px 14px;font-size:13px;}
@media (max-width: 900px){.topbar-shortcuts{margin-right:0;}}

.section-spaced{margin-bottom:28px;}
.section-spaced-small{margin-bottom:22px;}
.content-area > .panel-card,
.content-area > .page-card,
.content-area > .surface-card,
.content-area > .cards-grid,
.content-area > .dashboard-grid,
.content-area > .charts-grid{margin-bottom:22px;}
.content-area > .cards-grid:last-child,
.content-area > .dashboard-grid:last-child,
.content-area > .charts-grid:last-child,
.content-area > .panel-card:last-child,
.content-area > .page-card:last-child,
.content-area > .surface-card:last-child{margin-bottom:0;}

.grupo-nav-card{position:sticky;top:12px;z-index:5;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);}
.grupo-nav-header{margin-bottom:0;}
.grupo-tabs-wrap{justify-content:flex-start;}

.table-modern .status-badge,.table-clean .status-badge{text-transform:none;}

@media (max-width: 900px){
  .grupo-nav-card{position:static;}
}

.section-gap-lg{margin-bottom:28px !important;}
.budget-box{margin-top:16px;padding:18px;border:1px dashed var(--border);border-radius:18px;background:#fafcff;}
.budget-config-grid{margin-top:10px;}
.mt-8{margin-top:8px;}
.budget-chip-grid{display:flex;flex-direction:column;gap:4px;}


.brand-logo-img{width:56px;height:56px;border-radius:18px;box-shadow:var(--shadow);background:#fff;padding:6px;}
.vant-brand-block{padding:10px 8px 18px;border-bottom:1px solid var(--border);margin-bottom:20px;}
.nav-group-label{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#6b7b8d;margin:14px 10px 6px;}
.grouped-nav{gap:4px;}
.sidebar-footer{margin-top:auto;padding-top:18px;border-top:1px solid var(--border);}
.logout-btn,.top-logout-btn{color:var(--text);}
.top-logout-btn{padding:10px 14px;}
.form-card-full{max-width:none;width:100%;}
.categories-filters-grid{grid-template-columns:minmax(260px,340px) auto;align-items:end;}
.categoria-cell{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.alert-up-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;background:#fef3f2;color:#d92d20;font-weight:800;margin-left:8px;}
.inline-categorizer{position:relative;}
.inline-categorizer summary{list-style:none;cursor:pointer;}
.inline-categorizer summary::-webkit-details-marker{display:none;}
.inline-categorizer-form{position:absolute;right:0;top:36px;z-index:10;background:#fff;border:1px solid var(--border);border-radius:16px;padding:12px;min-width:240px;box-shadow:var(--shadow);display:grid;gap:10px;}
.form-control-sm{padding:10px 12px;font-size:13px;}
.compact-check{margin-top:0;font-size:13px;}
.btn-sm{padding:10px 12px;font-size:13px;}
.trend-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;font-weight:700;font-size:12px;background:#f3f4f6;color:#4b5563;}
.trend-pill.danger{background:#fef3f2;color:#b42318;}
.trend-pill.success{background:#ecfdf3;color:#067647;}
.trend-pill.neutral{background:#eff6ff;color:#1d4ed8;}
.login-brand-logo{width:220px;max-width:100%;margin-bottom:12px;}
.login-brand-icon{width:52px;height:52px;border-radius:16px;box-shadow:var(--shadow);}
.login-form-brand{display:flex;align-items:center;gap:12px;margin-bottom:18px;}
.login-form-brand span{display:block;color:#5f7389;font-size:13px;margin-top:4px;}
.vant-info-panel{background:linear-gradient(180deg,#ffffff 0%,#eef7ff 100%);color:var(--text);}
.vant-form-panel{background:#fff;}
.vant-login-body{background:linear-gradient(180deg,#f6fbff 0%,#eef4fb 100%);}
.grupo-nav-minimal .row-actions{justify-content:flex-start;}
.grupo-nav-minimal{padding:18px 20px;}
@media (max-width: 900px){.sidebar{display:none;} .categories-filters-grid{grid-template-columns:1fr;}}

.accordion-nav{display:flex;flex-direction:column;gap:10px;}
.nav-group{border:1px solid var(--border);border-radius:18px;background:#fff;overflow:hidden;}
.nav-group-summary{list-style:none;cursor:pointer;padding:14px 16px;font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#6b7b8d;display:flex;align-items:center;justify-content:space-between;}
.nav-group-summary::-webkit-details-marker{display:none;}
.nav-group-summary::after{content:"+";font-size:18px;color:#8aa6c8;}
.nav-group[open] .nav-group-summary::after{content:"−";}
.nav-group-links{padding:0 10px 10px;display:flex;flex-direction:column;gap:6px;}
.dashboard-switch{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px;}
.dashboard-switch .btn-pill{display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:999px;border:1px solid var(--border);background:#fff;color:var(--text);font-weight:700;}
.dashboard-switch .btn-pill.active{background:linear-gradient(135deg,#335dff,#6f5cff);color:#fff;border-color:transparent;box-shadow:var(--shadow);}
.trend-up{color:#d92d20;}
.trend-down{color:#067647;}
.trend-flat{color:#475467;}
