/*
 * starlit-forms.css — Design System for Starlit
 *
 * Architecture: Primitive → Semantic → Component
 *   Component code only references semantic tokens.
 *   Primitive values are defined in :root and never used directly in components.
 *
 * Themes: two only — Dark (Sunset Boulevard: deep navy bg, burnt orange primary,
 * gold #FFD700 brand accent) is the default and lives in :root, with no data-theme
 * attribute on <html>; Light (Arctic Frost) overrides the same tokens under
 * html[data-theme="light-slate"].
 */

/* ═══════════════════════════════════════════════════════
   1. PRIMITIVE PALETTE
   ═══════════════════════════════════════════════════════ */
:root {
  /* Sunset Boulevard — default (Dark) theme base colors */
  --bg-color:   #111e25;
  --panel-bg:   #1a2d35;
  --menu-color: #264653;

  /* Brand accent — gold, overridden by the Light theme */
  --color-brand-accent:       #FFD700;
  --color-brand-accent-dim:   rgba(255,215,0,0.50);
  --color-brand-accent-faint: rgba(255,215,0,0.08);

  /* Neutrals (deep navy scale) */
  --gray-0:   #0a1018;
  --gray-50:  #0f1825;
  --gray-100: #162030;
  --gray-200: #1e2c40;
  --gray-300: #2c3e56;
  --gray-400: #4c6480;
  --gray-500: #7890a8;
  --gray-600: #9eb4c8;
  --gray-700: #c2d2e0;
  --gray-800: #dce8f0;
  --gray-900: #f1faee;

  /* Sunset Boulevard primary scale — burnt orange */
  --primary-50:  rgba(231,111,81,0.05);
  --primary-100: rgba(231,111,81,0.10);
  --primary-200: rgba(231,111,81,0.20);
  --primary-300: rgba(231,111,81,0.38);
  --primary-400: rgba(231,111,81,0.65);
  --primary-500: #e76f51;
  --primary-600: #c4563a;
  --primary-700: #a33e28;
  --primary-contrast: #fff8f6;

  /* Feedback */
  --red-100:   rgba(220,53,69,0.15);
  --red-300:   rgba(220,53,69,0.40);
  --red-500:   #F87171;
  --amber-100: rgba(255,215,0,0.08);
  --amber-300: rgba(255,215,0,0.25);
  --amber-500: #FBBF24;
  --green-100: rgba(16,185,129,0.12);
  --green-500: #34D399;

  /* ═══════════════════════════════════════════════════
     2. SEMANTIC TOKENS
     ═══════════════════════════════════════════════════ */

  /* Surface */
  --color-page-bg:       var(--gray-0);
  --color-surface:       var(--gray-100);
  --color-surface-raised:var(--gray-200);
  --color-border:        var(--gray-200);
  --color-overlay:       rgba(0,0,0,0.60);

  /* Text */
  --color-text:          var(--gray-900);
  --color-text-secondary:var(--gray-700);
  --color-text-muted:    var(--gray-600);
  --color-text-disabled: var(--gray-400);
  --color-label:         rgba(255,255,255,0.38);

  /* Form fields */
  --color-field-bg:              rgba(255,255,255,0.07);
  --color-field-bg-hover:        rgba(255,255,255,0.09);
  --color-field-bg-focus:        rgba(255,255,255,0.10);
  --color-field-bg-disabled:     rgba(255,255,255,0.03);
  --color-field-text:            rgba(255,255,255,0.88);
  --color-field-text-focus:      rgba(255,255,255,0.95);
  --color-field-placeholder:     rgba(255,255,255,0.22);
  --color-field-border:          rgba(255,255,255,0.13);
  --color-field-border-hover:    rgba(255,255,255,0.22);
  --color-field-border-disabled: rgba(255,255,255,0.07);
  --color-field-option-bg:       #1e2c40;

  /* Focus */
  --color-focus-ring:    rgba(231,111,81,0.55);
  --color-focus-shadow:  rgba(231,111,81,0.08);

  /* Primary action */
  --color-primary:          var(--primary-500);
  --color-primary-hover:    #f4a261;
  --color-primary-active:   var(--primary-600);
  --color-primary-contrast: var(--primary-contrast);
  --color-primary-ghost-bg: var(--primary-50);

  /* Feedback */
  --color-error-text:    var(--red-500);
  --color-error-border:  var(--red-500);
  --color-error-bg:      var(--red-100);
  --color-error-surface: var(--red-100);
  --color-warning-text:  rgba(255,220,100,0.85);
  --color-warning-border:var(--amber-300);
  --color-warning-bg:    var(--amber-100);
  --color-success-text:  var(--green-500);
  --color-success-border:var(--green-500);
  --color-success-bg:    var(--green-100);

  /* Links */
  --color-link:       #f4a261;
  --color-link-hover: #e76f51;

  /* ═══════════════════════════════════════════════════
     3. DESIGN TOKENS — Radius, Shadow, Transition
     ═══════════════════════════════════════════════════ */
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-full: 9999px;

  --shadow-sm:    0 1px 2px rgba(0,0,0,0.30);
  --shadow-md:    0 4px 6px -1px rgba(0,0,0,0.40);
  --shadow-lg:    0 10px 25px -3px rgba(0,0,0,0.50);
  --shadow-focus: 0 0 0 2px var(--color-focus-shadow);

  --transition-fast: 100ms ease;
  --transition-base: 150ms ease;
  --transition-slow: 250ms ease-out;

  /* Requirements / Group Requirements sub-cards (Threshold / Interval).
     Slightly darker than the surrounding section (--panel-bg). Dark themes
     share this overlay default; light themes override the two tokens below. */
  --req-card-bg:     rgba(0,0,0,0.22);
  --req-card-border: rgba(255,255,255,0.06);
}


/* ═══════════════════════════════════════════════════════
   4. PAGE HEADER — common across all form pages
   ═══════════════════════════════════════════════════════ */
.page-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: rgba(255,255,255,0.88);
}
.page-subtitle {
  font-size: 0.68rem;
  color: rgba(255,255,255,0.30);
  letter-spacing: 1.2px;
  text-transform: uppercase;
}


/* ═══════════════════════════════════════════════════════
   5. BADGE — gold accent chip
   ═══════════════════════════════════════════════════════ */
.ac-badge {
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--primary-400);
  background: var(--primary-50);
  border: 1px solid var(--primary-200);
  border-radius: var(--radius-md);
  padding: 0.25rem 0.7rem;
  letter-spacing: 0.5px;
  display: inline-block;
}


/* Team member badge — user chip in group members list */
.team-member-badge {
  font-size: 0.73rem;
  font-weight: 600;
  color: var(--color-brand-accent);
  background: var(--color-brand-accent-faint);
  border: 1px solid var(--color-brand-accent-dim);
  border-radius: var(--radius-md);
  padding: 0.2rem 0.65rem;
  letter-spacing: 0.3px;
  display: inline-flex;
  align-items: center;
  transition: background-color 0.15s, color 0.15s;
}
.team-member-badge:hover {
  background: var(--color-brand-accent-dim);
  color: rgba(255,255,255,0.95);
}


/* ═══════════════════════════════════════════════════════
   6. FORM SECTION CONTAINER
   ═══════════════════════════════════════════════════════ */
.form-section {
  background-color: var(--panel-bg);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: var(--radius-lg);
  padding: 1.2rem 1.1rem 0.6rem;
  margin-bottom: 1rem;
}
.form-section-title {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--primary-400);
  margin-bottom: 0.9rem;
  padding-bottom: 0.45rem;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}

/* Threshold / Interval sub-cards inside Requirements & Group Requirements.
   Full-height so the two side-by-side cards align; header is theme-readable. */
.req-card {
  background-color: var(--req-card-bg);
  border: 1px solid var(--req-card-border);
  border-radius: var(--radius-md);
  padding: 0.85rem 0.85rem 0.1rem;
  height: 100%;
}
.req-card-header {
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--primary-400);
  text-align: center;
  margin-bottom: 0.85rem;
  padding-bottom: 0.4rem;
  border-bottom: 1px solid var(--req-card-border);
}


/* ═══════════════════════════════════════════════════════
   7. DARK FORM — full input state matrix
   ═══════════════════════════════════════════════════════ */

/* Labels */
.dark-form .form-label,
.dark-form label {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  color: var(--color-label) !important;
  margin-bottom: 0.3rem !important;
}

/* Default state */
.dark-form .form-control,
.dark-form .form-select {
  width: 100% !important;
  background-color: var(--color-field-bg) !important;
  border: 1px solid var(--color-field-border) !important;
  border-radius: var(--radius-md) !important;
  color: var(--color-field-text) !important;
  font-size: 0.85rem !important;
  transition: border-color var(--transition-base), box-shadow var(--transition-base), background-color var(--transition-base);
}

/* Placeholder */
.dark-form .form-control::placeholder {
  color: var(--color-field-placeholder) !important;
}

/* Hover state */
.dark-form .form-control:hover:not(:disabled):not(:focus),
.dark-form .form-select:hover:not(:disabled):not(:focus) {
  border-color: var(--color-field-border-hover) !important;
  background-color: var(--color-field-bg-hover) !important;
}

/* Focus state — 2px ring, no layout shift */
.dark-form .form-control:focus,
.dark-form .form-select:focus {
  border-color: var(--color-focus-ring) !important;
  box-shadow: var(--shadow-focus) !important;
  background-color: var(--color-field-bg-focus) !important;
  color: var(--color-field-text-focus) !important;
  outline: none !important;
}

/* Disabled state */
.dark-form .form-control:disabled,
.dark-form .form-select:disabled {
  background-color: var(--color-field-bg-disabled) !important;
  border-color: var(--color-field-border-disabled) !important;
  color: var(--color-text-disabled) !important;
  cursor: not-allowed;
  opacity: 0.7;
}

/* Readonly state — non modificabile, ma il valore deve restare leggibile:
   lo sfondo/bordo attenuati bastano a dire "non lo puoi cambiare". */
.dark-form .form-control[readonly] {
  background-color: var(--color-field-bg-disabled) !important;
  border-color: var(--color-field-border-disabled) !important;
  color: var(--color-field-text) !important;
  cursor: default;
}

/* Readonly plain text */
.dark-form .form-control-plaintext {
  color: rgba(255,255,255,0.55) !important;
  background: rgba(255,255,255,0.04) !important;
  border-radius: var(--radius-md) !important;
  padding: 0.42rem 0.6rem !important;
  width: 100% !important;
}

/* Error state */
.dark-form .form-control.is-invalid,
.dark-form .form-select.is-invalid {
  border-color: var(--color-error-border) !important;
  background-color: var(--color-error-bg) !important;
}
.dark-form .invalid-feedback {
  font-size: 0.72rem;
  color: var(--color-error-text);
}

/* Success state */
.dark-form .form-control.is-valid,
.dark-form .form-select.is-valid {
  border-color: var(--color-success-border) !important;
}

/* Select dropdown options */
.dark-form select option,
.dark-form .form-select option {
  background-color: var(--color-field-option-bg);
  color: #fff;
}

/* La lista aperta di una <select> la disegna il browser: senza color-scheme
   nel tema Dark esce con cornice bianca e riga evidenziata grigio chiaro.
   Solo sulle select, per non toccare gli altri controlli nativi. */
select { color-scheme: dark; }
html[data-theme="light-slate"] select { color-scheme: light; }

/* Admin date/number widgets (not Bootstrap-classed) */
.dark-form input[type="text"]:not(.form-control),
.dark-form input[type="number"]:not(.form-control),
.dark-form input[type="date"]:not(.form-control),
.dark-form input.vDateField {
  background-color: var(--color-field-bg) !important;
  border: 1px solid var(--color-field-border) !important;
  border-radius: var(--radius-md) !important;
  color: var(--color-field-text) !important;
  font-size: 0.85rem !important;
}
.dark-form input[type="text"]:not(.form-control):focus,
.dark-form input[type="number"]:not(.form-control):focus,
.dark-form input[type="date"]:not(.form-control):focus,
.dark-form input.vDateField:focus {
  border-color: var(--color-focus-ring) !important;
  box-shadow: var(--shadow-focus) !important;
  outline: none !important;
}


/* Input group — keep datepicker icon inline */
.dark-form .input-group {
  display: flex !important;
  flex-wrap: nowrap !important;
}
.dark-form .input-group .form-control {
  width: 1% !important;        /* Bootstrap standard: let flex expand it */
  flex: 1 1 auto !important;
  min-width: 0 !important;
  border-radius: var(--radius-md) 0 0 var(--radius-md) !important;
}
.dark-form .input-group .form-control:last-child {
  border-radius: 0 var(--radius-md) var(--radius-md) 0 !important;
}

/* Fix calendar icon vertical alignment (sb-admin-2.css sets line-height:1.5 on .input-group-text) */
.input-group-text {
  line-height: 1 !important;
}

/* Checkbox & radio */
.dark-form .form-check-label {
  color: rgba(255,255,255,0.72) !important;
  font-size: 0.85rem !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  font-weight: 400 !important;
}
.dark-form .form-check-input {
  background-color: var(--color-field-bg);
  border-color: rgba(255,255,255,0.25);
  transition: background-color var(--transition-fast), border-color var(--transition-fast);
}
.dark-form .form-check-input:checked {
  background-color: var(--primary-500);
  border-color: var(--primary-500);
}
.dark-form .form-check-input:focus {
  box-shadow: var(--shadow-focus);
  border-color: var(--color-focus-ring);
  outline: none;
}
.dark-form .form-check-input.is-invalid {
  border-color: var(--color-error-border);
}

/* Textarea resize */
.dark-form textarea.form-control {
  min-height: 100px;
  resize: vertical;
}

/* Form-level error summary */
.dark-form .form-error-summary {
  background-color: var(--color-error-bg);
  border: 1px solid var(--color-error-border);
  border-left: 3px solid var(--color-error-border);
  border-radius: var(--radius-md);
  color: var(--color-error-text);
  font-size: 0.82rem;
  padding: 0.65rem 0.9rem;
  margin-bottom: 1.2rem;
}
.dark-form .form-error-summary ul {
  margin: 0.4rem 0 0;
  padding-left: 1.2rem;
}

/* Warning banner */
.dark-form .form-warning-banner {
  background-color: var(--color-warning-bg);
  border: 1px solid var(--color-warning-border);
  border-left: 3px solid var(--primary-300);
  border-radius: var(--radius-md);
  color: var(--color-warning-text);
  font-size: 0.80rem;
  padding: 0.65rem 0.9rem;
  margin-bottom: 1.2rem;
}


/* ═══════════════════════════════════════════════════════
   8. BUTTON HIERARCHY
   ═══════════════════════════════════════════════════════ */

/* Primary submit */
.btn-form-primary {
  background: linear-gradient(135deg, var(--primary-500) 0%, var(--primary-600) 100%);
  border: none;
  border-radius: var(--radius-md);
  color: var(--color-primary-contrast);
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  padding: 0.65rem 1.6rem;
  cursor: pointer;
  transition: filter var(--transition-fast), transform var(--transition-fast);
}
.btn-form-primary:hover  { filter: brightness(1.12); transform: translateY(-1px); }
.btn-form-primary:active { filter: brightness(0.92); transform: translateY(0); }
.btn-form-primary:focus-visible {
  outline: 2px solid var(--color-focus-ring);
  outline-offset: 2px;
}
.btn-form-primary:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
  filter: none;
}

/* Secondary — outlined */
.btn-form-secondary {
  background: transparent;
  border: 1px solid rgba(255,255,255,0.22);
  border-radius: var(--radius-md);
  color: rgba(255,255,255,0.72);
  font-size: 0.82rem;
  font-weight: 600;
  padding: 0.65rem 1.4rem;
  cursor: pointer;
  transition: border-color var(--transition-base), color var(--transition-base), background-color var(--transition-base);
}
.btn-form-secondary:hover {
  border-color: rgba(255,255,255,0.45);
  color: rgba(255,255,255,0.95);
  background-color: rgba(255,255,255,0.05);
}
.btn-form-secondary:focus-visible {
  outline: 2px solid var(--color-focus-ring);
  outline-offset: 2px;
}

/* Submitting state (JS-driven) */
.btn-form-primary.is-submitting,
.btn-form-primary[data-submitting="true"] {
  opacity: 0.7;
  cursor: wait;
  pointer-events: none;
}


/* ═══════════════════════════════════════════════════════
   9. DARK NAVIGATION TABS
   ═══════════════════════════════════════════════════════ */
.nav-tabs {
  border-bottom: 1px solid rgba(255,255,255,0.12) !important;
  gap: 2px;
}
.nav-tabs .nav-link {
  color: rgba(255,255,255,0.42) !important;
  border: 1px solid transparent !important;
  font-size: 0.80rem;
  font-weight: 600;
  padding: 0.5rem 1.1rem;
  border-radius: var(--radius-md) var(--radius-md) 0 0 !important;
  transition: color var(--transition-base), background-color var(--transition-base);
}
.nav-tabs .nav-link:hover {
  color: rgba(255,255,255,0.75) !important;
  background-color: rgba(255,255,255,0.05) !important;
}
.nav-tabs .nav-link.active {
  background-color: var(--panel-bg) !important;
  color: rgba(255,255,255,0.90) !important;
  border-color: rgba(255,255,255,0.12) rgba(255,255,255,0.12) var(--panel-bg) !important;
}
.tab-panel-body {
  background-color: var(--panel-bg);
  border: 1px solid rgba(255,255,255,0.10);
  border-top: none;
  border-radius: 0 var(--radius-md) var(--radius-lg) var(--radius-lg);
  padding: 1.5rem 1.2rem 1rem;
}


/* ═══════════════════════════════════════════════════════
   10. DARK DATA TABLE — reusable dark table styles
       Aliases: .dark-table, .doc-table (aircraftUpdate)
   ═══════════════════════════════════════════════════════ */
.dark-table thead th,
.doc-table thead th {
  background-color: rgba(255,255,255,0.05) !important;
  color: rgba(255,255,255,0.45) !important;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  border-color: rgba(255,255,255,0.08) !important;
  white-space: nowrap;
  padding: 0.6rem 0.75rem;
}
.dark-table tbody tr,
.doc-table tbody tr {
  color: rgba(255,255,255,0.72) !important;
  transition: background-color var(--transition-fast);
}
.dark-table tbody td,
.doc-table tbody td {
  border-color: rgba(255,255,255,0.06) !important;
  font-size: 0.82rem;
  vertical-align: middle;
  padding: 0.5rem 0.75rem;
}
.dark-table tbody tr:hover,
.doc-table tbody tr:hover {
  background-color: rgba(255,255,255,0.05) !important;
}
.dark-table .empty-row,
.doc-table .empty-row {
  color: rgba(255,255,255,0.28) !important;
  font-size: 0.82rem;
}


/* ═══════════════════════════════════════════════════════
   11. FILTER BAR — list-page filter form controls
   ═══════════════════════════════════════════════════════ */
.filter-label {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--color-label);
  margin-bottom: 0.3rem;
  display: block;
}
.next-due-sublabel {
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.5px;
  text-transform: uppercase;
  color: var(--color-label);
  width: 36px;
  text-align: right;
  flex-shrink: 0;
}
.filter-input,
.filter-select {
  background-color: var(--color-field-bg) !important;
  border: 1px solid var(--color-field-border) !important;
  border-radius: var(--radius-md) !important;
  color: var(--color-field-text) !important;
  font-size: 0.82rem !important;
  transition: border-color var(--transition-base), box-shadow var(--transition-base), background-color var(--transition-base);
}
.filter-input:focus,
.filter-select:focus {
  border-color: var(--color-focus-ring) !important;
  box-shadow: var(--shadow-focus) !important;
  background-color: var(--color-field-bg-focus) !important;
  outline: none !important;
}
.filter-input option,
.filter-select option {
  background-color: var(--color-field-option-bg);
  color: #fff;
}


/* ═══════════════════════════════════════════════════════
   12. SELECT2 DARK OVERRIDES
   ═══════════════════════════════════════════════════════ */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
  background-color: var(--color-field-bg) !important;
  border: 1px solid var(--color-field-border) !important;
  border-radius: var(--radius-md) !important;
  color: var(--color-field-text) !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  color: var(--color-field-text) !important;
}
.select2-container--default .select2-selection--single .select2-selection__placeholder {
  color: var(--color-field-placeholder) !important;
}
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
  border-color: var(--color-focus-ring) !important;
  box-shadow: var(--shadow-focus) !important;
  outline: none !important;
}
.select2-dropdown {
  background-color: #2e3038 !important;
  border: 1px solid rgba(255,255,255,0.15) !important;
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-lg) !important;
}
.select2-results__option {
  color: rgba(255,255,255,0.80) !important;
  font-size: 0.85rem;
}
.select2-results__option--highlighted {
  background-color: var(--primary-100) !important;
  color: #fff !important;
}
.select2-search--dropdown .select2-search__field {
  background-color: rgba(255,255,255,0.07) !important;
  border: 1px solid rgba(255,255,255,0.15) !important;
  border-radius: var(--radius-sm) !important;
  color: rgba(255,255,255,0.88) !important;
  padding: 0.4rem 0.6rem;
}

/* Instant search del part number (filtro lista seriali e form insert/update del seriale).
   Il container select2 eredita le classi del <select> originale (containerCssClass ':all:'
   in autocomplete_light/select2.js): qui si allineano solo altezza e carattere agli altri
   campi, i colori restano quelli del tema. */
.select2-container.pn-instant-search {
  display: block;
}
.select2-container.pn-instant-search .select2-selection--single {
  height: calc(1.5em + 0.75rem + 2px);
  display: flex;
  align-items: center;
}
.select2-container.pn-instant-search .select2-selection--single .select2-selection__rendered {
  font-size: 0.82rem;
  line-height: 1.5;
  padding-left: 0.75rem;
  padding-right: 2.2rem;
}
.select2-container.pn-instant-search .select2-selection--single .select2-selection__arrow {
  height: 100%;
}

/* Select2 con class 'form-control' (instant search ICAO/IATA delle leg, Place/Station dei
   WO, ...): DAL copia le classi del <select> sull'elemento .select2-selection, che riceve
   cosi' il padding verticale di Bootstrap mentre select2 tiene l'altezza fissa a 28px e
   l'interlinea del testo a 28px -> placeholder e valore scivolano in basso. Qui altezza
   uguale agli altri campi, niente padding verticale e testo centrato. */
.select2-container .select2-selection--single.form-control {
  display: flex;
  align-items: center;
  height: calc(1.5em + 0.75rem + 2px);
  padding-top: 0;
  padding-bottom: 0;
}
.select2-container .select2-selection--single.form-control .select2-selection__rendered {
  flex: 1 1 auto;
  min-width: 0;
  line-height: 1.5;
  padding-left: 0;
  padding-right: 1.6rem;
}
.select2-container .select2-selection--single.form-control .select2-selection__arrow {
  height: 100%;
  top: 0;
}


/* ═══════════════════════════════════════════════════════
   12. DARK MODAL
   ═══════════════════════════════════════════════════════ */
.dark-modal .modal-content {
  background-color: var(--panel-bg);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: var(--radius-lg);
  overflow: hidden;                                  /* header/footer respect the radius */
  box-shadow: 0 24px 60px -12px rgba(0,0,0,0.55);
}
.dark-modal .modal-header,
.dark-modal .modal-footer {
  border-color: rgba(255,255,255,0.10);
  padding: 0.95rem 1.35rem;
}
/* Subtle top-light sheen on the header for a bit of depth */
.dark-modal .modal-header {
  background: linear-gradient(180deg, rgba(255,255,255,0.05), rgba(255,255,255,0));
}
.dark-modal .modal-body {
  padding: 1.25rem 1.5rem;
}
.dark-modal .modal-title {
  color: rgba(255,255,255,0.90);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.3px;
}
/* Close (×) button: force light on dark-panel modals so it stays visible;
   light themes reset to the default dark glyph below. */
.dark-modal .btn-close {
  filter: invert(1) grayscale(100%) brightness(200%);
}
.dark-modal .form-label,
.dark-modal label {
  font-size: 0.68rem !important;
  font-weight: 700 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  color: var(--color-label) !important;
}
.dark-modal .form-control,
.dark-modal .form-select {
  background-color: var(--color-field-bg) !important;
  border: 1px solid var(--color-field-border) !important;
  color: var(--color-field-text) !important;
}
.dark-modal .form-control:focus,
.dark-modal .form-select:focus {
  border-color: var(--color-focus-ring) !important;
  box-shadow: var(--shadow-focus) !important;
  outline: none !important;
}
.dark-modal .form-select option,
.dark-modal select option {
  background-color: var(--color-field-option-bg);
  color: #fff;
}
/* Modal table — applies to explicit .modal-table and to any .table injected via JS
   inside a dark modal, so search-result tables look consistent and elegant. */
.modal-table,
.dark-modal .table {
  width: 100%;
  margin-bottom: 0;
  --bs-table-bg: transparent;
  border-collapse: separate;
  border-spacing: 0;
}
.modal-table tr,
.dark-modal .table tr {
  background-color: transparent !important;
  --bs-table-bg: transparent;
  --bs-table-striped-bg: transparent;
}
.dark-modal .modal-table thead th,
.dark-modal .table thead th {
  background-color: rgba(255,255,255,0.07) !important;
  color: rgba(255,255,255,0.55) !important;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  border-color: rgba(255,255,255,0.08) !important;
  padding: 0.6rem 0.75rem;
}
.dark-modal .modal-table tbody td,
.dark-modal .table tbody td {
  color: rgba(255,255,255,0.80) !important;
  border-color: rgba(255,255,255,0.06) !important;
  font-size: 0.82rem;
  vertical-align: middle;
  padding: 0.55rem 0.75rem;
}
.dark-modal .modal-table tbody tr,
.dark-modal .table tbody tr {
  transition: background-color var(--transition-fast);
}
.dark-modal .modal-table tbody tr:hover td,
.dark-modal .table tbody tr:hover td {
  background-color: rgba(255,255,255,0.045) !important;
}


/* ═══════════════════════════════════════════════════════
   12b. WORK ORDER IN-FORM DATA TABLES
        (Parts Required / Component Changes / Last Leg on the
         Free & Dummy WO forms) — elegant, theme-aware, replaces
         the flat Bootstrap .table-dark look.
   ═══════════════════════════════════════════════════════ */
.wo-data-table {
  width: 100%;
  margin-bottom: 0;
  --bs-table-bg: transparent;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
}
.wo-data-table > :not(caption) > * > * {
  background-color: transparent !important;
}
.wo-data-table thead th {
  background-color: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.55);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  border-color: rgba(255,255,255,0.08);
  padding: 0.6rem 0.75rem;
  vertical-align: middle;
}
.wo-data-table tbody td {
  color: rgba(255,255,255,0.82);
  border-color: rgba(255,255,255,0.06);
  font-size: 0.85rem;
  vertical-align: middle;
  padding: 0.55rem 0.75rem;
}
.wo-data-table tbody tr {
  transition: background-color var(--transition-fast);
}
.wo-data-table tbody tr:hover td {
  background-color: rgba(255,255,255,0.04);
}


/* ═══════════════════════════════════════════════════════
   13. DARK PANEL — generic dark container
   ═══════════════════════════════════════════════════════ */
.dark-panel {
  background-color: var(--panel-bg);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius-lg);
}


/* ═══════════════════════════════════════════════════════
   13b. BOOTSTRAP CARD — dark theme base overrides
        The Light theme overrides these via html[data-theme="light-slate"] !important rules
   ═══════════════════════════════════════════════════════ */
.card {
  background-color: var(--panel-bg);
  border-color: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.85);
}
.card-header {
  background-color: rgba(255,255,255,0.04);
  border-bottom-color: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.90);
}
.card-footer {
  background-color: rgba(255,255,255,0.03);
  border-top-color: rgba(255,255,255,0.08);
}


/* ═══════════════════════════════════════════════════════
   14. APP TABLE WRAPPER — django-tables2 dark tables
   ═══════════════════════════════════════════════════════ */
.app-table-wrapper .table {
  margin-bottom: 0;
  /* Override Bootstrap 5 table CSS variables to prevent white rows */
  --bs-table-bg: transparent;
  --bs-table-color: var(--t-row-color, rgba(255,255,255,0.72));
  --bs-table-striped-bg: transparent;
  --bs-table-hover-bg: var(--t-hover-bg, rgba(255,255,255,0.05));
  --bs-table-border-color: var(--t-border, rgba(255,255,255,0.06));
  background-color: transparent !important;
}
/* Target every td/th cell — Bootstrap 5 applies bg via this selector.
   thead is excluded: its cells get their own background via the rule below
   (if included, the higher specificity of this selector overrides thead th). */
.app-table-wrapper .table > :not(caption):not(thead) > * > * {
  background-color: transparent !important;
  border-color: var(--t-border, rgba(255,255,255,0.06));
}
.app-table-wrapper thead th {
  background: var(--panel-bg) !important;
  color: rgba(255,255,255,0.55) !important;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  border-color: rgba(255,255,255,0.08) !important;
  white-space: nowrap;
  text-align: center !important;
}
.app-table-wrapper tbody tr {
  color: rgba(255,255,255,0.72) !important;
  transition: background-color var(--transition-fast);
  /* Override base.css tr:nth-child(odd/even) { background: #fff } */
  background: transparent !important;
}
/* Neutralise the admin base.css nth-child rules scoped to app-table-wrapper.
   thead tr is also included: admin sets tr:nth-child(odd){background:#fff} globally. */
.app-table-wrapper thead tr,
.app-table-wrapper tbody tr:nth-child(odd),
.app-table-wrapper tbody tr:nth-child(even),
.app-table-wrapper tr:nth-child(odd),
.app-table-wrapper tr:nth-child(even) {
  background: transparent !important;
  /* Also reset Bootstrap 5 box-shadow paint that overrides background-color:transparent */
  --bs-table-accent-bg: transparent !important;
}
.app-table-wrapper tbody td {
  border-color: rgba(255,255,255,0.06) !important;
  font-size: 0.82rem;
  vertical-align: middle;
}
.app-table-wrapper tbody tr:hover td {
  background-color: rgba(255,255,255,0.05) !important;
}
.app-table-wrapper .pagination .page-link {
  background-color: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.10);
  color: rgba(255,255,255,0.55);
  transition: background-color var(--transition-base), color var(--transition-base);
}
.app-table-wrapper .pagination .page-item.active .page-link {
  background-color: var(--menu-color);
  border-color: var(--menu-color);
  color: #fff;
}
.app-table-wrapper .pagination .page-link:hover {
  background-color: rgba(255,255,255,0.10);
  color: rgba(255,255,255,0.85);
}

/* ── Planning table: icon + link contrast — default (Dark) theme ── */
html:not([data-theme]) .app-table-wrapper tbody .fa-cogs,
html:not([data-theme]) .app-table-wrapper tbody .fa-plane {
  color: rgba(255,255,255,0.52) !important;
}
html:not([data-theme]) .app-table-wrapper tbody a {
  color: var(--color-link);
  text-decoration: none;
}
html:not([data-theme]) .app-table-wrapper tbody a:hover {
  color: var(--color-brand-accent);
  text-decoration: underline;
}

/* ⚠️ La regola qui sopra tinge di arancio OGNI <a> della tabella, bottoni
   d'azione compresi: sul giallo di .btn-warning l'icona diventava illeggibile.
   I bottoni pieni portano quindi un'utility text-dark/text-white (!important),
   quelli outline le regole dedicate qui sotto. */

/* ── Bottoni d'azione nelle righe (Doc / Edit / Delete) ── */
.app-table-wrapper tbody .btn-table-action {
  line-height: 1;
  padding: 0.3rem 0.55rem;
}
.app-table-wrapper tbody .btn-table-action:hover {
  text-decoration: none;
}
/* Azione "casella vuota" (nessun documento caricato): presente ma defilata.
   opacity-25 la rendeva praticamente invisibile su entrambi i temi. */
.app-table-wrapper tbody .btn-table-action-empty {
  border-style: dashed;
}
html:not([data-theme]) .app-table-wrapper tbody .btn-table-action-empty {
  color: rgba(255,255,255,0.60);
  border-color: rgba(255,255,255,0.30);
}
html:not([data-theme]) .app-table-wrapper tbody .btn-table-action-empty:hover {
  color: #fff;
  border-color: rgba(255,255,255,0.65);
  background-color: rgba(255,255,255,0.10);
}


/* ═══════════════════════════════════════════════════════
   15. RESPONSIVE
   ═══════════════════════════════════════════════════════ */
@media (max-width: 575.98px) {
  .form-section {
    padding: 1rem 0.9rem 0.5rem;
  }
  .dark-form .form-control,
  .dark-form .form-select {
    font-size: 1rem !important; /* ≥16px prevents iOS zoom on focus */
  }
  .btn-form-primary,
  .btn-form-secondary {
    width: 100%;
    padding: 0.75rem 1rem;
    min-height: 44px; /* touch target */
  }
}


/* ═══════════════════════════════════════════════════════
   LIST RESET — remove browser-default bullets / spacing
   ═══════════════════════════════════════════════════════ */
ul, ol, li {
  list-style-type: none !important;
  margin:  0;
  padding: 0;
}

/* ═══════════════════════════════════════════════════════
   16. GLOBAL BACKGROUND — apply --bg-color to page shell
   ═══════════════════════════════════════════════════════ */
body,
#content,
#content-wrapper,
#mainTopbar,
.sticky-footer {
  background-color: var(--bg-color) !important;
}
/* Page content text color (replaces removed text-white class) */
#mainContent {
  color: var(--color-text);
}
/* topbar shadow: dark by default, softened for light themes */
#mainTopbar {
  box-shadow: 0 .5rem 1rem rgba(0,0,0,0.80) !important;
}
/* link-warning: themed primary color */
.link-warning { color: var(--primary-400); }
.link-warning:hover { color: var(--primary-500); }


/* ═══════════════════════════════════════════════════════
   17. THEME SWITCHER COMPONENT
   ═══════════════════════════════════════════════════════ */
.theme-switcher-btn {
  background: transparent;
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--radius-full);
  padding: 4px 10px 4px 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  color: rgba(255,255,255,0.60);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.3px;
  transition: border-color var(--transition-base), background-color var(--transition-base), color var(--transition-base);
  white-space: nowrap;
}
.theme-switcher-btn:hover,
.theme-switcher-btn:focus {
  border-color: rgba(255,255,255,0.32);
  background-color: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.90);
}
.theme-switcher-btn.show {
  background-color: rgba(255,255,255,0.07);
  color: rgba(255,255,255,0.90);
}
/* current-theme dot */
#currentThemeDot {
  width: 13px; height: 13px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.25);
  display: inline-block;
  flex-shrink: 0;
  transition: background var(--transition-base);
}
/* picker dropdown */
.theme-picker-menu {
  padding: 0.5rem 0.4rem !important;
  min-width: 195px !important;
}
.theme-option {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 0.42rem 0.65rem;
  border-radius: var(--radius-md);
  cursor: pointer;
  background: transparent;
  border: none;
  text-align: left;
  transition: background-color var(--transition-fast);
}
.theme-option:hover { background-color: rgba(255,255,255,0.07); }
.theme-option.is-active { background-color: var(--primary-100); }
.theme-option .t-swatch {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.18);
  flex-shrink: 0;
}
.theme-option .t-name {
  font-size: 0.78rem;
  font-weight: 700;
  color: rgba(255,255,255,0.85);
  display: block;
  line-height: 1.2;
}
.theme-option .t-desc {
  font-size: 0.64rem;
  color: rgba(255,255,255,0.36);
  display: block;
}
.theme-section-label {
  font-size: 0.60rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: rgba(255,255,255,0.28);
  padding: 0.4rem 0.65rem 0.2rem;
}


/* ═══════════════════════════════════════════════════════
   18. THEME — LIGHT / ARCTIC FROST (ice blue bg + steel blue accent)
   ═══════════════════════════════════════════════════════ */
html[data-theme="light-slate"] {
  --bg-color:   #d4e4f7;
  --panel-bg:   #fafafa;
  --req-card-bg:     #e9eef5;
  --req-card-border: #b8ccdf;
  --menu-color: #4a6fa5;
  --color-brand-accent:       #4a6fa5;
  --color-brand-accent-dim:   rgba(74,111,165,0.40);
  --color-brand-accent-faint: rgba(74,111,165,0.08);

  /* Light primitives */
  --gray-0:   #fafafa;
  --gray-50:  #F4F8FD;
  --gray-100: #EBF2FB;
  --gray-200: #d4e4f7;
  --gray-300: #b8ccdf;
  --gray-400: #8eaac4;
  --gray-500: #6C7280;
  --gray-600: #4B5060;
  --gray-700: #374050;
  --gray-800: #1F2735;
  --gray-900: #111827;

  --color-page-bg:         #d4e4f7;
  --color-surface:         #fafafa;
  --color-surface-raised:  #EBF2FB;
  --color-border:          #b8ccdf;

  --color-text:            #111827;
  --color-text-secondary:  #374050;
  --color-text-muted:      #6C7280;
  --color-text-disabled:   #8eaac4;
  --color-label:           #374050;

  --color-field-bg:              #fafafa;
  --color-field-bg-hover:        #F4F8FD;
  --color-field-bg-focus:        #fafafa;
  --color-field-bg-disabled:     #EBF2FB;
  --color-field-text:            #111827;
  --color-field-text-focus:      #111827;
  --color-field-placeholder:     #8eaac4;
  --color-field-border:          #b8ccdf;
  --color-field-border-hover:    #4a6fa5;
  --color-field-border-disabled: #d4e4f7;
  --color-field-option-bg:       #fafafa;

  /* Focus: steel blue */
  --color-focus-ring:   rgba(74,111,165,0.50);
  --color-focus-shadow: rgba(74,111,165,0.10);

  /* Primary: steel blue */
  --primary-50:  rgba(74,111,165,0.05);
  --primary-100: rgba(74,111,165,0.10);
  --primary-200: rgba(74,111,165,0.20);
  --primary-300: rgba(74,111,165,0.40);
  --primary-400: rgba(74,111,165,0.70);
  --primary-500: #4a6fa5;
  --primary-600: #3a5a8a;
  --primary-700: #2e4870;
  --primary-contrast: #FFFFFF;

  --color-primary:          #4a6fa5;
  --color-primary-hover:    #3a5a8a;
  --color-primary-active:   #2e4870;
  --color-primary-contrast: #FFFFFF;
  --color-primary-ghost-bg: rgba(74,111,165,0.07);

  --color-link:       #4a6fa5;
  --color-link-hover: #3a5a8a;

  --shadow-sm:    0 1px 2px rgba(0,0,0,0.05);
  --shadow-md:    0 4px 6px -1px rgba(0,0,0,0.08);
  --shadow-lg:    0 10px 25px -3px rgba(0,0,0,0.10);
  --shadow-focus: 0 0 0 2px rgba(74,111,165,0.10);

  --t-row-color: #374050;
  --t-border:    #b8ccdf;
  --t-hover-bg:  rgba(74,111,165,0.05);
}

html[data-theme="light-slate"] #mainTopbar {
  box-shadow: 0 2px 8px rgba(0,0,0,0.10) !important;
}
html[data-theme="light-slate"] .nav-dropdown-menu {
  background-color: #fafafa;
  border-color: #b8ccdf;
  box-shadow: 0 4px 16px rgba(74,111,165,0.12);
}
html[data-theme="light-slate"] .nav-dropdown-menu .dropdown-item { color: #374050; }
html[data-theme="light-slate"] .nav-dropdown-menu .dropdown-item:hover,
html[data-theme="light-slate"] .nav-dropdown-menu .dropdown-item:focus {
  background-color: #EBF2FB;
  color: #111827;
}
html[data-theme="light-slate"] .nav-dropdown-menu .dropdown-divider { border-color: #b8ccdf; }
html[data-theme="light-slate"] .nav-dropdown-menu .dropdown-header  { color: #8eaac4; }
html[data-theme="light-slate"] .nav-dropdown-menu .btn-outline-light {
  color: #374050 !important;
  border-color: #8eaac4 !important;
  background-color: transparent !important;
}
html[data-theme="light-slate"] .nav-dropdown-menu .btn-outline-light:hover {
  color: #111827 !important;
  border-color: #4a6fa5 !important;
  background-color: #EBF2FB !important;
}
html[data-theme="light-slate"] #mainContent   { color: #111827 !important; }
html[data-theme="light-slate"] .page-title    { color: #1F2735; }
html[data-theme="light-slate"] .page-subtitle { color: #6C7280; }
html[data-theme="light-slate"] .dark-panel    { border-color: #b8ccdf; }
html[data-theme="light-slate"] .form-section  { border-color: #b8ccdf; }
html[data-theme="light-slate"] .form-section-title {
  color: #4a6fa5;
  border-bottom-color: #b8ccdf;
}
html[data-theme="light-slate"] .ac-badge {
  color: #4a6fa5;
  background: rgba(74,111,165,0.08);
  border-color: rgba(74,111,165,0.25);
}
html[data-theme="light-slate"] .team-member-badge {
  color: #4a6fa5;
  background: rgba(74,111,165,0.08);
  border-color: rgba(74,111,165,0.25);
}
html[data-theme="light-slate"] .team-member-badge:hover {
  background: rgba(74,111,165,0.18);
  color: #1a2332;
}
html[data-theme="light-slate"] .btn-form-primary {
  background: linear-gradient(135deg, #4a6fa5, #3a5a8a);
  color: #FFFFFF;
}
html[data-theme="light-slate"] .btn-form-secondary {
  border-color: #b8ccdf;
  color: #374050;
}
html[data-theme="light-slate"] .btn-form-secondary:hover {
  border-color: #4a6fa5;
  color: #111827;
  background-color: #EBF2FB;
}
html[data-theme="light-slate"] .nav-tabs             { border-bottom-color: #b8ccdf !important; }
html[data-theme="light-slate"] .nav-tabs .nav-link   { color: #6C7280 !important; }
html[data-theme="light-slate"] .nav-tabs .nav-link:hover {
  color: #374050 !important;
  background-color: #EBF2FB !important;
}
html[data-theme="light-slate"] .nav-tabs .nav-link.active {
  background-color: #fafafa !important;
  color: #111827 !important;
  border-color: #b8ccdf #b8ccdf #fafafa !important;
}
html[data-theme="light-slate"] .tab-panel-body { background-color: #fafafa; border-color: #b8ccdf; }
html[data-theme="light-slate"] .dark-table thead th,
html[data-theme="light-slate"] .doc-table  thead th {
  background-color: #8FBBD8 !important;
  color: #1F2937 !important;
  border-color: #72a4c8 !important;
}
html[data-theme="light-slate"] .dark-table tbody tr,
html[data-theme="light-slate"] .doc-table  tbody tr { color: #111827 !important; }
html[data-theme="light-slate"] .dark-table tbody td,
html[data-theme="light-slate"] .doc-table  tbody td { border-color: #b8ccdf !important; }
html[data-theme="light-slate"] .dark-table tbody tr:hover,
html[data-theme="light-slate"] .doc-table  tbody tr:hover { background-color: #F4F8FD !important; }
html[data-theme="light-slate"] .app-table-wrapper thead th {
  background: #8FBBD8 !important;
  color: #1F2937 !important;
  border-color: #72a4c8 !important;
}
html[data-theme="light-slate"] .app-table-wrapper tbody tr  { color: #374050 !important; }
html[data-theme="light-slate"] .app-table-wrapper tbody td  { border-color: #b8ccdf !important; }
html[data-theme="light-slate"] .app-table-wrapper tbody tr:hover td { background-color: rgba(74,111,165,0.05) !important; }
html[data-theme="light-slate"] .app-table-wrapper .table > :not(caption) > * > * { color: #374050; }
html[data-theme="light-slate"] .app-table-wrapper .pagination .page-link {
  background-color: #fafafa;
  border-color: #b8ccdf;
  color: #4B5060;
}
html[data-theme="light-slate"] .app-table-wrapper .pagination .page-item.active .page-link {
  background-color: #4a6fa5;
  border-color: #4a6fa5;
  color: #fff;
}
html[data-theme="light-slate"] .app-table-wrapper .pagination .page-link:hover {
  background-color: #EBF2FB;
  color: #111827;
}
html[data-theme="light-slate"] .dark-modal .modal-content  { background-color: #fafafa; border-color: #b8ccdf; }
html[data-theme="light-slate"] .dark-modal .btn-close { filter: none; }
html[data-theme="light-slate"] .dark-modal .modal-header,
html[data-theme="light-slate"] .dark-modal .modal-footer   { border-color: #b8ccdf; }
html[data-theme="light-slate"] .dark-modal .modal-title    { color: #111827; }
html[data-theme="light-slate"] .dark-modal .modal-table thead th,
html[data-theme="light-slate"] .dark-modal .table thead th {
  background-color: #EBF2FB !important;
  color: #4B5060 !important;
  border-color: #b8ccdf !important;
}
html[data-theme="light-slate"] .dark-modal .modal-table tbody td,
html[data-theme="light-slate"] .dark-modal .table tbody td {
  color: #374050 !important;
  border-color: #b8ccdf !important;
}
html[data-theme="light-slate"] .dark-modal .modal-table tbody tr:hover td,
html[data-theme="light-slate"] .dark-modal .table tbody tr:hover td {
  background-color: #EAF1FA !important;
}
html[data-theme="light-slate"] .dark-modal .modal-header {
  background: linear-gradient(180deg, rgba(0,0,0,0.03), rgba(0,0,0,0));
}
html[data-theme="light-slate"] .wo-data-table thead th { background-color: #EBF2FB; color: #4B5060; border-color: #b8ccdf; }
html[data-theme="light-slate"] .wo-data-table tbody td { color: #374050; border-color: #b8ccdf; }
html[data-theme="light-slate"] .wo-data-table tbody tr:hover td { background-color: #EAF1FA; }
html[data-theme="light-slate"] .dark-form .form-check-label { color: #374050 !important; }
html[data-theme="light-slate"] .dark-form .form-check-input {
  background-color: #fafafa;
  border-color: #b8ccdf;
}
html[data-theme="light-slate"] .dark-form .form-check-input:checked {
  background-color: #4a6fa5;
  border-color: #4a6fa5;
}
html[data-theme="light-slate"] .dark-form .form-control-plaintext {
  color: #4B5060 !important;
  background: #EBF2FB !important;
}
html[data-theme="light-slate"] .dark-form select option,
html[data-theme="light-slate"] .dark-form .form-select option,
html[data-theme="light-slate"] .filter-input option,
html[data-theme="light-slate"] .filter-select option { background-color: #fafafa; color: #111827; }
html[data-theme="light-slate"] .select2-container--default .select2-selection--single,
html[data-theme="light-slate"] .select2-container--default .select2-selection--multiple {
  background-color: #fafafa !important;
  border-color: #b8ccdf !important;
}
html[data-theme="light-slate"] .select2-container--default .select2-selection--single .select2-selection__rendered { color: #111827 !important; }
html[data-theme="light-slate"] .select2-dropdown {
  background-color: #fafafa !important;
  border-color: #b8ccdf !important;
  box-shadow: 0 4px 16px rgba(74,111,165,0.10) !important;
}
html[data-theme="light-slate"] .select2-results__option { color: #374050 !important; }
html[data-theme="light-slate"] .select2-results__option--highlighted {
  background-color: rgba(74,111,165,0.10) !important;
  color: #111827 !important;
}
html[data-theme="light-slate"] .select2-search--dropdown .select2-search__field {
  background-color: #F4F8FD !important;
  border-color: #b8ccdf !important;
  color: #111827 !important;
}
html[data-theme="light-slate"] .card {
  background-color: #fafafa !important;
  border-color: #b8ccdf !important;
  color: #111827 !important;
}
html[data-theme="light-slate"] .bg-light    { background-color: #F4F8FD !important; }
html[data-theme="light-slate"] .card-header { background-color: #EEF4FB !important; border-color: #b8ccdf !important; color: #111827 !important; }
html[data-theme="light-slate"] .card-footer { background-color: #EEF4FB !important; border-color: #b8ccdf !important; color: #111827 !important; }
html[data-theme="light-slate"] .link-warning       { color: #4a6fa5 !important; }
html[data-theme="light-slate"] .link-warning:hover { color: #3a5a8a !important; }
html[data-theme="light-slate"] .theme-switcher-btn {
  border-color: rgba(74,111,165,0.30);
  color: rgba(74,111,165,0.85);
}
html[data-theme="light-slate"] .theme-switcher-btn:hover {
  border-color: rgba(74,111,165,0.50);
  background-color: rgba(74,111,165,0.06);
  color: #4a6fa5;
}
html[data-theme="light-slate"] #currentThemeDot       { border-color: rgba(74,111,165,0.35); }
html[data-theme="light-slate"] .theme-picker-menu      { background-color: #fafafa !important; border-color: #b8ccdf !important; }
html[data-theme="light-slate"] .theme-option .t-name   { color: #374050; }
html[data-theme="light-slate"] .theme-option .t-desc   { color: #8eaac4; }
html[data-theme="light-slate"] .theme-option:hover     { background-color: #EBF2FB; }
html[data-theme="light-slate"] .theme-option.is-active { background-color: rgba(74,111,165,0.08); }
html[data-theme="light-slate"] .theme-section-label    { color: #8eaac4; }

/* ═══════════════════════════════════════════════════════
   19. HOMEPAGE — Hero, Section label, Separator,
       Quick-link tiles, Fleet cards
   ═══════════════════════════════════════════════════════ */

/* ── Hero ── */
.home-hero {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 2.5rem 1rem 1.5rem;
}
.home-hero img {
  max-width: 260px;
  width: 100%;
  border-radius: var(--radius-lg);
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.55));
}
.home-hero .subtitle {
  margin-top: 0.9rem;
  font-size: 0.82rem;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--color-text-disabled);
}

/* ── Section label ── */
.section-label {
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--color-text-disabled);
  margin-bottom: 0.8rem;
  padding-left: 0.1rem;
}

/* ── Gold separator ── */
.gold-rule {
  height: 1px;
  background: linear-gradient(
    to right,
    transparent,
    var(--color-brand-accent-dim) 30%,
    var(--color-brand-accent-dim) 70%,
    transparent
  );
  border: none;
  margin: 2rem 0;
}

/* ── Quick-link tiles ── */
.ql-tile {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  background-color: var(--panel-bg);
  border: 1px solid var(--color-field-border);
  border-radius: var(--radius-md);
  padding: 0.85rem 1rem;
  text-decoration: none;
  color: var(--color-link);
  font-size: 0.82rem;
  font-weight: 600;
  transition: background-color var(--transition-fast),
              border-color var(--transition-fast),
              color var(--transition-fast),
              transform var(--transition-fast);
}
/* base.css dell'admin Django e' caricato DOPO questo foglio e la sua regola
   a:link, a:visited (specificita' superiore a una sola classe) sovrascriveva il
   colore delle piastrelle: lo ripeto con la pseudo-classe per avere la meglio. */
.ql-tile:link,
.ql-tile:visited {
  color: var(--color-link);
}
.ql-tile:hover {
  background-color: var(--color-surface-raised);
  border-color: var(--color-field-border-hover);
  color: var(--color-link-hover);
  transform: translateY(-2px);
  text-decoration: none;
}
.ql-tile .ql-icon {
  font-size: 1.15rem;
  width: 2rem;
  text-align: center;
  opacity: 0.85;
  flex-shrink: 0;
}
/* Tema Dark (= :root): arancione dei link, giallo del brand al passaggio del mouse.
   Sul tema Light --color-link e --color-brand-accent coincidono, quindi li' resta
   la coppia link / link-hover definita sopra. */
html:not([data-theme]) .ql-tile:hover {
  color: var(--color-brand-accent);
}

/* ── Fleet aircraft cards ── */
.ac-card {
  background-color: var(--panel-bg);
  border: 1px solid var(--color-field-border);
  border-radius: 10px;
  padding: 1rem 1.1rem 0.9rem;
  transition: border-color var(--transition-base), transform var(--transition-fast);
  height: 100%;
}
.ac-card:hover {
  border-color: var(--color-brand-accent-dim);
  transform: translateY(-2px);
}
.ac-card .ac-reg {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--color-brand-accent);
  letter-spacing: 0.5px;
  line-height: 1;
}
.ac-card .ac-msn {
  font-size: 0.72rem;
  color: var(--color-text-disabled);
  letter-spacing: 0.5px;
  margin-top: 0.15rem;
}
.ac-card .ac-model {
  font-size: 0.80rem;
  color: var(--color-text-muted);
  margin-top: 0.5rem;
  font-weight: 600;
}
.ac-card hr.ac-divider {
  border-color: var(--color-field-border);
  margin: 0.6rem 0;
}
.ac-stat-row {
  display: flex;
  justify-content: space-between;
  gap: 0.5rem;
  margin-top: 0.3rem;
}
.ac-stat {
  text-align: center;
  flex: 1;
}
.ac-stat .val {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--color-field-text);
  display: block;
}
.ac-stat .lbl {
  font-size: 0.62rem;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--color-text-disabled);
}
.ac-stat-unit {
  font-size: 0.62rem;
  opacity: 0.6;
}
.ac-card .ac-link {
  display: block;
  margin-top: 0.75rem;
  text-align: right;
  font-size: 0.72rem;
  color: var(--color-text-disabled);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.ac-card .ac-link:hover {
  color: var(--color-brand-accent-dim);
}
.ac-link-arrow {
  font-size: 0.6rem;
}

/* ── Light-theme overrides: homepage ── */
html[data-theme="light-slate"] .home-hero img {
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.12));
}
html[data-theme="light-slate"] .ql-tile {
  box-shadow: var(--shadow-sm);
}
html[data-theme="light-slate"] .ac-card {
  box-shadow: var(--shadow-sm);
}

/* ═══════════════════════════════════════════════════════
   20. BASE LAYOUT — Spinner, navbar, footer
       (extracted from base.html inline <style>)
   ═══════════════════════════════════════════════════════ */

/* ── Loading spinner overlay ── */
#spinner {
  display: none;
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  background: var(--color-overlay);
  z-index: 9999;
  text-align: center;
  padding-top: 15%;
}
#spinner .message {
  display: inline-block;
  background: rgba(0,0,0,0.82);
  color: #fff;
  padding: 15px;
  border-radius: 5px;
  font-size: 24px;
}

/* ── Release info footer icon ── */
#release-info-icon {
  cursor: pointer;
  font-size: 0.8rem;
}
.swal2-html-container div {
  text-align: left;
  white-space: pre-wrap;
}

/* ── Nav menu buttons ── */
.nav-menu-btn {
  display: inline-block;
  background-color: var(--menu-color) !important;
  border: 1px solid rgba(255,255,255,0.1) !important;
  color: rgba(255,255,255,0.80) !important;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.3px;
  padding: 0.32rem 0.72rem;
  border-radius: 5px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: color var(--transition-base), filter var(--transition-base), border-color var(--transition-base);
  line-height: 1.5;
}
.nav-menu-btn:hover,
.nav-menu-btn:focus {
  color: #fff !important;
  filter: brightness(1.22);
  border-color: rgba(255,255,255,0.28) !important;
  text-decoration: none;
}
.nav-menu-btn.show {
  filter: brightness(0.88) !important;
  color: #fff !important;
}
.nav-menu-btn.dropdown-toggle::after {
  vertical-align: 0.15em;
  margin-left: 0.4em;
}

/* ── Dropdown menus ── */
.nav-dropdown-menu {
  background-color: #2e3038;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 6px;
  box-shadow: 0 6px 20px rgba(0,0,0,0.45);
  min-width: 175px;
  padding: 0.4rem 0;
}
.nav-dropdown-menu .dropdown-item {
  color: rgba(255,255,255,0.78);
  font-size: 0.82rem;
  font-weight: 500;
  padding: 0.45rem 1.1rem;
}
.nav-dropdown-menu .dropdown-item:hover,
.nav-dropdown-menu .dropdown-item:focus {
  background-color: rgba(255,255,255,0.09);
  color: #fff;
}
.nav-dropdown-menu .dropdown-divider {
  border-color: rgba(255,255,255,0.1);
  margin: 0.3rem 0;
}
.nav-dropdown-menu .dropdown-header {
  font-size: 0.70rem;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: rgba(255,255,255,0.4);
  padding: 0.35rem 1.1rem;
}

/* ── Navbar layout ── */
#mainNavbar .navbar-nav {
  gap: 3px;
}
.navbar-user-info {
  font-size: 0.76rem;
  color: rgba(255,255,255,0.55);
  line-height: 1.3;
}
.navbar-user-info strong {
  color: rgba(255,255,255,0.88);
}
@media (max-width: 991.98px) {
  #mainNavbar {
    padding: 0.6rem 0.5rem 0.8rem;
  }
  #mainNavbar .navbar-nav {
    gap: 2px;
  }
  .nav-menu-btn {
    display: block;
    width: 100%;
    text-align: left;
  }
}

/* ── Light-theme overrides: navbar ── */
html[data-theme="light-slate"] .nav-menu-btn {
  background-color: transparent !important;
  color: #1F2735 !important;
  border-color: rgba(74,111,165,0.28) !important;
}
html[data-theme="light-slate"] .nav-menu-btn:hover,
html[data-theme="light-slate"] .nav-menu-btn:focus {
  background-color: rgba(74,111,165,0.12) !important;
  color: #1F2735 !important;
  border-color: rgba(74,111,165,0.45) !important;
  filter: none;
}
html[data-theme="light-slate"] .nav-menu-btn.show {
  background-color: rgba(74,111,165,0.16) !important;
  color: #1F2735 !important;
  filter: none;
}
html[data-theme="light-slate"] .navbar-user-info { color: rgba(74,111,165,0.60); }
html[data-theme="light-slate"] .navbar-user-info strong { color: #1F2735; }

/* ── Notification bell / print icon: adapt to theme ── */
/* Dark themes: icon is white by default — no override needed */
html[data-theme="light-slate"] #notificationBell .fa-print {
  color: #1F2735 !important;
}
html[data-theme="light-slate"] #notificationBell:hover .fa-print {
  color: rgba(74,111,165,0.80) !important;
}

/* ── Footer brand ── */
.footer-brand-rule {
  width: 60%;
  height: 2px;
  background: linear-gradient(
    to right,
    transparent,
    var(--color-brand-accent-dim) 15%,
    var(--color-brand-accent) 85%,
    transparent
  );
  margin: 0 auto 15px;
}
.footer-brand-text {
  color: var(--color-text-muted);
}
.footer-brand-icon {
  color: var(--color-brand-accent-faint);
}
html[data-theme="light-slate"] .footer-brand-icon {
  color: var(--color-text-disabled);
}

/* ═══════════════════════════════════════════════════════
   ENVIRONMENT BANNER
   Shown only on development / staging installations.
   Uses hard-coded colors intentionally: must remain
   unmistakably visible regardless of the active theme.
   ═══════════════════════════════════════════════════════ */
.env-banner {
  position: sticky;
  top: 0;
  z-index: 2000;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.35rem 1rem;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border-bottom: 2px solid transparent;
}

/* Development — amber stripe (default; overridden by --env-banner-bg / --env-banner-text) */
.env-banner--development {
  background-color: var(--env-banner-bg, #92400e);
  color: var(--env-banner-text, #fef3c7);
  border-bottom-color: var(--env-banner-bg, #f59e0b);
  background-image: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 14px,
    rgba(0, 0, 0, 0.10) 14px,
    rgba(0, 0, 0, 0.10) 28px
  );
}

/* Staging — blue (default; overridden by --env-banner-bg / --env-banner-text) */
.env-banner--staging {
  background-color: var(--env-banner-bg, #1e3a5f);
  color: var(--env-banner-text, #bae6fd);
  border-bottom-color: var(--env-banner-bg, #38bdf8);
  background-image: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 14px,
    rgba(0, 0, 0, 0.10) 14px,
    rgba(0, 0, 0, 0.10) 28px
  );
}

/* Fallback for any other non-production value */
.env-banner:not(.env-banner--development):not(.env-banner--staging) {
  background-color: var(--env-banner-bg, #3b1c6b);
  color: var(--env-banner-text, #e9d5ff);
  border-bottom-color: var(--env-banner-bg, #a855f7);
  background-image: repeating-linear-gradient(
    -45deg,
    transparent,
    transparent 14px,
    rgba(0, 0, 0, 0.10) 14px,
    rgba(0, 0, 0, 0.10) 28px
  );
}

.env-banner__label {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  padding: 0.1rem 0.5rem;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.35);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
}

.env-banner__sep {
  position: relative;
  z-index: 1;
  padding: 0.1rem 0.25rem;
  background-color: rgba(0, 0, 0, 0.30);
  opacity: 0.80;
}

.env-banner__text {
  position: relative;
  z-index: 1;
  padding: 0.1rem 0.4rem;
  border-radius: 3px;
  background-color: rgba(0, 0, 0, 0.30);
  font-weight: 400;
}

.env-banner__watermark {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  overflow: hidden;
  white-space: nowrap;
  font-size: 1.4rem;
  font-weight: 900;
  letter-spacing: 0.55em;
  text-transform: uppercase;
  opacity: 0.3;
  pointer-events: none;
  user-select: none;
}

/* ─── 30. SWEETALERT2 — THEME-AWARE RELEASE NOTES POPUP ─────────────────── */
.swal2-popup.swal2-release {
  background: var(--panel-bg) !important;
  color: var(--color-text) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 10px !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.45) !important;
}
.swal2-popup.swal2-release .swal2-title {
  color: var(--primary-500) !important;
  font-size: 1.1rem !important;
  letter-spacing: 0.04em !important;
}
.swal2-popup.swal2-release .swal2-html-container {
  color: var(--color-text) !important;
  text-align: left !important;
  max-height: 55vh !important;
  overflow-y: auto !important;
  padding: 0 0.5rem !important;
}
.swal2-popup.swal2-release .swal2-html-container::-webkit-scrollbar { width: 6px; }
.swal2-popup.swal2-release .swal2-html-container::-webkit-scrollbar-track { background: transparent; }
.swal2-popup.swal2-release .swal2-html-container::-webkit-scrollbar-thumb {
  background: var(--primary-300);
  border-radius: 3px;
}
.swal2-popup.swal2-release .swal2-icon.swal2-info {
  border-color: var(--primary-400) !important;
  color: var(--primary-500) !important;
}
.swal2-popup.swal2-release .swal2-confirm {
  background-color: var(--primary-500) !important;
  color: var(--color-primary-contrast) !important;
  border: none !important;
  box-shadow: none !important;
  font-weight: 600 !important;
  letter-spacing: 0.03em !important;
}
.swal2-popup.swal2-release .swal2-confirm:hover {
  background-color: var(--primary-600) !important;
}

/* ─── 30b. SWEETALERT2 — WORK ORDER SAVED POPUP (free_workorder_list.html) ── */
/* Stesso impianto del popup release notes, compatto e centrato. La regola
   globale ".swal2-html-container div { text-align:left }" va neutralizzata. */
.swal2-popup.swal2-wo-saved {
  --wo-ok: var(--color-success-text);
  width: 340px !important;
  padding: 1.25rem 1.25rem 1rem !important;
  background: var(--panel-bg) !important;
  color: var(--color-text) !important;
  border: 1px solid var(--color-border) !important;
  border-radius: 10px !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.45) !important;
}
html[data-theme="light-slate"] .swal2-popup.swal2-wo-saved {
  --wo-ok: #059669;   /* il verde del tema scuro e' troppo chiaro su fondo chiaro */
  box-shadow: 0 8px 24px rgba(17,24,39,0.18) !important;
}
/* geometria dell'icona tutta in em: basta ridurre il font-size (5em -> ~3.2em) */
.swal2-popup.swal2-wo-saved .swal2-icon {
  font-size: 0.65rem !important;
  margin: 0.25rem auto 0.25rem !important;
}
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-success { border-color: var(--wo-ok) !important; }
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-success [class^='swal2-success-line'] {
  background-color: var(--wo-ok) !important;
}
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-success .swal2-success-ring {
  border-color: color-mix(in srgb, var(--wo-ok) 30%, transparent) !important;
}
/* lo sfondo delle "code" dell'animazione deve coincidere con quello del popup */
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-success [class^='swal2-success-circular-line'],
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-success .swal2-success-fix {
  background-color: var(--panel-bg) !important;
}
.swal2-popup.swal2-wo-saved .swal2-icon.swal2-info {
  border-color: var(--primary-400) !important;
  color: var(--primary-500) !important;
}
.swal2-popup.swal2-wo-saved .swal2-title {
  color: var(--color-text) !important;
  font-size: 1.05rem !important;
  font-weight: 600 !important;
  padding: 0.25rem 0 0 !important;
}
.swal2-popup.swal2-wo-saved .swal2-html-container,
.swal2-popup.swal2-wo-saved .swal2-html-container div {
  text-align: center !important;
  white-space: normal !important;
  margin: 0.5rem 0 0 !important;
  padding: 0 !important;
}
.swal2-popup.swal2-wo-saved .wo-saved-label {
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-muted);
}
.swal2-popup.swal2-wo-saved .wo-saved-number {
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--primary-500);
  margin-top: 0.15rem !important;
}
.swal2-popup.swal2-wo-saved .wo-saved-notes {
  text-align: left;
  font-size: 0.8rem;
  color: var(--color-text-secondary);
  margin: 0.75rem 0 0;
  padding-left: 1.1rem;
}
.swal2-popup.swal2-wo-saved .swal2-actions { margin-top: 1rem !important; }
.swal2-popup.swal2-wo-saved .swal2-confirm {
  background-color: var(--primary-500) !important;
  color: var(--color-primary-contrast) !important;
  border: none !important;
  box-shadow: none !important;
  font-weight: 600 !important;
  font-size: 0.85rem !important;
  padding: 0.4rem 1.6rem !important;
}
.swal2-popup.swal2-wo-saved .swal2-confirm:hover { background-color: var(--primary-600) !important; }
.swal2-popup.swal2-wo-saved .swal2-confirm:focus-visible {
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary-500) 35%, transparent) !important;
}
/* release notes formatting */
.rn-version {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 1.1rem 0 0.1rem;
  padding-bottom: 0.25rem;
  border-bottom: 1px solid var(--color-border);
}
.rn-version:first-child { margin-top: 0; }
.rn-version-tag {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--primary-500);
}
.rn-date {
  font-size: 0.75rem;
  color: var(--color-text-muted);
  font-style: italic;
}
.rn-list {
  margin: 0.3rem 0 0.5rem 0;
  padding-left: 1.2rem;
}
.rn-list li {
  font-size: 0.85rem;
  color: var(--color-text-secondary);
  line-height: 1.6;
  margin-bottom: 0.1rem;
}

/* ============================================================
   PART PROHIBITION — righe e badge dei part number vietati
   Usati dall'app partprohibition e dalle liste Parts / Serial Number.
   Solo token: valgono su tema scuro e chiaro.
   ============================================================ */
.app-table-wrapper tbody tr.row-prohibited > td,
.pp-results-table tbody tr.row-prohibited > td {
  background-color: var(--color-error-bg) !important;
}
.app-table-wrapper tbody tr.row-prohibited > td:first-child {
  box-shadow: inset 3px 0 0 var(--color-error-border);
}
.app-table-wrapper tbody tr.row-conditional > td,
.pp-results-table tbody tr.row-conditional > td {
  background-color: var(--color-warning-bg) !important;
}
.app-table-wrapper tbody tr.row-conditional > td:first-child {
  box-shadow: inset 3px 0 0 var(--color-warning-border);
}
.app-table-wrapper tbody tr.row-revoked > td {
  opacity: 0.55;
}
.pp-ban-icon {
  color: var(--color-error-text);
  margin-right: 0.3rem;
}
.pp-warn-icon {
  color: var(--color-warning-text);
  margin-right: 0.3rem;
}
/* Icona cliccabile nelle liste Parts / Serial Number: apre il pop-up con i dettagli */
.pp-mark {
  background: none;
  border: 0;
  padding: 0;
  line-height: 1;
  cursor: pointer;
}
.pp-mark:hover i {
  filter: brightness(1.35);
}
.pp-modal-label {
  font-size: 0.68rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--color-label);
  font-weight: 700;
}
/* Etichette PROHIBITED / CONDITIONAL nelle liste di scelta (modali task, work order,
   seriali): le scrive il JavaScript condiviso static/js/partprohibition.js */
.pp-flag {
  display: inline-block;
  margin-left: 0.35rem;
  padding: 0 6px;
  border-radius: var(--radius-md, 6px);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  white-space: nowrap;
  vertical-align: middle;
}
.pp-flag-prohibited {
  background-color: var(--color-error-bg);
  border: 1px solid var(--color-error-border);
  color: var(--color-error-text);
}
.pp-flag-conditional {
  background-color: var(--color-warning-bg);
  border: 1px solid var(--color-warning-border);
  color: var(--color-warning-text);
}
/* Le tabelle costruite dal JavaScript (modali di scelta della parte o del seriale) non
   stanno dentro .app-table-wrapper: la riga limitata si evidenzia comunque, e il pulsante
   di una parte vietata resta visibile ma spento. */
tbody tr.row-prohibited > td {
  background-color: var(--color-error-bg) !important;
}
tbody tr.row-conditional > td {
  background-color: var(--color-warning-bg) !important;
}
tr.row-prohibited .btn[disabled] {
  opacity: 0.4;
  cursor: not-allowed;
}
.pp-rule {
  display: inline-block;
  padding: 1px 8px;
  margin: 1px 0;
  border-radius: var(--radius-md, 6px);
  border: 1px solid var(--color-error-border);
  color: var(--color-error-text);
  font-size: 0.78rem;
  font-weight: 600;
  white-space: nowrap;
}
.pp-rule-prefix {
  background-color: var(--color-error-bg);
}
.pp-status {
  display: inline-block;
  padding: 1px 10px;
  border-radius: 10px;
  font-size: 0.72rem;
  font-weight: 700;
  white-space: nowrap;
}
.pp-status-active {
  color: var(--color-error-text);
  border: 1px solid var(--color-error-border);
}
.pp-status-revoked {
  color: var(--color-text-muted);
  border: 1px solid var(--color-text-muted);
}
.pp-status-detail,
.pp-hint {
  font-size: 0.75rem;
  color: var(--color-text-muted);
}
.pp-results-scroll {
  max-height: 360px;
  overflow-y: auto;
}


/* ═══════════════════════════════════════════════════════
   21. JQUERY-CONFIRM — finestre $.confirm / $.alert
   ═══════════════════════════════════════════════════════
   La libreria disegna la finestra bianca (e il tema 'bootstrap' forza titolo e
   testo quasi neri): sul Dark titolo e testo ereditavano il colore chiaro del
   tema e sparivano sul bianco. Qui fondo, testi, campi e pulsanti dai token,
   quindi valgono per Dark e Light. !important serve a battere i temi della
   libreria (selettori .jconfirm.jconfirm-<tema> piu' specifici). */
.jconfirm .jconfirm-bg {
  background-color: #000 !important;
  opacity: 0.55 !important;
}
.jconfirm .jconfirm-box {
  background: var(--panel-bg) !important;
  color: var(--color-text) !important;
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-lg) !important;
}
.jconfirm .jconfirm-box div.jconfirm-title-c {
  color: var(--color-text) !important;
}
.jconfirm .jconfirm-box div.jconfirm-content {
  color: var(--color-text-secondary) !important;
}
.jconfirm .jconfirm-box div.jconfirm-content b,
.jconfirm .jconfirm-box div.jconfirm-content strong {
  color: var(--color-text);
}
.jconfirm .jconfirm-box div.jconfirm-closeIcon {
  color: var(--color-text-muted) !important;
}
/* Nota secondaria dentro il testo (al posto dei grigi fissi tipo #676) */
.jconfirm .jconfirm-note {
  color: var(--color-text-muted);
  font-size: 0.9em;
}
/* Tipo 'red' = cancellazioni: titolo in rosso */
.jconfirm .jconfirm-box.jconfirm-type-red div.jconfirm-title-c {
  color: #ff6b5b !important;
  font-weight: 700;
}
/* Pulsante neutro (Cancel) e barra pulsanti del tema 'bootstrap' */
.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default {
  background-color: var(--color-surface-raised) !important;
  color: var(--color-text) !important;
}
.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover {
  background-color: var(--color-border) !important;
}
.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons {
  border-top-color: var(--color-border) !important;
}
/* Campi dentro le finestre (es. Remarks della Task Initialize) */
.jconfirm .jconfirm-content .form-control {
  background-color: var(--color-field-bg);
  border: 1px solid var(--color-field-border);
  color: var(--color-field-text);
}
.jconfirm .jconfirm-content label {
  color: var(--color-text-secondary);
}

/* Variante per le cancellazioni delicate: $.confirm({theme: 'light,danger', type: 'red'}).
   Alone rosso, oggetto della cancellazione in evidenza e riquadro di avviso. */
.jconfirm.jconfirm-danger .jconfirm-bg {
  opacity: 0.65 !important;
}
.jconfirm.jconfirm-danger .jconfirm-box {
  border-color: rgba(231,76,60,0.45);
  box-shadow: 0 0 0 4px rgba(231,76,60,0.15), var(--shadow-lg) !important;
  max-width: 480px;
}
.jconfirm.jconfirm-danger .jconfirm-subject {
  color: var(--color-text);
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  margin-bottom: 0.75rem;
}
.jconfirm.jconfirm-danger .jconfirm-warning {
  background: rgba(231,76,60,0.12);
  border-left: 4px solid #e74c3c;
  border-radius: var(--radius-sm);
  color: var(--color-text);
  padding: 0.55rem 0.75rem;
}
/* Light: il rosso chiaro del titolo e' pensato per il fondo scuro */
html[data-theme="light-slate"] .jconfirm .jconfirm-box.jconfirm-type-red div.jconfirm-title-c {
  color: #b02a2a !important;
}
html[data-theme="light-slate"] .jconfirm.jconfirm-danger .jconfirm-warning {
  background: rgba(176,42,42,0.08);
  border-left-color: #b02a2a;
}
