:root{
  --bg:#f6f5f2; --card:#fff; --tx:#1c1b19; --sub:#6b6862; --linea:#e6e3dc;
  --acento:#4338ca; --acento-tx:#fff; --ok:#15803d; --mal:#b91c1c; --alerta-bg:#fdecec;
  --radio:16px; --sombra:0 1px 2px rgba(0,0,0,.05),0 8px 24px rgba(0,0,0,.06);
}
@media (prefers-color-scheme:dark){
  :root{--bg:#121214; --card:#1b1b1f; --tx:#f2f1ee; --sub:#9c9a94; --linea:#2c2c31;
    --acento:#818cf8; --acento-tx:#10101a; --ok:#4ade80; --mal:#f87171; --alerta-bg:#3a1b1b;
    --sombra:0 1px 2px rgba(0,0,0,.4);}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);
  font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  padding-bottom:env(safe-area-inset-bottom)}
body.centrado{min-height:100dvh;display:grid;place-items:center;padding:16px}
.contenedor{max-width:720px;margin:0 auto;padding:16px}
.barra{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;align-items:center;
  padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));
  background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--linea)}
.tarjeta{background:var(--card);border:1px solid var(--linea);border-radius:var(--radio);
  box-shadow:var(--sombra);padding:20px;margin-bottom:16px}
.login{width:100%;max-width:380px;text-align:center}
.login form{text-align:left;display:grid;gap:14px;margin-top:18px}
.marca{font-size:40px}
h1{margin:.2em 0 0;font-size:1.6rem;letter-spacing:-.02em}
h2{margin:0 0 8px;font-size:1rem;color:var(--sub);font-weight:600}
.sub{color:var(--sub);margin:.2em 0;font-size:.92rem}
.centro{text-align:center}
.grande{font-size:2.2rem;font-weight:700;letter-spacing:-.03em;margin:.1em 0}
label{display:grid;gap:6px;font-size:.9rem;color:var(--sub);font-weight:500}
input{font:inherit;color:var(--tx);background:var(--bg);border:1px solid var(--linea);
  border-radius:12px;padding:13px 14px;min-height:48px;width:100%}
input:focus-visible,.btn:focus-visible{outline:2px solid var(--acento);outline-offset:2px}
.btn{font:inherit;font-weight:600;border:0;border-radius:12px;min-height:48px;padding:0 18px;cursor:pointer}
.primario{background:var(--acento);color:var(--acento-tx)}
.suave{background:transparent;color:var(--sub);min-height:40px;border:1px solid var(--linea)}
.alerta{background:var(--alerta-bg);color:var(--mal);border-radius:12px;padding:10px 14px;margin:14px 0 0;font-size:.92rem}
.progreso{height:10px;background:var(--linea);border-radius:99px;overflow:hidden;margin:12px 0}
.progreso span{display:block;height:100%;background:var(--ok);border-radius:99px}

/* ---- Fase 2 ---- */
.contenedor{padding-bottom:calc(88px + env(safe-area-inset-bottom))}
.fila{display:flex;gap:10px;margin-bottom:14px}
.fila input{flex:1}
a{color:inherit;text-decoration:none}
.volver{color:var(--sub);font-size:.92rem}
.item{display:block;transition:transform .08s}
.item:active{transform:scale(.99)}
.item[hidden]{display:none}
.item-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.item-top h1{margin:0;font-size:1.4rem}
.persona .progreso{margin:10px 0 6px}
.ancho{width:100%;margin-top:10px}
.chip{display:inline-block;margin-left:6px;padding:2px 9px;border-radius:99px;font-size:.75rem;font-weight:600;
  background:color-mix(in srgb,var(--acento) 15%,transparent);color:var(--acento)}
.chip.gris{background:var(--linea);color:var(--sub)}
.verde{color:var(--ok)} .rojo{color:var(--mal)}
.estado{margin:10px 0 0;padding:8px 12px;border-radius:10px;font-weight:600;font-size:.92rem}
.estado.aldia{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.estado.debe{background:var(--alerta-bg);color:var(--mal)}
.acciones{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
.acciones.izq{justify-content:flex-start;flex-wrap:wrap}
.aviso{padding:12px 14px;border-radius:12px;margin:0 0 14px;font-weight:500;background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}
.aviso.error{background:var(--alerta-bg);color:var(--mal)}
.aviso.aviso{background:#fff4d6;color:#8a5a00}
@media (prefers-color-scheme:dark){.aviso.aviso{background:#3a2e10;color:#fbbf24}}
.historial{list-style:none;margin:0;padding:0}
.historial li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--linea)}
.historial li:first-child{border-top:0}
.fila-q{padding:8px 0;border-top:1px solid var(--linea)}
dialog{border:0;border-radius:20px;padding:0;width:min(92vw,420px);background:var(--card);color:var(--tx);box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(0,0,0,.5)}
.dlg{display:grid;gap:14px;padding:20px}
.dlg h3{margin:0;font-size:1.15rem}
.dlg.quitar{padding-top:0}
.check{display:flex;align-items:center;gap:10px;color:var(--tx)}
.check input{width:22px;min-height:22px;height:22px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip-btn{font:inherit;font-size:.85rem;font-weight:600;border:1px solid var(--linea);background:var(--bg);color:var(--tx);border-radius:99px;padding:8px 14px;cursor:pointer}
.peligro{background:transparent;color:var(--mal);border:1px solid var(--mal)}
.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:8px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));
  background:color-mix(in srgb,var(--card) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--linea)}
.tabs a{flex:1;max-width:240px;text-align:center;padding:12px;border-radius:12px;font-weight:600;color:var(--sub)}
.tabs a[aria-current]{background:color-mix(in srgb,var(--acento) 14%,transparent);color:var(--acento)}
input[type=search]{-webkit-appearance:none}

/* ---- Fase 3 ---- */
.meses{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:14px}
.mes{display:flex;flex-direction:column;align-items:center;padding:8px 0;border-radius:12px;background:var(--card);border:1px solid var(--linea);font-weight:600;font-size:.9rem}
.mes small{color:var(--sub);font-weight:500;font-size:.7rem}
.mes.hoy{border-color:var(--acento)}
.mes.sel{background:var(--acento);color:var(--acento-tx);border-color:var(--acento)}
.mes.sel small{color:inherit;opacity:.8}
.lista-deuda{list-style:none;margin:10px 0 0;padding:0}
.lista-deuda li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--linea);font-size:.95rem}
.lista-deuda li:first-child{border-top:0}
.lista-deuda a{font-weight:500}
.deudor .lista-deuda{margin-top:6px}
.cifras{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:6px}
.cifras div{background:var(--bg);border-radius:12px;padding:10px 12px}
.cifras small{display:block;color:var(--sub);font-size:.75rem}
.cifras strong{font-size:.98rem}
#copiar-img{margin-top:4px}

/* ---- Ayuda contextual (icono i) ---- */
.info{position:relative;flex:none;display:inline-grid;place-items:center;width:24px;height:24px;margin:0 0 0 6px;padding:0;
  vertical-align:middle;border-radius:50%;border:2px solid var(--acento);background:transparent;color:var(--acento);
  font:italic 800 .85rem/1 Georgia,"Times New Roman",serif;cursor:pointer;animation:pulsa-i 2s ease-out infinite}
.info::before{content:"";position:absolute;inset:-10px}
.info:hover,.info:focus-visible{background:var(--acento);color:var(--acento-tx)}
.info:focus-visible{outline:2px solid var(--acento);outline-offset:2px}
.info.quieto{animation:none}
@keyframes pulsa-i{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--acento) 55%,transparent)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}
@media (prefers-reduced-motion:reduce){.info{animation:none}}
h1 .info,h2 .info{font-size:.85rem}
.etiqueta-info{display:flex;align-items:center;margin:0 0 8px}
.titulo-dlg{display:flex;align-items:center;gap:4px}
.titulo-dlg .info{margin-left:2px}
.fila-copiar{display:flex;align-items:center;gap:10px;margin:0 0 10px}
.fila-copiar .btn{flex:1;width:auto;margin:0}
.fila-copiar .info{margin:0}
.persona .fila-copiar{margin:10px 0 0}
.fila .info{margin:0}
dialog.ayuda{max-height:88dvh;overflow:auto}
.info-cuerpo p{margin:0 0 10px;font-size:.95rem}
.info-cuerpo p:last-child{margin-bottom:0}
#copiar-msg{margin:0 0 14px}
#copiar-msg:empty{display:none}
.con-info{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.con-info .info{margin:0}
.fila{align-items:center}
.fila input{min-width:0}

/* ---- Cambiar clave ---- */
.barra{gap:8px}
.enlace-clave{display:inline-grid;place-items:center;margin-left:auto;font-size:.88rem;padding:0 12px}
.barra .enlace-clave + form{margin:0}
.ver-clave{display:flex;align-items:center;gap:8px;color:var(--sub);font-size:.88rem}
.ver-clave input{width:20px;min-height:20px;height:20px}
.reglas{color:var(--sub);font-size:.88rem;margin:0}
