/* ========================================================================
   QUOMYA — OPERATIONAL SURFACES V1
   S4.10. Presentation-only bridge for the real utility/admin routes that
   still use the pre-Stitch markup. It is scoped to an explicit route host.
   Legal and the disabled tutorial are intentionally not included.
   ======================================================================== */

.qy-operations-screen,
.qy-operations-screen * {
  box-sizing: border-box;
}

.qy-operations-screen {
  display: grid;
  gap: var(--qy-space-5);
  width: 100%;
  min-width: 0;
  padding: var(--qy-space-6) 0 var(--qy-space-8);
  color: var(--qy-color-text-primary);
}

.qy-operations-screen .screen-header,
.qy-operations-screen .compact-header {
  gap: var(--qy-space-2);
  margin: 0 0 var(--qy-space-2);
}

.qy-operations-screen .screen-header h2,
.qy-operations-screen .compact-header h2 {
  margin: 0;
  color: var(--qy-color-text-primary) !important;
  font: var(--qy-text-headline-lg);
  letter-spacing: var(--qy-tracking-tight);
}

.qy-operations-screen .screen-header p,
.qy-operations-screen .compact-header p,
.qy-operations-screen p {
  color: var(--qy-color-text-secondary) !important;
}

.qy-operations-screen h3,
.qy-operations-screen h4,
.qy-operations-screen strong {
  color: var(--qy-color-text-primary) !important;
}

.qy-operations-screen .card,
.qy-operations-screen .metric-card,
.qy-operations-screen .empty-state,
.qy-operations-screen .parity-group-card,
.qy-operations-screen .parity-hero {
  overflow: hidden;
  color: var(--qy-color-text-primary) !important;
  background: var(--qy-color-surface-1) !important;
  border: 1px solid var(--qy-color-border) !important;
  border-radius: var(--qy-radius-lg) !important;
  box-shadow: var(--qy-elevation-card) !important;
}

.qy-operations-screen .list-item,
.qy-operations-screen .device-row,
.qy-operations-screen .parity-item,
.qy-operations-screen .feedback-item,
.qy-operations-screen .integrity-metric,
.qy-operations-screen .integrity-total,
.qy-operations-screen .admin-stat,
.qy-operations-screen .data-safety-stat {
  color: var(--qy-color-text-primary) !important;
  background: var(--qy-color-surface-2) !important;
  border-color: var(--qy-color-border) !important;
}

.qy-operations-screen small,
.qy-operations-screen label,
.qy-operations-screen .muted,
.qy-operations-screen .list-item span,
.qy-operations-screen .device-row span,
.qy-operations-screen .parity-item span,
.qy-operations-screen .parity-item small {
  color: var(--qy-color-text-secondary) !important;
}

.qy-operations-screen input,
.qy-operations-screen select,
.qy-operations-screen textarea {
  color: var(--qy-color-text-primary) !important;
  background: var(--qy-color-surface-2) !important;
  border-color: var(--qy-color-border-interactive) !important;
}

.qy-operations-screen input::placeholder,
.qy-operations-screen textarea::placeholder {
  color: var(--qy-color-text-tertiary) !important;
}

.qy-operations-screen .primary-btn,
.qy-operations-screen .success-btn {
  min-height: var(--qy-touch-min);
  color: var(--qy-color-text-on-brand) !important;
  background: var(--qy-color-brand) !important;
  border-color: transparent !important;
}

.qy-operations-screen .secondary-btn {
  min-height: var(--qy-touch-min);
  color: var(--qy-color-text-primary) !important;
  background: transparent !important;
  border: 1px solid var(--qy-color-border-interactive) !important;
}

.qy-operations-screen .danger-btn {
  min-height: var(--qy-touch-min);
  color: var(--qy-color-text-primary) !important;
  background: var(--qy-color-cancelled) !important;
}

.qy-operations-screen :is(.primary-btn, .secondary-btn, .success-btn, .danger-btn):focus-visible,
.qy-operations-screen :is(input, select, textarea):focus-visible {
  outline: none;
  box-shadow: var(--qy-focus-ring) !important;
}

.qy-operations-screen table {
  color: var(--qy-color-text-primary);
  border-color: var(--qy-color-border);
}

.qy-operations-screen th {
  color: var(--qy-color-text-secondary);
  background: var(--qy-color-surface-2);
}

.qy-operations-screen td {
  color: var(--qy-color-text-primary);
  border-color: var(--qy-color-border);
}

.qy-operations-screen a {
  color: var(--qy-color-brand-hover);
}

.qy-operations-screen [role="alert"],
.qy-operations-screen .error,
.qy-operations-screen .form-error {
  color: var(--qy-color-error-text) !important;
}

@media (max-width: 640px) {
  .qy-operations-screen {
    gap: var(--qy-space-4);
    padding-block: var(--qy-space-4) var(--qy-space-6);
  }

  .qy-operations-screen .card,
  .qy-operations-screen .metric-card,
  .qy-operations-screen .empty-state {
    padding: var(--qy-space-4);
  }

  .qy-operations-screen .action-row,
  .qy-operations-screen .admin-button-grid {
    grid-template-columns: 1fr;
  }

  .qy-operations-screen :is(.primary-btn, .secondary-btn, .success-btn, .danger-btn) {
    width: 100%;
  }
}

/* ========================================================================
   S4.11A — ISLAS CLARAS RESIDUALES (fase 13)

   La auditoría de contraste de S4.11A recorrió las diecisiete pantallas en
   los dos temas y encontró dos superficies que S4.10 había dejado fuera:
   pintan con literales claros en lugar de con tokens, así que el ámbito
   oscuro no las alcanza y sobre ellas la tinta del tema queda ilegible.

   Son defectos REALES y preexistentes, no efectos de esta ola: no se veían
   porque hasta ahora ninguna prueba medía contraste. Se corrigen aquí, en la
   hoja que ya reviste estas rutas, y solo con tokens, de modo que las dos
   quedan además correctas en el tema claro que S4.11A introduce.
   ======================================================================== */

/* ---- Integridad de datos ------------------------------------------------
   `data-integrity-v15-18-a.css` rellena la rejilla de detalle y los
   distintivos con `rgba(255,255,255,.7)` y `rgba(255,255,255,.72)` el contexto de la venta,
   los identificadores y el distintivo de categoria. Sobre
   una tarjeta oscura eso es un rectángulo casi blanco, y la tinta del tema
   encima medía entre 1.6:1 y 1.8:1. */

.qy-operation--data-integrity .integrity-sale-context > div,
.qy-operation--data-integrity .integrity-identifiers span,
.qy-operation--data-integrity .integrity-category-badge {
  background: var(--qy-color-surface-2) !important;
  border-color: var(--qy-color-border) !important;
  color: var(--qy-color-text-secondary) !important;
}

.qy-operation--data-integrity .integrity-sale-context dt {
  color: var(--qy-color-text-tertiary) !important;
}

.qy-operation--data-integrity .integrity-sale-context dd {
  color: var(--qy-color-text-primary) !important;
}

/* `rgba(7,26,38,.08)` sobre superficie oscura es prácticamente el mismo
   color que la superficie: el distintivo de severidad desaparecía. */
.qy-operation--data-integrity .integrity-severity-badge {
  background: var(--qy-color-surface-3) !important;
  color: var(--qy-color-text-primary) !important;
}

.qy-operation--data-integrity .integrity-issue-head code {
  color: var(--qy-color-text-secondary) !important;
}

/* ---- Ayuda y feedback ---------------------------------------------------
   `beta-candidate-v15-15-c.css` escribe `#9A5B00` y `#6F5A3C` a mano. Son
   ámbares pensados para fondo claro; sobre Deep Ink el cuerpo del aviso
   medía 2.62:1. Se sustituyen por el rol de estado, que ya tiene variante
   tonal correcta en los dos temas. */

.qy-operation--feedback .beta-feedback-notice strong {
  color: var(--qy-color-pending-text) !important;
}

.qy-operation--feedback .beta-feedback-notice span {
  color: var(--qy-color-text-secondary) !important;
}

/* ---- Bandeja de feedback ------------------------------------------------
   `admin-feedback-fix.css` pinta cada ticket con un fondo blanco translúcido.
   Esa isla clara pierde jerarquía y contraste dentro del tema oscuro. La ruta
   operativa la reviste aquí con los roles semánticos de superficie, tinta y
   estado; el mismo contrato conserva el tema claro sin duplicar paletas. */

.qy-operation--feedback-inbox .feedback-inbox-card {
  color: var(--qy-color-text-primary) !important;
  background: var(--qy-color-surface-2) !important;
  border: 1px solid var(--qy-color-border-strong) !important;
  box-shadow: var(--qy-elevation-card) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card:hover {
  background: var(--qy-color-surface-3) !important;
  border-color: var(--qy-color-border-interactive) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card:is(.is-selected, [aria-current="true"]),
.qy-operation--feedback-inbox .feedback-inbox-card:focus-within {
  background: var(--qy-color-surface-3) !important;
  border-color: var(--qy-color-brand) !important;
  box-shadow: var(--qy-focus-ring) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-head strong,
.qy-operation--feedback-inbox .feedback-message-text,
.qy-operation--feedback-inbox .feedback-context-box strong {
  color: var(--qy-color-text-primary) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-head span,
.qy-operation--feedback-inbox .feedback-context-box span,
.qy-operation--feedback-inbox .feedback-ticket-summary,
.qy-operation--feedback-inbox .feedback-technical-details summary {
  color: var(--qy-color-text-secondary) !important;
}

.qy-operation--feedback-inbox .feedback-context-box,
.qy-operation--feedback-inbox .feedback-technical-details {
  background: var(--qy-color-surface-1) !important;
  border-color: var(--qy-color-border) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card .muted-chip,
.qy-operation--feedback-inbox .feedback-inbox-card .priority-normal,
.qy-operation--feedback-inbox .feedback-inbox-card .status-muted {
  color: var(--qy-color-text-secondary) !important;
  background: var(--qy-color-surface-3) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card :is(.priority-high, .status-warn) {
  color: var(--qy-color-pending-text) !important;
  background: var(--qy-color-pending-soft) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card :is(.status-info) {
  color: var(--qy-color-closure-text) !important;
  background: var(--qy-color-closure-soft) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card :is(.status-good) {
  color: var(--qy-color-collected-text) !important;
  background: var(--qy-color-collected-soft) !important;
}

.qy-operation--feedback-inbox .feedback-inbox-card :is(.priority-critical, .status-danger) {
  color: var(--qy-color-cancelled-text) !important;
  background: var(--qy-color-cancelled-soft) !important;
}

.qy-operation--feedback-inbox .feedback-attachment-trigger img {
  background: var(--qy-color-surface-1) !important;
  border-color: var(--qy-color-border-interactive) !important;
}
