/* ===== SECTION: HABITS (habits + dailies + to-do) ===== */

/* Cabeceras y controles */
.todo-head{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1.2rem}
.todo-body{margin-bottom:1rem}
.sub-tabs{display:flex;gap:.5rem}
.sub-tab{background:transparent;border:none;color:var(--muted);padding:.5rem .9rem;border-radius:8px;cursor:pointer;font-size:.9rem}
.sub-tab:hover{color:var(--text)}
.sub-tab.active{background:var(--card);color:var(--accent);font-weight:600}
.view-btns{display:flex;gap:.3rem}
.view-btn{background:transparent;border:1px solid var(--border);color:var(--muted);padding:.4rem .8rem;border-radius:6px;cursor:pointer;font-size:.85rem}
.view-btn:hover{color:var(--text)}
.view-btn.active{background:var(--accent);color:#121212;border-color:var(--accent);font-weight:600}
.nav-btn{background:transparent;border:1px solid var(--border);color:var(--muted);padding:.4rem .7rem;border-radius:6px;cursor:pointer;font-size:.85rem}
.nav-btn:hover{color:var(--text)}
.view-label{color:var(--text);font-weight:600;font-size:.9rem;padding:0 .3rem;align-self:center;min-width:120px;text-align:center}
.date-search{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:.4rem .5rem;font-size:.85rem;cursor:pointer}
.date-search::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer}
.date-search:hover{border-color:var(--accent)}

/* Grid día / semana / mes */
.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.day-grid{display:grid;grid-template-columns:1fr;gap:6px}
.head{margin-bottom:6px}
.dhead{display:flex;flex-direction:column;align-items:center;color:var(--muted);font-size:.75rem;font-weight:600}
.dhead.today{color:#fff}
.cell{width:100%;height:30px;border-radius:6px;border:1px solid var(--color);background:transparent;cursor:pointer;transition:transform .1s;display:flex;align-items:center;justify-content:center;position:relative}
.cell-num{font-size:.62rem;color:var(--muted);font-weight:600}
.cell.done{background:var(--color)}
.cell.done .cell-num{color:#121212}
.cell.today{box-shadow:0 0 0 2px rgba(255,255,255,.85)}
.cell.today .cell-num{color:#fff}
.cell.future{opacity:.3}
.cell.other-month{opacity:.15;pointer-events:none}
.day-grid .cell{width:100%;max-width:120px;justify-self:start}

/* Tarjeta habit / daily */
.item{background:var(--card);border-radius:12px;padding:.3rem .75rem;margin-bottom:.75rem;border-left:5px solid var(--color);transition:transform .2s ease}
.item .top{display:flex;align-items:center;gap:.4rem;margin-bottom:.6rem;flex-wrap:wrap}
.item .name{font-weight:600;cursor:pointer;font-size:.9rem}
.item .name:hover{text-decoration:underline}
.item .streak{color:var(--muted);font-size:.75rem}
.item.dragging{opacity:.4}
.item.drop-anim{animation:itemBounce .4s ease}
@keyframes itemBounce{0%{transform:scale(1)}40%{transform:scale(1.02)}70%{transform:scale(.98)}100%{transform:scale(1)}}

/* To-Do */
.todo-item{background:var(--card);border-radius:12px;padding:.3rem .75rem;margin-bottom:.75rem;border-left:5px solid var(--color,#9ca3af)}

.todo-item.archived{opacity:.7}
.todo-item.finished{opacity:.6}
.todo-item.dragging{opacity:.4}
.todo-top{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.todo-name{font-weight:600;cursor:pointer;flex:1;min-width:150px}
.todo-name:hover{text-decoration:underline}
.todo-due{color:var(--muted);font-size:.75rem}
.todo-quad{font-size:.7rem;color:var(--muted);text-transform:uppercase;background:var(--bg);padding:.2rem .5rem;border-radius:4px}
.todo-progress{font-size:.75rem;color:var(--muted);margin-top:.4rem}
.todo-notes{font-size:.85rem;color:var(--muted);margin:.2rem 0;white-space:pre-wrap}
.subtask-list{margin-top:.6rem;padding-left:.5rem;border-left:2px solid var(--border)}
.subtask{display:flex;align-items:center;gap:.5rem;padding:.3rem 0;font-size:.85rem}
.subtask.done span{text-decoration:line-through;color:var(--muted)}
.subtask input[type=checkbox]{accent-color:var(--accent)}
.empty-msg{color:var(--muted);text-align:center;padding:2rem}

/* Eisenhower */
.eisen-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.eisen-col{background:var(--card);border-radius:12px;padding:1rem;border-top:4px solid var(--ec);min-height:120px;transition:transform .2s ease,box-shadow .2s ease}
.eisen-col:has(.todo-item.drop-anim){transform:scale(1.02);box-shadow:0 0 0 3px var(--ec)}
.eisen-title{font-weight:600;font-size:.85rem;margin-bottom:.8rem;color:var(--muted)}
.eisen-body{display:flex;flex-direction:column;gap:.6rem}
.eisen-empty{color:var(--muted);text-align:center;padding:1rem;font-size:.85rem}
@media(max-width:600px){.eisen-grid{grid-template-columns:1fr}}

/* Drag & drop */
.todo-item[draggable="true"]{cursor:grab}
.todo-item[draggable="true"]:active{cursor:grabbing}
.todo-item.drop-anim{animation:bounce .5s ease}
@keyframes bounce{0%{transform:scale(1)}40%{transform:scale(1.06)}70%{transform:scale(.97)}100%{transform:scale(1)}}
/* ===== Tipografía: títulos bold estilo Habitica ===== */
.item .name,
.todo-name,
.eisen-title,
.view-label,
.dhead,
.settings-header h3,
.modal h3{
  font-family: 'Tallhaus', 'Anton', sans-serif;
  font-weight: 700;
  letter-spacing: .5px;
}
.cell-num{
  font-family: 'Tallhaus', 'Anton', sans-serif;
  font-weight: 700;
  font-size: .7rem;
}

/* ===== Drag & drop: rebote y crecimiento ===== */
.todo-item.drop-anim{ animation: bounce .5s ease; }
@keyframes bounce{
  0%{ transform: scale(1); }
  40%{ transform: scale(1.06); }
  70%{ transform: scale(.97); }
  100%{ transform: scale(1); }
}
.item.drop-anim{ animation: itemBounce .4s ease; }
@keyframes itemBounce{
  0%{ transform: scale(1); }
  40%{ transform: scale(1.02); }
  70%{ transform: scale(.98); }
  100%{ transform: scale(1); }
}
.item{ transition: transform .2s ease; }
.item.dragging{ opacity:.4; }
/* ===== Drag: agrandar al agarrar ===== */
.item.dragging,
.todo-item.dragging{
  opacity:.4;
  transform: scale(1.05);
  transition: transform .15s ease;
}

/* ===== Soltar: rebote de regreso ===== */
.item.drop-anim{
  animation: itemBounce .4s ease;
}
@keyframes itemBounce{
  0%{ transform: scale(1.05); }
  40%{ transform: scale(1.08); }
  70%{ transform: scale(.97); }
  100%{ transform: scale(1); }
}

.todo-item.drop-anim{
  animation: bounce .5s ease;
}
@keyframes bounce{
  0%{ transform: scale(1.05); }
  40%{ transform: scale(1.08); }
  70%{ transform: scale(.97); }
  100%{ transform: scale(1); }
}
/* Streak a la derecha */
.item .streak{
  margin-left:auto;
  text-align:right;
  white-space:nowrap;
}
/* To-Do: agrandar al arrastrar */
.todo-item.dragging{
  opacity:.4;
  transform: scale(1.05);
  transition: transform .15s ease;
}

/* To-Do: rebote al soltar (vista lista) */
.todo-item.drop-anim{
  animation: todoBounce .5s ease;
}
@keyframes todoBounce{
  0%{ transform: scale(1.05); }
  40%{ transform: scale(1.08); }
  70%{ transform: scale(.97); }
  100%{ transform: scale(1); }
}

/* Eisenhower: la columna rebota al recibir el drop */
.eisen-col.drop-anim{
  animation: colBounce .5s ease;
}
@keyframes colBounce{
  0%{ transform: scale(1.03); }
  40%{ transform: scale(1.06); }
  70%{ transform: scale(.98); }
  100%{ transform: scale(1); }
}
/* Aviso en la pestaña Finished */
.finished-warn{
  background:rgba(239,68,68,.12);
  border:1px solid rgba(239,68,68,.4);
  color:var(--danger);
  padding:.6rem .9rem;
  border-radius:8px;
  font-size:.8rem;
  margin-bottom:.8rem;
}
/* Subtareas en la tarjeta: grip + estado al arrastrar */
.subtask .chk-grip{cursor:grab}
/* Subtareas al frente: arrastrar una subtarea no arrastra la tarjeta */
.subtask{
  position:relative;
  z-index:5;
}
.subtask.dragging{
  opacity:.4;
  z-index:10;
}
/* Al arrastrar: crece ligeramente (igual que habits/todos) */
.checklist-row.dragging,
.subtask.dragging{
  opacity:.4;
  transform:scale(1.05);
  transition:transform .15s ease;
}
/* El asa de arrastre nunca se tacha, ni completada ni pendiente */
.subtask.done .chk-grip,
.subtask .chk-grip{
  text-decoration:none;
}
/* Popup de edición: crece al arrastrar */
.checklist-row.dragging{
  opacity:.4;
  transform:scale(1.05);
  transition:transform .15s ease;
}
/* Tarjeta: crece y se desplaza a la derecha al arrastrar */
.subtask.dragging{
  opacity:.4;
  transform:translateX(10px) scale(1.05);
  transition:transform .15s ease;
}
/* Rebote al soltar en la tarjeta */
.subtask.drop-anim{
  animation:itemBounce .4s ease;
}
.subtask.done .chk-grip,
.subtask .chk-grip{ text-decoration:none; }

.subtask-list.collapsed{
  display:none;
}
.expand-all{
  display:inline-flex;
  align-items:center;
  gap:.3rem;
}
.expand-arrow{
  display:inline-block;
  transition:transform .2s ease;
}
.expand-arrow.open{
  transform:rotate(90deg);   /* apunta hacia abajo cuando está expandido */
}
.todo-head{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;   /* centra todo horizontalmente */
  gap:.5rem;
  margin-bottom:1.2rem;
}
.sub-tabs{
  display:flex;
  gap:.5rem;
  justify-content:center;
}
.view-btns{
  display:flex;
  gap:.3rem;
  justify-content:center;
}
.todo-body{
  margin:0 auto;            /* centra */
  max-width:640px;          /* ancho máximo */
  margin-bottom:1rem;
}
.dhead{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  color:var(--muted);
  font-size:.75rem;
  font-weight:600;
}
