/* ============================================================
   PUBLICAR · el drawer de "elegir red, revisar el texto y programar"
   Calcado de metricas.css: mismo drawer, misma cabecera, mismo pie.

   Lo propio de esta pantalla es un solo estado visual: el BOTÓN DE RED DESHABILITADO CON
   EL MOTIVO A LA VISTA. Por eso `.pb-chip.pb-no` no se esconde ni se aclara hasta
   desaparecer —queda legible, con su etiqueta— y por eso `.pb-motivo` tiene lugar propio
   abajo de los chips en vez de vivir solo en un `title`: un tooltip no existe para quien
   navega con teclado y no se puede copiar.

   Solo tokens de /tokens.css — cero hex hardcodeado.
   `.on` para "seleccionado", nunca `.sel`.
   ============================================================ */

.pb-abrir .pb-dot{
  display:inline-block; width:7px; height:7px; border-radius:50%;
  background:var(--petroleo); margin-right:7px; vertical-align:middle;
}

:root{ --pb-ancho: 470px; }

.pb-panel{
  position:fixed; top:0; right:0; height:100vh; width:min(var(--pb-ancho), 100vw);
  background:var(--s1); border-left:1px solid var(--line); box-shadow:var(--shadow);
  display:flex; flex-direction:column;
  transform:translateX(100%); transition:transform .22s ease;
  /* Mismo escalón que cta.css e inbox.css: por encima de --z-drawer-alto para no quedar tapado
     por conocimiento/métricas, y empatado con los otros dos drawers de Zernio, que se
     cierran entre ellos por el evento `tr3bol:drawer-abierto`. */
  z-index:calc(var(--z-drawer-alto) + 1);
}
.pb-panel.abierto{ transform:translateX(0); }
@media (prefers-reduced-motion: reduce){ .pb-panel{ transition:none; } }
@media (max-width: 520px){ .pb-panel{ width:100vw; } }
}

.pb-head{
  display:flex; align-items:center; gap:var(--sp-4);
  padding:var(--sp-6) var(--gut); border-bottom:1px solid var(--line);
}
.pb-head h3{ margin:0; font-size:var(--fs-base); }
/* .spacer se define una sola vez en /base.css. */
.pb-body{ flex:1; overflow-y:auto; padding:var(--sp-6) var(--gut); }
.pb-pie{
  display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap;
  padding:var(--sp-5) var(--gut); border-top:1px solid var(--line);
}
/* El hint baja a su propia línea: al lado de los dos botones quedaba en una columna de tres
   palabras de ancho y la diferencia entre programar y dejar borrador no se leía. */
.pb-pie-hint{ flex-basis:100%; margin:var(--sp-2) 0 0; }

/* ---------- el pie del drawer en el teléfono ----------
   Los dos botones son `flex-wrap:wrap` en una fila: a 390 entran justo, así que el
   secundario («Guardar como borrador», el más largo) se quedaba con la primera línea y
   «Programar en Instagram» —la acción principal, la que sale a una red de verdad— caía
   abajo y a la izquierda, más chico que el secundario. Apilados y a lo ancho, el orden lo
   dice el `order`: primero el que uno viene a hacer. */
@media (max-width: 520px){
  /* `nowrap` es imprescindible: la regla de arriba deja `flex-wrap:wrap`, y en un
     contenedor en COLUMNA envolver no baja a la línea siguiente sino que abre una COLUMNA
     NUEVA a la derecha — el hint terminaba a 376px de la izquierda, fuera de la pantalla. */
  .pb-pie{ flex-direction:column; align-items:stretch; flex-wrap:nowrap; }
  .pb-pie #pb-enviar{ order:-1; }
  .pb-pie #pb-enviar, .pb-pie #pb-borrador{ width:100%; }
  /* En columna, `flex-basis:100%` es ALTO y no ancho: el hint se quedaba sin restricción
     de ancho y se salía de la pantalla por la derecha. Y va después de los dos botones,
     que es lo que explica: la diferencia entre programar y dejar borrador. */
  .pb-pie-hint{ flex-basis:auto; width:100%; order:1; margin-top:var(--sp-3); }


/* «Cuenta y quién» es UNA pregunta con dos campos (B9). Apilados se leían como dos
   preguntas distintas y el segundo quedaba abajo del pliegue del drawer. */
.pb-fila{ display:flex; gap:var(--sp-3); align-items:flex-start; }
.pb-fila .field{ flex:1 1 0; min-width:0; }
.pb-fila .field select, .pb-fila .field input{ width:100%; }

/* Los tres atajos de fecha, con la misma forma que los chips de red: es la misma clase de
   gesto (elegir uno de pocos), así que se ve igual. */
.pb-atajos{ display:flex; flex-wrap:wrap; gap:5px; margin-bottom:var(--sp-3); }
.pb-atajo{
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--s2);
  color:var(--ink-2); padding:5px var(--sp-4); font-size:11.5px; cursor:pointer;
}
.pb-atajo:hover{ color:var(--ink); border-color:var(--line-soft); }
.pb-atajo.on{
  background:var(--turquesa-dim); border-color:var(--turquesa-line); color:var(--ink);
  font-weight:600;
}

/* «Todavía no sé qué cuentas hay» tiene que verse moviéndose: un select deshabilitado y
   quieto se lee como «no hay cuentas», que es lo contrario de lo que pasa. */
.pb-spinner{
  display:inline-block; width:10px; height:10px; vertical-align:-1px;
  border:1.5px solid var(--line-soft); border-top-color:var(--turquesa); border-radius:50%;
  animation:pb-girar .8s linear infinite;
}
@keyframes pb-girar{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .pb-spinner{ animation-duration:2.4s; } }

.pb-pieza{
  font-family:var(--f-mono); font-size:var(--fs-xs); color:var(--turquesa-ink);
  background:var(--turquesa-dim); border:1px solid var(--turquesa-line);
  border-radius:var(--r-xs); padding:var(--sp-1) 9px; margin-bottom:var(--sp-5);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}

.pb-sec{
  margin:var(--sp-6) 0 var(--sp-2); font-size:var(--fs-xs); letter-spacing:.08em;
  text-transform:uppercase; color:var(--ink-3);
}

/* ---------- chips de red: el corazón de la pantalla ---------- */

.pb-chips{ display:flex; flex-wrap:wrap; gap:5px; margin-top:var(--sp-1); }
.pb-chip{
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--s2);
  color:var(--ink-2); padding:5px var(--sp-4); font-size:11.5px; cursor:pointer;
  text-align:left;
}
.pb-chip:hover{ color:var(--ink); border-color:var(--line-soft); }
.pb-chip.on{
  background:var(--turquesa-dim); border-color:var(--turquesa-line); color:var(--ink);
  font-weight:600;
}
/* DESHABILITADO Y EXPLICADO, NUNCA ESCONDIDO. El .55 es a propósito y no .3: tiene que
   seguir leyéndose de un vistazo cuál es la red y qué dice la etiqueta. Un botón que
   desaparece hace que "no está" se lea como "todavía no lo hicimos". */
.pb-chip.pb-no{ opacity:.55; cursor:not-allowed; }
.pb-chip-et{
  display:block; font-size:9.5px; color:var(--ink-3); font-weight:400; margin-top:1px;
  text-transform:uppercase; letter-spacing:.05em;
}
/* "Falta el texto" se arregla escribiendo un archivo, así que va en ámbar (algo que hacer).
   "Apagado" y "no se puede" quedan en gris: no dependen de quien está mirando la pantalla. */
.pb-chip-et.pb-arreglable{ color:var(--ambar-ink); }

.pb-motivo{ margin-top:var(--sp-3); display:flex; flex-direction:column; gap:var(--sp-3); }
.pb-motivo[hidden]{ display:none; }
.pb-motivo-fila{
  border-left:2px solid var(--line); padding-left:var(--sp-4);
  font-size:10.5px; color:var(--ink-2); line-height:var(--lh-base);
  /* Los motivos de publicacion.py traen la línea "Qué hacer:" abajo del motivo. Aplastarlos
     a un párrafo esconde justo la línea que hay que leer. */
  white-space:pre-line;
}
/* Solo el motivo que alguien puede resolver hoy lleva la barra en ámbar. */
.pb-motivo-fila.pb-arreglable{ border-left-color:var(--ambar); }
.pb-link{
  display:inline-block; margin-top:var(--sp-1); color:var(--turquesa-ink); font-size:var(--fs-xs);
}

.pb-nota{
  font-size:10.5px; color:var(--ink-3); line-height:1.4; margin-top:var(--sp-5);
  border-left:2px solid var(--line); padding-left:var(--sp-4);
}
.pb-pasado{ color:var(--rojo-ink); }

.pb-body textarea{ font-family:var(--f-ui); font-size:var(--fs-sm); line-height:var(--lh-base); }

/* ---------- historial por red ---------- */

.pb-lista{ display:flex; flex-direction:column; gap:var(--sp-2); margin-top:var(--sp-2); }
.pb-item{
  display:flex; align-items:center; gap:var(--sp-3); flex-wrap:wrap;
  border:1px solid var(--line-soft); border-radius:var(--r-sm); background:var(--s2);
  padding:7px var(--sp-4); font-size:var(--fs-sm);
}
.pb-item-red{ color:var(--ink); font-weight:600; }

/* Cancelar y reintentar. Discretos a propósito: viven al lado de una fila que la mayoría
   de las veces solo se lee, y son las dos acciones que deshacen algo. Un botón llamativo
   ahí invita a apretarlo. El hover y el foco sí se marcan — que sean discretos no quiere
   decir que haya que adivinar dónde están. */
.pb-item-accion{
  font-size:var(--fs-xs); color:var(--ink-3);
  background:transparent; border:1px solid var(--line); border-radius:var(--r-xs);
  padding:3px 9px; cursor:pointer; white-space:nowrap;
}
.pb-item-accion:hover{ color:var(--ink); border-color:var(--ink-3); }

/* El único botón destructivo de esta pantalla. Se pinta distinto a propósito: si compartiera
   estilo con "cancelar" y "reintentar", la mano lo apretaría por costumbre — y es el único
   que no se deshace. El borde punteado lo separa sin gritar. */
.pb-item-baja{
  color:var(--rojo-ink); border-style:dashed; border-color:var(--rojo);
}
.pb-item-baja:hover{ color:var(--rojo-ink); border-color:var(--rojo); border-style:solid; }
.pb-item-accion:focus-visible{ outline:2px solid var(--turquesa); outline-offset:2px; }
.pb-item-accion:disabled{ opacity:.5; cursor:default; }
.pb-item-estado{
  font-size:var(--fs-micro); letter-spacing:.05em; text-transform:uppercase;
  border:1px solid var(--line); border-radius:var(--r-xs); padding:2px 7px; color:var(--ink-3);
  white-space:nowrap;
}
.pb-item-motivo{
  width:100%; font-size:var(--fs-micro); color:var(--ink-3); line-height:1.4;
  margin-top:3px; white-space:pre-line;
}

/* ---------- avisos ---------- */

.pb-aviso{
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--s2);
  padding:9px var(--sp-5); font-size:var(--fs-sm); color:var(--ink-2);
  margin-bottom:var(--sp-5); line-height:1.45; white-space:pre-line;
}
.pb-aviso.err{ border-color:var(--rojo); color:var(--ink); }
.pb-aviso.ok{ border-color:var(--turquesa-line); color:var(--ink); }
.pb-aviso[hidden]{ display:none; }

/* "Todavía no está enchufado" no es un error: es un estado esperado mientras los endpoints
   se enchufan por tandas. Gris punteado, no rojo. */
.pb-pendiente{
  border:1px dashed var(--line); border-radius:var(--r-sm); background:transparent;
  padding:9px var(--sp-5); font-size:var(--fs-xs); color:var(--ink-3); line-height:1.45;
}

/* ---------- el texto que no puede salir, y lo que quedó programado ---------- */

/* Rojo y no ámbar a propósito: no es "falta terminarlo", es texto interno que saldría al
   feed si nadie lo frena. */
.pb-body textarea.pb-sucio{ border-color:var(--rojo); color:var(--rojo-ink); }

.pb-bloqueo{
  margin-top:var(--sp-3); border-left:2px solid var(--rojo); padding-left:var(--sp-4);
  display:flex; flex-direction:column; gap:var(--sp-2);
  font-size:10.5px; color:var(--ink-2); line-height:var(--lh-base);
}
.pb-bloqueo[hidden]{ display:none; }
.pb-bloqueo-cab{ color:var(--rojo-ink); font-weight:600; }
.pb-bloqueo-fila{ display:flex; flex-direction:column; gap:var(--sp-1); align-items:flex-start; }

.pb-hecho{
  margin-top:var(--sp-5); padding:var(--sp-3) var(--sp-4);
  background:var(--turquesa-dim); border:1px solid var(--turquesa-line); border-radius:var(--r-sm);
  font-size:var(--fs-sm); color:var(--ink); line-height:var(--lh-base);
}
.pb-hecho[hidden]{ display:none; }
.pb-hecho .pb-link{ display:block; margin-top:var(--sp-2); }
