  :root{
    --navy:#081b3a;
    --blue:#1d4ed8;
    --blue-deep:#123a99;
    --ice:#eef4fc;
    --white:#ffffff;
    --cyan:#00c2d1;
    --ink:#0b1830;
    --muted:#5c6b84;
    --line:#d7e3f5;
    --radius:14px;
    --maxw:1180px;
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    margin:0;
    background:var(--white);
    color:var(--ink);
    font-family:'Space Grotesk', sans-serif;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,.serif{font-family:'Fraunces', serif;}
  .mono{font-family:'IBM Plex Mono', monospace;}
  a{color:inherit;text-decoration:none;}
  img{max-width:100%;}
  .wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px;}
  ::selection{background:var(--cyan);color:var(--navy);}

  /* Skip link / focus */
  a:focus-visible, button:focus-visible, input:focus-visible{
    outline:3px solid var(--cyan);
    outline-offset:2px;
  }

  /* ---------- HEADER ---------- */
  header{
    position:sticky; top:0; z-index:50;
    background:rgba(255,255,255,0.9);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
  }
  .nav{
    display:flex; align-items:center; justify-content:space-between;
    padding:16px 32px; max-width:var(--maxw); margin:0 auto;
  }
  .brand{display:flex;align-items:center;gap:10px;font-family:'Fraunces',serif;font-weight:700;font-size:1.25rem;color:var(--navy);}
  .brand .crest{
    width:36px;height:36px;border-radius:8px;
    background:linear-gradient(155deg,var(--blue),var(--navy));
    display:flex;align-items:center;justify-content:center;
    color:white;font-family:'Fraunces',serif;font-weight:700;font-size:1rem;
    flex-shrink:0;
  }
  .brand small{display:block;font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:0.62rem;letter-spacing:0.08em;color:var(--muted);text-transform:uppercase;}
  nav.links{display:flex;gap:28px;font-size:0.92rem;font-weight:500;color:var(--ink);}
  nav.links a{position:relative;padding:4px 0;}
  nav.links a::after{
    content:'';position:absolute;left:0;bottom:-2px;height:2px;width:0;
    background:var(--cyan);transition:width .25s ease;
  }
  nav.links a:hover::after{width:100%;}
  .btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:11px 22px;border-radius:999px;font-weight:600;font-size:0.9rem;
    border:1px solid transparent;cursor:pointer;transition:transform .2s ease, box-shadow .2s ease;
  }
  .btn-primary{background:var(--blue);color:white;box-shadow:0 6px 18px rgba(29,78,216,0.35);}
  .btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(29,78,216,0.45);}
  .btn-ghost{border-color:var(--line);color:var(--navy);background:white;}
  .btn-ghost:hover{border-color:var(--blue);color:var(--blue);}
  .menu-toggle{display:none;background:none;border:none;font-size:1.6rem;color:var(--navy);cursor:pointer;}

  /* ---------- HERO ---------- */
  .hero{
    position:relative; overflow:hidden;
    background:radial-gradient(120% 100% at 100% 0%, #eaf1fd 0%, var(--white) 55%);
    padding:96px 0 60px;
  }
  .hero .wrap{display:grid;grid-template-columns:1.05fr 0.95fr;gap:56px;align-items:center;}
  .eyebrow{
    display:inline-flex;align-items:center;gap:8px;
    font-family:'IBM Plex Mono',monospace;font-size:0.74rem;letter-spacing:0.09em;text-transform:uppercase;
    color:var(--blue-deep);background:var(--ice);border:1px solid var(--line);
    padding:6px 14px;border-radius:999px;margin-bottom:22px;
  }
  .eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);animation:pulse 1.8s infinite;}
  @keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}}
  .hero h1{
    font-size:clamp(2.3rem,4.2vw,3.6rem);
    line-height:1.06; font-weight:600; color:var(--navy); margin:0 0 22px;
    letter-spacing:-0.01em;
  }
  .hero h1 em{font-style:italic;color:var(--blue);}
  .hero p.lead{font-size:1.08rem;color:var(--muted);max-width:520px;margin:0 0 32px;}
  .hero-cta{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:44px;}
  .trust-row{display:flex;gap:28px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:22px;}
  .trust-row div{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--navy);}
  .trust-row span{display:block;font-size:0.74rem;color:var(--muted);font-weight:500;margin-top:2px;}
  .trust-note{margin:10px 0 0;font-size:0.72rem;color:var(--muted);}

  /* Signature visual: circuit -> helix */
  .signature{position:relative;aspect-ratio:1/1;max-height:480px;}
  .signature svg{width:100%;height:100%;}
  .sig-path{fill:none;stroke-linecap:round;stroke-linejoin:round;}
  .sig-node{fill:var(--cyan);}
  .sig-label{font-family:'IBM Plex Mono',monospace;font-size:9px;fill:var(--muted);}

  /* ---------- SECTION HEADS ---------- */
  section{padding:88px 0;}
  .section-head{max-width:640px;margin:0 auto 56px;text-align:left;}
  .section-head .eyebrow{margin-bottom:16px;}
  .section-head h2{font-size:clamp(1.8rem,3vw,2.5rem);color:var(--navy);font-weight:600;margin:0 0 14px;line-height:1.15;}
  .section-head p{color:var(--muted);font-size:1.02rem;margin:0;}
  .alt-bg{background:var(--ice);}

  /* ---------- PROGRAM CLUSTERS ---------- */
  .cluster{
    display:grid;grid-template-columns:340px 1fr;gap:0;
    border:1px solid var(--line);border-radius:20px;overflow:hidden;background:white;
    margin-bottom:32px;
  }
  .cluster:last-child{margin-bottom:0;}
  .cluster-intro{
    padding:40px 36px;color:white;position:relative;
    display:flex;flex-direction:column;justify-content:space-between;
  }
  .cluster-intro.tech{background:linear-gradient(160deg,var(--navy),var(--blue-deep));}
  .cluster-intro.bio{background:linear-gradient(160deg,#063b3f,#0a7a72);}
  .cluster-tag{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;letter-spacing:0.1em;text-transform:uppercase;opacity:0.75;margin-bottom:14px;}
  .cluster-intro h3{font-size:1.6rem;font-weight:600;margin:0 0 12px;line-height:1.2;}
  .cluster-intro p{font-size:0.92rem;opacity:0.85;margin:0;}
  .cluster-tracks{display:grid;grid-template-columns:repeat(3,1fr);}
  .cluster-tracks.cols-4{grid-template-columns:repeat(4,1fr);}
  @media (max-width:1100px){.cluster-tracks.cols-4{grid-template-columns:repeat(2,1fr);}}
  .track{
    padding:32px 26px;border-left:1px solid var(--line);
    display:flex;flex-direction:column;gap:12px;transition:background .2s ease;
  }
  .cluster-tracks .track:first-child{border-left:none;}
  .track:hover{background:var(--ice);}
  .track .icon{
    width:42px;height:42px;border-radius:10px;background:var(--ice);
    display:flex;align-items:center;justify-content:center;color:var(--blue);
  }
  .cluster-intro.bio ~ .cluster-tracks .track .icon{color:#0a7a72;background:#e8f7f5;}
  .track h4{margin:0;font-size:1.02rem;font-weight:600;color:var(--navy);}
  .track p{margin:0;font-size:0.87rem;color:var(--muted);}

  @media (max-width:900px){
    .cluster{grid-template-columns:1fr;}
    .cluster-tracks, .cluster-tracks.cols-4{grid-template-columns:1fr;}
    .cluster-tracks .track{border-left:none;border-top:1px solid var(--line);}
  }

  /* ---------- APPROACH ---------- */
  .approach-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line);}
  .approach-item{padding:34px 28px;border-right:1px solid var(--line);}
  .approach-item:last-child{border-right:none;}
  .approach-item .mono{color:var(--cyan);font-size:0.78rem;letter-spacing:0.08em;}
  .approach-item h4{margin:14px 0 10px;font-size:1.08rem;color:var(--navy);font-family:'Fraunces',serif;font-weight:600;}
  .approach-item p{margin:0;color:var(--muted);font-size:0.9rem;}
  @media (max-width:900px){
    .approach-grid{grid-template-columns:1fr 1fr;}
    .approach-item{border-bottom:1px solid var(--line);}
  }
  @media (max-width:560px){.approach-grid{grid-template-columns:1fr;}}
  .approach-grid.cols-3{grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-top:1px solid var(--line);border-radius:16px;overflow:hidden;}
  @media (max-width:900px){.approach-grid.cols-3{grid-template-columns:1fr;}}

  /* ---------- HISTOIRE / FONDATION ---------- */
  .history-block{display:grid;grid-template-columns:1.1fr 0.9fr;gap:48px;align-items:start;}
  .history-text h2{font-size:clamp(1.7rem,2.8vw,2.2rem);color:var(--navy);font-weight:600;margin:0 0 18px;line-height:1.2;}
  .history-text p{color:var(--muted);font-size:0.98rem;margin:0 0 16px;}
  .history-facts{display:flex;flex-direction:column;gap:16px;}
  .fact-card{background:white;border:1px solid var(--line);border-radius:16px;padding:22px 24px;}
  .fact-card .mono{display:block;color:var(--cyan);font-size:0.72rem;letter-spacing:0.08em;margin-bottom:8px;}
  .fact-card strong{display:block;font-family:'Fraunces',serif;font-size:1.15rem;color:var(--navy);margin-bottom:8px;}
  .fact-card p{margin:0;color:var(--muted);font-size:0.86rem;}
  @media (max-width:860px){.history-block{grid-template-columns:1fr;}}

  /* ---------- QUOTE ---------- */
  .quote-block{
    background:var(--navy);color:white;border-radius:24px;padding:64px 56px;
    display:grid;grid-template-columns:auto 1fr;gap:36px;align-items:center;
    position:relative;overflow:hidden;
  }
  .quote-block::before{
    content:'"';position:absolute;top:-40px;left:20px;font-family:'Fraunces',serif;
    font-size:220px;color:rgba(255,255,255,0.06);line-height:1;
  }
  .quote-mark{
    width:56px;height:56px;border-radius:50%;background:var(--cyan);color:var(--navy);
    display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-size:1.8rem;font-weight:700;
    flex-shrink:0;
  }
  .quote-block blockquote{margin:0 0 18px;font-family:'Fraunces',serif;font-size:1.4rem;line-height:1.4;font-weight:500;}
  .quote-block cite{font-style:normal;font-size:0.88rem;color:#a9c0ea;}

  /* ---------- ADMISSION ---------- */
  .admission{
    background:linear-gradient(135deg,var(--blue) 0%, var(--blue-deep) 55%, var(--navy) 100%);
    border-radius:24px;color:white;padding:64px 56px;
    display:grid;grid-template-columns:1.2fr 0.8fr;gap:40px;align-items:center;
    position:relative;overflow:hidden;
  }
  .admission::after{
    content:'';position:absolute;inset:0;
    background-image:radial-gradient(circle at 85% 20%, rgba(0,194,209,0.25), transparent 45%);
  }
  .admission h2{margin:0 0 14px;font-size:2rem;font-weight:600;position:relative;}
  .admission p{color:#dce8fb;margin:0 0 28px;max-width:440px;position:relative;}
  .steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px;position:relative;}
  .steps li{display:flex;gap:14px;align-items:flex-start;font-size:0.94rem;}
  .steps .num{
    width:26px;height:26px;flex-shrink:0;border-radius:50%;border:1px solid rgba(255,255,255,0.4);
    display:flex;align-items:center;justify-content:center;font-family:'IBM Plex Mono',monospace;font-size:0.72rem;
  }
  @media (max-width:860px){.admission,.quote-block{grid-template-columns:1fr;padding:44px 28px;}}

  /* ---------- FOOTER ---------- */
  footer{background:var(--navy);color:#b9c8e6;padding:64px 0 28px;}
  .footer-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px;}
  .footer-grid h5{color:white;font-size:0.82rem;letter-spacing:0.06em;text-transform:uppercase;margin:0 0 16px;font-weight:600;}
  .footer-grid ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:0.9rem;}
  .footer-grid ul a:hover{color:var(--cyan);}
  .footer-brand p{font-size:0.88rem;color:#8fa4cc;max-width:280px;}
  .footer-bottom{border-top:1px solid rgba(255,255,255,0.1);padding-top:22px;display:flex;justify-content:space-between;font-size:0.8rem;color:#7488ae;flex-wrap:wrap;gap:10px;}
  @media (max-width:860px){.footer-grid{grid-template-columns:1fr 1fr;}}

  /* ---------- CHATBOT ---------- */
  #chat-toggle{
    position:fixed;bottom:26px;right:26px;z-index:200;
    width:60px;height:60px;border-radius:50%;
    background:linear-gradient(155deg,var(--blue),var(--navy));
    color:white;border:none;cursor:pointer;
    box-shadow:0 10px 30px rgba(10,30,70,0.35);
    display:flex;align-items:center;justify-content:center;
    transition:transform .2s ease;
  }
  #chat-toggle:hover{transform:scale(1.06);}
  #chat-toggle svg{width:26px;height:26px;}
  .chat-panel{
    position:fixed;bottom:98px;right:26px;z-index:200;
    width:340px;max-width:calc(100vw - 40px);
    height:460px;max-height:calc(100vh - 150px);
    background:white;border-radius:18px;border:1px solid var(--line);
    box-shadow:0 24px 60px rgba(10,30,70,0.25);
    display:flex;flex-direction:column;overflow:hidden;
    opacity:0;transform:translateY(16px) scale(0.98);pointer-events:none;
    transition:opacity .22s ease, transform .22s ease;
  }
  .chat-panel.open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto;}
  .chat-head{
    background:linear-gradient(155deg,var(--navy),var(--blue-deep));color:white;
    padding:16px 18px;display:flex;align-items:center;gap:10px;
  }
  .chat-head .dot{width:8px;height:8px;border-radius:50%;background:#4ade80;}
  .chat-head strong{font-size:0.92rem;}
  .chat-head span{display:block;font-size:0.72rem;color:#b9c8e6;}
  .chat-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;background:#f8fafd;}
  .msg{max-width:80%;padding:10px 13px;border-radius:14px;font-size:0.87rem;line-height:1.4;}
  .msg.bot{background:white;border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px;align-self:flex-start;}
  .msg.user{background:var(--blue);color:white;border-bottom-right-radius:4px;align-self:flex-end;}
  .chat-suggestions{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 12px;background:#f8fafd;}
  .chip{
    font-size:0.74rem;padding:6px 10px;border-radius:999px;border:1px solid var(--line);
    background:white;color:var(--blue-deep);cursor:pointer;transition:.15s ease;
  }
  .chip:hover{background:var(--ice);border-color:var(--blue);}
  .chat-input{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line);background:white;}
  .chat-input input{
    flex:1;border:1px solid var(--line);border-radius:999px;padding:10px 14px;
    font-family:inherit;font-size:0.87rem;outline:none;
  }
  .chat-input input:focus{border-color:var(--blue);}
  .chat-input button{
    width:38px;height:38px;border-radius:50%;border:none;background:var(--blue);color:white;
    cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  }
  .chat-input button:hover{background:var(--blue-deep);}

  @media (max-width:760px){
    nav.links{display:none;}
    .menu-toggle{display:block;}
    .hero .wrap{grid-template-columns:1fr;}
    .signature{max-height:300px;order:-1;}
    .footer-grid{grid-template-columns:1fr;}
  }

  /* ---------- SHARED LIST INSIDE CARDS ---------- */
  .approach-item ul{margin:0;padding-left:18px;color:var(--muted);font-size:0.88rem;display:flex;flex-direction:column;gap:4px;}

  /* ---------- CAMPAIGN HERO (GMU MON AVENIR) ---------- */
  .campaign-hero{
    background:linear-gradient(160deg,var(--navy) 0%, var(--blue-deep) 60%, var(--blue) 100%);
    color:white;text-align:center;padding:110px 0 90px;position:relative;overflow:hidden;
  }
  .campaign-hero::before{
    content:'';position:absolute;inset:0;
    background-image:radial-gradient(circle at 15% 20%, rgba(0,194,209,0.25), transparent 40%),
                      radial-gradient(circle at 85% 80%, rgba(0,194,209,0.18), transparent 45%);
  }
  .campaign-hero .wrap{position:relative;}
  .campaign-badge{
    display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',monospace;
    font-size:0.72rem;letter-spacing:0.12em;text-transform:uppercase;color:#bcd3f7;
    border:1px solid rgba(255,255,255,0.25);padding:6px 16px;border-radius:999px;margin-bottom:26px;
  }
  .campaign-hero h1{
    font-size:clamp(2.4rem,5.5vw,4.2rem);font-weight:700;margin:0 0 18px;line-height:1.05;
  }
  .campaign-hero p.lead{
    font-size:1.1rem;color:#cfe0fa;max-width:560px;margin:0 auto 50px;
  }
  .cta-grid{
    display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:820px;margin:0 auto;
  }
  .cta-card{
    background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.18);
    border-radius:18px;padding:28px 26px;text-align:left;display:flex;gap:18px;align-items:center;
    transition:transform .2s ease, background .2s ease, border-color .2s ease;
    backdrop-filter:blur(6px);
  }
  .cta-card:hover{transform:translateY(-4px);background:rgba(255,255,255,0.12);border-color:rgba(255,255,255,0.35);}
  .cta-card .cta-icon{
    width:52px;height:52px;border-radius:14px;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    background:var(--cyan);color:var(--navy);
  }
  .cta-card.whatsapp .cta-icon{background:#25D366;color:white;}
  .cta-card .cta-icon.photo{
    width:68px;height:68px;border-radius:16px;
    background-size:cover;background-position:center;
    position:relative;border:2px solid rgba(255,255,255,0.3);
    color:transparent;
  }
  .cta-card .cta-icon.photo .badge{
    position:absolute;bottom:-6px;right:-6px;width:24px;height:24px;border-radius:50%;
    background:var(--cyan);color:var(--navy);display:flex;align-items:center;justify-content:center;
    border:2px solid #0a1d4a;
  }
  .cta-card .cta-icon.photo .badge svg{width:13px;height:13px;}
  .cta-card .cta-text strong{display:block;font-family:'Fraunces',serif;font-size:1.08rem;font-weight:600;color:white;margin-bottom:4px;}
  .cta-card .cta-text span{display:block;font-size:0.82rem;color:#c8d9f4;}
  @media (max-width:640px){.cta-grid{grid-template-columns:1fr;}}

  /* ---------- SPECIALTY CARDS (parcours pages) ---------- */
  .specialty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
  .specialty-grid.cols-2{grid-template-columns:repeat(2,1fr);}
  .specialty-card{background:white;border:1px solid var(--line);border-radius:18px;padding:30px 26px;display:flex;flex-direction:column;gap:16px;}
  .specialty-card .specialty-tag{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;letter-spacing:0.08em;color:var(--cyan);text-transform:uppercase;}
  .specialty-card h3{margin:0;font-size:1.2rem;color:var(--navy);}
  .specialty-card h5{margin:6px 0 0;font-size:0.76rem;letter-spacing:0.06em;text-transform:uppercase;color:var(--muted);}
  .specialty-card ul{margin:0;padding-left:18px;color:var(--muted);font-size:0.88rem;display:flex;flex-direction:column;gap:5px;}
  @media (max-width:900px){.specialty-grid, .specialty-grid.cols-2{grid-template-columns:1fr;}}

  /* ---------- FUNNEL ---------- */
  .funnel{
    display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:center;
    font-family:'IBM Plex Mono',monospace;font-size:0.82rem;color:var(--blue-deep);
    background:var(--ice);border:1px solid var(--line);border-radius:14px;padding:18px 20px;
  }
  .funnel .arrow{color:var(--cyan);}

  /* ---------- FAQ ACCORDION ---------- */
  .faq-list{display:flex;flex-direction:column;gap:12px;}
  .faq-item{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:white;}
  .faq-question{
    width:100%;text-align:left;background:none;border:none;cursor:pointer;
    padding:18px 22px;display:flex;justify-content:space-between;align-items:center;gap:16px;
    font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:0.95rem;color:var(--navy);
  }
  .faq-question .chev{transition:transform .2s ease;color:var(--blue);flex-shrink:0;}
  .faq-item.open .faq-question .chev{transform:rotate(180deg);}
  .faq-answer{max-height:0;overflow:hidden;transition:max-height .25s ease;}
  .faq-answer p{margin:0;padding:0 22px 20px;color:var(--muted);font-size:0.9rem;}
  .faq-item.open .faq-answer{max-height:220px;}

  /* ---------- TESTIMONIAL ---------- */
  .testimonial-card{
    display:flex;align-items:center;gap:24px;background:white;border:1px solid var(--line);
    border-radius:18px;padding:28px 30px;flex-wrap:wrap;
  }
  .testimonial-avatar{
    width:64px;height:64px;border-radius:50%;flex-shrink:0;
    background:linear-gradient(155deg,var(--blue),var(--navy));color:white;
    display:flex;align-items:center;justify-content:center;font-family:'Fraunces',serif;font-weight:700;font-size:1.3rem;
  }
  .testimonial-card strong{display:block;color:var(--navy);font-size:1.02rem;}
  .testimonial-card span{display:block;color:var(--muted);font-size:0.86rem;margin-top:2px;}
  .testimonial-card .btn{margin-left:auto;}

  /* ---------- BADGE PILL (specialty chips in hero) ---------- */
  .pill-row{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 32px;}
  .pill{
    font-family:'IBM Plex Mono',monospace;font-size:0.74rem;letter-spacing:0.05em;
    padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--ice);color:var(--blue-deep);
  }

  /* ---------- TIMELINE (parcours en 3 ans) ---------- */
  .timeline-3{display:flex;gap:0;border:1px solid var(--line);border-radius:16px;overflow:hidden;margin:0 0 40px;}
  .timeline-3 .tl-step{flex:1;padding:22px 20px;border-right:1px solid var(--line);}
  .timeline-3 .tl-step:last-child{border-right:none;background:var(--ice);}
  .timeline-3 .tl-step .mono{color:var(--cyan);font-size:0.7rem;letter-spacing:0.08em;}
  .timeline-3 .tl-step strong{display:block;margin-top:6px;color:var(--navy);font-size:0.98rem;}
  @media (max-width:700px){.timeline-3{flex-direction:column;}.timeline-3 .tl-step{border-right:none;border-bottom:1px solid var(--line);}}

  /* Alt gradient for bio pages */
  .bio-gradient{background:linear-gradient(160deg,#063b3f 0%, #0a7a72 100%) !important;}

  /* ---------- GALERIE / INFRASTRUCTURES ---------- */
  .gallery-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    grid-auto-rows:218px;
    gap:18px;
  }
  @media (max-width:980px){.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:200px;}}
  .gallery-item{
    position:relative;overflow:hidden;border-radius:16px;
    border:1px solid var(--line);background:var(--ice);
    margin:0;height:100%;
  }
  .gallery-item img{
    width:100%;height:100%;object-fit:cover;display:block;
    transition:transform .45s ease;
  }
  .gallery-item:hover img{transform:scale(1.05);}
  .gallery-item figcaption{
    position:absolute;left:0;right:0;bottom:0;
    padding:26px 18px 14px;
    background:linear-gradient(to top, rgba(8,27,58,0.88), rgba(8,27,58,0));
    color:white;font-size:0.86rem;font-weight:500;
  }
  .gallery-item.wide{grid-column:span 2;grid-row:span 2;}
  .gallery-item.tall{grid-row:span 2;}
  @media (max-width:980px){
    .gallery-item.wide{grid-column:span 2;grid-row:span 1;}
    .gallery-item.tall{grid-row:span 1;}
  }
  @media (max-width:700px){
    .gallery-grid{grid-template-columns:1fr;grid-auto-rows:210px;}
    .gallery-item.wide{grid-column:span 1;}
  }

  /* ---------- MENU MOBILE ---------- */
  .menu-toggle{
    display:none;background:none;border:1px solid var(--line);
    border-radius:10px;width:44px;height:44px;
    align-items:center;justify-content:center;
    color:var(--navy);cursor:pointer;flex-shrink:0;
  }
  .menu-toggle svg{width:22px;height:22px;}
  .menu-toggle .icon-close{display:none;}
  .menu-toggle[aria-expanded="true"] .icon-open{display:none;}
  .menu-toggle[aria-expanded="true"] .icon-close{display:block;}
  body.nav-open{overflow:hidden;}

  /* ---------- RESPONSIVE GÉNÉRAL ---------- */
  @media (max-width:1024px){
    nav.links{gap:20px;font-size:0.86rem;}
    section{padding:72px 0;}
  }

  @media (max-width:860px){
    .wrap{padding:0 24px;}
    .nav{padding:14px 24px;}
    section{padding:60px 0;}
    .hero{padding:72px 0 48px;}
    .section-head{margin-bottom:40px;}
    .quote-block blockquote{font-size:1.15rem;}
    .admission h2{font-size:1.6rem;}
    .cluster-intro{padding:32px 26px;}
    .track{padding:26px 22px;}
  }

  @media (max-width:760px){
    /* le bouton hamburger remplace la navigation horizontale */
    .menu-toggle{display:flex;}
    .nav > .btn-primary{display:none;}
    nav.links{
      display:flex;position:fixed;inset:0 0 0 auto;
      width:min(82vw,320px);height:100dvh;
      flex-direction:column;align-items:stretch;gap:0;
      background:white;border-left:1px solid var(--line);
      box-shadow:-20px 0 50px rgba(8,27,58,0.18);
      padding:92px 26px 32px;z-index:60;
      transform:translateX(100%);transition:transform .28s ease;
      overflow-y:auto;
    }
    nav.links.open{transform:translateX(0);}
    nav.links a{
      padding:16px 0;border-bottom:1px solid var(--line);
      font-size:1rem;font-weight:600;color:var(--navy);
    }
    nav.links a::after{display:none;}
    .nav-backdrop{
      position:fixed;inset:0;background:rgba(8,27,58,0.45);
      z-index:55;opacity:0;pointer-events:none;transition:opacity .28s ease;
    }
    .nav-backdrop.open{opacity:1;pointer-events:auto;}
    .brand{font-size:1.05rem;}
    .brand img{width:88px;height:auto;}
    .hero .wrap{gap:36px;}
    .hero p.lead{font-size:1rem;}
    .hero-cta{margin-bottom:34px;}
    .hero-cta .btn{flex:1 1 auto;justify-content:center;}
    .trust-row{gap:20px;}
    .trust-row div{font-size:1.25rem;}
    .campaign-hero{padding:72px 0 64px;}
    .campaign-hero p.lead{margin-bottom:36px;}
    .cta-card{padding:22px 20px;gap:14px;}
    .footer-bottom{flex-direction:column;align-items:flex-start;}
  }

  @media (max-width:560px){
    .wrap{padding:0 18px;}
    .nav{padding:12px 18px;}
    section{padding:48px 0;}
    .hero{padding:56px 0 40px;}
    .eyebrow{font-size:0.68rem;padding:5px 12px;}
    .quote-block,.admission{padding:36px 22px;border-radius:18px;}
    .quote-block{gap:20px;}
    .quote-block blockquote{font-size:1.05rem;}
    .cluster{border-radius:16px;}
    .cluster-intro{padding:28px 22px;}
    .track{padding:22px 20px;}
    .specialty-card{padding:24px 20px;}
    .gallery-grid{grid-template-columns:1fr;gap:14px;}
    .trust-row{gap:14px 24px;}
    .trust-row div{font-size:1.15rem;}
    .trust-row span{font-size:0.7rem;}
    footer{padding:48px 0 24px;}
    .footer-grid{gap:30px;margin-bottom:34px;}
    /* chatbot adapté aux petits écrans */
    #chat-toggle{width:54px;height:54px;bottom:18px;right:18px;}
    .chat-panel{
      right:12px;left:12px;bottom:82px;width:auto;
      max-width:none;height:min(70dvh,460px);
    }
  }

  /* Écrans très larges */
  @media (min-width:1600px){
    :root{--maxw:1320px;}
  }

  /* Confort de lecture / accessibilité */
  @media (prefers-reduced-motion:reduce){
    *{animation-duration:0.01ms !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}
  }

  /* CTA repris dans le tiroir mobile */
  .nav-cta-mobile{display:none;}
  @media (max-width:760px){
    .nav-cta-mobile{
      display:block;margin-top:22px;text-align:center;
      background:var(--blue);color:white !important;
      padding:14px 20px !important;border-radius:999px;
      border-bottom:none !important;font-weight:600;
    }
  }

  /* Image du hero : remplir le cadre sans déformation */
  .signature{aspect-ratio:4/3;border-radius:20px;overflow:hidden;}
  .signature img{width:100%;height:100%;object-fit:cover;display:block;}

  /* Empêcher le tiroir mobile (hors écran) de créer un défilement horizontal */
  html,body{max-width:100%;overflow-x:hidden;}
  @media (max-width:760px){
    nav.links{visibility:hidden;}
    nav.links.open{visibility:visible;}
  }

  /* L'en-tête reste au-dessus du tiroir pour garder le bouton de fermeture accessible */
  @media (max-width:760px){
    header{z-index:70;}
  }
  @media (max-width:760px){
    .menu-toggle{position:relative;z-index:80;background:white;}
    .brand{position:relative;z-index:80;}
  }

  /* ---------- COMPTEURS (visiteurs / téléchargements) ---------- */
  .footer-stats{
    display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;
    color:#9fb2d6;
  }
  .footer-stats svg{flex-shrink:0;opacity:0.8;}
  .footer-stats .sep{opacity:0.5;margin:0 2px;}
  .footer-stats [data-counter]{font-weight:600;color:#cddbf5;font-family:'IBM Plex Mono',monospace;}
  @media (max-width:560px){
    .footer-bottom{gap:14px;}
    .footer-stats{width:100%;order:3;}
  }
