/* components.css */

/* ── Tipografia ───────────────────────────────────────────── */

.stat-card,
.card-body,
.table-wrapper {
  font-family: 'Inter', sans-serif;
}

.card-header h1, h2, h3, h4, h5, h6, .card-header .mb-0, .modal-title {
  font-family: 'Outfit', sans-serif;
  font-weight: 600;
}

/* ── Card ─────────────────────────────────────────────────── */

.card {
  border: 0 !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-card) !important;
  background: var(--color-surface) !important;
}

.card-header,
.card-footer,
.modal-header,
.modal-footer {
  padding: 16px 20px !important;
}

.card-header,
.card-footer {
  background: transparent !important;
  border-color: var(--color-border) !important;
}

/* ── Stat card ────────────────────────────────────────────── */

.stat-card {
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: 20px;
  border: 0;
  box-shadow: var(--shadow-card);
}

.stat-card:hover {
  box-shadow: 0 12px 20px rgba(65,69,88,.10), 0 6px 10px rgba(0,0,0,.05);
}

.stat-card-flat {
  background: var(--color-bg);
  box-shadow: none;
}

.stat-card-icon {
  width: 38px;
  height: 38px;
  border-radius: var(--radius-md);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  margin-bottom: 12px;
}

.stat-card-value {
  font-family: 'Outfit', sans-serif;
  font-size: 28px;
  font-weight: 700;
  color: var(--color-text-1);
  line-height: 1;
  margin-bottom: 4px;
}

.stat-card-label {
  font-size: 12px;
  color: var(--color-text-3);
  margin-bottom: 0;
}

.stat-card-sub {
  font-size: 11px;
  color: var(--color-text-4);
  margin-top: 2px;
}

@media (max-width: 576px) {
  .stat-card       { padding: 12px; }
  .stat-card-value { font-size: 22px; }
  .stat-card-icon  { width: 32px; height: 32px; font-size: 18px; margin-bottom: 8px; }
}

/* ── Table wrapper ────────────────────────────────────────── */

.table-wrapper {
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: 16px;
  border: 0;
  box-shadow: var(--shadow-card);
}

/* ── Buttons ──────────────────────────────────────────────── */

.btn-primary {
  background: var(--accent-gradient);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 10px rgba(91,60,245,.25);
}

.btn-primary:hover,
.btn-primary:focus-visible {
  background: var(--accent-gradient);
  filter: brightness(1.08);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 6px 14px rgba(91,60,245,.35);
}

.btn-primary:active {
  background: var(--accent-gradient);
  filter: brightness(0.95);
  border-color: transparent;
  color: #fff;
}

.btn-primary:disabled,
.btn-primary.disabled {
  background: var(--accent-gradient);
  border-color: transparent;
  color: #fff;
}

.btn-secondary {
  background: var(--color-surface);
  border-color: var(--color-border);
  color: var(--color-text-2);
}

.btn-secondary:hover,
.btn-secondary:focus-visible {
  background: var(--color-bg);
  border-color: var(--color-border);
  color: var(--color-text-1);
}

/* ── Form controls ────────────────────────────────────────── */

.form-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--color-text-2);
  margin-bottom: 4px;
}

.form-control,
.form-select {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 13px;
  color: var(--color-text-1);
  transition: border-color 0.15s, box-shadow 0.15s;
}

.form-control {
  background: var(--color-surface);
}

.form-control::placeholder {
  color: var(--color-text-4);
}

/* Select: freccia esplicita — senza, sembra un textbox qualunque */
.form-select {
  background-color: var(--color-surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23748194' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M3 5.5l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.7rem center;
  background-size: 12px 10px;
  padding-right: 2rem;
  cursor: pointer;
  appearance: none;
}

.form-control:focus,
.form-select:focus {
  border-color: var(--accent);
  background: var(--color-surface);
  box-shadow: 0 0 0 3px rgba(91,60,245,0.12);
  color: var(--color-text-1);
  outline: none;
}

.form-control.is-invalid,
.form-select.is-invalid {
  border-color: var(--color-danger);
}

.form-control.is-invalid:focus,
.form-select.is-invalid:focus {
  box-shadow: 0 0 0 3px rgba(230,55,87,0.12);
}

/* ── Switch ───────────────────────────────────────────────── */

.form-switch .form-check-input:checked {
  background-color: var(--accent);
  border-color: var(--accent);
}

.form-switch .form-check-input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(91,60,245,0.12);
}

/* Il pallino colorato in focus vale solo da spento: da acceso deve restare
   bianco (contrasto sul fondo accent) — sul mobile il tap lascia il focus
   attivo, quindi senza :not(:checked) il pallino resterebbe colorato anche ON. */
.form-switch .form-check-input:focus:not(:checked) {
  --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%237F40FF'/%3e%3c/svg%3e");
}

/* ── Badges ───────────────────────────────────────────────── */

.badge {
  border-radius: var(--radius-pill);
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 600;
}

.badge.bg-success,
.badge.bg-success-subtle.text-success {
  background: var(--color-success-bg) !important;
  color: var(--color-success) !important;
}

.badge.bg-danger,
.badge.bg-danger-subtle.text-danger {
  background: var(--color-danger-bg) !important;
  color: var(--color-danger) !important;
}

.badge.bg-warning,
.badge.bg-warning-subtle.text-warning {
  background: var(--color-warning-bg) !important;
  color: var(--color-warning) !important;
}

.badge.bg-primary,
.badge.bg-primary-subtle.text-primary {
  background: var(--accent-light) !important;
  color: var(--accent-text) !important;
}

.badge.bg-secondary,
.badge.bg-secondary-subtle.text-secondary {
  background: var(--color-bg) !important;
  color: var(--color-text-3) !important;
}

/* ── Icone (Phosphor) ─────────────────────────────────────── */

/* Il font Phosphor vendorizzato ha un solo peso (regular, tratto sottile):
   niente ph-bold/ph-fill disponibili. Un filo di text-stroke simula un
   tratto più pieno senza aggiungere un secondo file font. */
.ph {
  -webkit-text-stroke: 0.4px currentColor;
}

/* ── Action buttons (tabella) ─────────────────────────────── */

.dt-action-btn.btn-outline-secondary,
.dt-action-btn.btn-outline-danger {
  width: 30px;
  height: 30px;
  padding: 0;
  border-radius: var(--radius-md);
  border: 0;
  background: transparent;
  color: var(--color-text-3);
  font-size: 18px;
  transition: color 0.15s, background 0.15s;
}

.dt-action-btn.btn-outline-secondary:hover {
  color: var(--accent);
  background: var(--accent-light);
}

.dt-action-btn.btn-outline-danger:hover {
  color: var(--color-danger);
  background: var(--color-danger-bg);
}

/* ── Nav tabs ─────────────────────────────────────────────── */

.nav-tabs {
  border-bottom: 1px solid var(--color-border);
  gap: 2px;
}

.nav-tabs .nav-link {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-text-3);
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  padding: 8px 14px;
  border-radius: 0;
  background: transparent;
  transition: color 0.15s;
}

.nav-tabs .nav-link:hover {
  color: var(--color-text-2);
  border-bottom-color: transparent;
  background: transparent;
}

.nav-tabs .nav-link.active {
  color: var(--accent);
  font-weight: 600;
  border-bottom-color: var(--accent);
  background: transparent;
}

/* ── Login page ───────────────────────────────────────────── */

.login-page {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100dvh;
  background: var(--color-bg);
}

.login-box {
  width: 100%;
  max-width: 380px;
}

/* ── Applicativo — upload preview ────────────────────────── */

.app-preview {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-bg);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.app-preview-wide {
  height: 72px;
  padding: 8px 16px;
}

.app-preview-wide img {
  max-height: 56px;
  max-width: 100%;
  object-fit: contain;
}

.app-preview-sq {
  height: 72px;
  width: 72px;
}

.app-preview-sq img {
  max-height: 56px;
  max-width: 56px;
  object-fit: contain;
}
