/* ============================================================
   PLATEFORME ACADÉMIQUE — PAGE D'ACCUEIL
   Palette : Blanc / Bleu #1D5394
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root{
  --primary:      #1D5394;
  --primary-dark: #123B6C;
  --primary-light:#EAF1FA;
  --primary-mid:  #4C7CB0;
  --ink:          #1D5394;
  --ivory:        #FFFFFF;
  --paper:        #FFFFFF;
  --gold:         #1D5394;
  --gold-dark:    #123B6C;
  --garnet:       #123B6C;
  --toge:         #1D5394;
  --muted:        #5B6472;
  --line:         #DCE3EC;

  --serif: 'Fraunces', Georgia, serif;
  --sans:  'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --mono:  'IBM Plex Mono', 'Courier New', monospace;

  --radius: 3px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--ivory);
  color:var(--primary-dark);
  font-family:var(--sans);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3{ font-family:var(--serif); font-weight:600; margin:0; color:var(--primary-dark); }
p{ margin:0; }
a{ color:inherit; text-decoration:none; }
img{ max-width:100%; display:block; }
button{ font-family:var(--sans); cursor:pointer; border:none; background:none; }

.eyebrow{
  font-family:var(--mono);
  font-size:.72rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--primary);
  display:inline-flex;
  align-items:center;
  gap:.5rem;
}
.eyebrow::before{
  content:'';
  width:18px; height:1px;
  background:var(--primary);
  display:inline-block;
}

.wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }
section{ padding:96px 0; }
@media (max-width:720px){ section{ padding:64px 0; } .wrap{ padding:0 20px; } }

.btn{
  display:inline-flex; align-items:center; gap:.5rem;
  padding:14px 26px;
  font-size:.95rem; font-weight:600;
  border-radius:var(--radius);
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
  white-space:nowrap;
}
.btn-primary{ background:var(--primary); color:var(--paper); }
.btn-primary:hover{ background:var(--primary-dark); transform:translateY(-1px); }
.btn-ghost{ border:1px solid var(--primary); color:var(--primary); }
.btn-ghost:hover{ background:var(--primary); color:var(--ivory); }

/* ---------- NAV ---------- */
.site-nav{
  position:sticky; top:0; z-index:50;
  background:rgba(255,255,255,.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line);
}
.site-nav .wrap{ display:flex; align-items:center; justify-content:space-between; height:76px; }
.brand{ display:flex; align-items:center; gap:.6rem; font-family:var(--serif); font-weight:700; font-size:1.15rem; color:var(--primary-dark); }
.brand .seal{
  width:34px; height:34px; border-radius:50%;
  border:1.5px solid var(--primary);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--mono); font-size:.7rem; color:var(--primary);
}
.nav-links{ display:flex; gap:2rem; font-size:.92rem; }
.nav-links a{ position:relative; }
.nav-links a::after{
  content:''; position:absolute; left:0; bottom:-6px; width:0; height:1px; background:var(--primary);
  transition:width .2s ease;
}
.nav-links a:hover::after{ width:100%; }
.nav-cta{ display:flex; gap:.75rem; }
@media (max-width:860px){ .nav-links{ display:none; } }

/* ---------- HERO ---------- */
.hero{ padding-top:72px; overflow:hidden; }
.hero .wrap{ display:grid; grid-template-columns:1.05fr .95fr; gap:64px; align-items:center; }
.hero h1{ font-size:clamp(2.3rem,4.2vw,3.4rem); line-height:1.08; margin:20px 0 22px; letter-spacing:-.01em; color:var(--primary-dark); }
.hero h1 em{ font-style:italic; color:var(--primary); }
.hero .lead{ font-size:1.08rem; color:var(--muted); max-width:46ch; margin-bottom:34px; }
.hero .cta-row{ display:flex; gap:14px; flex-wrap:wrap; }
.hero .stats{ display:flex; gap:36px; margin-top:48px; }
.hero .stats div{ font-family:var(--mono); }
.hero .stats b{ display:block; font-family:var(--serif); font-size:1.6rem; color:var(--primary-dark); }
.hero .stats span{ font-size:.72rem; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; }

.hero-art{ position:relative; aspect-ratio:1/1; }
@media (max-width:900px){
  .hero .wrap{ grid-template-columns:1fr; }
  .hero-art{ order:-1; max-width:340px; margin:0 auto; }
  .hero .stats{ flex-wrap:wrap; row-gap:20px; }
}

/* ---------- GUIDE (parcours en 4 étapes) ---------- */
.guide{ background:var(--primary-dark); color:#FFFFFF; }
.guide .section-head{ max-width:56ch; margin-bottom:56px; }
.guide h2{ color:#FFFFFF; font-size:clamp(1.8rem,3vw,2.4rem); margin-top:14px; }
.guide .section-head p{ color:#C7D7E9; margin-top:14px; }
.guide-steps{
  display:grid; grid-template-columns:repeat(4,1fr); gap:0;
  border-top:1px solid rgba(255,255,255,.2);
}
.guide-step{
  padding:34px 24px 0 0;
  border-right:1px solid rgba(255,255,255,.2);
  position:relative;
}
.guide-step:last-child{ border-right:none; padding-right:0; }
.guide-step .num{
  font-family:var(--mono); font-size:.85rem; color:#8FB6DE;
  display:block; margin-bottom:16px;
}
.guide-step h3{ color:#FFFFFF; font-size:1.15rem; margin-bottom:10px; }
.guide-step p{ color:#BFD2E7; font-size:.92rem; }
@media (max-width:860px){
  .guide-steps{ grid-template-columns:1fr; }
  .guide-step{ border-right:none; border-bottom:1px solid rgba(255,255,255,.2); padding:28px 0; }
  .guide-step:last-child{ border-bottom:none; }
}

/* ---------- REGISTRE DES POSTES — vrai tableau ---------- */
.registre .section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; margin-bottom:36px; }
.registre h2{ font-size:clamp(1.8rem,3vw,2.4rem); margin-top:14px; }

.filter-tabs{ display:flex; gap:8px; border:1px solid var(--line); padding:4px; border-radius:999px; background:var(--paper); }
.filter-tabs button{
  padding:9px 18px; font-size:.85rem; font-weight:600; color:var(--muted); border-radius:999px; transition:.15s;
}
.filter-tabs button.active{ background:var(--primary); color:#FFFFFF; }

.table-scroll{ overflow-x:auto; border:1px solid var(--line); border-radius:var(--radius); }
table.ledger-table{
  width:100%;
  border-collapse:collapse;
  min-width:960px;
  background:var(--paper);
}
table.ledger-table thead th{
  text-align:left;
  font-family:var(--mono);
  font-size:.68rem;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:var(--primary);
  background:var(--primary-light);
  padding:14px 16px;
  border-bottom:1px solid var(--line);
  white-space:nowrap;
}
table.ledger-table tbody td{
  padding:16px;
  font-size:.88rem;
  color:var(--primary-dark);
  border-bottom:1px dashed var(--line);
  vertical-align:top;
}
table.ledger-table tbody tr:hover{ background:var(--primary-light); }
table.ledger-table tbody tr:last-child td{ border-bottom:none; }

.cell-ref{ font-family:var(--mono); font-size:.78rem; color:var(--muted); }
.cell-main strong{ font-family:var(--serif); font-size:1rem; font-weight:600; display:block; }
.cell-main .sub{ color:var(--muted); font-size:.8rem; display:block; margin-top:2px; }
.cell-matieres{ font-size:.82rem; color:var(--muted); }
.cell-matieres span{ display:block; }
.cell-dates{ font-size:.8rem; color:var(--muted); white-space:nowrap; }
.cell-places{ font-family:var(--mono); font-weight:600; text-align:center; }

.badge{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--mono); font-size:.66rem; text-transform:uppercase; letter-spacing:.06em;
  padding:4px 9px; border-radius:999px; width:fit-content;
}
.badge-doctorant{ background:var(--primary-light); color:var(--primary); }
.badge-docteur{ background:var(--primary); color:#FFFFFF; }
.badge-expert{ background:var(--primary-dark); color:#FFFFFF; }

.deadline-tag{
  font-family:var(--mono); font-size:.68rem; padding:3px 8px; border-radius:999px;
  background:var(--primary-light); color:var(--primary); display:inline-block; white-space:nowrap;
}
.deadline-tag.closed{ background:#EDEDED; color:#8A8A8A; }

.ledger-empty{ padding:48px 0; text-align:center; color:var(--muted); font-style:italic; }

@media (max-width:720px){
  table.ledger-table{ min-width:1100px; }
}

/* ---------- DataTables — habillage aux couleurs de la plateforme ---------- */
.dataTables_wrapper{ font-family:var(--sans); }
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_info{
  font-size:.82rem; color:var(--muted); padding:14px 0;
}
.dataTables_wrapper .dataTables_length select{
  border:1px solid var(--line); border-radius:var(--radius); padding:6px 10px;
  font-family:var(--sans); font-size:.85rem; color:var(--primary-dark); background:var(--paper);
  margin:0 6px;
}
.dataTables_wrapper .dataTables_filter{ margin-bottom:16px; }
.dataTables_wrapper .dataTables_filter label{ display:flex; }
.dataTables_wrapper .dataTables_filter input{
  flex:1;
  border:1px solid var(--line); border-radius:999px;
  padding:11px 20px; font-family:var(--sans); font-size:.92rem; color:var(--primary-dark);
  background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235B6472' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E") no-repeat 18px center;
  background-size:16px; padding-left:44px;
  margin-left:0; width:100%;
  transition:border-color .15s ease;
}
.dataTables_wrapper .dataTables_filter input:focus{ outline:none; border-color:var(--primary); }
table.ledger-table.dataTable thead th{
  cursor:pointer;
}
table.ledger-table.dataTable thead th.sorting:after,
table.ledger-table.dataTable thead th.sorting_asc:after,
table.ledger-table.dataTable thead th.sorting_desc:after{
  opacity:.6; font-size:.7em; margin-left:4px;
}
.dataTables_wrapper .dataTables_paginate{
  display:flex; gap:6px; padding:20px 16px; justify-content:flex-end;
}
.dataTables_wrapper .dataTables_paginate .paginate_button{
  padding:7px 13px; border-radius:var(--radius); font-size:.85rem; color:var(--primary-dark);
  border:1px solid var(--line); cursor:pointer;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.current{
  background:var(--primary); color:#FFFFFF; border-color:var(--primary);
}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled{
  opacity:.4; cursor:not-allowed;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:not(.disabled):not(.current):hover{
  background:var(--primary-light); border-color:var(--primary);
}
.dataTables_wrapper .top-controls{
  display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; margin-bottom:8px;
}

/* ---------- TÉMOIGNAGES ---------- */
.temoignages{ background:var(--paper); border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.temoignages .section-head{ text-align:center; max-width:52ch; margin:0 auto 52px; }
.t-track{ display:grid; grid-template-columns:repeat(3,1fr); gap:32px; }
.t-card{
  border:1px solid var(--line); border-radius:var(--radius); padding:32px 28px;
  background:var(--primary-light); position:relative;
}
.t-card .quote-mark{ font-family:var(--serif); font-size:3rem; color:var(--primary); opacity:.5; line-height:1; margin-bottom:6px; }
.t-card p.msg{ font-family:var(--serif); font-style:italic; font-size:1.05rem; color:var(--primary-dark); margin-bottom:24px; }
.t-person{ display:flex; align-items:center; gap:12px; padding-top:18px; border-top:1px solid var(--line); }
.t-avatar{
  width:38px; height:38px; border-radius:50%; border:1px solid var(--primary);
  display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:.72rem; color:var(--primary);
}
.t-person .name{ font-weight:600; font-size:.9rem; }
.t-person .role{ font-size:.78rem; color:var(--muted); }
@media (max-width:900px){ .t-track{ grid-template-columns:1fr; } }

/* ---------- CONTACT ---------- */
.contact .wrap{ display:grid; grid-template-columns:.85fr 1.15fr; gap:64px; }
.contact-info h2{ font-size:clamp(1.8rem,3vw,2.4rem); margin:14px 0 18px; }
.contact-info p.desc{ color:var(--muted); margin-bottom:32px; max-width:40ch; }
.contact-line{ display:flex; gap:14px; padding:16px 0; border-bottom:1px solid var(--line); }
.contact-line .k{ font-family:var(--mono); font-size:.72rem; text-transform:uppercase; color:var(--primary); width:100px; flex-shrink:0; padding-top:2px; }
.contact-line .v{ font-size:.95rem; }

form.contact-form{ display:flex; flex-direction:column; gap:26px; }
.field{ position:relative; }
.field label{ display:block; font-family:var(--mono); font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-bottom:8px; }
.field input, .field select, .field textarea{
  width:100%; border:none; border-bottom:1px solid var(--line); background:transparent;
  padding:10px 2px; font-family:var(--sans); font-size:1rem; color:var(--primary-dark);
  transition:border-color .15s ease;
}
.field textarea{ resize:vertical; min-height:110px; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--primary); }
.field-row{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
@media (max-width:900px){ .contact .wrap{ grid-template-columns:1fr; } .field-row{ grid-template-columns:1fr; } }

/* ---------- FOOTER ---------- */
footer.site-footer{ background:var(--primary-dark); color:#C7D7E9; padding:48px 0; }
footer.site-footer .wrap{ display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px; font-size:.85rem; }
footer.site-footer a:hover{ color:#FFFFFF; }

/* reveal on scroll */
.reveal{ opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease; }
.reveal.is-visible{ opacity:1; transform:none; }

@media (prefers-reduced-motion: reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}

/* focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline:2px solid var(--primary); outline-offset:2px;
}