/* ==========================================================================
   IT'S A VISIT — Feuille de style unique du portail
   Un seul site, trois vues. Les composants communs (menu, barre de filtres,
   vignette, fiche, pied de page) sont écrits UNE fois et se colorent tout
   seuls grâce aux jetons de thème redéfinis par vue.
   ========================================================================== */

:root{
  --iav-navy:#101a3d;
  --iav-navy-2:#1b2a5e;
  --iav-ink:#0b1020;
  --iav-red:#c8102e;
  --iav-gold:#e0a94a;
  --iav-teal:#12968c;

  --iav-sans:"Helvetica Neue",Helvetica,Arial,"Segoe UI",system-ui,sans-serif;
  --iav-serif:Georgia,"Times New Roman",serif;

  --iav-radius:14px;
  --iav-shadow:0 1px 2px rgba(16,26,61,.06),0 8px 24px rgba(16,26,61,.08);
  --iav-shadow-lg:0 20px 60px rgba(11,16,32,.28);
  --iav-header-h:64px;

  /* Gabarit natif des logos : 524 x 235 px */
  --iav-logo-ratio:524 / 235;

  /* Jetons de thème — valeurs par défaut, redéfinies par vue ci-dessous */
  --bg:#f5f6fa;
  --fg:#101a3d;
  --panel:#ffffff;
  --panel-2:#ffffff;
  --line:#dfe3ee;
  --muted:#66708f;
  --accent:var(--iav-red);
  --bar:rgba(255,255,255,.96);
}

/* --------------------------------------------------------- Thèmes de vue */
body.theme-sombre{
  --bg:#0b1020;
  --fg:#ffffff;
  --panel:rgba(255,255,255,.07);
  --panel-2:rgba(255,255,255,.1);
  --line:rgba(255,255,255,.15);
  --muted:rgba(255,255,255,.62);
  --accent:var(--iav-gold);
  --bar:rgba(11,16,32,.92);
}
body.theme-clair{
  --bg:#f5f6fa;
  --fg:#101a3d;
  --panel:#ffffff;
  --panel-2:#ffffff;
  --line:#dfe3ee;
  --muted:#66708f;
  --accent:var(--iav-red);
  --bar:rgba(255,255,255,.96);
}
body.theme-creme{
  --bg:#faf9f7;
  --fg:#1b1a17;
  --panel:#ffffff;
  --panel-2:#ffffff;
  --line:#e6e2da;
  --muted:#8a8377;
  --accent:#b8452f;
  --bar:rgba(250,249,247,.95);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;font-family:var(--iav-sans);
  color:var(--fg);background:var(--bg);
  -webkit-font-smoothing:antialiased;
  transition:background-color .45s ease,color .45s ease;
}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit}

.iav-skip{position:absolute;left:-9999px;top:0;z-index:999;background:var(--iav-navy);color:#fff;padding:10px 16px}
.iav-skip:focus{left:0}
.iav-wrap{max-width:1600px;margin:0 auto;padding:0 clamp(14px,3vw,34px)}
.iav-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* -------------------------------------------------------------------- Menu */
.iav-header{
  position:sticky;top:0;z-index:120;height:var(--iav-header-h);
  display:flex;align-items:center;gap:18px;padding:0 clamp(14px,3vw,34px);
  background:rgba(16,26,61,.94);backdrop-filter:saturate(140%) blur(12px);
  color:#fff;border-bottom:1px solid rgba(255,255,255,.12);
}
.iav-header__brand{display:flex;align-items:baseline;gap:8px;text-decoration:none;
  font-weight:800;letter-spacing:-.02em;font-size:19px;white-space:nowrap}
.iav-header__brand em{font-style:normal;color:var(--iav-gold)}
.iav-header__tag{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(255,255,255,.62);padding-left:12px;border-left:1px solid rgba(255,255,255,.22)}
.iav-nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.iav-nav a{text-decoration:none;font-size:13.5px;font-weight:600;padding:8px 12px;
  border-radius:999px;color:rgba(255,255,255,.82);transition:background .18s,color .18s}
.iav-nav a:hover{background:rgba(255,255,255,.12);color:#fff}
.iav-nav a[aria-current="page"]{background:var(--iav-red);color:#fff}
/* ------------------------------------------------------ Sélecteur de langue */
.iav-lang{
  display:flex;gap:2px;padding:3px;margin-left:14px;flex:0 0 auto;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:999px;
}
.iav-lang__btn{
  display:flex;align-items:center;gap:6px;text-decoration:none;
  padding:4px 9px 4px 5px;border-radius:999px;
  color:rgba(255,255,255,.72);transition:background .18s,color .18s;
}
.iav-lang__btn:hover{background:rgba(255,255,255,.14);color:#fff}
.iav-lang__btn[aria-current="true"]{background:#fff;color:var(--iav-navy)}
.iav-lang__flag{
  display:block;width:22px;height:11px;border-radius:2px;overflow:hidden;
  box-shadow:0 0 0 1px rgba(0,0,0,.28);flex:0 0 auto;
}
.iav-lang__flag svg{display:block;width:100%;height:100%}
.iav-lang__code{font-size:11px;font-weight:800;letter-spacing:.06em}
@media(max-width:560px){
  .iav-lang__code{display:none}
  .iav-lang__btn{padding:5px 7px}
}

@media(max-width:900px){
  .iav-header__tag{display:none}
  .iav-nav{gap:0;overflow-x:auto;scrollbar-width:none}
  .iav-nav::-webkit-scrollbar{display:none}
  .iav-nav a{padding:8px 10px;font-size:12.5px}
}

/* ------------------------------------------------------------------- Hero */
.iav-hero{
  padding:clamp(34px,5.4vw,74px) 0 clamp(22px,3vw,34px);
  position:relative;overflow:hidden;
  border-bottom:1px solid var(--line);
  transition:background .45s ease;
}
body.theme-sombre .iav-hero{
  background:
    radial-gradient(1100px 460px at 10% -12%,rgba(200,16,46,.34),transparent 62%),
    radial-gradient(900px 420px at 92% 0%,rgba(224,169,74,.24),transparent 60%),
    linear-gradient(180deg,#141d40 0%,var(--iav-ink) 100%);
}
body.theme-clair .iav-hero{background:#fff}
body.theme-creme .iav-hero{background:#fff}

.iav-hero h1{
  margin:0 0 12px;font-size:clamp(32px,6vw,74px);line-height:1.0;
  letter-spacing:-.042em;font-weight:800;max-width:17ch;
}
.iav-hero h1 em{font-style:normal;color:var(--accent)}
body.theme-creme .iav-hero h1{font-family:var(--iav-serif);font-weight:400;letter-spacing:-.03em;max-width:22ch}
body.theme-creme .iav-hero h1 em{font-style:italic}
.iav-hero p.lead{
  margin:0 0 26px;max-width:70ch;font-size:clamp(15px,1.4vw,17.5px);
  line-height:1.66;color:var(--muted);
}
.iav-hero p.lead strong{color:var(--fg)}

.iav-kpis{display:flex;flex-wrap:wrap;gap:10px}
.iav-kpi{
  display:flex;flex-direction:column;gap:2px;padding:10px 16px;border-radius:12px;min-width:104px;
  background:var(--panel);border:1px solid var(--line);
}
.iav-kpi b{font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.1;color:var(--accent)}
.iav-kpi span{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}

/* --------------------------------------------------- Sélecteur de vue */
.vue-bar{
  position:sticky;top:var(--iav-header-h);z-index:100;
  background:var(--bar);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  transition:background .45s ease,border-color .45s ease;
}
.vue-bar__inner{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:10px 0}

.vue-switch{
  position:relative;display:flex;gap:2px;padding:4px;border-radius:999px;
  background:var(--panel);border:1px solid var(--line);
}
.vue-switch__btn{
  position:relative;z-index:2;display:flex;align-items:center;gap:10px;
  border:0;background:transparent;cursor:pointer;border-radius:999px;
  padding:8px 16px 8px 12px;color:var(--muted);transition:color .25s;
}
.vue-switch__btn:hover{color:var(--fg)}
.vue-switch__btn[aria-pressed="true"]{color:#fff}
body.theme-sombre .vue-switch__btn[aria-pressed="true"]{color:#231a05}
.vue-switch__ico{width:19px;height:19px;flex:0 0 auto;display:block}
.vue-switch__ico svg{width:100%;height:100%;display:block}
.vue-switch__txt{display:flex;flex-direction:column;line-height:1.15;text-align:left}
.vue-switch__txt b{font-size:13.5px;font-weight:700;letter-spacing:-.01em}
.vue-switch__txt i{font-size:10.5px;font-style:normal;opacity:.72}
.vue-switch__glide{
  position:absolute;top:4px;bottom:4px;left:0;border-radius:999px;z-index:1;
  background:var(--accent);
  transition:transform .38s cubic-bezier(.34,1.3,.42,1),width .38s cubic-bezier(.34,1.3,.42,1),background .45s;
}
@media(max-width:720px){
  .vue-switch__txt i{display:none}
  .vue-switch__btn{padding:9px 14px}
}

.vue-bar__hint{margin-left:auto;font-size:11.5px;color:var(--muted);white-space:nowrap}
.vue-bar__hint kbd{
  font:inherit;font-size:10.5px;font-weight:700;padding:2px 6px;border-radius:5px;
  background:var(--panel-2);border:1px solid var(--line);
}
@media(max-width:900px){.vue-bar__hint{display:none}}

/* ------------------------------------------------- Barre de filtres commune */
.f-bar{
  border-bottom:1px solid var(--line);background:var(--bar);
  position:sticky;top:calc(var(--iav-header-h) + 59px);z-index:90;
  backdrop-filter:blur(14px);transition:background .45s ease,border-color .45s ease;
}
.f-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px 0}
.f-row + .f-row{border-top:1px solid var(--line);padding-top:9px}

.f-search{position:relative;flex:1 1 230px;min-width:190px;max-width:400px}
.f-search input{
  width:100%;padding:10px 38px 10px 37px;border-radius:999px;
  border:1px solid var(--line);background:var(--panel);font-size:14px;color:var(--fg);
  outline:none;transition:border-color .18s,box-shadow .18s,background .45s;
}
.f-search input::placeholder{color:var(--muted)}
.f-search input:focus{border-color:var(--accent)}
.f-search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;opacity:.5;pointer-events:none}
.f-search__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);
  border:0;background:transparent;cursor:pointer;opacity:.45;padding:6px;line-height:0;color:inherit}
.f-search__clear:hover{opacity:1}

.f-select{
  appearance:none;border:1px solid var(--line);background-color:var(--panel);border-radius:999px;
  padding:9px 32px 9px 14px;font-size:13px;font-weight:600;color:var(--fg);cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;background-size:14px;
  transition:background-color .45s,border-color .18s;
}
.f-select:focus{outline:none;border-color:var(--accent)}
.f-select option{color:#101a3d;background:#fff}

.f-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;cursor:pointer;user-select:none;white-space:nowrap}
.f-toggle input{position:absolute;opacity:0;pointer-events:none}
.f-toggle i{width:36px;height:20px;border-radius:999px;background:var(--line);position:relative;transition:background .18s;flex:0 0 auto}
.f-toggle i::after{content:"";position:absolute;top:2.5px;left:2.5px;width:15px;height:15px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .18s}
.f-toggle input:checked + i{background:var(--iav-teal)}
.f-toggle input:checked + i::after{transform:translateX(16px)}

.f-range{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted);white-space:nowrap}
.f-range input[type=range]{width:92px;accent-color:var(--accent)}

.f-alpha{display:flex;gap:2px;flex-wrap:wrap;align-items:center}
.f-alpha__label{font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);margin-right:6px;font-weight:700}
.f-alpha button{
  width:26px;height:26px;border-radius:7px;border:1px solid transparent;background:transparent;
  font-size:12.5px;font-weight:700;cursor:pointer;color:var(--fg);transition:all .14s;
}
.f-alpha button:hover:not(:disabled){background:var(--panel);border-color:var(--line)}
.f-alpha button[aria-pressed="true"]{background:var(--accent);color:#fff}
body.theme-sombre .f-alpha button[aria-pressed="true"]{color:#231a05}
.f-alpha button:disabled{opacity:.22;cursor:default}

.f-count{margin-left:auto;font-size:12.5px;color:var(--muted);white-space:nowrap}
.f-count b{color:var(--fg);font-size:15px;font-weight:800}

.f-active{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12.5px;color:var(--muted)}
.f-active button{
  border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:999px;
  padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;gap:6px;align-items:center;
}
body.theme-sombre .f-active button{color:#231a05}
.f-active button.is-reset{background:transparent;color:var(--fg);border-color:var(--line)}
.f-active button:hover{opacity:.86}

#f-viewctrl{display:flex;gap:10px;align-items:center;flex-wrap:wrap}

/* Puces génériques */
.iav-chips{display:flex;flex-wrap:wrap;gap:6px}
.iav-chip{
  border:1px solid var(--line);background:var(--panel);color:var(--fg);
  padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:600;
  cursor:pointer;transition:all .16s;white-space:nowrap;
}
.iav-chip:hover{border-color:var(--accent)}
.iav-chip[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#fff}
body.theme-sombre .iav-chip[aria-pressed="true"]{color:#231a05}

/* ------------------------------------------------------ Vignette de logo */
.iav-logo{position:relative;width:100%;aspect-ratio:var(--iav-logo-ratio);background:#fff;overflow:hidden}
.iav-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .3s ease}
.iav-logo img.is-hidden{opacity:0}
.iav-logo__ph{
  position:absolute;inset:0;display:grid;place-items:center;
  background:linear-gradient(100deg,#f2f4fa 25%,#e8ebf5 37%,#f2f4fa 63%);
  background-size:400% 100%;animation:iav-shimmer 1.3s linear infinite;
}
@keyframes iav-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}
.iav-logo__ph.is-error{
  animation:none;background:repeating-linear-gradient(45deg,#f7f8fc,#f7f8fc 7px,#eef0f7 7px,#eef0f7 14px);
  color:#9aa2b8;font-size:10px;font-weight:600;text-align:center;padding:0 8px;word-break:break-all;line-height:1.3;
}

.iav-badge{display:inline-flex;align-items:center;gap:4px;font-size:9.5px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:5px}
.iav-badge--anim{background:rgba(18,150,140,.14);color:#0c6f68}
.iav-badge--soon{background:rgba(224,169,74,.2);color:#8a6412}
.iav-badge--todo{background:rgba(200,16,46,.12);color:var(--iav-red)}

/* ------------------------------------------------------- Charger la suite */
.iav-more{display:grid;place-items:center;padding:34px 0 8px}
.iav-more button{
  border:1px solid var(--line);background:var(--panel);color:var(--fg);border-radius:999px;
  padding:11px 26px;font-size:13.5px;font-weight:700;cursor:pointer;
  transition:transform .16s,border-color .16s;
}
.iav-more button:hover{transform:translateY(-1px);border-color:var(--accent)}
.iav-empty{padding:70px 20px;text-align:center;color:var(--muted);font-size:15px}
.iav-empty b{display:block;font-size:19px;color:var(--fg);margin-bottom:6px}

/* ------------------------------------------------------------ Fiche détail */
.iav-modal{position:fixed;inset:0;z-index:400;display:none;align-items:center;justify-content:center;
  padding:20px;background:rgba(11,16,32,.78);backdrop-filter:blur(6px)}
.iav-modal.is-open{display:flex}
.iav-modal__card{background:#fff;color:var(--iav-navy);border-radius:18px;overflow:hidden;
  width:min(720px,100%);box-shadow:var(--iav-shadow-lg);animation:iav-pop .22s ease}
@keyframes iav-pop{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.iav-modal__visual{background:#fff;border-bottom:1px solid #dfe3ee;padding:26px}
.iav-modal__body{padding:20px 26px 26px}
.iav-modal__body h2{margin:0 0 4px;font-size:24px;letter-spacing:-.02em}
.iav-modal__dom{color:#66708f;font-size:14px;margin:0 0 16px}
.iav-modal__meta{display:grid;gap:10px 22px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));font-size:13px;margin-bottom:18px}
.iav-modal__meta dt{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:#66708f;margin-bottom:2px}
.iav-modal__meta dd{margin:0;font-weight:600}
.iav-modal__swatches{display:flex;gap:6px;margin-top:4px}
.iav-modal__swatches i{width:22px;height:22px;border-radius:6px;border:1px solid #dfe3ee}
.iav-modal__actions{display:flex;gap:10px;flex-wrap:wrap}
.iav-btn{display:inline-flex;align-items:center;gap:7px;text-decoration:none;cursor:pointer;
  padding:10px 18px;border-radius:999px;font-size:13.5px;font-weight:700;border:1px solid transparent}
.iav-btn--primary{background:var(--iav-navy);color:#fff}
.iav-btn--primary:hover{background:var(--iav-navy-2)}
.iav-btn--ghost{border-color:#dfe3ee;background:#fff;color:var(--iav-navy)}
.iav-btn--ghost:hover{border-color:var(--iav-navy-2)}
.iav-modal__close{position:absolute;top:16px;right:18px;width:38px;height:38px;border-radius:50%;
  border:0;background:rgba(255,255,255,.16);color:#fff;font-size:20px;cursor:pointer}
.iav-modal__close:hover{background:rgba(255,255,255,.3)}

/* ------------------------------------------------------------- Bloc SEO */
.iav-seo{margin-top:48px;padding:40px 0;background:var(--panel-2);border-top:1px solid var(--line)}
body.theme-sombre .iav-seo{background:rgba(255,255,255,.04)}
.iav-seo h2{margin:0 0 10px;font-size:21px;letter-spacing:-.02em}
.iav-seo p{margin:0 0 18px;max-width:80ch;font-size:14.5px;line-height:1.7;color:var(--muted)}
.iav-seo__links{display:flex;flex-wrap:wrap;gap:7px}
.iav-seo__links a{text-decoration:none;font-size:12.5px;font-weight:600;padding:6px 12px;border-radius:999px;
  border:1px solid var(--line);background:var(--panel);color:var(--fg);transition:border-color .16s}
.iav-seo__links a:hover{border-color:var(--accent)}
.iav-seo__links a b{opacity:.5;font-weight:600;margin-left:4px}

/* ------------------------------------------------------------------ Footer */
.iav-footer{
  background:var(--iav-ink);color:rgba(255,255,255,.72);
  padding:52px clamp(16px,4vw,48px) 34px;font-size:13.5px;line-height:1.65;
}
.iav-footer__grid{max-width:1320px;margin:0 auto;display:grid;gap:34px;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.iav-footer h3{margin:0 0 12px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--iav-gold);font-weight:700}
.iav-footer ul{margin:0;padding:0;list-style:none}
.iav-footer li{margin-bottom:7px}
.iav-footer a{text-decoration:none;transition:color .18s}
.iav-footer a:hover{color:#fff;text-decoration:underline}
.iav-footer__base{max-width:1320px;margin:34px auto 0;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);
  display:flex;flex-wrap:wrap;gap:12px 22px;justify-content:space-between;font-size:12.5px;color:rgba(255,255,255,.5)}

/* ------------------------------------------------------------ Accessibilité */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;transition-duration:.001ms !important}
  html{scroll-behavior:auto}
}
