/* ============================================================
   styles.css — ArXiv Explorer
   Police : Merriweather (corps) + Barlow Condensed (titres)
   Palette de base : Marine · Orange · Blanc cassé
   + Identité visuelle par domaine scientifique
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;600;700;800&family=Merriweather:ital,wght@0,300;0,400;0,700;1,300&family=Barlow:wght@400;500;600&display=swap');

/* ── Variables globales ─────────────────────────────────── */
:root {
    --navy:        #0b1f3a;
    --navy-light:  #162d52;
    --blue-mid:    #1a4a7a;
    --accent:      #f04e23;
    --accent-warm: #ff7043;
    --accent-gold: #f5a623;
    --white:       #ffffff;
    --off-white:   #f4f5f7;
    --text-dark:   #1c2b3a;
    --text-mid:    #4a5a6a;
    --text-light:  #8a9aaa;
    --border:      #dde3ea;

    --font-head:   'Barlow Condensed', 'Arial Narrow', sans-serif;
    --font-body:   'Merriweather', Georgia, serif;
    --font-ui:     'Barlow', 'Helvetica Neue', sans-serif;

    --radius-sm:   4px;
    --radius-md:   8px;

    --shadow-card: 0 2px 12px rgba(11,31,58,.10);
    --shadow-hover:0 6px 24px rgba(11,31,58,.18);
    --transition:  .22s ease;

    /* Valeurs par défaut de la palette catégorie */
    --cat-grad-a:  var(--navy);
    --cat-grad-b:  var(--blue-mid);
    --cat-grad-c:  #1a6895;
    --cat-stripe:  var(--accent-gold);
    --cat-stripe2: var(--accent);
    --cat-glow:    rgba(240,78,35,.35);
    --cat-tint:    rgba(240,78,35,.06);
    --cat-accent-text: var(--accent);
}

/* ── Reset & base ───────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: 16px; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
    font-family: var(--font-body);
    background-color: var(--off-white);
    color: var(--text-dark);
    line-height: 1.7;
    min-height: 100vh;
    padding: 0 .75rem 2rem;
}

body::before {
    content: '';
    display: block;
    height: 4px;
    margin: 0 -.75rem;
    background: linear-gradient(90deg, var(--accent) 0%, var(--accent-gold) 60%, var(--accent-warm) 100%);
}

/* ══════════════════════════════════════════════════════════
   PALETTES PAR CATÉGORIE ARXIV — couverture complète
   Familles : hue distincte · Sous-catégories : variations
   de direction, saturation et teinte pour lisibilité max
══════════════════════════════════════════════════════════ */


/* ── Astrophysique ─────────────────────────────────────── */
/* astro-ph : Astrophysics (base) */
.cat-astro {
    --cat-grad-a:  #080118;
    --cat-grad-b:  #2d0975;
    --cat-grad-c:  #5416ce;
    --cat-stripe:  #bc9ef9;
    --cat-stripe2: #4a14b7;
    --cat-glow:    rgba(74,20,183,.32);
    --cat-tint:    rgba(74,20,183,.06);
    --cat-accent-text: #4111a0;
    --cat-grad-dir: 150deg;
}

/* astro-ph.CO : Cosmology */
.cat-astro-co {
    --cat-grad-a:  #0c0118;
    --cat-grad-b:  #3f0975;
    --cat-grad-c:  #9019e5;
    --cat-stripe:  #d39ef9;
    --cat-stripe2: #7314b7;
    --cat-glow:    rgba(115,20,183,.32);
    --cat-tint:    rgba(115,20,183,.06);
    --cat-accent-text: #6511a0;
    --cat-grad-dir: 140deg;
}

/* astro-ph.EP : Earth & Planetary */
.cat-astro-ep {
    --cat-grad-a:  #050118;
    --cat-grad-b:  #1b0975;
    --cat-grad-c:  #1515c0;
    --cat-stripe:  #9e9ef9;
    --cat-stripe2: #1414b7;
    --cat-glow:    rgba(20,20,183,.32);
    --cat-tint:    rgba(20,20,183,.06);
    --cat-accent-text: #1111a0;
    --cat-grad-dir: 160deg;
}

/* astro-ph.GA : Galaxies */
.cat-astro-ga {
    --cat-grad-a:  #0a0118;
    --cat-grad-b:  #360975;
    --cat-grad-c:  #6a18dc;
    --cat-stripe:  #c49ef9;
    --cat-stripe2: #5814b7;
    --cat-glow:    rgba(88,20,183,.32);
    --cat-tint:    rgba(88,20,183,.06);
    --cat-accent-text: #4d11a0;
    --cat-grad-dir: 145deg;
}

/* astro-ph.HE : High Energy Astro */
.cat-astro-he {
    --cat-grad-a:  #120118;
    --cat-grad-b:  #5a0975;
    --cat-grad-c:  #ce16ce;
    --cat-stripe:  #f99ef9;
    --cat-stripe2: #b714b7;
    --cat-glow:    rgba(183,20,183,.32);
    --cat-tint:    rgba(183,20,183,.06);
    --cat-accent-text: #a011a0;
    --cat-grad-dir: 155deg;
}

/* astro-ph.IM : Instrumentation */
.cat-astro-im {
    --cat-grad-a:  #070118;
    --cat-grad-b:  #240975;
    --cat-grad-c:  #2f14b7;
    --cat-stripe:  #ad9ef9;
    --cat-stripe2: #2f14b7;
    --cat-glow:    rgba(47,20,183,.32);
    --cat-tint:    rgba(47,20,183,.06);
    --cat-accent-text: #2911a0;
    --cat-grad-dir: 165deg;
}

/* astro-ph.SR : Solar & Stellar */
.cat-astro-sr {
    --cat-grad-a:  #030118;
    --cat-grad-b:  #120975;
    --cat-grad-c:  #1634c9;
    --cat-stripe:  #9eadf9;
    --cat-stripe2: #142fb7;
    --cat-glow:    rgba(20,47,183,.32);
    --cat-tint:    rgba(20,47,183,.06);
    --cat-accent-text: #1129a0;
    --cat-grad-dir: 135deg;
}


/* ── Matière condensée ─────────────────────────────────── */
/* cond-mat */
.cat-condmat {
    --cat-grad-a:  #011418;
    --cat-grad-b:  #096375;
    --cat-grad-c:  #16afce;
    --cat-stripe:  #9eeaf9;
    --cat-stripe2: #149cb7;
    --cat-glow:    rgba(20,156,183,.32);
    --cat-tint:    rgba(20,156,183,.06);
    --cat-accent-text: #1188a0;
    --cat-grad-dir: 135deg;
}

/* dis-nn : Neural Networks */
.cat-condmat-disnn {
    --cat-grad-a:  #011218;
    --cat-grad-b:  #095a75;
    --cat-grad-c:  #18abdc;
    --cat-stripe:  #9ee2f9;
    --cat-stripe2: #148eb7;
    --cat-glow:    rgba(20,142,183,.32);
    --cat-tint:    rgba(20,142,183,.06);
    --cat-accent-text: #117ca0;
    --cat-grad-dir: 125deg;
}

/* mes-hall : Nanoscale */
.cat-condmat-meshall {
    --cat-grad-a:  #011718;
    --cat-grad-b:  #097075;
    --cat-grad-c:  #15b8c0;
    --cat-stripe:  #9ef5f9;
    --cat-stripe2: #14afb7;
    --cat-glow:    rgba(20,175,183,.32);
    --cat-tint:    rgba(20,175,183,.06);
    --cat-accent-text: #1199a0;
    --cat-grad-dir: 145deg;
}

/* mtrl-sci : Materials */
.cat-condmat-mtrlsci {
    --cat-grad-a:  #011018;
    --cat-grad-b:  #095175;
    --cat-grad-c:  #1672ce;
    --cat-stripe:  #9eccf9;
    --cat-stripe2: #1466b7;
    --cat-glow:    rgba(20,102,183,.32);
    --cat-tint:    rgba(20,102,183,.06);
    --cat-accent-text: #1159a0;
    --cat-grad-dir: 130deg;
}

/* quant-gas : Quantum Gases */
.cat-condmat-quantgas {
    --cat-grad-a:  #011817;
    --cat-grad-b:  #097572;
    --cat-grad-c:  #19e5b5;
    --cat-stripe:  #9ef9e4;
    --cat-stripe2: #14b791;
    --cat-glow:    rgba(20,183,145,.32);
    --cat-tint:    rgba(20,183,145,.06);
    --cat-accent-text: #11a07f;
    --cat-grad-dir: 155deg;
}

/* soft : Soft Matter */
.cat-condmat-soft {
    --cat-grad-a:  #011814;
    --cat-grad-b:  #097563;
    --cat-grad-c:  #14b766;
    --cat-stripe:  #9ef9cc;
    --cat-stripe2: #14b766;
    --cat-glow:    rgba(20,183,102,.32);
    --cat-tint:    rgba(20,183,102,.06);
    --cat-accent-text: #11a059;
    --cat-grad-dir: 140deg;
}

/* stat-mech : Statistical Mech */
.cat-condmat-statmech {
    --cat-grad-a:  #010e18;
    --cat-grad-b:  #094875;
    --cat-grad-c:  #1550c5;
    --cat-stripe:  #9ebcf9;
    --cat-stripe2: #144ab7;
    --cat-glow:    rgba(20,74,183,.32);
    --cat-tint:    rgba(20,74,183,.06);
    --cat-accent-text: #1141a0;
    --cat-grad-dir: 120deg;
}

/* str-el : Correlated Electrons */
.cat-condmat-strel {
    --cat-grad-a:  #010b18;
    --cat-grad-b:  #093a75;
    --cat-grad-c:  #131dae;
    --cat-stripe:  #9ea4f9;
    --cat-stripe2: #141fb7;
    --cat-glow:    rgba(20,31,183,.32);
    --cat-tint:    rgba(20,31,183,.06);
    --cat-accent-text: #111ba0;
    --cat-grad-dir: 150deg;
}

/* supr-con : Superconductivity */
.cat-condmat-suprcon {
    --cat-grad-a:  #011618;
    --cat-grad-b:  #096c75;
    --cat-grad-c:  #22d6e6;
    --cat-stripe:  #9ef2f9;
    --cat-stripe2: #14aab7;
    --cat-glow:    rgba(20,170,183,.32);
    --cat-tint:    rgba(20,170,183,.06);
    --cat-accent-text: #1194a0;
    --cat-grad-dir: 165deg;
}


/* ── Informatique ──────────────────────────────────────── */
/* cs : Computer Science (base) */
.cat-cs {
    --cat-grad-a:  #011808;
    --cat-grad-b:  #09752d;
    --cat-grad-c:  #16ce54;
    --cat-stripe:  #9ef9bc;
    --cat-stripe2: #14b74a;
    --cat-glow:    rgba(20,183,74,.32);
    --cat-tint:    rgba(20,183,74,.06);
    --cat-accent-text: #11a041;
    --cat-grad-dir: 120deg;
}

/* cs.AI */
.cat-cs-ai {
    --cat-grad-a:  #01180c;
    --cat-grad-b:  #09753f;
    --cat-grad-c:  #18dc9b;
    --cat-stripe:  #9ef9db;
    --cat-stripe2: #14b781;
    --cat-glow:    rgba(20,183,129,.32);
    --cat-tint:    rgba(20,183,129,.06);
    --cat-accent-text: #11a071;
    --cat-grad-dir: 110deg;
}

/* cs.AR : Hardware */
.cat-cs-ar {
    --cat-grad-a:  #011805;
    --cat-grad-b:  #09751b;
    --cat-grad-c:  #13ae13;
    --cat-stripe:  #9ef99e;
    --cat-stripe2: #14b714;
    --cat-glow:    rgba(20,183,20,.32);
    --cat-tint:    rgba(20,183,20,.06);
    --cat-accent-text: #11a011;
    --cat-grad-dir: 130deg;
}

/* cs.CC : Complexity */
.cat-cs-cc {
    --cat-grad-a:  #011807;
    --cat-grad-b:  #097524;
    --cat-grad-c:  #14b73d;
    --cat-stripe:  #9ef9b5;
    --cat-stripe2: #14b73d;
    --cat-glow:    rgba(20,183,61,.32);
    --cat-tint:    rgba(20,183,61,.06);
    --cat-accent-text: #11a035;
    --cat-grad-dir: 125deg;
}

/* cs.CE : Comp Engineering */
.cat-cs-ce {
    --cat-grad-a:  #01180a;
    --cat-grad-b:  #097536;
    --cat-grad-c:  #15c05c;
    --cat-stripe:  #9ef9c4;
    --cat-stripe2: #14b758;
    --cat-glow:    rgba(20,183,88,.32);
    --cat-tint:    rgba(20,183,88,.06);
    --cat-accent-text: #11a04d;
    --cat-grad-dir: 115deg;
}

/* cs.CG : Geometry */
.cat-cs-cg {
    --cat-grad-a:  #011810;
    --cat-grad-b:  #097551;
    --cat-grad-c:  #16c9c9;
    --cat-stripe:  #9ef9f9;
    --cat-stripe2: #14b7b7;
    --cat-glow:    rgba(20,183,183,.32);
    --cat-tint:    rgba(20,183,183,.06);
    --cat-accent-text: #11a0a0;
    --cat-grad-dir: 105deg;
}

/* cs.CL : Language/NLP */
.cat-cs-cl {
    --cat-grad-a:  #01180e;
    --cat-grad-b:  #097548;
    --cat-grad-c:  #17d3b3;
    --cat-stripe:  #9ef9ea;
    --cat-stripe2: #14b79c;
    --cat-glow:    rgba(20,183,156,.32);
    --cat-tint:    rgba(20,183,156,.06);
    --cat-accent-text: #11a088;
    --cat-grad-dir: 110deg;
}

/* cs.CR : Cryptography */
.cat-cs-cr {
    --cat-grad-a:  #011801;
    --cat-grad-b:  #097509;
    --cat-grad-c:  #41a011;
    --cat-stripe:  #bcf99e;
    --cat-stripe2: #4ab714;
    --cat-glow:    rgba(74,183,20,.32);
    --cat-tint:    rgba(74,183,20,.06);
    --cat-accent-text: #41a011;
    --cat-grad-dir: 135deg;
}

/* cs.CV : Computer Vision */
.cat-cs-cv {
    --cat-grad-a:  #011812;
    --cat-grad-b:  #09755a;
    --cat-grad-c:  #18bbdc;
    --cat-stripe:  #9eeaf9;
    --cat-stripe2: #149cb7;
    --cat-glow:    rgba(20,156,183,.32);
    --cat-tint:    rgba(20,156,183,.06);
    --cat-accent-text: #1188a0;
    --cat-grad-dir: 105deg;
}

/* cs.CY : Computers & Society */
.cat-cs-cy {
    --cat-grad-a:  #081801;
    --cat-grad-b:  #2d7509;
    --cat-grad-c:  #a5a512;
    --cat-stripe:  #f9f99e;
    --cat-stripe2: #b7b714;
    --cat-glow:    rgba(183,183,20,.32);
    --cat-tint:    rgba(183,183,20,.06);
    --cat-accent-text: #a0a011;
    --cat-grad-dir: 140deg;
}

/* cs.DB : Databases */
.cat-cs-db {
    --cat-grad-a:  #011805;
    --cat-grad-b:  #09751b;
    --cat-grad-c:  #11a011;
    --cat-stripe:  #9ef99e;
    --cat-stripe2: #14b714;
    --cat-glow:    rgba(20,183,20,.32);
    --cat-tint:    rgba(20,183,20,.06);
    --cat-accent-text: #11a011;
    --cat-grad-dir: 130deg;
}

/* cs.DC : Distributed */
.cat-cs-dc {
    --cat-grad-a:  #011807;
    --cat-grad-b:  #097524;
    --cat-grad-c:  #12a938;
    --cat-stripe:  #9ef9b5;
    --cat-stripe2: #14b73d;
    --cat-glow:    rgba(20,183,61,.32);
    --cat-tint:    rgba(20,183,61,.06);
    --cat-accent-text: #11a035;
    --cat-grad-dir: 130deg;
}

/* cs.DL : Digital Libraries */
.cat-cs-dl {
    --cat-grad-a:  #011808;
    --cat-grad-b:  #09752d;
    --cat-grad-c:  #10973d;
    --cat-stripe:  #9ef9bc;
    --cat-stripe2: #14b74a;
    --cat-glow:    rgba(20,183,74,.32);
    --cat-tint:    rgba(20,183,74,.06);
    --cat-accent-text: #11a041;
    --cat-grad-dir: 120deg;
}

/* cs.DM : Discrete Math */
.cat-cs-dm {
    --cat-grad-a:  #01180c;
    --cat-grad-b:  #09753f;
    --cat-grad-c:  #14b766;
    --cat-stripe:  #9ef9cc;
    --cat-stripe2: #14b766;
    --cat-glow:    rgba(20,183,102,.32);
    --cat-tint:    rgba(20,183,102,.06);
    --cat-accent-text: #11a059;
    --cat-grad-dir: 115deg;
}

/* cs.DS : Data Structures */
.cat-cs-ds {
    --cat-grad-a:  #011808;
    --cat-grad-b:  #09752a;
    --cat-grad-c:  #14bc47;
    --cat-stripe:  #9ef9b9;
    --cat-stripe2: #14b745;
    --cat-glow:    rgba(20,183,69,.32);
    --cat-tint:    rgba(20,183,69,.06);
    --cat-accent-text: #11a03c;
    --cat-grad-dir: 118deg;
}

/* cs.ET : Emerging Tech */
.cat-cs-et {
    --cat-grad-a:  #011814;
    --cat-grad-b:  #097563;
    --cat-grad-c:  #1691ce;
    --cat-stripe:  #9edbf9;
    --cat-stripe2: #1481b7;
    --cat-glow:    rgba(20,129,183,.32);
    --cat-tint:    rgba(20,129,183,.06);
    --cat-accent-text: #1171a0;
    --cat-grad-dir: 110deg;
}

/* cs.FL : Formal Languages */
.cat-cs-fl {
    --cat-grad-a:  #011803;
    --cat-grad-b:  #097512;
    --cat-grad-c:  #2aa512;
    --cat-stripe:  #adf99e;
    --cat-stripe2: #2fb714;
    --cat-glow:    rgba(47,183,20,.32);
    --cat-tint:    rgba(47,183,20,.06);
    --cat-accent-text: #29a011;
    --cat-grad-dir: 132deg;
}

/* cs.GR : Graphics */
.cat-cs-gr {
    --cat-grad-a:  #011810;
    --cat-grad-b:  #097551;
    --cat-grad-c:  #15c5c5;
    --cat-stripe:  #9ef9f9;
    --cat-stripe2: #14b7b7;
    --cat-glow:    rgba(20,183,183,.32);
    --cat-tint:    rgba(20,183,183,.06);
    --cat-accent-text: #11a0a0;
    --cat-grad-dir: 108deg;
}

/* cs.GT : Game Theory */
.cat-cs-gt {
    --cat-grad-a:  #01180a;
    --cat-grad-b:  #097536;
    --cat-grad-c:  #16c961;
    --cat-stripe:  #9ef9c4;
    --cat-stripe2: #14b758;
    --cat-glow:    rgba(20,183,88,.32);
    --cat-tint:    rgba(20,183,88,.06);
    --cat-accent-text: #11a04d;
    --cat-grad-dir: 112deg;
}

/* cs.HC : HCI */
.cat-cs-hc {
    --cat-grad-a:  #0a1801;
    --cat-grad-b:  #367509;
    --cat-grad-c:  #ae9413;
    --cat-stripe:  #f9ea9e;
    --cat-stripe2: #b79c14;
    --cat-glow:    rgba(183,156,20,.32);
    --cat-tint:    rgba(183,156,20,.06);
    --cat-accent-text: #a08811;
    --cat-grad-dir: 138deg;
}

/* cs.IR : Info Retrieval */
.cat-cs-ir {
    --cat-grad-a:  #01180b;
    --cat-grad-b:  #09753c;
    --cat-grad-c:  #15c065;
    --cat-stripe:  #9ef9c8;
    --cat-stripe2: #14b760;
    --cat-glow:    rgba(20,183,96,.32);
    --cat-tint:    rgba(20,183,96,.06);
    --cat-accent-text: #11a054;
    --cat-grad-dir: 115deg;
}

/* cs.IT : Info Theory */
.cat-cs-it {
    --cat-grad-a:  #01180d;
    --cat-grad-b:  #097543;
    --cat-grad-c:  #15c573;
    --cat-stripe:  #9ef9cf;
    --cat-stripe2: #14b76b;
    --cat-glow:    rgba(20,183,107,.32);
    --cat-tint:    rgba(20,183,107,.06);
    --cat-accent-text: #11a05e;
    --cat-grad-dir: 113deg;
}

/* cs.LG : Machine Learning */
.cat-cs-lg {
    --cat-grad-a:  #01180d;
    --cat-grad-b:  #097545;
    --cat-grad-c:  #19e5b5;
    --cat-stripe:  #9ef9e4;
    --cat-stripe2: #14b791;
    --cat-glow:    rgba(20,183,145,.32);
    --cat-tint:    rgba(20,183,145,.06);
    --cat-accent-text: #11a07f;
    --cat-grad-dir: 108deg;
}

/* cs.LO : Logic */
.cat-cs-lo {
    --cat-grad-a:  #011804;
    --cat-grad-b:  #097518;
    --cat-grad-c:  #1dae13;
    --cat-stripe:  #a4f99e;
    --cat-stripe2: #1fb714;
    --cat-glow:    rgba(31,183,20,.32);
    --cat-tint:    rgba(31,183,20,.06);
    --cat-accent-text: #1ba011;
    --cat-grad-dir: 128deg;
}

/* cs.MA : Multiagent */
.cat-cs-ma {
    --cat-grad-a:  #011809;
    --cat-grad-b:  #097531;
    --cat-grad-c:  #14b750;
    --cat-stripe:  #9ef9bf;
    --cat-stripe2: #14b750;
    --cat-glow:    rgba(20,183,80,.32);
    --cat-tint:    rgba(20,183,80,.06);
    --cat-accent-text: #11a046;
    --cat-grad-dir: 120deg;
}

/* cs.MM : Multimedia */
.cat-cs-mm {
    --cat-grad-a:  #011811;
    --cat-grad-b:  #097555;
    --cat-grad-c:  #16bdc9;
    --cat-stripe:  #9ef3f9;
    --cat-stripe2: #14acb7;
    --cat-glow:    rgba(20,172,183,.32);
    --cat-tint:    rgba(20,172,183,.06);
    --cat-accent-text: #1197a0;
    --cat-grad-dir: 108deg;
}

/* cs.NE : Neural & Evol */
.cat-cs-ne {
    --cat-grad-a:  #01180e;
    --cat-grad-b:  #097548;
    --cat-grad-c:  #17d7b7;
    --cat-stripe:  #9ef9ea;
    --cat-stripe2: #14b79c;
    --cat-glow:    rgba(20,183,156,.32);
    --cat-tint:    rgba(20,183,156,.06);
    --cat-accent-text: #11a088;
    --cat-grad-dir: 110deg;
}

/* cs.NI : Networking */
.cat-cs-ni {
    --cat-grad-a:  #011805;
    --cat-grad-b:  #09751f;
    --cat-grad-c:  #13ae1d;
    --cat-stripe:  #9ef9a4;
    --cat-stripe2: #14b71f;
    --cat-glow:    rgba(20,183,31,.32);
    --cat-tint:    rgba(20,183,31,.06);
    --cat-accent-text: #11a01b;
    --cat-grad-dir: 128deg;
}

/* cs.OS : OS */
.cat-cs-os {
    --cat-grad-a:  #011803;
    --cat-grad-b:  #097516;
    --cat-grad-c:  #1f9c11;
    --cat-stripe:  #a7f99e;
    --cat-stripe2: #24b714;
    --cat-glow:    rgba(36,183,20,.32);
    --cat-tint:    rgba(36,183,20,.06);
    --cat-accent-text: #20a011;
    --cat-grad-dir: 132deg;
}

/* cs.PL : Prog Languages */
.cat-cs-pl {
    --cat-grad-a:  #011806;
    --cat-grad-b:  #097521;
    --cat-grad-c:  #12a921;
    --cat-stripe:  #9ef9a7;
    --cat-stripe2: #14b724;
    --cat-glow:    rgba(20,183,36,.32);
    --cat-tint:    rgba(20,183,36,.06);
    --cat-accent-text: #11a020;
    --cat-grad-dir: 130deg;
}

/* cs.RO : Robotics */
.cat-cs-ro {
    --cat-grad-a:  #011813;
    --cat-grad-b:  #097560;
    --cat-grad-c:  #169dce;
    --cat-stripe:  #9ee1f9;
    --cat-stripe2: #148cb7;
    --cat-glow:    rgba(20,140,183,.32);
    --cat-tint:    rgba(20,140,183,.06);
    --cat-accent-text: #117aa0;
    --cat-grad-dir: 106deg;
}

/* cs.SE : Software Eng */
.cat-cs-se {
    --cat-grad-a:  #011807;
    --cat-grad-b:  #097526;
    --cat-grad-c:  #12a52f;
    --cat-stripe:  #9ef9b0;
    --cat-stripe2: #14b735;
    --cat-glow:    rgba(20,183,53,.32);
    --cat-tint:    rgba(20,183,53,.06);
    --cat-accent-text: #11a02e;
    --cat-grad-dir: 125deg;
}

/* cs.SI : Social Networks */
.cat-cs-si {
    --cat-grad-a:  #091801;
    --cat-grad-b:  #317509;
    --cat-grad-c:  #a99f12;
    --cat-stripe:  #f9f39e;
    --cat-stripe2: #b7ac14;
    --cat-glow:    rgba(183,172,20,.32);
    --cat-tint:    rgba(183,172,20,.06);
    --cat-accent-text: #a09711;
    --cat-grad-dir: 140deg;
}

/* cs.SY : Systems & Control */
.cat-cs-sy {
    --cat-grad-a:  #011805;
    --cat-grad-b:  #09751b;
    --cat-grad-c:  #12a512;
    --cat-stripe:  #9ef99e;
    --cat-stripe2: #14b714;
    --cat-glow:    rgba(20,183,20,.32);
    --cat-tint:    rgba(20,183,20,.06);
    --cat-accent-text: #11a011;
    --cat-grad-dir: 130deg;
}


/* ── Économie ──────────────────────────────────────────── */
/* econ */
.cat-econ {
    --cat-grad-a:  #180f01;
    --cat-grad-b:  #754e09;
    --cat-grad-c:  #ce8b16;
    --cat-stripe:  #f9d89e;
    --cat-stripe2: #b77b14;
    --cat-glow:    rgba(183,123,20,.32);
    --cat-tint:    rgba(183,123,20,.06);
    --cat-accent-text: #a06c11;
    --cat-grad-dir: 145deg;
}

/* econ.EM : Econometrics */
.cat-econ-em {
    --cat-grad-a:  #180d01;
    --cat-grad-b:  #754309;
    --cat-grad-c:  #dc6d18;
    --cat-stripe:  #f9c59e;
    --cat-stripe2: #b75b14;
    --cat-glow:    rgba(183,91,20,.32);
    --cat-tint:    rgba(183,91,20,.06);
    --cat-accent-text: #a04f11;
    --cat-grad-dir: 138deg;
}

/* econ.GN : General Econ */
.cat-econ-gn {
    --cat-grad-a:  #181001;
    --cat-grad-b:  #755109;
    --cat-grad-c:  #c98e16;
    --cat-stripe:  #f9db9e;
    --cat-stripe2: #b78114;
    --cat-glow:    rgba(183,129,20,.32);
    --cat-tint:    rgba(183,129,20,.06);
    --cat-accent-text: #a07111;
    --cat-grad-dir: 150deg;
}

/* econ.TH : Theoretical */
.cat-econ-th {
    --cat-grad-a:  #181201;
    --cat-grad-b:  #755909;
    --cat-grad-c:  #d3b317;
    --cat-stripe:  #f9ea9e;
    --cat-stripe2: #b79c14;
    --cat-glow:    rgba(183,156,20,.32);
    --cat-tint:    rgba(183,156,20,.06);
    --cat-accent-text: #a08811;
    --cat-grad-dir: 140deg;
}


/* ── Génie électrique & systèmes ───────────────────────── */
/* eess */
.cat-eess {
    --cat-grad-a:  #180101;
    --cat-grad-b:  #750909;
    --cat-grad-c:  #ce1616;
    --cat-stripe:  #f99e9e;
    --cat-stripe2: #b71414;
    --cat-glow:    rgba(183,20,20,.32);
    --cat-tint:    rgba(183,20,20,.06);
    --cat-accent-text: #a01111;
    --cat-grad-dir: 130deg;
}

/* eess.AS : Audio/Speech */
.cat-eess-as {
    --cat-grad-a:  #180501;
    --cat-grad-b:  #751b09;
    --cat-grad-c:  #ce5416;
    --cat-stripe:  #f9bc9e;
    --cat-stripe2: #b74a14;
    --cat-glow:    rgba(183,74,20,.32);
    --cat-tint:    rgba(183,74,20,.06);
    --cat-accent-text: #a04111;
    --cat-grad-dir: 122deg;
}

/* eess.IV : Image/Video */
.cat-eess-iv {
    --cat-grad-a:  #180103;
    --cat-grad-b:  #750912;
    --cat-grad-c:  #c01531;
    --cat-stripe:  #f99ead;
    --cat-stripe2: #b7142f;
    --cat-glow:    rgba(183,20,47,.32);
    --cat-tint:    rgba(183,20,47,.06);
    --cat-accent-text: #a01129;
    --cat-grad-dir: 138deg;
}

/* eess.SP : Signal Proc */
.cat-eess-sp {
    --cat-grad-a:  #180301;
    --cat-grad-b:  #751209;
    --cat-grad-c:  #c93416;
    --cat-stripe:  #f9ad9e;
    --cat-stripe2: #b72f14;
    --cat-glow:    rgba(183,47,20,.32);
    --cat-tint:    rgba(183,47,20,.06);
    --cat-accent-text: #a02911;
    --cat-grad-dir: 125deg;
}

/* eess.SY : Systems */
.cat-eess-sy {
    --cat-grad-a:  #180105;
    --cat-grad-b:  #75091b;
    --cat-grad-c:  #b7144a;
    --cat-stripe:  #f99ebc;
    --cat-stripe2: #b7144a;
    --cat-glow:    rgba(183,20,74,.32);
    --cat-tint:    rgba(183,20,74,.06);
    --cat-accent-text: #a01141;
    --cat-grad-dir: 140deg;
}


/* ── Relativité générale & cosmologie quantique ────────── */
/* gr-qc */
.cat-grqc {
    --cat-grad-a:  #140118;
    --cat-grad-b:  #630975;
    --cat-grad-c:  #af16ce;
    --cat-stripe:  #ea9ef9;
    --cat-stripe2: #9c14b7;
    --cat-glow:    rgba(156,20,183,.32);
    --cat-tint:    rgba(156,20,183,.06);
    --cat-accent-text: #8811a0;
    --cat-grad-dir: 160deg;
}


/* ── Physique des hautes énergies ──────────────────────── */
/* hep (base) */
.cat-hep {
    --cat-grad-a:  #18010c;
    --cat-grad-b:  #75093f;
    --cat-grad-c:  #ce1672;
    --cat-stripe:  #f99ecc;
    --cat-stripe2: #b71466;
    --cat-glow:    rgba(183,20,102,.32);
    --cat-tint:    rgba(183,20,102,.06);
    --cat-accent-text: #a01159;
    --cat-grad-dir: 140deg;
}

/* hep-ex : Experiment */
.cat-hep-ex {
    --cat-grad-a:  #180108;
    --cat-grad-b:  #75092d;
    --cat-grad-c:  #dc1839;
    --cat-stripe:  #f99ead;
    --cat-stripe2: #b7142f;
    --cat-glow:    rgba(183,20,47,.32);
    --cat-tint:    rgba(183,20,47,.06);
    --cat-accent-text: #a01129;
    --cat-grad-dir: 132deg;
}

/* hep-lat : Lattice */
.cat-hep-lat {
    --cat-grad-a:  #180110;
    --cat-grad-b:  #750951;
    --cat-grad-c:  #c015a4;
    --cat-stripe:  #f99eea;
    --cat-stripe2: #b7149c;
    --cat-glow:    rgba(183,20,156,.32);
    --cat-tint:    rgba(183,20,156,.06);
    --cat-accent-text: #a01188;
    --cat-grad-dir: 150deg;
}

/* hep-ph : Phenomenology */
.cat-hep-ph {
    --cat-grad-a:  #18010a;
    --cat-grad-b:  #750936;
    --cat-grad-c:  #d31756;
    --cat-stripe:  #f99ebc;
    --cat-stripe2: #b7144a;
    --cat-glow:    rgba(183,20,74,.32);
    --cat-tint:    rgba(183,20,74,.06);
    --cat-accent-text: #a01141;
    --cat-grad-dir: 138deg;
}

/* hep-th : Theory */
.cat-hep-th {
    --cat-grad-a:  #180112;
    --cat-grad-b:  #75095a;
    --cat-grad-c:  #b714b7;
    --cat-stripe:  #f99ef9;
    --cat-stripe2: #b714b7;
    --cat-glow:    rgba(183,20,183,.32);
    --cat-tint:    rgba(183,20,183,.06);
    --cat-accent-text: #a011a0;
    --cat-grad-dir: 155deg;
}


/* ── Mathématiques ─────────────────────────────────────── */
/* math (base) */
.cat-math {
    --cat-grad-a:  #010818;
    --cat-grad-b:  #092d75;
    --cat-grad-c:  #1654ce;
    --cat-stripe:  #9ebcf9;
    --cat-stripe2: #144ab7;
    --cat-glow:    rgba(20,74,183,.32);
    --cat-tint:    rgba(20,74,183,.06);
    --cat-accent-text: #1141a0;
    --cat-grad-dir: 135deg;
}

/* math.AC : Commutative Algebra */
.cat-math-ac {
    --cat-grad-a:  #010518;
    --cat-grad-b:  #091f75;
    --cat-grad-c:  #1520c0;
    --cat-stripe:  #9ea4f9;
    --cat-stripe2: #141fb7;
    --cat-glow:    rgba(20,31,183,.32);
    --cat-tint:    rgba(20,31,183,.06);
    --cat-accent-text: #111ba0;
    --cat-grad-dir: 128deg;
}

/* math.AG : Algebraic Geometry */
.cat-math-ag {
    --cat-grad-a:  #010418;
    --cat-grad-b:  #091875;
    --cat-grad-c:  #2216c9;
    --cat-stripe:  #a49ef9;
    --cat-stripe2: #1f14b7;
    --cat-glow:    rgba(31,20,183,.32);
    --cat-tint:    rgba(31,20,183,.06);
    --cat-accent-text: #1b11a0;
    --cat-grad-dir: 125deg;
}

/* math.AP : Analysis/PDEs */
.cat-math-ap {
    --cat-grad-a:  #010a18;
    --cat-grad-b:  #093675;
    --cat-grad-c:  #1775d3;
    --cat-stripe:  #9eccf9;
    --cat-stripe2: #1466b7;
    --cat-glow:    rgba(20,102,183,.32);
    --cat-tint:    rgba(20,102,183,.06);
    --cat-accent-text: #1159a0;
    --cat-grad-dir: 140deg;
}

/* math.AT : Algebraic Topology */
.cat-math-at {
    --cat-grad-a:  #010318;
    --cat-grad-b:  #091275;
    --cat-grad-c:  #3516ce;
    --cat-stripe:  #ad9ef9;
    --cat-stripe2: #2f14b7;
    --cat-glow:    rgba(47,20,183,.32);
    --cat-tint:    rgba(47,20,183,.06);
    --cat-accent-text: #2911a0;
    --cat-grad-dir: 122deg;
}

/* math.CA : Classical Analysis */
.cat-math-ca {
    --cat-grad-a:  #010c18;
    --cat-grad-b:  #093f75;
    --cat-grad-c:  #168ec9;
    --cat-stripe:  #9edbf9;
    --cat-stripe2: #1481b7;
    --cat-glow:    rgba(20,129,183,.32);
    --cat-tint:    rgba(20,129,183,.06);
    --cat-accent-text: #1171a0;
    --cat-grad-dir: 142deg;
}

/* math.CO : Combinatorics */
.cat-math-co {
    --cat-grad-a:  #010718;
    --cat-grad-b:  #092475;
    --cat-grad-c:  #1533c5;
    --cat-stripe:  #9eadf9;
    --cat-stripe2: #142fb7;
    --cat-glow:    rgba(20,47,183,.32);
    --cat-tint:    rgba(20,47,183,.06);
    --cat-accent-text: #1129a0;
    --cat-grad-dir: 130deg;
}

/* math.CT : Category Theory */
.cat-math-ct {
    --cat-grad-a:  #010118;
    --cat-grad-b:  #090975;
    --cat-grad-c:  #4a14b7;
    --cat-stripe:  #bc9ef9;
    --cat-stripe2: #4a14b7;
    --cat-glow:    rgba(74,20,183,.32);
    --cat-tint:    rgba(74,20,183,.06);
    --cat-accent-text: #4111a0;
    --cat-grad-dir: 120deg;
}

/* math.CV : Complex Variables */
.cat-math-cv {
    --cat-grad-a:  #010b18;
    --cat-grad-b:  #093a75;
    --cat-grad-c:  #167ece;
    --cat-stripe:  #9ed2f9;
    --cat-stripe2: #1470b7;
    --cat-glow:    rgba(20,112,183,.32);
    --cat-tint:    rgba(20,112,183,.06);
    --cat-accent-text: #1162a0;
    --cat-grad-dir: 143deg;
}

/* math.DG : Diff. Geometry */
.cat-math-dg {
    --cat-grad-a:  #010518;
    --cat-grad-b:  #091b75;
    --cat-grad-c:  #1515c0;
    --cat-stripe:  #9e9ef9;
    --cat-stripe2: #1414b7;
    --cat-glow:    rgba(20,20,183,.32);
    --cat-tint:    rgba(20,20,183,.06);
    --cat-accent-text: #1111a0;
    --cat-grad-dir: 127deg;
}

/* math.DS : Dynamical Systems */
.cat-math-ds {
    --cat-grad-a:  #010918;
    --cat-grad-b:  #093175;
    --cat-grad-c:  #165ec9;
    --cat-stripe:  #9ec2f9;
    --cat-stripe2: #1455b7;
    --cat-glow:    rgba(20,85,183,.32);
    --cat-tint:    rgba(20,85,183,.06);
    --cat-accent-text: #114aa0;
    --cat-grad-dir: 138deg;
}

/* math.FA : Functional Analysis */
.cat-math-fa {
    --cat-grad-a:  #010718;
    --cat-grad-b:  #092875;
    --cat-grad-c:  #153ec5;
    --cat-stripe:  #9eb3f9;
    --cat-stripe2: #143ab7;
    --cat-glow:    rgba(20,58,183,.32);
    --cat-tint:    rgba(20,58,183,.06);
    --cat-accent-text: #1133a0;
    --cat-grad-dir: 132deg;
}

/* math.GR : Group Theory */
.cat-math-gr {
    --cat-grad-a:  #010218;
    --cat-grad-b:  #090e75;
    --cat-grad-c:  #3b14bc;
    --cat-stripe:  #b39ef9;
    --cat-stripe2: #3a14b7;
    --cat-glow:    rgba(58,20,183,.32);
    --cat-tint:    rgba(58,20,183,.06);
    --cat-accent-text: #3311a0;
    --cat-grad-dir: 122deg;
}

/* math.GT : Geometric Topology */
.cat-math-gt {
    --cat-grad-a:  #010318;
    --cat-grad-b:  #091675;
    --cat-grad-c:  #2715c5;
    --cat-stripe:  #a79ef9;
    --cat-stripe2: #2414b7;
    --cat-glow:    rgba(36,20,183,.32);
    --cat-tint:    rgba(36,20,183,.06);
    --cat-accent-text: #2011a0;
    --cat-grad-dir: 124deg;
}

/* math.LO : Logic */
.cat-math-lo {
    --cat-grad-a:  #030118;
    --cat-grad-b:  #120975;
    --cat-grad-c:  #6013ae;
    --cat-stripe:  #cc9ef9;
    --cat-stripe2: #6614b7;
    --cat-glow:    rgba(102,20,183,.32);
    --cat-tint:    rgba(102,20,183,.06);
    --cat-accent-text: #5911a0;
    --cat-grad-dir: 118deg;
}

/* math.NT : Number Theory */
.cat-math-nt {
    --cat-grad-a:  #010618;
    --cat-grad-b:  #092275;
    --cat-grad-c:  #142bbc;
    --cat-stripe:  #9eaaf9;
    --cat-stripe2: #142ab7;
    --cat-glow:    rgba(20,42,183,.32);
    --cat-tint:    rgba(20,42,183,.06);
    --cat-accent-text: #1124a0;
    --cat-grad-dir: 128deg;
}

/* math.OC : Optimization */
.cat-math-oc {
    --cat-grad-a:  #010a18;
    --cat-grad-b:  #093375;
    --cat-grad-c:  #1664c9;
    --cat-stripe:  #9ec5f9;
    --cat-stripe2: #145bb7;
    --cat-glow:    rgba(20,91,183,.32);
    --cat-tint:    rgba(20,91,183,.06);
    --cat-accent-text: #114fa0;
    --cat-grad-dir: 140deg;
}

/* math.PR : Probability */
.cat-math-pr {
    --cat-grad-a:  #010d18;
    --cat-grad-b:  #094575;
    --cat-grad-c:  #17a7d3;
    --cat-stripe:  #9ee4f9;
    --cat-stripe2: #1491b7;
    --cat-glow:    rgba(20,145,183,.32);
    --cat-tint:    rgba(20,145,183,.06);
    --cat-accent-text: #117fa0;
    --cat-grad-dir: 148deg;
}

/* math.QA : Quantum Algebra */
.cat-math-qa {
    --cat-grad-a:  #020118;
    --cat-grad-b:  #0d0975;
    --cat-grad-c:  #5514b7;
    --cat-stripe:  #c29ef9;
    --cat-stripe2: #5514b7;
    --cat-glow:    rgba(85,20,183,.32);
    --cat-tint:    rgba(85,20,183,.06);
    --cat-accent-text: #4a11a0;
    --cat-grad-dir: 120deg;
}

/* math.RA : Rings & Algebras */
.cat-math-ra {
    --cat-grad-a:  #010518;
    --cat-grad-b:  #091d75;
    --cat-grad-c:  #151bc0;
    --cat-stripe:  #9ea1f9;
    --cat-stripe2: #1419b7;
    --cat-glow:    rgba(20,25,183,.32);
    --cat-tint:    rgba(20,25,183,.06);
    --cat-accent-text: #1116a0;
    --cat-grad-dir: 127deg;
}

/* math.RT : Representation Theory */
.cat-math-rt {
    --cat-grad-a:  #010318;
    --cat-grad-b:  #091475;
    --cat-grad-c:  #2d15c5;
    --cat-stripe:  #aa9ef9;
    --cat-stripe2: #2a14b7;
    --cat-glow:    rgba(42,20,183,.32);
    --cat-tint:    rgba(42,20,183,.06);
    --cat-accent-text: #2411a0;
    --cat-grad-dir: 124deg;
}

/* math.SP : Spectral Theory */
.cat-math-sp {
    --cat-grad-a:  #010d18;
    --cat-grad-b:  #094375;
    --cat-grad-c:  #169dce;
    --cat-stripe:  #9ee1f9;
    --cat-stripe2: #148cb7;
    --cat-glow:    rgba(20,140,183,.32);
    --cat-tint:    rgba(20,140,183,.06);
    --cat-accent-text: #117aa0;
    --cat-grad-dir: 145deg;
}

/* math.ST : Statistics Theory */
.cat-math-st {
    --cat-grad-a:  #010e18;
    --cat-grad-b:  #094875;
    --cat-grad-c:  #17b7d7;
    --cat-stripe:  #9eeaf9;
    --cat-stripe2: #149cb7;
    --cat-glow:    rgba(20,156,183,.32);
    --cat-tint:    rgba(20,156,183,.06);
    --cat-accent-text: #1188a0;
    --cat-grad-dir: 150deg;
}


/* ── Physique mathématique ─────────────────────────────── */
/* math-ph */
.cat-mathph {
    --cat-grad-a:  #011816;
    --cat-grad-b:  #09756c;
    --cat-grad-c:  #16cebf;
    --cat-stripe:  #9ef9f2;
    --cat-stripe2: #14b7aa;
    --cat-glow:    rgba(20,183,170,.32);
    --cat-tint:    rgba(20,183,170,.06);
    --cat-accent-text: #11a094;
    --cat-grad-dir: 125deg;
}


/* ── Sciences non-linéaires ────────────────────────────── */
/* nlin (base) */
.cat-nlin {
    --cat-grad-a:  #111801;
    --cat-grad-b:  #557509;
    --cat-grad-c:  #97ce16;
    --cat-stripe:  #def99e;
    --cat-stripe2: #86b714;
    --cat-glow:    rgba(134,183,20,.32);
    --cat-tint:    rgba(134,183,20,.06);
    --cat-accent-text: #75a011;
    --cat-grad-dir: 120deg;
}

/* nlin.AO : Self-Organizing */
.cat-nlin-ao {
    --cat-grad-a:  #0e1801;
    --cat-grad-b:  #487509;
    --cat-grad-c:  #6ac916;
    --cat-stripe:  #c8f99e;
    --cat-stripe2: #60b714;
    --cat-glow:    rgba(96,183,20,.32);
    --cat-tint:    rgba(96,183,20,.06);
    --cat-accent-text: #54a011;
    --cat-grad-dir: 112deg;
}

/* nlin.CD : Chaotic Dynamics */
.cat-nlin-cd {
    --cat-grad-a:  #131801;
    --cat-grad-b:  #607509;
    --cat-grad-c:  #afc015;
    --cat-stripe:  #f0f99e;
    --cat-stripe2: #a7b714;
    --cat-glow:    rgba(167,183,20,.32);
    --cat-tint:    rgba(167,183,20,.06);
    --cat-accent-text: #92a011;
    --cat-grad-dir: 128deg;
}

/* nlin.CG : Cellular Automata */
.cat-nlin-cg {
    --cat-grad-a:  #101801;
    --cat-grad-b:  #517509;
    --cat-grad-c:  #81b714;
    --cat-stripe:  #dbf99e;
    --cat-stripe2: #81b714;
    --cat-glow:    rgba(129,183,20,.32);
    --cat-tint:    rgba(129,183,20,.06);
    --cat-accent-text: #71a011;
    --cat-grad-dir: 118deg;
}

/* nlin.PS : Pattern Formation */
.cat-nlin-ps {
    --cat-grad-a:  #0c1801;
    --cat-grad-b:  #3f7509;
    --cat-grad-c:  #4fd317;
    --cat-stripe:  #b9f99e;
    --cat-stripe2: #45b714;
    --cat-glow:    rgba(69,183,20,.32);
    --cat-tint:    rgba(69,183,20,.06);
    --cat-accent-text: #3ca011;
    --cat-grad-dir: 108deg;
}

/* nlin.SI : Integrable Systems */
.cat-nlin-si {
    --cat-grad-a:  #151801;
    --cat-grad-b:  #677509;
    --cat-grad-c:  #aea913;
    --cat-stripe:  #f9f69e;
    --cat-stripe2: #b7b214;
    --cat-glow:    rgba(183,178,20,.32);
    --cat-tint:    rgba(183,178,20,.06);
    --cat-accent-text: #a09b11;
    --cat-grad-dir: 132deg;
}


/* ── Physique nucléaire ────────────────────────────────── */
/* nucl (base) */
.cat-nucl {
    --cat-grad-a:  #180901;
    --cat-grad-b:  #753109;
    --cat-grad-c:  #ce5a16;
    --cat-stripe:  #f9bf9e;
    --cat-stripe2: #b75014;
    --cat-glow:    rgba(183,80,20,.32);
    --cat-tint:    rgba(183,80,20,.06);
    --cat-accent-text: #a04611;
    --cat-grad-dir: 145deg;
}

/* nucl-ex : Experiment */
.cat-nucl-ex {
    --cat-grad-a:  #180b01;
    --cat-grad-b:  #753c09;
    --cat-grad-c:  #d38117;
    --cat-stripe:  #f9d29e;
    --cat-stripe2: #b77014;
    --cat-glow:    rgba(183,112,20,.32);
    --cat-tint:    rgba(183,112,20,.06);
    --cat-accent-text: #a06211;
    --cat-grad-dir: 138deg;
}

/* nucl-th : Theory */
.cat-nucl-th {
    --cat-grad-a:  #180701;
    --cat-grad-b:  #752609;
    --cat-grad-c:  #b72f14;
    --cat-stripe:  #f9ad9e;
    --cat-stripe2: #b72f14;
    --cat-glow:    rgba(183,47,20,.32);
    --cat-tint:    rgba(183,47,20,.06);
    --cat-accent-text: #a02911;
    --cat-grad-dir: 152deg;
}


/* ── Physique quantique ────────────────────────────────── */
/* quant-ph */
.cat-quantph {
    --cat-grad-a:  #180116;
    --cat-grad-b:  #75096c;
    --cat-grad-c:  #ce16bf;
    --cat-stripe:  #f99ef2;
    --cat-stripe2: #b714aa;
    --cat-glow:    rgba(183,20,170,.32);
    --cat-tint:    rgba(183,20,170,.06);
    --cat-accent-text: #a01194;
    --cat-grad-dir: 148deg;
}


/* ── Biologie quantitative ─────────────────────────────── */
/* q-bio (base) */
.cat-qbio {
    --cat-grad-a:  #01180d;
    --cat-grad-b:  #097543;
    --cat-grad-c:  #16ce78;
    --cat-stripe:  #9ef9cf;
    --cat-stripe2: #14b76b;
    --cat-glow:    rgba(20,183,107,.32);
    --cat-tint:    rgba(20,183,107,.06);
    --cat-accent-text: #11a05e;
    --cat-grad-dir: 135deg;
}

/* q-bio.BM : Biomolecules */
.cat-qbio-bm {
    --cat-grad-a:  #01180f;
    --cat-grad-b:  #09754e;
    --cat-grad-c:  #17d3a1;
    --cat-stripe:  #9ef9e1;
    --cat-stripe2: #14b78c;
    --cat-glow:    rgba(20,183,140,.32);
    --cat-tint:    rgba(20,183,140,.06);
    --cat-accent-text: #11a07a;
    --cat-grad-dir: 128deg;
}

/* q-bio.CB : Cell Behavior */
.cat-qbio-cb {
    --cat-grad-a:  #01180a;
    --cat-grad-b:  #097536;
    --cat-grad-c:  #16c94c;
    --cat-stripe:  #9ef9b9;
    --cat-stripe2: #14b745;
    --cat-glow:    rgba(20,183,69,.32);
    --cat-tint:    rgba(20,183,69,.06);
    --cat-accent-text: #11a03c;
    --cat-grad-dir: 142deg;
}

/* q-bio.GN : Genomics */
.cat-qbio-gn {
    --cat-grad-a:  #011811;
    --cat-grad-b:  #097555;
    --cat-grad-c:  #18dcc2;
    --cat-stripe:  #9ef9ed;
    --cat-stripe2: #14b7a1;
    --cat-glow:    rgba(20,183,161,.32);
    --cat-tint:    rgba(20,183,161,.06);
    --cat-accent-text: #11a08d;
    --cat-grad-dir: 122deg;
}

/* q-bio.MN : Mol. Networks */
.cat-qbio-mn {
    --cat-grad-a:  #01180e;
    --cat-grad-b:  #097548;
    --cat-grad-c:  #16ce8b;
    --cat-stripe:  #9ef9d8;
    --cat-stripe2: #14b77b;
    --cat-glow:    rgba(20,183,123,.32);
    --cat-tint:    rgba(20,183,123,.06);
    --cat-accent-text: #11a06c;
    --cat-grad-dir: 130deg;
}

/* q-bio.NC : Neurons & Cognition */
.cat-qbio-nc {
    --cat-grad-a:  #011808;
    --cat-grad-b:  #09752d;
    --cat-grad-c:  #15c02c;
    --cat-stripe:  #9ef9aa;
    --cat-stripe2: #14b72a;
    --cat-glow:    rgba(20,183,42,.32);
    --cat-tint:    rgba(20,183,42,.06);
    --cat-accent-text: #11a024;
    --cat-grad-dir: 145deg;
}

/* q-bio.PE : Populations & Evol */
.cat-qbio-pe {
    --cat-grad-a:  #01180b;
    --cat-grad-b:  #09753c;
    --cat-grad-c:  #16c95e;
    --cat-stripe:  #9ef9c2;
    --cat-stripe2: #14b755;
    --cat-glow:    rgba(20,183,85,.32);
    --cat-tint:    rgba(20,183,85,.06);
    --cat-accent-text: #11a04a;
    --cat-grad-dir: 138deg;
}

/* q-bio.QM : Quant. Methods */
.cat-qbio-qm {
    --cat-grad-a:  #011812;
    --cat-grad-b:  #09755a;
    --cat-grad-c:  #17d7d1;
    --cat-stripe:  #9ef9f6;
    --cat-stripe2: #14b7b2;
    --cat-glow:    rgba(20,183,178,.32);
    --cat-tint:    rgba(20,183,178,.06);
    --cat-accent-text: #11a09b;
    --cat-grad-dir: 120deg;
}

/* q-bio.SC : Subcellular */
.cat-qbio-sc {
    --cat-grad-a:  #011809;
    --cat-grad-b:  #097531;
    --cat-grad-c:  #15c539;
    --cat-stripe:  #9ef9b0;
    --cat-stripe2: #14b735;
    --cat-glow:    rgba(20,183,53,.32);
    --cat-tint:    rgba(20,183,53,.06);
    --cat-accent-text: #11a02e;
    --cat-grad-dir: 143deg;
}

/* q-bio.TO : Tissues & Organs */
.cat-qbio-to {
    --cat-grad-a:  #011807;
    --cat-grad-b:  #097524;
    --cat-grad-c:  #1abc14;
    --cat-stripe:  #a1f99e;
    --cat-stripe2: #19b714;
    --cat-glow:    rgba(25,183,20,.32);
    --cat-tint:    rgba(25,183,20,.06);
    --cat-accent-text: #16a011;
    --cat-grad-dir: 148deg;
}


/* ── Finance quantitative ──────────────────────────────── */
/* q-fin (base) */
.cat-qfin {
    --cat-grad-a:  #011018;
    --cat-grad-b:  #095175;
    --cat-grad-c:  #1691ce;
    --cat-stripe:  #9edbf9;
    --cat-stripe2: #1481b7;
    --cat-glow:    rgba(20,129,183,.32);
    --cat-tint:    rgba(20,129,183,.06);
    --cat-accent-text: #1171a0;
    --cat-grad-dir: 150deg;
}

/* q-fin.CP : Computational Finance */
.cat-qfin-cp {
    --cat-grad-a:  #010d18;
    --cat-grad-b:  #094575;
    --cat-grad-c:  #1664c9;
    --cat-stripe:  #9ec5f9;
    --cat-stripe2: #145bb7;
    --cat-glow:    rgba(20,91,183,.32);
    --cat-tint:    rgba(20,91,183,.06);
    --cat-accent-text: #114fa0;
    --cat-grad-dir: 143deg;
}

/* q-fin.EC : Economics */
.cat-qfin-ec {
    --cat-grad-a:  #011218;
    --cat-grad-b:  #095c75;
    --cat-grad-c:  #15adc5;
    --cat-stripe:  #9eedf9;
    --cat-stripe2: #14a1b7;
    --cat-glow:    rgba(20,161,183,.32);
    --cat-tint:    rgba(20,161,183,.06);
    --cat-accent-text: #118da0;
    --cat-grad-dir: 157deg;
}

/* q-fin.GN : General Finance */
.cat-qfin-gn {
    --cat-grad-a:  #010f18;
    --cat-grad-b:  #094e75;
    --cat-grad-c:  #1581c0;
    --cat-stripe:  #9ed8f9;
    --cat-stripe2: #147bb7;
    --cat-glow:    rgba(20,123,183,.32);
    --cat-tint:    rgba(20,123,183,.06);
    --cat-accent-text: #116ca0;
    --cat-grad-dir: 148deg;
}

/* q-fin.MF : Math Finance */
.cat-qfin-mf {
    --cat-grad-a:  #010c18;
    --cat-grad-b:  #093f75;
    --cat-grad-c:  #1654ce;
    --cat-stripe:  #9ebcf9;
    --cat-stripe2: #144ab7;
    --cat-glow:    rgba(20,74,183,.32);
    --cat-tint:    rgba(20,74,183,.06);
    --cat-accent-text: #1141a0;
    --cat-grad-dir: 140deg;
}

/* q-fin.PM : Portfolio Mgmt */
.cat-qfin-pm {
    --cat-grad-a:  #011118;
    --cat-grad-b:  #095775;
    --cat-grad-c:  #1495bc;
    --cat-stripe:  #9ee4f9;
    --cat-stripe2: #1491b7;
    --cat-glow:    rgba(20,145,183,.32);
    --cat-tint:    rgba(20,145,183,.06);
    --cat-accent-text: #117fa0;
    --cat-grad-dir: 152deg;
}

/* q-fin.PR : Pricing */
.cat-qfin-pr {
    --cat-grad-a:  #010e18;
    --cat-grad-b:  #094875;
    --cat-grad-c:  #156dc5;
    --cat-stripe:  #9eccf9;
    --cat-stripe2: #1466b7;
    --cat-glow:    rgba(20,102,183,.32);
    --cat-tint:    rgba(20,102,183,.06);
    --cat-accent-text: #1159a0;
    --cat-grad-dir: 145deg;
}

/* q-fin.RM : Risk Management */
.cat-qfin-rm {
    --cat-grad-a:  #011318;
    --cat-grad-b:  #096075;
    --cat-grad-c:  #14acb7;
    --cat-stripe:  #9ef3f9;
    --cat-stripe2: #14acb7;
    --cat-glow:    rgba(20,172,183,.32);
    --cat-tint:    rgba(20,172,183,.06);
    --cat-accent-text: #1197a0;
    --cat-grad-dir: 158deg;
}

/* q-fin.ST : Statistical Finance */
.cat-qfin-st {
    --cat-grad-a:  #011118;
    --cat-grad-b:  #095575;
    --cat-grad-c:  #1593c0;
    --cat-stripe:  #9ee1f9;
    --cat-stripe2: #148cb7;
    --cat-glow:    rgba(20,140,183,.32);
    --cat-tint:    rgba(20,140,183,.06);
    --cat-accent-text: #117aa0;
    --cat-grad-dir: 150deg;
}

/* q-fin.TR : Trading */
.cat-qfin-tr {
    --cat-grad-a:  #010b18;
    --cat-grad-b:  #093a75;
    --cat-grad-c:  #1640c9;
    --cat-stripe:  #9eb3f9;
    --cat-stripe2: #143ab7;
    --cat-glow:    rgba(20,58,183,.32);
    --cat-tint:    rgba(20,58,183,.06);
    --cat-accent-text: #1133a0;
    --cat-grad-dir: 140deg;
}


/* ── Statistiques ──────────────────────────────────────── */
/* stat (base) */
.cat-stat {
    --cat-grad-a:  #060315;
    --cat-grad-b:  #241669;
    --cat-grad-c:  #442db7;
    --cat-stripe:  #ad9ef9;
    --cat-stripe2: #3d28a3;
    --cat-glow:    rgba(47,20,183,.32);
    --cat-tint:    rgba(47,20,183,.06);
    --cat-accent-text: #2911a0;
    --cat-grad-dir: 140deg;
}

/* stat.AP : Applications */
.cat-stat-ap {
    --cat-grad-a:  #070118;
    --cat-grad-b:  #2d1669;
    --cat-grad-c:  #5e16c9;
    --cat-stripe:  #c29ef9;
    --cat-stripe2: #5514b7;
    --cat-glow:    rgba(85,20,183,.32);
    --cat-tint:    rgba(85,20,183,.06);
    --cat-accent-text: #4a11a0;
    --cat-grad-dir: 133deg;
}

/* stat.CO : Computation */
.cat-stat-co {
    --cat-grad-a:  #020118;
    --cat-grad-b:  #1b1669;
    --cat-grad-c:  #151bc0;
    --cat-stripe:  #9ea1f9;
    --cat-stripe2: #1419b7;
    --cat-glow:    rgba(20,25,183,.32);
    --cat-tint:    rgba(20,25,183,.06);
    --cat-accent-text: #1116a0;
    --cat-grad-dir: 147deg;
}

/* stat.ME : Methodology */
.cat-stat-me {
    --cat-grad-a:  #050118;
    --cat-grad-b:  #261669;
    --cat-grad-c:  #3915c5;
    --cat-stripe:  #b09ef9;
    --cat-stripe2: #3514b7;
    --cat-glow:    rgba(53,20,183,.32);
    --cat-tint:    rgba(53,20,183,.06);
    --cat-accent-text: #2e11a0;
    --cat-grad-dir: 138deg;
}

/* stat.ML : ML/Stats */
.cat-stat-ml {
    --cat-grad-a:  #080118;
    --cat-grad-b:  #30136c;
    --cat-grad-c:  #7517d3;
    --cat-stripe:  #cc9ef9;
    --cat-stripe2: #6614b7;
    --cat-glow:    rgba(102,20,183,.32);
    --cat-tint:    rgba(102,20,183,.06);
    --cat-accent-text: #5911a0;
    --cat-grad-dir: 130deg;
}

/* stat.TH : Theory */
.cat-stat-th {
    --cat-grad-a:  #020118;
    --cat-grad-b:  #191669;
    --cat-grad-c:  #1425bc;
    --cat-stripe:  #9ea7f9;
    --cat-stripe2: #1424b7;
    --cat-glow:    rgba(20,36,183,.32);
    --cat-tint:    rgba(20,36,183,.06);
    --cat-accent-text: #1120a0;
    --cat-grad-dir: 148deg;
}


/* ── Physique générale & sous-domaines ─────────────────── */
/* physics / ph (défaut) */
.cat-physics {
    --cat-grad-a:  #010c18;
    --cat-grad-b:  #093f75;
    --cat-grad-c:  #1672ce;
    --cat-stripe:  #9eccf9;
    --cat-stripe2: #1466b7;
    --cat-glow:    rgba(20,102,183,.32);
    --cat-tint:    rgba(20,102,183,.06);
    --cat-accent-text: #1159a0;
    --cat-grad-dir: 135deg;
}

/* cat-default */
.cat-default {
    --cat-grad-a:  #010c18;
    --cat-grad-b:  #093f75;
    --cat-grad-c:  #1672ce;
    --cat-stripe:  #9eccf9;
    --cat-stripe2: #1466b7;
    --cat-glow:    rgba(20,102,183,.32);
    --cat-tint:    rgba(20,102,183,.06);
    --cat-accent-text: #1159a0;
    --cat-grad-dir: 135deg;
}

/* physics.acc-ph : Accelerator */
.cat-physics-accph {
    --cat-grad-a:  #181601;
    --cat-grad-b:  #756c09;
    --cat-grad-c:  #c9bb16;
    --cat-stripe:  #f9f29e;
    --cat-stripe2: #b7aa14;
    --cat-glow:    rgba(183,170,20,.32);
    --cat-tint:    rgba(183,170,20,.06);
    --cat-accent-text: #a09411;
    --cat-grad-dir: 128deg;
}

/* physics.ao-ph : Atmospheric & Oceanic */
.cat-physics-aoph {
    --cat-grad-a:  #011218;
    --cat-grad-b:  #095a75;
    --cat-grad-c:  #17a4d3;
    --cat-stripe:  #9ee2f9;
    --cat-stripe2: #148eb7;
    --cat-glow:    rgba(20,142,183,.32);
    --cat-tint:    rgba(20,142,183,.06);
    --cat-accent-text: #117ca0;
    --cat-grad-dir: 138deg;
}

/* physics.app-ph : Applied Physics */
.cat-physics-appph {
    --cat-grad-a:  #180a01;
    --cat-grad-b:  #753609;
    --cat-grad-c:  #c96116;
    --cat-stripe:  #f9c49e;
    --cat-stripe2: #b75814;
    --cat-glow:    rgba(183,88,20,.32);
    --cat-tint:    rgba(183,88,20,.06);
    --cat-accent-text: #a04d11;
    --cat-grad-dir: 132deg;
}

/* physics.atm-clus : Atomic Clusters */
.cat-physics-atmclus {
    --cat-grad-a:  #100118;
    --cat-grad-b:  #510975;
    --cat-grad-c:  #8114b7;
    --cat-stripe:  #db9ef9;
    --cat-stripe2: #8114b7;
    --cat-glow:    rgba(129,20,183,.32);
    --cat-tint:    rgba(129,20,183,.06);
    --cat-accent-text: #7111a0;
    --cat-grad-dir: 145deg;
}

/* physics.atom-ph : Atomic Physics */
.cat-physics-atomph {
    --cat-grad-a:  #0e0118;
    --cat-grad-b:  #480975;
    --cat-grad-c:  #7915c0;
    --cat-stripe:  #d39ef9;
    --cat-stripe2: #7314b7;
    --cat-glow:    rgba(115,20,183,.32);
    --cat-tint:    rgba(115,20,183,.06);
    --cat-accent-text: #6511a0;
    --cat-grad-dir: 148deg;
}

/* physics.bio-ph : Biophysics */
.cat-physics-bioph {
    --cat-grad-a:  #011807;
    --cat-grad-b:  #097524;
    --cat-grad-c:  #15c541;
    --cat-stripe:  #9ef9b5;
    --cat-stripe2: #14b73d;
    --cat-glow:    rgba(20,183,61,.32);
    --cat-tint:    rgba(20,183,61,.06);
    --cat-accent-text: #11a035;
    --cat-grad-dir: 135deg;
}

/* physics.chem-ph : Chemical Physics */
.cat-physics-chemph {
    --cat-grad-a:  #181401;
    --cat-grad-b:  #756309;
    --cat-grad-c:  #c9ac16;
    --cat-stripe:  #f9ea9e;
    --cat-stripe2: #b79c14;
    --cat-glow:    rgba(183,156,20,.32);
    --cat-tint:    rgba(183,156,20,.06);
    --cat-accent-text: #a08811;
    --cat-grad-dir: 125deg;
}

/* physics.class-ph : Classical */
.cat-physics-classph {
    --cat-grad-a:  #010e18;
    --cat-grad-b:  #094875;
    --cat-grad-c:  #1473b7;
    --cat-stripe:  #9ed3f9;
    --cat-stripe2: #1473b7;
    --cat-glow:    rgba(20,115,183,.32);
    --cat-tint:    rgba(20,115,183,.06);
    --cat-accent-text: #1165a0;
    --cat-grad-dir: 138deg;
}

/* physics.comp-ph : Computational */
.cat-physics-compph {
    --cat-grad-a:  #011812;
    --cat-grad-b:  #09755a;
    --cat-grad-c:  #15c095;
    --cat-stripe:  #9ef9e2;
    --cat-stripe2: #14b78e;
    --cat-glow:    rgba(20,183,142,.32);
    --cat-tint:    rgba(20,183,142,.06);
    --cat-accent-text: #11a07c;
    --cat-grad-dir: 120deg;
}

/* physics.data-an : Data Analysis */
.cat-physics-dataan {
    --cat-grad-a:  #030118;
    --cat-grad-b:  #120975;
    --cat-grad-c:  #2415c5;
    --cat-stripe:  #a59ef9;
    --cat-stripe2: #2114b7;
    --cat-glow:    rgba(33,20,183,.32);
    --cat-tint:    rgba(33,20,183,.06);
    --cat-accent-text: #1d11a0;
    --cat-grad-dir: 135deg;
}

/* physics.flu-dyn : Fluid Dynamics */
.cat-physics-fluDyn {
    --cat-grad-a:  #011318;
    --cat-grad-b:  #096075;
    --cat-grad-c:  #17add3;
    --cat-stripe:  #9ee7f9;
    --cat-stripe2: #1496b7;
    --cat-glow:    rgba(20,150,183,.32);
    --cat-tint:    rgba(20,150,183,.06);
    --cat-accent-text: #1184a0;
    --cat-grad-dir: 130deg;
}

/* physics.geo-ph : Geophysics */
.cat-physics-geoph {
    --cat-grad-a:  #051801;
    --cat-grad-b:  #1b7509;
    --cat-grad-c:  #2dae13;
    --cat-stripe:  #adf99e;
    --cat-stripe2: #2fb714;
    --cat-glow:    rgba(47,183,20,.32);
    --cat-tint:    rgba(47,183,20,.06);
    --cat-accent-text: #29a011;
    --cat-grad-dir: 140deg;
}

/* physics.ins-det : Instrumentation */
.cat-physics-insdet {
    --cat-grad-a:  #180c01;
    --cat-grad-b:  #753f09;
    --cat-grad-c:  #b76614;
    --cat-stripe:  #f9cc9e;
    --cat-stripe2: #b76614;
    --cat-glow:    rgba(183,102,20,.32);
    --cat-tint:    rgba(183,102,20,.06);
    --cat-accent-text: #a05911;
    --cat-grad-dir: 135deg;
}

/* physics.med-ph : Medical Physics */
.cat-physics-medph {
    --cat-grad-a:  #180105;
    --cat-grad-b:  #75091b;
    --cat-grad-c:  #c01531;
    --cat-stripe:  #f99ead;
    --cat-stripe2: #b7142f;
    --cat-glow:    rgba(183,20,47,.32);
    --cat-tint:    rgba(183,20,47,.06);
    --cat-accent-text: #a01129;
    --cat-grad-dir: 140deg;
}

/* physics.optics : Optics */
.cat-physics-optics {
    --cat-grad-a:  #181301;
    --cat-grad-b:  #756009;
    --cat-grad-c:  #dcb518;
    --cat-stripe:  #f9e79e;
    --cat-stripe2: #b79614;
    --cat-glow:    rgba(183,150,20,.32);
    --cat-tint:    rgba(183,150,20,.06);
    --cat-accent-text: #a08411;
    --cat-grad-dir: 125deg;
}

/* physics.plasm-ph : Plasma Physics */
.cat-physics-plasmph {
    --cat-grad-a:  #180114;
    --cat-grad-b:  #750963;
    --cat-grad-c:  #b7149c;
    --cat-stripe:  #f99eea;
    --cat-stripe2: #b7149c;
    --cat-glow:    rgba(183,20,156,.32);
    --cat-tint:    rgba(183,20,156,.06);
    --cat-accent-text: #a01188;
    --cat-grad-dir: 145deg;
}

/* physics.space-ph : Space Physics */
.cat-physics-spaceph {
    --cat-grad-a:  #010818;
    --cat-grad-b:  #092d75;
    --cat-grad-c:  #1652c9;
    --cat-stripe:  #9ebcf9;
    --cat-stripe2: #144ab7;
    --cat-glow:    rgba(20,74,183,.32);
    --cat-tint:    rgba(20,74,183,.06);
    --cat-accent-text: #1141a0;
    --cat-grad-dir: 130deg;
}

/* physics.soc-ph : Physics & Society */
.cat-physics-socph {
    --cat-grad-a:  #0c1801;
    --cat-grad-b:  #3f7509;
    --cat-grad-c:  #60ae13;
    --cat-stripe:  #ccf99e;
    --cat-stripe2: #66b714;
    --cat-glow:    rgba(102,183,20,.32);
    --cat-tint:    rgba(102,183,20,.06);
    --cat-accent-text: #59a011;
    --cat-grad-dir: 135deg;
}


/* ── Codes legacy / DataCite ───────────────────────────── */
/* chao-dyn */
.cat-chaodyn {
    --cat-grad-a:  #131801;
    --cat-grad-b:  #607509;
    --cat-grad-c:  #a9ce16;
    --cat-stripe:  #e7f99e;
    --cat-stripe2: #96b714;
    --cat-glow:    rgba(150,183,20,.32);
    --cat-tint:    rgba(150,183,20,.06);
    --cat-accent-text: #84a011;
    --cat-grad-dir: 128deg;
}

/* alg-geom */
.cat-alggeom {
    --cat-grad-a:  #010418;
    --cat-grad-b:  #091875;
    --cat-grad-c:  #152cc0;
    --cat-stripe:  #9eaaf9;
    --cat-stripe2: #142ab7;
    --cat-glow:    rgba(20,42,183,.32);
    --cat-tint:    rgba(20,42,183,.06);
    --cat-accent-text: #1124a0;
    --cat-grad-dir: 125deg;
}

/* dg-ga */
.cat-dg-ga {
    --cat-grad-a:  #010518;
    --cat-grad-b:  #091f75;
    --cat-grad-c:  #1435b7;
    --cat-stripe:  #9eb0f9;
    --cat-stripe2: #1435b7;
    --cat-glow:    rgba(20,53,183,.32);
    --cat-tint:    rgba(20,53,183,.06);
    --cat-accent-text: #112ea0;
    --cat-grad-dir: 130deg;
}

/* q-alg */
.cat-q-alg {
    --cat-grad-a:  #010118;
    --cat-grad-b:  #090975;
    --cat-grad-c:  #1414b7;
    --cat-stripe:  #9e9ef9;
    --cat-stripe2: #1414b7;
    --cat-glow:    rgba(20,20,183,.32);
    --cat-tint:    rgba(20,20,183,.06);
    --cat-accent-text: #1111a0;
    --cat-grad-dir: 120deg;
}

/* solv-int */
.cat-solvint {
    --cat-grad-a:  #011816;
    --cat-grad-b:  #09756c;
    --cat-grad-c:  #15c0b2;
    --cat-stripe:  #9ef9f2;
    --cat-stripe2: #14b7aa;
    --cat-glow:    rgba(20,183,170,.32);
    --cat-tint:    rgba(20,183,170,.06);
    --cat-accent-text: #11a094;
    --cat-grad-dir: 125deg;
}

/* mtrl-th */
.cat-mtrlth {
    --cat-grad-a:  #011418;
    --cat-grad-b:  #096375;
    --cat-grad-c:  #1394ae;
    --cat-stripe:  #9eeaf9;
    --cat-stripe2: #149cb7;
    --cat-glow:    rgba(20,156,183,.32);
    --cat-tint:    rgba(20,156,183,.06);
    --cat-accent-text: #1188a0;
    --cat-grad-dir: 135deg;
}


/* ══════════════════════════════════════════════════════════
   CARTE ARTICLE — utilise les variables catégorie
══════════════════════════════════════════════════════════ */
.article-card {
    background: var(--white);
    margin: 0 auto 1.5rem;
    max-width: 720px;
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    overflow: hidden;
    transition: box-shadow var(--transition), transform var(--transition);
    /* Filet coloré gauche hérité de la catégorie */
    border-left: 4px solid var(--cat-stripe2, var(--accent));
}

.article-card:hover {
    box-shadow: 0 8px 32px var(--cat-glow, rgba(11,31,58,.18));
    transform: translateY(-3px);
}

/* ── En-tête : gradient de la catégorie ─────────────────── */
.article-header {
    position: relative;
    padding: 1.6rem 1.4rem 1.2rem;
    background: linear-gradient(var(--cat-grad-dir, 135deg),
        var(--cat-grad-a) 0%,
        var(--cat-grad-b) 50%,
        var(--cat-grad-c) 100%);
    color: var(--white);
    min-height: 120px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

/* Halo décoratif en haut à droite */
.article-header::after {
    content: '';
    position: absolute;
    right: -40px; top: -40px;
    width: 200px; height: 200px;
    border-radius: 50%;
    background: radial-gradient(circle, var(--cat-glow) 0%, transparent 65%);
    pointer-events: none;
}

/* Trait bicolore gauche */
.article-header::before {
    content: '';
    position: absolute;
    left: -4px; top: 0; bottom: 0; /* -4px pour couvrir le border-left de .article-card */
    width: 4px;
    background: linear-gradient(180deg, var(--cat-stripe), var(--cat-stripe2));
}

/* ── Corps de la carte : teinte légère catégorie ─────────── */
.summary-container {
    background: var(--white);
    /* Subtile teinte de fond liée à la catégorie */
    background-image: linear-gradient(to bottom, var(--cat-tint) 0%, transparent 120px);
}

/* ── Titre (section-title) colore par catégorie ─────────── */
.section-title {
    font-family: var(--font-head);
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.25;
    color: var(--navy);
    letter-spacing: .01em;
    margin-bottom: .7rem;
}

/* Filet coloré sous le titre */
.section-title::after {
    content: '';
    display: block;
    width: 40px;
    height: 2px;
    margin-top: .4rem;
    background: linear-gradient(90deg, var(--cat-stripe), var(--cat-stripe2));
    border-radius: 2px;
}

/* ── Auteurs colorés par catégorie ──────────────────────── */
.abstract-section > .meta-value.authors {
    color: var(--cat-accent-text);
}

/* ── "Lire plus" coloré par catégorie ───────────────────── */
.read-more-link {
    color: var(--cat-accent-text);
}
.read-more-link:hover {
    opacity: .75;
}

/* ══════════════════════════════════════════════════════════
   COMPOSANTS COMMUNS
══════════════════════════════════════════════════════════ */

.abstract-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-top: .5rem;
}

.meta-item { display: inline-flex; align-items: center; }

.meta-item .meta-value {
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    background: rgba(255,255,255,.18);
    color: rgba(255,255,255,.92);
    padding: .25rem .65rem;
    border-radius: 2rem;
    border: 1px solid rgba(255,255,255,.25);
    backdrop-filter: blur(4px);
    white-space: nowrap;
}
.meta-item:first-child .meta-value {
    background: rgba(255,255,255,.28);
    border-color: rgba(255,255,255,.45);
    font-weight: 800;
}

.action-btn {
    display: inline-block;
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 700;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: .08em;
    padding: .32rem .85rem;
    border-radius: var(--radius-sm);
    transition: background var(--transition), color var(--transition),
                border-color var(--transition), transform var(--transition);
    white-space: nowrap;
}
.action-btn:active { transform: scale(.97); }

.download-btn {
    background: transparent;
    color: rgba(255,255,255,.85);
    border: 1.5px solid rgba(255,255,255,.45);
}
.download-btn::before { content: '↓ '; }
.download-btn:hover { background: rgba(255,255,255,.15); color: var(--white); border-color: var(--white); }

.read-btn {
    background: rgba(255,255,255,.18);
    color: var(--white);
    border: 1.5px solid rgba(255,255,255,.45);
}
.read-btn::before { content: '▶ '; font-size: .6em; vertical-align: middle; }
.read-btn:hover { background: rgba(255,255,255,.30); border-color: rgba(255,255,255,.70); }

/* ── Métadonnées ─────────────────────────────────────────── */
.abstract-section { padding: 1.2rem 1.4rem 1.5rem; }

.metadata {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .3rem .6rem;
    margin-bottom: .85rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid var(--border);
}
.metadata .meta-label {
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 600;
    color: var(--text-light);
    text-transform: uppercase;
    letter-spacing: .07em;
}
.metadata .meta-value {
    font-family: var(--font-ui);
    font-size: .8rem;
    color: var(--text-mid);
}

.abstract-section > .meta-label {
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--text-light);
}
.abstract-section > .meta-value.authors {
    font-family: var(--font-ui);
    font-size: .85rem;
    font-weight: 600;
    margin-left: .3rem;
    margin-bottom: .9rem;
    display: inline-block;
}

/* ── Résumé tronqué ─────────────────────────────────────── */
.abstract-body { margin-top: .8rem; }

.abstract-body p {
    font-family: var(--font-body);
    font-size: .9rem;
    font-weight: 300;
    line-height: 1.8;
    color: var(--text-mid);
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
    position: relative;
}
.abstract-body p::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 2.5rem;
    background: linear-gradient(to bottom, transparent, var(--white));
    pointer-events: none;
}

.summary-container.expanded .abstract-body p {
    -webkit-line-clamp: unset;
    overflow: visible;
    display: block;
}
.summary-container.expanded .abstract-body p::after { display: none; }

.read-more-link {
    display: inline-block;
    margin-top: .6rem;
    font-family: var(--font-ui);
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    text-decoration: none;
    border-bottom: 1.5px solid currentColor;
    padding-bottom: 1px;
    cursor: pointer;
    transition: opacity var(--transition);
}
.read-more-link::after { content: ' ↓'; }
.summary-container.expanded .read-more-link::after { content: ' ↑'; }
.summary-container.expanded .read-more-link { color: var(--text-mid); }

/* ══════════════════════════════════════════════════════════
   TOPBAR
══════════════════════════════════════════════════════════ */
.site-topbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: 800px;
    margin: 0 auto;
    padding: .9rem 0 .8rem;
    border-bottom: 1px solid var(--border);
    margin-bottom: .5rem;
}

.topbar-home {
    display: flex;
    align-items: center;
    gap: .55rem;
    text-decoration: none;
    transition: opacity var(--transition);
}
.topbar-home:hover { opacity: .75; }

.topbar-icon {
    width: 30px; height: 30px;
    background: var(--accent);
    border-radius: 5px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-head);
    font-size: .95rem;
    font-weight: 800;
    color: var(--white);
    flex-shrink: 0;
}

.topbar-label {
    font-family: var(--font-head);
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--navy);
}

.topbar-back-btn {
    font-family: var(--font-ui);
    font-size: .76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--accent);
    text-decoration: none;
    border: 1.5px solid var(--accent);
    border-radius: var(--radius-sm);
    padding: .38rem .9rem;
    transition: background var(--transition), color var(--transition);
    white-space: nowrap;
}
.topbar-back-btn:hover { background: var(--accent); color: var(--white); }

/* ══════════════════════════════════════════════════════════
   PAGINATION
══════════════════════════════════════════════════════════ */
.pagination-bar {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-wrap: wrap;
    gap: .6rem;
    padding: 1.2rem 1rem 1.5rem;
    max-width: 800px;
    margin: 0 auto;
}

.article-count {
    width: 100%;
    text-align: center;
    font-family: var(--font-ui);
    font-size: .78rem;
    color: var(--text-light);
    letter-spacing: .06em;
    text-transform: uppercase;
    margin-bottom: .3rem;
}

.pagination-bar .nav-prev a,
.pagination-bar .nav-next a,
.pagination-bar .nav-first a {
    display: inline-block;
    font-family: var(--font-ui);
    font-size: .82rem;
    font-weight: 700;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: .07em;
    padding: .6rem 1.2rem;
    border-radius: var(--radius-sm);
    border: 2px solid var(--navy);
    color: var(--navy);
    background: var(--white);
    box-shadow: var(--shadow-card);
    white-space: nowrap;
    transition: background var(--transition), color var(--transition),
                transform var(--transition), box-shadow var(--transition);
}
.pagination-bar .nav-prev a:hover,
.pagination-bar .nav-next a:hover,
.pagination-bar .nav-first a:hover {
    background: var(--navy);
    color: var(--white);
    transform: translateY(-2px);
    box-shadow: var(--shadow-hover);
}
.pagination-bar .nav-prev a:active,
.pagination-bar .nav-next a:active,
.pagination-bar .nav-first a:active { transform: translateY(0); }

.pagination-bar .nav-next a { background: var(--accent); border-color: var(--accent); color: var(--white); }
.pagination-bar .nav-next a::after { content: ' →'; }
.pagination-bar .nav-next a:hover { background: var(--accent-warm); border-color: var(--accent-warm); }

.pagination-bar .nav-prev a::before { content: '← '; }

.pagination-bar .nav-first a { font-size: .72rem; color: var(--text-mid); border-color: var(--border); }
.pagination-bar .nav-first a:hover { background: var(--navy); color: var(--white); border-color: var(--navy); }

/* ══════════════════════════════════════════════════════════
   RESPONSIVE
══════════════════════════════════════════════════════════ */
@media (min-width: 540px) {
    body { padding: 0 1.5rem 2rem; }
    body::before { margin: 0 -1.5rem; }
}
@media (min-width: 768px) {
    body { padding: 0 2rem 3rem; }
    body::before { margin: 0 -2rem; }
    .article-card { max-width: 720px; }
    .abstract-section { padding: 1.4rem 2rem 1.8rem; }
    .article-header { padding: 2rem 2rem 1.4rem; min-height: 140px; }
    .section-title { font-size: 1.5rem; }
}
@media (min-width: 1024px) {
    .article-card { max-width: 800px; }
}
@media (max-width: 640px) {
    /* Topbar résultats : agrandir les éléments */
    .site-topbar { padding: .85rem 0; }
    .topbar-label { font-size: .95rem; }
    .topbar-icon { width: 34px; height: 34px; font-size: 1rem; }
    .topbar-back-btn { font-size: .82rem; padding: .45rem 1rem; }
}
@media (max-width: 420px) {
    .topbar-label { display: none; }
}

/* ── Accessibilité ──────────────────────────────────────── */
a:focus-visible { outline: 2.5px solid var(--accent); outline-offset: 3px; border-radius: var(--radius-sm); }
::selection { background: var(--accent); color: var(--white); }

/* ══════════════════════════════════════════════════════════
   ANIMATION D'ENTRÉE DES CARTES
   Stagger basé sur --card-index (injecté en PHP inline style)
══════════════════════════════════════════════════════════ */
@keyframes cardIn {
    from {
        opacity: 0;
        transform: translateY(22px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.article-card {
    animation: cardIn .45s ease both;
    /* délai calculé : 80ms × index, plafonné visuellement à ~10 cartes */
    animation-delay: calc(var(--card-index, 0) * 80ms);
}

/* Désactive l'animation pour les utilisateurs qui préfèrent moins de mouvement */
@media (prefers-reduced-motion: reduce) {
    .article-card { animation: none; }
}

/* ══════════════════════════════════════════════════════════
   PAGINATION ENRICHIE
══════════════════════════════════════════════════════════ */

/* Conteneur global de la pagination */
.pagination-bar {
    flex-direction: column;
    align-items: center;
    gap: .8rem;
}

/* Ligne du haut : résumé de recherche + compteur */
.pagination-meta {
    width: 100%;
    max-width: 720px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .4rem .8rem;
    padding: .6rem .9rem;
    background: var(--white);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-card);
    border-left: 3px solid var(--accent);
}

.pagination-query {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .3rem .5rem;
    font-family: var(--font-ui);
    font-size: .78rem;
}

.query-label {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--text-light);
    font-size: .68rem;
}

.query-value {
    font-weight: 700;
    color: var(--navy);
}

.query-sep {
    color: var(--text-light);
}

/* Compteur d'articles + indicateur de page */
.pagination-counter {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-family: var(--font-ui);
    font-size: .78rem;
    white-space: nowrap;
}

.counter-total {
    color: var(--text-mid);
    font-weight: 600;
}

.counter-sep {
    color: var(--border);
}

/* Pastille page X/Y */
.page-indicator {
    display: inline-flex;
    align-items: center;
    gap: .15rem;
    background: var(--navy);
    border-radius: 2rem;
    padding: .2rem .65rem;
    line-height: 1;
}

.page-current {
    font-family: var(--font-head);
    font-size: .9rem;
    font-weight: 800;
    color: var(--white);
}

.page-slash {
    color: rgba(255,255,255,.4);
    font-size: .75rem;
}

.page-total {
    font-family: var(--font-ui);
    font-size: .72rem;
    color: rgba(255,255,255,.6);
    font-weight: 600;
}

/* Ligne du bas : boutons de navigation */
.pagination-btns {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    justify-content: center;
}

/* Pills numéros de page */
.page-pills {
    display: flex;
    align-items: center;
    gap: .3rem;
}

.page-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px; height: 32px;
    border-radius: var(--radius-sm);
    font-family: var(--font-head);
    font-size: .88rem;
    font-weight: 700;
    color: var(--text-mid);
    background: var(--white);
    border: 1.5px solid var(--border);
    cursor: default;
    transition: background var(--transition), color var(--transition);
}

.page-pill.active {
    background: var(--navy);
    color: var(--white);
    border-color: var(--navy);
    transform: scale(1.08);
}

/* Responsive pagination */
@media (max-width: 540px) {
    .pagination-meta {
        flex-direction: column;
        align-items: flex-start;
    }
    .page-pills { display: none; }
}

/* ══════════════════════════════════════════════════════════
   TYPOGRAPHIE MOBILE — police nettement agrandie sous 540px
══════════════════════════════════════════════════════════ */
@media (max-width: 539px) {

    /* Base : on monte le corps entier à 18px */
    html { font-size: 18px; }

    /* Titre de l'article */
    .section-title {
        font-size: 1.35rem;
        line-height: 1.2;
    }

    /* Résumé / abstract */
    .abstract-body p {
        font-size: 1rem;
        line-height: 1.9;
    }

    /* Auteurs */
    .abstract-section > .meta-value.authors {
        font-size: 0.5rem;
    }

    /* Métadonnées (dates) */
    .metadata .meta-label {
        font-size: .85rem;
    }
    .metadata .meta-value {
        font-size: .95rem;
    }

    /* Badges catégorie dans le header */
    .meta-item .meta-value {
        font-size: .95rem;
        padding: .32rem .8rem;
    }

    /* Boutons PDF / Read */
    .action-btn {
        font-size: 1rem;
        padding: .45rem 1rem;
    }

    /* Lien "Lire plus" */
    .read-more-link {
        font-size: 1rem;
        margin-top: .8rem;
    }

    /* Padding interne des cartes */
    .abstract-section {
        padding: 1.2rem 1.1rem 1.5rem;
    }
    .article-header {
        padding: 1.4rem 1.1rem 1rem;
    }

    /* Pagination meta */
    .pagination-meta {
        font-size: .88rem;
    }
    .query-value {
        font-size: .88rem;
    }
    .counter-total {
        font-size: .88rem;
    }
}


/* ══════════════════════════════════════════════════════════
   PAGE D'ACCUEIL — Hero, formulaire de recherche, catégories
   (index.php)
══════════════════════════════════════════════════════════ */
/* ══════════════════════════════════════════════════════════
   HERO
══════════════════════════════════════════════════════════ */
.hero {
    position: relative;
    background:
        linear-gradient(160deg, var(--navy) 0%, var(--blue-mid) 60%, #1a6895 100%);
    padding: 0 1.5rem;
    overflow: hidden;
    min-height: 420px;
    display: flex;
    flex-direction: column;
}

/* Trait orange en haut */
.hero::before {
    content: '';
    display: block;
    height: 4px;
    background: linear-gradient(90deg, var(--accent) 0%, var(--accent-gold) 60%, var(--accent-warm) 100%);
}

/* Décor géométrique abstrait en fond */
.hero-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}
.hero-bg::before {
    content: '';
    position: absolute;
    top: -80px; right: -120px;
    width: 520px; height: 520px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(240,78,35,.18) 0%, transparent 68%);
    animation: pulse 8s ease-in-out infinite;
}
.hero-bg::after {
    content: '';
    position: absolute;
    bottom: -60px; left: -80px;
    width: 380px; height: 380px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(245,166,35,.12) 0%, transparent 70%);
    animation: pulse 11s ease-in-out infinite reverse;
}
@keyframes pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50%       { transform: scale(1.1); opacity: .7; }
}

/* Grille de points décorative */
.hero-dots {
    position: absolute;
    top: 0; right: 0;
    width: 50%; height: 100%;
    background-image: radial-gradient(rgba(255,255,255,.07) 1px, transparent 1px);
    background-size: 28px 28px;
    pointer-events: none;
}

/* ── Barre de navigation en haut du hero ───────────────── */
.site-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.4rem 0 0;
    position: relative;
    z-index: 2;
}

.site-brand {
    display: flex;
    align-items: center;
    gap: .7rem;
    text-decoration: none;
}

.brand-icon {
    width: 36px; height: 36px;
    background: var(--accent);
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-head);
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--white);
    letter-spacing: -.02em;
    flex-shrink: 0;
}

.brand-name {
    font-family: var(--font-head);
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--white);
    letter-spacing: .04em;
    text-transform: uppercase;
}

.brand-sub {
    font-family: var(--font-ui);
    font-size: .68rem;
    font-weight: 500;
    color: rgba(255,255,255,.55);
    letter-spacing: .12em;
    text-transform: uppercase;
    display: block;
    margin-top: -.15rem;
}

.nav-badge {
    font-family: var(--font-ui);
    font-size: .7rem;
    font-weight: 600;
    color: rgba(255,255,255,.6);
    border: 1px solid rgba(255,255,255,.2);
    padding: .3rem .8rem;
    border-radius: 2rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}

/* ── Corps du hero ─────────────────────────────────────── */
.hero-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    padding: 2.5rem 0 3rem;
    position: relative;
    z-index: 2;
    max-width: 640px;
}

.hero-eyebrow {
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--accent-gold);
    margin-bottom: .9rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.hero-eyebrow::before {
    content: '';
    display: inline-block;
    width: 24px; height: 2px;
    background: var(--accent-gold);
}

.hero-title {
    font-family: var(--font-head);
    font-size: clamp(2.2rem, 5vw, 3.6rem);
    font-weight: 800;
    line-height: 1.05;
    color: var(--white);
    letter-spacing: .01em;
    margin-bottom: .8rem;
}

.hero-title em {
    font-style: normal;
    color: var(--accent-gold);
}

.hero-desc {
    font-family: var(--font-body);
    font-size: .88rem;
    font-weight: 300;
    line-height: 1.75;
    color: rgba(255,255,255,.65);
    max-width: 480px;
    margin-bottom: 0;
}

/* ══════════════════════════════════════════════════════════
   FORMULAIRE DE RECHERCHE
══════════════════════════════════════════════════════════ */
.search-panel {
    background: var(--white);
    max-width: 860px;
    margin: -2.5rem auto 0;
    border-radius: var(--radius-md);
    box-shadow: 0 12px 48px rgba(11,31,58,.18);
    position: relative;
    z-index: 10;
    overflow: hidden;
}

/* Trait coloré en haut du panel */
.search-panel::before {
    content: '';
    display: block;
    height: 3px;
    background: linear-gradient(90deg, var(--accent) 0%, var(--accent-gold) 100%);
}

/* ── Onglets du panel ───────────────────────────────────── */
.panel-tabs {
    display: flex;
    border-bottom: 1px solid var(--border);
    background: var(--off-white);
}

.panel-tab {
    font-family: var(--font-ui);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--text-light);
    padding: .9rem 1.4rem;
    cursor: pointer;
    border-bottom: 2.5px solid transparent;
    transition: color var(--transition), border-color var(--transition);
    user-select: none;
}

.panel-tab.active {
    color: var(--navy);
    border-bottom-color: var(--accent);
    background: var(--white);
}

.panel-tab:hover:not(.active) { color: var(--text-mid); }

/* ── Corps du panel ─────────────────────────────────────── */
.panel-body {
    padding: 1.8rem 2rem 2rem;
}

/* Barre de recherche principale */
.search-bar-wrap {
    display: flex;
    gap: .6rem;
    margin-bottom: 1.5rem;
}

.search-input-main {
    flex: 1;
    font-family: var(--font-body);
    font-size: 1rem;
    font-weight: 300;
    color: var(--text-dark);
    background: var(--off-white);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    padding: .85rem 1.1rem;
    outline: none;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.search-input-main::placeholder { color: var(--text-light); }
.search-input-main:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(240,78,35,.12);
}

.btn-search-main {
    font-family: var(--font-head);
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--white);
    background: var(--accent);
    border: none;
    border-radius: var(--radius-sm);
    padding: .85rem 1.8rem;
    cursor: pointer;
    white-space: nowrap;
    transition: background var(--transition), transform var(--transition);
}
.btn-search-main:hover { background: var(--accent-warm); transform: translateY(-1px); }
.btn-search-main:active { transform: translateY(0); }

/* Filtres avancés en grille */
.filters-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem 1.5rem;
    margin-bottom: 1.4rem;
}

.filter-group {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.filter-group.full { grid-column: 1 / -1; }

.filter-label {
    font-family: var(--font-ui);
    font-size: .7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--text-light);
}

.filter-select,
.filter-input {
    font-family: var(--font-ui);
    font-size: .88rem;
    color: var(--text-dark);
    background: var(--off-white);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    padding: .6rem .85rem;
    outline: none;
    width: 100%;
    transition: border-color var(--transition);
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238a9aaa' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .75rem center;
    padding-right: 2rem;
}
.filter-input {
    background-image: none;
    padding-right: .85rem;
}
.filter-select:focus,
.filter-input:focus {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(240,78,35,.10);
}

/* Ligne tri */
.sort-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem 1.2rem;
    padding-top: 1.1rem;
    border-top: 1px solid var(--border);
}

.sort-label-main {
    font-family: var(--font-ui);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--text-light);
    margin-right: .2rem;
}

.radio-pill {
    display: flex;
    align-items: center;
    gap: .4rem;
    cursor: pointer;
}

.radio-pill input[type="radio"] { display: none; }

.radio-pill-label {
    font-family: var(--font-ui);
    font-size: .78rem;
    font-weight: 600;
    color: var(--text-mid);
    background: var(--off-white);
    border: 1.5px solid var(--border);
    border-radius: 2rem;
    padding: .28rem .75rem;
    cursor: pointer;
    transition: all var(--transition);
    white-space: nowrap;
}

.radio-pill input:checked + .radio-pill-label {
    background: var(--navy);
    border-color: var(--navy);
    color: var(--white);
}

.radio-pill-label:hover { border-color: var(--navy); }

/* Séparateur entre tris et ordre */
.sort-divider {
    width: 1px;
    height: 20px;
    background: var(--border);
    align-self: center;
}

/* ══════════════════════════════════════════════════════════
   SECTION CATÉGORIES
══════════════════════════════════════════════════════════ */
.categories-section {
    max-width: 860px;
    margin: 3.5rem auto 0;
    padding: 0 1.5rem;
}

.section-eyebrow {
    font-family: var(--font-ui);
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--accent);
    margin-bottom: .5rem;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.section-eyebrow::before {
    content: '';
    display: inline-block;
    width: 16px; height: 2px;
    background: var(--accent);
}

.section-heading {
    font-family: var(--font-head);
    font-size: 1.7rem;
    font-weight: 700;
    color: var(--navy);
    letter-spacing: .01em;
    margin-bottom: 1.4rem;
}

/* Grille de catégories */
.cat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: .75rem;
    margin-bottom: 3rem;
}

.cat-card {
    position: relative;
    padding: 1.1rem 1.2rem 1rem;
    border-radius: var(--radius-md);
    border: 1.5px solid var(--border);
    background: var(--white);
    cursor: pointer;
    transition: border-color var(--transition), box-shadow var(--transition), transform var(--transition);
    overflow: hidden;
    user-select: none;
}

.cat-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0;
    width: 3px; height: 100%;
    background: var(--cat-color, var(--accent));
    transition: width var(--transition);
}

.cat-card:hover {
    border-color: var(--cat-color, var(--accent));
    box-shadow: 0 4px 20px rgba(11,31,58,.10);
    transform: translateY(-2px);
}

.cat-card:hover::before { width: 5px; }

/* Catégorie sélectionnée */
.cat-card.selected {
    background: rgba(from var(--cat-color, var(--accent)) r g b / .08);
    background: color-mix(in srgb, var(--cat-color, var(--accent)) 8%, var(--white));
    border-color: var(--cat-color, var(--accent));
    box-shadow: 0 4px 20px rgba(11,31,58,.10);
}
.cat-card.selected::before { width: 5px; }

.cat-icon {
    font-size: 1.3rem;
    margin-bottom: .4rem;
    display: block;
}

.cat-name {
    font-family: var(--font-head);
    font-size: .95rem;
    font-weight: 700;
    color: var(--navy);
    letter-spacing: .02em;
    line-height: 1.2;
    margin-bottom: .15rem;
}

.cat-code {
    font-family: var(--font-ui);
    font-size: .68rem;
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--text-light);
}

/* ══════════════════════════════════════════════════════════
   NOTICE ARXIV
══════════════════════════════════════════════════════════ */
.arxiv-notice {
    max-width: 860px;
    margin: 0 auto 3rem;
    padding: 0 1.5rem;
}

.notice-inner {
    display: flex;
    align-items: flex-start;
    gap: .9rem;
    background: var(--white);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-md);
    padding: 1rem 1.3rem;
}

.notice-icon {
    flex-shrink: 0;
    width: 28px; height: 28px;
    background: #fef3cd;
    background: color-mix(in srgb, var(--accent-gold) 15%, white);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .85rem;
    margin-top: .1rem;
}

.notice-text {
    font-family: var(--font-ui);
    font-size: .8rem;
    color: var(--text-mid);
    line-height: 1.6;
}

.notice-text a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px solid currentColor;
}
.notice-text a:hover { color: var(--accent-warm); }

/* ══════════════════════════════════════════════════════════
   RESPONSIVE — page d'accueil
══════════════════════════════════════════════════════════ */

/* ── Tablette et moins ───────────────────────────────────── */
@media (max-width: 640px) {
    .hero { padding: 0 1rem; min-height: auto; }
    .hero-body { padding: 2rem 0 4rem; }

    /* Nav hero : masquer le badge "Propulsé par ArXiv API" sur petit écran */
    .nav-badge { display: none; }

    /* Brand : réduire légèrement */
    .brand-name { font-size: 1.85rem; }
    .brand-icon { width: 30px; height: 30px; font-size: .95rem; }

    /* Panel de recherche */
    .search-panel { margin: -2rem .75rem 0; }
    .panel-body { padding: 1.4rem 1rem 1.6rem; }
    .panel-tab { font-size: .82rem; padding: .9rem 1rem; }
    .filters-grid { grid-template-columns: 1fr; }
    .filter-group.full { grid-column: 1; }
    .search-bar-wrap { flex-direction: column; }
    .btn-search-main { width: 100%; text-align: center; padding: 1rem; font-size: 1rem; }

    /* Catégories */
    .cat-grid { grid-template-columns: 1fr 1fr; }
    .cat-card { padding: .9rem 1rem .85rem; }
    .cat-name { font-size: 1.45rem; }
    .cat-code { font-size: .95rem; }
    .cat-icon { font-size: 1.6rem; }
    .section-heading { font-size: 1.8rem; }
    .categories-section, .arxiv-notice { padding: 0 .75rem; }

    /* Notice ArXiv */
    .notice-text { font-size: .88rem; }
}

/* ── Très petit écran (< 400px) ─────────────────────────── */
@media (max-width: 400px) {
    .cat-grid { grid-template-columns: 1fr; }
    .hero-title { font-size: 1.9rem; }
    .panel-tab { font-size: .75rem; padding: .8rem .75rem; }
}

@media (min-width: 860px) {
    .search-panel { margin: -2.5rem auto 0; }
    .categories-section, .arxiv-notice { padding: 0; }
}


/* ══════════════════════════════════════════════════════════
   AJUSTEMENTS PWA MOBILE
   1. Navigation agrandie
   2. Libellé "Authors :" réduit
   3. Liste des auteurs agrandie
══════════════════════════════════════════════════════════ */

/* ── 1. Libellé "Authors :" — trop gros, on réduit ─────── */
.abstract-section > .meta-label {
    font-size: .65rem;
    letter-spacing: .05em;
    font-weight: 500;
}

/* ── 2. Liste des auteurs — trop petite, on agrandit ────── */
.abstract-section > .meta-value.authors {
    font-size: 1rem;
    font-weight: 500;
    line-height: 1.5;
}

/* ── 3. Navigation hero (index.php) — agrandie sur mobile ── */
@media (max-width: 640px) {

    /* Badge "Ar" + nom de l'app dans le hero */
    .brand-icon {
        width: 42px;
        height: 42px;
        font-size: 1.8rem;
        border-radius: 8px;
    }
    .brand-name { font-size: 1.80rem; }
    .brand-sub  { font-size: .9rem; }

    /* Topbar de la page résultats (layout.php) */
    .topbar-icon {
        width: 42px;
        height: 42px;
        font-size: 1.75rem;
        border-radius: 7px;
    }
    .topbar-label   { font-size: 1.05rem; display: block; }
    .topbar-back-btn {
        font-size: .95rem;
        padding: .55rem 1.2rem;
        border-width: 2px;
    }
}

/* ── Très petit écran : on conserve le label visible ────── */
@media (max-width: 420px) {
    .topbar-label   { font-size: .95rem; display: block; }
    .topbar-back-btn { font-size: .82rem; padding: .5rem 1rem; }
    .brand-name     { font-size: 1.15rem; }
}

/* ── Auteurs sur mobile < 539px (html = 18px) ───────────── */
@media (max-width: 539px) {
    .abstract-section > .meta-label {
        font-size: .9rem;
    }
    .abstract-section > .meta-value.authors {
        font-size: .85rem;
    }
}

/* ══════════════════════════════════════════════════════════
   AJUSTEMENT PWA MOBILE — Cartes pleine largeur
   Les article-card occupent toute la largeur disponible
   sous 640px, bord à bord, sans padding latéral de body.
══════════════════════════════════════════════════════════ */
@media (max-width: 640px) {

    /* Supprimer le padding latéral du body sur la page résultats */
    body {
        padding-left: 0;
        padding-right: 0;
    }

    /* Cartes : pleine largeur, sans marges latérales ni arrondi */
    .article-card {
        max-width: 100%;
        width: 100%;
        margin-left: 0;
        margin-right: 0;
        border-radius: 0;
        /* On conserve le filet coloré gauche */
        border-left-width: 2px;
    }

    /* Contenu interne : padding réduit mais lisible */
    .abstract-section {
        padding: 1rem .9rem 1.2rem;
    }

    /* Header de la carte (badges catégorie + boutons PDF/Read) */
    .article-header {
        padding: .6rem .9rem;
    }

    /* Topbar et pagination : padding interne pour ne pas coller aux bords */
    .site-topbar {
        padding-left: .9rem;
        padding-right: .9rem;
    }
    .pagination-bar {
        padding-left: .9rem;
        padding-right: .9rem;
    }
}