/* operacion.css — C-19: Presentaciones (lista, filtros, marcado, celebración, hoja de
   detalle con historial) y Generar período. Colores: solo tokens. Movimiento: solo
   transform/opacity, <= 300 ms. Hover solo bajo (hover: hover). Reutiliza los
   componentes de componentes.css y maestros.css (chips, insignias, diálogo, bloques). */

/* ---- Filtros de Presentaciones ---- */
.pres__nota-excel {
  margin-top: calc(var(--esp-4) * -1);
  color: var(--texto-suave);
  font-size: var(--texto-sm);
  font-weight: var(--peso-fuerte);
}

.chip__cara {
  gap: var(--esp-2);
}

.chip__cuenta {
  min-width: 1.5rem;
  padding: 0 var(--esp-1);
  border-radius: var(--radio-pildora);
  background: var(--rosa-100);
  color: var(--tinta-marca);
  font-size: var(--texto-xs);
  font-variant-numeric: tabular-nums;
  line-height: 1.5;
  text-align: center;
}

.chip__cuenta:empty {
  display: none;
}

.chip__radio:checked + .chip__cara .chip__cuenta {
  background: var(--blanco);
  color: var(--rosa-700);
}

.pres__secundarios {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--esp-4) var(--esp-6);
}

.pres__boton-filtros {
  display: none;
  align-self: end;
}

.filtros__fecha {
  font-variant-numeric: tabular-nums;
}

.pres__etiquetas {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--esp-2);
}

.pres__etiquetas:empty {
  display: none;
}

/* Etiqueta removible de un filtro activo ("Quitar filtro: IVA"). */
.etiqueta {
  display: inline-flex;
  align-items: center;
  gap: var(--esp-2);
  min-height: var(--tactil);
  max-width: 100%;
  padding: 0 var(--esp-3);
  border: 0;
  border-radius: var(--radio-pildora);
  background: var(--rosa-100);
  color: var(--tinta-marca);
  font: inherit;
  font-size: var(--texto-sm);
  font-weight: var(--peso-extra);
  cursor: pointer;
}

.etiqueta span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ---- Lista: tarjeta (< 768 px) / fila en columnas (>= 768 px) ---- */
.filas {
  display: grid;
  gap: var(--esp-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.fila {
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  grid-template-areas:
    "soc soc soc"
    "imp per estado"
    "vence vence vence"
    "resp resp resp"
    "acc acc acc";
  align-items: center;
  gap: var(--esp-2) var(--esp-3);
  padding: var(--esp-4);
  border-radius: var(--radio-lg);
  background: var(--superficie);
  box-shadow: var(--sombra-tarjeta);
}

.fila__sociedad {
  grid-area: soc;
  min-width: 0;
}

.fila__razon {
  color: var(--titulo);
  font-size: var(--texto-md);
  font-weight: var(--peso-negro);
  letter-spacing: -0.01em;
  overflow-wrap: anywhere;
}

/* Enlace al detalle: área táctil de 44 px sin agrandar la fila. */
.fila__enlace {
  display: inline-block;
  margin-block: -0.625rem;
  padding-block: 0.625rem;
  text-decoration-color: var(--rosa-300);
}

.fila__impuesto {
  grid-area: imp;
  display: flex;
  align-items: center;
  gap: var(--esp-2);
}

.fila__periodo {
  grid-area: per;
  color: var(--texto-suave);
  font-weight: var(--peso-extra);
}

.fila__vence {
  grid-area: vence;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--esp-1) var(--esp-2);
}

.fila__responsable {
  grid-area: resp;
  display: flex;
  flex-wrap: wrap;
  gap: var(--esp-2);
  color: var(--texto);
  font-size: var(--texto-sm);
  font-weight: var(--peso-fuerte);
}

.fila__estado {
  position: relative;
  grid-area: estado;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--esp-1);
}

.fila__acciones {
  grid-area: acc;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--esp-2);
  padding-top: var(--esp-3);
  border-top: 1px solid var(--rosa-100);
}

.fila__etiqueta {
  color: var(--texto-suave);
  font-size: var(--texto-xs);
  font-weight: var(--peso-extra);
}

.fila__sociedad .fila__etiqueta,
.fila__impuesto .fila__etiqueta,
.fila__periodo .fila__etiqueta,
.fila__estado .fila__etiqueta {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.fila__dato {
  color: var(--titulo);
  font-weight: var(--peso-extra);
  font-variant-numeric: tabular-nums;
}

.fila__relativo {
  color: var(--texto-suave);
  font-size: var(--texto-sm);
  font-weight: var(--peso-fuerte);
}

.fila__relativo--urgente {
  color: var(--alerta);
  font-weight: var(--peso-negro);
}

.fila__relativo--vencido {
  color: var(--peligro);
  font-weight: var(--peso-extra);
}

.fila--cabecera {
  display: none;
}

.fila--fantasma {
  grid-template-areas: none;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--esp-3);
  min-height: 5.5rem;
}

.sello-estado {
  gap: var(--esp-1);
}

.sello-estado__icono {
  display: grid;
}

.insignia--pendiente {
  background: var(--rosa-100);
  color: var(--tinta-marca);
}

.pres__pie {
  display: flex;
  justify-content: center;
}

.pres__pie:empty {
  display: none;
}

/* ---- Botón de dos toques ---- */
.marcar__envoltura {
  display: inline-flex;
}

.marcar .boton__cara {
  padding: 0 var(--esp-3);
  white-space: nowrap;
}

.marcar--armado .boton__cara {
  --cara: var(--acento);
}

/* ---- Celebración (<= 300 ms, solo transform/opacity; ver celebracion.js) ---- */
.destellos {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  pointer-events: none;
}

.destello {
  position: absolute;
  top: -0.5rem;
  left: -0.5rem;
  display: none;
  color: var(--acento);
  opacity: 0;
}

.destello--2,
.destello--5 {
  color: var(--rosa-300);
}

.destello--3,
.destello--6 {
  color: var(--exito);
}

@media (prefers-reduced-motion: no-preference) {
  .destello {
    display: block;
    animation: destello-1 var(--dur-lenta) var(--ease-out) both;
  }

  .destello--2 {
    animation-name: destello-2;
    animation-delay: var(--retraso-1);
  }

  .destello--3 {
    animation-name: destello-3;
    animation-delay: var(--retraso-3);
  }

  .destello--4 {
    animation-name: destello-4;
    animation-delay: var(--retraso-5);
  }

  .destello--5 {
    animation-name: destello-5;
    animation-delay: var(--retraso-2);
  }

  .destello--6 {
    animation-name: destello-6;
    animation-delay: var(--retraso-4);
  }

  .celebra .sello-estado {
    animation: estado-aparece var(--dur-base) var(--ease-out);
  }

  .celebra--latido {
    animation: latido var(--dur-latido) var(--ease-out);
  }

  .celebra--grande .celebra__figura {
    animation: estado-aparece var(--dur-lenta) var(--ease-out);
  }
}

/* Movimiento reducido: solo un fundido breve del estado nuevo, sin destellos ni escalas. */
@media (prefers-reduced-motion: reduce) {
  .celebra .sello-estado,
  .celebra--grande .celebra__figura {
    animation-name: fundido-estado;
    animation-duration: var(--dur-rapida) !important;
  }
}

@keyframes estado-aparece {
  from {
    opacity: 0;
    transform: scale(0.95);
  }
}

@keyframes fundido-estado {
  from {
    opacity: 0;
  }
}

@keyframes latido {
  50% {
    transform: scale(1.01);
  }
}

@keyframes destello-1 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(-2.6rem, -1.6rem) scale(1);
  }
}

@keyframes destello-2 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(2.4rem, -1.8rem) scale(1);
  }
}

@keyframes destello-3 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(3rem, 0.2rem) scale(1);
  }
}

@keyframes destello-4 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(1.8rem, 1.7rem) scale(1);
  }
}

@keyframes destello-5 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(-2rem, 1.6rem) scale(1);
  }
}

@keyframes destello-6 {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(0.95);
  }

  100% {
    opacity: 0;
    transform: translate(-3rem, -0.1rem) scale(1);
  }
}

/* ---- Hoja de detalle: lateral (>= 768 px) / inferior (< 768 px), sobre <dialog> ---- */
.dialogo--hoja {
  width: min(30rem, 100vw);
  max-width: none;
  height: 100dvh;
  max-height: none;
  margin: 0 0 0 auto;
  border-radius: var(--radio-lg) 0 0 var(--radio-lg);
}

.dialogo--hoja .dialogo__caja {
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  min-height: 100%;
}

.dialogo--hoja .dialogo__descripcion {
  margin-top: calc(var(--esp-3) * -1);
  color: var(--texto-suave);
  font-weight: var(--peso-extra);
}

.dialogo--hoja .dialogo__cuerpo {
  align-content: start;
  gap: var(--esp-5);
}

.hoja__estado {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  gap: var(--esp-2);
}

.hoja__datos {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10rem), 1fr));
}

.hoja__subtitulo {
  display: flex;
  align-items: center;
  gap: var(--esp-2);
  font-size: var(--texto-base);
}

.hoja__texto {
  white-space: pre-line;
}

.hoja__acciones {
  display: flex;
  flex-wrap: wrap;
  gap: var(--esp-3);
}

.historial {
  display: grid;
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.historial__item {
  position: relative;
  display: grid;
  gap: var(--esp-1);
  padding: 0 0 var(--esp-4) var(--esp-6);
  border-left: 2px solid var(--rosa-200);
  margin-left: var(--esp-2);
}

.historial__item:last-child {
  padding-bottom: 0;
  border-left-color: transparent;
}

.historial__item::before {
  content: "";
  position: absolute;
  top: 0.3rem;
  left: -0.4375rem;
  width: 0.75rem;
  height: 0.75rem;
  border-radius: var(--radio-pildora);
  background: var(--rosa-300);
}

.historial__item--presentada::before {
  background: var(--exito);
}

.historial__item--revertida::before {
  background: var(--alerta);
}

.historial__texto {
  color: var(--titulo);
  font-weight: var(--peso-extra);
}

.historial__fecha,
.historial__vacio {
  color: var(--texto-suave);
  font-size: var(--texto-sm);
  font-weight: var(--peso-fuerte);
  font-variant-numeric: tabular-nums;
}

@media (prefers-reduced-motion: no-preference) {
  .dialogo--hoja[open] {
    animation: hoja-lateral-entra var(--dur-lenta) var(--ease-in-out);
  }

  .dialogo--hoja[data-saliendo="true"] {
    animation: hoja-lateral-sale var(--dur-rapida) var(--ease-in-out) forwards;
  }
}

@keyframes hoja-lateral-entra {
  from {
    transform: translateX(100%);
  }
}

@keyframes hoja-lateral-sale {
  to {
    transform: translateX(100%);
  }
}

@keyframes hoja-inferior-entra {
  from {
    transform: translateY(100%);
  }
}

@keyframes hoja-inferior-sale {
  to {
    transform: translateY(100%);
  }
}

/* ---- Generar período ---- */
.generar__zona {
  display: grid;
  gap: var(--esp-6);
}

.generar .maestro__resultado {
  display: grid;
  gap: var(--esp-6);
}

.generar__ayuda {
  max-width: 65ch;
  color: var(--texto-suave);
}

.periodos {
  display: grid;
  gap: var(--esp-4);
}

.periodos__anio {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.periodos__meses {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr));
  gap: var(--esp-2);
  margin-top: var(--esp-2);
}

.periodo {
  display: flex;
}

.periodo__cara {
  display: grid;
  justify-items: start;
  gap: 0;
  width: 100%;
  min-height: 3.5rem;
  padding: var(--esp-2) var(--esp-4);
  border-radius: var(--radio-md);
}

.periodo__mes {
  text-transform: capitalize;
}

.periodo__estado {
  color: var(--texto-suave);
  font-size: var(--texto-xs);
  font-weight: var(--peso-fuerte);
}

.periodo--generado .periodo__estado {
  color: var(--exito);
  font-weight: var(--peso-extra);
}

.chip__radio:checked + .periodo__cara .periodo__estado {
  color: var(--blanco);
}

.numeros {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10.5rem), 1fr));
  gap: var(--esp-3);
  margin: 0;
}

.numero {
  display: grid;
  align-content: start;
  gap: var(--esp-1);
  padding: var(--esp-4);
  border-radius: var(--radio-md);
  background: var(--rosa-50);
}

.numero dt {
  color: var(--texto-suave);
  font-size: var(--texto-sm);
  font-weight: var(--peso-extra);
  line-height: 1.3;
}

.numero dd {
  order: -1;
  margin: 0;
  color: var(--titulo);
  font-size: var(--texto-xl);
  font-weight: var(--peso-negro);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}

.numero--crear:not(.numero--cero) {
  background: var(--exito-fondo);
}

.numero--crear:not(.numero--cero) dt,
.numero--crear:not(.numero--cero) dd {
  color: var(--exito);
}

.numero--sin-calendario:not(.numero--cero),
.numero--responsable:not(.numero--cero) {
  background: var(--alerta-fondo);
}

.numero--sin-calendario:not(.numero--cero) dt,
.numero--sin-calendario:not(.numero--cero) dd,
.numero--responsable:not(.numero--cero) dt,
.numero--responsable:not(.numero--cero) dd {
  color: var(--alerta);
}

.generar__faltantes {
  display: grid;
  gap: var(--esp-3);
}

.generar__faltante {
  display: grid;
  gap: var(--esp-2);
  padding: var(--esp-4);
  border-radius: var(--radio-md);
  background: var(--rosa-50);
}

.generar__faltante-titulo {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--esp-2);
}

.generar__nombres {
  display: flex;
  flex-wrap: wrap;
  gap: var(--esp-1) var(--esp-4);
  margin: 0;
  padding: 0;
  list-style: none;
  color: var(--texto);
  font-size: var(--texto-sm);
  font-weight: var(--peso-fuerte);
}

.generar__mas summary {
  display: inline-flex;
  align-items: center;
  min-height: var(--tactil);
  color: var(--enlace);
  font-size: var(--texto-sm);
  font-weight: var(--peso-extra);
  cursor: pointer;
}

.generar__faltante .boton,
.generar__faltantes > .boton {
  justify-self: start;
}

.generar__resultado {
  position: relative;
}

.generar__exito {
  width: min(11rem, 50%);
  height: auto;
}

.generar__titulo-resultado {
  position: relative;
  font-size: var(--texto-lg);
}

/* ---- Hover (puntero fino) ---- */
@media (hover: hover) and (pointer: fine) {
  .etiqueta:hover {
    background: var(--rosa-200);
  }
}

/* ---- Escritorio ancho (>= 1280 px): la tarjeta pasa a fila en columnas. Entre 768 y
   1279 px el contenido no alcanza para las columnas: siguen las tarjetas, en grilla. ---- */
@media (min-width: 48rem) and (max-width: 79.99rem) {
  .filas {
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 21rem), 1fr));
  }
}

@media (min-width: 80rem) {
  .filas {
    gap: 0;
    border-radius: var(--radio-lg);
    background: var(--superficie);
    box-shadow: var(--sombra-tarjeta);
    overflow: hidden;
  }

  .fila,
  .fila--cabecera {
    grid-template-columns: minmax(0, 1fr) 5.5rem 9.5rem 9.5rem 10.5rem;
    grid-template-areas:
      "soc imp vence estado acc"
      "resp per vence estado acc";
    gap: 0 var(--esp-4);
    padding: var(--esp-3) var(--esp-5);
    border-radius: 0;
    box-shadow: none;
    border-bottom: 1px solid var(--rosa-100);
  }

  .filas > .fila:last-child {
    border-bottom: 0;
  }

  .fila--cabecera {
    display: grid;
    grid-template-areas: none;
    margin-bottom: var(--esp-2);
    padding-block: 0;
    border-bottom: 0;
    background: transparent;
    color: var(--texto-suave);
    font-size: var(--texto-xs);
    font-weight: var(--peso-negro);
    letter-spacing: 0.02em;
  }

  .fila__razon {
    font-size: var(--texto-base);
  }

  .fila__periodo {
    font-size: var(--texto-sm);
  }

  .fila__vence {
    display: grid;
    gap: 0;
  }

  .fila__responsable {
    color: var(--texto-suave);
  }

  .fila__estado {
    justify-content: flex-start;
  }

  .fila__acciones {
    justify-content: flex-end;
    flex-wrap: nowrap;
    padding-top: 0;
    border-top: 0;
  }

  .fila__etiqueta {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }

  /* El botón de dos toques ocupa un ancho fijo: armado, su texto pasa a dos líneas. */
  .fila__acciones .marcar__envoltura,
  .fila__acciones .marcar {
    width: 100%;
  }

  .fila__acciones .marcar {
    display: block;
  }

  .fila__acciones .marcar .boton__cara {
    white-space: normal;
    padding-block: var(--esp-1);
  }

  /* En escritorio el enlace al detalle es el nombre de la sociedad. */
  .fila__detalle {
    display: none;
  }

  .fila__estado {
    flex-direction: column;
    align-items: flex-start;
  }

  .fila--fantasma {
    grid-template-columns: minmax(0, 1fr);
    min-height: 3.75rem;
  }
}

@media (hover: hover) and (pointer: fine) and (min-width: 80rem) {
  .filas > .fila:hover {
    background: var(--rosa-50);
  }
}

/* ---- Celular: filtros secundarios en un panel "Filtros (N)" y hoja inferior ---- */
@media (max-width: 47.99rem) {
  .pres__boton-filtros {
    display: inline-block;
  }

  .pres__secundarios[data-abierto="false"] {
    display: none;
  }

  .pres__secundarios {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: var(--esp-4);
    border-radius: var(--radio-lg);
    background: var(--superficie);
    box-shadow: var(--sombra-tarjeta);
  }

  .pres__secundarios .filtros__select {
    width: 100%;
  }

  .fila__acciones .marcar__envoltura,
  .fila__acciones .marcar {
    flex: 1;
  }

  .fila__acciones .marcar {
    display: block;
  }

  .dialogo--hoja {
    width: 100vw;
    height: auto;
    max-height: 88dvh;
    margin: auto 0 0;
    border-radius: var(--radio-lg) var(--radio-lg) 0 0;
  }

  .dialogo--hoja .dialogo__caja {
    min-height: 0;
  }

  .hoja__acciones .marcar__envoltura,
  .hoja__acciones .boton {
    width: 100%;
  }

  .hoja__acciones .marcar__envoltura .boton {
    display: block;
  }
}

@media (max-width: 47.99rem) and (prefers-reduced-motion: no-preference) {
  .dialogo--hoja[open] {
    animation-name: hoja-inferior-entra;
  }

  .dialogo--hoja[data-saliendo="true"] {
    animation-name: hoja-inferior-sale;
  }
}
