  :root{
    --navy-900:#0B1830;
    --navy-700:#132A50;
    --navy-600:#1B3A6B;
    --navy-500:#2C4570;
    --accent-500:#C9A227;
    --accent-600:#A9841B;
    --paper:#F7F6F1;
    --white:#FFFFFF;
    --ink:#1D2430;
    --slate:#5B6472;
    --line:#E4E1D8;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth; font-size:17px;}
  body{
    font-family:'Source Serif 4', Georgia, serif;
    color:var(--ink);
    background:var(--paper);
    line-height:1.62;
    font-size:1rem;
  }
  h1,h2,h3,.display{
    font-family:'Space Grotesk', sans-serif;
    letter-spacing:-0.01em;
  }
  .eyebrow{
    font-family:'Space Grotesk', sans-serif;
    text-transform:uppercase;
    letter-spacing:0.14em;
    font-size:0.75rem;
    font-weight:600;
    color:var(--accent-600);
  }
  a{color:inherit; text-decoration:none;}
  img{max-width:100%; display:block;}
  .wrap{max-width:1160px; margin:0 auto; padding:0 32px;}

  /* Skip link for accessibility */
  .skip-link{position:absolute; left:-999px; top:0; background:var(--navy-900); color:#fff; padding:10px 16px; z-index:200;}
  .skip-link:focus{left:16px; top:16px;}

  a:focus-visible, button:focus-visible{outline:3px solid var(--accent-500); outline-offset:2px;}

  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; transition-duration:0.001ms !important;}
  }

  /* SCROLL-REVEAL + MICRO-INTERACTIONS */
  /* Content is always visible by default — no CSS opacity dependency.
     script.js applies hide-then-reveal via inline styles only if it loads successfully,
     so a missing/stale JS or CSS file can never leave content permanently hidden. */
  .reveal, .reveal-stagger > *{transition:opacity 0.6s ease, transform 0.6s ease;}

  .hero-grid > *{opacity:0; transform:translateY(16px); animation:heroIn 0.8s ease forwards;}
  .hero-grid > *:nth-child(2){animation-delay:0.12s;}
  @keyframes heroIn{to{opacity:1; transform:translateY(0);}}

  header{transition:box-shadow 0.25s ease, padding 0.25s ease;}
  header.is-scrolled{box-shadow:0 4px 20px rgba(11,24,48,0.09);}
  header.is-scrolled .nav-row{padding-top:12px; padding-bottom:12px;}

  /* HEADER */
  header{
    position:sticky; top:0; z-index:100;
    background:rgba(247,246,241,0.92);
    backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line);
  }
  .nav-row{
    display:flex; align-items:center; justify-content:space-between;
    padding:18px 32px; position:relative;
  }
  .logo-mark{display:flex; align-items:center; gap:12px;}
  .logo-svg{width:38px; height:38px; flex-shrink:0;}
  .logo-text{font-family:'Space Grotesk', sans-serif; font-weight:700; font-size:1.05rem; color:var(--navy-700); letter-spacing:0.01em; line-height:1.1;}
  .logo-text span{display:block; font-weight:500; font-size:0.6rem; letter-spacing:0.16em; color:var(--slate); margin-top:3px;}
  nav.primary{display:flex; gap:26px; font-family:'Space Grotesk', sans-serif; font-size:0.92rem; font-weight:500; align-items:center;}
  nav.primary a{color:var(--navy-700); position:relative; padding:4px 0;}
  nav.primary a::after{content:''; position:absolute; left:0; bottom:-3px; width:0; height:2px; background:var(--accent-500); transition:width 0.25s ease;}
  nav.primary a:hover::after{width:100%;}
  nav.primary a:hover{color:var(--accent-600);}
  .nav-cta{
    font-family:'Space Grotesk', sans-serif; font-weight:600; font-size:0.88rem;
    background:var(--navy-700); color:#fff; padding:10px 20px; border-radius:2px;
  }
  .has-dropdown{position:relative;}
  .dropdown-trigger{display:flex; align-items:center; gap:6px; background:none; border:none; cursor:pointer; font-family:'Space Grotesk',sans-serif; font-size:0.92rem; font-weight:500; color:var(--navy-700); padding:4px 0;}
  .dropdown-trigger:hover{color:var(--accent-600);}
  .dropdown-trigger svg{width:11px; height:11px; transition:transform 0.15s ease;}
  .has-dropdown:hover .dropdown-trigger svg, .has-dropdown:focus-within .dropdown-trigger svg{transform:rotate(180deg);}
  .dropdown-menu{
    position:absolute; top:100%; left:50%; transform:translateX(-50%); margin-top:14px;
    background:#fff; border:1px solid var(--line); box-shadow:0 12px 28px rgba(11,24,48,0.12);
    min-width:240px; padding:10px; opacity:0; visibility:hidden; transition:opacity 0.15s ease; font-size:0.88rem;
  }
  .has-dropdown:hover .dropdown-menu, .has-dropdown:focus-within .dropdown-menu{opacity:1; visibility:visible;}
  .dropdown-menu a{display:block; padding:11px 14px; font-size:0.88rem; color:var(--navy-700); border-radius:2px;}
  .dropdown-menu a:hover{background:var(--paper); color:var(--accent-600);}
  .dropdown-menu a .sub-desc{display:block; font-family:'Source Serif 4',serif; font-size:0.76rem; color:var(--slate); margin-top:2px;}
  .nav-cta:hover{background:var(--navy-900);}
  .menu-toggle{display:none; background:none; border:none; cursor:pointer; padding:6px; color:var(--navy-700);}
  .menu-toggle svg{width:24px; height:24px;}

  /* HERO */
  .hero{
    padding:76px 0 60px;
    position:relative;
    overflow:hidden;
  }
  .hero-grid{
    display:grid; grid-template-columns:1.05fr 0.95fr; gap:56px; align-items:center;
  }
  .hero h1{
    font-size:2.75rem; font-weight:700; color:var(--navy-900); line-height:1.12; margin:16px 0 22px;
  }
  .hero h1 em{font-style:normal; color:var(--accent-600);}
  .hero p.lede{
    font-size:1.1rem; color:var(--slate); max-width:46ch; margin-bottom:32px;
  }
  .hero-ctas{display:flex; gap:16px; flex-wrap:wrap;}
  .btn{
    font-family:'Space Grotesk', sans-serif; font-weight:600; font-size:0.92rem;
    padding:14px 26px; border-radius:2px; display:inline-block; transition:transform 0.15s ease;
  }
  .btn-primary{background:var(--navy-700); color:#fff;}
  .btn-primary:hover{background:var(--navy-900); transform:translateY(-1px);}
  .btn-ghost{border:1.5px solid var(--navy-700); color:var(--navy-700);}
  .btn-ghost:hover{background:var(--navy-700); color:#fff;}

  .hero-portrait{position:relative;}
  .hero-portrait .frame{
    position:relative; border:1.5px solid var(--navy-700); padding:14px;
  }
  .hero-portrait img{width:100%; filter:grayscale(8%) contrast(1.03);}
  .hero-portrait .tag{
    position:absolute; bottom:-18px; left:-18px; background:var(--accent-500); color:var(--navy-900);
    font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:0.8rem;
    padding:12px 18px; letter-spacing:0.02em;
  }

  /* MOLECULE DIVIDER — signature element, mirrors the tagline sequence */
  .molecule-divider{
    padding:54px 0 40px; position:relative; overflow:hidden;
  }
  .ambient-network{position:absolute; inset:0; width:100%; height:100%; z-index:0; opacity:0.55;}
  .ambient-edge{stroke:var(--navy-500); stroke-width:1; opacity:0.25; animation-name:ambientPulse; animation-timing-function:ease-in-out; animation-iteration-count:infinite;}
  .ambient-node{fill:var(--navy-500); animation-name:ambientDrift; animation-timing-function:ease-in-out; animation-iteration-count:infinite;}
  .ambient-node.gold{fill:var(--accent-500);}
  @keyframes ambientPulse{0%,100%{opacity:0.12;} 50%{opacity:0.35;}}
  @keyframes ambientDrift{0%,100%{transform:translate(0,0);} 50%{transform:translate(3px,-4px);}}
  .molecule-track{
    position:relative; z-index:1;
    display:flex; align-items:center; justify-content:center; gap:0; max-width:820px; margin:0 auto;
    padding:0 32px;
  }
  .node-group{display:flex; flex-direction:column; align-items:center; gap:10px; flex:1;}
  .node{
    width:14px; height:14px; border-radius:50%; border:2px solid var(--navy-700); background:var(--paper);
    transition:transform 0.45s cubic-bezier(.34,1.56,.64,1);
  }
  .node-label{
    font-family:'Space Grotesk', sans-serif; font-size:0.75rem; letter-spacing:0.12em; text-transform:uppercase;
    color:var(--navy-700); font-weight:600;
  }
  .connector{
    height:2px; flex:1; background:repeating-linear-gradient(90deg, var(--navy-500) 0 6px, transparent 6px 12px);
    margin-top:-30px; align-self:flex-start; position:relative; top:6px;
    transition:transform 0.55s ease;
  }

  /* NEWS BAND */
  .news-band{background:var(--navy-900); color:#fff; padding:34px 0;}
  .news-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:0;}
  .news-item{padding:0 28px; border-left:1px solid rgba(255,255,255,0.18);}
  .news-item:first-child{border-left:none; padding-left:0;}
  .news-item .eyebrow{color:var(--accent-500);}
  .news-item h3{font-size:1.02rem; font-weight:500; margin:8px 0 10px; line-height:1.4; font-family:'Source Serif 4',serif;}
  .news-item a.more{font-family:'Space Grotesk',sans-serif; font-size:0.8rem; color:#fff; border-bottom:1px solid var(--accent-500); padding-bottom:2px;}

  /* QUICK ACCESS */
  .quick-access{padding:88px 0;}
  .section-head{max-width:640px; margin-bottom:52px;}
  .section-head h2{font-size:1.9rem; color:var(--navy-900); margin-top:12px; font-weight:700;}
  .section-head p{color:var(--slate); margin-top:14px; font-size:1rem;}
  .cards{display:grid; grid-template-columns:repeat(3,1fr); gap:28px;}
  .card{
    background:var(--white); border:1px solid var(--line); padding:36px 30px;
    transition:border-color 0.2s ease, transform 0.2s ease;
  }
  .card:hover{border-color:var(--navy-700); transform:translateY(-3px);}
  .card .icon{width:44px; height:44px; margin-bottom:22px;}
  .card h3{font-size:1.12rem; color:var(--navy-900); margin-bottom:12px; font-weight:600;}
  .card p{color:var(--slate); font-size:0.95rem; margin-bottom:20px;}
  .card a.link{font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:0.85rem; color:var(--navy-700); border-bottom:1.5px solid var(--accent-500); padding-bottom:2px;}

  /* MISSION STRIP */
  .mission{background:var(--navy-700); color:#fff; padding:80px 0;}
  .mission .wrap{display:grid; grid-template-columns:0.9fr 1.1fr; gap:60px; align-items:center;}
  .mission .eyebrow{color:var(--accent-500);}
  .mission h2{font-size:1.7rem; margin-top:14px; line-height:1.32; font-weight:600;}
  .mission-stats{display:grid; grid-template-columns:1fr 1fr; gap:30px;}
  .stat-num{font-family:'Space Grotesk',sans-serif; font-size:2.1rem; font-weight:700; color:var(--accent-500);}
  .stat-label{font-size:0.85rem; color:rgba(255,255,255,0.75); margin-top:6px; font-family:'Space Grotesk',sans-serif;}

  /* TEAM */
  .team{padding:90px 0; background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
  .team-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:36px; margin-top:10px; align-items:start;}
  .member{text-align:center;}
  .member .avatar{
    width:150px; height:150px; border-radius:50%; overflow:hidden; margin:0 auto 22px;
    border:3px solid var(--navy-700); background:var(--navy-700);
    display:flex; align-items:center; justify-content:center;
  }
  .member .avatar img{width:100%; height:100%; object-fit:cover;}
  .member .avatar .initials{font-family:'Space Grotesk',sans-serif; font-size:2.2rem; font-weight:700; color:#fff;}
  .member h3{font-size:1.05rem; color:var(--navy-900); margin-bottom:6px; font-weight:600;}
  .member .role{font-family:'Space Grotesk',sans-serif; font-size:0.78rem; color:var(--accent-600); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:6px; font-weight:600;}
  .member .affiliation{font-family:'Space Grotesk',sans-serif; font-size:0.76rem; color:var(--slate); margin-bottom:14px;}
  .member p{font-size:0.9rem; color:var(--slate); line-height:1.6; text-align:left;}
  .team-note{
    margin-top:44px; padding:20px 24px; background:var(--paper); border-left:3px solid var(--accent-500);
    font-family:'Space Grotesk',sans-serif; font-size:0.85rem; color:var(--slate);
  }

  /* STUDENTS TEASER */
  .students{padding:90px 0; background:var(--paper);}
  .students .wrap{display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:center;}
  .students img{border:1px solid var(--line);}
  .students .content .eyebrow{margin-bottom:14px; display:block;}
  .students h2{font-size:1.85rem; color:var(--navy-900); font-weight:700; margin-bottom:18px;}
  .students p{color:var(--slate); margin-bottom:26px; font-size:0.98rem;}
  .students ul{list-style:none; margin-bottom:30px;}
  .students li{padding-left:24px; position:relative; margin-bottom:12px; color:var(--ink); font-size:0.98rem;}
  .students li::before{content:''; position:absolute; left:0; top:9px; width:8px; height:8px; background:var(--accent-500);}

  /* REGISTRATION FORM */
  .apply{padding:90px 0; background:var(--navy-900); color:#fff;}
  .apply .wrap{max-width:760px;}
  .apply .section-head p{color:rgba(255,255,255,0.75);}
  .apply .section-head h2{color:#fff;}
  form.apply-form{margin-top:20px; display:grid; grid-template-columns:1fr 1fr; gap:22px;}
  .field{display:flex; flex-direction:column; gap:8px;}
  .field.full{grid-column:1 / -1;}
  .field label{font-family:'Space Grotesk',sans-serif; font-size:0.85rem; font-weight:600; color:rgba(255,255,255,0.9);}
  .field input, .field select, .field textarea{
    font-family:'Source Serif 4', serif; font-size:0.95rem; padding:13px 14px;
    border:1.5px solid rgba(255,255,255,0.3); background:rgba(255,255,255,0.06); color:#fff; border-radius:2px;
  }
  .field input::placeholder, .field textarea::placeholder{color:rgba(255,255,255,0.45);}
  .field select option{color:#000;}
  .field textarea{resize:vertical; min-height:110px;}
  .field input:focus, .field select:focus, .field textarea:focus{outline:2px solid var(--accent-500); border-color:var(--accent-500);}
  .apply-form .submit-row{grid-column:1 / -1; display:flex; align-items:center; gap:18px; margin-top:6px;}
  .apply-form .btn-primary{background:var(--accent-500); color:var(--navy-900);}
  .apply-form .btn-primary:hover{background:#C9A227;}
  .apply-note{font-size:0.82rem; color:rgba(255,255,255,0.6);}

  /* FOOTER */
  footer{background:var(--navy-900); color:rgba(255,255,255,0.85); padding:56px 0 28px;}
  .footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; padding-bottom:40px; border-bottom:1px solid rgba(255,255,255,0.14);}
  footer h4{font-family:'Space Grotesk',sans-serif; font-size:0.8rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--accent-500); margin-bottom:16px;}
  footer ul{list-style:none;}
  footer li{margin-bottom:10px; font-size:0.92rem;}
  footer li a:hover{color:var(--accent-500);}
  .footer-bottom{display:flex; justify-content:space-between; padding-top:24px; font-size:0.8rem; color:rgba(255,255,255,0.55); font-family:'Space Grotesk',sans-serif;}
  .footer-logo{display:flex; align-items:center; gap:12px; margin-bottom:18px;}
  .footer-logo .logo-text{color:#fff;}
  .footer-logo .logo-text span{color:rgba(255,255,255,0.6);}

  @media (max-width: 880px){
    .nav-row{padding:14px 20px;}
    nav.primary{display:none;}
    nav.primary.mobile-open{
      display:flex; flex-direction:column; align-items:flex-start; gap:6px;
      position:absolute; top:100%; left:0; right:0; background:#fff;
      padding:18px 20px 24px; border-top:1px solid var(--line);
      box-shadow:0 14px 26px rgba(11,24,48,0.1);
    }
    nav.primary.mobile-open a, nav.primary.mobile-open .dropdown-trigger{padding:10px 0; width:100%;}
    .has-dropdown{width:100%;}
    .dropdown-menu{
      position:static; transform:none; opacity:1; visibility:visible; box-shadow:none; border:none;
      min-width:0; padding:0 0 0 14px; display:none; margin-top:0;
    }
    .has-dropdown.open .dropdown-menu{display:block;}
    .has-dropdown.open .dropdown-trigger svg{transform:rotate(180deg);}
    .dropdown-trigger{width:100%; justify-content:space-between;}
    .menu-toggle{display:block;}
    .hero-grid{grid-template-columns:1fr; gap:40px;}
    .hero h1{font-size:2rem;}
    .hero{padding:44px 0 40px;}
    .wrap{padding:0 20px;}
    .news-grid{grid-template-columns:1fr; gap:24px;}
    .news-item{border-left:none; padding-left:0; border-top:1px solid rgba(255,255,255,0.18); padding-top:20px;}
    .news-item:first-child{border-top:none; padding-top:0;}
    .cards{grid-template-columns:1fr;}
    .mission .wrap, .students .wrap{grid-template-columns:1fr;}
    .mission-stats{grid-template-columns:1fr 1fr;}
    .footer-grid{grid-template-columns:1fr; gap:32px;}
    .footer-bottom{flex-direction:column; gap:8px; align-items:flex-start;}
    .molecule-track{flex-wrap:wrap;}
    .connector{display:none;}
    .team-grid{grid-template-columns:1fr; gap:36px;}
    form.apply-form{grid-template-columns:1fr;}
  }
/* ===== INNER PAGES ===== */

/* Page hero (simple banner) */
.page-hero{padding:64px 0 46px; border-bottom:1px solid var(--line);}
.page-hero .eyebrow{margin-bottom:14px; display:block;}
.page-hero h1{font-size:2.1rem; color:var(--navy-900); font-weight:700; line-height:1.18; margin-bottom:16px;}
.page-hero p{font-size:1rem; color:var(--slate); max-width:60ch;}

.content-section{padding:70px 0;}
.content-section.alt{background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.prose{max-width:72ch; font-size:0.98rem; color:var(--ink);}
.prose p{margin-bottom:20px;}
.prose h2{font-size:1.4rem; color:var(--navy-900); margin:8px 0 16px; font-weight:700;}

/* Two-column layout for inner pages */
.split{display:grid; grid-template-columns:1fr 1fr; gap:60px; align-items:start;}

/* Timeline (Profil) */
.timeline{position:relative; margin-top:8px; padding-left:32px; border-left:2px solid var(--line);}
.timeline-item{position:relative; padding-bottom:34px;}
.timeline-item:last-child{padding-bottom:0;}
.timeline-item::before{content:''; position:absolute; left:-39px; top:4px; width:12px; height:12px; border-radius:50%; background:var(--accent-500); border:2px solid var(--navy-900);}
.timeline-year{font-family:'Space Grotesk',sans-serif; font-size:0.75rem; font-weight:700; color:var(--accent-600); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:4px;}
.timeline-item h3{font-size:1.02rem; color:var(--navy-900); margin-bottom:4px; font-weight:600;}
.timeline-item p{color:var(--slate); font-size:0.9rem;}

/* Affiliations list */
.affil-list{list-style:none; margin-top:8px;}
.affil-list li{padding:16px 0; border-bottom:1px solid var(--line); font-size:0.94rem;}
.affil-list li:first-child{padding-top:0;}
.affil-list strong{color:var(--navy-900); font-family:'Space Grotesk',sans-serif; display:block; margin-bottom:3px; font-size:0.95rem;}
.affil-list span{color:var(--slate); font-size:0.88rem;}

/* Publications */
.filter-bar{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:40px;}
.filter-btn{font-family:'Space Grotesk',sans-serif; font-size:0.8rem; font-weight:600; padding:9px 18px; border:1.5px solid var(--line); border-radius:20px; color:var(--slate); background:#fff; cursor:pointer; transition:all .2s ease;}
.filter-btn.active, .filter-btn:hover{border-color:var(--navy-700); color:var(--navy-700);}

.pub-card{background:#fff; border:1px solid var(--line); padding:32px; margin-bottom:22px; display:grid; grid-template-columns:96px 1fr; gap:26px;}
.pub-year-badge{font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:1.2rem; color:var(--navy-700); background:var(--paper); display:flex; align-items:center; justify-content:center; height:64px; border:1px solid var(--line); align-self:start;}
.pub-card h3{font-size:1.05rem; color:var(--navy-900); margin-bottom:8px; font-weight:600; line-height:1.42;}
.pub-card .pub-meta{font-family:'Space Grotesk',sans-serif; font-size:0.75rem; color:var(--accent-600); text-transform:uppercase; letter-spacing:0.05em; margin-bottom:10px; font-weight:600;}
.pub-card p{color:var(--slate); font-size:0.9rem; margin-bottom:14px;}
.placeholder-note{margin-top:24px; padding:22px 24px; background:var(--paper); border-left:3px solid var(--accent-500); font-family:'Space Grotesk',sans-serif; font-size:0.83rem; color:var(--slate); line-height:1.6;}

/* Events / Lab meetings */
.meeting-highlight{background:var(--navy-700); color:#fff; padding:42px; display:grid; grid-template-columns:auto 1fr; gap:32px; align-items:center; margin-bottom:56px;}
.meeting-highlight .big-day{font-family:'Space Grotesk',sans-serif; font-weight:700; font-size:1.9rem; color:var(--accent-500); text-align:center; border-right:1px solid rgba(255,255,255,0.2); padding-right:32px;}
.meeting-highlight .big-day span{display:block; font-size:0.72rem; font-weight:500; text-transform:uppercase; letter-spacing:0.08em; color:rgba(255,255,255,0.7); margin-top:6px;}
.meeting-highlight h2{font-size:1.22rem; margin-bottom:10px; font-weight:600;}
.meeting-highlight p{color:rgba(255,255,255,0.8); font-size:0.9rem;}

.event-card{display:flex; gap:24px; background:#fff; border:1px solid var(--line); padding:26px; margin-bottom:18px; align-items:flex-start;}
.event-date{font-family:'Space Grotesk',sans-serif; text-align:center; flex-shrink:0; width:72px; background:var(--navy-700); color:#fff; padding:12px 6px; border-radius:2px;}
.event-date .day{font-size:1.3rem; font-weight:700; line-height:1;}
.event-date .month{font-size:0.62rem; text-transform:uppercase; letter-spacing:0.06em; margin-top:4px;}
.event-card h3{font-size:1rem; color:var(--navy-900); margin-bottom:6px; font-weight:600;}
.event-card p{color:var(--slate); font-size:0.88rem;}
.event-tag{display:inline-block; font-family:'Space Grotesk',sans-serif; font-size:0.68rem; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:var(--accent-600); margin-bottom:6px;}

/* Media / Actualités */
.media-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:26px;}
.media-card{background:#fff; border:1px solid var(--line); padding:30px; display:flex; flex-direction:column;}
.media-card .eyebrow{margin-bottom:12px; display:block;}
.media-card h3{font-size:1rem; color:var(--navy-900); margin-bottom:10px; font-weight:600; line-height:1.42;}
.media-card p{color:var(--slate); font-size:0.87rem; margin-bottom:16px; flex-grow:1;}
.media-card .date{font-family:'Space Grotesk',sans-serif; font-size:0.74rem; color:var(--slate);}

/* Contact */
.contact-grid{display:grid; grid-template-columns:0.85fr 1.15fr; gap:60px;}
.contact-info h3{font-size:0.95rem; color:var(--navy-900); margin:26px 0 8px; font-weight:600; font-family:'Space Grotesk',sans-serif;}
.contact-info h3:first-child{margin-top:0;}
.contact-info p, .contact-info a{color:var(--slate); font-size:0.95rem;}
.contact-info a:hover{color:var(--accent-600);}
.map-placeholder{margin-top:10px; height:170px; background:var(--paper); border:1px dashed var(--line); display:flex; align-items:center; justify-content:center; color:var(--slate); font-family:'Space Grotesk',sans-serif; font-size:0.8rem; text-align:center; padding:12px;}

/* Light form variant (Contact) */
.form-card{background:var(--white); border:1px solid var(--line); padding:40px;}
.field-light label{color:var(--navy-700);}
.field-light input, .field-light select, .field-light textarea{
  font-family:'Source Serif 4', serif; font-size:1rem; padding:13px 14px;
  border:1.5px solid var(--line); background:#fff; color:var(--ink); border-radius:2px; width:100%;
}
.field-light input::placeholder, .field-light textarea::placeholder{color:var(--slate);}
.field-light input:focus, .field-light select:focus, .field-light textarea:focus{outline:2px solid var(--accent-500); border-color:var(--accent-500);}
.field-light textarea{resize:vertical; min-height:120px;}

/* Responsive — inner pages */
@media (max-width: 880px){
  .split, .contact-grid{grid-template-columns:1fr;}
  .pub-card{grid-template-columns:1fr;}
  .pub-year-badge{width:80px;}
  .media-grid{grid-template-columns:1fr;}
  .meeting-highlight{grid-template-columns:1fr; text-align:center;}
  .meeting-highlight .big-day{border-right:none; border-bottom:1px solid rgba(255,255,255,0.2); padding-right:0; padding-bottom:20px;}
  .event-card{flex-direction:column;}
  .page-hero h1{font-size:1.7rem;}
  .video-feature{padding:50px 0;}
  .course-card{padding:22px;}
}

/* PHOTO GALLERY (Laboratoire — vie du labo) */
.gallery-grid{display:grid; grid-template-columns:1.3fr 1fr; gap:20px; margin-top:10px;}
.gallery-grid img{width:100%; height:100%; object-fit:cover; border:1px solid var(--line);}
.gallery-grid .gallery-main{grid-row:span 2;}
.gallery-stack{display:flex; flex-direction:column; gap:20px;}
.flyer-feature{display:grid; grid-template-columns:0.85fr 1.15fr; gap:48px; align-items:center;}
.flyer-feature img{width:100%; border:1px solid var(--line);}
@media (max-width:880px){
  .gallery-grid{grid-template-columns:1fr;}
  .gallery-grid .gallery-main{grid-row:auto;}
  .flyer-feature{grid-template-columns:1fr;}
}

/* Media card with real thumbnail image */
.media-card.has-image{padding:0; overflow:hidden;}
.media-card.has-image img{width:100%; height:170px; object-fit:cover; display:block;}
.media-card.has-image .media-body{padding:26px;}

/* Publication card with image thumbnail */
.pub-card.has-image{grid-template-columns:140px 1fr;}
.pub-card.has-image img{width:100%; height:100%; object-fit:cover; border:1px solid var(--line);}
@media (max-width:880px){
  .pub-card.has-image{grid-template-columns:1fr;}
}

/* Press clipping thumbnail (Profil) */
.press-clip{margin-top:24px; display:flex; gap:16px; align-items:flex-start; background:var(--white); border:1px solid var(--line); padding:18px;}
.press-clip img{width:90px; border:1px solid var(--line); flex-shrink:0;}
.press-clip .press-caption{font-family:'Space Grotesk',sans-serif; font-size:0.78rem; color:var(--slate); line-height:1.5;}

/* Real logo image (header + footer) */
.logo-img{height:34px; width:auto; display:block;}
.footer-logo-img{height:30px; width:auto; display:block;}

/* Location / map section (Accueil) */
.location{padding:80px 0; background:var(--white); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.location .wrap{display:grid; grid-template-columns:0.85fr 1.15fr; gap:48px; align-items:center;}
.location-info h3{font-family:'Space Grotesk',sans-serif; font-size:1.05rem; color:var(--navy-900); margin:20px 0 8px; font-weight:600;}
.location-info p{color:var(--slate); font-size:0.95rem; line-height:1.6;}
.location-info p a{color:var(--accent-600);}
.map-embed{width:100%; height:320px; border:1px solid var(--line); overflow:hidden;}
.map-embed iframe{width:100%; height:100%; border:0; display:block;}
@media (max-width:880px){
  .location .wrap{grid-template-columns:1fr;}
  .map-embed{height:260px;}
}

/* Course cards (Profil — Enseignement) */
.course-card{background:#fff; border:1px solid var(--line); padding:28px; margin-bottom:18px;}
.course-card .course-head{display:flex; justify-content:space-between; align-items:flex-start; gap:16px; margin-bottom:10px; flex-wrap:wrap;}
.course-card h3{font-size:1.05rem; color:var(--navy-900); font-weight:600;}
.course-term{font-family:'Space Grotesk',sans-serif; font-size:0.72rem; font-weight:700; text-transform:uppercase; letter-spacing:0.05em; color:#fff; background:var(--navy-700); padding:5px 12px; white-space:nowrap;}
.course-card p{color:var(--slate); font-size:0.9rem; line-height:1.6;}
.course-card .prereq{margin-top:10px; font-size:0.83rem; color:var(--slate); font-style:italic;}

/* Typewriter cursor for hero headline */
.typing-cursor{
  display:inline-block; width:3px; height:0.85em; background:var(--navy-900);
  margin-left:4px; vertical-align:-0.1em; animation:blink 0.9s step-end infinite;
}
@media (prefers-reduced-motion: reduce){
  .typing-cursor{animation:none; opacity:0;}
}
@keyframes blink{0%,49%{opacity:1;} 50%,100%{opacity:0;}}

/* Portrait focus-in on load */
@keyframes focusIn{
  from{filter:blur(7px); opacity:0.75; transform:scale(1.025);}
  to{filter:blur(0); opacity:1; transform:scale(1);}
}
.focus-in-img{animation:focusIn 1.1s ease-out both;}
@media (prefers-reduced-motion: reduce){
  .focus-in-img{animation:none;}
}

/* Photo hover zoom utility */
.img-zoom{overflow:hidden; display:block; border:1px solid var(--line);}
.img-zoom img{border:none !important;}
.img-zoom img{transition:transform 0.6s cubic-bezier(.2,.7,.3,1); display:block; width:100%; height:100%; object-fit:cover;}
.img-zoom:hover img{transform:scale(1.06);}
@media (prefers-reduced-motion: reduce){
  .img-zoom img{transition:none;}
  .img-zoom:hover img{transform:none;}
}

/* Zoom for card thumbnails that already clip via overflow:hidden on the card */
.media-card.has-image img{transition:transform 0.6s cubic-bezier(.2,.7,.3,1);}
.media-card.has-image:hover img{transform:scale(1.06);}

/* ECG pulse line — decorative background in Mission section */
.mission{position:relative; overflow:hidden;}
.ecg-line{
  position:absolute; top:50%; left:0; width:200%; height:80px; transform:translateY(-50%);
  opacity:0.14; pointer-events:none; z-index:0;
}
.ecg-line svg{width:100%; height:100%; display:block;}
.ecg-line{animation:ecgScroll 14s linear infinite;}
@keyframes ecgScroll{from{transform:translate(0,-50%);} to{transform:translate(-50%,-50%);}}
.mission .wrap{position:relative; z-index:1;}
@media (prefers-reduced-motion: reduce){
  .ecg-line{animation:none; opacity:0.08;}
}

/* Scroll progress "thread" — signature element, echoes the molecule motif */
.scroll-thread{
  position:fixed; left:16px; top:0; bottom:0; width:3px; z-index:150;
  pointer-events:none; display:none;
}
.scroll-thread .track{position:absolute; inset:0; background:rgba(11,24,48,0.08);}
.scroll-thread .fill{
  position:absolute; top:0; left:0; width:100%; height:100%;
  background:linear-gradient(to bottom, var(--navy-700), var(--accent-500));
  transform:scaleY(0); transform-origin:top;
}
.scroll-thread .node{
  position:absolute; left:50%; width:9px; height:9px; border-radius:50%;
  background:var(--accent-500); border:2px solid var(--paper);
  transform:translate(-50%,-50%); transition:top 0.05s linear;
}
@media (min-width:1300px){
  .scroll-thread{display:block;}
}
@media (prefers-reduced-motion: reduce){
  .scroll-thread{display:none;}
}

/* Institutional partners strip */
.partners-strip{background:var(--paper); padding:32px 0; border-bottom:1px solid var(--line);}
.partners-strip .wrap{display:flex; align-items:center; justify-content:center; gap:40px; flex-wrap:wrap;}
.partners-strip .partners-label{
  font-family:'Space Grotesk',sans-serif; font-size:0.72rem; font-weight:700; text-transform:uppercase;
  letter-spacing:0.1em; color:var(--slate); margin-right:8px;
}
.partners-strip .partner-name{
  font-family:'Space Grotesk',sans-serif; font-size:0.92rem; font-weight:600; color:var(--navy-700);
  white-space:nowrap; opacity:0.85;
}
.partners-strip .divider{width:1px; height:16px; background:var(--line);}
@media (max-width:880px){
  .partners-strip .wrap{gap:20px;}
  .partners-strip .divider{display:none;}
}

/* ===== 404 PAGE ===== */
.error-page{min-height:70vh; display:flex; align-items:center; justify-content:center; text-align:center; padding:60px 32px;}
.error-page .error-code{font-family:'Space Grotesk',sans-serif; font-size:6rem; font-weight:700; color:var(--accent-500); line-height:1;}
.error-page h1{font-size:1.9rem; color:var(--navy-900); margin:16px 0 14px; font-weight:700;}
.error-page p{color:var(--slate); font-size:1.05rem; max-width:48ch; margin:0 auto 30px;}

/* ===== PRINT STYLESHEET ===== */
@media print{
  header, footer, .molecule-divider, .news-band, .quick-access, .mission, .team,
  .students, .partners-strip, .scroll-thread, .location, .apply, .filter-bar,
  .skip-link, .nav-cta, .btn, .ecg-line{ display:none !important; }
  body{ background:#fff !important; color:#000 !important; font-size:12pt; }
  .page-hero{ border-bottom:1px solid #999; padding:20px 0; }
  .page-hero h1{ color:#000 !important; }
  .content-section{ padding:20px 0 !important; }
  .content-section.alt{ background:#fff !important; border:none !important; }
  a{ color:#000 !important; text-decoration:underline; }
  .timeline-item::before{ background:#000 !important; }
  .card, .pub-card, .event-card, .media-card, .course-card{ border:1px solid #ccc !important; break-inside:avoid; }
  .wrap{ max-width:100% !important; padding:0 16px !important; }
}

/* Institutional partner logos strip (real logos, placed lower on the page) */
.partners-logos{padding:56px 0; background:var(--white); border-top:1px solid var(--line);}
.partners-logos .partners-label{
  text-align:center; font-family:'Space Grotesk',sans-serif; font-size:0.72rem; font-weight:700;
  text-transform:uppercase; letter-spacing:0.12em; color:var(--slate); margin-bottom:32px;
}
.partners-logos .logo-row{display:flex; align-items:center; justify-content:center; gap:56px; flex-wrap:wrap;}
.partners-logos .logo-row a{display:block; line-height:0;}
.partners-logos .logo-row img{height:38px; width:auto; opacity:0.9; transition:opacity 0.25s ease;}
.partners-logos .logo-row a:hover img{opacity:1;}
@media (max-width:880px){
  .partners-logos .logo-row{gap:32px;}
  .partners-logos .logo-row img{height:30px;}
}

/* Video embed inside media card */
.media-card.has-image video{width:100%; height:170px; object-fit:cover; display:block; background:#000;}

/* Video feature section (Accueil) */
.video-feature{padding:80px 0; background:var(--white); border-bottom:1px solid var(--line);}
.video-feature .wrap{max-width:840px; text-align:center;}
.video-feature h2{font-size:1.9rem; color:var(--navy-900); margin-top:12px; font-weight:700;}
.video-feature p{color:var(--slate); margin-top:14px; font-size:1.05rem; max-width:56ch; margin-left:auto; margin-right:auto;}
.video-feature .video-frame{margin-top:32px; border:1px solid var(--line); overflow:hidden;}
.video-feature video{width:100%; display:block; background:#000;}

/* Social follow strip (Accueil) */
.social-strip{padding:64px 0; background:var(--navy-700); border-top:1px solid var(--line);}
.social-strip .wrap{text-align:center;}
.social-strip .eyebrow{color:var(--accent-500); margin-bottom:10px; display:block;}
.social-strip h2{font-size:1.6rem; color:#fff; font-weight:700; margin-bottom:30px;}
.social-row{display:flex; align-items:center; justify-content:center; gap:18px; flex-wrap:wrap;}
.social-btn{
  display:flex; align-items:center; gap:10px; font-family:'Space Grotesk',sans-serif; font-weight:600; font-size:0.92rem;
  padding:13px 24px; border:1.5px solid rgba(255,255,255,0.3); color:#fff; transition:border-color 0.2s ease, background 0.2s ease;
}
.social-btn:hover{border-color:var(--accent-500); background:rgba(201,162,39,0.1);}
.social-btn svg{width:19px; height:19px; flex-shrink:0;}
.social-btn.linkedin svg{color:#0A66C2;}
.social-btn.instagram svg{color:#F77737;}
.social-btn.youtube svg{color:#FF0000;}
.social-btn.disabled{opacity:0.45; cursor:default; pointer-events:none;}
.social-btn .soon{font-size:0.72rem; font-weight:500; opacity:0.8; margin-left:2px;}

/* Language switcher — now lives inside the nav (desktop row / mobile menu) */
.lang-switch{display:flex; align-items:center; gap:4px; font-family:'Space Grotesk',sans-serif; font-size:0.8rem; font-weight:600;}
.lang-switch a{padding:5px 8px; color:var(--slate);}
.lang-switch a.active, .lang-switch span.active{color:var(--navy-900); text-decoration:underline; text-underline-offset:3px; padding:5px 8px;}
.lang-switch a:hover{color:var(--accent-600);}
.lang-switch .sep{color:var(--line);}
@media (max-width:880px){
  nav.primary.mobile-open .lang-switch{margin-top:10px; padding-top:14px; border-top:1px solid var(--line); width:100%;}
}
