/* ============================================================
   TTN – custom.css
   Bootstrap 5 override + layout admin + componenti
   ============================================================ */

/* ── Variabili ─────────────────────────────────────────────── */
:root{
  --ttn-sidebar-w:      240px;
  --ttn-sidebar-collapsed: 64px;
  --ttn-topbar-h:       56px;
  --ttn-primary:        #4f46e5;
  --ttn-primary-light:  #6366f1;
  --ttn-secondary:      #64748b;
  --ttn-success:        #10b981;
  --ttn-warning:        #f59e0b;
  --ttn-danger:         #ef4444;
  --ttn-info:           #3b82f6;
  --ttn-bg:             #f1f5f9;
  --ttn-card-bg:        #ffffff;
  --ttn-border:         #e2e8f0;
  --ttn-text:           #1e293b;
  --ttn-text-muted:     #64748b;
  --ttn-font-display:   'Sora', sans-serif;
  --ttn-font-body:      'IBMPlexSans', system-ui, sans-serif;
  --ttn-radius:         10px;
  --ttn-shadow:         0 1px 3px 0 rgb(0 0 0/.1), 0 1px 2px -1px rgb(0 0 0/.1);
  --ttn-shadow-md:      0 4px 6px -1px rgb(0 0 0/.1), 0 2px 4px -2px rgb(0 0 0/.1);
}

/* ── Reset / base ──────────────────────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; }
body{
  font-family: var(--ttn-font-body);
  color: var(--ttn-text);
  background: var(--ttn-bg);
  font-size: .9rem;
}
h1,h2,h3,h4,h5,h6,.navbar-brand,.login-logo-text,.sidebar-brand{
  font-family: var(--ttn-font-display);
}
a{ color: var(--ttn-primary); }
a:hover{ color: var(--ttn-primary-light); }
code{ font-size:.82em; color:#be185d; background:#fdf2f8; padding:.15em .35em; border-radius:4px; }

/* ── Layout admin ──────────────────────────────────────────── */
body.ttn-admin{
  display:flex;
  min-height:100vh;
}

/* Sidebar */
.ttn-sidebar{
  position:fixed; top:0; left:0; bottom:0;
  width:var(--ttn-sidebar-w);
  background:#1e1b4b;
  color:#c7d2fe;
  display:flex; flex-direction:column;
  transition:width .25s ease;
  z-index:1000;
  overflow:hidden;
}
.sidebar-brand{
  display:flex; align-items:center; gap:10px;
  padding:18px 18px 14px;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.sidebar-logo{
  font-family:var(--ttn-font-display);
  font-weight:700; font-size:1.1rem;
  background:var(--ttn-primary);
  color:#fff; padding:4px 9px; border-radius:6px;
  white-space:nowrap;
}
.sidebar-name{
  font-family:var(--ttn-font-display);
  font-size:.85rem; font-weight:600;
  color:#e0e7ff;
  white-space:nowrap;
}
.sidebar-nav{ flex:1; overflow-y:auto; padding-top:12px; }
.sidebar-link{
  display:flex; align-items:center; gap:12px;
  padding:10px 14px; border-radius:8px;
  color:#a5b4fc; font-size:.875rem; font-weight:500;
  text-decoration:none; transition:background .15s,color .15s;
  white-space:nowrap;
}
.sidebar-link:hover,.sidebar-link.active{
  background:rgba(99,102,241,.25); color:#e0e7ff;
}
.sidebar-link.active{ background:rgba(99,102,241,.35); color:#fff; }
.sidebar-icon{ width:20px; text-align:center; font-size:.95rem; flex-shrink:0; }
.sidebar-footer{
  padding:14px 16px;
  border-top:1px solid rgba(255,255,255,.08);
}
.sidebar-user-info{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.sidebar-avatar{
  width:34px; height:34px; border-radius:50%;
  background:var(--ttn-primary);
  color:#fff; font-weight:700; font-size:.85rem;
  display:flex; align-items:center; justify-content:center;
  flex-shrink:0;
}
.sidebar-username{ font-size:.8rem; font-weight:600; color:#e0e7ff; }
.sidebar-role{ font-size:.7rem; color:#818cf8; text-transform:uppercase; letter-spacing:.05em; }

/* Topbar */
.ttn-topbar{
  position:fixed; top:0;
  left:var(--ttn-sidebar-w); right:0;
  height:var(--ttn-topbar-h);
  background:#fff;
  border-bottom:1px solid var(--ttn-border);
  display:flex; align-items:center; gap:14px;
  padding:0 20px;
  z-index:900;
  transition:left .25s;
}
.topbar-title{
  font-family:var(--ttn-font-display);
  font-weight:600; font-size:.95rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* Contenuto */
.ttn-content{
  margin-left:var(--ttn-sidebar-w);
  margin-top:var(--ttn-topbar-h);
  padding:28px 32px;
  min-height:calc(100vh - var(--ttn-topbar-h));
  transition:margin-left .25s;
  width:calc(100% - var(--ttn-sidebar-w));
  box-sizing:border-box;
}
/* row piena larghezza dentro ttn-content */
.ttn-content > .row,
.ttn-content > div > .row {
  margin-left: 0;
  margin-right: 0;
  width: 100%;
}

/* Collapsed sidebar */
body.sidebar-collapsed .ttn-sidebar{ width:var(--ttn-sidebar-collapsed); }
body.sidebar-collapsed .sidebar-label,
body.sidebar-collapsed .sidebar-name,
body.sidebar-collapsed .sidebar-user-text,
body.sidebar-collapsed .sidebar-footer .btn{ display:none; }
body.sidebar-collapsed .ttn-topbar{ left:var(--ttn-sidebar-collapsed); }
body.sidebar-collapsed .ttn-content{ margin-left:var(--ttn-sidebar-collapsed); width:calc(100% - var(--ttn-sidebar-collapsed)); }

/* ── Cards ─────────────────────────────────────────────────── */
.ttn-card{
  background:var(--ttn-card-bg);
  border:1px solid var(--ttn-border);
  border-radius:var(--ttn-radius);
  box-shadow:var(--ttn-shadow);
}
.ttn-card-header{
  padding:14px 18px;
  border-bottom:1px solid var(--ttn-border);
  background:#fafafa;
  border-radius:var(--ttn-radius) var(--ttn-radius) 0 0;
  font-size:.875rem;
}
.ttn-card-body{ padding:18px; }

/* ── Tabelle ────────────────────────────────────────────────── */
.ttn-table{ font-size:.85rem; }
.ttn-table thead th{
  background:#f8fafc;
  font-weight:600; font-size:.78rem; letter-spacing:.04em;
  text-transform:uppercase; color:var(--ttn-text-muted);
  border-bottom:2px solid var(--ttn-border); padding:10px 14px;
}
.ttn-table tbody td{ padding:10px 14px; vertical-align:middle; border-bottom:1px solid #f1f5f9; }
.ttn-table tbody tr:hover td{ background:#f8fafc; }
.ttn-table tbody tr:last-child td{ border-bottom:none; }

/* ── Stat cards ─────────────────────────────────────────────── */
.stat-card{
  border-radius:var(--ttn-radius);
  padding:16px 18px;
  border:1px solid var(--ttn-border);
  position:relative; overflow:hidden;
  transition:box-shadow .2s,transform .2s;
  color:inherit;
}
.stat-card:hover{ box-shadow:var(--ttn-shadow-md); transform:translateY(-2px); }
.sc-icon{ font-size:1.4rem; margin-bottom:10px; opacity:.75; }
.sc-val{ font-family:var(--ttn-font-display); font-size:1.6rem; font-weight:700; line-height:1; }
.sc-label{ font-size:.75rem; margin-top:4px; opacity:.7; font-weight:500; }

.stat-blue   { background:linear-gradient(135deg,#dbeafe,#bfdbfe); border-color:#bfdbfe; color:#1e40af; }
.stat-green  { background:linear-gradient(135deg,#d1fae5,#a7f3d0); border-color:#a7f3d0; color:#065f46; }
.stat-amber  { background:linear-gradient(135deg,#fef3c7,#fde68a); border-color:#fde68a; color:#92400e; }
.stat-teal   { background:linear-gradient(135deg,#ccfbf1,#99f6e4); border-color:#99f6e4; color:#115e59; }
.stat-purple { background:linear-gradient(135deg,#ede9fe,#ddd6fe); border-color:#ddd6fe; color:#4c1d95; }
.stat-indigo { background:linear-gradient(135deg,#e0e7ff,#c7d2fe); border-color:#c7d2fe; color:#312e81; }

/* ── Filtri status ──────────────────────────────────────────── */
.ttn-filter-bar{ display:flex; flex-wrap:wrap; gap:6px; }
.filter-btn{
  padding:5px 14px; border-radius:20px; font-size:.8rem; font-weight:500;
  border:1px solid var(--ttn-border); background:#fff; color:var(--ttn-text-muted);
  cursor:pointer; transition:all .15s;
}
.filter-btn:hover{ border-color:var(--ttn-primary); color:var(--ttn-primary); }
.filter-btn.active{ background:var(--ttn-primary); color:#fff; border-color:var(--ttn-primary); }

/* ── Login ──────────────────────────────────────────────────── */
body.ttn-login-body{
  min-height:100vh; background:linear-gradient(135deg,#1e1b4b 0%,#312e81 50%,#4338ca 100%);
  display:flex; align-items:center; justify-content:center; padding:20px;
}
.login-wrap{ width:100%; max-width:440px; }
.login-panel{
  background:#fff; border-radius:16px;
  box-shadow:0 25px 50px -12px rgba(0,0,0,.35);
  padding:40px 36px;
}
.login-brand{ text-align:center; margin-bottom:28px; }
.login-logo-text{
  display:inline-block;
  background:var(--ttn-primary); color:#fff;
  font-weight:800; font-size:1.6rem;
  padding:8px 18px; border-radius:10px;
  margin-bottom:10px;
}
.login-app-name{ font-size:1.2rem; font-weight:700; color:var(--ttn-text); margin:0; }
.login-app-sub{ font-size:.8rem; color:var(--ttn-text-muted); margin-top:4px; }
.login-form-title{ font-weight:700; margin-bottom:20px; font-family:var(--ttn-font-display); }

/* ── Buttons extra ──────────────────────────────────────────── */
.btn-xs{ padding:.2rem .5rem; font-size:.75rem; border-radius:5px; }
.btn-icon{ padding:.35rem .55rem; line-height:1; border:1px solid var(--ttn-border); background:#fff; }

/* ── Badge Bootstrap override ───────────────────────────────── */
.badge{ font-weight:500; }

/* ── Detail labels ──────────────────────────────────────────── */
.detail-label{
  font-size:.72rem; font-weight:600; letter-spacing:.06em;
  text-transform:uppercase; color:var(--ttn-text-muted); margin-bottom:2px;
}
.detail-value{ font-size:.875rem; }

/* ── Avatar affiliati ───────────────────────────────────────── */
.aff-avatar{
  width:32px; height:32px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  font-size:.85rem; flex-shrink:0;
}
.aff-avatar-lg{
  width:46px; height:46px; border-radius:10px;
  display:flex; align-items:center; justify-content:center;
  font-size:1.1rem; flex-shrink:0;
}
.av-co{ background:#dbeafe; color:#1d4ed8; }
.av-pr{ background:#ede9fe; color:#6d28d9; }

/* ── Dropzone upload ────────────────────────────────────────── */
.ttn-dropzone{
  border:2px dashed var(--ttn-border);
  border-radius:var(--ttn-radius);
  padding:20px 16px; text-align:center;
  background:#fafafa; transition:border-color .2s,background .2s;
  cursor:pointer;
}
.ttn-dropzone.dragover{ border-color:var(--ttn-primary); background:#eef2ff; }

/* ── Alert AI info ──────────────────────────────────────────── */
.alert-ai{
  background:linear-gradient(90deg,#eef2ff,#faf5ff);
  border-color:#c7d2fe; color:#3730a3;
}

/* ── DataTables Bootstrap5 tweaks ───────────────────────────── */
.dataTables_wrapper .dataTables_filter input{
  border-radius:8px; border:1px solid var(--ttn-border);
  padding:5px 12px; font-size:.85rem;
}
.dataTables_wrapper .dataTables_length select{
  border-radius:8px; border:1px solid var(--ttn-border); padding:4px 8px;
}
.dataTables_wrapper .dataTables_info{ font-size:.8rem; color:var(--ttn-text-muted); }
.page-link{ color:var(--ttn-primary); }
.page-item.active .page-link{ background:var(--ttn-primary); border-color:var(--ttn-primary); }

/* ── Select2 bootstrap5 fix ─────────────────────────────────── */
.select2-container--bootstrap-5 .select2-selection{
  border-color:var(--ttn-border) !important;
  border-radius:8px !important;
}
.select2-container--bootstrap-5 .select2-dropdown{ border-color:var(--ttn-border); }

/* ── Scrollbar ──────────────────────────────────────────────── */
::-webkit-scrollbar{ width:6px; height:6px; }
::-webkit-scrollbar-track{ background:#f1f5f9; }
::-webkit-scrollbar-thumb{ background:#cbd5e1; border-radius:3px; }
::-webkit-scrollbar-thumb:hover{ background:#94a3b8; }

/* ── Public home layout ─────────────────────────────────────── */
.pub-hero{
  background:linear-gradient(135deg,#1e1b4b 0%,#4338ca 60%,#6366f1 100%);
  color:#fff; padding:80px 0 100px;
}
.pub-hero-title{
  font-family:var(--ttn-font-display);
  font-size:clamp(1.8rem,4vw,2.8rem);
  font-weight:800; line-height:1.15;
}
.pub-hero-sub{ font-size:1.05rem; opacity:.9; max-width:560px; }
.pub-feat-icon{
  width:52px; height:52px; border-radius:12px;
  background:rgba(99,102,241,.15); border:1px solid rgba(99,102,241,.3);
  display:flex; align-items:center; justify-content:center;
  font-size:1.3rem; color:var(--ttn-primary); margin-bottom:14px;
}

/* ── Responsive ─────────────────────────────────────────────── */
@media(max-width:768px){
  .ttn-sidebar{ transform:translateX(-100%); }
  body.sidebar-open .ttn-sidebar{ transform:translateX(0); width:var(--ttn-sidebar-w); }
  .ttn-topbar{ left:0; }
  .ttn-content{ margin-left:0; padding:16px; }
  .ttn-content h5{ font-size:1rem; }
}

/* ── Stakeholder layout ─────────────────────────────────────── */
body.ttn-stake{
  display:block;
  background:var(--ttn-bg);
}
.stake-navbar{
  position:sticky; top:0; z-index:900;
  background:#fff; border-bottom:1px solid var(--ttn-border);
  display:flex; align-items:center; gap:0;
  padding:0 20px; height:58px;
  box-shadow:var(--ttn-shadow);
}
.stake-brand{
  display:flex; align-items:center; gap:10px;
  text-decoration:none; margin-right:24px; flex-shrink:0;
}
.stake-appname{
  font-family:var(--ttn-font-display);
  font-weight:600; font-size:.9rem; color:var(--ttn-text);
}
.stake-nav-links{
  display:flex; align-items:center; gap:4px; flex:1;
}
.stake-nav-link{
  display:flex; align-items:center; gap:6px;
  padding:8px 14px; border-radius:8px;
  color:var(--ttn-text-muted); font-size:.875rem; font-weight:500;
  text-decoration:none; transition:background .15s,color .15s; white-space:nowrap;
}
.stake-nav-link:hover{ background:#f1f5f9; color:var(--ttn-text); }
.stake-nav-link.active{ background:#eef2ff; color:var(--ttn-primary); }
.stake-nav-right{ flex-shrink:0; }
.stake-content{
  max-width:1100px; margin:0 auto;
  padding:28px 20px;
}

/* ── Tags EAV ──────────────────────────────────────────────── */
.tag-list{
  display:flex; flex-wrap:wrap; gap:5px; min-height:28px;
}
.tag-item{
  display:inline-flex; align-items:center; gap:5px;
  background:#eef2ff; color:#3730a3;
  border:1px solid #c7d2fe;
  border-radius:20px; padding:3px 10px 3px 12px;
  font-size:.8rem; font-weight:500;
}
.tag-item em{ font-style:normal; opacity:.7; font-size:.75rem; }
.tag-remove{
  background:none; border:none; cursor:pointer;
  color:#6366f1; font-size:1rem; line-height:1;
  padding:0 0 0 2px; opacity:.6;
}
.tag-remove:hover{ opacity:1; color:#dc2626; }

/* ── Misc ──────────────────────────────────────────────────── */
.bg-success-subtle{ background:#d1fae5 !important; }
.bg-danger-subtle { background:#fee2e2 !important; }
.bg-primary-subtle{ background:#dbeafe !important; }
