/**
 * Shell Nova — finestre flottanti (bordo, header, corpo, resize).
 * Incluso da `app/dioniso_nova_home.html`. Modifiche qui si applicano a tutte le finestre .nova-window.
 */

/* ╔══════════════════════════════════════════════════════════════════════════╗
 * ║ CMP-031 — DIMENSIONE STD UNICA DI TUTTE LE FINESTRE NOVA (rev 1.7.30)     ║
 * ║ ►►► CAMBIA QUI E CAMBIANO TUTTE LE FINESTRE (schede + viewer Wiki/AI/Test)║
 * ║ Default 896×574 = Anagrafica Clienti 1280×820 −30%. Centrate (JS) +       ║
 * ║ ridimensionabili. Tutti i caller JS usano `var(--nova-win-w/h)`.          ║
 * ╚══════════════════════════════════════════════════════════════════════════╝ */
:root {
  --nova-win-w: min(896px, calc(100% - 24px));
  --nova-win-h: min(574px, calc(100% - 24px));
}

/* ──────────────────────────────────────────────────────────────────────────
 * rev 1.4.57 (L051a — R19 audit App+Session): palette CSS variables per
 * tema light/dark. I moduli legacy usano ancora colori hardcoded; questo
 * blocco espone le variabili come API per future migrazioni incrementali.
 *
 * Switch tema: `window.NovaTheme.set("light"|"dark"|"auto")` (vedi
 * `nova_standard_ui.js`). Persiste in `localStorage[nova_theme]`. `auto`
 * segue prefers-color-scheme del sistema operativo.
 *
 * Convention naming: `--nova-<categoria>-<ruolo>` (es. `--nova-bg-primary`,
 * `--nova-text-muted`). Prefix `nova-` evita collisioni con CSS terze parti.
 * ────────────────────────────────────────────────────────────────────────── */
:root {
  /* Backgrounds */
  --nova-bg-primary: #d9d2c7;     /* sfondo finestra/viewer (default Nova greige) */
  --nova-bg-surface: #ffffff;      /* card/dialog/input */
  --nova-bg-subtle: #f9fafb;       /* bg secondario (rows alterne, header tabella) */
  --nova-bg-overlay: rgba(255, 255, 255, 0.85);  /* overlay loading */
  /* Text */
  --nova-text-primary: #111827;
  --nova-text-secondary: #374151;
  --nova-text-muted: #6b7280;
  --nova-text-on-primary: #ffffff;
  /* Borders */
  --nova-border-default: #d1d5db;
  --nova-border-strong: #9ca3af;
  --nova-border-subtle: #e5e7eb;
  /* Accents (brand) */
  --nova-accent-primary: #6366f1;     /* spinner loading, link */
  --nova-accent-success: #16a34a;
  --nova-accent-warning: #d97706;
  --nova-accent-danger: #dc2626;
  /* Stati ticket / record (allineato a ESITO/STATO Xojo) */
  --nova-state-superato-bg: #fee2e2;   /* §3-bis riga superata */
  --nova-state-superato-fg: #7f1d1d;
  --nova-state-superato-hover: #fecaca;
}

/* Tema dark — override variabili (i selectors restano gli stessi) */
:root.theme-dark,
:root[data-nova-theme="dark"] {
  --nova-bg-primary: #1f2937;
  --nova-bg-surface: #374151;
  --nova-bg-subtle: #2d3748;
  --nova-bg-overlay: rgba(31, 41, 55, 0.85);
  --nova-text-primary: #f9fafb;
  --nova-text-secondary: #e5e7eb;
  --nova-text-muted: #9ca3af;
  --nova-text-on-primary: #1f2937;
  --nova-border-default: #4b5563;
  --nova-border-strong: #6b7280;
  --nova-border-subtle: #374151;
  --nova-accent-primary: #818cf8;
  --nova-accent-success: #22c55e;
  --nova-accent-warning: #fbbf24;
  --nova-accent-danger: #f87171;
  --nova-state-superato-bg: #7f1d1d;
  --nova-state-superato-fg: #fee2e2;
  --nova-state-superato-hover: #991b1b;
}

/* Auto-tema basato su prefers-color-scheme se l'utente non ha scelto */
@media (prefers-color-scheme: dark) {
  :root[data-nova-theme="auto"] {
    --nova-bg-primary: #1f2937;
    --nova-bg-surface: #374151;
    --nova-bg-subtle: #2d3748;
    --nova-bg-overlay: rgba(31, 41, 55, 0.85);
    --nova-text-primary: #f9fafb;
    --nova-text-secondary: #e5e7eb;
    --nova-text-muted: #9ca3af;
    --nova-text-on-primary: #1f2937;
    --nova-border-default: #4b5563;
    --nova-border-strong: #6b7280;
    --nova-border-subtle: #374151;
    --nova-accent-primary: #818cf8;
    --nova-accent-success: #22c55e;
    --nova-accent-warning: #fbbf24;
    --nova-accent-danger: #f87171;
    --nova-state-superato-bg: #7f1d1d;
    --nova-state-superato-fg: #fee2e2;
    --nova-state-superato-hover: #991b1b;
  }
}

.nova-window-viewer {
  position: absolute;
  inset: 0;
  display: none;
  overflow: hidden;
  /* rev 1.7.23 — HARDCODED greige (NO var --nova-bg-primary) — l'app è solo
     light (pulsante Theme rimosso in 1.7.7); senza hardcoding, prefers-color-scheme:
     dark di macOS rendeva il viewer #1f2937 (dark navy) → finestre apparivano
     incorniciate da un riquadro NERO attorno. Vedi feedback referente 2026-05-20. */
  background: #d9d2c7;
}

.nova-window-viewer.active {
  display: block;
}

/* rev 1.7.30 — CMP-031: dimensione da `var(--nova-win-w/h)` (definita in :root sopra,
   UNICA fonte di verità). Centratura via `centerCallerSizedWindow` in nova_window_shell.js.
   TUTTI i caller JS usano `var(--nova-win-w/h)`; le finestre senza override usano questo default. */
.nova-window {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--nova-win-w);
  height: var(--nova-win-h);
  min-width: 180px;
  min-height: 140px;
  border: 0;
  border-radius: 0;
  background: #ffffff;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.08);
  box-sizing: border-box;
}

/* rev 1.7.32 — CMP-052: finestra MINIMIZZATA (giallo) = barra titolo compatta 220×36
   in basso-sx area greige (impilabile). Mostra solo pallini + titolo; click = ripristina. */
.nova-window--minimized {
  z-index: 70 !important;
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.22);
  border-radius: 8px;
  overflow: hidden;
  resize: none !important;
}
.nova-window--minimized .resize-handle { display: none !important; }
.nova-window--minimized .nova-window-toolbar { display: none !important; }
.nova-window--minimized .nova-window-bar { cursor: pointer; }

/* Rev. 1.1.13-hotfix₄ (2026-04-18): header UNIFORME per TUTTE le finestre
   Dioniso Nova. Font titolo ridotto da 21.6 → 18 px, gap bar 16 → 12 px, gap
   toolbar 14 → 10 px. Così anche finestre con titoli lunghi («Anagrafiche
   Lead Fornitori») + 6 bottoni toolbar rientrano senza essere tagliate
   dall'overflow:hidden del `.nova-window-viewer`. Ogni modulo può aggiungere o
   togliere bottoni via `toolbarPreset`, ma le dimensioni restano identiche. */
.nova-window-bar {
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 10px 0 8px;
  /* rev 1.7.24 — bordi nero rimossi (border-top/bottom #1f252d) — richiesta referente */
  border-top: 0;
  border-bottom: 0;
  background: #e3f2fa;
  cursor: move;
  user-select: none;
  box-sizing: border-box;
}

.nova-window-header-left {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex-shrink: 1;
}

.nova-window-controls {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-right: 4px;
}

/* rev 3.4.34 (ticket #97 di Cristian, «meglio averli più grandi» — soprattutto su Windows,
   dove nessuno si aspetta i pallini stile macOS e vanno cercati col mouse). Prima taratura:
   da 12 a 13.2px. Si chiede a lui se ora si prendono bene, SENZA dirgli di quanto sono
   cresciuti — se glielo dici, la risposta è già scritta. L'override di `nova_norme.css`
   (anteprima allegato) è uno `scale(0.85)`: si adatta da solo, non va toccato. */
.nova-window-dot {
  width: 13.2px;
  height: 13.2px;
  padding: 0;
  appearance: none;
  -webkit-appearance: none;
  border-radius: 50%;
  border: 1px solid rgba(0, 0, 0, 0.35);
  cursor: pointer;
}

.nova-window-dot.close {
  background: #ff5f57;
}

.nova-window-dot.minimize {
  background: #febc2e;
}

.nova-window-dot.maximize {
  background: #28c840;
}

.nova-window-app-title {
  font-size: 18px;
  /* rev 1.5.57 — feedback referente: titolo modulo OK = nero pieno + semibold,
     coerente con sidebar nav-item bold (vedi dioniso_nova_home.html riga ~341). */
  font-weight: 600;
  color: #0f172a;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

/* rev 1.1.2 → 1.5.57 — neutralizza reset browser ma mantiene semibold per chiarezza. */
.nova-window .nova-window-app-title,
.nova-window .nova-window-app-title * {
  font-weight: 600 !important;
  color: #0f172a;
}

.nova-window .nova-window-form-tag {
  display: none !important;
}

.nova-window-app-subtitle {
  font-size: 12px;
  font-weight: 600;
  color: rgba(28, 36, 45, 0.88);
  white-space: nowrap;
}

.nova-window-toolbar {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex-shrink: 0;
}

.nova-window-action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  color: rgba(28, 36, 45, 0.88);
  white-space: nowrap;
  cursor: default;
}

.toolbar-icon {
  width: 14px;
  height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 14px;
}

.toolbar-icon svg {
  width: 14px;
  height: 14px;
  display: block;
  fill: none;
  /* rev 3.7.0 — colore di DEFAULT = quello del testo: le icone senza regola
     semantica (csv, esporta, qr, etichetta, aggiungi, duplica…) avevano stroke
     «none» e quindi erano invisibili, in barra come nei pulsanti. Le regole
     .toolbar-icon--xxx qui sotto restano più specifiche e vincono. */
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* rev 1.6.0 — pulsante back ora immagine PNG (freccia verde tonda) */
img.toolbar-icon--back-img {
  width: 16px;
  height: 16px;
  object-fit: contain;
  display: inline-block;
  vertical-align: middle;
}

/* rev 1.6.18 — header CMP-008-C per viewer Wiki/AI/Test (dashboard topbar) */
.nwh-left { display: flex; align-items: center; gap: 0; flex-shrink: 0; }
.nwh-dots-big { display: inline-flex; gap: 8px; margin-right: 14px; flex-shrink: 0; align-items: center; }
.nwh-dots-big i { display: inline-block; width: 22px; height: 22px; min-width: 22px; min-height: 22px; border-radius: 50%; border: 0.5px solid rgba(0,0,0,0.2); box-sizing: border-box; }
.nwh-dots-big i:nth-child(1) { background: #ff5f57; cursor: pointer; }
.nwh-dots-big i:nth-child(2) { background: #febc2e; cursor: pointer; }
.nwh-dots-big i:nth-child(3) { background: #28c840; cursor: pointer; }
.nwh-dots-big i:hover { filter: brightness(0.92); }

/* Maximize: rimuove margine e bordi arrotondati */
.nova-wiki-shell.is-maximized,
.nova-test-shell.is-maximized {
  margin: 0 !important;
  border-radius: 0 !important;
}

/* Minimize: pill flottante in basso-dx per riaprire */
.nova-min-pill {
  position: fixed;
  bottom: 16px;
  right: 16px;
  padding: 8px 14px 8px 12px;
  background: #1f2937;
  color: #fff;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  font-family: Tahoma, sans-serif;
  font-size: 13px;
  font-weight: 600;
  z-index: 10000;
  box-shadow: 0 4px 12px rgba(0,0,0,0.25);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.nova-min-pill:hover { background: #374151; }
.nwh-title-big { font-size: 16px; font-weight: 700; color: #0f172a; margin-right: 10px; }
.nwh-actions-big { display: flex; align-items: center; gap: 14px; color: #1d4ed8; font-family: Tahoma, sans-serif; font-size: 13px; }
.nwh-act-big { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; user-select: none; }
.nwh-act-big svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; display: block; }
.nwh-act-big.is-disabled, .nwh-act.is-disabled { color: #cbd5e1; cursor: not-allowed; }
.nwh-back-big { width: 22px; height: 22px; cursor: pointer; object-fit: contain; }

/* Icone toolbar: colori semantici (header comune a tutte le finestre) */
.toolbar-icon--save svg {
  stroke: #15803d;
}

.toolbar-icon--new svg {
  stroke: #1d4ed8;
}

.toolbar-icon--modify svg {
  stroke: #b45309;
}

.toolbar-icon--fetch svg {
  stroke: #6d28d9;
}

.toolbar-icon--delete svg {
  stroke: #b91c1c;
}

.toolbar-icon--list svg {
  stroke: #0e7490;
}

.toolbar-icon--preview svg {
  stroke: #4338ca;
}

.toolbar-icon--preview svg .toolbar-icon__dot {
  fill: #4338ca;
  stroke: none;
}

.toolbar-icon--utility svg {
  stroke: #475569;
}

.toolbar-icon--back svg {
  stroke: #0f766e;
}

.toolbar-icon--print svg {
  stroke: #57534e;
}

/* rev 3.0.3 — icona PDF: senza questa regola lo stroke restava vuoto (fill:none
   globale) e l'icona era INVISIBILE. Rosso "PDF" classico, distinto dal cestino. */
.toolbar-icon--pdf svg {
  stroke: #b91c1c;
}

.toolbar-icon--download svg {
  stroke: #0369a1;
}

/* rev 3.7.0 — pulsanti DENTRO il corpo finestra con l'icona standard (mattoncino
   NovaIcons.std; ripulitura delle 34 emoji-pulsante in 21 videate): icona e testo
   allineati come in barra. Sui pulsanti colorati a testo bianco l'icona va in bianco
   (.nova-ico-bianca): il verde del salva su un fondo verde non si vedrebbe. */
button:has(> .toolbar-icon):not(.nova-window-toolbar button) {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
button.nova-ico-bianca .toolbar-icon svg {
  stroke: #fff;
}

/* rev 1.8.19 (L082) — 🗑 cestino (hard-delete): ROSSO quando ATTIVO (azione
   distruttiva irreversibile), grigino quando disabilitato. Vale per TUTTE le
   finestre (azione shell `cestino`, abilitata via `__cestinoEligible`). */
.toolbar-icon--cestino svg {
  stroke: #9ca3af;
}
.nova-window-action[data-toolbar-action="cestino"].interactive .toolbar-icon--cestino svg {
  stroke: #dc2626;
}
.nova-window-action[data-toolbar-action="cestino"].interactive {
  color: #dc2626;
}
.nova-window-action[data-toolbar-action="cestino"].interactive:hover .toolbar-icon--cestino svg {
  stroke: #b91c1c;
}
.nova-window-action[data-toolbar-action="cestino"].interactive:hover > span:not(.toolbar-icon) {
  color: #b91c1c;
}

.toolbar-icon--email svg {
  stroke: #7c3aed;
}

/* Barra anteprima documento: stesse icone, dimensione leggermente maggiore */
.preview-top-action .toolbar-icon {
  width: 16px;
  height: 16px;
  flex-basis: 16px;
}

.preview-top-action .toolbar-icon svg {
  width: 16px;
  height: 16px;
}

.nova-window-action.interactive:hover > span:not(.toolbar-icon) {
  color: #0d1117;
}

.toolbar-caret {
  font-size: 9px;
  line-height: 1;
  opacity: 0.8;
  margin-left: -2px;
}

.nova-window-action.disabled,
.nova-window-action.is-disabled,
.nova-window-action[data-disabled],
.nova-window-action[aria-disabled="true"] {
  /* rev 2.9.21 — NON più `pointer-events:none`: serviva a bloccare il click, ma bloccava
     anche l'HOVER → sul pulsante GRIGIO non compariva il tooltip, cioè proprio dov'è più
     utile (CMP-008: «grigio col tooltip del PERCHÉ»). Ora il click è bloccato dal
     dispatcher (guardia su .disabled / [data-disabled] / aria-disabled in
     nova_window_shell.js) e l'hover resta libero per il tooltip §3-octies. */
  cursor: not-allowed;
}

/* rev 2.9.21 — lo sbiadito va sul CONTENUTO, non sul pulsante intero: se `opacity:.45` sta
   sull'elemento, il tooltip (::after, che è suo figlio) eredita la trasparenza e diventa
   illeggibile proprio sul pulsante grigio. Applicandolo ai figli-elemento (icona + scritta)
   il grigio è identico a prima, ma il tooltip resta pieno e leggibile. */
.nova-window-action.disabled > *,
.nova-window-action.is-disabled > *,
.nova-window-action[data-disabled] > *,
.nova-window-action[aria-disabled="true"] > * {
  opacity: 0.45;
}

/* rev 2.9.21 — TOOLTIP sui pulsanti header (§3-octies, richiesta referente: «se ci passo
   col mouse — STANDARD PER TUTTO NOVA — mi mostra la descrizione»). Stesso identico stile
   del tooltip colonne (`shared/nova_col_tooltip.css`): nero #0f172a, Tahoma 10.5px, freccia.
   Qui il tooltip esce SOTTO il pulsante (la toolbar è in cima alla finestra). */
.nova-window-action[data-tip] {
  position: relative;
}

.nova-window-action[data-tip]:hover::after {
  content: attr(data-tip);
  position: absolute;
  top: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: #0f172a;
  color: #fff;
  padding: 3px 8px;
  border-radius: 4px;
  font: 400 10.5px/1 Tahoma, Geneva, sans-serif;
  white-space: nowrap;
  pointer-events: none;
  z-index: 200;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
  text-transform: none;
  letter-spacing: 0;
}

.nova-window-action[data-tip]:hover::before {
  content: "";
  position: absolute;
  top: calc(100% + 2px);
  left: 50%;
  transform: translateX(-50%);
  border: 4px solid transparent;
  border-bottom-color: #0f172a;
  pointer-events: none;
  z-index: 200;
}

.nova-window-action.interactive {
  cursor: pointer;
}

/* rev 1.5.12 — Standard «pulsante toolbar attivo» (richiesta referente):
   sfondo verdino chiaro per comunicare visivamente «stato attivo/in corso»
   (es. Modifica attivo, Nuovo aperto). Distinto da .disabled (grigio opacità).
   Coerente con palette esistente §Bug ✅ Analizzato `#dcfce7`. */
.nova-window-action.is-active {
  background: #dcfce7;
  color: #166534 !important;
  border-radius: 4px;
}
.nova-window-action.is-active:hover {
  background: #bbf7d0;
}
.nova-window-action.is-active > span:not(.toolbar-icon) {
  color: #166534 !important;
}
.nova-window-action.is-active .toolbar-icon svg {
  stroke: #166534;
}


.nova-window-form-tag {
  font-size: 12px;
  font-weight: 700;
  color: var(--nova-text-primary, #1c242d);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.nova-window-body {
  width: 100%;
  height: calc(100% - 36px);
  padding: 16px 18px 22px;
  overflow: auto;
  /* rev 1.7.26 — HARDCODED bianco (era `var(--nova-bg-surface, #ffffff)` che flippava
     a `#374151` slate dark in macOS prefers-color-scheme:dark, causando bordini scuri
     attorno al wrapper .doc-ui interno bianco. Stesso pattern di .nova-window-viewer
     hardcoded greige in 1.7.23 e .nova-window hardcoded bianco. */
  background: #ffffff;
  box-sizing: border-box;
  /* rev 1.6.47 — reset esplicito text-align:left perché il parent `.home-center`
     ha `text-align:center` che si propaga ereditandosi nei viewer Wiki/AI/Test
     (le altre finestre Nova hanno tabelle con classi .ta-l/.ta-r esplicite e
     non sembrano "centrate", ma testi plain `<p>` ereditano il center). */
  text-align: left;
}

/* AQL: foglio principale sempre bianco (evita il #e3f2fa globale di .picker-sheet) */
.nova-window[data-form-id^="aql-"] .picker-sheet {
  background: var(--nova-bg-surface, #ffffff);
}

/* 🟥 rev 3.8.51 — IL FOGLIO DOCUMENTO TOCCA I BORDI DELLA SUA FINESTRA.
   Il referente ha segnalato CINQUE volte «il bordo bianco/greige intorno al
   documento», e per cinque volte l'ho cercato nel foglio (CMP-055): margini della
   scrivania, altezza dell'A4, scala, dimensione della finestra. Non era lì. Era
   QUESTO: il telaio del corpo finestra, `padding:16px 18px 22px`, che vale per ogni
   videata di Nova — 18 px a sinistra, 18 a destra, 16 sopra, 22 sotto, sempre.
   Su una videata normale è respiro giusto; sul foglio documento è la cornice bianca
   che gli stava attorno e che nessuna correzione al foglio poteva togliere.
   Il precedente è qui sotto: le tabelle AQL fanno la stessa cosa dal loro giorno. */
.nova-window[data-form-id^="cmp055-"] .nova-window-body {
  padding: 0;
  overflow: hidden;
  min-height: 0;
}

/* Tabelle ISO AQL: body flex + scroll solo sulla tabella */
.nova-window[data-form-id^="aql-table-"] .nova-window-body {
  padding: 0;
  background: var(--nova-bg-surface, #ffffff);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  min-height: 0;
}

.nova-window[data-form-id^="aql-table-"] .nova-window-body > .aql-csv-picker-sheet {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  width: 100%;
  max-width: none;
  display: flex;
  flex-direction: column;
  background: var(--nova-bg-surface, #ffffff);
}

/* Tool consultazione AQL (funnel) — legenda + righe native / scorrimento freccia */
.nova-window[data-form-id="aql-funnel"] .aql-funnel-legend {
  margin: 10px 0 0;
  font-size: 12px;
  line-height: 1.35;
  color: var(--nova-text-muted, #475569);
  max-width: 100%;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-legend-line {
  display: block;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-legend-line--native {
  color: var(--nova-text-primary, #111827);
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-legend-line--shifted {
  color: #94a3b8;
}

/* Panoramica: col 1 Lot Size, 2 Letter, 3 Sample, 4 Ac, 5 Re */
.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(1),
.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(2),
.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(3) {
  color: var(--nova-text-primary, #111827);
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(4) {
  color: #166534;
  font-weight: 600;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(5) {
  color: #991b1b;
  font-weight: 600;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--shifted td {
  color: #94a3b8;
  font-weight: 500;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--shifted td .aql-funnel-star-msg {
  color: #b45309;
  font-size: 11px;
  line-height: 1.25;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-table tbody tr.aql-funnel-row--native td:nth-child(4) .aql-funnel-star-msg {
  color: #991b1b;
  font-size: 11px;
  line-height: 1.25;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-metric {
  font-weight: 600;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-highlight-cell--ac .aql-funnel-metric:not(.aql-funnel-metric--shifted) {
  color: #166534;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-highlight-cell--re .aql-funnel-metric:not(.aql-funnel-metric--shifted) {
  color: #991b1b;
}

.nova-window[data-form-id="aql-funnel"] .aql-funnel-metric--shifted {
  color: #94a3b8;
}

/* Sottofinestre AQL (esclusa home): titolo in alto a destra +80% su base 12×1.3; due righe sotto +20% a sinistra */
.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) .aql-subwindow-head {
  width: 100%;
  box-sizing: border-box;
}

.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) .aql-subwindow-title {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin: 0 0 10px;
  padding: 0;
  text-align: right;
  font-size: calc(12px * 1.3 * 1.8);
  font-weight: 400;
  line-height: 1.2;
  color: #1e293b;
}

.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) h2.aql-subwindow-title {
  font-weight: 600;
  font-size: calc(12px * 1.5 * 1.8);
  line-height: 1.25;
}

.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) .aql-subwindow-lead {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 10px;
  text-align: left;
  font-size: calc(12px * 1.2);
  line-height: 1.45;
  color: var(--nova-text-muted, #475569);
}

.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) .aql-subwindow-lead-line {
  display: block;
}

.nova-window[data-form-id^="aql-"]:not([data-form-id="aql-home"]) .aql-subwindow-lead-line + .aql-subwindow-lead-line {
  margin-top: 6px;
}

.aql-csv-picker-head {
  flex: 0 0 auto;
  padding: 14px 18px 12px;
  background: var(--nova-bg-surface, #ffffff);
  border-bottom: 1px solid #cfd8dc;
}

.aql-csv-table-title {
  margin: 0;
  font-size: calc(12px * 1.5);
  font-weight: 700;
  line-height: 1.3;
  color: var(--nova-text-primary, #111827);
}

.aql-csv-scroll {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  background: var(--nova-bg-surface, #ffffff);
  -webkit-overflow-scrolling: touch;
}

.nova-window[data-form-id="customer-picker"] .nova-window-body,
.nova-window[data-form-id="article-picker"] .nova-window-body {
  background: #e3f2fa;
  overflow: hidden;
}

.nova-window[data-form-id="preview"] .nova-window-body {
  padding: 0;
  overflow: hidden;
  background: #eef1f4;
}

.resize-handle {
  position: absolute;
  z-index: 5;
}

.resize-handle-n,
.resize-handle-s {
  left: 8px;
  right: 8px;
  height: 10px;
}

.resize-handle-n {
  top: -5px;
  cursor: ns-resize;
}

.resize-handle-s {
  bottom: -5px;
  cursor: ns-resize;
}

.resize-handle-e,
.resize-handle-w {
  top: 8px;
  bottom: 8px;
  width: 10px;
}

.resize-handle-e {
  right: -5px;
  cursor: ew-resize;
}

.resize-handle-w {
  left: -5px;
  cursor: ew-resize;
}

.resize-handle-ne,
.resize-handle-nw,
.resize-handle-se,
.resize-handle-sw {
  width: 14px;
  height: 14px;
}

.resize-handle-ne {
  top: -7px;
  right: -7px;
  cursor: nesw-resize;
}

.resize-handle-nw {
  top: -7px;
  left: -7px;
  cursor: nwse-resize;
}

.resize-handle-se {
  right: -7px;
  bottom: -7px;
  cursor: nwse-resize;
}

.resize-handle-sw {
  left: -7px;
  bottom: -7px;
  cursor: nesw-resize;
}
