:root{color:#17231d;font-synthesis:none;--green:#12372a;--green2:#1d5a43;--lime:#c9ea78;--line:#dfe3dc;--muted:#69756e;--paper:#fff;--danger:#b42318;--shadow:0 10px 30px #18342814;background:#f5f6f1;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select,textarea{font:inherit}button,a{tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h2{letter-spacing:-.035em;margin-bottom:.45rem;font-size:clamp(1.65rem,3vw,2.35rem)}h3{margin-bottom:.3rem}.eyebrow{letter-spacing:.17em;color:#5c6b63;margin-bottom:.7rem;font-size:.68rem;font-weight:700}.primary,.secondary{border:1px solid #0000;border-radius:9px;padding:.78rem 1.1rem;font-weight:700;transition:all .15s}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green2)}.primary:disabled{opacity:.55;cursor:wait}.secondary{color:var(--green);background:#fff;border-color:#cdd5cf}.secondary:hover{border-color:var(--green)}.small{padding:.55rem .8rem;font-size:.8rem}.full{width:100%}.text-button{color:var(--green2);background:0 0;border:0;padding:.5rem;font-weight:700}.danger-button{color:var(--danger);background:#fff5f3;border:1px solid #fecaca;border-radius:8px;padding:.65rem .85rem;font-weight:700}.negative{color:var(--danger)!important}.splash{background:var(--green);color:#fff;place-content:center;justify-items:center;gap:.8rem;min-height:100vh;display:grid}.brand-mark{background:var(--lime);width:38px;height:38px;color:var(--green);border-radius:10px;place-items:center;font-size:1.15rem;font-weight:800;display:grid}.splash .brand-mark{width:54px;height:54px}.brand{align-items:center;gap:.7rem;display:flex}.brand strong{font-size:1.05rem}.brand small,.sidebar-user small{color:#8e9e96;margin-top:.12rem;font-size:.7rem;display:block}.auth-page{grid-template-columns:minmax(340px,.9fr) 1.1fr;min-height:100vh;display:grid}.auth-intro{background:var(--green);color:#fff;flex-direction:column;justify-content:space-between;min-height:100vh;padding:clamp(2rem,6vw,5rem);display:flex}.auth-intro .brand{align-self:flex-start}.auth-intro h1{letter-spacing:-.06em;margin-bottom:1.6rem;font-size:clamp(3rem,6.5vw,6.5rem);line-height:.94}.auth-intro h1 em{color:var(--lime);font-family:Georgia,serif;font-weight:600}.auth-intro p:not(.eyebrow){color:#c8d4ce;max-width:520px;font-size:1.08rem;line-height:1.65}.auth-intro .eyebrow{color:#9fb1a8}.auth-intro>small{color:#90a49a}.auth-form{place-items:center;padding:2rem;display:grid}.auth-card{width:min(100%,420px)}.auth-card>p:not(.eyebrow){color:var(--muted);margin-bottom:2rem}.auth-card form{gap:1.05rem;display:grid}.auth-card .text-button{margin:1rem auto;display:block}label{color:#38453e;gap:.4rem;font-size:.76rem;font-weight:700;display:grid}label small{color:var(--muted);font-weight:500}input,select,textarea{color:#18231d;background:#fff;border:1px solid #cfd7d1;border-radius:8px;outline:none;width:100%;padding:.78rem .8rem}input:focus,select:focus,textarea:focus{border-color:var(--green2);box-shadow:0 0 0 3px #1d5a431a}textarea{resize:vertical}.form-error,.form-success{border-radius:8px;padding:.75rem .9rem;font-size:.85rem}.form-error{color:var(--danger);background:#fff1ef;border:1px solid #fecaca}.form-success{color:#17683b;background:#edf9f1;border:1px solid #bbebca}.app-shell{min-height:100vh}.sidebar{background:var(--green);color:#fff;z-index:20;flex-direction:column;width:245px;padding:1.35rem 1.05rem;display:flex;position:fixed;inset:0 auto 0 0}.sidebar .brand{padding:.25rem .65rem 2rem}.sidebar nav{gap:.3rem;display:grid}.sidebar nav a{color:#b9c7c0;border-radius:8px;align-items:center;gap:.9rem;padding:.82rem .9rem;font-size:.87rem;font-weight:600;display:flex}.sidebar nav a span{text-align:center;width:20px;font-size:1.05rem}.sidebar nav a:hover,.sidebar nav a.router-link-active{color:#fff;background:#ffffff1a}.sidebar-user{border-top:1px solid #ffffff21;align-items:center;gap:.7rem;min-width:0;margin-top:auto;padding:1rem .55rem .15rem;display:flex}.sidebar-user strong{font-size:.78rem;display:block}.sidebar-user small{text-overflow:ellipsis;white-space:nowrap;max-width:135px;overflow:hidden}.avatar{width:34px;height:34px;color:var(--green);background:#e1efb8;border-radius:50%;flex:none;place-content:center;font-weight:800;display:grid}main{min-height:100vh;margin-left:245px}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:10;background:#ffffffbf;justify-content:space-between;align-items:center;height:87px;padding:0 clamp(1.2rem,4vw,3.5rem);display:flex;position:sticky;top:0}.topbar small{letter-spacing:.15em;color:var(--muted);font-size:.57rem;font-weight:700}.topbar h1{margin:.12rem 0 0;font-size:1.15rem}.page{max-width:1440px;margin:auto;padding:clamp(1.4rem,4vw,3rem) clamp(1.2rem,4vw,3.5rem) 6rem}.loading-page{text-align:center;color:var(--muted);padding:4rem}.offline{color:#fff;text-align:center;z-index:9;background:#7b3310;padding:.65rem 1rem;font-size:.82rem;position:sticky;top:87px}.bottom-nav{display:none}.welcome,.page-heading{justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:2.4rem;display:flex}.welcome h2,.page-heading h2{margin-bottom:.4rem}.welcome>div>p:last-child,.page-heading>div>p:last-child{color:var(--muted);margin-bottom:0}.section-heading{justify-content:space-between;align-items:center;margin:2.2rem 0 1rem;display:flex}.section-heading>div{align-items:center;gap:.8rem;display:flex}.section-heading h3,.section-heading p{margin:0}.section-heading p{color:var(--muted);margin-top:.15rem;font-size:.77rem}.section-heading>a{color:var(--green2);font-size:.78rem;font-weight:700}.section-icon{border-radius:8px;place-content:center;width:34px;height:34px;display:grid}.section-icon.personal{color:#578006;background:#eef6d9}.section-icon.projects{color:#1d6d50;background:#e6f1ec}.metrics-grid{grid-template-columns:repeat(3,1fr);gap:.9rem;display:grid}.metric{border:1px solid var(--line);background:#fff;border-radius:12px;min-width:0;padding:1.25rem}.metric small{color:var(--muted);letter-spacing:.1em;font-size:.63rem;font-weight:700;display:block}.metric strong{letter-spacing:-.04em;margin:.6rem 0 .4rem;font-size:clamp(1.4rem,2.5vw,2rem);display:block}.metric>span{color:var(--muted);font-size:.75rem}.metric.featured{background:var(--green);color:#fff;border-color:var(--green)}.metric.featured small,.metric.featured span{color:#b8c7c0}.metric.profit{background:#eef7d9;border-color:#d6e8ad}.progress{background:#e9ece8;border-radius:10px;height:5px;margin:.6rem 0;overflow:hidden}.progress i{background:var(--green2);border-radius:10px;height:100%;display:block}.progress i.warn{background:#e87535}.progress.large{height:9px}.panel{border:1px solid var(--line);background:#fff;border-radius:12px}.category-panel{margin-top:.9rem;padding:1.2rem}.panel-title{border-bottom:1px solid #edf0ed;justify-content:space-between;align-items:center;padding-bottom:1rem;display:flex}.panel-title h3{margin:0;font-size:.95rem}.panel-title small{color:var(--muted);font-size:.72rem}.category-bars{grid-template-columns:repeat(2,1fr);gap:1.1rem 2rem;padding-top:1.1rem;display:grid}.category-bars>div>div:first-child{justify-content:space-between;font-size:.78rem;display:flex}.category-bars span{align-items:center;gap:.45rem;display:flex}.category-bars span i,.tag i,.chips i{border-radius:50%;width:8px;height:8px;display:inline-block}.bar{background:#edf0ed;border-radius:3px;height:4px;margin-top:.5rem;overflow:hidden}.bar i{height:100%;display:block}.project-list{display:grid}.project-line{border-bottom:1px solid #edf0ed;grid-template-columns:1.4fr 1fr 110px;align-items:center;gap:1.5rem;padding:1rem 0;display:grid}.project-line:last-child{border:0}.project-line small{color:var(--muted);font-size:.72rem;display:block}.project-line>strong{text-align:right}.project-progress>span{font-size:.7rem;font-weight:700}.empty{text-align:center;color:var(--muted);padding:4rem 1rem}.empty>span{font-size:2rem}.empty h3{color:#34443b;margin:.8rem 0 .3rem}.empty.compact{padding:2rem 1rem}.segmented{background:#e8ebe7;border-radius:9px;gap:.3rem;width:max-content;margin-bottom:1rem;padding:.28rem;display:flex}.segmented button{color:#68746d;background:0 0;border:0;border-radius:7px;padding:.55rem 1rem;font-size:.78rem;font-weight:700}.segmented button.active{color:var(--green);background:#fff;box-shadow:0 2px 8px #0000000f}.filters{margin-bottom:1rem;padding:1rem}.filter-grid{grid-template-columns:repeat(6,1fr);gap:.7rem;display:grid}.filters input,.filters select{padding:.6rem}.filter-actions{justify-content:flex-end;gap:.5rem;margin-top:.9rem;display:flex}.table-panel{overflow:hidden}.table-panel .panel-title{padding:1rem 1.2rem}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.78rem}th{text-align:left;color:var(--muted);letter-spacing:.07em;text-transform:uppercase;background:#f8f9f6;font-size:.64rem}th,td{white-space:nowrap;border-bottom:1px solid #edf0ed;padding:.85rem 1rem}td:nth-child(2){white-space:normal;min-width:190px}td a{color:var(--green2);margin-top:.2rem;font-size:.68rem;font-weight:700;display:block}.number{text-align:right}.tag{align-items:center;gap:.4rem;display:inline-flex}.row-actions{gap:.25rem;display:flex}.row-actions button{background:#f2f4f1;border:0;border-radius:6px;width:29px;height:29px}.row-actions button.danger{color:var(--danger)}.modal-backdrop{z-index:100;background:#081610a6;place-items:center;padding:1rem;display:grid;position:fixed;inset:0;overflow:auto}.modal{background:#fff;border-radius:16px;width:min(100%,570px);max-height:calc(100vh - 2rem);padding:clamp(1.4rem,4vw,2rem);position:relative;overflow:auto;box-shadow:0 24px 80px #00000040}.modal.wide{width:min(100%,680px)}.modal-close{background:#eef1ed;border:0;border-radius:50%;width:34px;height:34px;font-size:1.3rem;position:absolute;top:1rem;right:1rem}.modal form{gap:.9rem;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:.8rem;display:grid}.modal-actions{justify-content:flex-end;gap:.6rem;padding-top:.5rem;display:flex}.kind-grid{grid-template-columns:1fr 1fr;gap:.8rem;margin-top:1.4rem;display:grid}.kind-grid button{border:1px solid var(--line);text-align:left;background:#fafbf8;border-radius:12px;min-height:170px;padding:1.4rem}.kind-grid button:hover{border-color:var(--green2);background:#f3f7ef}.kind-grid strong,.kind-grid small{display:block}.kind-grid small{color:var(--muted);margin-top:.4rem}.kind-icon{color:#66820d;background:#e8f1cf;border-radius:10px;place-content:center;width:40px;height:40px;margin-bottom:1.5rem;display:grid}.kind-icon.project{color:#1c6a4d;background:#dcebe5}.amount-field{position:relative}.amount-field span{color:var(--muted);font-weight:700;position:absolute;top:.8rem;left:.8rem}.amount-field input{padding-left:2.7rem;font-size:1.25rem;font-weight:700}.projects-grid{grid-template-columns:repeat(3,1fr);gap:1rem;display:grid}.project-card{border:1px solid var(--line);text-align:left;color:inherit;background:#fff;border-radius:12px;min-height:230px;padding:1.25rem}.project-card:hover{box-shadow:var(--shadow);border-color:#bbc8c0}.project-card-head{justify-content:space-between;align-items:center;display:flex}.project-card h3{margin:1.3rem 0 .25rem}.project-card>p{color:var(--muted);font-size:.78rem}.project-card>small{color:var(--muted);font-size:.68rem}.status{color:#59665f;background:#edf0ed;border-radius:20px;padding:.3rem .55rem;font-size:.63rem;font-weight:800;display:inline-flex}.status.en_ejecucion{color:#167144;background:#e3f4e9}.status.pendiente{color:#8a5a00;background:#fff2d7}.status.terminado,.status.cobrado{color:#215f9a;background:#e2efff}.status.cancelado{color:#a13429;background:#feeae7}.project-numbers{grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem;display:grid}.project-numbers small,.project-numbers strong{display:block}.project-numbers small{color:var(--muted);font-size:.63rem}.project-numbers strong{margin-top:.2rem;font-size:.93rem}.new-card{text-align:center;background:0 0;border-style:dashed;place-content:center;display:grid}.new-card>span{color:var(--green2);font-size:2rem}.new-card h3{margin:.5rem 0}.back{color:var(--green2);background:0 0;border:0;padding:0 0 1rem;font-weight:700}.project-hero{background:var(--green);color:#fff;border-radius:14px;justify-content:space-between;align-items:flex-end;margin-bottom:1rem;padding:clamp(1.4rem,4vw,2.2rem);display:flex}.project-hero h2{margin:.65rem 0 .25rem}.project-hero p{color:#b9c7c0;margin:0}.hero-actions{gap:.5rem;display:flex}.project-metrics{grid-template-columns:repeat(4,1fr);margin-bottom:1rem}.project-detail>.panel{padding:1.2rem}.expense-mobile-list>div{border-bottom:1px solid #edf0ed;grid-template-columns:10px 1fr auto;align-items:center;gap:.8rem;padding:1rem 0;display:grid}.expense-mobile-list small{color:var(--muted);margin-top:.2rem;font-size:.7rem;display:block}.category-dot{border-radius:50%;width:8px;height:8px}.danger-zone{background:snow;border:1px solid #f1ceca;border-radius:10px;justify-content:space-between;align-items:center;margin-top:1rem;padding:1rem;display:flex}.danger-zone p{color:var(--muted);margin:0;font-size:.75rem}.period-picker{gap:.5rem;display:flex}.period-picker select{min-width:135px}.period-picker input{width:100px}.budget-layout{grid-template-columns:minmax(0,1fr) 330px;gap:1rem;display:grid}.budget-overview{background:var(--green);color:#fff;border-radius:14px;margin-bottom:1rem;padding:2rem}.budget-overview>strong{letter-spacing:-.05em;font-size:clamp(2.2rem,5vw,4rem)}.budget-overview .eyebrow{color:#aebeb6}.budget-consumed{color:#c7d1cc;justify-content:space-between;margin-top:2rem;font-size:.78rem;display:flex}.budget-overview .progress{background:#ffffff26}.budget-overview .progress i{background:var(--lime)}.budget-overview>p:last-child{color:#dce4df;margin:1rem 0 0}.empty-budget{text-align:center;color:#36433c;background:#fff;border:1px dashed #bac5be}.empty-budget>span{font-size:2rem}.empty-budget p{color:var(--muted)}.category-budget{padding:1.2rem}.budget-row{border-bottom:1px solid #edf0ed;grid-template-columns:1fr minmax(130px,.7fr) 100px;align-items:center;gap:1.2rem;padding:1rem 0;display:grid}.budget-row small{color:var(--muted);font-size:.7rem;display:block}.budget-row>div:nth-child(2)>span{font-size:.7rem;font-weight:700}.budget-row>strong{text-align:right}.budget-form{height:max-content;padding:1.3rem;position:sticky;top:105px}.budget-form label{margin-top:1rem}.hint{color:var(--muted);font-size:.7rem;line-height:1.5}.settings-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.setting{padding:1.2rem}.setting form{border-top:1px solid #edf0ed;gap:.75rem;padding-top:1rem;display:grid}.chips{flex-wrap:wrap;gap:.45rem;padding:1rem 0;display:flex}.chips span{background:#f8f9f6;border:1px solid #dde3de;border-radius:20px;align-items:center;gap:.4rem;padding:.4rem .65rem;font-size:.7rem;display:flex}.chips small{color:var(--muted)}.account{justify-content:space-between;align-items:center;margin-top:1rem;padding:1.2rem;display:flex}.account>div{align-items:center;gap:.9rem;display:flex}.avatar.large{width:48px;height:48px}.account h3,.account p{margin:0}.account p{color:var(--muted);font-size:.75rem}.about{text-align:center;color:var(--muted);padding:2rem;font-size:.72rem}.about p{margin:.3rem 0}.update-toast,.install-toast{z-index:200;border:1px solid var(--line);width:min(360px,100vw - 2rem);box-shadow:var(--shadow);background:#fff;border-radius:12px;align-items:center;gap:1rem;padding:1rem;display:flex;position:fixed;bottom:1.2rem;right:1.2rem}.update-toast span,.install-toast span{flex:1}.update-toast strong,.update-toast small,.install-toast strong,.install-toast small{display:block}.update-toast small,.install-toast small{color:var(--muted);margin-top:.25rem;font-size:.7rem}.toast-close{color:var(--muted);background:0 0;border:0;position:absolute;top:.15rem;right:.25rem}.mobile-budget-link{display:none}.pwa-install-button{z-index:80;background:var(--green);color:#fff;border:0;border-radius:999px;padding:.72rem 1rem;font-weight:800;position:fixed;bottom:1rem;right:1rem;box-shadow:0 8px 24px #12372a47}.pwa-install-button span{margin-right:.3rem;font-size:1.05rem}.install-modal{width:min(100%,430px)}.install-modal>p:not(.eyebrow):not(.hint){color:#445149;line-height:1.55}@media (width<=1100px){.filter-grid{grid-template-columns:repeat(3,1fr)}.projects-grid,.project-metrics{grid-template-columns:repeat(2,1fr)}.budget-layout{grid-template-columns:1fr}.budget-form{position:static}.settings-grid{grid-template-columns:1fr}}@media (width<=760px){.auth-page{grid-template-columns:1fr}.auth-intro{min-height:300px;padding:1.5rem}.auth-intro h1{margin-top:2rem;font-size:3.3rem}.auth-intro>small{display:none}.auth-form{min-height:60vh;padding:2rem 1.2rem}.sidebar,.topbar{display:none}main{margin-left:0}.page{padding:1.4rem 1rem 7rem}.offline{top:0}.bottom-nav{z-index:50;height:68px;padding:7px max(6px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));border-top:1px solid var(--line);background:#fffffff5;grid-template-columns:repeat(5,1fr);align-items:end;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 25px #0000000d}.bottom-nav a{color:#738078;justify-items:center;gap:2px;display:grid}.bottom-nav a.router-link-active{color:var(--green)}.bottom-nav a span{font-size:1.15rem}.bottom-nav small{font-size:.58rem;font-weight:700}.bottom-nav .quick{background:var(--green);color:#fff;border:4px solid #f5f6f1;border-radius:50%;place-self:center;width:48px;height:48px;font-size:1.6rem;box-shadow:0 5px 15px #12372a40}.desktop-add{display:none}.welcome,.page-heading{flex-wrap:wrap;align-items:flex-start;margin-bottom:1.6rem}.welcome>.secondary,.page-heading>.primary{display:none}.metrics-grid{grid-template-columns:1fr 1fr}.metrics-grid .metric:first-child,.personal-grid .metric:first-child{grid-column:1/-1}.metric{padding:1rem}.category-bars{grid-template-columns:1fr}.project-line{grid-template-columns:1fr 80px}.project-line>strong{display:none}.filter-grid{grid-template-columns:1fr 1fr}.filters label:nth-child(n+5){display:none}.table-wrap{overflow:visible}table,thead,tbody,tr,td{display:block}thead{display:none}tr{border-bottom:1px solid #edf0ed;padding:.9rem;position:relative}td{white-space:normal;border:0;padding:.15rem 0}td:first-child{color:var(--muted);font-size:.7rem}td:nth-child(3),td:nth-child(4),td:nth-child(5){color:var(--muted);margin-right:.5rem;font-size:.7rem;display:inline-block}td.number{text-align:left;margin-top:.4rem;font-size:1rem}.row-actions{position:absolute;top:.7rem;right:.7rem}.projects-grid{grid-template-columns:1fr}.project-card{min-height:210px}.project-hero{display:block}.hero-actions{margin-top:1.2rem}.project-metrics{grid-template-columns:1fr 1fr}.project-metrics .metric:first-child{grid-column:auto}.project-metrics .metric.profit{grid-column:1/-1}.budget-row{grid-template-columns:1fr 100px}.budget-row>strong{display:none}.period-picker{grid-template-columns:minmax(0,1fr) 90px;width:100%;margin-top:1rem;display:grid}.period-picker select,.period-picker input{width:100%;min-width:0}.mobile-budget-link{grid-template-columns:38px 1fr auto;align-items:center;gap:.8rem;margin-bottom:1rem;padding:1rem;display:grid}.mobile-budget-link>span{color:#578006;background:#eef6d9;border-radius:9px;place-content:center;width:38px;height:38px;font-size:1.2rem;display:grid}.mobile-budget-link strong,.mobile-budget-link small{display:block}.mobile-budget-link small{color:var(--muted);margin-top:.2rem;font-size:.7rem}.pwa-install-button{bottom:82px;right:1rem}.account{align-items:flex-start}.kind-grid{grid-template-columns:1fr}.kind-grid button{min-height:130px}.kind-icon{margin-bottom:.8rem}.install-toast,.update-toast{bottom:80px;right:1rem}.form-row{grid-template-columns:1fr}.modal{border-radius:14px;max-height:calc(100vh - 1rem);padding:1.25rem}.modal-backdrop{padding:.5rem}.danger-zone{align-items:flex-start;gap:1rem}}@media (width<=420px){.metrics-grid{grid-template-columns:1fr}.metrics-grid .metric{grid-column:auto}.project-metrics,.filter-grid{grid-template-columns:1fr}.filters label:nth-child(n+3){display:none}.segmented{width:100%}.segmented button{flex:1;padding:.55rem .5rem}.auth-intro h1{font-size:2.8rem}.project-hero .hero-actions{grid-template-columns:1fr 1fr;display:grid}.budget-overview{padding:1.4rem}.budget-overview>strong{font-size:2.4rem}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.primary.income{background:#087f5b}.primary.income:hover{background:#066649}.income-text{color:#087f5b!important}.section-icon.income{color:#087f5b;background:#dcfce7}.metric.income-featured{color:#fff;background:#087f5b;border-color:#087f5b}.metric.income-featured small,.metric.income-featured span{color:#c5f2df}.kind-icon.income{color:#087f5b;background:#dcfce7}.kind-icon.expense{color:#b45309;background:#fff0e4}@media (width<=760px){.bottom-nav{grid-template-columns:repeat(6,1fr)}.bottom-nav .quick{width:46px;height:46px}.income-grid .metric:first-child{grid-column:1/-1}}
