/* =============================================================================
   Rack Analysis — Design System
   Palette Accenture (viola #A100FF), sidebar, glass UI.
   Tema chiaro/scuro via [data-theme] sull'<html>.
   ============================================================================= */

:root {
  --ig-accent:        #A100FF;
  --ig-accent-dark:   #8B00DB;
  --ig-accent-soft:   rgba(161, 0, 255, 0.12);
  --ig-green:         #22c55e;

  --ig-bg:            #f4f4f8;
  --ig-bg-2:          #ebebf2;
  --ig-surface:       #ffffff;
  --ig-surface-2:     #f8f7fa;
  --ig-sidebar-bg:    #111119;
  --ig-sidebar-fg:    #c7c7d4;
  --ig-sidebar-active:#A100FF;

  --ig-text:          #1d2733;
  --ig-text-soft:     #4a5568;
  --ig-text-muted:    #8a95a3;
  --ig-border:        #e2e8f0;
  --ig-shadow:        0 1px 3px rgba(16, 40, 70, .06), 0 8px 24px rgba(16, 40, 70, .06);

  --ig-radius:        16px;
  --ig-radius-sm:     10px;
  --sidebar-w:        260px;
  --sidebar-w-collapsed: 76px;
  --header-h:         62px;
}

[data-theme="dark"] {
  --ig-bg:        #0c0c14;
  --ig-bg-2:      #111119;
  --ig-surface:   #18181f;
  --ig-surface-2: #14141b;
  --ig-sidebar-bg:#0a0a10;
  --ig-text:      #e2e8f0;
  --ig-text-soft: #94a3b8;
  --ig-text-muted:#64748b;
  --ig-border:    #26262f;
  --ig-shadow:    0 1px 3px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
}

* { box-sizing: border-box; }

/* L'attributo HTML `hidden` deve sempre prevalere sui display espliciti
   (flex/grid) definiti dalle classi: senza questo, elementi con `hidden`
   (modale dettaglio, pulsante Interrompi, righe condizionali) restano visibili. */
[hidden] { display: none !important; }

html, body {
  margin: 0; padding: 0;
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  background: var(--ig-bg);
  color: var(--ig-text);
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }

/* ── Layout ──────────────────────────────────────────────────────────────── */
.ig-layout { display: flex; min-height: 100vh; }

.ig-main-wrapper {
  flex: 1;
  margin-left: var(--sidebar-w);
  display: flex;
  flex-direction: column;
  min-width: 0;
  transition: margin-left .25s ease;
}
body.sidebar-collapsed .ig-main-wrapper { margin-left: var(--sidebar-w-collapsed); }

.ig-main-content {
  flex: 1;
  padding: 28px 32px;
  position: relative;
  max-width: 1500px;
  width: 100%;
  margin: 0 auto;
}

/* ── Sidebar ─────────────────────────────────────────────────────────────── */
.ig-sidebar {
  position: fixed;
  top: 0; left: 0; bottom: 0;
  width: var(--sidebar-w);
  background: var(--ig-sidebar-bg);
  color: var(--ig-sidebar-fg);
  display: flex;
  flex-direction: column;
  z-index: 50;
  transition: width .25s ease, transform .25s ease;
  border-right: 1px solid rgba(255,255,255,.05);
}
body.sidebar-collapsed .ig-sidebar { width: var(--sidebar-w-collapsed); }

.ig-sidebar-brand {
  display: flex; align-items: center; gap: 8px;
  height: var(--header-h);
  padding: 0 20px;
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.ig-sidebar-brand-collapse {
  margin-left: auto;
  background: rgba(255,255,255,.06);
  border: none; color: var(--ig-sidebar-fg);
  width: 28px; height: 28px; border-radius: 8px;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background .2s, transform .25s;
}
.ig-sidebar-brand-collapse:hover { background: rgba(255,255,255,.14); }
body.sidebar-collapsed .ig-sidebar-brand-collapse i { transform: rotate(180deg); }

.ig-sidebar-nav { flex: 1; padding: 14px 12px; overflow-y: auto; }
.ig-sidebar-section-label {
  font-size: .62rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
  color: var(--ig-text-muted); padding: 14px 12px 6px;
}
body.sidebar-collapsed .ig-sidebar-section-label { text-align: center; font-size: 0; }
body.sidebar-collapsed .ig-sidebar-section-label::after { content: "•"; font-size: .8rem; }

.ig-sidebar-link {
  display: flex; align-items: center; gap: 14px;
  padding: 11px 14px; margin: 2px 0;
  border-radius: var(--ig-radius-sm);
  color: var(--ig-sidebar-fg);
  font-size: .92rem; font-weight: 500;
  transition: background .18s, color .18s;
  white-space: nowrap;
}
.ig-sidebar-link i { width: 20px; text-align: center; font-size: 1.02rem; flex-shrink: 0; }
.ig-sidebar-link:hover { background: rgba(255,255,255,.07); color: #fff; }
.ig-sidebar-link.active {
  background: linear-gradient(90deg, var(--ig-accent), var(--ig-accent-dark));
  color: #fff;
  box-shadow: 0 6px 16px rgba(161,0,255,.32);
}
body.sidebar-collapsed .ig-sidebar-link span,
body.sidebar-collapsed .ig-sidebar-user-info,
body.sidebar-collapsed .ig-sidebar-user-more,
body.sidebar-collapsed .ig-sidebar-admin-link span { display: none; }
body.sidebar-collapsed .ig-sidebar-link { justify-content: center; }

.ig-sidebar-footer { padding: 12px; border-top: 1px solid rgba(255,255,255,.06); position: relative; }
.ig-sidebar-admin-link {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px; margin-bottom: 8px; border-radius: var(--ig-radius-sm);
  color: var(--ig-sidebar-fg); font-size: .88rem;
  background: rgba(255,255,255,.04);
}
.ig-sidebar-admin-link:hover { background: rgba(255,255,255,.1); color: #fff; }

.ig-sidebar-user {
  display: flex; align-items: center; gap: 12px;
  padding: 10px; border-radius: var(--ig-radius-sm);
  cursor: pointer; transition: background .18s;
}
.ig-sidebar-user:hover { background: rgba(255,255,255,.07); }
.ig-sidebar-avatar {
  width: 38px; height: 38px; border-radius: 50%;
  background: linear-gradient(135deg, var(--ig-accent), var(--ig-accent-dark));
  color: #fff; font-weight: 700; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.ig-sidebar-user-info { min-width: 0; flex: 1; }
.ig-sidebar-user-name {
  font-size: .88rem; font-weight: 600; color: #fff;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.ig-sidebar-user-role { font-size: .72rem; color: var(--ig-text-muted); }
.ig-sidebar-user-more { color: var(--ig-text-muted); }

/* User dropdown */
.ig-user-dropdown {
  position: absolute; bottom: 76px; left: 12px; right: 12px;
  background: var(--ig-surface); color: var(--ig-text);
  border: 1px solid var(--ig-border); border-radius: var(--ig-radius-sm);
  box-shadow: var(--ig-shadow); overflow: hidden;
  opacity: 0; visibility: hidden; transform: translateY(8px);
  transition: all .2s ease; z-index: 60;
}
.ig-user-dropdown.open { opacity: 1; visibility: visible; transform: translateY(0); }
.ig-user-dropdown-item {
  display: flex; align-items: center; gap: 12px;
  padding: 11px 16px; font-size: .88rem; cursor: pointer;
  transition: background .15s;
}
.ig-user-dropdown-item:hover { background: var(--ig-surface-2); }
.ig-user-dropdown-item i { width: 18px; text-align: center; color: var(--ig-text-muted); }
.ig-user-dropdown-divider { height: 1px; background: var(--ig-border); }
.ig-user-dropdown-logout { color: #dc2626; }
.ig-user-dropdown-logout i { color: #dc2626; }

/* Theme switch */
.ig-theme-row { justify-content: space-between; }
.ig-theme-switch { position: relative; display: inline-block; width: 38px; height: 20px; margin-left: auto; }
.ig-theme-switch input { opacity: 0; width: 0; height: 0; }
.ig-theme-switch-slider {
  position: absolute; inset: 0; cursor: pointer; border-radius: 20px;
  background: var(--ig-border); transition: .25s;
}
.ig-theme-switch-slider::before {
  content: ""; position: absolute; height: 14px; width: 14px; left: 3px; bottom: 3px;
  background: #fff; border-radius: 50%; transition: .25s;
}
.ig-theme-switch input:checked + .ig-theme-switch-slider { background: var(--ig-accent); }
.ig-theme-switch input:checked + .ig-theme-switch-slider::before { transform: translateX(18px); }

.ig-sidebar-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,.45);
  z-index: 45; opacity: 0; visibility: hidden; transition: opacity .25s;
}
.ig-sidebar-overlay.open { opacity: 1; visibility: visible; }

/* ── Header ──────────────────────────────────────────────────────────────── */
.ig-header {
  height: var(--header-h);
  background: var(--ig-surface);
  border-bottom: 1px solid var(--ig-border);
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 24px; position: sticky; top: 0; z-index: 40;
}
.ig-header-left { display: flex; align-items: center; gap: 14px; }
.ig-sidebar-toggle {
  display: none; background: none; border: none; font-size: 1.2rem;
  color: var(--ig-text-soft); cursor: pointer;
}
.ig-header-brand { display: flex; align-items: center; }

/* ── Page loader ─────────────────────────────────────────────────────────── */
#ig-page-loader {
  position: absolute; inset: 0; z-index: 100;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 18px; backdrop-filter: blur(3px);
  background: rgba(248,249,252,.5);
  transition: opacity .35s ease, visibility .35s ease;
}
[data-theme="dark"] #ig-page-loader { background: rgba(16,22,36,.55); }
#ig-page-loader.ig-loader-hidden { opacity: 0; visibility: hidden; pointer-events: none; }
.ig-spinner-ring {
  width: 42px; height: 42px; border-radius: 50%;
  border: 3px solid var(--ig-accent-soft); border-top-color: var(--ig-accent);
  animation: ig-spin .72s linear infinite;
}
@keyframes ig-spin { to { transform: rotate(360deg); } }
.ig-spinner-label {
  font-size: .75rem; font-weight: 500; letter-spacing: .13em; text-transform: uppercase;
  color: var(--ig-text-muted);
}

/* ── Cards / generic UI ──────────────────────────────────────────────────── */
.ig-card {
  background: var(--ig-surface);
  border: 1px solid var(--ig-border);
  border-radius: var(--ig-radius);
  box-shadow: var(--ig-shadow);
  padding: 22px;
}
.ig-page-title { font-size: 1.5rem; font-weight: 800; margin: 0 0 4px; }
.ig-page-subtitle { color: var(--ig-text-soft); margin: 0 0 22px; font-size: .94rem; }

.ig-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  padding: 11px 20px; border-radius: var(--ig-radius-sm);
  border: 1px solid transparent; font-size: .92rem; font-weight: 600;
  cursor: pointer; transition: all .2s ease; font-family: inherit;
}
.ig-btn-primary { background: var(--ig-accent); color: #fff; border-color: var(--ig-accent-dark); }
.ig-btn-primary:hover:not(:disabled) { background: var(--ig-accent-dark); transform: translateY(-1px); box-shadow: 0 8px 20px rgba(161,0,255,.3); }
.ig-btn-ghost { background: var(--ig-surface-2); color: var(--ig-text); border-color: var(--ig-border); }
.ig-btn-ghost:hover:not(:disabled) { background: var(--ig-bg-2); }
.ig-btn-danger { background: #dc2626; color: #fff; }
.ig-btn-danger:hover:not(:disabled) { background: #b91c1c; }
.ig-btn:disabled { opacity: .5; cursor: not-allowed; }

/* ── Alerts ──────────────────────────────────────────────────────────────── */
.alert {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 18px; border-radius: var(--ig-radius-sm);
  border: 1px solid var(--ig-border); background: var(--ig-surface);
}
.alert-icon { font-size: 1.05rem; }
.alert-content { flex: 1; font-size: .9rem; }
.alert-info    { border-color: rgba(59,130,246,.4); }    .alert-info .alert-icon { color: #2563eb; }
.alert-success { border-color: rgba(34,197,94,.4); }     .alert-success .alert-icon { color: #16a34a; }
.alert-danger  { border-color: rgba(239,68,68,.4); }     .alert-danger .alert-icon { color: #dc2626; }
.alert-warning { border-color: rgba(245,158,11,.4); }    .alert-warning .alert-icon { color: #d97706; }
.btn-close-alert { background: none; border: none; color: var(--ig-text-muted); cursor: pointer; }

/* ── Responsive ──────────────────────────────────────────────────────────── */
@media (max-width: 980px) {
  .ig-main-wrapper { margin-left: 0 !important; }
  .ig-sidebar { transform: translateX(-100%); }
  .ig-sidebar.open { transform: translateX(0); }
  .ig-sidebar-toggle { display: block; }
  .ig-main-content { padding: 20px 16px; }
}
