/* TASKFLOW - estilos propios sobre Bootstrap 5.3. Contraste AA, foco visible, objetivos tactiles >= 24px, sin animacion si se pide. */

.skip-link {
  position: absolute; left: -999px; top: 0; z-index: 2000;
  background: var(--bs-body-bg); color: var(--bs-body-color);
  padding: .75rem 1rem; border: 2px solid var(--bs-primary);
}
.skip-link:focus { left: .5rem; top: .5rem; }

:focus-visible { outline: 3px solid var(--bs-primary); outline-offset: 2px; }
h1:focus { outline: none; }

body[data-auth="out"] .auth-only { display: none !important; }

.btn, .form-control, .form-select, .page-link, .nav-link { min-height: 2.25rem; }
.btn-sm { min-height: 1.75rem; }

/* tarjetas de tarea */
.task-card { border-left: .35rem solid var(--bs-secondary); }
.task-card.priority-low { border-left-color: var(--bs-secondary); }
.task-card.priority-medium { border-left-color: var(--bs-primary); }
.task-card.priority-high { border-left-color: var(--bs-warning); }
.task-card.priority-urgent { border-left-color: var(--bs-danger); }
.task-card a.stretched-link { text-decoration: none; }
.overdue { color: var(--bs-danger-text-emphasis); font-weight: 600; }

/* indicadores del panel */
.stat-card .display-6 { font-variant-numeric: tabular-nums; }

/* calendario */
.cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; background: var(--bs-border-color); border: 1px solid var(--bs-border-color); }
.cal-head { background: var(--bs-tertiary-bg); text-align: center; font-weight: 600; padding: .35rem 0; font-size: .85rem; }
.cal-cell { background: var(--bs-body-bg); min-height: 6.5rem; padding: .25rem; overflow: hidden; }
.cal-cell.muted { background: var(--bs-tertiary-bg); color: var(--bs-secondary-color); }
.cal-cell.today { box-shadow: inset 0 0 0 2px var(--bs-primary); }
.cal-day-num { font-size: .8rem; font-weight: 600; }
.cal-item { display: block; width: 100%; text-align: left; font-size: .75rem; line-height: 1.2; margin-top: 2px; padding: 2px 4px; border-radius: .25rem; border: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-item.priority-low { background: var(--bs-secondary-bg); color: var(--bs-body-color); }
.cal-item.priority-medium { background: var(--bs-primary-bg-subtle); color: var(--bs-primary-text-emphasis); }
.cal-item.priority-high { background: var(--bs-warning-bg-subtle); color: var(--bs-warning-text-emphasis); }
.cal-item.priority-urgent { background: var(--bs-danger-bg-subtle); color: var(--bs-danger-text-emphasis); }
.cal-item.done { text-decoration: line-through; opacity: .7; }
.cal-week-col { background: var(--bs-body-bg); min-height: 12rem; padding: .25rem; }

@media (max-width: 767.98px) {
  .cal-grid.month .cal-cell { min-height: 4.5rem; }
  .cal-item { font-size: .7rem; }
}

.timeline { list-style: none; padding-left: 0; }
.timeline li { border-left: 2px solid var(--bs-border-color); padding: 0 0 .75rem 1rem; position: relative; }
.timeline li::before { content: ""; position: absolute; left: -6px; top: .35rem; width: 10px; height: 10px; border-radius: 50%; background: var(--bs-primary); }

.checklist-item.done label { text-decoration: line-through; color: var(--bs-secondary-color); }
.file-drop { border: 2px dashed var(--bs-border-color); border-radius: .5rem; padding: 1rem; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
}
@media print {
  header, .btn, #toasts, #offlineBanner { display: none !important; }
}
