:root{--verde:#0f6e56;--verde-2:#e3f3ee;--texto:#1d2522;--muted:#5d6b66;--fondo:#f4f6f5;--card:#fff;--borde:#dde3e0;--rojo:#c0392b;--naranja:#d35400;--amarillo:#b7950b;--radio:14px;font-size:17px}*{box-sizing:border-box}html,body{margin:0}body{background:var(--fondo);color:var(--texto);padding-bottom:calc(76px + env(safe-area-inset-bottom));font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.4}a{color:var(--verde)}h1{margin:0;font-size:1.4rem}h2{margin:1.4rem 0 .6rem;font-size:1.1rem}h3{margin:0 0 .6rem;font-size:1rem}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.sr-only-focusable:focus{clip:auto;z-index:100;background:#fff;border-radius:8px;width:auto;height:auto;padding:.5rem .8rem;position:fixed;top:8px;left:8px}.topbar{z-index:10;background:var(--verde);color:#fff;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 1rem;display:flex;position:sticky;top:0}.brand{align-items:center;gap:.6rem;display:flex}.brand small{opacity:.85;font-size:.78rem;display:block}.logo{color:var(--verde);background:#fff;border-radius:10px;padding:.35rem .45rem;font-size:.85rem;font-weight:800}.role select{border:0;border-radius:10px;min-height:44px;padding:.5rem;font-size:.95rem}.demo-banner{color:#7a5b00;text-align:center;background:#fff4d6;padding:.35rem .5rem;font-size:.78rem;font-weight:600}main{outline:none;max-width:680px;margin:0 auto;padding:1rem}.hello p,.muted{color:var(--muted)}.hello p{margin:.2rem 0 1rem}.small{font-size:.85rem}.empty{color:var(--muted);text-align:center;background:var(--card);border-radius:var(--radio);border:1px dashed var(--borde);padding:1rem}.empty-state{text-align:center;background:var(--card);border-radius:var(--radio);border:1px dashed var(--borde);color:var(--muted);flex-direction:column;align-items:center;gap:.5rem;padding:2rem 1rem;display:flex}.empty-state .ico{opacity:.6;font-size:2.5rem}.page-head{align-items:center;gap:.5rem;margin-bottom:.8rem;display:flex}.back{background:var(--card);border:1px solid var(--borde);border-radius:50%;place-items:center;width:44px;height:44px;font-size:2rem;line-height:1;text-decoration:none;display:grid}.card{background:var(--card);border:1px solid var(--borde);border-radius:var(--radio);color:inherit;margin-bottom:.8rem;padding:1rem;text-decoration:none;display:block}.card.compact{padding:.8rem}.card>*+*{margin-top:.35rem}a.card:active{background:var(--verde-2)}.card.mora-critica{border-left:5px solid var(--rojo)}.row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.name{font-size:1.05rem}.amount{font-weight:700}.big{font-size:1.5rem}.addr{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list{flex-direction:column;display:flex}.stats{grid-template-columns:repeat(2,1fr);gap:.6rem;display:grid}@media (width>=560px){.stats{grid-template-columns:repeat(4,1fr)}}.stat{background:var(--card);border:1px solid var(--borde);border-left:5px solid var(--verde);border-radius:var(--radio);color:inherit;flex-direction:column;justify-content:center;min-height:84px;padding:.75rem;text-decoration:none;display:flex}.stat .n{font-size:1.7rem;font-weight:800;line-height:1.15}.stat .l{color:var(--muted);font-size:.82rem}.stat.saldo .n{word-break:break-word;font-size:1.4rem}.stat.warn{border-left-color:var(--amarillo)}.stat.danger{border-left-color:var(--rojo)}.stat.ok{border-left-color:#27ae60}.meta-card{color:#fff;border-radius:var(--radio);background:linear-gradient(135deg,#0f6e56,#149174);margin-bottom:1rem;padding:1rem}.meta-card p{margin:.5rem 0 0}.meta-card .muted{color:#d6efe7;font-size:.85rem}.meta-top{justify-content:space-between;align-items:baseline;display:flex}.meta-top strong{font-size:1.6rem}.bar{background:#0000001f;border-radius:99px;height:12px;margin-top:.5rem;position:relative;overflow:hidden}.bar span{background:#f1c40f;border-radius:99px;height:100%;transition:width .5s;display:block}.card .bar{background:#e8ecea}.card .bar span{background:var(--verde)}.bar.with-label{height:20px}.bar.with-label span{color:#fff;justify-content:flex-end;align-items:center;padding-right:.4rem;font-size:.72rem;font-weight:700;display:flex}.badge{white-space:nowrap;border-radius:99px;padding:.15rem .5rem;font-size:.75rem;font-weight:700;display:inline-block}.badge.gris{color:#455a64;background:#eceff1}.badge.verde{color:#1e8449;background:#d5f5e3}.badge.rojo{color:#a93226;background:#fadbd8}.badge.naranja{color:#a04000;background:#fde3cf}.badge.amarillo{color:#7d6608;background:#fcf3cf}.badge.pendiente{color:#455a64;background:#eceff1}.badge.proceso{color:#a04000;background:#fde3cf}.badge.completada{color:#1e8449;background:#d5f5e3}.badge.cancelada{color:#455a64;background:#eceff1}.badge.porverificar{color:#7d6608;background:#fcf3cf}.badge.verificada{color:#1e8449;background:#d5f5e3}.badge.rechazada{color:#a93226;background:#fadbd8}.badge.info{color:#a04000;background:#fde3cf}.badge.vencida{color:#a93226;background:#fadbd8}.badge.hoy{color:#a04000;background:#fde3cf}.badge.proxima{color:#7d6608;background:#fcf3cf}.badge.cumplida{color:#1e8449;background:#d5f5e3}.badge.incumplida,.badge.alta{color:#a93226;background:#fadbd8}.badge.media{color:#7d6608;background:#fcf3cf}.badge.baja{color:#1e8449;background:#d5f5e3}.tag{border-radius:6px;padding:.15rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.tag.m1{color:#283593;background:#e8eaf6}.tag.m2{color:#880e4f;background:#fce4ec}.tag.m3{color:#00695c;background:#e0f2f1}.chip{background:var(--verde-2);border-radius:99px;padding:.4rem .8rem;font-size:.85rem;display:inline-block}.count{background:var(--borde);border-radius:99px;padding:0 .5rem;font-size:.85rem}.kv{grid-template-columns:auto 1fr;gap:.3rem .8rem;margin:.6rem 0;display:grid}.kv dt{color:var(--muted);font-size:.85rem}.kv dd{margin:0}.btn{border:1px solid var(--borde);background:var(--card);min-height:52px;color:var(--texto);font:inherit;cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:.4rem;width:100%;padding:.7rem 1rem;font-weight:600;text-decoration:none;transition:transform 80ms,background .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--verde);color:#fff;border-color:var(--verde)}.btn.ok{color:#fff;background:#27ae60;border-color:#27ae60}.btn.danger{background:var(--rojo);color:#fff;border-color:var(--rojo)}.btn.small-btn{width:auto;min-height:46px}.actions{gap:.6rem;margin-bottom:.8rem;display:grid}.btn-row{flex-wrap:wrap;gap:.5rem;margin-top:.6rem;display:flex}.btn-row .btn{flex:30%;min-height:48px;padding:.5rem;font-size:.9rem}.task .btn{margin-top:.6rem}.actions-sticky{bottom:calc(76px + env(safe-area-inset-bottom));background:var(--fondo);z-index:5;padding:.5rem 0;position:sticky}.filters{gap:.5rem;margin-bottom:.6rem;display:grid}input,select,textarea{font:inherit;border:1px solid var(--borde);background:#fff;border-radius:10px;width:100%;min-height:48px;padding:.7rem}textarea{resize:vertical}input.error,select.error,textarea.error{border-color:var(--rojo);background:#fff5f5}input[type=radio],input[type=checkbox]{width:auto;min-height:0;padding:0}label{font-size:.92rem;font-weight:600;display:block}label>input,label>select,label>textarea{margin-top:.3rem;font-weight:400}.field-error{color:var(--rojo);margin-top:.25rem;font-size:.82rem;font-weight:500}.stack{gap:.9rem;display:grid}.stack+.stack,.inline-form+.stack{margin-top:1rem}.inline-form{align-items:flex-end;gap:.5rem;margin-bottom:.8rem;display:flex}.inline-form label{flex:1}.check{align-items:center;gap:.6rem;min-height:44px;font-weight:500;display:flex}.check input{width:24px;height:24px;min-height:0}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:.5rem;font-weight:700}.grid-opts{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}@media (width>=560px){.grid-opts{grid-template-columns:repeat(3,1fr)}.grid-opts.two{grid-template-columns:repeat(2,1fr)}}.opt{font-weight:600;position:relative}.opt input{opacity:0;width:100%;height:100%;margin:0;position:absolute;inset:0}.opt span{text-align:center;border:2px solid var(--borde);cursor:pointer;background:#fff;border-radius:12px;justify-content:center;align-items:center;min-height:72px;padding:.5rem;font-size:.9rem;transition:background .15s,border-color .15s;display:flex}.opt input:checked+span{border-color:var(--verde);background:var(--verde-2)}.opt input:focus-visible+span{outline:3px solid #7fc8b4}.timeline{border-left:3px solid var(--borde);margin:0;padding:0;list-style:none}.timeline li{background:var(--card);border:1px solid var(--borde);border-radius:10px;margin:0 0 .6rem .8rem;padding:.6rem .8rem;position:relative}.timeline li:before{content:"";background:var(--verde);border-radius:50%;width:11px;height:11px;position:absolute;top:1rem;left:-1.3rem}.timeline li.hist-validacion:before{background:#27ae60}.timeline li.hist-cambio:before{background:var(--amarillo)}.timeline li.hist-edicion:before{background:var(--naranja)}.timeline li.hist-alerta:before{background:var(--rojo)}.verified{color:#1e8449;text-align:center;background:#d5f5e3;border-radius:8px;padding:.5rem;font-size:.8rem;font-weight:800}.note{color:#922b21;background:#fdecea;border-radius:8px;padding:.5rem;font-size:.88rem}.alert{border-left:6px solid var(--amarillo)}.alert.alta{border-left-color:var(--naranja)}.alert.critica{border-left-color:var(--rojo)}.info-card{color:#1f3d7a;background:#eef4ff;border:1px solid #c9dafc;border-radius:10px;padding:.7rem}.wa-bubble{background:#dcf8c6;border-radius:12px 12px 12px 2px;margin:.5rem 0 1rem;padding:.8rem}.tbl{border-collapse:collapse;width:100%;margin-bottom:1rem;font-size:.88rem}.tbl th,.tbl td{text-align:left;border-bottom:1px solid var(--borde);padding:.45rem .3rem}.tbl td:not(:first-child),.tbl th:not(:first-child){text-align:right}.bottomnav{z-index:10;border-top:1px solid var(--borde);padding-bottom:env(safe-area-inset-bottom);background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0}.bottomnav a{min-height:64px;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;font-size:.78rem;font-weight:600;text-decoration:none;display:flex;position:relative}.bottomnav a .ico{font-size:1.4rem}.bottomnav a.active{color:var(--verde);background:var(--verde-2)}.dot{background:var(--rojo);color:#fff;border-radius:99px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:.7rem;display:grid;position:absolute;top:6px;right:calc(50% - 24px)}#toast{color:#fff;opacity:0;pointer-events:none;z-index:30;text-align:center;background:#1d2522;border-radius:99px;max-width:90vw;padding:.7rem 1.1rem;font-size:.9rem;font-weight:500;transition:all .25s;position:fixed;bottom:90px;left:50%;transform:translate(-50%)translateY(20px)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)}#toast.error{background:var(--rojo)}#toast.success{background:#27ae60}#toast.warn{background:var(--naranja)}.modal-bg{z-index:20;background:#00000073;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:560px;padding:1.2rem 1rem calc(1.2rem + env(safe-area-inset-bottom));background:#fff;border-radius:20px 20px 0 0;max-height:90vh;position:relative;overflow:auto}@media (width>=600px){.modal-bg{align-items:center}.modal{border-radius:20px}}.modal h2{margin-top:0}.modal .grid-opts .btn{min-height:52px}.modal .inline-form{margin-top:.8rem}.congrats{text-align:center;z-index:1;position:relative}.congrats h2{color:var(--verde);font-size:1.6rem}.trophy{font-size:4rem;animation:.6s ease-out pop}@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.2)}to{transform:scale(1)}}.confetti{pointer-events:none;position:absolute;inset:0;overflow:hidden}.confetti i{border-radius:2px;width:9px;height:14px;animation:2.4s linear forwards fall;position:absolute;top:-10px}@keyframes fall{to{opacity:0;transform:translateY(420px)rotate(540deg)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}.trophy{animation:none}}.modal-overlay{z-index:999;background:#0000008c;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.hidden{display:none!important}.modal-content{background:#fff;border-radius:12px;flex-direction:column;gap:10px;width:420px;max-width:100%;max-height:90vh;padding:20px;display:flex;overflow-y:auto;box-shadow:0 20px 60px #00000040}.modal-content h3{margin:0 0 4px;font-size:1.15rem}.modal-content input{border:1px solid var(--borde);font:inherit;border-radius:8px;min-height:44px;padding:10px}.modal-content .field{flex-direction:column;gap:4px;display:flex}.modal-content .field label{color:var(--muted);font-size:.85rem;font-weight:600}.modal-content .field-hint{color:var(--muted);font-size:.78rem;font-weight:400}.modal-content .error{color:var(--rojo);font-size:.8rem;font-weight:500}.modal-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.modal-actions .btn{width:auto;min-width:110px}@media (width<=420px){.modal-actions{flex-direction:column-reverse}.modal-actions .btn{width:100%}}@media (width<=600px){.modal-content{border-radius:16px;max-height:95vh}}.dashboard-metric{background:var(--card);border:1px solid var(--borde);border-radius:var(--radio);margin-bottom:.6rem;padding:.9rem 1rem}.dashboard-metric h3{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:0 0 .4rem;font-size:.85rem}.dashboard-metric .value{color:var(--texto);font-size:1.6rem;font-weight:800}.dashboard-metric .delta{font-size:.82rem;font-weight:600}.dashboard-metric .delta.up{color:#27ae60}.dashboard-metric .delta.down{color:var(--rojo)}.badge-pill{background:var(--borde);color:var(--texto);border-radius:99px;padding:.1rem .55rem;font-size:.78rem;font-weight:700;display:inline-block}.badge-pill.verde{color:#1e8449;background:#d5f5e3}.badge-pill.rojo{color:#a93226;background:#fadbd8}.badge-pill.amarillo{color:#7d6608;background:#fcf3cf}.badge-pill.naranja{color:#a04000;background:#fde3cf}.login{background:linear-gradient(135deg,#0b4f3e 0%,#0f6e56 55%,#2a9d7f 100%);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{text-align:center;background:#fff;border-radius:20px;width:min(100%,26rem);padding:2.2rem 1.8rem;box-shadow:0 20px 50px #00000047}.login-logo{color:#fff;background:#0f6e56;border-radius:18px;place-items:center;width:64px;height:64px;margin:0 auto 1rem;font-size:2rem;font-weight:700;display:grid}.login-card h1{color:#1d2522;margin:0;font-size:1.6rem}.login-sub{color:#5d6b66;margin:.3rem 0 1.2rem}.login-list{text-align:left;gap:.5rem;margin:0 0 1.5rem;padding:0;list-style:none;display:grid}.login-list li{color:#1d2522;padding-left:1.6rem;position:relative}.login-list li:before{content:"✔";color:#0f6e56;font-weight:700;position:absolute;left:0}.login-btn{color:#1d2522;cursor:pointer;background:#fff;border:1.5px solid #8c9a95;border-radius:10px;justify-content:center;align-items:center;gap:.7rem;width:100%;padding:.85rem 1rem;font-size:1rem;font-weight:600;display:flex}.login-btn:hover{background:#f4f6f5;border-color:#0f6e56}.login-note{color:#5d6b66;margin:1.1rem 0 0;font-size:.8rem}.topbar{background:linear-gradient(135deg,#0b4f3e,#0f6e56);box-shadow:0 2px 10px #00000026}.topbar .logo{border-radius:11px;place-items:center;width:38px;height:38px;padding:0;font-size:1.1rem;display:grid}.topbar .brand strong{font-size:1rem}.topbar .brand small{background:#ffffff2e;border-radius:99px;margin-top:2px;padding:1px 9px;display:inline-block}.avatar{color:#fff;cursor:pointer;background:#fff3;border:2px solid #fff;border-radius:50%;width:40px;height:40px;font-size:.9rem;font-weight:700}.bottomnav{box-shadow:0 -4px 14px #0000000f}.bottomnav a,.mas-btn{cursor:pointer;background:0 0;border:0;font-family:inherit}.mas-btn{min-height:64px;color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;font-size:.78rem;font-weight:600;display:flex}.bottomnav a.active,.mas-btn.active{color:var(--verde);background:0 0}.bottomnav a.active:before,.mas-btn.active:before{content:"";background:var(--verde);border-radius:0 0 3px 3px;height:3px;position:absolute;top:0;left:30%;right:30%}.mas-btn{position:relative}.nav-ico{margin-bottom:2px}.bottomnav a.extra,.side-user{display:none}.sheet-bg{z-index:30;background:#0006;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;padding:1rem 1rem calc(1.2rem + env(safe-area-inset-bottom));background:#fff;border-radius:22px 22px 0 0}.sheet h4{text-align:center;color:var(--muted);margin:0 0 .8rem;font-size:.85rem}.sheet-grid{grid-template-columns:repeat(4,1fr);gap:.5rem;display:grid}.sheet-grid a{background:var(--fondo);color:var(--verde);border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:.8rem 0;font-size:.78rem;font-weight:600;text-decoration:none;display:flex;position:relative}.sheet-grid a.active{background:var(--verde-2)}.sheet-out{color:#a2281b;cursor:pointer;background:#fde0dc;border:0;border-radius:99px;margin:1rem auto 0;padding:.6rem 1.2rem;font-family:inherit;font-weight:600;display:block}@media (width>=900px){body{padding-bottom:0;padding-left:220px}.topbar{margin-left:-220px;padding-left:1rem}.bottomnav{width:220px;box-shadow:none;background:#0b4f3e;border:0;flex-direction:column;justify-content:flex-start;gap:4px;padding:1rem .6rem;top:62px;bottom:0;right:auto}.bottomnav a{color:#d5e8e1;border-radius:10px;flex-direction:row;flex:none;justify-content:flex-start;gap:12px;min-height:44px;padding:0 12px;font-size:.95rem}.bottomnav a.active{color:#fff;background:#ffffff2e}.bottomnav a.active:before{display:none}.bottomnav a.extra{display:flex}.nav-ico{margin:0}.mas-btn{display:none}.dot{margin-left:auto;position:static}.side-user{color:#d5e8e1;margin-top:auto;padding:.5rem;font-size:.8rem;display:block}.side-user button{color:#fff;cursor:pointer;background:#ffffff26;border:0;border-radius:8px;margin-top:.4rem;padding:.4rem .8rem;display:block}.sheet-bg{display:none}}:root{--sombra:0 2px 10px #0f6e5614;--verde-osc:#0b4f3e}body{font-family:Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif}main{max-width:760px}h1{color:var(--verde-osc);font-size:1.5rem}h2{color:var(--verde-osc);font-size:1.1rem}.card,.stat,.timeline li,.empty,.empty-state{box-shadow:var(--sombra)}.card{border-color:#e3eae7;border-radius:16px}a.card{transition:transform .1s,box-shadow .15s}a.card:hover{transform:translateY(-1px);box-shadow:0 6px 18px #0f6e5629}.stat{border-left-width:0;border-top:4px solid var(--verde);border-radius:16px}.stat.warn{border-top-color:var(--amarillo)}.stat.danger{border-top-color:var(--rojo)}.stat.ok{border-top-color:#27ae60}.stat .n{color:var(--verde-osc)}.stat.danger .n{color:var(--rojo)}.meta-card{background:linear-gradient(135deg,#0b4f3e,#0f6e56 60%,#2a9d7f);border-radius:18px;box-shadow:0 8px 22px #0f6e5647}.btn{border-color:#cfd9d5;border-radius:12px}.btn:hover:not(:disabled){border-color:var(--verde)}.btn.primary{background:linear-gradient(135deg,#0f6e56,#149174);border:0;box-shadow:0 4px 12px #0f6e5640}.btn.ok{background:#1e9e55;border:0}.btn.danger{border:0}input,select,textarea{border-color:#cfd9d5;border-radius:12px}input:focus,select:focus,textarea:focus{border-color:var(--verde);outline:3px solid #bfe3d8}.badge{letter-spacing:.01em}.tbl{box-shadow:var(--sombra);background:#fff;border-radius:12px;overflow:hidden}.tbl th{color:var(--verde-osc);text-transform:uppercase;letter-spacing:.03em;background:#eef5f2;font-size:.8rem}.tbl tr:last-child td{border-bottom:0}.timeline{border-left-color:#cfe3db}.alert{border-left-width:5px}.back{color:var(--verde);box-shadow:var(--sombra)}.opt input:checked+span{box-shadow:0 0 0 3px #bfe3d8}.cargando{text-align:center;min-height:50vh;color:var(--muted);place-content:center;gap:.8rem;display:grid}.spinner{border:4px solid #cfe3db;border-top-color:var(--verde);border-radius:50%;width:34px;height:34px;margin:0 auto;animation:1s linear infinite giro}@keyframes giro{to{transform:rotate(360deg)}}.error-box{text-align:center;justify-items:center;gap:.8rem;padding:2rem 1rem;display:grid}.error-box .btn{width:auto;min-width:160px}
