*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f172a;--card:#1e293b;--card-inner:#0f172a;--primary:#00e676;--text:#f8fafc;--text-secondary:#cbd5e1;--border:#334155;--danger:#f87171;--success:#00e676;--warning:#fbbf24;--shadow-glow:0 0 25px #00e6764d;--radio:12px;--transition:.3s ease}body{background-color:var(--bg);color:var(--text);min-height:100vh;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit}a{color:inherit;text-decoration:none}.navbar{background-color:var(--card);border-bottom:1px solid var(--border);z-index:100;align-items:center;gap:24px;height:64px;padding:0 32px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #0000004d}.navbar-brand a{color:var(--primary);letter-spacing:.5px;font-size:1.3rem;font-weight:700}.navbar-links{flex:1;gap:4px;list-style:none;display:flex}.navbar-links a{color:var(--text-secondary);transition:var(--transition);white-space:nowrap;border-radius:8px;padding:8px 14px;font-size:.9rem}.navbar-links a:hover,.navbar-links a.active{color:var(--primary);background-color:#00e6761a}.navbar-user{align-items:center;gap:12px;margin-left:auto;display:flex}.navbar-avatar{border:2px solid var(--primary);border-radius:50%;width:32px;height:32px}.navbar-nombre{color:var(--text-secondary);white-space:nowrap;font-size:.9rem}.btn-logout{border:2px solid var(--border);color:var(--text-secondary);transition:var(--transition);background:0 0;border-radius:8px;padding:6px 14px;font-size:.85rem;font-weight:600}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.navbar-hamburger{color:var(--text);background:0 0;border:none;margin-left:auto;font-size:1.5rem;display:none}.navbar-mobile{display:none}@media (width<=768px){.navbar{flex-wrap:wrap;height:auto;padding:12px 20px}.navbar-links,.navbar-user{display:none}.navbar-hamburger{display:block}.navbar-mobile{border-top:1px solid var(--border);flex-direction:column;gap:4px;width:100%;margin-top:8px;padding:8px 0;display:flex}.navbar-mobile a{color:var(--text-secondary);transition:var(--transition);border-radius:8px;padding:10px 14px}.navbar-mobile a:hover,.navbar-mobile a.active{color:var(--primary);background-color:#00e6761a}.navbar-mobile .btn-logout{text-align:left;margin-top:4px}}.auth-container{background-color:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);width:100%;max-width:420px;padding:40px;position:relative;overflow:hidden;box-shadow:0 8px 32px #0006}.auth-card:before{content:"";background:linear-gradient(90deg, var(--primary), #69f0ae);height:4px;position:absolute;top:0;left:0;right:0}.auth-header{text-align:center;margin-bottom:32px}.auth-header h1{color:var(--primary);margin-bottom:8px;font-size:2rem}.auth-header p{color:var(--text-secondary);font-size:.95rem}.auth-form{flex-direction:column;gap:20px;display:flex}.form-group input{background:var(--card-inner);border:2px solid var(--border);color:var(--text);transition:var(--transition);border-radius:8px;width:100%;padding:12px 16px;font-size:.95rem}.form-group input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #00e6761a}.form-group input::placeholder{color:var(--text-secondary)}.auth-error{border:1px solid var(--danger);color:var(--danger);background:#f871711a;border-radius:8px;padding:12px 16px;font-size:.9rem}.btn-primary{background:var(--primary);color:#0f172a;transition:var(--transition);border:none;border-radius:8px;width:100%;margin-top:4px;padding:13px;font-size:1rem;font-weight:700}.btn-primary:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 0 16px #00e67659}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.auth-divider{color:var(--text-secondary);align-items:center;gap:16px;margin:24px 0;font-size:.85rem;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.auth-google{justify-content:center;margin-bottom:24px;display:flex}.auth-footer{text-align:center;color:var(--text-secondary);font-size:.9rem}.auth-footer a{color:var(--primary);transition:var(--transition);font-weight:600}.auth-footer a:hover{text-decoration:underline}@media (width<=480px){.auth-card{padding:28px 20px}}.dashboard{flex-direction:column;gap:28px;max-width:1100px;margin:0 auto;padding:32px 20px;display:flex}.dashboard-loading,.dashboard-error{height:60vh;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.btn-retry{background:var(--primary);color:#0f172a;cursor:pointer;border:none;border-radius:8px;padding:10px 24px;font-weight:700}.dashboard-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.dashboard-header h1{color:var(--text);font-size:1.8rem}.dashboard-subtitle{color:var(--text-secondary);margin-top:4px}.periodo-selector{gap:10px;display:flex}.periodo-selector select{background:var(--card);border:2px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 12px;font-size:.9rem}.dashboard-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.metric-card{background:var(--card);border-radius:var(--radio);transition:var(--transition);border:2px solid #0000;flex-direction:column;gap:12px;padding:24px;display:flex;position:relative;overflow:hidden}.metric-card:before{content:"";height:4px;position:absolute;top:0;left:0;right:0}.metric-card.ingresos:before{background:#00e676}.metric-card.gastos:before{background:#f87171}.metric-card.balance.positivo:before{background:#00e676}.metric-card.balance.negativo:before{background:#f87171}.metric-card.ahorro:before{background:#fbbf24}.metric-card:hover{border-color:var(--primary);box-shadow:var(--shadow-glow);transform:translateY(-4px)}.metric-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;font-size:.85rem}.metric-valor{color:var(--text);font-size:1.8rem;font-weight:700}.metric-card.gastos .metric-valor{color:var(--danger)}.metric-card.balance.positivo .metric-valor{color:var(--success)}.metric-card.balance.negativo .metric-valor{color:var(--danger)}.metric-card.ahorro .metric-valor{color:var(--warning)}.dashboard-alertas h2{color:var(--warning);margin-bottom:16px;font-size:1.1rem}.alertas-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.alerta-card{background:var(--card);border-radius:var(--radio);border:2px solid;flex-direction:column;gap:6px;padding:16px;display:flex}.alerta-card.advertencia{border-color:var(--warning)}.alerta-card.superado{border-color:var(--danger)}.alerta-categoria{font-weight:700}.alerta-porcentaje{color:var(--warning);font-size:1.4rem;font-weight:700}.alerta-card.superado .alerta-porcentaje{color:var(--danger)}.alerta-detalle{color:var(--text-secondary);font-size:.82rem}.alerta-barra{background:var(--border);border-radius:3px;height:6px;margin-top:4px;overflow:hidden}.alerta-progreso{background:var(--warning);border-radius:3px;height:100%;transition:width .5s}.alerta-card.superado .alerta-progreso{background:var(--danger)}.dashboard-graficos{grid-template-columns:1fr 1fr;gap:20px;display:grid}.grafico-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);padding:24px}.grafico-card h2{color:var(--text-secondary);margin-bottom:20px;font-size:1rem}.dashboard-extra{grid-template-columns:1fr 1fr;gap:16px;display:grid}.extra-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);flex-direction:column;gap:8px;padding:24px;display:flex}.extra-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;font-size:.85rem}.extra-valor{color:var(--primary);font-size:1.5rem;font-weight:700}.extra-sub{color:var(--text-secondary);font-size:.9rem}@media (width<=768px){.dashboard-graficos,.dashboard-extra{grid-template-columns:1fr}.dashboard-header{flex-direction:column;align-items:flex-start}}.transacciones-page{flex-direction:column;gap:24px;max-width:1100px;margin:0 auto;padding:32px 20px;display:flex}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.page-header h1{color:var(--text);font-size:1.8rem}.page-subtitle{color:var(--text-secondary);margin-top:4px;font-size:.95rem}.btn-nuevo{background:var(--primary);color:#0f172a;cursor:pointer;transition:var(--transition);border:none;border-radius:8px;padding:10px 20px;font-size:.95rem;font-weight:700}.btn-nuevo:hover{filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 0 16px #00e67659}.filtros-bar{flex-wrap:wrap;gap:12px;display:flex}.filtros-bar select{background:var(--card);border:2px solid var(--border);color:var(--text);cursor:pointer;transition:var(--transition);border-radius:8px;padding:8px 14px;font-size:.9rem}.filtros-bar select:focus{border-color:var(--primary);outline:none}.form-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);border-top:4px solid var(--primary);padding:28px}.form-card h2{color:var(--primary);margin-bottom:20px;font-size:1.1rem}.transaccion-form{flex-direction:column;gap:16px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-group{flex-direction:column;gap:6px;display:flex}.form-group label{color:var(--text-secondary);font-size:.85rem;font-weight:600}.form-group input,.form-group select{background:var(--card-inner);border:2px solid var(--border);color:var(--text);transition:var(--transition);border-radius:8px;padding:10px 14px;font-size:.9rem}.form-group input:focus,.form-group select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #00e6761a}.form-check{color:var(--text-secondary);align-items:center;gap:10px;font-size:.9rem;display:flex}.form-check input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.form-error{border:1px solid var(--danger);color:var(--danger);background:#f871711a;border-radius:8px;padding:10px 14px;font-size:.875rem}.btn-guardar{background:var(--primary);color:#0f172a;cursor:pointer;transition:var(--transition);border:none;border-radius:8px;align-self:flex-start;min-width:160px;padding:12px;font-size:.95rem;font-weight:700}.btn-guardar:hover{filter:brightness(1.1);transform:translateY(-1px)}.tabla-container{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);overflow:hidden}.tabla{border-collapse:collapse;width:100%;font-size:.9rem}.tabla thead{background:var(--card-inner)}.tabla th{text-align:left;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--border);padding:12px 16px;font-size:.8rem}.tabla td{border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle;padding:12px 16px}.tabla tbody tr:hover{background:#00e6760a}.tabla tbody tr:last-child td{border-bottom:none}.badge{border-radius:20px;padding:4px 10px;font-size:.78rem;font-weight:600;display:inline-block}.badge-ingreso{color:var(--success);background:#00e67626}.badge-gasto{color:var(--danger);background:#f8717126}.btn-eliminar{border:1px solid var(--danger);color:var(--danger);cursor:pointer;transition:var(--transition);background:0 0;border-radius:6px;padding:5px 12px;font-size:.82rem}.btn-eliminar:hover{background:var(--danger);color:#fff}.tabla-loading,.tabla-vacia{text-align:center;color:var(--text-secondary);background:var(--card);border-radius:var(--radio);border:1px solid var(--border);padding:48px}@media (width<=768px){.form-row{grid-template-columns:1fr}.tabla th:nth-child(4),.tabla td:nth-child(4){display:none}}.presupuesto-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.presupuesto-card{background:var(--card);border-radius:var(--radio);border:2px solid var(--border);transition:var(--transition);flex-direction:column;gap:12px;padding:20px;display:flex;position:relative;overflow:hidden}.presupuesto-card:before{content:"";height:4px;position:absolute;top:0;left:0;right:0}.presupuesto-card.normal:before{background:var(--primary)}.presupuesto-card.advertencia:before{background:var(--warning)}.presupuesto-card.superado:before{background:var(--danger)}.presupuesto-card.normal{border-color:var(--border)}.presupuesto-card.advertencia{border-color:var(--warning)}.presupuesto-card.superado{border-color:var(--danger)}.presupuesto-card:hover{box-shadow:var(--shadow-glow);transform:translateY(-4px)}.presupuesto-header{justify-content:space-between;align-items:center;display:flex}.presupuesto-categoria{color:var(--text);font-size:1rem;font-weight:700}.presupuesto-barra-container{background:var(--border);border-radius:4px;height:8px;overflow:hidden}.presupuesto-barra{background:var(--primary);border-radius:4px;height:100%;transition:width .5s}.presupuesto-card.advertencia .presupuesto-barra{background:var(--warning)}.presupuesto-card.superado .presupuesto-barra{background:var(--danger)}.presupuesto-info{justify-content:space-between;align-items:center;display:flex}.presupuesto-porcentaje{color:var(--primary);font-size:1.5rem;font-weight:700}.presupuesto-card.advertencia .presupuesto-porcentaje{color:var(--warning)}.presupuesto-card.superado .presupuesto-porcentaje{color:var(--danger)}.presupuesto-montos{color:var(--text-secondary);font-size:.85rem}.presupuesto-alerta{text-align:center;border-radius:6px;padding:6px 12px;font-size:.85rem;font-weight:600}.presupuesto-card.advertencia .presupuesto-alerta{color:var(--warning);background:#fbbf241a}.presupuesto-card.superado .presupuesto-alerta{color:var(--danger);background:#f871711a}.presupuesto-disponible{color:var(--text-secondary);border-top:1px solid var(--border);padding-top:8px;font-size:.85rem}.resumen-anual{flex-direction:column;gap:24px;max-width:1100px;margin:0 auto;padding:32px 20px;display:flex}.resumen-loading,.resumen-error{height:60vh;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.loading-spinner{border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}.resumen-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.resumen-header h1{color:var(--text);font-size:1.8rem}.resumen-subtitle{color:var(--text-secondary);margin-top:4px}.anio-selector{background:var(--card);border:2px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 16px;font-size:1rem}.resumen-totales{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.total-card{background:var(--card);border-radius:var(--radio);transition:var(--transition);border:2px solid #0000;flex-direction:column;gap:12px;padding:24px;display:flex;position:relative;overflow:hidden}.total-card:before{content:"";height:4px;position:absolute;top:0;left:0;right:0}.total-card.ingresos:before{background:var(--success)}.total-card.gastos:before{background:var(--danger)}.total-card.balance.positivo:before{background:var(--success)}.total-card.balance.negativo:before{background:var(--danger)}.total-card.ahorro:before{background:var(--warning)}.total-card:hover{border-color:var(--primary);box-shadow:var(--shadow-glow);transform:translateY(-4px)}.total-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;font-size:.85rem}.total-valor{color:var(--text);font-size:1.6rem;font-weight:700}.total-card.ingresos .total-valor{color:var(--success)}.total-card.gastos .total-valor{color:var(--danger)}.total-card.balance.positivo .total-valor{color:var(--success)}.total-card.balance.negativo .total-valor{color:var(--danger)}.total-card.ahorro .total-valor{color:var(--warning)}.resumen-destacados{grid-template-columns:1fr 1fr;gap:16px;display:grid}.destacado-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);flex-direction:column;gap:8px;padding:20px;display:flex}.destacado-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;font-size:.85rem}.destacado-mes{color:var(--text);font-size:1.4rem;font-weight:700}.destacado-monto{color:var(--text-secondary);font-size:.9rem}.resumen-grafico-card{background:var(--card);border-radius:var(--radio);border:1px solid var(--border);padding:24px}.resumen-grafico-card h2{color:var(--text-secondary);margin-bottom:20px;font-size:1rem}.resumen-bottom{grid-template-columns:1fr 1fr;gap:20px;display:grid}.categorias-tabla{flex-direction:column;gap:10px;max-height:280px;display:flex;overflow-y:auto}.categoria-fila{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 0;font-size:.9rem;display:flex}.categoria-nombre{color:var(--text);flex:1}.categoria-porcentaje{color:var(--text-secondary);text-align:center;width:50px}.categoria-monto{color:var(--danger);text-align:right;width:100px;font-weight:600}.meses-tabla-container{overflow-x:auto}.meses-tabla{border-collapse:collapse;width:100%;font-size:.9rem}.meses-tabla th{text-align:left;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--border);background:var(--card-inner);padding:10px 14px;font-size:.8rem}.meses-tabla td{border-bottom:1px solid var(--border);color:var(--text);padding:10px 14px}.meses-tabla tbody tr:hover{background:#00e6760a}.monto-positivo{color:var(--success);font-weight:600}.monto-negativo{color:var(--danger);font-weight:600}@media (width<=768px){.resumen-bottom,.resumen-destacados{grid-template-columns:1fr}}
