:root{--font: "Plus Jakarta Sans", "Segoe UI", Arial, sans-serif;--bg: #faf6f0;--surface: #ffffff;--surface-alt: #fdf1dd;--border: #ecdfcc;--text: #241a0f;--text-muted: #7a6752;--accent: #d97706;--accent-dark: #b45309;--accent-light: #fdf1dd;--accent2: #ea580c;--accent2-light: #fee4d4;--ingreso: #16a34a;--gasto: #e11d48;--balance: #c2410c;--sombra-marca: 217, 119, 6;--gradiente: linear-gradient(120deg, #d97706, #ea580c)}:root[data-theme=dark]{--bg: #120d08;--surface: #1e1510;--surface-alt: #2c2013;--border: #3b2b18;--text: #f8f0e3;--text-muted: #b6a68e;--accent: #ffb020;--accent-dark: #e69400;--accent-light: #3a2a0f;--accent2: #ff7a45;--accent2-light: #3d2414;--ingreso: #34d399;--gasto: #fb7185;--balance: #ff9d4d;--sombra-marca: 255, 140, 40;--gradiente: linear-gradient(120deg, #ffb020, #ff7a45)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font);position:relative;overflow-x:hidden}body:before,body:after{content:"";position:fixed;border-radius:50%;pointer-events:none;z-index:0;filter:blur(10px)}body:before{width:620px;height:620px;background:var(--accent-light);top:-260px;right:-220px;opacity:.8}body:after{width:460px;height:460px;background:var(--accent2-light);bottom:-240px;left:-180px;opacity:.8}.page{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}@keyframes entrarArriba{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes entrarFade{0%{opacity:0}to{opacity:1}}@keyframes vistaEntrar{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}@keyframes crecerBarra{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes girar{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}input,select,button{font-family:var(--font);font-size:16px;font-weight:600;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:transform .15s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,color .2s ease}input::placeholder{color:var(--text-muted)}button{cursor:pointer;background:var(--surface-alt);color:var(--text);font-weight:600;border-color:var(--border)}button:active{transform:scale(.95)}@media (hover: hover){button:hover{filter:brightness(1.06)}button:hover:not(:disabled){box-shadow:0 3px 10px #0000001a}}button:disabled{cursor:default}button.link{background:none;border:none;color:var(--accent);padding:4px 8px;font-weight:500}button.link:hover{box-shadow:none;text-decoration:underline}button.link.danger{color:var(--gasto)}button.secundario{background:var(--surface-alt)}.contenedor{width:100%;max-width:1280px;margin:0 auto;flex:1}.layout{display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px;padding:0 16px 24px}.app{width:100%;min-width:0;padding-bottom:8px}.lateral{width:100%}@media (min-width: 980px){.layout{padding:20px 24px 40px;gap:28px;flex-wrap:nowrap}.app{flex:1 1 auto;padding-bottom:0}.lateral{flex:0 0 360px;width:360px}}.offline-banner{background:var(--accent-light);color:var(--accent-dark);text-align:center;padding:8px;font-size:14px}.header{background:var(--gradiente);box-shadow:0 4px 24px rgba(var(--sombra-marca),.25)}.header-inner{max-width:1280px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:18px 24px}.marca{display:flex;align-items:center;gap:14px}.marca-textos{display:flex;flex-direction:column;gap:2px}.marca-nombre{font-family:var(--font);font-size:22px;font-weight:700;color:#fff;letter-spacing:-.2px;animation:entrarArriba .5s ease both}.email{font-family:var(--font);font-size:14px;color:var(--text-muted)}.saludo{font-family:var(--font);font-size:14px;font-weight:600;color:#ffffffd9;display:flex;align-items:center;gap:8px;flex-wrap:wrap;animation:entrarArriba .5s ease both}.firma{font-family:var(--font);font-size:11px;font-weight:400;font-style:italic;color:var(--text-muted)}.saludo .firma{color:#fff9}.logo{width:46px;height:46px;flex-shrink:0;animation:entrarFade .7s ease;filter:drop-shadow(0 3px 8px rgba(0,0,0,.25))}.header-acciones{display:flex;align-items:center;gap:12px}.header-acciones .link{color:#ffffffe6}.header-acciones .link:hover{color:#fff}.pedir-nombre{display:flex;gap:6px}.pedir-nombre input{padding:6px 8px;font-size:13px}.pedir-nombre button{padding:6px 10px;font-size:13px}.tabs-bar{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:0 2px 10px #0000000d}.tabs{max-width:1280px;margin:0 auto;display:flex;flex-wrap:wrap;gap:4px;padding:8px 16px}.tabs button{flex:1;min-width:46%;background:transparent;border-color:transparent;font-size:14px;padding:10px}.tabs button.activo{background:var(--gradiente);color:#fff;border-color:transparent;transform:translateY(-1px);box-shadow:0 4px 14px rgba(var(--sombra-marca),.3)}.tabs button .tab-icono{margin-right:6px}@media (min-width: 980px){.tabs{padding:10px 24px}.tabs button{flex:0 1 auto;min-width:140px}}.main{padding:0 16px}@media (min-width: 980px){.main{padding:0}}.footer{margin-top:auto;border-top:1px solid var(--border);background:var(--surface)}.footer-inner{max-width:1280px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:10px;padding:20px 24px;font-family:var(--font);font-size:13px;color:var(--text-muted)}.footer-logo{width:26px;height:26px;opacity:.85}.vista-entra{animation:vistaEntrar .35s cubic-bezier(.2,.8,.2,1) both}.panel{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:18px;margin:14px 0;overflow:hidden;animation:entrarArriba .45s cubic-bezier(.2,.8,.2,1) both;transition:box-shadow .25s ease,transform .25s ease}.panel:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradiente);opacity:.85}@media (hover: hover){.panel:hover{box-shadow:0 10px 28px rgba(var(--sombra-marca),.14);transform:translateY(-3px)}}.panel h2{margin:0 0 12px;font-size:17px;font-weight:700}.panel-header{display:flex;align-items:center;gap:8px;margin-bottom:12px}.panel-header h2{margin:0}.info{position:relative;display:inline-flex;align-items:center}.info-boton{width:20px;height:20px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font);font-size:13px;font-style:italic;font-weight:700;line-height:1;background:var(--surface-alt);color:var(--accent-dark);border:1px solid var(--border)}.info-globo{display:none;animation:entrarFade .15s ease;position:absolute;top:26px;left:0;z-index:10;width:220px;max-width:70vw;background:var(--text);color:var(--surface);font-family:var(--font);font-size:12px;font-weight:500;font-style:normal;line-height:1.4;padding:10px 12px;border-radius:8px;box-shadow:0 4px 12px #00000040}.info:hover .info-globo,.info-boton:focus+.info-globo,.info.abierto .info-globo{display:block}.fila{display:flex;gap:8px;margin-bottom:8px}.fila>*{flex:1;min-width:0}.form-mov{display:flex;flex-direction:column;gap:10px}.form-mov input,.form-mov select{width:100%}.tipo-toggle button{flex:1}.tipo-toggle button.activo.gasto{background:var(--gasto);color:#fff;border-color:var(--gasto)}.tipo-toggle button.activo.ingreso{background:var(--ingreso);color:#fff;border-color:var(--ingreso)}.boton-grande{width:100%;padding:16px;font-size:18px;background:var(--gradiente);color:#fff;border:none;border-radius:12px;margin:12px 0;box-shadow:0 4px 16px rgba(var(--sombra-marca),.25);transition:transform .15s ease,box-shadow .2s ease}@media (hover: hover){.boton-grande:hover:not(:disabled){box-shadow:0 8px 22px rgba(var(--sombra-marca),.35);transform:translateY(-1px)}}.boton-grande:active:not(:disabled){transform:scale(.97)}.spinner{display:inline-block;width:16px;height:16px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:girar .7s linear infinite;vertical-align:middle;margin-right:8px}.totales{display:flex;gap:8px;margin:12px 0}.total{position:relative;flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 14px 14px;text-align:center;overflow:hidden;font-family:var(--font);font-size:13px;font-weight:600;color:var(--text-muted);animation:entrarArriba .45s ease both;transition:transform .2s ease,box-shadow .2s ease}.total:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--text-muted);opacity:.3}.total.ingreso:before{background:var(--ingreso);opacity:1}.total.gasto:before{background:var(--gasto);opacity:1}.total.balance:before{background:var(--gradiente);opacity:1}@media (hover: hover){.total:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(var(--sombra-marca),.12)}}.total strong{font-size:20px;color:var(--text);font-family:var(--font);font-weight:800;font-variant-numeric:tabular-nums}.total.ingreso strong{color:var(--ingreso)}.total.gasto strong{color:var(--gasto)}.total.balance strong{color:var(--balance)}.lista-mov,.lista-cuentas{list-style:none;padding:0;margin:0}.lista-mov li,.lista-cuentas li,.lista-recordatorios li,.lista-candidatos li,.lista-metas li,.categorias-lista li{animation:entrarArriba .35s ease both}.lista-mov li:nth-child(1),.lista-cuentas li:nth-child(1),.lista-recordatorios li:nth-child(1),.lista-candidatos li:nth-child(1),.lista-metas li:nth-child(1),.categorias-lista li:nth-child(1){animation-delay:.02s}.lista-mov li:nth-child(2),.lista-cuentas li:nth-child(2),.lista-recordatorios li:nth-child(2),.lista-candidatos li:nth-child(2),.lista-metas li:nth-child(2),.categorias-lista li:nth-child(2){animation-delay:.06s}.lista-mov li:nth-child(3),.lista-cuentas li:nth-child(3),.lista-recordatorios li:nth-child(3),.lista-candidatos li:nth-child(3),.lista-metas li:nth-child(3),.categorias-lista li:nth-child(3){animation-delay:.1s}.lista-mov li:nth-child(4),.lista-cuentas li:nth-child(4),.lista-recordatorios li:nth-child(4),.lista-candidatos li:nth-child(4),.lista-metas li:nth-child(4),.categorias-lista li:nth-child(4){animation-delay:.14s}.lista-mov li:nth-child(5),.lista-cuentas li:nth-child(5),.lista-recordatorios li:nth-child(5),.lista-candidatos li:nth-child(5),.lista-metas li:nth-child(5),.categorias-lista li:nth-child(5){animation-delay:.18s}.lista-mov li:nth-child(6),.lista-cuentas li:nth-child(6),.lista-recordatorios li:nth-child(6),.lista-candidatos li:nth-child(6),.lista-metas li:nth-child(6),.categorias-lista li:nth-child(6){animation-delay:.22s}.lista-mov li:nth-child(n+7),.lista-cuentas li:nth-child(n+7),.lista-recordatorios li:nth-child(n+7),.lista-candidatos li:nth-child(n+7),.lista-metas li:nth-child(n+7),.categorias-lista li:nth-child(n+7){animation-delay:.26s}.lista-mov li{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border);transition:background-color .2s ease}.lista-mov li:last-child{border-bottom:none}.lista-mov li>input[type=checkbox]{width:20px;height:20px;padding:0;flex-shrink:0;accent-color:var(--accent)}@media (hover: hover){.lista-mov li:hover,.lista-cuentas li:hover,.lista-recordatorios li:hover{background-color:var(--surface-alt);border-radius:8px}}.mov-info{flex:1;display:flex;flex-direction:column;font-family:var(--font);font-size:14px;font-weight:700}.mov-info span{color:var(--text-muted);font-size:12px;font-weight:600}.mov-info .nota{font-style:italic}.mov-monto{font-family:var(--font);font-weight:700;font-size:17px;white-space:nowrap}.lista-mov li.ingreso .mov-monto{color:var(--ingreso)}.lista-mov li.gasto .mov-monto{color:var(--gasto)}.mov-acciones{display:flex;flex-direction:column}.lista-cuentas li{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.vacio{color:var(--text-muted);font-size:14px;font-weight:600}.recordatorios-mes{margin:-6px 0 10px;font-family:var(--font);font-size:13px;font-weight:600;color:var(--text-muted);text-transform:capitalize}.lista-recordatorios{list-style:none;padding:0;margin:0}.lista-recordatorios li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-family:var(--font)}.lista-recordatorios li:last-child{border-bottom:none}.check-recordatorio{display:flex;align-items:center;gap:8px;flex:1;min-width:0;font-weight:700;cursor:pointer}.check-recordatorio span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.check-recordatorio input{width:20px;height:20px;padding:0;accent-color:var(--accent);transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.check-recordatorio input:checked{transform:scale(1.2)}.lista-recordatorios li.pagado .check-recordatorio span{text-decoration:line-through;color:var(--text-muted)}.recordatorio-monto{font-family:var(--font);font-weight:700;white-space:nowrap}.recordatorio-variable{font-family:var(--font);font-size:13px;font-style:italic;color:var(--text-muted);white-space:nowrap}.edicion-recordatorio{width:100%;display:flex;flex-direction:column;gap:8px}.edicion-recordatorio .fila>*{width:100%}.lista-metas{list-style:none;padding:0;margin:0}.meta-item{padding:12px 0;border-bottom:1px solid var(--border)}.meta-item:last-child{border-bottom:none}.meta-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px;font-family:var(--font)}.meta-nombre{font-weight:700}.meta-porcentaje{font-size:13px;color:var(--text-muted);font-weight:600}.meta-cumplida{color:var(--ingreso)}.meta-montos{font-family:var(--font);font-size:13px;color:var(--text-muted);margin-top:6px}.meta-acciones{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}.lista-cuotas{list-style:none;padding:0;margin:0}.lista-cuotas li{padding:10px 0;border-bottom:1px solid var(--border)}.lista-cuotas li:last-child{border-bottom:none}.cuota-fila{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-family:var(--font);font-weight:700;font-size:14px}.cuota-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cuota-badge{flex-shrink:0;font-size:12px;font-weight:700;color:var(--accent-dark);background:var(--surface-alt);border-radius:6px;padding:2px 6px}.cuota-detalle{font-family:var(--font);font-size:12px;color:var(--text-muted);margin-top:2px}.cuotas-total{margin:10px 0 0;font-family:var(--font);font-size:14px;font-weight:700;text-align:right}.badge-beta{flex-shrink:0;font-family:var(--font);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-dark);background:var(--surface-alt);border:1px solid var(--border);border-radius:6px;padding:2px 6px}.cuotas-aviso{margin:-4px 0 12px;font-family:var(--font);font-size:12px;font-weight:600;color:var(--gasto)}.candidato-cuota{flex-shrink:0;font-family:var(--font);font-size:11px;font-weight:700;color:var(--accent-dark);background:var(--surface-alt);border-radius:6px;padding:2px 5px}.resumen-grid{display:flex;flex-direction:column}@media (min-width: 900px){.resumen-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}.resumen-grid .panel{margin:0}}.seccion-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.seccion-header h2{margin:0}.seccion-total{font-family:var(--font);font-size:20px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}.categorias-lista{list-style:none;padding:0;margin:0}.categorias-lista li{padding:8px 0}.categoria-fila{display:flex;justify-content:space-between;font-family:var(--font);font-size:14px;font-weight:700;margin-bottom:4px}.categoria-monto{font-family:var(--font);font-variant-numeric:tabular-nums}.barra-track{background:var(--surface-alt);border-radius:8px;height:11px;overflow:hidden}.barra-fill{background:var(--accent);height:100%;border-radius:8px;transform-origin:left;animation:crecerBarra .7s cubic-bezier(.2,.8,.2,1) both;transition:filter .2s ease}@media (hover: hover){li:hover .barra-fill{filter:brightness(1.15)}}.form-recordatorio{display:flex;flex-direction:column;gap:8px;margin-top:10px}.form-recordatorio input,.form-recordatorio button,.form-recordatorio select{width:100%}.lista-candidatos{list-style:none;padding:0;margin:0}.lista-candidatos li{display:flex;flex-direction:column;gap:6px;padding:10px 0;border-bottom:1px solid var(--border)}.lista-candidatos li:last-child{border-bottom:none}.lista-candidatos input[type=checkbox]{width:20px;height:20px;padding:0;flex-shrink:0;accent-color:var(--accent)}.candidato-fila1,.candidato-fila2{display:flex;align-items:center;gap:6px}.candidato-fecha{font-family:var(--font);font-size:12px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.candidato-desc,.candidato-fila2 select,.candidato-monto{flex:1;min-width:0}.candidato-moneda{flex:0 0 78px}.auth-box{max-width:460px;margin:80px auto;padding:36px;display:flex;flex-direction:column;gap:16px}.auth-box h1{text-align:center;margin:0 0 16px;font-size:34px;color:var(--accent-dark)}.logo-grande{display:block;width:140px;height:auto;margin:0 auto 8px}.firma-login{text-align:center;margin:0 0 16px;font-size:16px}.auth-box form{display:flex;flex-direction:column;gap:14px}.auth-box input,.auth-box button{font-size:18px;padding:15px}.auth-links{display:flex;flex-direction:column;gap:8px;margin-top:10px;font-family:var(--font);font-size:15px}.msg{font-family:var(--font);font-size:15px;color:var(--gasto);text-align:center}.privacidad{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);font-family:var(--font);font-size:13px;color:var(--text-muted);text-align:center}.privacidad p{margin:0}.privacidad .link{font-size:13px;padding:0}.privacidad-detalle{margin-top:8px!important;text-align:left;line-height:1.5}
