/* ============================================================
   VINALITICA — Design system aligned with reports
   Palette and typography from public/reports/*.html
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700;800;900&family=Lato:wght@300;400;700&family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  /* === Palette officielle Vinalitica Brand Guidelines === */
  --ac:    #B95955;     /* Rouge corail — accent principal */
  --ac2:   #C46A66;     /* Hover (légèrement plus clair) */
  --acbg:  rgba(185,89,85,0.07);
  --burg:  #58212D;     /* Bordeaux profond — accent dark / badges */
  --bl:    #3C4E5A;     /* Bleu ardoise — accent secondaire */
  --blbg:  rgba(60,78,90,0.07);
  --charcoal: #252E33;  /* Anthracite — sidebar, dark surfaces */
  --noir:  #1D1F24;     /* Noir profond — texte heading sombre */
  --bg:    #EFEEEC;     /* Beige crème — fond principal */
  --bgc:   #FFFFFF;     /* Fond cards */
  --bg2:   #DDD6D5;     /* Beige rosé — bordures / fond secondaire */
  --bd:    #DDD6D5;     /* Bordure standard (beige rosé) */
  --bdl:   #E8E4E2;     /* Bordure light */
  --tx:    #252E33;     /* Texte principal (charcoal) */
  --tm:    #6B7378;     /* Texte muted (gris bleuté) */
  --td:    #9AA0A4;     /* Texte dim */
  --gr:    #3D7A4A;     /* Vert delta-up */
  --grbg:  rgba(61,122,74,0.08);
  --rd:    #A93B2E;     /* Rouge alerte */
  --rdbg:  rgba(169,59,46,0.08);
  --or:    #B07340;     /* Bronze */
  --go:    #E8B84B;     /* Gold accent */

  /* Ombres */
  --sh:    0 1px 3px rgba(44,37,32,0.06);
  --shl:   0 8px 32px rgba(44,37,32,0.10);
  --shxl:  0 24px 60px rgba(44,37,32,0.14);

  /* Radius */
  --r-sm:  6px;
  --r:     10px;
  --r-md:  12px;
  --r-lg:  16px;
  --r-xl:  20px;

  /* Transitions */
  --ease:  cubic-bezier(0.4, 0, 0.2, 1);
  --t:     180ms var(--ease);

  /* Fonts */
  --font-h:    'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-b:    'Lato', 'DM Sans', -apple-system, sans-serif;
  --font-m:    'JetBrains Mono', 'SF Mono', Menlo, monospace;

  /* Aliases retro-compat */
  --c-primary:        var(--ac);
  --c-accent:         var(--ac);
  --c-text:           var(--tx);
  --c-text-soft:      var(--tm);
  --c-text-muted:     var(--td);
  --c-bg:             var(--bg);
  --c-bg-card:        var(--bgc);
  --c-bg-soft:        var(--bg2);
  --c-border:         var(--bd);
  --c-border-soft:    var(--bdl);
  --c-border-strong:  var(--bd);
  --c-error-bg:       var(--rdbg);
  --c-error-fg:       var(--rd);
  --c-success-bg:     var(--grbg);
  --c-success-fg:     var(--gr);
  --c-warn-bg:        rgba(176,115,64,0.12);
  --c-warn-fg:        var(--or);
  --c-info-bg:        var(--blbg);
  --c-info-fg:        var(--bl);
  --radius:           var(--r-md);
  --radius-sm:        var(--r-sm);
  --radius-lg:        var(--r-lg);
  --shadow:           var(--sh);
  --shadow-xs:        var(--sh);
  --shadow-hover:     var(--shl);
  --shadow-lg:        var(--shxl);
  --transition:       var(--t);
  --font-heading:     var(--font-h);
  --font-body:        var(--font-b);
  --font-mono:        var(--font-m);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html, body {
  font-family: var(--font-b);
  background: var(--bg);
  color: var(--tx);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100%;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-h);
  font-weight: 700;
  color: var(--tx);
  letter-spacing: -0.015em;
  line-height: 1.2;
}

a {
  color: var(--ac);
  text-decoration: none;
  transition: color var(--t);
}
a:hover { color: var(--ac2); }

::selection { background: var(--ac); color: #fff; }

/* ============================================================
   Brand wordmark
   ============================================================ */
.brand-wordmark {
  font-family: var(--font-h);
  font-weight: 800;
  letter-spacing: 0.04em;
  color: var(--tx);
  font-size: 18px;
  text-transform: none;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.brand-wordmark .accent { color: var(--ac); }
.brand-wordmark.on-dark { color: #fff; }

/* ============================================================
   APP HEADER — style "report .nav"
   ============================================================ */
.app-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--bd);
  padding: 0 24px;
}

.app-header-inner {
  max-width: 1320px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 56px;
  gap: 18px;
}

.nav-left, .nav-right { display: flex; align-items: center; gap: 22px; }

.nav-menu {
  display: flex;
  align-items: center;
  gap: 2px;
  list-style: none;
}

.nav-item { position: relative; }

.nav-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  border-radius: var(--r-sm);
  font-family: var(--font-h);
  font-size: 11px;
  font-weight: 700;
  color: var(--tm);
  cursor: pointer;
  user-select: none;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  transition: color var(--t), background var(--t);
  text-decoration: none;
  background: transparent;
  border: none;
}

.nav-link:hover, .nav-link.active {
  color: var(--ac);
  background: var(--acbg);
}

.nav-link.has-menu::after {
  content: '';
  width: 0; height: 0;
  border-left: 3.5px solid transparent;
  border-right: 3.5px solid transparent;
  border-top: 4px solid currentColor;
  margin-left: 2px;
  opacity: 0.6;
  transition: transform var(--t);
}

.nav-item.open .nav-link.has-menu::after { transform: rotate(180deg); }

/* Dropdown */
.nav-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  min-width: 260px;
  background: var(--bgc);
  border: 1px solid var(--bd);
  border-radius: var(--r-md);
  box-shadow: var(--shxl);
  padding: 6px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-4px);
  transition: opacity var(--t), visibility var(--t), transform var(--t);
  list-style: none;
}

.nav-item.open .nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-dropdown a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: var(--r-sm);
  color: var(--tx);
  font-size: 13px;
  font-weight: 600;
  font-family: var(--font-b);
  text-transform: none;
  letter-spacing: normal;
  transition: background var(--t), color var(--t);
}
.nav-dropdown a:hover { background: var(--acbg); color: var(--ac); }

.nav-dropdown .flag {
  font-size: 18px;
  line-height: 1;
  width: 22px;
  text-align: center;
  flex-shrink: 0;
}

.nav-dropdown .item-text { display: flex; flex-direction: column; gap: 2px; }
.nav-dropdown .desc {
  font-size: 11px;
  color: var(--td);
  font-weight: 400;
}

.nav-divider {
  height: 1px;
  background: var(--bdl);
  margin: 4px 6px;
  list-style: none;
}

/* User chip (avatar) */
.user-chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 5px 5px 5px 14px;
  background: var(--bg);
  border: 1px solid var(--bd);
  border-radius: 999px;
  cursor: pointer;
  transition: border-color var(--t), background var(--t);
  font-family: var(--font-b);
  font-size: 13px;
  font-weight: 600;
  color: var(--tx);
}
.user-chip:hover { border-color: var(--ac); background: var(--bgc); }

.user-avatar {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--ac);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-h);
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.02em;
}

.user-dropdown { right: 0; left: auto; min-width: 220px; }

#nav-admin {
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  background: var(--ac);
  color: #fff;
  padding: 6px 12px;
  border-radius: 6px;
  text-decoration: none;
}
#nav-admin:hover { background: var(--ac2); }

/* ============================================================
   LAYOUT
   ============================================================ */
.container { max-width: 1320px; margin: 0 auto; padding: 32px 40px 60px; }
.container.narrow { max-width: 720px; padding: 32px 24px 60px; }
.container.wide { max-width: 1500px; }

.page-header {
  border-bottom: 2px solid var(--tx);
  padding-bottom: 22px;
  margin-bottom: 32px;
}

.page-badge {
  display: inline-block;
  font-family: var(--font-h);
  font-size: 9px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ac);
  border: 1.5px solid var(--ac);
  padding: 4px 12px;
  border-radius: 4px;
  margin-bottom: 14px;
}

.page-title {
  font-family: var(--font-h);
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.04em;
  line-height: 1.1;
  color: var(--tx);
  margin: 0 0 6px;
}
.page-title .accent { color: var(--ac); }

.page-subtitle {
  font-family: var(--font-b);
  font-size: 14px;
  color: var(--tm);
  max-width: 700px;
  font-weight: 400;
}

.section-title {
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 800;
  color: var(--ac);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  margin: 36px 0 16px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.section-title::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--bd);
}

/* ============================================================
   CARDS
   ============================================================ */
.card {
  background: var(--bgc);
  border: 1px solid var(--bdl);
  border-radius: var(--r-lg);
  padding: 24px;
  box-shadow: var(--sh);
  transition: box-shadow var(--t), transform var(--t), border-color var(--t);
}
.card.elevated { box-shadow: var(--shl); }
.card.link {
  cursor: pointer;
  text-decoration: none;
  color: inherit;
  display: block;
}
.card.link:hover {
  border-color: var(--ac);
  box-shadow: var(--shl);
  transform: translateY(-3px);
}
.card h3 {
  font-family: var(--font-h);
  font-size: 16px;
  font-weight: 700;
  color: var(--tx);
  margin: 0 0 8px;
  letter-spacing: -0.01em;
}
.card p {
  color: var(--tm);
  font-size: 13px;
  margin: 0;
  line-height: 1.55;
}

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

/* Report-style card (avec icone + arrow ::after) */
.report-card {
  padding: 24px;
  position: relative;
  overflow: hidden;
}
.report-card::after {
  content: '\2192';
  position: absolute;
  top: 18px;
  right: 20px;
  font-family: var(--font-m);
  font-size: 16px;
  font-weight: 700;
  color: var(--bdl);
  transition: color var(--t), right var(--t);
}
.report-card.link:hover::after { color: var(--ac); right: 16px; }
.report-card .icon {
  font-size: 28px;
  margin-bottom: 14px;
  display: inline-block;
  line-height: 1;
}
.report-card h3 {
  font-size: 17px;
  letter-spacing: -0.02em;
  margin-bottom: 6px;
}
.report-card p {
  font-size: 13px;
  color: var(--tm);
  line-height: 1.5;
}
.report-card .kicker {
  font-family: var(--font-h);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ac);
  margin-bottom: 8px;
  display: block;
}

/* ============================================================
   STATS / KPI
   ============================================================ */
.stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px;
  margin-bottom: 28px;
}
.stat {
  background: var(--bgc);
  border: 1px solid var(--bdl);
  border-radius: var(--r-md);
  padding: 18px 20px;
  box-shadow: var(--sh);
}
.stat .v {
  font-family: var(--font-m);
  font-size: 26px;
  font-weight: 700;
  color: var(--tx);
  margin: 0;
  letter-spacing: -0.01em;
  line-height: 1;
}
.stat .l {
  font-family: var(--font-h);
  font-size: 10px;
  color: var(--td);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin: 8px 0 0;
  font-weight: 700;
}

/* ============================================================
   BUTTONS (report style)
   ============================================================ */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px 20px;
  border-radius: var(--r-sm);
  font-family: var(--font-h);
  font-size: 12px;
  font-weight: 700;
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: all var(--t);
  text-decoration: none;
  line-height: 1;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.btn:disabled { opacity: 0.5; cursor: not-allowed; }
.btn-small { padding: 7px 14px; font-size: 11px; }
.btn-large { padding: 13px 26px; font-size: 13px; }

.btn-primary {
  background: var(--ac);
  color: #fff;
  border-color: var(--ac);
}
.btn-primary:hover:not(:disabled) {
  background: var(--ac2);
  border-color: var(--ac2);
  transform: translateY(-1px);
  box-shadow: 0 6px 14px rgba(155, 59, 48, 0.22);
}

.btn-accent { /* alias */
  background: var(--ac);
  color: #fff;
  border-color: var(--ac);
}
.btn-accent:hover:not(:disabled) { background: var(--ac2); border-color: var(--ac2); }

.btn-outline {
  background: transparent;
  color: var(--tx);
  border-color: var(--bd);
}
.btn-outline:hover:not(:disabled) {
  border-color: var(--ac);
  color: var(--ac);
  background: var(--acbg);
}

.btn-ghost {
  background: transparent;
  color: var(--tm);
  border-color: transparent;
}
.btn-ghost:hover:not(:disabled) { color: var(--ac); background: var(--acbg); }

.btn-danger {
  background: var(--rd);
  color: #fff;
  border-color: var(--rd);
}
.btn-danger:hover:not(:disabled) { background: #8e1313; border-color: #8e1313; }

.btn-block { width: 100%; }

/* ============================================================
   FORMS
   ============================================================ */
label {
  display: block;
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 700;
  color: var(--tm);
  margin-bottom: 6px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
input[type="text"], input[type="email"], input[type="password"], input[type="number"], textarea, select {
  width: 100%;
  padding: 11px 14px;
  font-family: var(--font-b);
  font-size: 14px;
  border: 1px solid var(--bd);
  border-radius: var(--r-sm);
  background: var(--bgc);
  color: var(--tx);
  transition: border-color var(--t), box-shadow var(--t);
  margin-bottom: 14px;
}
input:focus, textarea:focus, select:focus {
  outline: none;
  border-color: var(--ac);
  box-shadow: 0 0 0 3px var(--acbg);
}
input::placeholder { color: var(--td); }

/* ============================================================
   BADGES / DELTAS / ALERTS
   ============================================================ */
.badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.badge-admin { background: var(--acbg); color: var(--ac); }
.badge-success { background: var(--grbg); color: var(--gr); }
.badge-warn { background: var(--c-warn-bg); color: var(--c-warn-fg); }
.badge-info { background: var(--blbg); color: var(--bl); }
.badge-muted { background: rgba(0,0,0,0.05); color: var(--tm); }
.badge-burg { background: var(--burg); color: #fff; }

.delta {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 12px;
}
.delta.up { color: var(--gr); background: var(--grbg); }
.delta.down { color: var(--rd); background: var(--rdbg); }
.delta.neutral { color: var(--tm); background: rgba(138,126,114,0.08); }

.msg {
  padding: 12px 14px;
  border-radius: var(--r-sm);
  font-size: 13px;
  margin-bottom: 14px;
  border-left: 3px solid;
}
.msg.ok { background: var(--grbg); color: var(--gr); border-left-color: var(--gr); }
.msg.err { background: var(--rdbg); color: var(--rd); border-left-color: var(--rd); }
.msg.warn { background: var(--c-warn-bg); color: var(--or); border-left-color: var(--or); }
.msg.info { background: var(--blbg); color: var(--bl); border-left-color: var(--bl); }

/* ============================================================
   TABLES
   ============================================================ */
table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-b);
  font-size: 13px;
}
th, td {
  text-align: left;
  padding: 12px 12px;
  border-bottom: 1px solid var(--bdl);
  vertical-align: top;
}
th {
  font-family: var(--font-h);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--td);
  font-weight: 800;
  background: var(--bg);
  border-bottom-color: var(--bd);
}
tr:hover td { background: var(--bg); }
td.empty-row, .empty-row {
  padding: 36px;
  text-align: center;
  color: var(--td);
  font-size: 13px;
}

/* ============================================================
   FOOTER
   ============================================================ */
.app-footer {
  margin-top: 80px;
  padding: 32px 40px;
  text-align: center;
  color: var(--td);
  font-family: var(--font-h);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  border-top: 1px solid var(--bd);
}

/* ============================================================
   AUTH SHELL
   ============================================================ */
body.auth-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(ellipse at top left, rgba(155,59,48,0.06) 0%, transparent 50%),
    radial-gradient(ellipse at bottom right, rgba(176,115,64,0.05) 0%, transparent 50%),
    var(--bg);
}
.auth-card {
  background: var(--bgc);
  padding: 40px 36px;
  border-radius: var(--r-lg);
  box-shadow: var(--shxl);
  width: 100%;
  max-width: 420px;
  border: 1px solid var(--bd);
  position: relative;
  overflow: hidden;
}
.auth-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--ac) 0%, var(--burg) 100%);
}

/* ============================================================
   TABS
   ============================================================ */
.tabs {
  display: flex;
  margin-bottom: 22px;
  border-bottom: 1px solid var(--bd);
  gap: 4px;
}
.tab {
  flex: 1;
  padding: 11px 8px;
  text-align: center;
  font-family: var(--font-h);
  font-size: 11px;
  font-weight: 700;
  color: var(--tm);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: color var(--t), border-color var(--t);
  user-select: none;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.tab.active { color: var(--ac); border-bottom-color: var(--ac); }
.tab:hover:not(.active) { color: var(--tx); }

/* ============================================================
   UTILITAIRES
   ============================================================ */
.mono { font-family: var(--font-m); }
.eyebrow {
  font-family: var(--font-h);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--ac);
}
.mt-1 { margin-top: 8px; } .mt-2 { margin-top: 16px; } .mt-3 { margin-top: 24px; } .mt-4 { margin-top: 32px; }
.text-muted { color: var(--td); }
.text-soft { color: var(--tm); }
.hidden { display: none !important; }
.flex-row { display: flex; align-items: center; gap: 10px; }
