/*
  EVA UI – unified theme (Home, Login/Register, Dashboard, Chat, Profile, Admin, Premium)
  Goal: match the uploaded reference (soft SaaS, blu/grigio, sidebar, cards, rounded + subtle shadows)
*/

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root{
  --eva-primary: #274b77;
  --eva-primary-600: #2f5e97;
  --eva-primary-700: #224063;
  --eva-primary-800: #1b314e;

  --eva-accent: #22c55e;
  --eva-accent-700: #15803d;
  --eva-danger: #ef4444;
  --eva-warn: #f59e0b;

  --eva-bg-0: #f7f9ff;
  --eva-bg-1: #eef3ff;
  --eva-surface: #ffffff;
  --eva-surface-2: #f3f6ff;
  --eva-text: #0f172a;
  --eva-muted: #667085;
  --eva-border: rgba(148, 163, 184, .35);
  --eva-shadow: 0 16px 45px rgba(15, 23, 42, .10);
  --eva-shadow-soft: 0 10px 28px rgba(15, 23, 42, .08);
  --eva-radius-xl: 22px;
  --eva-radius-lg: 16px;
  --eva-radius-md: 12px;
}

*{ box-sizing:border-box; }
html, body { height: 100%; }

body{
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--eva-text);
  background:
    radial-gradient(900px 500px at 18% 10%, rgba(59, 130, 246, .18), transparent 60%),
    radial-gradient(900px 500px at 85% 0%, rgba(34, 197, 94, .10), transparent 55%),
    linear-gradient(180deg, var(--eva-bg-1) 0%, var(--eva-bg-0) 70%);
}

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

/* -------------------------------------------------
   Helpers
--------------------------------------------------- */
.eva-muted{ color: var(--eva-muted) !important; }
.eva-page{ padding: 28px 0 50px; }
.eva-container{ max-width: 1120px; }
.eva-card{
  background: var(--eva-surface);
  border: 1px solid var(--eva-border);
  border-radius: var(--eva-radius-xl);
  box-shadow: var(--eva-shadow);
}
.eva-card-soft{
  background: rgba(255,255,255,.9);
  border: 1px solid var(--eva-border);
  border-radius: var(--eva-radius-xl);
  box-shadow: var(--eva-shadow-soft);
}

.eva-pill{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding: .35rem .75rem;
  border-radius: 999px;
  border: 1px solid var(--eva-border);
  background: rgba(255,255,255,.75);
  font-size: .8rem;
}

/* -------------------------------------------------
   Buttons (works on top of Bootstrap)
--------------------------------------------------- */
.btn{ border-radius: 999px !important; font-weight: 600; }
.btn-primary{
  background: linear-gradient(180deg, var(--eva-primary-600), var(--eva-primary)) !important;
  border: 0 !important;
  box-shadow: 0 12px 30px rgba(39, 75, 119, .28);
}
.btn-primary:hover{ filter: brightness(1.03); }

.btn-success{
  background: radial-gradient(600px 240px at 30% 0%, rgba(255, 255, 255, .10), transparent 60%), linear-gradient(180deg, var(--eva-primary-700) 0%, var(--eva-primary-800) 100%);
  border: 0 !important;
  box-shadow: 0 12px 30px rgba(13, 110, 253, 0.25)
}
.btn-outline-primary{
  border-color: rgba(39, 75, 119, .35) !important;
  color: var(--eva-primary) !important;
}
.btn-light{
  background: rgba(255,255,255,.85) !important;
  border-color: var(--eva-border) !important;
}

/* Inputs */
.form-control, .form-select{
  border-radius: 14px !important;
  border-color: var(--eva-border) !important;
}
.form-control:focus, .form-select:focus{
  box-shadow: 0 0 0 .2rem rgba(47, 94, 151, .15) !important;
  border-color: rgba(47, 94, 151, .55) !important;
}

/* Alerts */
.alert{ border-radius: 16px; border: 1px solid var(--eva-border); }

/* -------------------------------------------------
   App Shell (Dashboard/Chat/Profile/Admin/Premium)
--------------------------------------------------- */
.eva-shell{
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  gap: 22px;
}

.eva-sidebar{
  background:
    radial-gradient(600px 240px at 30% 0%, rgba(255,255,255,.10), transparent 60%),
    linear-gradient(180deg, var(--eva-primary-700) 0%, var(--eva-primary-800) 100%);
  color: rgba(255,255,255,.92);
  border-radius: var(--eva-radius-xl);
  box-shadow: var(--eva-shadow);
  padding: 18px 14px;
  position: sticky;
  top: 22px;
  height: fit-content;
}

.eva-brand{
  display:flex;
  align-items:center;
  gap:.6rem;

  margin-bottom: 6px;
}
.eva-brand-mark{
  width: 36px;
  height: 36px;
  border-radius: 12px;
  background: rgba(255,255,255,.12);
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight: 800;
  letter-spacing: .04em;
}
.eva-brand-title{ font-weight: 800; letter-spacing: .06em; }
.eva-brand-sub{ font-size: .8rem; opacity: .8; margin-top: -2px; }

.eva-nav{
  display:flex;
  flex-direction:column;
  gap: 6px;
  padding: 8px;
}
.eva-nav a{
  display:flex;
  align-items:center;
  gap: .6rem;
  padding: 10px 12px;
  border-radius: 14px;
  color: rgba(255,255,255,.9);
  opacity: .92;
}
.eva-nav a:hover{ background: rgba(255,255,255,.10); opacity: 1; }
.eva-nav a.active{ background: rgba(255,255,255,.14); opacity: 1; }

.eva-main{ min-width: 0; }
.eva-topbar{
  display:flex;
  align-items:center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  border-radius: var(--eva-radius-xl);
  border: 1px solid var(--eva-border);
  background: rgba(255,255,255,.75);
  backdrop-filter: blur(12px);
  box-shadow: 0 10px 26px rgba(15, 23, 42, .06);
}
.eva-topbar h1{
  margin: 0;
  font-size: 1.05rem;
  font-weight: 800;
}
.eva-topbar .eva-topbar-right{ display:flex; align-items:center; gap: 10px; }

.eva-stats{ display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.eva-stat{
  padding: 14px 16px;
  border-radius: var(--eva-radius-lg);
  border: 1px solid var(--eva-border);
  background: rgba(255,255,255,.85);
  box-shadow: 0 10px 26px rgba(15, 23, 42, .05);
}
.eva-stat .k{ font-size: .78rem; color: var(--eva-muted); }
.eva-stat .v{ font-size: 1.4rem; font-weight: 800; margin-top: 2px; }

.eva-panel{
  margin-top: 14px;
  padding: 18px;
}

/* Responsive shell */
@media (max-width: 992px){
  .eva-shell{ grid-template-columns: 1fr; }
  .eva-sidebar{ position: relative; top: auto; }
  .eva-stats{ grid-template-columns: 1fr; }
}

/* -------------------------------------------------
   Chat (keeps your existing markup but makes it match the reference)
--------------------------------------------------- */
.chat-card{
  border-radius: var(--eva-radius-xl) !important;
  border: 1px solid var(--eva-border) !important;
  box-shadow: var(--eva-shadow) !important;
  background: rgba(255,255,255,.92) !important;
}

.chat-messages{
  max-height: 58vh;
  overflow-y: auto;
  padding-right: 6px;
}
.chat-messages::-webkit-scrollbar{ width: 8px; }
.chat-messages::-webkit-scrollbar-thumb{ background: rgba(148,163,184,.6); border-radius: 999px; }

.chat-message{ display:flex; flex-direction:column; margin-bottom: 10px; max-width: 82%; }
.chat-message-user{ margin-left:auto; align-items:flex-end; }
.chat-message-assistant{ margin-right:auto; align-items:flex-start; }

.chat-message-author{
  font-size: .68rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: rgba(102,112,133,.95);
}

.chat-message-bubble{
  padding: 10px 12px;
  border-radius: 16px;
  font-size: .95rem;
  line-height: 1.45;
  word-wrap: break-word;
  white-space: pre-wrap;
}

.chat-message-user .chat-message-bubble{
  background: radial-gradient(600px 240px at 30% 0%, rgba(255, 255, 255, .10), transparent 60%), linear-gradient(180deg, var(--eva-primary-700) 0%, var(--eva-primary-800) 100%);
  color: #fff;
  border-bottom-right-radius: 6px;
}

.chat-message-assistant .chat-message-bubble{
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(243,246,255,.95));
  border: 1px solid rgba(148,163,184,.28);
  color: var(--eva-text);
  border-bottom-left-radius: 6px;
}

.quick-prompt-pill{
  border-radius: 999px !important;
  font-size: 0.8rem;
  padding: 6px 12px;
  border: 1px solid var(--eva-border);
  background: rgba(255,255,255,.85);
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.quick-prompt-pill:hover{
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(15, 23, 42, .08);
  background: rgba(255,255,255,.98);
}

.chat-input-form .chat-textarea{
  resize:none;
  border-radius: 999px !important;
  padding: .65rem .95rem;
  background: rgba(255,255,255,.9);
}

.scroll-anchor{ position:absolute; right: 16px; bottom: 84px; z-index: 10; }
@media (max-width: 768px){ .scroll-anchor{ bottom: 74px; right: 12px; } }

/* Legacy bootstrap card scroll helper used in some pages */
.card{ overflow-y: auto; }

/* THINKING DOTS */
.thinking-dots{
  display:inline-flex;
  gap:4px;
  margin-left:6px;
  vertical-align:middle;
}
.thinking-dots span{
  width:6px;height:6px;border-radius:999px;
  background:rgba(17,24,39,.55);
  animation:evaDot 1.1s infinite ease-in-out;
}
.thinking-dots span:nth-child(2){animation-delay:.15s}
.thinking-dots span:nth-child(3){animation-delay:.3s}
@keyframes evaDot{
  0%,80%,100%{transform:translateY(0);opacity:.45}
  40%{transform:translateY(-4px);opacity:1}
}

/* Conversations list (ChatGPT-like) */
.eva-conv-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid rgba(148,163,184,.25);
}
.eva-conv-title{
  font-size:.75rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:rgba(226,232,240,.75);
}
.eva-conv-list{
  margin-top:10px;
  display:flex;
  flex-direction:column;
  gap:6px;
}
.eva-conv-item{
  display:flex;
  flex-direction:column;
  gap:2px;
  padding:10px 10px;
  border-radius:14px;
  color:rgba(226,232,240,.92);
  text-decoration:none;
  border:1px solid rgba(148,163,184,.14);
  background:rgba(15,23,42,.18);
  cursor:pointer;
  transition:transform .08s ease, background .12s ease, border-color .12s ease;
}
.eva-conv-item:hover{
  transform:translateY(-1px);
  background:rgba(15,23,42,.28);
  border-color:rgba(148,163,184,.24);
}
.eva-conv-item.active{
  background:rgba(59,130,246,.18);
  border-color:rgba(96,165,250,.45);
}
.eva-conv-item .t{
  font-size:.92rem;
  line-height:1.2;
  font-weight:600;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.eva-conv-item .p{
  font-size:.78rem;
  color:rgba(226,232,240,.75);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
