/* ==========================================================
FITZUNIVERSE — UNIVERSITÉS PARTENAIRES (universities.html)
Repose sur css/base.css + css/header.css (thème clair public) +
css/ai-suite.css (squelettes de chargement). Page publique, en accès
libre depuis le 2026-07-30 : le catalogue est une information
publique, jamais verrouillée derrière un compte ou une formule (voir
[[portal-transparency-philosophy]] dans la mémoire du projet).
========================================================== */

/* ==========================================================
BANNIÈRE
========================================================== */

/* ==========================================================
BANNIÈRE — voir css/catalog.css
==========================================================
Ce bloc a déménagé dans css/catalog.css le 2026-08-22 (section
« BANNIÈRE DE CATALOGUE »). Il était recopié à l'identique dans
scholarships.css ET universities.css — 349 lignes, identiques à deux
valeurs de marge près, vérifié au diff. Les deux pages de catalogue
doivent se ressembler au pixel et une correction sur l'une doit
valoir pour l'autre ; deux copies garantissaient l'inverse.

Ne rien redéfinir ici : css/catalog.css est chargée AVANT cette
feuille, toute règle réintroduite à cet endroit écraserait
silencieusement le système commun sur cette seule page.
========================================================== */

/* ==========================================================
CONTEXTE "FILTRÉ PAR BOURSE" — apparaît quand on arrive depuis une
carte de scholarships.html (?scholarship=...), pour que l'étudiant
comprenne pourquoi la liste ne montre pas tout le catalogue.
========================================================== */

.uni-scholarship-context{

display:flex;

align-items:center;

flex-wrap:wrap;

gap:10px;

padding:14px 20px;

margin-bottom:20px;

border-radius:var(--radius-md);

background:var(--background-light);

color:var(--primary-color);

font-size:.92rem;

}

.uni-scholarship-context > i,
.uni-scholarship-context > svg{ width:18px; height:18px; flex-shrink:0; }

.uni-scholarship-context strong{ color:var(--text-color); }

.uni-scholarship-context a{

display:inline-flex;

align-items:center;

gap:6px;

margin-left:auto;

font-weight:700;

color:var(--primary-color);

}

.uni-scholarship-context a i,
.uni-scholarship-context a svg{ width:14px; height:14px; }

.uni-scholarship-context a:hover{ text-decoration:underline; }

/* ==========================================================
BARRE DE RECHERCHE UNIFIÉE (partagée avec scholarships.css —
même classe .catalog-search-bar sur les deux pages, voir audit
du 2026-08-16 : les deux catalogues avaient chacun leur propre
recette de barre de recherche, désormais une seule).
========================================================== */
/* ==========================================================
RECHERCHE, RACCOURCIS PAYS, GROUPES — voir css/catalog.css
==========================================================
Ce bloc a déménagé dans css/catalog.css le 2026-08-22 (section
« BARRE DE FILTRES / RACCOURCIS PAYS / GROUPES PAR PAYS »). Il était recopié à l'identique dans
scholarships.css ET universities.css — 349 lignes, identiques à deux
valeurs de marge près, vérifié au diff. Les deux pages de catalogue
doivent se ressembler au pixel et une correction sur l'une doit
valoir pour l'autre ; deux copies garantissaient l'inverse.

Ne rien redéfinir ici : css/catalog.css est chargée AVANT cette
feuille, toute règle réintroduite à cet endroit écraserait
silencieusement le système commun sur cette seule page.
========================================================== */



.uni-results-count strong{ color:var(--text-color); }

/* ==========================================================
GRILLE DE CARTES
========================================================== */


/* ==========================================================
CARTE D'UNIVERSITÉ
==========================================================
Alignée le 2026-08-22 sur la carte de bourse (scholarships.css) :
mêmes rayons, même ombre, même bordure ambrée au survol, même
translation. Les deux catalogues s'enchaînent — une bourse mène à
ses universités partenaires — et deux cartes qui ne se ressemblent
pas donnaient l'impression de changer de site en cours de route.

Ce qui reste propre à cette carte : la photo en 4/3 (un campus se
regarde, une bourse est un document), le classement, l'échéance et
les variantes de cadrage quand plusieurs établissements partagent
la photo de leur ville.
========================================================== */

.uni-card{

position:relative;

display:flex;

flex-direction:column;

background:var(--background);

border-radius:var(--radius-lg);

overflow:hidden;

border:1px solid var(--border-color);

box-shadow:var(--shadow-xs);

cursor:pointer;

transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);

}

/* -6px, comme la carte de bourse : sur une grille dense un saut de
8px donne l'impression que la grille bouge sous le curseur. */
.uni-card:hover{

transform:translateY(-6px);

box-shadow:var(--shadow-lg);

border-color:var(--amber-500);

}

.uni-card:focus-visible{

outline:2px solid var(--amber-700);

outline-offset:3px;

}

.uni-card-media{

position:relative;

/* 16/10 plutôt que 4/3 : en trois colonnes, le 4/3 donnait une
vignette de 285px de haut — la photo occupait plus de place que le
nom de l'université, l'échéance et les niveaux réunis. */
aspect-ratio:16/10;

overflow:hidden;

background:var(--background-alt);

}

.uni-card-media img{

width:100%;

height:100%;

object-fit:cover;

transition:transform .55s var(--ease-premium);

}

.uni-card:hover .uni-card-media img{ transform:scale(1.05); }

/* Quand plusieurs établissements différents partagent la même photo de
ville (même ville, écoles distinctes), chaque occurrence reçoit un
cadrage et une teinte légèrement différents pour éviter l'effet de
vignettes identiques côte à côte. */
.uni-card-media--variant-1 img{object-position:30% 50%;filter:saturate(1.08);}
.uni-card-media--variant-2 img{object-position:70% 40%;filter:saturate(.92) brightness(1.03);}
.uni-card-media--variant-3 img{object-position:50% 65%;filter:saturate(1.04) hue-rotate(-4deg);}

/* Voile allégé (l'ancien montait à 94% d'opacité en bas : la moitié
basse de chaque photo disparaissait sous un aplat gris-bleu). Il
n'assombrit plus que ce qu'il doit rendre lisible — la ligne de
localisation posée en bas. */
.uni-card-media::after{

content:"";

position:absolute;

inset:0;

background:linear-gradient(to top, rgba(7,10,22,.80) 0%, rgba(7,10,22,.24) 46%, transparent 72%);

}

/* ---- Classement, en haut à gauche ---- */
.uni-card-rank{

position:absolute;

top:12px;

left:12px;

z-index:2;

display:flex;

align-items:center;

gap:5px;

padding:5px 11px;

border-radius:var(--radius-full);

background:rgba(7,10,22,.66);

backdrop-filter:blur(10px);
-webkit-backdrop-filter:blur(10px);

/* Blanc plein. --accent-color a été mesuré ici à ~1,8:1 une fois le
fond composité à 66% sur une photo claire — le 4,46:1 calculé
contre la valeur navy déclarée est un artefact qui ignore l'alpha. */
color:#fff;

font-weight:var(--fw-bold);

font-size:.73rem;

}

.uni-card-rank i,
.uni-card-rank svg{

width:13px;

height:13px;

flex-shrink:0;

/* L'ambre est le seul point de couleur de la vignette, et il tombe
sur le signal qui hiérarchise vraiment — le classement. */
color:var(--amber-500);

}

/* ---- Statut, en haut à droite ---- */
.uni-card-status{

position:absolute;

top:12px;

right:12px;

z-index:2;

display:flex;

align-items:center;

gap:6px;

padding:5px 11px 5px 9px;

border-radius:var(--radius-full);

background:rgba(7,10,22,.66);

backdrop-filter:blur(10px);
-webkit-backdrop-filter:blur(10px);

font-size:.72rem;

font-weight:var(--fw-bold);

/* Plus de capitales espacées : « OUVERT » criait plus fort que le nom
de l'université, qui est pourtant ce qu'on vient lire.
rgba(255,255,255,.78) tient 9:1 sur ce fond — --text-muted, calibré
pour un fond clair, n'y tenait que ~3,5:1. */
color:rgba(255,255,255,.78);

}

.uni-card-status::before{

content:"";

width:7px;

height:7px;

border-radius:50%;

background:rgba(255,255,255,.5);

flex-shrink:0;

}

.uni-card-status.is-open{ color:#fff; }

.uni-card-status.is-open::before{ background:var(--success-500); }

/* ---- Ville et pays, posés sur la photo ---- */
.uni-card-location{

position:absolute;

bottom:13px;

left:14px;

right:14px;

z-index:2;

display:flex;

align-items:center;

gap:8px;

color:#fff;

}

.uni-card-location img{

width:20px;

height:14px;

object-fit:cover;

border-radius:3px;

box-shadow:0 0 0 1px rgba(255,255,255,.35);

flex-shrink:0;

}

.uni-card-location span{

font-size:.84rem;

font-weight:var(--fw-semibold);

text-shadow:0 1px 3px rgba(0,0,0,.45), 0 8px 24px rgba(0,0,0,.28);

}

/* ---- Corps ---- */
.uni-card-body{

flex:1;

display:flex;

flex-direction:column;

gap:11px;

padding:18px 20px 18px;

}

.uni-card-body h3{

font-family:var(--font-display);

font-size:var(--fs-card-title);

font-weight:var(--fw-extrabold);

line-height:1.3;

letter-spacing:-.015em;

color:var(--text-color);

}

/* Bourses rattachées à cet établissement. C'est la raison pour
laquelle il est dans ce catalogue : mis en ambre, sur deux lignes
au maximum, plutôt qu'en gris au milieu du reste. */
.uni-card-scholarship{

display:-webkit-box;
-webkit-line-clamp:2;
line-clamp:2;
-webkit-box-orient:vertical;

overflow:hidden;

font-size:.82rem;

line-height:1.5;

font-weight:var(--fw-semibold);

color:var(--amber-700);

}

.uni-card-meta{

display:flex;

flex-wrap:wrap;

gap:7px;

}

.uni-card-footer{

margin-top:auto;

padding-top:14px;

border-top:1px solid var(--border-color);

display:flex;

align-items:center;

justify-content:space-between;

gap:10px;

}

.uni-card-deadline{

display:flex;

align-items:center;

gap:6px;

font-size:.79rem;

color:var(--text-muted);

font-variant-numeric:tabular-nums;

}

.uni-card-deadline i,
.uni-card-deadline svg{

width:14px;

height:14px;

flex-shrink:0;

}

.uni-card-cta{

display:flex;

align-items:center;

gap:6px;

font-size:.84rem;

font-weight:var(--fw-bold);

color:var(--amber-700);

white-space:nowrap;

}

.uni-card-cta i,
.uni-card-cta svg{

width:15px;

height:15px;

flex-shrink:0;

transition:transform .25s var(--ease-premium);

}

.uni-card:hover .uni-card-cta i,
.uni-card:hover .uni-card-cta svg{ transform:translateX(4px); }


@media(max-width:720px){

.uni-card-body{ padding:16px 16px 16px; }

}


/* Pastille supprimée le 2026-08-22 : carré arrondi de 56px, exactement
le conteneur que la règle « Icônes » de DESIGN_SYSTEM.md proscrit.
L'icône nue et ambrée est désormais définie une seule fois dans
css/catalog.css, comme celle de scholarships.html — les deux pages
avaient chacune la leur, avec une taille et une couleur différentes
pour le même état vide. */



/* ==========================================================
RESPONSIVE
========================================================== */

/* Le bloc @media(max-width:640px) qui vivait ici a été retiré le
2026-08-22 : bannière, barre de filtres et grille sont désormais
gérées par css/catalog.css, points de rupture compris. Chargée
APRÈS elle, cette feuille écrasait silencieusement le comportement
mobile commun (barre collante, repli des libellés) et faisait
diverger les deux catalogues sur petit écran — précisément le
problème que la mise en commun devait faire disparaître. */

/* ==========================================================
BANDEAU ACCOMPAGNEMENT — sous le catalogue, jamais un mur : le
catalogue reste entièrement consultable sans lui.
========================================================== */

.uni-accompaniment-banner{

display:flex;

align-items:center;

gap:24px;

margin:48px 0 24px;

padding:28px 32px;

border-radius:var(--radius-lg);

box-shadow:var(--shadow-sm);

}

/* Icône nue : le rond de 52px en dégradé bleu qui vivait ici était le
dernier conteneur d'icône de la page (règle « Icônes » de
DESIGN_SYSTEM.md). L'ambre porte le sens — c'est le seul bloc de la
page qui parle de l'accompagnement payant, pas du catalogue libre. */
.uni-accompaniment-icon{

flex:0 0 auto;

display:flex;

align-items:center;

justify-content:center;

color:var(--amber-700);

}

.uni-accompaniment-icon i,
.uni-accompaniment-icon svg{width:30px;height:30px;}

.uni-accompaniment-copy{flex:1 1 auto;min-width:220px;}

.uni-accompaniment-copy strong{

display:block;

font-family:var(--font-display);

font-size:var(--fs-h4);

font-weight:600;

/* var(--text-color), pas --primary-dark : .glass-panel (le fond de ce
bandeau) est un token adaptatif qui devient sombre sous le shell
authentifié (dashboard.css) — --primary-dark ne l'est pas et restait
sombre sur fond devenu sombre pour un utilisateur connecté. */
color:var(--text-color);

margin-bottom:6px;

}

.uni-accompaniment-copy p{

margin:0;

font-size:var(--fs-small);

color:var(--text-light);

max-width:56ch;

}

@media(max-width:768px){

.uni-accompaniment-banner{

flex-direction:column;

align-items:flex-start;

text-align:left;

}

.uni-accompaniment-banner .btn{width:100%;justify-content:center;}

}

/* ==========================================================
DÉPLACÉ DANS css/catalog.css le 2026-08-22
==========================================================
Barre de résultats, grille, puces de carte, squelettes et état vide
vivaient ici ET dans universities.css sous d'autres noms
(.bourses-results-count/.uni-results-count,
.scholarship-card-chip/.uni-card-chip,
.bourses-empty-state/.uni-empty-state,
.bourses-skeleton/.uni-card-skeleton) : les mêmes composants, deux
écritures, deux évolutions séparées. css/catalog.css les définit une
seule fois et conserve les anciens noms en alias — le JS des deux
pages n'a donc rien eu à changer.
Ne pas les réintroduire ici. ========================================================== */
