/* VEXINOV SIGNATURE 1.4 — couche visuelle unifiée.
 * Aucun état financier, token, QR, prix ou appel API n'est modifié ici.
 */
:root {
  --sig-ivory: #fbfaf7;
  --sig-paper: #fff;
  --sig-ink: #15333a;
  --sig-muted: #5d7276;
  --sig-teal: #086f77;
  --sig-teal-dark: #075b62;
  --sig-line: #dfebe6;
  --sig-gold: #eabf78;
  --sig-faint: #eff7f4;
  --sig-shadow: 0 18px 52px rgba(21, 51, 58, .075);
}

html { color-scheme: light; }
body {
  font-family: Inter, Aptos, "Segoe UI", ui-sans-serif, system-ui, sans-serif !important;
  background: var(--sig-ivory) !important;
  color: var(--sig-ink) !important;
  -webkit-font-smoothing: antialiased;
}
body :is(h1,h2,h3,h4,h5) { color: var(--sig-ink); letter-spacing: -.03em; }
body a { text-underline-offset: 3px; }
body :is(button,a,input,textarea,select):focus-visible {
  outline: 3px solid var(--sig-gold) !important;
  outline-offset: 2px;
}
body [hidden] { display: none !important; }

/* Marketplace : l'intitulé doit rester lisible même si le texte explicatif est long. */
body.vx-events-app .vx-section-title {
  display: grid;
  grid-template-columns: minmax(300px, .85fr) minmax(0, 1.15fr);
  align-items: end;
  column-gap: clamp(20px, 4vw, 58px);
}
body.vx-events-app .vx-section-title > div { min-width: 0; }
body.vx-events-app .vx-section-title h2 { text-wrap: balance; }
body.vx-events-app .vx-section-title p { margin: 0; max-width: 690px; }

/* Navigation : mêmes repères sur Marketplace, panier, compte et billets. */
body .vx-topbar,
body .vx-signature-sitebar {
  position: sticky;
  top: 0;
  z-index: 110;
  min-height: 72px;
  color: var(--sig-ink) !important;
  background: rgba(255,255,255,.97) !important;
  border-bottom: 1px solid var(--sig-line) !important;
  box-shadow: 0 5px 23px rgba(21,51,58,.045) !important;
  backdrop-filter: blur(15px);
}
body .vx-signature-sitebar .vx-nav {
  width: min(1240px,calc(100% - 32px));
  margin: auto;
  display: flex;
  align-items: center;
  gap: 18px;
  min-height: 72px;
}
body .vx-signature-sitebar .vx-navlinks {
  display:flex;
  align-items:center;
  gap:20px;
  margin-left:auto;
}
body .vx-topbar .vx-brand,
body .vx-signature-sitebar .vx-brand {
  color: var(--sig-ink) !important;
  font-size: 1.38rem;
  letter-spacing: -.055em;
  font-weight: 850;
  text-decoration: none;
  white-space: nowrap;
}
body .vx-topbar .vx-brand b,
body .vx-signature-sitebar .vx-brand b { color: var(--sig-teal) !important; }
body .vx-topbar .vx-navlinks a,
body .vx-signature-sitebar .vx-navlinks a {
  color: #3d595d !important;
  text-decoration: none;
  font-size: .9rem;
  font-weight: 700;
}
body .vx-topbar .vx-navlinks a:hover,
body .vx-signature-sitebar .vx-navlinks a:hover { color: var(--sig-teal) !important; }
body .vx-topbar .vx-nav-home,
body .vx-signature-sitebar .vx-nav-home { border-color: var(--sig-line); }
body .vx-topbar .vx-menu-btn,
body .vx-signature-sitebar .vx-menu-btn {
  color: var(--sig-ink) !important;
  background: var(--sig-faint) !important;
  border: 1px solid var(--sig-line) !important;
  border-radius: 12px;
}
body .vx-topbar .vx-signature-cart,
body .vx-signature-sitebar .vx-signature-cart {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  gap: 8px;
  color: var(--sig-teal) !important;
  background: #ecf6f2 !important;
  border: 1px solid #d1e8df !important;
  border-radius: 999px;
  padding: 9px 14px;
  min-height: 42px;
  font-weight: 800;
  font-size: .88rem;
  text-decoration: none;
}
body .vx-signature-cart-icon {
  width: 18px;
  height: 18px;
  stroke: currentColor;
  stroke-width: 1.8;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
body .vx-signature-cart-count:not([hidden]) {
  display: inline-flex;
  min-width: 21px;
  height: 21px;
  align-items: center;
  justify-content: center;
  padding: 2px 5px;
  color: white;
  background: var(--sig-teal);
  font-size: .74rem;
  border-radius: 100px;
}
body .vx-topbar [data-vx-auth-slot] .vx-btn,
body .vx-signature-sitebar .vx-signature-auth-link {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 42px;
  padding: 10px 16px;
  color: #fff !important;
  background: var(--sig-teal) !important;
  border: 1px solid var(--sig-teal) !important;
  border-radius: 12px;
  font-size: .86rem;
  font-weight: 760;
  text-decoration: none;
}

/* Recherche, formulaire de réservation, présentation de l'événement. */
body.vx-events-app .vx-searchbar,
body.vx-events-app .vx-panel,
body.vx-events-app .vx-card,
body.vx-events-app .vx-feature,
body.vx-events-app .vx-metric,
body.vx-events-app .vx-feature-card {
  background: var(--sig-paper) !important;
  color: var(--sig-ink) !important;
  border: 1px solid var(--sig-line) !important;
  border-radius: 20px !important;
  box-shadow: var(--sig-shadow) !important;
}
body.vx-events-app :is(input,select,textarea) {
  color: var(--sig-ink) !important;
  background: #fff !important;
  border: 1px solid #c6d8d2 !important;
  border-radius: 12px !important;
  min-height: 44px;
}
body.vx-events-app :is(p,.vx-muted,.vx-note) { color: var(--sig-muted); }
body.vx-events-app .vx-chips .vx-chip {
  color: var(--sig-teal) !important;
  background: #eef7f3 !important;
  border: 1px solid #d8e9e1 !important;
}
body.vx-events-app .vx-chips .vx-chip.active,
body.vx-events-app .vx-chips .vx-chip[aria-pressed="true"] {
  background: var(--sig-teal) !important;
  color: white !important;
  border-color: var(--sig-teal) !important;
}

/* L'espace festivalier conserve ses cartes fonctionnelles mais adopte la même peau claire. */
body:not(.vx-events-app) .vx-auth-shell {
  display: block !important;
  min-height: calc(100vh - 72px);
  max-width: 1260px;
  padding: 44px 24px 80px;
  margin: auto;
}
body:not(.vx-events-app) .vx-auth-shell > .vx-auth-brand { display: none !important; }
body:not(.vx-events-app) .vx-auth-main {
  display: flex;
  align-items: flex-start;
  justify-content: center;
  min-height: 0;
  padding: 0;
}
body:not(.vx-events-app) .vx-card,
body:not(.vx-events-app) .vx-kpi,
body:not(.vx-events-app) .vx-ticket-card,
body:not(.vx-events-app) .vx-ticket-detail-card,
body:not(.vx-events-app) .vx-qr-dialog {
  color: var(--sig-ink) !important;
  background: var(--sig-paper) !important;
  border: 1px solid var(--sig-line) !important;
  border-radius: 22px !important;
  box-shadow: var(--sig-shadow);
}
body:not(.vx-events-app) .vx-auth-main > .vx-card {
  width: min(660px,100%);
  padding: clamp(24px,4vw,45px);
}
body:not(.vx-events-app) .vx-auth-main > .vx-card h2 { font-size: clamp(2rem,4vw,2.65rem); }
body:not(.vx-events-app) .vx-auth-main > .vx-card p,
body:not(.vx-events-app) .vx-ticket-header p { color: var(--sig-muted) !important; }
body:not(.vx-events-app) .vx-kicker,
body:not(.vx-events-app) .vx-ticket-meta small,
body:not(.vx-events-app) .vx-detail-grid small {
  color: var(--sig-teal) !important;
}
body:not(.vx-events-app) .vx-link,
body:not(.vx-events-app) .vx-meta a,
body:not(.vx-events-app) .vx-auth-footer a { color: var(--sig-teal) !important; }
body:not(.vx-events-app) .vx-field label,
body:not(.vx-events-app) .vx-form label,
body:not(.vx-events-app) .vx-profile small {
  color: #38585d !important;
}
body:not(.vx-events-app) :is(input,select,textarea) {
  color: var(--sig-ink) !important;
  background: #fff !important;
  border: 1px solid #bdd4cd !important;
  border-radius: 12px !important;
  min-height: 45px;
}
body:not(.vx-events-app) .vx-btn,
body:not(.vx-events-app) .vx-btn-secondary {
  color: var(--sig-teal) !important;
  background: white !important;
  border: 1px solid #c6dcd5 !important;
  border-radius: 12px !important;
  box-shadow: none;
}
body:not(.vx-events-app) .vx-btn-primary {
  color: white !important;
  background: var(--sig-teal) !important;
  border: 1px solid var(--sig-teal) !important;
  box-shadow: 0 10px 22px rgba(8,111,119,.17) !important;
}
body:not(.vx-events-app) .vx-btn-primary:hover:not(:disabled) {
  background: var(--sig-teal-dark) !important;
}
body:not(.vx-events-app) .vx-kpi strong,
body:not(.vx-events-app) .vx-ticket-event,
body:not(.vx-events-app) .vx-ticket-type { color: var(--sig-ink) !important; }
body:not(.vx-events-app) .vx-ticket-wallet { width: min(1200px,100%); }
body:not(.vx-events-app) .vx-ticket-main { width: 100%; }
body:not(.vx-events-app) .vx-ticket-meta div,
body:not(.vx-events-app) .vx-detail-grid > div { border-color: var(--sig-line) !important; }
body:not(.vx-events-app) .vx-ticket-help,
body:not(.vx-events-app) .vx-detail-qr p,
body:not(.vx-events-app) .vx-meta,
body:not(.vx-events-app) .vx-ticket-empty { color: var(--sig-muted) !important; }
body:not(.vx-events-app) .vx-ticket-empty,
body:not(.vx-events-app) .vx-empty {
  color: var(--sig-muted) !important;
  background: white !important;
  border: 1px dashed #cbdcd6 !important;
}
body:not(.vx-events-app) .vx-ticket-status {
  background: #eaf6eb !important;
  color: #1a633d !important;
  border-color: #bde0ca !important;
}
body:not(.vx-events-app) .vx-ticket-status.used { background:#fff5df !important;color:#79551c !important;border-color:#efdcb6 !important; }
body:not(.vx-events-app) .vx-ticket-status.cancelled { background:#fff0ee !important;color:#994638 !important;border-color:#efcbc6 !important; }
body:not(.vx-events-app) .vx-qr-modal { background: rgba(14,35,39,.78); }
body:not(.vx-events-app) .vx-qr-close { background:#eef5f2;color:var(--sig-ink);border-color:var(--sig-line); }
body:not(.vx-events-app) .vx-qr-dialog p { color:var(--sig-muted) !important; }
body:not(.vx-events-app) .vx-alert[data-type="error"] { color:#983e34 !important;background:#fff0ee !important;border-color:#efcbc6 !important; }
body:not(.vx-events-app) .vx-alert[data-type="success"] { color:#236343 !important;background:#eaf6ed !important;border-color:#c8e5d0 !important; }
body:not(.vx-events-app) .vx-alert:not([data-type]) { color:#71511f;background:#fff4df;border-color:#f0daa9; }

/* Ancien cashless : ne pas modifier les identifiants ni les formulaires, seulement l'habillage. */
body:not(.vx-events-app) > .vx-shell { display:block;min-height:calc(100vh - 72px); }
body:not(.vx-events-app) .vx-shell > aside.vx-brand { display:none !important; }
body:not(.vx-events-app) .vx-shell > .vx-main { width:min(1280px,100%); max-width:1280px; margin:0 auto; padding:44px 24px 80px; }
body:not(.vx-events-app) .vx-top h2 { color:var(--sig-ink) !important; }
body:not(.vx-events-app) .vx-top .vx-sub,
body:not(.vx-events-app) .vx-help,
body:not(.vx-events-app) .vx-payment-note,
body:not(.vx-events-app) .vx-security-note { color:var(--sig-muted) !important; }
body:not(.vx-events-app) .vx-wallet,
body:not(.vx-events-app) .vx-band,
body:not(.vx-events-app) .vx-feature { border-color:var(--sig-line) !important; }
body:not(.vx-events-app) .vx-wallet-code { color:var(--sig-teal) !important;background:#eef7f3 !important;border-color:var(--sig-line) !important; }
body:not(.vx-events-app) .vx-chip,
body:not(.vx-events-app) .vx-status,
body:not(.vx-events-app) .vx-topup-status { color:#256248 !important;background:#e9f5ed !important;border:1px solid #cae7d3; }
body:not(.vx-events-app) .vx-chip.off,
body:not(.vx-events-app) .vx-status.warn { background:#fff3e0 !important;color:#825d24 !important;border-color:#f0dcb8 !important; }
body:not(.vx-events-app) .vx-topup { background:#fff !important;border-color:var(--sig-line) !important; }
body:not(.vx-events-app) .vx-currency-lock { color:var(--sig-teal) !important; }

@media (max-width: 900px) {
  body.vx-events-app .vx-section-title { grid-template-columns: 1fr; gap: 12px; }
  body.vx-events-app .vx-section-title p { max-width: 720px; }
  body .vx-topbar .vx-navlinks,
  body .vx-signature-sitebar .vx-navlinks {
    background: white !important;
    color: var(--sig-ink) !important;
    border: 1px solid var(--sig-line) !important;
    border-radius: 16px;
    box-shadow: var(--sig-shadow);
  }
  body .vx-signature-sitebar .vx-navlinks { display:none;position:absolute;top:66px;left:16px;right:16px;padding:15px;flex-direction:column;align-items:stretch; }
  body .vx-signature-sitebar .vx-navlinks.open { display:flex; }
  body .vx-signature-sitebar .vx-menu-btn { display:block;margin-left:auto; }
  body .vx-topbar .vx-navlinks a,
  body .vx-signature-sitebar .vx-navlinks a { display:block;padding:9px; }
  body:not(.vx-events-app) .vx-auth-shell { padding:24px 15px 55px; }
  body:not(.vx-events-app) .vx-shell > .vx-main { padding:24px 16px 55px; }
  body:not(.vx-events-app) .vx-ticket-card,
  body:not(.vx-events-app) .vx-ticket-detail-card { grid-template-columns: minmax(0,1fr) !important; }
}
@media (max-width: 560px) {
  body .vx-topbar .vx-nav,
  body .vx-signature-sitebar .vx-nav { gap:9px;min-height:65px; }
  body .vx-topbar .vx-brand,
  body .vx-signature-sitebar .vx-brand { font-size:1.12rem; }
  body .vx-signature-cart { padding:8px 10px !important;font-size:.8rem !important; }
  body .vx-signature-cart [data-vx-cart-label] { max-width:60px;line-height:1.1; }
  body .vx-signature-sitebar .vx-signature-auth-link { display:none; }
  body:not(.vx-events-app) .vx-auth-main > .vx-card { padding:22px 18px; }
  body:not(.vx-events-app) .vx-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
