/* ═══════════════════════════════════════════════════════
   TEMPLATE 2 — "Academic Pro" (preferred)
   Navy topbar. Serif headings (EB Garamond). IBM Plex body.
   Clean ruled lines. Publication-style aesthetic.
═══════════════════════════════════════════════════════ */
@import url('base.css');
@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=IBM+Plex+Sans:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400;600&display=swap');

:root {
  --font-body:'IBM Plex Sans',sans-serif;
  --font-serif:'EB Garamond',Georgia,serif;
  --font-mono:'IBM Plex Mono',monospace;
  --g1:#1a3a5c; --g2:#2c6e9e; --accent:#1a3a5c; --accent2:#2c6e9e;
  --r-sm:3px; --r-md:5px; --r-lg:6px; --tr:.2s ease;
}
:root,[data-theme="light"]{
  --bg:#fafaf8; --bg-card:#fff; --bg-widget:#fff;
  --bg-top:#1a3a5c;
  --text:#1a1a2e; --muted:#4a5568; --light:#718096;
  --border:#e2e4e9; --shadow:0 2px 8px rgba(0,0,0,.07);
  --shadow-h:0 4px 16px rgba(0,0,0,.12); --badge:#f3f5f9;
  --input:#fff; --input-b:#cbd5e0; --sep:#e2e4e9; --cbg:#f8f9fc;
  --nav-text:#e8edf7; --nav-muted:#7a9bbf;
}
[data-theme="dark"]{
  --bg:#111218; --bg-card:#1c1e28; --bg-widget:#1c1e28;
  --bg-top:#0d1320;
  --text:#dde2ec; --muted:#8895b0; --light:#5a6880;
  --border:#2a3048; --shadow:0 2px 12px rgba(0,0,0,.4);
  --shadow-h:0 6px 20px rgba(0,0,0,.5); --badge:#222536;
  --input:#1c1e28; --input-b:#2a3048; --sep:#2a3048; --cbg:#1a1c26;
  --nav-text:#c8d4e8; --nav-muted:#5a7090;
}
body { font-family:var(--font-body);background:var(--bg);color:var(--text);line-height:1.7;font-size:15px;transition:background var(--tr),color var(--tr); }
a { color:var(--accent2);text-decoration:none; } a:hover { text-decoration:underline; }
strong { color:var(--accent);font-weight:600; }

/* TOPBAR — dark navy bar */
.topbar { position:fixed;top:0;left:0;right:0;z-index:1000;background:var(--bg-top);box-shadow:0 1px 4px rgba(0,0,0,.2);padding:0 2rem; }
.topbar__inner { max-width:1400px;margin:0 auto;display:flex;align-items:center;height:52px;gap:1rem; }
.topbar__brand { cursor:pointer;margin-right:.5rem; }
.topbar__name { font-family:var(--font-serif);font-size:1.05rem;font-weight:600;color:var(--nav-text);letter-spacing:.01em; }
.topbar__role { font-size:.6rem;color:var(--nav-muted);letter-spacing:.08em;text-transform:uppercase;display:block; }
.topbar__nav { display:flex;align-items:stretch;height:52px; }
.nav-btn { background:none;border:none;border-bottom:2px solid transparent;padding:0 .85rem;font-size:.75rem;font-weight:500;font-family:var(--font-body);color:var(--nav-muted);cursor:pointer;letter-spacing:.06em;text-transform:uppercase;transition:all var(--tr);white-space:nowrap; }
.nav-btn:hover { color:var(--nav-text); }
.nav-btn--active { color:var(--nav-text);border-bottom-color:#4a8fc4; }
.nav-btn--ext { color:#7ab8c4; }
.nav-btn--ext:hover { color:var(--nav-text);border-bottom-color:#7ab8c4; }
.topbar__hamburger { display:none;background:none;border:none;font-size:1.3rem;cursor:pointer;color:var(--nav-text); }
.topbar__controls { display:flex;align-items:center;gap:.35rem;margin-left:auto; }
.ctrl-btn { background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:3px;padding:.28rem .5rem;font-size:.8rem;cursor:pointer;color:var(--nav-muted);transition:all var(--tr); }
.ctrl-btn:hover { background:rgba(255,255,255,.14);color:var(--nav-text); }
.tpl-switcher { display:flex;gap:.2rem; }
.tpl-btn { min-width:26px;text-align:center;font-family:var(--font-mono); }
.tpl-btn.active { background:rgba(74,143,196,.35);border-color:rgba(74,143,196,.6);color:var(--nav-text); }
.main { margin-top:52px;padding:2rem; }

/* HERO */
.hero__photo { border:2px solid var(--border);box-shadow:var(--shadow);border-radius:0; filter:grayscale(5%); }
.hero__name { font-family:var(--font-serif);font-size:2rem;font-weight:700;color:var(--accent);letter-spacing:-.01em;margin-bottom:.2rem; }
.hero__title { font-size:.82rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:.2rem; }
.hero__sub { font-size:.85rem;color:var(--muted);margin-bottom:.4rem; }
.hero__contacts { color:var(--light); }
.backlink { padding:.3rem;border:1px solid var(--border);background:var(--badge);transition:all var(--tr);text-decoration:none; }
.backlink:hover { border-color:var(--accent2); }

/* HOME PANELS */
.home-panel { background:var(--bg-card);border:1px solid var(--border);padding:1.2rem;box-shadow:var(--shadow); }
.home-panel--news { border-top:3px solid var(--accent2); }
.home-panel__title { font-family:var(--font-serif);font-size:1.05rem;font-weight:600;color:var(--accent);margin-bottom:.65rem; }
.home-panel__text { font-size:.87rem;color:var(--muted);line-height:1.75; }
.panel-link-btn { color:var(--accent2);font-size:.8rem;margin-top:.55rem;font-family:var(--font-body); }

/* NEWS */
.news-item { border:1px solid var(--border);overflow:hidden;margin-bottom:.45rem; }
.news-item summary { padding:.5rem .8rem;background:var(--badge);font-size:.8rem; }
.news-item p { font-size:.8rem;color:var(--muted);padding:.55rem .8rem; }
.news-link { display:block;padding:.25rem .8rem .55rem;font-size:.78rem;font-weight:600;color:var(--accent2); }
.anr-chip { display:inline-flex;align-items:center;gap:.25rem;padding:.18rem .55rem;font-size:.7rem;font-weight:600;border:1px solid var(--border);text-decoration:none;transition:border-color var(--tr); }
.anr-chip:hover { border-color:var(--accent2); }
.anr-chip--active  { border-color:rgba(29,209,161,.5);color:#1a7a60; }
.anr-chip--pending { border-color:rgba(200,169,106,.5);color:#8a6a10; }
.anr-chip--project { color:var(--muted); }
[data-theme="dark"] .anr-chip--active  { color:#1dd1a1; }
[data-theme="dark"] .anr-chip--pending { color:#c8a96a; }

/* SLIDES */
.slide-badge { display:inline-block;padding:.1rem .42rem;font-size:.66rem;font-weight:700;color:#fff;letter-spacing:.04em;text-transform:uppercase; }
.slide-badge--venue { background:var(--accent); }
.slide-badge--conf  { background:#c0392b; }
.slide-dl { display:inline-block;padding:.18rem .52rem;font-size:.72rem;font-weight:700;border:1px solid;text-decoration:none;font-family:var(--font-mono);transition:all var(--tr); }
.slide-dl--tex { color:#1a7a60;border-color:#1a7a60; } .slide-dl--tex:hover { background:#1a7a60;color:#fff; }
.slide-dl--pdf { color:var(--accent2);border-color:var(--accent2); } .slide-dl--pdf:hover { background:var(--accent2);color:#fff; }

/* WIDGETS */
.widget { background:var(--bg-widget);border:1px solid var(--border);padding:1.1rem 1.3rem;box-shadow:var(--shadow); }
.widget--small { padding:.6rem 1rem; }
.widget--perso { border-top:3px solid var(--accent2); }
.widget__title { font-family:var(--font-serif);font-size:.98rem;font-weight:600;color:var(--accent);margin-bottom:.65rem; }
.widget__title small a { font-size:.65rem;font-family:var(--font-body);color:var(--light);font-weight:400; }
.widget__subtitle { font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--light);margin:.5rem 0 .22rem; }
.widget__text { font-size:.81rem;color:var(--muted);line-height:1.68;margin-bottom:.35rem;text-align:justify; }
.widget__text--muted { font-size:.73rem;color:var(--light); }

/* BUS / JORF / MUSIC */
.bus-info { margin-top:.35rem; } .bus-dir { color:var(--light); } .bus-times { color:var(--text);font-family:var(--font-mono); }
.jorf-btn { background:var(--accent);color:#fff;border:none;width:22px;height:22px;cursor:pointer;font-weight:700;font-size:.85rem;transition:opacity var(--tr); }
.jorf-btn:hover { opacity:.8; } .jorf-btn:disabled { opacity:.35;cursor:not-allowed; }
.jorf-date { color:var(--muted);font-family:var(--font-mono); }
.jorf-item { color:var(--muted);padding-left:.5rem;border-left:2px solid var(--border); } .jorf-item a { color:var(--accent2);text-decoration:none; }
.music-placeholder__text { color:var(--muted);font-style:italic;font-size:.8rem; }
.music-btn { background:var(--badge);color:var(--text);border:1px solid var(--border);padding:.3rem .65rem;cursor:pointer;font-size:.75rem;transition:all var(--tr);font-family:var(--font-body); }
.music-btn:hover { border-color:var(--accent2); } .music-btn.active { background:var(--accent);color:#fff; }
.music-volume { color:var(--muted); }

/* PASSCODE */
.passcode-input { border:1px solid var(--input-b);background:var(--input);color:var(--text);font-family:var(--font-mono);transition:border var(--tr); }
.passcode-input:focus { border-color:var(--accent2); }

/* BUTTONS */
.btn { border:none;cursor:pointer;font-family:var(--font-body);font-weight:600;font-size:.8rem;padding:.4rem 1rem;transition:all var(--tr); }
.btn--primary { background:var(--accent);color:#fff; }
.btn--primary:hover { background:var(--accent2); }

/* TOOL BTN */
.tool-btn { border:1px solid var(--border);background:var(--badge);transition:all var(--tr); }
.tool-btn:hover:not(.tool-btn--placeholder) { border-color:var(--accent2); }
.tool-btn__label { color:var(--muted); }

/* CONTENT PAGES */
.content-wrap { background:var(--bg-card);border:1px solid var(--border);padding:2rem 3rem;max-width:1100px;margin:0 auto;box-shadow:var(--shadow); }
.content-wrap--narrow { max-width:820px; }
.page-title { font-family:var(--font-serif);font-size:2rem;font-weight:700;color:var(--accent);margin-bottom:.5rem;padding-bottom:.65rem;border-bottom:2px solid var(--sep); }
.section-subtitle { font-family:var(--font-serif);font-size:1.15rem;font-weight:600;color:var(--text);margin-bottom:.65rem; }
.section-sep { height:1px;background:var(--sep);margin:2rem 0; }

/* SLIDES LIST */
.slides-list { border:1px solid var(--border);overflow:hidden; }
.slide-entry { padding:.6rem .9rem;border-bottom:1px solid var(--border);transition:background var(--tr); }
.slide-entry:last-child { border-bottom:none; } .slide-entry:hover { background:var(--badge); }

/* PUBS */
.pub-list__ul { border:1px solid var(--border); }
.pub-item { border-bottom:1px solid var(--border);padding:.8rem .9rem;transition:background var(--tr); }
.pub-item:hover { background:var(--badge); } .pub-item:last-child { border-bottom:none; }
.pub-item__title { color:var(--accent2);font-family:var(--font-serif); } .pub-item__year { color:var(--light);font-family:var(--font-mono); } .pub-item__venue { color:var(--text); } .pub-item__authors { color:var(--muted); }

/* CV */
.cv-entry { border:1px solid var(--border);background:var(--bg-card);padding:1.1rem;transition:all var(--tr); }
.cv-entry:hover { border-color:var(--accent2); }
.cv-entry__role { font-weight:600;color:var(--accent); } .cv-entry__role--degree { color:#1a7a60; }
.cv-entry__org { font-size:.85rem;color:var(--muted); } .cv-entry__lab { font-size:.8rem;color:var(--light); } .cv-entry__date { font-size:.75rem;font-family:var(--font-mono);color:var(--light); } .cv-entry__note { font-size:.77rem;color:var(--light);font-style:italic; }
.cv-mandat { font-size:.69rem;padding:.1rem .4rem;border:1px solid var(--border);color:var(--muted); }

/* TEACHING */
.teaching-wrap { background:var(--bg-card);border:1px solid var(--border);padding:2rem;box-shadow:var(--shadow); }
.course-card { background:var(--bg-card);border:1px solid var(--border);padding:1rem;box-shadow:var(--shadow);transition:all var(--tr);overflow:hidden; }
.course-card:hover { border-color:var(--accent-1,var(--accent));box-shadow:var(--shadow-h);transform:translateY(-2px); }
.course-card--open { border-color:var(--accent-1,var(--accent)); }
.course-card__header { margin-bottom:.6rem; }
.course-card__code { font-size:.68rem;color:var(--light);font-family:var(--font-mono);margin-bottom:.18rem; }
.course-card__title { font-size:.88rem;font-weight:600;color:var(--text);margin-bottom:.4rem;line-height:1.35; }
.courses-grid--past .course-card__title { font-size:.78rem; }
.course-card__meta { font-size:.73rem;color:var(--muted);display:flex;flex-direction:column;gap:.15rem;margin-bottom:.5rem; }
.course-btn { display:inline-flex;align-items:center;gap:.2rem;border:1px solid;cursor:pointer;font-family:var(--font-body);font-weight:500;padding:.25rem .65rem;font-size:.7rem;text-decoration:none;transition:all var(--tr); }
.course-btn--link { background:var(--accent);color:#fff;border-color:var(--accent); }
.course-btn--link:hover { background:var(--accent2);border-color:var(--accent2);text-decoration:none; }
.course-btn--details { background:transparent;color:var(--muted);border-color:var(--border); }
.course-btn--details:hover { border-color:var(--accent2);color:var(--accent2); }
.course-card__details { border-top:1px solid var(--border);margin-top:.4rem;padding-top:0; }
.course-card--open .course-card__details { padding-top:.6rem; }
.course-card__details p { font-size:.76rem;color:var(--muted);margin-bottom:.3rem;line-height:1.55; }
.course-card__details strong { color:var(--accent2); } .course-card__details a { color:var(--accent2); }
.consignes-tile { background:var(--cbg);border:1px solid var(--border);padding:1.3rem; }
.consignes-tile__title { font-family:var(--font-serif);font-size:1rem;font-weight:600;color:var(--text); } .consignes-tile__icon { font-size:1.1rem; }
.consigne-item { background:var(--bg-card);padding:.7rem;border-left:2px solid var(--accent2); }
.consigne-item__title { font-weight:600;color:var(--accent);font-size:.8rem;margin-bottom:.25rem; }
.consigne-item__text { font-size:.77rem;color:var(--muted);line-height:1.6; }

/* PROFILE BIO */
.profile__bio p { font-size:.88rem;color:var(--muted);line-height:1.8;margin-bottom:.7rem;text-align:justify; }

/* RESPONSIVE */
@media(max-width:768px){
  .topbar__nav { display:none; }
  .topbar__nav.nav--open { display:flex;flex-direction:column;align-items:stretch;position:absolute;top:52px;left:0;right:0;background:var(--bg-top);padding:.4rem; }
  .topbar__nav.nav--open .nav-btn { height:auto;padding:.6rem 1rem;border-bottom:1px solid rgba(255,255,255,.08); }
  .topbar__hamburger { display:block; }
  .main { padding:1rem;margin-top:52px; }
  .content-wrap { padding:1.2rem 1rem; }
  .tpl-switcher { display:none; }
}

/* ─ About card ─ */
.about-card { background: var(--bg-card); border: 1px solid var(--border); box-shadow: var(--shadow); }
.about-passcode .passcode-input { border: 1px solid var(--input-b); background: var(--input); color: var(--text); }

/* ─ Consignes compact list (new format) ─ */
.consigne-line { background: var(--badge); border-left: 2px solid var(--accent2, var(--accent)); }
.consigne-line__label { color: var(--accent, #1a3a5c); }
.consigne-line__text { color: var(--muted); }
