:root {
  --cetras-forest: #153f39;
  --cetras-forest-deep: #0d302c;
  --cetras-teal: #0f766e;
  --cetras-teal-bright: #159486;
  --cetras-leaf: #77a96b;
  --cetras-mint: #dcebe3;
  --cetras-sky: #54a9d4;
  --cetras-paper: #f4f3ec;
  --cetras-surface: #ffffff;
  --cetras-ink: #17231f;
  --cetras-muted: #66726d;
  --cetras-line: #d8e0db;
  --cetras-danger: #b94048;
  --cetras-warning: #c58a22;
  --cetras-radius-sm: 14px;
  --cetras-radius: 22px;
  --cetras-radius-lg: 30px;
  --cetras-shadow: 0 18px 48px rgba(20, 58, 51, .10);
  --bs-primary: #0f766e;
  --bs-primary-rgb: 15, 118, 110;
  --bs-success: #3d8b61;
  --bs-success-rgb: 61, 139, 97;
  --bs-body-color: #17231f;
  --bs-body-bg: #f4f3ec;
  --bs-border-color: #d8e0db;
}

html { background: var(--cetras-paper); }

body,
body.bg-light {
  min-height: 100vh;
  color: var(--cetras-ink);
  background:
    radial-gradient(circle at 8% 3%, rgba(119, 169, 107, .16), transparent 27rem),
    radial-gradient(circle at 96% 9%, rgba(84, 169, 212, .12), transparent 24rem),
    var(--cetras-paper) !important;
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}

body::before {
  content: "";
  position: fixed;
  inset: 0 0 auto 0;
  height: 7px;
  z-index: 1100;
  background: linear-gradient(90deg, var(--cetras-forest), var(--cetras-teal), var(--cetras-leaf), var(--cetras-sky));
}

.cetras-brandbar {
  margin-top: 7px;
  padding: .8rem 0;
  border-bottom: 1px solid rgba(21, 63, 57, .10);
  background: rgba(255, 255, 255, .76);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

.cetras-brandbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.cetras-brandbar__brand {
  display: inline-flex;
  align-items: center;
  gap: .8rem;
  color: var(--cetras-ink);
  text-decoration: none;
}

.cetras-brandbar__brand:hover { color: var(--cetras-forest); }

.cetras-brandbar__logo {
  display: grid;
  width: 50px;
  height: 50px;
  flex: 0 0 50px;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(21, 63, 57, .12);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(21, 63, 57, .10);
}

.cetras-brandbar__logo img { width: 84%; height: 84%; object-fit: contain; }

.cetras-brandbar__brand strong {
  display: block;
  font-size: 1.08rem;
  letter-spacing: .015em;
}

.cetras-brandbar__brand small {
  display: block;
  color: var(--cetras-muted);
  font-size: .76rem;
}

.cetras-brandbar__place {
  color: var(--cetras-teal);
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}

a { color: var(--cetras-teal); }
a:hover { color: var(--cetras-forest); }

h1, h2, h3, h4, h5, h6 {
  color: var(--cetras-ink);
  font-weight: 750;
  letter-spacing: -.025em;
}

.text-muted { color: var(--cetras-muted) !important; }

.container { --bs-gutter-x: 2rem; }

body > .container,
body > main.container {
  position: relative;
}

/* Primo blocco di pagina: una testata coerente e leggibile. */
body > .container > .d-flex:first-child,
body > .container > div > .d-flex:first-child,
.bg-white > .d-flex:first-child {
  gap: 1rem !important;
}

.card,
.bg-white,
.mini-stat,
.mini-card,
.analysis-item,
.assistant-card,
.source-card,
.analysis-card,
.ai-answer-card,
.photo-analysis-card {
  border: 1px solid rgba(21, 63, 57, .10) !important;
  border-radius: var(--cetras-radius) !important;
  background-color: rgba(255, 255, 255, .96) !important;
  box-shadow: var(--cetras-shadow) !important;
}

.card-header,
.card-footer {
  border-color: var(--cetras-line);
  background: rgba(220, 235, 227, .42);
}

.card-header:first-child { border-radius: calc(var(--cetras-radius) - 1px) calc(var(--cetras-radius) - 1px) 0 0; }
.card-footer:last-child { border-radius: 0 0 calc(var(--cetras-radius) - 1px) calc(var(--cetras-radius) - 1px); }

.shadow-sm,
.shadow-soft { box-shadow: var(--cetras-shadow) !important; }

.rounded-4 { border-radius: var(--cetras-radius) !important; }

.btn {
  min-height: 42px;
  border-radius: 999px;
  padding: .58rem 1rem;
  font-weight: 700;
  border-width: 1px;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn-primary {
  --bs-btn-bg: var(--cetras-teal);
  --bs-btn-border-color: var(--cetras-teal);
  --bs-btn-hover-bg: var(--cetras-forest);
  --bs-btn-hover-border-color: var(--cetras-forest);
  --bs-btn-active-bg: var(--cetras-forest-deep);
  --bs-btn-active-border-color: var(--cetras-forest-deep);
  box-shadow: 0 9px 22px rgba(15, 118, 110, .20);
}

.btn-success {
  --bs-btn-bg: #3d8b61;
  --bs-btn-border-color: #3d8b61;
  --bs-btn-hover-bg: #2f7350;
  --bs-btn-hover-border-color: #2f7350;
}

.btn-outline-primary {
  --bs-btn-color: var(--cetras-teal);
  --bs-btn-border-color: rgba(15, 118, 110, .55);
  --bs-btn-hover-bg: var(--cetras-teal);
  --bs-btn-hover-border-color: var(--cetras-teal);
}

.btn-outline-secondary,
.btn-outline-dark {
  --bs-btn-color: var(--cetras-forest);
  --bs-btn-border-color: rgba(21, 63, 57, .32);
  --bs-btn-hover-bg: var(--cetras-forest);
  --bs-btn-hover-border-color: var(--cetras-forest);
}

.btn-danger {
  --bs-btn-bg: var(--cetras-danger);
  --bs-btn-border-color: var(--cetras-danger);
}

.btn-warning {
  --bs-btn-bg: #f4ca78;
  --bs-btn-border-color: #e6b95f;
  --bs-btn-color: #503815;
}

.btn-sm { min-height: 36px; padding: .42rem .8rem; }
.btn-lg { min-height: 52px; padding: .76rem 1.35rem; }

.form-label {
  margin-bottom: .42rem;
  color: #34463f;
  font-weight: 700;
}

.form-control,
.form-select,
.ts-control,
.input-group-text {
  min-height: 46px;
  color: var(--cetras-ink);
  border-color: var(--cetras-line) !important;
  border-radius: var(--cetras-radius-sm);
  background-color: rgba(255, 255, 255, .94);
}

textarea.form-control { min-height: 110px; }

.form-control:focus,
.form-select:focus,
.ts-control.focus {
  border-color: var(--cetras-teal) !important;
  box-shadow: 0 0 0 .24rem rgba(15, 118, 110, .13) !important;
}

.input-group > :not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.input-group > :not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; }

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

hr { color: rgba(21, 63, 57, .18); opacity: 1; }

.table-responsive {
  border-radius: calc(var(--cetras-radius) - 3px);
}

.table {
  --bs-table-bg: transparent;
  --bs-table-striped-bg: rgba(220, 235, 227, .34);
  --bs-table-hover-bg: rgba(84, 169, 212, .09);
  margin-bottom: 0;
}

.table thead th {
  padding-top: .85rem;
  padding-bottom: .85rem;
  color: #486058;
  background: #edf3ee;
  border-bottom-color: #cfdad3;
  font-size: .75rem;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.table td { border-color: rgba(21, 63, 57, .08); }

.badge,
.chip,
.type-pill {
  border-radius: 999px !important;
  font-weight: 700;
}

.chip,
.type-pill {
  color: var(--cetras-forest);
  border-color: rgba(15, 118, 110, .18) !important;
  background: rgba(15, 118, 110, .08) !important;
}

.alert {
  border: 1px solid transparent;
  border-radius: 18px;
}

.alert-success { color: #255d41; background: #e3f1e7; border-color: #bad9c5; }
.alert-danger { color: #803039; background: #f8e8e9; border-color: #e8c1c5; }
.alert-warning { color: #765316; background: #fff3d9; border-color: #ead29c; }
.alert-info { color: #255e70; background: #e3f1f5; border-color: #bed9e1; }

.progress { border-radius: 999px; background: #e2e9e4 !important; }
.progress-bar { background: linear-gradient(90deg, var(--cetras-teal), var(--cetras-leaf)); }

.chart-wrap {
  padding: .35rem .2rem 0;
  border-radius: 16px;
}

.chart-wrap canvas {
  filter: saturate(.95);
}

.card:has(.chart-wrap) .card-title-row,
.bg-white:has(.chart-wrap) .card-title-row {
  padding-bottom: .65rem;
  border-bottom: 1px solid rgba(21, 63, 57, .08);
}

.pagination { --bs-pagination-active-bg: var(--cetras-teal); --bs-pagination-active-border-color: var(--cetras-teal); }
.page-link { color: var(--cetras-teal); }

/* Login e recupero credenziali */
body > .container[style*="max-width:520px"],
body > .container[style*="max-width: 520px"],
body > .container[style*="max-width:500px"],
body > .container[style*="max-width: 500px"] {
  padding-top: clamp(2rem, 8vh, 5rem) !important;
}

body > .container[style*="max-width:520px"] > .bg-white,
body > .container[style*="max-width: 520px"] > .bg-white {
  position: relative;
  overflow: hidden;
}

body > .container[style*="max-width:520px"] > .bg-white::before,
body > .container[style*="max-width: 520px"] > .bg-white::before {
  content: "";
  position: absolute;
  inset: 0 0 auto;
  height: 6px;
  background: linear-gradient(90deg, var(--cetras-teal), var(--cetras-leaf), var(--cetras-sky));
}

body > .container[style*="max-width:520px"] img,
body > .container[style*="max-width: 520px"] img {
  max-width: 170px;
  height: auto !important;
  filter: drop-shadow(0 10px 14px rgba(21, 63, 57, .10));
}

/* Dashboard e pagine operative */
.kpi-icon {
  color: var(--cetras-teal) !important;
  border-color: rgba(15, 118, 110, .18) !important;
  background: rgba(15, 118, 110, .09) !important;
}

.assistant-header {
  background:
    radial-gradient(circle at 90% 10%, rgba(255,255,255,.20), transparent 13rem),
    linear-gradient(135deg, var(--cetras-forest-deep), var(--cetras-teal)) !important;
}

.assistant-header h1,
.assistant-header h2,
.assistant-header h3,
.assistant-header h4,
.assistant-header h5,
.assistant-header h6 { color: #fff; }

.admin-tools {
  overflow: hidden;
  padding: 1.15rem;
  border: 1px solid rgba(21, 63, 57, .10);
  border-radius: var(--cetras-radius);
  background: rgba(255, 255, 255, .78);
  box-shadow: var(--cetras-shadow);
}

.admin-tools__heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: .9rem;
}

.admin-tools__eyebrow {
  margin-bottom: .18rem;
  color: var(--cetras-teal);
  font-size: .7rem;
  font-weight: 850;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.admin-tools__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
}

.admin-tool-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .9rem;
  min-height: 108px;
  padding: 1rem;
  overflow: hidden;
  color: var(--cetras-ink);
  text-decoration: none;
  border: 1px solid rgba(21, 63, 57, .10);
  border-radius: 18px;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.admin-tool-card:hover {
  color: var(--cetras-ink);
  border-color: rgba(15, 118, 110, .28);
  box-shadow: 0 14px 30px rgba(21, 63, 57, .11);
  transform: translateY(-2px);
}

.admin-tool-card--ai {
  background:
    radial-gradient(circle at 92% 12%, rgba(84, 169, 212, .20), transparent 9rem),
    linear-gradient(135deg, #eef8f6, #f8fbfa);
}

.admin-tool-card--library {
  background:
    radial-gradient(circle at 92% 12%, rgba(119, 169, 107, .22), transparent 9rem),
    linear-gradient(135deg, #f2f8ed, #fbfcf8);
}

.admin-tool-card__icon {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  color: #fff;
  border-radius: 15px;
  background: linear-gradient(135deg, var(--cetras-forest), var(--cetras-teal));
  box-shadow: 0 9px 20px rgba(15, 118, 110, .20);
  font-size: 1.25rem;
  font-weight: 800;
}

.admin-tool-card--library .admin-tool-card__icon {
  background: linear-gradient(135deg, #557d4c, var(--cetras-leaf));
}

.admin-tool-card__content strong {
  display: block;
  margin-bottom: .2rem;
  font-size: 1rem;
}

.admin-tool-card__content small {
  display: block;
  color: var(--cetras-muted);
  line-height: 1.4;
}

.admin-tool-card__arrow {
  color: var(--cetras-teal);
  font-size: 1.4rem;
  transition: transform .18s ease;
}

.admin-tool-card:hover .admin-tool-card__arrow { transform: translateX(3px); }

.analysis-card,
.ai-answer-card { background: #f5fbf7 !important; }
.photo-analysis-card { background: #f3f9fc !important; }

.sticky-tools {
  border-radius: var(--cetras-radius);
}

@media (max-width: 767.98px) {
  body::before { height: 5px; }
  .container { --bs-gutter-x: 1.25rem; }

  .cetras-brandbar { margin-top: 5px; padding: .62rem 0; }
  .cetras-brandbar__logo { width: 44px; height: 44px; flex-basis: 44px; border-radius: 14px; }
  .cetras-brandbar__brand small { display: none; }
  .cetras-brandbar__place { font-size: .65rem; letter-spacing: .06em; }

  .admin-tools { padding: .9rem; }
  .admin-tools__heading { align-items: flex-start; }
  .admin-tools__heading .chip { display: none; }
  .admin-tools__grid { grid-template-columns: 1fr; }
  .admin-tool-card { min-height: 96px; padding: .85rem; }
  .admin-tool-card__icon { width: 44px; height: 44px; }

  body > .container,
  body > main.container { padding-top: 1.4rem !important; padding-bottom: 2rem !important; }

  h1 { font-size: clamp(1.8rem, 8vw, 2.5rem); }
  h3 { font-size: 1.55rem; }

  .card,
  .bg-white,
  .assistant-card { border-radius: 20px !important; }

  .card-body,
  .bg-white.p-4,
  .bg-white.p-md-5 { padding: 1.1rem !important; }

  body > .container > .d-flex:first-child,
  body > .container > div > .d-flex:first-child,
  .bg-white > .d-flex:first-child {
    align-items: flex-start !important;
  }

  body > .container > .d-flex:first-child > .d-flex,
  body > .container > div > .d-flex:first-child > .d-flex,
  .bg-white > .d-flex:first-child > .d-flex {
    width: 100%;
  }

  body > .container > .d-flex:first-child > .d-flex .btn,
  body > .container > div > .d-flex:first-child > .d-flex .btn,
  .bg-white > .d-flex:first-child > .d-flex .btn {
    flex: 1 1 auto;
  }

  .table { font-size: .88rem; }
  .table td, .table th { padding: .65rem .55rem; }

  .btn-lg { min-height: 50px; }
}

@media print {
  body { background: #fff !important; }
  body::before { display: none; }
  .card, .bg-white { box-shadow: none !important; }
  .btn, .no-print { display: none !important; }
}
