/* ==========================================================================
   app/css/draw.css — Área «Dibujo» (agente B de la v2)
   --------------------------------------------------------------------------
   Estudio de pinceles (`bs-`), panel de pinceles del dock (`bp-`), diálogo del
   lápiz digital (`sty-`) y piezas sueltas de las herramientas de dibujo.

   Todas las clases llevan prefijo propio: §47.15.6 cuenta cómo reutilizar
   `.brush-item` hizo que los estilos del editor cayeran sobre el panel. Antes de
   inventar un nombre, mirar si ya está cogido.

   Sólo tokens de `tokens.css`: el tema claro y el de alto contraste vienen
   gratis, y ningún color queda escrito a mano salvo las muestras (que son de
   pintura, no de interfaz).
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Estudio de pinceles
   -------------------------------------------------------------------------- */

.bs-dialog.dialog-xl { width: min(1180px, 100%); }
.bs-dialog .dialog-body { padding: var(--sp-5) var(--sp-6); }

.bs-body {
  display: grid;
  grid-template-columns: minmax(300px, 400px) minmax(0, 1fr);
  gap: var(--sp-6);
  min-height: min(640px, 72vh);
}

@media (max-width: 900px) {
  .bs-body { grid-template-columns: 1fr; }
}

/* --- biblioteca ------------------------------------------------------------ */

.bs-lib {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  min-width: 0;
  min-height: 0;
}

.bs-lib-head {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}

.bs-search,
.bp-search {
  flex: 1 1 auto;
  min-width: 0;
  height: 30px;
  padding: 0 var(--sp-4);
  border: 1px solid var(--bd);
  border-radius: var(--r-md);
  background: var(--s-1);
  color: var(--fg);
  font: inherit;
  font-size: var(--fs-md);
}
.bs-search:focus,
.bp-search:focus { outline: 2px solid var(--accent-ring); outline-offset: 0; }

.bs-count {
  flex: 0 0 auto;
  color: var(--fg-mute);
  font-size: var(--fs-sm);
  font-variant-numeric: tabular-nums;
}

.bs-chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

.bs-chip {
  height: 24px;
  padding: 0 var(--sp-4);
  border: 1px solid var(--bd);
  border-radius: var(--r-full);
  background: transparent;
  color: var(--fg-dim);
  font: inherit;
  font-size: var(--fs-sm);
  cursor: pointer;
  transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.bs-chip:hover { background: var(--s-3); color: var(--fg); }
.bs-chip.is-active {
  background: var(--accent-soft);
  border-color: var(--accent);
  color: var(--fg);
}

.bs-cards {
  flex: 1 1 auto;
  min-height: 220px;
  max-height: 52vh;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  align-content: start;
  gap: var(--sp-3);
  padding: var(--sp-2);
  border: 1px solid var(--bd-soft);
  border-radius: var(--r-md);
  background: var(--s-0);
}

.bs-card {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--sp-2);
  padding: var(--sp-3);
  border: 1px solid var(--bd);
  border-radius: var(--r-md);
  background: var(--s-2);
  color: var(--fg);
  text-align: left;
  font: inherit;
  cursor: pointer;
  transition: border-color var(--t-fast), background var(--t-fast);
}
.bs-card:hover { border-color: var(--bd-strong); background: var(--s-3); }
.bs-card.is-active { border-color: var(--accent); box-shadow: var(--accent-glow); }

.bs-card-thumb {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 132 / 44;
  border-radius: var(--r-sm);
  background: var(--s-1);
}

.bs-card-name {
  font-size: var(--fs-sm);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 18px;
}

.bs-badge {
  position: absolute;
  top: 6px;
  left: 6px;
  padding: 0 5px;
  border-radius: var(--r-sm);
  background: var(--accent-2-soft);
  color: var(--fg);
  font-size: var(--fs-xs);
  line-height: 16px;
}

.bs-fav,
.bp-fav {
  position: absolute;
  right: 6px;
  bottom: 4px;
  width: 18px;
  height: 18px;
  line-height: 18px;
  text-align: center;
  color: var(--fg-mute);
  font-size: 14px;
  border-radius: var(--r-sm);
  cursor: pointer;
}
.bs-fav:hover,
.bp-fav:hover { color: var(--fg); background: var(--s-4); }
.bs-fav.is-on,
.bp-fav.is-on { color: var(--warn); }

.bs-empty,
.bp-empty {
  grid-column: 1 / -1;
  margin: var(--sp-6) 0;
  color: var(--fg-mute);
  font-size: var(--fs-sm);
  text-align: center;
}

.bs-lib-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}
.bs-lib-actions .bs-danger:hover { color: var(--err); }

/* --- editor ---------------------------------------------------------------- */

.bs-ed {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
  min-width: 0;
  min-height: 0;
}

.bs-ed-head {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}
.bs-ed-name { font-size: var(--fs-lg); }
.bs-dirty { color: var(--warn); font-size: 12px; }
.bs-dirty[hidden] { display: none; }

.bs-prev-wrap {
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
}

.bs-prev {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 560 / 168;
  border: 1px solid var(--bd);
  border-radius: var(--r-md);
  cursor: crosshair;
  touch-action: none;
}

.bs-prev-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
}

.bs-hint {
  margin: 0;
  color: var(--fg-mute);
  font-size: var(--fs-sm);
}

.bs-tabs {
  display: flex;
  gap: var(--sp-1);
  border-bottom: 1px solid var(--bd);
}

.bs-tab {
  height: 30px;
  padding: 0 var(--sp-5);
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: var(--fg-dim);
  font: inherit;
  font-size: var(--fs-md);
  cursor: pointer;
}
.bs-tab:hover { color: var(--fg); }
.bs-tab.is-active { color: var(--fg); border-bottom-color: var(--accent); }

.bs-panes {
  flex: 1 1 auto;
  min-height: 0;
  max-height: 40vh;
  overflow-y: auto;
  padding-right: var(--sp-2);
}

.bs-pane {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-3);
}
.bs-pane[hidden] { display: none; }

.bs-row {
  display: grid;
  grid-template-columns: minmax(120px, 34%) minmax(0, 1fr) 64px;
  align-items: center;
  gap: var(--sp-4);
  font-size: var(--fs-sm);
}
.bs-row[hidden] { display: none; }
.bs-row.bs-check { grid-template-columns: auto 1fr; justify-items: start; }
.bs-row > select { grid-column: 2 / 4; }

.bs-lbl { color: var(--fg-dim); }
.bs-out {
  color: var(--fg);
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.bs-range { width: 100%; accent-color: var(--accent); }

.bs-sel {
  height: 28px;
  padding: 0 var(--sp-3);
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  background: var(--s-1);
  color: var(--fg);
  font: inherit;
}

.bs-h5 {
  margin: var(--sp-4) 0 0;
  color: var(--fg-mute);
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
}

.bs-sub[hidden] { display: none; }

.bs-swatches {
  display: grid;
  grid-template-columns: repeat(auto-fill, 44px);
  gap: var(--sp-2);
}

.bs-sw {
  width: 44px;
  height: 44px;
  padding: 1px;
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  background: var(--s-1);
  cursor: pointer;
}
.bs-sw canvas { display: block; width: 40px; height: 40px; }
.bs-sw:hover { border-color: var(--bd-strong); }
.bs-sw.is-active { border-color: var(--accent); box-shadow: var(--accent-glow); }

.bs-curve-wrap { display: flex; }
.bs-curve {
  width: 150px;
  height: 150px;
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  touch-action: none;
}

.bs-curves {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}

/* --------------------------------------------------------------------------
   2. Panel de pinceles del dock
   -------------------------------------------------------------------------- */

.bp-panel {
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  min-height: 0;
}

.bp-head {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
}
.bp-head .bp-search { height: 26px; font-size: var(--fs-sm); }

.bp-cat {
  flex: 0 1 112px;
  min-width: 0;
  height: 26px;
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  background: var(--s-1);
  color: var(--fg);
  font: inherit;
  font-size: var(--fs-sm);
}

.bp-open { flex: 0 0 auto; }

.bp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(118px, 1fr));
  gap: var(--sp-2);
  max-height: 340px;
  overflow-y: auto;
  padding: 1px;
}

.bp-item {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: var(--sp-2);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  background: var(--s-2);
  color: var(--fg);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.bp-item:hover { background: var(--s-3); }
.bp-item.is-active { border-color: var(--accent); background: var(--accent-soft); }

.bp-thumb {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 116 / 34;
}

.bp-name {
  font-size: var(--fs-xs);
  color: var(--fg-dim);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  padding-right: 16px;
}
.bp-item.is-active .bp-name { color: var(--fg); }
.bp-fav { bottom: 2px; right: 3px; font-size: 12px; }

/* --------------------------------------------------------------------------
   3. Diálogo del lápiz digital
   -------------------------------------------------------------------------- */

.sty-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 220px;
  gap: var(--sp-6);
}
@media (max-width: 720px) { .sty-body { grid-template-columns: 1fr; } }

.sty-pad {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 520 / 220;
  border: 1px solid var(--bd);
  border-radius: var(--r-md);
  background: var(--s-0);
  touch-action: none;
  cursor: crosshair;
}

.sty-side {
  display: flex;
  flex-direction: column;
  gap: var(--sp-4);
}

.sty-curve {
  width: 200px;
  height: 200px;
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  touch-action: none;
}

.sty-stat {
  margin: 0;
  color: var(--fg-dim);
  font-size: var(--fs-sm);
  font-variant-numeric: tabular-nums;
}

.sty-row {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  font-size: var(--fs-sm);
}

.sty-presets {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
}
