
/* v22: final visual sanity layer. Loaded last. Avoid layout shifts and enforce readable contrast. */
:root{
  --v22-light-bg:#eef8ff;
  --v22-light-surface:#ffffff;
  --v22-light-surface-soft:#f7fbff;
  --v22-light-text:#071326;
  --v22-light-muted:#30445f;
  --v22-light-line:rgba(10,37,76,.14);
  --v22-dark-bg:#020817;
  --v22-dark-surface:#071225;
  --v22-dark-text:#f7fbff;
  --v22-dark-muted:#b8c7dc;
  --v22-cyan:#4bdcff;
  --v22-blue:#075db4;
}

/* Same spacing in light and dark: only colors change. */
.site-header-v20{
  margin:14px auto 0 !important;
  top:14px !important;
  min-height:62px !important;
  padding:8px 12px !important;
  display:flex !important;
  align-items:center !important;
}
main{ margin-top:0 !important; }
main > .hero:first-child{
  padding-top:clamp(58px,7vw,84px) !important;
  padding-bottom:30px !important;
  min-height:calc(100vh - 120px) !important;
}
html[data-theme="light"] main > .hero:first-child,
html[data-theme="dark"] main > .hero:first-child{ margin-top:0 !important; }

/* No desktop hamburger / camembert. */
.menu-button-v20{ display:none !important; }
@media (max-width:980px){ .menu-button-v20{ display:grid !important; } }

/* Header controls: centered, compact, not blurry. */
.header-tools-v20{ display:flex !important; align-items:center !important; gap:7px !important; }
.language-switcher-v20,
.theme-switch-v20,
.account-button-v20,
.menu-button-v20{
  width:38px !important;
  min-width:38px !important;
  height:38px !important;
  border-radius:999px !important;
  padding:0 !important;
  place-items:center !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  line-height:1 !important;
  overflow:hidden !important;
  box-shadow:0 10px 26px rgba(15,23,42,.08) !important;
}
.language-switcher-v20{ display:grid !important; grid-template-rows:21px 10px !important; gap:0 !important; }
.language-switcher-v20 img{ width:22px !important; height:15px !important; object-fit:cover !important; border-radius:3px !important; margin:0 auto !important; }
.language-switcher-v20 span{ display:block !important; font-size:8px !important; font-weight:950 !important; letter-spacing:.04em !important; text-transform:uppercase !important; margin:0 !important; color:inherit !important; }
.theme-switch-v20{ display:grid !important; }
.theme-switch-v20 .theme-toggle-icon{ display:block !important; font-size:20px !important; line-height:1 !important; width:20px !important; height:20px !important; color:inherit !important; }
.account-button-v20{ display:grid !important; background:linear-gradient(135deg,#2a7dff,#7f4cff) !important; color:#fff !important; border-color:transparent !important; }
.account-button-v20 b{ display:block !important; color:#fff !important; font-size:.78rem !important; font-weight:950 !important; line-height:1 !important; }
html[data-theme="light"] .account-button-v20,
html[data-theme="light"] .account-button-v20 b{ color:#fff !important; }
html[data-theme="light"] .language-switcher-v20,
html[data-theme="light"] .theme-switch-v20,
html[data-theme="light"] .menu-button-v20{ background:#fff !important; color:var(--v22-light-text) !important; border-color:var(--v22-light-line) !important; }
html[data-theme="dark"] .language-switcher-v20,
html[data-theme="dark"] .theme-switch-v20,
html[data-theme="dark"] .menu-button-v20{ background:rgba(255,255,255,.08) !important; color:#f7fbff !important; border-color:rgba(180,210,255,.20) !important; }
.account-dropdown-v20{ z-index:3000 !important; }

/* Light mode: readable text everywhere. */
html[data-theme="light"] body:not(.dashboard-page):not(.auth-page){
  background:
    radial-gradient(circle at 0 0, rgba(205,235,255,.90) 0, rgba(205,235,255,0) 32rem),
    radial-gradient(circle at 100% 0, rgba(226,244,255,.88) 0, rgba(226,244,255,0) 30rem),
    linear-gradient(180deg,#fbfdff 0%,var(--v22-light-bg) 100%) !important;
  color:var(--v22-light-text) !important;
}
html[data-theme="light"] body:not(.dashboard-page):not(.auth-page) :is(h1,h2,h3,h4,h5,h6,strong,label,legend,th,td,a,button,.brand-copy strong,.logo-wordmark){ color:var(--v22-light-text) !important; text-shadow:none !important; }
html[data-theme="light"] body:not(.dashboard-page):not(.auth-page) :is(p,li,small,em,.hero-lead,.section p,.page-hero p,.team-card-copy p,.story-long-copy p){ color:var(--v22-light-muted) !important; text-shadow:none !important; opacity:1 !important; }
html[data-theme="light"] body:not(.dashboard-page):not(.auth-page) .eyebrow{ color:var(--v22-blue) !important; text-shadow:none !important; opacity:1 !important; }
html[data-theme="light"] .button-primary,
html[data-theme="light"] .nav-cta{ color:#fff !important; }
html[data-theme="light"] .button-primary *{ color:#fff !important; }
html[data-theme="light"] .hero-logo-lockup,
html[data-theme="light"] .hero-glass-card,
html[data-theme="light"] :is(.card,.product-card,.timeline-card,.team-card-v18,.team-card-v20,.contact-card-main-v20,.contact-context-v20,.vision-focus-v20,.vision-focus-v19,.story-flow-item-v14,.split-highlight-v14){
  background:var(--v22-light-surface) !important;
  color:var(--v22-light-text) !important;
  border:1px solid var(--v22-light-line) !important;
  box-shadow:0 20px 60px rgba(15,23,42,.08) !important;
  backdrop-filter:none !important;
}
html[data-theme="light"] .hero-logo-lockup :is(span,strong,small),
html[data-theme="light"] .hero-glass-card :is(span,strong,small,p){ color:var(--v22-light-text) !important; text-shadow:none !important; }
html[data-theme="light"] .hero-glass-card span{ color:var(--v22-light-muted) !important; }

/* Partner logos: same visual scale, no cropped zoom. */
.partner-logos-v18{ align-items:stretch !important; }
.partner-logo-card-v18{
  background:#fff !important;
  padding:10px !important;
  min-height:126px !important;
  overflow:hidden !important;
  display:grid !important;
  place-items:center !important;
  border-radius:20px !important;
  border:1px solid rgba(15,23,42,.09) !important;
}
.partner-logo-card-v18 img{
  width:82% !important;
  max-width:190px !important;
  height:72px !important;
  max-height:72px !important;
  object-fit:contain !important;
  transform:none !important;
  margin:auto !important;
}
.partner-logo-card-v18:hover img{ transform:scale(1.04) !important; }
.partner-logo-card-v18 img[src*="uvsq"]{ max-width:168px !important; max-height:64px !important; }
.partner-logo-card-v18 img[src*="french-tech"]{ max-width:180px !important; max-height:68px !important; }

/* Team portraits use the final validated WebP files. */
.team-card-v18 img,
.team-card-v20 img,
.team-card img{ width:132px !important; height:132px !important; object-fit:cover !important; object-position:center center !important; filter:grayscale(1) contrast(1.04) !important; }
.team-modal-card-v18 img{ object-fit:cover !important; object-position:center center !important; filter:grayscale(1) contrast(1.04) !important; }

/* Dashboard/Admin renamed visually as user management and stable on desktop/mobile. */
.dashboard-page{ background:var(--v22-dark-bg) !important; color:var(--v22-dark-text) !important; }
.dashboard-page :is(h1,h2,h3,h4,strong,label,legend,th,td,a,button){ color:var(--v22-dark-text) !important; text-shadow:none !important; }
.dashboard-page :is(p,small,em,span,li){ color:var(--v22-dark-muted) !important; text-shadow:none !important; }
.dashboard-page .eyebrow{ color:var(--v22-cyan) !important; }
.dashboard-page .sidebar{ background:#050c19 !important; color:var(--v22-dark-text) !important; border-color:rgba(180,210,255,.16) !important; }
.dashboard-page .sidebar :is(strong,a,button,span){ color:var(--v22-dark-text) !important; }
.dashboard-page .sidebar :is(small,p){ color:var(--v22-dark-muted) !important; }
.dashboard-page :is(.dashboard-card,.dashboard-topbar,.admin-hero-v20,.admin-list-card-v20,.admin-form-card-v20){ background:rgba(7,18,37,.96) !important; border:1px solid rgba(180,210,255,.18) !important; box-shadow:0 22px 70px rgba(0,0,0,.30) !important; }
html[data-theme="light"] .dashboard-page{ background:#eef8ff !important; color:var(--v22-light-text) !important; }
html[data-theme="light"] .dashboard-page :is(h1,h2,h3,h4,strong,label,legend,th,td,a,button){ color:var(--v22-light-text) !important; text-shadow:none !important; }
html[data-theme="light"] .dashboard-page :is(p,small,em,span,li){ color:var(--v22-light-muted) !important; text-shadow:none !important; }
html[data-theme="light"] .dashboard-page .eyebrow{ color:var(--v22-blue) !important; }
html[data-theme="light"] .dashboard-page .sidebar{ background:#fff !important; color:var(--v22-light-text) !important; border-color:var(--v22-light-line) !important; box-shadow:10px 0 38px rgba(15,23,42,.07) !important; }
html[data-theme="light"] .dashboard-page .sidebar :is(strong,a,button,span){ color:var(--v22-light-text) !important; }
html[data-theme="light"] .dashboard-page .sidebar :is(small,p){ color:var(--v22-light-muted) !important; }
html[data-theme="light"] .dashboard-page :is(.dashboard-card,.dashboard-topbar,.admin-hero-v20,.admin-list-card-v20,.admin-form-card-v20){ background:#fff !important; border:1px solid var(--v22-light-line) !important; box-shadow:0 18px 50px rgba(15,23,42,.08) !important; }
html[data-theme="light"] .user-avatar-v20,
html[data-theme="light"] .user-pill-v20 b{ color:#fff !important; }

.users-table-v20{ width:100% !important; min-width:0 !important; table-layout:auto !important; border-spacing:0 !important; }
.users-table-v20 th{ white-space:nowrap !important; }
.users-table-v20 td{ overflow-wrap:anywhere !important; }
.users-table-v20 th:nth-child(1), .users-table-v20 td:nth-child(1){ width:30% !important; }
.users-table-v20 th:nth-child(2), .users-table-v20 td:nth-child(2){ width:26% !important; }
.users-table-v20 th:nth-child(3), .users-table-v20 td:nth-child(3){ width:20% !important; }
.users-table-v20 th:nth-child(4), .users-table-v20 td:nth-child(4){ width:13% !important; }
.users-table-v20 th:nth-child(5), .users-table-v20 td:nth-child(5){ width:11% !important; }
.admin-user-form-v20{ grid-template-columns:repeat(2,minmax(0,1fr)) !important; }

/* Mobile admin: table becomes readable cards instead of a huge horizontal table. */
@media (max-width:760px){
  .dashboard-main{ padding-left:16px !important; padding-right:16px !important; }
  .admin-hero-v20{ align-items:flex-start !important; }
  .admin-hero-actions{ width:100% !important; display:flex !important; flex-wrap:wrap !important; }
  .admin-user-form-v20{ grid-template-columns:1fr !important; }
  .users-table-wrap-v20{ overflow:visible !important; }
  .users-table-v20, .users-table-v20 tbody, .users-table-v20 tr, .users-table-v20 td{ display:block !important; width:100% !important; }
  .users-table-v20 thead{ display:none !important; }
  .users-table-v20 tr{ margin:0 0 14px !important; padding:14px !important; border-radius:20px !important; background:rgba(8,19,37,.78) !important; border:1px solid rgba(180,210,255,.14) !important; }
  html[data-theme="light"] .users-table-v20 tr{ background:#fff !important; border-color:var(--v22-light-line) !important; box-shadow:0 14px 35px rgba(15,23,42,.06) !important; }
  .users-table-v20 td{ padding:10px 0 !important; border:0 !important; background:transparent !important; display:grid !important; grid-template-columns:118px minmax(0,1fr) !important; gap:12px !important; align-items:start !important; }
  .users-table-v20 td::before{ content:attr(data-label); font-size:.72rem !important; text-transform:uppercase !important; letter-spacing:.08em !important; font-weight:950 !important; color:var(--v22-cyan) !important; }
  html[data-theme="light"] .users-table-v20 td::before{ color:var(--v22-blue) !important; }
  .user-cell-v20{ min-width:0 !important; }
  .permission-pills-v20{ justify-content:flex-start !important; }
  .row-actions-v20{ justify-content:flex-start !important; }
}

@media (max-width:560px){
  .site-header-v20{ width:calc(100% - 24px) !important; }
  .language-switcher-v20,.theme-switch-v20,.account-button-v20,.menu-button-v20{ width:36px !important; min-width:36px !important; height:36px !important; }
  .users-table-v20 td{ grid-template-columns:1fr !important; gap:6px !important; }
}
