/* ==========================================================================
   Éléonore Lépinard — academic site
   Design: protest-poster / feminist-press graphic identity
   ========================================================================== */

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

:root{
  --ink:        #131313;
  --ink-soft:   #45433f;
  --paper:      #FAF9F5;
  --card:       #FFFFFF;
  --orange:     #FF4B1F;
  --orange-deep:#D6360D;
  --navy:       #1C2B6B;
  --pink:       #F0A8C4;
  --line:       #E4E1D8;
  --line-soft:  #ECEAE2;
  --clay:       #8a8478;

  --display: 'Fraunces', serif;
  --head: 'Fraunces', serif;
  --body: 'Inter', -apple-system, sans-serif;
  --mono: 'IBM Plex Mono', ui-monospace, monospace;

  --measure: 66ch;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

::selection{ background:var(--orange); color:#fff; }

a{ color:inherit; }
a:focus-visible, button:focus-visible{
  outline:2px solid var(--orange);
  outline-offset:3px;
}

img{ max-width:100%; display:block; }

.shell{
  max-width:1180px;
  margin:0 auto;
  padding:0 40px;
  position:relative;
}

/* ---------- header / nav ---------- */
.site-header{
  border-bottom:3px solid var(--ink);
  position:sticky; top:0; z-index:20;
  background:var(--paper);
}
.site-header .shell{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:18px; padding-bottom:18px;
}
.brand{
  font-family:var(--head);
  font-weight:700;
  font-size:16px;
  letter-spacing:-.01em;
  text-decoration:none;
  color:var(--ink);
}
.brand span{ color:var(--orange); }

.brand-group{ display:flex; align-items:center; gap:10px; }
.brand-name{
  font-family:var(--head);
  font-weight:700;
  font-size:20px;
  letter-spacing:.02em;
  text-transform:uppercase;
  text-decoration:none;
  color:var(--ink);
}
.brand-sep{ color:var(--clay); font-family:var(--mono); font-size:14px; }
.brand-logo{ display:flex; align-items:center; }
.brand-logo img{ height:24px; width:auto; display:block; }

nav.primary{ display:flex; gap:4px; align-items:center; }
nav.primary a{
  font-family:var(--mono);
  font-size:12.5px;
  letter-spacing:.04em;
  text-transform:uppercase;
  text-decoration:none;
  color:var(--ink-soft);
  padding:8px 14px;
  position:relative;
}
nav.primary a:hover{ color:var(--orange-deep); }
nav.primary a.active{ color:var(--ink); font-weight:600; background:var(--orange); color:#fff; }

.lang-switch{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.04em;
  text-decoration:none;
  color:var(--ink-soft);
  border:1.5px solid var(--ink);
  padding:5px 10px;
  margin-left:14px;
}
.lang-switch:hover{ background:var(--ink); color:#fff; }

/* ---------- eyebrow ---------- */
.eyebrow{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:#fff;
  background:var(--navy);
  display:inline-flex; align-items:center; gap:8px;
  padding:5px 12px;
  margin-bottom:22px;
}

/* ---------- headings ---------- */
h1,h2,h3{
  font-family:var(--head);
  font-weight:600;
  color:var(--ink);
  letter-spacing:-.01em;
  margin:0 0 .4em;
}
h1{ font-family:var(--display); font-weight:600; font-size:clamp(2.6rem, 5.2vw, 4.4rem); line-height:1.0; }
h2{ font-family:var(--display); font-weight:600; font-size:clamp(1.7rem, 3.1vw, 2.4rem); line-height:1.05; }
h3{ font-size:1.2rem; font-weight:600; font-family:var(--head); }

p{ margin:0 0 1.1em; color:var(--ink-soft); max-width:var(--measure); }
p.lede{ font-size:1.2rem; color:var(--ink); font-weight:400; }

.text-block p:last-child{ margin-bottom:0; }

/* ---------- hero ---------- */
.hero{
  padding:64px 0 60px;
  border-bottom:3px solid var(--ink);
}
.hero .kicker{
  font-family:var(--mono);
  font-size:13px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--orange-deep);
  margin-bottom:18px;
  font-weight:500;
}
.hero h1{ margin-bottom:.2em; }
.hero .role{
  font-family:var(--head);
  font-weight:600;
  font-size:1.3rem;
  color:var(--navy);
  margin-bottom:26px;
}
.hero .hero-grid{
  display:grid;
  grid-template-columns:1.15fr .85fr;
  gap:48px;
  margin-top:36px;
  align-items:start;
}
@media (max-width:860px){
  .hero .hero-grid{ grid-template-columns:1fr; gap:32px; }
}

.portrait-frame{
  position:relative;
  border:3px solid var(--ink);
  background:var(--card);
  padding:0;
}
.portrait-frame img{
  width:100%;
  height:auto;
  display:block;
}
.portrait-cred{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:9px 12px;
  border-top:3px solid var(--ink);
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.04em;
  color:var(--clay);
}
.portrait-cred .tag{ color:var(--orange-deep); }

.file-card{
  border:2px solid var(--ink);
  background:var(--card);
  padding:22px 22px 20px;
  font-family:var(--mono);
  font-size:13px;
  color:var(--ink-soft);
}
.file-card dl{ margin:0; }
.file-card dt{ color:var(--clay); margin-top:10px; text-transform:uppercase; font-size:11px; letter-spacing:.06em; }
.file-card dt:first-child{ margin-top:0; }
.file-card dd{ margin:2px 0 0; color:var(--ink); }
.file-card a{ color:var(--orange-deep); text-decoration:none; border-bottom:1px solid var(--orange); }
.file-card a:hover{ background:var(--orange); color:#fff; }

/* ---------- sections ---------- */
section{ padding:60px 0; }
section.tight{ padding:40px 0; }
section + section{ border-top:3px solid var(--ink); }

.section-head{
  display:flex; justify-content:space-between; align-items:flex-end;
  gap:24px; margin-bottom:32px; flex-wrap:wrap;
}
.section-head h2{ margin-bottom:0; }
.section-head .note{
  font-family:var(--mono); font-size:12.5px; color:var(--clay);
  max-width:34ch; text-align:right;
}
@media (max-width:700px){ .section-head .note{ text-align:left; } }

/* ---------- news register (home) ---------- */
.register{ border-top:2px solid var(--ink); }
.register-row{
  display:grid;
  grid-template-columns:100px 1fr;
  gap:24px;
  padding:20px 0;
  border-bottom:2px solid var(--line);
}
.register-row .yr{
  font-family:var(--mono); font-weight:600; font-size:13px; color:var(--orange-deep); padding-top:3px;
}
.register-row h3{ margin-bottom:.25em; font-size:1.08rem; }
.register-row p{ margin:0; font-size:.97rem; }

/* ---------- research axes ---------- */
.axes{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:2px;
  background:var(--ink);
  border:2px solid var(--ink);
}
@media (max-width:860px){ .axes{ grid-template-columns:1fr; } }
.axis{ background:var(--card); padding:26px 24px; }
.axis .n{
  font-family:var(--mono); font-size:12px; color:#fff; background:var(--navy);
  display:inline-block; padding:2px 8px; margin-bottom:14px;
}
.axis h3{ margin-bottom:.5em; font-family:var(--head); }
.axis p{ font-size:.96rem; margin-bottom:0; }

.illo{
  border:2px solid var(--ink);
  margin:8px 0 0;
  overflow:hidden;
}
.illo img{ width:100%; height:260px; object-fit:cover; display:block; transition:transform 0.5s ease; }
.illo:hover img{ transform:scale(1.05); }
.illo figcaption{
  font-family:var(--mono); font-size:11px; color:var(--clay);
  padding:9px 12px; border-top:2px solid var(--ink); letter-spacing:.02em;
}

/* ---------- publications ---------- */
.pub-filter{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:8px; }
.pub-filter button{
  font-family:var(--mono); font-size:12px; letter-spacing:.02em;
  text-transform:uppercase;
  background:var(--card); border:2px solid var(--ink);
  color:var(--ink); padding:8px 14px; cursor:pointer;
}
.pub-filter button:hover{ background:var(--ink); color:#fff; }
.pub-filter button.active{ background:var(--orange); border-color:var(--orange); color:#fff; }

.pub-group{ margin-top:44px; }
.pub-group-title{
  font-family:var(--display);
  font-weight:600;
  font-style:italic;
  font-size:1.4rem;
  padding-bottom:10px; margin-bottom:4px;
  border-bottom:3px solid var(--ink);
}

/* book feature cards */
.book-feature{
  display:grid;
  grid-template-columns:180px 1fr;
  gap:28px;
  padding:28px 0;
  border-bottom:2px solid var(--line);
  align-items:start;
}
@media (max-width:640px){ .book-feature{ grid-template-columns:1fr; } .book-feature .book-cover{ max-width:200px; } }
.book-feature .book-cover img{ border:2px solid var(--ink); width:100%; }
.book-feature h4{
  font-family:var(--head); font-weight:700; font-size:1.25rem; margin:0 0 .2em;
  text-transform:none;
}
.book-feature .book-meta{ font-family:var(--mono); font-size:12px; color:var(--orange-deep); margin-bottom:10px; }
.book-feature p{ font-size:.97rem; margin-bottom:8px; }
.book-feature .book-links a{
  font-family:var(--mono); font-size:11.5px; text-transform:uppercase; letter-spacing:.03em;
  color:var(--navy); text-decoration:none; border-bottom:1px solid var(--navy); margin-right:16px;
}
.book-feature .book-links a:hover{ color:var(--orange-deep); border-color:var(--orange-deep); }

.pub-entry{
  display:grid;
  grid-template-columns:74px 1fr;
  gap:22px;
  padding:18px 0;
  border-bottom:1px solid var(--line-soft);
}
.pub-entry .yr{ font-family:var(--mono); font-size:13px; color:var(--clay); padding-top:2px; }
.pub-entry .ref{ font-size:.98rem; color:var(--ink); }
.pub-entry .ref .work{ font-style:italic; }
.pub-entry .ref .venue{ color:var(--ink-soft); }
.pub-entry .ref a.doi-link{
  font-family:var(--mono); font-size:10.5px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--navy); text-decoration:none; border-bottom:1px solid var(--navy); margin-left:8px;
}
.pub-entry .ref a.doi-link:hover{ color:var(--orange-deep); border-color:var(--orange-deep); }
.pub-entry .tagline{
  display:inline-block; margin-top:6px;
  font-family:var(--mono); font-size:10.5px; letter-spacing:.05em; text-transform:uppercase;
  color:#fff; background:var(--orange);
  padding:3px 8px;
}

details.pub-more{ margin-top:30px; }
details.pub-more > summary{
  cursor:pointer; list-style:none;
  font-family:var(--mono); font-size:12.5px; letter-spacing:.03em; text-transform:uppercase;
  color:var(--navy); font-weight:600;
  padding:12px 0; border-top:2px solid var(--line);
}
details.pub-more > summary::-webkit-details-marker{ display:none; }
details.pub-more > summary::before{ content:"+ "; }
details.pub-more[open] > summary::before{ content:"– "; }

/* ---------- CV / parcours ---------- */
.timeline{ border-top:2px solid var(--ink); }
.tl-row{
  display:grid;
  grid-template-columns:150px 1fr;
  gap:24px;
  padding:22px 0;
  border-bottom:2px solid var(--line);
}
@media (max-width:640px){ .tl-row{ grid-template-columns:1fr; gap:6px; } }
.tl-row .yr{ font-family:var(--mono); font-weight:600; font-size:13px; color:var(--orange-deep); }
.tl-row h3{ font-size:1.05rem; margin-bottom:.15em; }
.tl-row .org{ color:var(--clay); font-size:.92rem; font-family:var(--mono); }
.tl-row p{ margin-top:8px; font-size:.95rem; }

.two-col{ display:grid; grid-template-columns:1fr 1fr; gap:48px; }
@media (max-width:860px){ .two-col{ grid-template-columns:1fr; gap:8px; } }

.simple-list{ margin:0; padding:0; list-style:none; }
.simple-list li{ padding:12px 0; border-bottom:1px solid var(--line-soft); font-size:.95rem; color:var(--ink-soft); }
.simple-list .yr{ font-family:var(--mono); color:var(--clay); margin-right:10px; }
.simple-list strong{ color:var(--ink); font-weight:600; }
.simple-list a{ color:var(--navy); text-decoration:none; border-bottom:1px solid var(--navy); }
.simple-list a:hover{ color:var(--orange-deep); border-color:var(--orange-deep); }

/* ---------- research projects ---------- */
.project{ border:2px solid var(--ink); background:var(--card); margin-bottom:24px; }
.project-head{
  padding:20px 24px;
  display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap;
  border-bottom:2px solid var(--line-soft);
}
.project-head h3{ margin-bottom:.3em; font-family:var(--head); }
.project-status{
  font-family:var(--mono); font-size:11px; letter-spacing:.05em; text-transform:uppercase;
  color:#fff; background:var(--navy); padding:4px 10px; white-space:nowrap; height:fit-content;
}
.project-status.ongoing{ background:var(--orange); }
.project-body{ padding:20px 24px 24px; }
.project-meta{ font-family:var(--mono); font-size:12px; color:var(--clay); margin-bottom:14px; }

.project-media{
  display:grid; grid-template-columns:140px 1fr; gap:18px; align-items:center;
  margin-top:18px; padding-top:18px; border-top:1px solid var(--line-soft);
}
@media (max-width:560px){ .project-media{ grid-template-columns:1fr; } }
.project-media img{ width:100%; border:2px solid var(--ink); }
.project-media-caption{ display:flex; flex-direction:column; gap:4px; font-size:.9rem; color:var(--ink-soft); }
.project-media-caption strong{ color:var(--ink); font-weight:600; }
.project-media-caption span{ font-family:var(--mono); font-size:11.5px; color:var(--clay); }

/* PhD supervision */
.phd-list{ display:grid; grid-template-columns:1fr 1fr; gap:2px; background:var(--ink); border:2px solid var(--ink); margin-top:8px; }
@media (max-width:760px){ .phd-list{ grid-template-columns:1fr; } }
.phd-entry{ background:var(--card); padding:18px 20px; }
.phd-entry .name{ font-family:var(--head); font-weight:700; margin-bottom:3px; }
.phd-entry .thesis{ font-size:.92rem; font-style:italic; color:var(--ink-soft); margin-bottom:4px; }
.phd-entry .meta{ font-family:var(--mono); font-size:11px; color:var(--clay); text-transform:uppercase; letter-spacing:.03em; }

/* ---------- footer ---------- */
footer{ border-top:3px solid var(--ink); padding:40px 0 56px; }
footer .shell{ display:flex; justify-content:space-between; align-items:flex-end; flex-wrap:wrap; gap:20px; }
footer .foot-name{ font-family:var(--display); font-weight:600; font-size:1.5rem; }
footer .foot-meta{ font-family:var(--mono); font-size:12px; color:var(--clay); line-height:1.9; }
footer a{ color:var(--ink-soft); text-decoration:none; border-bottom:1px solid var(--line); }
footer a:hover{ color:var(--orange-deep); border-color:var(--orange); }

.mono{ font-family:var(--mono); }

/* ---------- teaching photo grid ---------- */
.street-strip{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:2px;
  background:var(--ink);
  border:2px solid var(--ink);
}
.street-strip figure{ margin:0; background:var(--card); overflow:hidden; }
.street-strip img{ width:100%; height:240px; object-fit:cover; display:block; transition:transform 0.5s ease; }
.street-strip figure:hover img{ transform:scale(1.06); }
.street-strip figcaption{
  font-family:var(--mono); font-size:11px; color:var(--clay);
  padding:9px 12px; letter-spacing:.02em;
}
@media (max-width:760px){ .street-strip{ grid-template-columns:1fr 1fr !important; } }

/* ---------- book cover tilt-on-hover ---------- */
.book-feature{ perspective:900px; }
.book-feature .book-cover{
  transition:transform 0.15s ease-out;
  transform-style:preserve-3d;
  will-change:transform;
}
.book-feature .book-cover img{ transition:box-shadow 0.15s ease-out; }
.book-feature .book-cover.tilting img{ box-shadow:0 18px 30px -12px rgba(0,0,0,.35); }

/* ---------- animated underline on section headings ---------- */
.section-head h2{ position:relative; display:inline-block; padding-bottom:8px; }
.section-head h2::after{
  content:"";
  position:absolute;
  left:0; bottom:0;
  height:3px;
  width:0;
  background:var(--orange);
  transition:width 1.1s cubic-bezier(.16,.8,.3,1);
}
.section-head h2.drawn::after{ width:100%; }

/* ---------- page transition fade ---------- */
body{ animation:page-fade-in 0.35s ease; }
@keyframes page-fade-in{ from{ opacity:0; } to{ opacity:1; } }
body.page-leaving{ opacity:0; transition:opacity 0.25s ease; }
