  @font-face{
    font-family:'Inter';
    src:url('fonts/Inter-400.woff2') format('woff2');
    font-weight:400;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:'Inter';
    src:url('fonts/Inter-500.woff2') format('woff2');
    font-weight:500;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:'Inter';
    src:url('fonts/Inter-600.woff2') format('woff2');
    font-weight:600;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:'Inter';
    src:url('fonts/Inter-700.woff2') format('woff2');
    font-weight:700;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:'Fraunces';
    src:url('fonts/Fraunces-600.woff2') format('woff2');
    font-weight:600;
    font-style:normal;
    font-display:swap;
  }
  @font-face{
    font-family:'Fraunces';
    src:url('fonts/Fraunces-Italic-400.woff2') format('woff2');
    font-weight:400;
    font-style:italic;
    font-display:swap;
  }
  @font-face{
    font-family:'Fraunces';
    src:url('fonts/Fraunces-Italic-500.woff2') format('woff2');
    font-weight:500;
    font-style:italic;
    font-display:swap;
  }

  :root{
    --paper:#FAF7F1;
    --paper-deep:#F2EDE3;
    --ink:#221F1B;
    --ink-soft:#5C564C;
    --accent:#3E5C52;
    --accent-deep:#24382F;
    --accent-soft:#E3EAE4;
    --line:#DDD5C4;
    --radius:2px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:'Inter',sans-serif;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.display{
    font-family:'Fraunces',serif;
    font-weight:600;
    letter-spacing:0.01em;
    margin:0;
    color:var(--ink);
  }
  .sc{
    font-variant:small-caps;
    letter-spacing:0.04em;
  }
  a{color:inherit;text-decoration:none;}
  ::selection{background:var(--accent-soft);}
  :focus-visible{outline:2px solid var(--accent);outline-offset:3px;}

  /* ---------- psi glyph ---------- */
  .psi{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-weight:400;
    display:inline-block;
  }
  .divider{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:1rem;
    color:var(--ink-soft);
    opacity:0.55;
    margin:0 auto;
    font-size:1.6rem;
    padding:0.5rem 0;
  }
  .divider::before,.divider::after{
    content:"";
    height:1px;
    width:64px;
    background:var(--line);
  }

  /* ---------- top bar ---------- */
  header.topbar{
    position:sticky;
    top:0;
    z-index:50;
    background:rgba(250,247,241,0.92);
    backdrop-filter:blur(6px);
    border-bottom:1px solid var(--line);
  }
  .topbar-inner{
    max-width:1180px;
    margin:0 auto;
    padding:0.85rem 1.75rem;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1.5rem;
  }
  .brand{
    display:flex;
    align-items:center;
    gap:0.65rem;
    font-family:'Fraunces',serif;
    font-weight:600;
    font-size:1.05rem;
  }
  .brand .psi{font-size:1.5rem;color:var(--accent);}
  .brand-logo{height:2.7rem;width:auto;display:block;}
  nav.mainnav{
    display:flex;
    gap:1.6rem;
    flex-wrap:wrap;
  }
  nav.mainnav a{
    font-size:0.82rem;
    letter-spacing:0.06em;
    text-transform:uppercase;
    color:var(--ink-soft);
    padding:0.3rem 0.05rem;
    border-bottom:1px solid transparent;
    transition:color .2s ease, border-color .2s ease;
    white-space:nowrap;
  }
  nav.mainnav a:hover,nav.mainnav a:focus-visible{
    color:var(--accent-deep);
    border-color:var(--accent);
  }
  .cta{
    background:var(--accent);
    color:#fff !important;
    font-size:0.82rem;
    letter-spacing:0.04em;
    padding:0.6rem 1.1rem;
    border-radius:var(--radius);
    white-space:nowrap;
    transition:background .2s ease;
  }
  .cta:hover,.cta:focus-visible{background:var(--accent-deep);color:#fff !important;border-color:transparent;}
  nav.mainnav a.cta{
    text-transform:uppercase;
    border-bottom:none;
  }
  .navtoggle{display:none;}

  /* ---------- hero ---------- */
  .hero{
    position:relative;
    overflow:hidden;
    padding:5.5rem 1.75rem 4.5rem;
    text-align:center;
  }
  .hero-inner{
    position:relative;
    z-index:1;
    max-width:760px;
    margin:0 auto;
  }
  .hero-inner .eyebrow{
    font-size:0.8rem;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--accent-deep);
    margin-bottom:1.1rem;
    display:block;
  }
  .hero-inner h1{
    font-size:clamp(1.9rem,4vw,2.75rem);
    font-style:italic;
    font-weight:500;
    line-height:1.25;
  }
  .hero-meta{
    margin-top:1.75rem;
    font-size:0.88rem;
    color:var(--ink-soft);
    display:flex;
    flex-wrap:wrap;
    gap:0.4rem 1rem;
    justify-content:center;
  }
  .hero-contacts{
    margin-top:2.25rem;
    display:flex;
    gap:1rem;
    justify-content:center;
    flex-wrap:wrap;
  }
  .btn-outline{
    border:1px solid var(--ink);
    padding:0.65rem 1.3rem;
    font-size:0.85rem;
    letter-spacing:0.03em;
    border-radius:var(--radius);
    transition:background .2s ease, color .2s ease, border-color .2s ease;
  }
  .btn-outline:hover,.btn-outline:focus-visible{
    background:var(--ink);
    color:var(--paper);
  }
  .btn-primary{
    background:var(--accent);
    border:1px solid var(--accent);
    color:#fff;
    padding:0.65rem 1.3rem;
    font-size:0.85rem;
    letter-spacing:0.03em;
    border-radius:var(--radius);
    transition:background .2s ease, border-color .2s ease;
  }
  .btn-primary:hover,.btn-primary:focus-visible{
    background:var(--accent-deep);
    border-color:var(--accent-deep);
    color:#fff;
  }

  /* ---------- offer tiles ---------- */
  .offers{
    max-width:1180px;
    margin:0 auto;
    padding:0 1.75rem 4rem;
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:1.5rem;
  }
  .tile{
    background:#fff;
    border:1px solid var(--line);
    border-left:3px solid var(--accent);
    padding:2rem 2.1rem;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
  }
  .tile h2{
    font-size:1.35rem;
    margin-bottom:0.75rem;
  }
  .tile p{
    color:var(--ink-soft);
    font-size:0.95rem;
    margin:0 0 1.1rem;
  }
  .tile a.more{
    margin-top:auto;
    font-size:0.82rem;
    letter-spacing:0.04em;
    text-transform:uppercase;
    color:var(--accent-deep);
    border-bottom:1px solid var(--accent);
    padding-bottom:2px;
  }

  /* ---------- content sections ---------- */
  main{max-width:760px;margin:0 auto;padding:0 1.75rem;}
  section.block{padding:3.25rem 0;}
  section.block .eyebrow{
    font-size:0.78rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--accent-deep);
    display:block;
    margin-bottom:0.6rem;
  }
  section.block h2{
    font-size:1.7rem;
    margin-bottom:1.25rem;
  }
  section.block p{margin:0 0 1.1rem;color:var(--ink);}
  section.block p.lead{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-size:1.15rem;
    color:var(--ink-soft);
  }
  .card-tint{
    background:var(--accent-soft);
    border-radius:var(--radius);
    padding:2.25rem 2.25rem;
    margin-top:0.5rem;
  }
  .card-outline{
    background:#fff;
    border:1px solid var(--line);
    border-left:3px solid var(--accent);
    border-radius:var(--radius);
    padding:2rem 2.25rem;
    margin-top:1.75rem;
  }
  .card-outline .phi{
    font-family:'Fraunces',serif;
    font-style:italic;
    font-size:2em;
    color:var(--accent);
  }
  ul.app-list{
    list-style:none;
    margin:0 0 1.25rem;
    padding:0;
  }
  ul.app-list li{
    position:relative;
    padding-left:1.6rem;
    margin-bottom:0.6rem;
  }
  ul.app-list li::before{
    content:"ψ";
    font-family:'Fraunces',serif;
    color:var(--accent);
    position:absolute;
    left:0;
    top:-0.05em;
    font-size:0.95em;
  }
  ul.app-sublist{
    list-style:none;
    margin:0.6rem 0 0 1.6rem;
    padding:0;
  }
  ul.app-sublist li{
    padding-left:1.1rem;
    position:relative;
    font-size:0.93rem;
    color:var(--ink-soft);
    margin-bottom:0.4rem;
  }
  ul.app-sublist li::before{
    content:"—";
    position:absolute;
    left:0;
    color:var(--ink-soft);
  }

  section.block .subhead{
    font-family:'Fraunces',serif;
    font-weight:600;
    font-size:1.15rem;
    color:var(--accent-deep);
    margin:2.5rem 0 0.9rem;
    padding-top:0.25rem;
    border-top:1px solid var(--line);
    scroll-margin-top:5.5rem;
  }
  section.block > .subhead:first-of-type{border-top:none;padding-top:0;}

  .section-subnav{
    list-style:none;
    display:flex;
    flex-wrap:wrap;
    gap:0.6rem;
    margin:1.1rem 0 2rem;
    padding:0;
  }
  .section-subnav li a{
    display:inline-block;
    font-size:0.76rem;
    letter-spacing:0.05em;
    text-transform:uppercase;
    color:var(--accent-deep);
    background:var(--accent-soft);
    padding:0.4rem 0.85rem;
    border-radius:var(--radius);
    transition:background .2s ease,color .2s ease;
  }
  .section-subnav li a:hover,.section-subnav li a:focus-visible{
    background:var(--accent);
    color:#fff;
  }

  .link-row{
    display:flex;
    flex-wrap:wrap;
    gap:0.6rem 1.5rem;
    margin-top:1.1rem;
  }
  .link-row a{
    font-size:0.85rem;
    letter-spacing:0.01em;
    border-bottom:1px solid var(--accent);
    padding-bottom:2px;
  }
  .link-row a:hover{color:var(--accent-deep);}

  .flyer-link{
    display:inline-flex;
    align-items:center;
    gap:0.5rem;
    margin-top:1.1rem;
    font-size:0.85rem;
    letter-spacing:0.02em;
    color:#fff;
    background:var(--accent);
    padding:0.55rem 1rem;
    border-radius:var(--radius);
    transition:background .2s ease;
  }
  .flyer-link:hover,.flyer-link:focus-visible{background:var(--accent-deep);color:#fff;}

  .cv-list{
    list-style:none;
    margin:1.5rem 0 2rem;
    padding:0;
    border-top:1px solid var(--line);
  }
  .cv-list li{
    display:flex;
    gap:1.75rem;
    align-items:baseline;
    padding:0.9rem 0;
    border-bottom:1px solid var(--line);
  }
  .cv-date{
    flex:0 0 175px;
    font-weight:600;
    font-size:0.9rem;
    color:var(--accent-deep);
    letter-spacing:0.01em;
  }
  .cv-desc{color:var(--ink);font-size:0.98rem;}
  .contact-block{
    display:flex;
    flex-wrap:wrap;
    gap:0.9rem;
    margin-top:0.5rem;
  }

  /* reveal on scroll */
  .reveal{
    opacity:0;
    transform:translateY(14px);
    transition:opacity .6s ease, transform .6s ease;
  }
  .reveal.in{opacity:1;transform:translateY(0);}
  @media (prefers-reduced-motion:reduce){
    .reveal{opacity:1;transform:none;transition:none;}
    html{scroll-behavior:auto;}
  }

  /* ---------- footer ---------- */
  footer{
    border-top:1px solid var(--line);
    margin-top:2rem;
    padding:3rem 1.75rem;
    text-align:center;
  }
  footer .psi{font-size:2rem;color:var(--accent);}
  footer .footer-logo{height:2.9rem;width:auto;display:inline-block;margin:0 auto;}
  footer p{color:var(--ink-soft);font-size:0.88rem;margin:0.75rem 0 0;}
  footer .foot-contacts{
    margin-top:1rem;
    display:flex;
    justify-content:center;
    gap:1.5rem;
    flex-wrap:wrap;
    font-size:0.88rem;
  }
  footer .foot-contacts a{border-bottom:1px solid var(--line);}
  footer .foot-contacts a:hover{border-color:var(--accent);color:var(--accent-deep);}

  /* ---------- mobile ---------- */
  @media (max-width:820px){
    nav.mainnav{
      position:absolute;
      top:100%;
      left:0;
      right:0;
      background:var(--paper);
      border-bottom:1px solid var(--line);
      flex-direction:column;
      padding:0.5rem 1.75rem 1.25rem;
      gap:0.9rem;
      display:none;
    }
    nav.mainnav.open{display:flex;}
    .navtoggle{
      display:inline-flex;
      align-items:center;
      gap:0.4rem;
      background:none;
      border:1px solid var(--line);
      padding:0.45rem 0.8rem;
      font-size:0.8rem;
      letter-spacing:0.04em;
      color:var(--ink);
      border-radius:var(--radius);
    }
    .offers{grid-template-columns:1fr;}
    .hero{padding:3.75rem 1.25rem 3rem;}
  }

  /* ---------- multi-page additions ---------- */
  nav.mainnav a.active{
    color:var(--accent-deep);
    border-color:var(--accent);
  }
  nav.mainnav a.cta.active{border-color:transparent;}

  .page-header{
    max-width:760px;
    margin:0 auto;
    padding:3rem 1.75rem 0;
  }
  .page-header .eyebrow{
    font-size:0.8rem;
    letter-spacing:0.12em;
    text-transform:uppercase;
    color:var(--accent-deep);
    display:block;
    margin-bottom:0.75rem;
  }
  .page-header h1{
    font-size:clamp(1.7rem,3.6vw,2.35rem);
    margin-bottom:0.5rem;
  }

  @media (max-width:820px){
    .page-header{padding:2.5rem 1.25rem 0;}
    .cv-list li{display:block;}
    .cv-date{display:block;margin-bottom:0.25rem;}
  }

/* V4 — ajustements éditoriaux ciblés */
.experience-highlight,
.institution-intro {
  max-width: 48rem;
  margin: 1rem 0 1.5rem;
  line-height: 1.65;
}
.experience-highlight strong {
  font-weight: 700;
}

/* Accessibilité : contenu utile aux lecteurs d'écran, invisible à l'écran */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
