:root{--navy:#071d49;--blue:#0839a8;--azure:#087cbc;--cyan:#23b5c5;--gold:#e2aa4f;--cream:#f5f1e8;--ink:#111b2d;--muted:#647087;--white:#fff;--line:#dce2ea;--shell:min(1240px,calc(100% - 48px))}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:'DM Sans',sans-serif;background:#fff;line-height:1.6}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.shell{width:var(--shell);margin-inline:auto}.skip-link{position:fixed;top:8px;left:8px;z-index:9999;background:#fff;padding:10px 16px;transform:translateY(-150%)}.skip-link:focus{transform:none}.topbar{background:var(--navy);color:#dbe5ff;font-size:.74rem;letter-spacing:.04em}.topbar-inner{height:36px;display:flex;align-items:center;justify-content:space-between}.topbar-inner>span:before{content:'';display:inline-block;width:6px;height:6px;background:var(--cyan);border-radius:50%;margin-right:9px}.topbar .moduletable{margin-left:auto;margin-right:24px}.site-header{background:#fff;position:relative;z-index:50;border-bottom:1px solid #edf0f5}.header-inner{height:92px;display:flex;align-items:center;gap:30px}.brand{width:280px;overflow:hidden}.brand img{width:100%;height:48px;object-fit:cover;object-position:left center}.primary-nav{margin-left:auto}.primary-nav ul{display:flex;gap:30px;align-items:center;list-style:none;margin:0;padding:0}.primary-nav a{font-size:.86rem;font-weight:600}.primary-nav a:hover,.primary-nav .current>a{color:var(--blue)}.header-cta,.button{display:inline-flex;align-items:center;justify-content:center;gap:18px;font-weight:600}.header-cta{background:var(--blue);color:white;padding:13px 18px;font-size:.84rem}.menu-toggle{display:none}.hero{height:650px;position:relative;overflow:hidden;color:#fff;display:flex;align-items:center;background:var(--navy)}.hero-media{position:absolute;inset:0;background:url('../images/hero-campus.jpg') center 47%/cover no-repeat;filter:saturate(.82)}.hero-wash{position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,19,51,.94) 0%,rgba(4,24,66,.73) 45%,rgba(4,24,66,.12) 78%),linear-gradient(0deg,rgba(4,19,51,.25),transparent 60%)}.hero-content{position:relative;z-index:2;padding-bottom:25px}.eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.22em;font-weight:600;margin:0 0 18px;color:#9fd5ee}.eyebrow:before{content:'';display:inline-block;width:34px;height:1px;background:currentColor;vertical-align:middle;margin-right:12px}.eyebrow.blue{color:var(--blue)}.eyebrow.gold{color:var(--gold)}h1,h2,h3{font-family:'Playfair Display',serif;line-height:1.08;margin-top:0}h1{font-size:clamp(3.5rem,6.2vw,6rem);letter-spacing:-.045em;margin-bottom:24px}h1 em{color:#8bdbe3;font-weight:600}.hero-copy{max-width:610px;font-size:1.05rem;color:#e2e9f6;margin:0 0 34px}.hero-actions{display:flex;align-items:center;gap:28px}.button{padding:14px 20px}.button-light{background:#fff;color:var(--navy)}.button-dark{background:var(--navy);color:white}.text-link{font-weight:600;border-bottom:1px solid rgba(255,255,255,.45);padding:10px 0}.hero-note{position:absolute;right:0;bottom:0;background:var(--cyan);color:var(--navy);padding:24px 44px 22px 30px;z-index:3;min-width:260px}.hero-note strong,.hero-note span{display:block}.hero-note span{font-size:.8rem}.matisse-shape{position:absolute;z-index:1;background:var(--cyan);opacity:.9;clip-path:polygon(14% 3%,31% 22%,56% 4%,51% 30%,82% 26%,62% 47%,92% 65%,60% 66%,69% 96%,44% 74%,24% 95%,28% 65%,0 69%,21% 48%,0 31%,31% 34%)}.shape-a{width:145px;height:145px;right:9%;top:11%;transform:rotate(20deg);opacity:.2}.shape-b{width:75px;height:75px;left:56%;bottom:10%;background:var(--gold);opacity:.8}.quick{position:relative;z-index:4;background:#fff}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);box-shadow:0 18px 55px rgba(7,29,73,.12);transform:translateY(-24px)}.quick-grid>a{min-height:116px;padding:24px 22px;display:flex;align-items:center;gap:15px;border-right:1px solid var(--line);background:#fff}.quick-grid>a:hover{background:var(--cream)}.quick-grid>a:last-child{border:0}.quick-icon{font-family:'Playfair Display';color:var(--cyan);font-size:1.3rem}.quick-grid b,.quick-grid small{display:block}.quick-grid b{font-size:.9rem}.quick-grid small{color:var(--muted);font-size:.72rem}.quick-grid i{font-style:normal;margin-left:auto}.section{padding:105px 0}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:42px}.section h2{font-size:clamp(2.4rem,4vw,4.25rem);letter-spacing:-.035em;margin-bottom:0;max-width:800px}.outline-link{font-size:.84rem;font-weight:600;padding-bottom:6px;border-bottom:1px solid var(--ink)}.news-section{background:#f7f9fc}.news-grid{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:22px}.news-card{background:white;transition:transform .25s,box-shadow .25s}.news-card:hover{transform:translateY(-5px);box-shadow:0 20px 45px rgba(7,29,73,.1)}.card-image{height:235px;position:relative;overflow:hidden;background:#dfe5ee}.featured .card-image{height:320px}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.news-card:hover img{transform:scale(1.035)}.card-image span{position:absolute;left:16px;top:16px;background:#fff;color:var(--blue);padding:5px 9px;text-transform:uppercase;font-size:.62rem;letter-spacing:.12em;font-weight:600}.card-body{padding:25px}.card-body time{font-size:.72rem;color:var(--muted)}.card-body h3{font-size:1.55rem;margin:12px 0}.featured h3{font-size:2rem}.card-body p{color:var(--muted);font-size:.9rem}.card-body b{display:block;font-size:.75rem;margin-top:22px;color:var(--blue)}.vision{background:var(--navy);color:#fff;position:relative;overflow:hidden}.vision:after{content:'M';position:absolute;right:-40px;bottom:-190px;font-family:'Playfair Display';font-size:33rem;color:rgba(255,255,255,.025);line-height:1}.vision-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:100px;position:relative;z-index:1}.vision-grid>div>p{color:#c2cce1;max-width:550px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:48px}.stats div{border-top:2px solid var(--cyan);padding-top:15px}.stats strong,.stats span{display:block}.stats strong{font-family:'Playfair Display';font-size:1.05rem}.stats span{font-size:.68rem;color:#9ca9c2;margin-top:6px}.main-content:not(.home-main){padding-top:70px;padding-bottom:90px;min-height:50vh}.home-main:empty{display:none}.footer{background:#051632;color:#b8c4d9;padding:75px 0 25px}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:55px}.footer h3{font-family:'DM Sans';text-transform:uppercase;letter-spacing:.14em;color:white;font-size:.72rem}.footer p,.footer li,.footer a{font-size:.8rem}.footer ul{list-style:none;padding:0}.footer li{margin:8px 0}.footer-brand img{width:270px;height:44px;object-fit:cover;object-position:left;filter:brightness(0) invert(1);margin-bottom:22px}.footer-brand p{font-family:'Playfair Display';font-size:1.2rem;color:#fff}.footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:55px;padding-top:22px;display:flex;justify-content:space-between;font-size:.68rem}.error-page{background:var(--cream);min-height:100vh;display:grid;place-items:center}.error-page main{width:min(700px,calc(100% - 48px))}.error-page h1{color:var(--navy)}.error-page h1 em{color:var(--blue)}
@media(max-width:980px){.header-cta{display:none}.menu-toggle{display:flex;margin-left:auto;border:0;background:none;flex-direction:column;gap:4px;align-items:flex-end}.menu-toggle span{display:block;width:25px;height:2px;background:var(--navy)}.menu-toggle b{font-size:.62rem}.primary-nav{display:none;position:absolute;left:0;right:0;top:92px;background:#fff;padding:24px}.primary-nav.is-open{display:block}.primary-nav ul{align-items:flex-start;flex-direction:column}.hero{height:610px}.quick-grid{grid-template-columns:repeat(2,1fr)}.news-grid{grid-template-columns:1fr 1fr}.featured{grid-column:1/-1}.vision-grid{grid-template-columns:1fr;gap:35px}.footer-grid{grid-template-columns:1.5fr 1fr}.shape-b{display:none}}
@media(max-width:640px){:root{--shell:calc(100% - 32px)}.topbar-inner>span{display:none}.topbar-inner{justify-content:flex-end}.header-inner{height:76px}.brand{width:220px}.primary-nav{top:76px}.hero{height:620px;align-items:flex-end;padding-bottom:75px}.hero-wash{background:linear-gradient(0deg,rgba(4,19,51,.95) 0%,rgba(4,24,66,.55) 75%,rgba(4,24,66,.2))}.hero h1{font-size:3.35rem}.hero-copy{font-size:.92rem}.hero-actions{align-items:flex-start;flex-direction:column;gap:7px}.hero-note{display:none}.quick-grid{grid-template-columns:1fr;transform:none;width:100%}.quick-grid>a{min-height:88px}.section{padding:75px 0}.section-head{align-items:flex-start;gap:25px;flex-direction:column}.news-grid{grid-template-columns:1fr}.featured{grid-column:auto}.featured .card-image,.card-image{height:235px}.stats{grid-template-columns:1fr}.vision-grid{gap:25px}.footer-grid{grid-template-columns:1fr;gap:25px}.footer-bottom{align-items:flex-start;gap:12px;flex-direction:column}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
body.is-fluid{--shell:calc(100% - 48px)}

/* Accès institutionnels du bandeau supérieur */
.topbar-actions{display:flex;align-items:center;gap:18px;margin-left:auto;white-space:nowrap}
.topbar .moduletable+.topbar-actions{margin-left:0}
.topbar-actions a{display:inline-flex;align-items:center;gap:7px;transition:color .2s,border-color .2s,background .2s}
.topbar-actions a:hover,.topbar-actions a:focus-visible{color:#fff}
.topbar-actions a:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.topbar-actions .topbar-ai{padding:3px 9px;border:1px solid rgba(226,170,79,.48);border-radius:999px;color:#fff;font-weight:700;letter-spacing:.055em}
.topbar-actions .topbar-ai:hover,.topbar-actions .topbar-ai:focus-visible{border-color:var(--gold);background:rgba(226,170,79,.12)}
.topbar-ai span{color:var(--gold);font-size:.7rem}
@media(max-width:640px){.topbar-actions{gap:12px}.topbar-actions .topbar-ai{padding:2px 8px}.topbar-actions a{font-size:.76rem}}

/* En-tête, logo officiel et menu Joomla */
.header-inner{height:108px;gap:24px}
.brand{width:275px;flex:0 0 275px;overflow:visible}
.brand img{width:275px;height:82px;object-fit:contain;object-position:left center}
.primary-nav{align-self:stretch;display:flex;align-items:stretch}
.primary-nav>.moduletable,.primary-nav>.mod-menu{display:flex;align-items:stretch}
.primary-nav .mod-menu{display:flex;align-items:stretch;gap:24px;list-style:none;margin:0;padding:0}
.primary-nav .mod-menu>li{position:relative;display:flex;align-items:stretch}
.primary-nav .mod-menu>li>a,
.primary-nav .mod-menu>li>button,
.primary-nav .mod-menu>li>span{display:flex;align-items:center;gap:7px;padding:0;border:0;background:none;color:var(--ink);font:600 .8rem/1.2 'DM Sans',sans-serif;letter-spacing:.015em;white-space:nowrap;cursor:pointer}
.primary-nav .mod-menu>li>a:after,
.primary-nav .mod-menu>li>button:after{content:'';position:absolute;left:0;right:0;bottom:24px;height:2px;background:var(--blue);transform:scaleX(0);transform-origin:left;transition:transform .2s ease}
.primary-nav .mod-menu>li.current>a:after,
.primary-nav .mod-menu>li.active>a:after,
.primary-nav .mod-menu>li:hover>a:after,
.primary-nav .mod-menu>li:focus-within>a:after{transform:scaleX(1)}
.primary-nav .mod-menu>li.deeper>a:before,
.primary-nav .mod-menu>li.parent>a:before{content:'⌄';order:2;color:var(--blue);font-size:.8rem;transform:translateY(-1px)}
.primary-nav li>ul{position:absolute;z-index:100;top:calc(100% - 14px);left:-20px;display:block;min-width:245px;margin:0;padding:10px;background:#fff;border-top:3px solid var(--blue);box-shadow:0 18px 45px rgba(7,29,73,.16);list-style:none;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility .2s}
.primary-nav li:hover>ul,.primary-nav li:focus-within>ul{opacity:1;visibility:visible;transform:none}
.primary-nav li>ul li{position:relative;display:block}
.primary-nav li>ul a,.primary-nav li>ul button,.primary-nav li>ul span{display:block;width:100%;padding:11px 12px;border:0;background:none;color:var(--ink);font:500 .78rem/1.35 'DM Sans',sans-serif;text-align:left}
.primary-nav li>ul a:hover,.primary-nav li>ul a:focus,.primary-nav li>ul .current>a{background:#eef3ff;color:var(--blue)}
.primary-nav li>ul ul{top:-3px;left:calc(100% + 10px)}

/* Images des actualités : format identique, image entière visible */
.card-image,.featured .card-image{height:260px;background:#eef2f7}
.card-image img{width:100%;height:100%;padding:8px;object-fit:contain;object-position:center;background:#eef2f7}
.news-card:hover .card-image img{transform:none}
.news-section .mod-articlesnews,.news-section .mod-articles-category,.news-section .newsflash{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.news-section .mod-articlesnews>article,.news-section .mod-articles-category>li,.news-section .newsflash>article{overflow:hidden;background:#fff;box-shadow:0 8px 24px rgba(7,29,73,.07)}
.news-section .mod-articlesnews img,.news-section .mod-articles-category img,.news-section .newsflash img{display:block;width:100%;height:260px;padding:8px;object-fit:contain;object-position:center;background:#eef2f7}
.news-section figure,.news-section .newsflash-image{margin:0;width:100%}

/* Le logo couleur reste lisible sur le pied de page sombre */
.footer-brand img{width:270px;height:auto;padding:9px;background:#fff;border-radius:3px;object-fit:contain;filter:none}

@media(max-width:1120px){
  .header-cta{display:none}
  .primary-nav .mod-menu{gap:18px}
}
@media(max-width:980px){
  .header-inner{height:94px}
  .brand,.brand img{width:235px}
  .brand{flex-basis:235px}
  .brand img{height:82px}
  .primary-nav{display:none;top:94px;max-height:calc(100vh - 94px);overflow:auto;align-self:auto}
  .primary-nav.is-open{display:block}
  .primary-nav>.moduletable,.primary-nav>.mod-menu{display:block}
  .primary-nav .mod-menu{display:block}
  .primary-nav .mod-menu>li{display:block;border-bottom:1px solid var(--line)}
  .primary-nav .mod-menu>li>a,.primary-nav .mod-menu>li>button,.primary-nav .mod-menu>li>span{min-height:48px;width:100%}
  .primary-nav .mod-menu>li>a:after,.primary-nav .mod-menu>li>button:after{display:none}
  .primary-nav li>ul,.primary-nav li>ul ul{position:static;display:block;min-width:0;margin:0 0 10px;padding:0 0 0 13px;border:0;border-left:2px solid var(--cyan);box-shadow:none;opacity:1;visibility:visible;transform:none}
  .news-section .mod-articlesnews,.news-section .mod-articles-category,.news-section .newsflash{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  .header-inner{height:84px}
  .brand,.brand img{width:205px}
  .brand{flex-basis:205px}
  .brand img{height:74px}
  .primary-nav{top:84px;max-height:calc(100vh - 84px)}
  .card-image,.featured .card-image,.news-section .mod-articlesnews img,.news-section .mod-articles-category img,.news-section .newsflash img{height:220px}
  .news-section .mod-articlesnews,.news-section .mod-articles-category,.news-section .newsflash{grid-template-columns:1fr}
}

/* Contrôles de sous-menu Joomla : accessibles, mais non affichés comme liens */
.primary-nav .visually-hidden,
.primary-nav .sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
.primary-nav .mod-menu>li>button.mm-collapsible,
.primary-nav .mod-menu>li>.mm-collapsible{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}

/* Position Showcase : visuels plus compacts et centrés */
.showcase-section{padding:72px 0;background:#fff}
.showcase-section img{display:block;width:auto;max-width:min(100%,900px);max-height:420px;margin-inline:auto;object-fit:contain;object-position:center}
.showcase-section figure{margin:0 auto;text-align:center}
@media(max-width:640px){.showcase-section{padding:48px 0}.showcase-section img{max-height:300px}}

/* Encadrement éditorial fin et doré pour le Showcase */
.showcase-section img{padding:7px;background:#fff;border:1px solid rgba(226,170,79,.78);box-shadow:0 0 0 5px #fff,0 0 0 6px rgba(226,170,79,.34),0 16px 38px rgba(7,29,73,.11)}
.showcase-section a:focus-visible img{outline:3px solid var(--blue);outline-offset:8px}

/* Liens Lire la suite : discrets, lisibles et élégants */
.readmore{margin:17px 0 0}
.readmore .btn,
.readmore>a,
.news-section a.readmore,
.news-section .mod-articlesnews__readmore{display:inline-flex;align-items:center;gap:7px;width:auto;padding:4px 0;border:0;border-bottom:1px solid var(--gold);border-radius:0;background:transparent;box-shadow:none;color:var(--blue);font:600 .74rem/1.4 'DM Sans',sans-serif;letter-spacing:.035em;text-decoration:none;transition:color .2s,border-color .2s}
.readmore .btn:after,
.readmore>a:after,
.news-section a.readmore:after,
.news-section .mod-articlesnews__readmore:after{content:'→';font-size:.9rem;transition:transform .2s}
.readmore .btn:hover,
.readmore>a:hover,
.news-section a.readmore:hover,
.news-section .mod-articlesnews__readmore:hover{color:var(--navy);border-color:var(--cyan)}
.readmore .btn:hover:after,
.readmore>a:hover:after,
.news-section a.readmore:hover:after,
.news-section .mod-articlesnews__readmore:hover:after{transform:translateX(3px)}
.card-body b{display:inline-flex;align-items:center;margin-top:18px;padding-bottom:3px;border-bottom:1px solid var(--gold);color:var(--blue);font-size:.72rem;letter-spacing:.035em}

/* Composants Joomla sur les pages intérieures */
.inner-main .page-header h1,.inner-main .page-header h2,.inner-main .item-title,.inner-main .blog h1{color:var(--navy);font-size:clamp(2rem,4vw,3.7rem)}
.inner-main .item-page,.inner-main .blog,.inner-main .contact,.inner-main .categories-list{max-width:980px;margin-inline:auto}
.inner-main .item-page img,.inner-main .blog-item img{height:auto;border-radius:2px}
.inner-main .article-info{color:var(--muted);font-size:.78rem}
.inner-main table{width:100%;border-collapse:collapse}.inner-main th,.inner-main td{padding:12px;border-bottom:1px solid var(--line);text-align:left}.inner-main th{color:var(--navy)}
.inner-main input,.inner-main textarea,.inner-main select{max-width:100%;padding:10px 12px;border:1px solid #cbd3df;border-radius:2px;background:#fff}
.inner-main .btn-primary{padding:10px 17px;border:1px solid var(--blue);background:var(--blue);color:#fff}

/* Pages intérieures en pleine largeur */
.is-inner .inner-main{width:min(1600px,calc(100% - 64px));max-width:none}
.inner-main .item-page,
.inner-main .com-content-article,
.inner-main .blog,
.inner-main .com-content-category-blog,
.inner-main .contact,
.inner-main .categories-list{width:100%;max-width:none;margin-inline:0}
.inner-main .com-content-article__body,
.inner-main .item-page>div,
.inner-main .blog-items{max-width:none}
.inner-main .com-content-article__body:after{content:'';display:block;clear:both}
@media(max-width:980px){.is-inner .inner-main{width:calc(100% - 48px)}}
@media(max-width:640px){.is-inner .inner-main{width:calc(100% - 32px)}}

/* Lisibilité renforcée sur téléphone */
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
h1,h2,h3,.footer-brand p{font-family:Georgia,'Times New Roman',serif}
@media(max-width:640px){
  html{font-size:17px}
  body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:1rem;line-height:1.68}
  h1,h2,h3,.footer-brand p{font-family:Georgia,'Times New Roman',serif}
  .primary-nav .mod-menu>li>a,.primary-nav .mod-menu>li>button,.primary-nav .mod-menu>li>span{font-size:1rem;line-height:1.4}
  .primary-nav li>ul a,.primary-nav li>ul button,.primary-nav li>ul span{font-size:.94rem;line-height:1.5}
  .topbar{font-size:.8rem}
  .hero-copy,.vision-grid>div>p,.card-body p{font-size:1rem}
  .eyebrow{font-size:.75rem;letter-spacing:.16em}
  .quick-grid b{font-size:1rem}.quick-grid small{font-size:.84rem}
  .card-body time,.card-body b,.readmore .btn,.readmore>a,.news-section a.readmore,.news-section .mod-articlesnews__readmore{font-size:.84rem}
  .card-body h3{font-size:1.45rem}.featured h3{font-size:1.6rem}
  .stats strong{font-size:1.1rem}.stats span{font-size:.82rem}
  .footer h3{font-size:.8rem}.footer p,.footer li,.footer a{font-size:.92rem}.footer-bottom{font-size:.78rem}
  .inner-main .article-info{font-size:.86rem}
}
