:root{
  --bg:#f1f8f2;--panel:#fff;--ink:#193426;--muted:#65756b;
  --brand:#2f8a4d;--brand-dark:#226b3a;--brand-light:#e2f4e7;
  --line:#d7e7da;--green:#20894a;--red:#c45454;--amber:#c48627;
  --teal:#278f87;--purple:#7665a8;--shadow:0 12px 32px rgba(31,91,51,.09)
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:linear-gradient(180deg,#f5fbf6 0,#eef7f0 100%);color:var(--ink)}
a{color:var(--brand-dark)}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:18px 4vw;background:linear-gradient(115deg,#195f35,#2f8a4d 58%,#59aa6d);color:#fff;box-shadow:0 5px 18px rgba(25,95,53,.18)}
.topbar strong{font-size:1.05rem}.subtitle{display:block;font-size:.8rem;color:#dff2e4;margin-top:2px}.userbox{font-size:.9rem}.userbox a{color:#fff}
.nav{display:flex;gap:8px;overflow:auto;padding:10px 4vw;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;backdrop-filter:blur(8px)}
.nav-link{white-space:nowrap;text-decoration:none;color:var(--muted);padding:8px 12px;border-radius:999px;transition:.2s ease}
.nav-link.active,.nav-link:hover{background:var(--brand-light);color:var(--brand-dark);box-shadow:inset 0 0 0 1px #c5e5cd}
.container{max-width:1220px;margin:auto;padding:24px}.page-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}h1{font-size:1.8rem;margin:0;color:#194329}h2{font-size:1.1rem;margin:0 0 16px}
.home-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:center;min-height:210px;margin-bottom:20px;padding:32px;border-radius:24px;background:linear-gradient(125deg,#176137 0%,#2f8a4d 58%,#78bf76 100%);color:#fff;box-shadow:0 18px 40px rgba(34,107,58,.2)}
.home-hero:before,.home-hero:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.home-hero:before{width:250px;height:250px;right:-65px;top:-110px}.home-hero:after{width:160px;height:160px;right:90px;bottom:-105px}
.hero-content{position:relative;z-index:2;max-width:680px}.hero-kicker{display:inline-block;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.16);font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.home-hero h2{font-size:2rem;margin:14px 0 10px}.home-hero p{max-width:620px;margin:0;color:#eaf7ed;line-height:1.55}.hero-actions{display:flex;gap:14px;align-items:center;margin-top:22px;flex-wrap:wrap}.btn.light{background:#fff;color:var(--brand-dark)}.btn.light:hover{background:#eaf7ed}.hero-link{color:#fff;font-weight:700}.hero-leaf{position:relative;z-index:2;font-size:5.4rem;filter:drop-shadow(0 10px 10px rgba(0,0,0,.12));transform:rotate(7deg);margin-right:40px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:14px;margin-bottom:18px}.dashboard-cards{align-items:stretch}.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}
.metric{position:relative;overflow:hidden;min-height:118px}.metric:after{content:"";position:absolute;width:74px;height:74px;border-radius:50%;right:-25px;bottom:-27px;background:rgba(255,255,255,.55)}.metric span{display:block;color:var(--muted);font-size:.84rem;margin-bottom:10px}.metric strong{display:block;font-size:1.42rem}.metric small{display:block;margin-top:9px;font-size:.72rem;line-height:1.35;color:var(--muted)}
.metric.income{background:linear-gradient(145deg,#e5f7e9,#f9fffa);border-color:#c9e9d1}.metric.expense{background:linear-gradient(145deg,#fdebea,#fffafa);border-color:#f0d0ce}.metric.pending{background:linear-gradient(145deg,#fff3db,#fffdf7);border-color:#f0dfba}.metric.balance{background:linear-gradient(145deg,#d9f2df,#f6fff8);border-color:#bfe3c7}.metric.estimated{background:linear-gradient(145deg,#e3f5ef,#f8fffc);border-color:#c4e8dd;grid-column:span 2}.metric.old{background:linear-gradient(145deg,#fff0dc,#fffaf3);border-color:#efd8b8}.metric.saving{background:linear-gradient(145deg,#e0f5f2,#f7fffe);border-color:#c2e4df}
.income strong,.amount.ingreso,.list-row .ingreso{color:var(--green)}.expense strong,.amount.gasto,.list-row .gasto{color:var(--red)}.pending strong,.old strong{color:var(--amber)}.balance strong,.estimated strong{color:var(--brand-dark)}.saving strong{color:var(--teal)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.section-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}.section-head h2{margin:0}.compact{margin:5px 0 0;line-height:1.4}.list{display:flex;flex-direction:column}.list-row{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border-bottom:0}.list-row small,td small{display:block;color:var(--muted);margin-top:4px}.muted{color:var(--muted)}
.actions{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--brand),#3fa45d);color:#fff;text-decoration:none;border:0;border-radius:11px;padding:11px 16px;cursor:pointer;font-weight:700;box-shadow:0 6px 14px rgba(47,138,77,.16)}.btn:hover{background:linear-gradient(135deg,var(--brand-dark),var(--brand));transform:translateY(-1px)}.btn.secondary{background:#fff;color:var(--brand-dark);border:1px solid #cfe4d4;box-shadow:none}.btn.small{padding:8px 11px;font-size:.85rem}.full-btn{width:100%;margin-top:16px}
.form-card{border-top:4px solid #4da866}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.form-grid .full{grid-column:1/-1}label{display:block;font-size:.86rem;color:var(--muted);margin-bottom:13px}input,select,textarea{width:100%;margin-top:6px;border:1px solid #cfe0d3;border-radius:10px;padding:10px;background:#fff;color:var(--ink);font:inherit;outline:none}input:focus,select:focus,textarea:focus{border-color:#63ac76;box-shadow:0 0 0 3px rgba(75,160,99,.13)}textarea{resize:vertical}.field-help{display:block;margin-top:5px;font-size:.74rem}
.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.78rem;text-transform:uppercase;color:var(--muted);background:#f7fbf8}tbody tr:hover{background:#f8fcf9}.amount{font-weight:700}.badge{display:inline-block;border-radius:999px;padding:4px 8px;font-size:.75rem;background:#eee}.badge.pagado,.badge.success{background:#dff2e5;color:var(--green)}.badge.pendiente{background:#f8ead0;color:#8b611d}.badge.parcial{background:#e9e6f7;color:#5d5795}.badge.inactive{background:#edf0ed;color:#6f7d73}.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.link-btn{display:inline;background:none;border:0;color:var(--brand-dark);cursor:pointer;padding:0;font:inherit;text-decoration:none;font-weight:600}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--red)}
.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px}.alert.success{background:#dff2e5;color:#205d43}.alert.error{background:#f7dddd;color:#8b3232}
.auth-card{width:min(430px,92vw);margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow)}.setup-card{width:min(760px,94vw)}.setup-body{min-height:100vh;padding:20px;background:linear-gradient(145deg,#dcefe1,#f6fbf7)}.auth-card h1{margin-bottom:8px}.auth-card form label{margin-bottom:14px}
.debt-grid{grid-template-columns:repeat(3,1fr)}.debt-card{min-width:0}.big-number{font-size:1.5rem;font-weight:700}.big-number small{font-size:.85rem;color:var(--muted);font-weight:400}.progress{height:10px;background:#e4eee6;border-radius:999px;overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,#2f8a4d,#72bd73)}.inline-form{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:end}.inline-form input{margin:0}
.categories-layout{grid-template-columns:minmax(300px,.8fr) 1.2fr}.category-tip{background:linear-gradient(135deg,#e6f6e9,#f8fff9);border-color:#cce8d2}.tip-icon{display:block;font-size:2.6rem;margin-bottom:8px}.category-type{display:inline-block;border-radius:999px;padding:5px 9px;font-size:.75rem;font-weight:700}.category-type.gasto{background:#fde7e5;color:#a44343}.category-type.ingreso{background:#dff2e5;color:#257245}.category-type.ambos{background:#e6edf9;color:#4c6693}.row-disabled{opacity:.62}
footer{text-align:center;padding:30px;color:var(--muted);font-size:.8rem}
@media(max-width:1000px){.form-grid{grid-template-columns:repeat(2,1fr)}.debt-grid{grid-template-columns:repeat(2,1fr)}.metric.estimated{grid-column:span 1}.hero-leaf{margin-right:10px}}
@media(max-width:700px){.container{padding:16px}.topbar{align-items:flex-start}.two-col,.categories-layout{grid-template-columns:1fr}.debt-grid{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.inline-form{grid-template-columns:1fr}.nav{padding-left:16px}.userbox{font-size:.75rem}.home-hero{padding:25px;min-height:0}.home-hero h2{font-size:1.55rem}.hero-leaf{display:none}.row-actions{min-width:150px}}
@media(max-width:430px){.debt-grid{grid-template-columns:1fr}.cards{grid-template-columns:1fr}}

/* V4 recurrentes tracker + banner verde esperanza */
:root{--brand:#66bb6a;--brand-dark:#3f9b52;--brand-soft:#ebf8ed;--green:#2e7d32;--line:#dbe8dc}
body{background:linear-gradient(180deg,#eef8ef 0,#f9fbf8 170px,#f6f4ef 170px,#f6f4ef 100%)}
.topbar{background:linear-gradient(135deg,#8ad68f,#56b96a);box-shadow:0 8px 20px rgba(76,175,90,.18)}
.topbar .subtitle,.userbox,.userbox a{color:#f6fff7}
.nav{border-bottom:2px solid #d6ead8;background:#fff}
.nav-link.active{background:linear-gradient(135deg,#dbf3de,#eef9ef);color:var(--brand-dark);border-color:#c8e6cc}
.home-hero{background:linear-gradient(135deg,#90d890,#55b96c)}
.form-card{border-top:4px solid #66bb6a}
.year-inline-form{display:flex;align-items:end;gap:10px}.year-inline-form label{margin:0;font-size:.82rem}
.tracker-card{border-top:4px solid #70bf77}.recurrent-header{align-items:flex-end}
.compact-summary{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-top:12px}
.compact-summary .metric{min-height:92px}
.tracker-wrap{margin-top:12px}.tracker-table th,.tracker-table td{text-align:center}.tracker-table td:first-child,.tracker-table th:first-child,.tracker-table td:nth-child(2),.tracker-table th:nth-child(2){text-align:left}
.month-col{width:46px}
.tracker-pill{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;font-weight:700;font-size:.9rem;border:1px solid transparent}
.tracker-pill.paid{background:#dff2e5;color:#237644;border-color:#c3e3cb}
.tracker-pill.pending{background:#fff0d8;color:#8d6220;border-color:#ebd5a6}
.tracker-pill.missing{background:#f9ece7;color:#b05050;border-color:#efd1c6}
.tracker-pill.empty{background:#f3f4f1;color:#a6afa3;border-color:#e4e8e0}
.tracker-pill.skip{background:transparent;color:#bcc4ba;border-color:transparent;width:auto}
@media(max-width:1000px){.tracker-table{font-size:.88rem}.tracker-pill{width:24px;height:24px;font-size:.8rem}}

/* V6 claridad de movimientos recurrentes */
.recurring-explainer{display:flex;gap:14px;align-items:flex-start;background:linear-gradient(135deg,#edf9ef,#f8fff9);border:1px solid #cfe8d3;border-radius:14px;padding:14px 16px;margin:8px 0 18px}.recurring-explainer p{margin:4px 0 0;color:var(--muted);line-height:1.45}.recurring-icon{display:flex;align-items:center;justify-content:center;flex:0 0 38px;height:38px;border-radius:50%;background:#d8f0dc;color:var(--brand-dark);font-size:1.35rem;font-weight:700}
.recurring-choice{border:2px solid #cfe8d3;background:#fbfffb;border-radius:16px;padding:16px;margin:2px 0 18px;transition:.2s}.recurring-choice.is-disabled{opacity:.68;background:#f5f6f4;border-style:dashed}.recurring-toggle{display:flex;align-items:flex-start;gap:12px;margin:0;cursor:pointer;color:var(--ink)}.recurring-toggle input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--brand)}.recurring-toggle span{display:block}.recurring-toggle strong{display:block;font-size:1rem}.recurring-toggle small{display:block;margin-top:4px;color:var(--muted);line-height:1.4}.recurring-options{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:16px;padding-top:14px;border-top:1px solid #deece0}.recurring-options label{margin:0}.recurring-income-note{margin:10px 0 0;color:var(--muted);font-size:.84rem}.recurring-linked{display:flex;flex-direction:column;gap:5px;background:#e7f5ea;border:1px solid #c4e4ca;color:#245e34;border-radius:14px;padding:14px 16px;margin:2px 0 18px}.recurring-linked span{color:#4e7057;font-size:.86rem}.badge.recurring{background:#dff2e5;color:#277344}.badge.manual{background:#edf0ed;color:#66716a}
@media(max-width:700px){.recurring-options{grid-template-columns:1fr}.recurring-explainer{padding:13px}.recurring-icon{display:none}}
