/* ===== CSI — publications index + article reader ===== */

/* ---------- filter bar ---------- */
.pubfilter{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-top:40px; }
.pubfilter .flabel{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-40); margin-right:6px; }
.chipf{ font-family:"IBM Plex Mono",monospace; font-size:12.5px; letter-spacing:.02em; color:var(--ink-60); background:#fff; border:1px solid var(--line-2); border-radius:999px; padding:9px 16px; cursor:pointer; transition:.16s; }
.chipf:hover{ border-color:var(--royal); color:var(--royal); }
.chipf.on{ background:var(--navy); border-color:var(--navy); color:#fff; }
.chipf .ct{ opacity:.55; margin-left:6px; font-size:11px; }

/* ---------- publications grid ---------- */
.pubcount{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-40); margin-top:22px; }
.artgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:22px; }
.artcard{ display:flex; flex-direction:column; background:#fff; border:1px solid var(--line); border-radius:var(--rad); overflow:hidden; transition:transform .22s cubic-bezier(.22,.61,.36,1), box-shadow .22s, border-color .22s; }
.artcard:hover{ transform:translateY(-4px); box-shadow:0 26px 56px -38px rgba(40,96,248,.5); border-color:var(--royal); }
.artcard .cov{ height:172px; position:relative; }
.artcard .cov image-slot{ width:100%; height:100%; }
.artcard .cov .domchip{ position:absolute; left:12px; top:12px; z-index:2; display:flex; gap:6px; flex-wrap:wrap; }
.dtag{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; letter-spacing:.04em; text-transform:uppercase; padding:5px 10px; border-radius:999px; background:rgba(255,255,255,.92); color:var(--navy); border:1px solid var(--line); }
.dtag.t-defense{ color:#B23A2E; } .dtag.t-energie{ color:#1F8A5B; } .dtag.t-espace{ color:#2860F8; } .dtag.t-international{ color:#7A5Af0; } .dtag.t-industrie{ color:#C2581E; }
.artcard .cbody{ padding:22px 24px 24px; display:flex; flex-direction:column; flex:1; }
.artcard h3{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:20px; color:var(--navy); letter-spacing:-.02em; line-height:1.14; margin:0 0 10px; }
.artcard .ex{ font-size:13.5px; color:var(--ink-60); line-height:1.55; }
.artcard .cmeta{ margin-top:auto; padding-top:18px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.artcard .cmeta .au{ font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--ink-40); }
.artcard .cmeta .go{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:13px; color:var(--royal); display:inline-flex; gap:6px; transition:gap .2s; }
.artcard:hover .cmeta .go{ gap:11px; }

/* featured */
.artfeat{ display:grid; grid-template-columns:1.05fr 1fr; gap:0; margin-top:22px; border:1px solid var(--line); border-radius:var(--rad); overflow:hidden; background:#fff; transition:transform .25s cubic-bezier(.22,.61,.36,1), box-shadow .25s, border-color .25s; }
.artfeat:hover{ transform:translateY(-4px); box-shadow:0 30px 64px -40px rgba(40,96,248,.55); border-color:var(--royal); }
.artfeat .ff-img{ min-height:320px; position:relative; }
.artfeat .ff-img image-slot{ width:100%; height:100%; }
.artfeat .ff-img .domchip{ position:absolute; left:16px; top:16px; z-index:2; display:flex; gap:6px; }
.artfeat .ff-body{ padding:44px 46px; display:flex; flex-direction:column; }
.artfeat .ffk{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--royal); }
.artfeat h2{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:clamp(26px,2.9vw,36px); color:var(--navy); letter-spacing:-.025em; line-height:1.06; margin:14px 0 14px; }
.artfeat .ff-ex{ font-size:15px; color:var(--ink-60); line-height:1.62; max-width:48ch; }
.artfeat .ff-go{ margin-top:26px; font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:15px; color:var(--royal); display:inline-flex; gap:8px; transition:gap .2s; }
.artfeat:hover .ff-go{ gap:13px; }
.artfeat .ff-meta{ margin-top:14px; font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--ink-40); }

.artempty{ display:none; padding:60px 0; text-align:center; font-family:"IBM Plex Mono",monospace; font-size:13px; color:var(--ink-40); }

/* article cover image / branded fallback (no empty grey slot) */
.artcard .cov .covimg, .artfeat .ff-img .covimg{ width:100%; height:100%; object-fit:cover; display:block; }
.covfb{ width:100%; height:100%; display:flex; align-items:center; justify-content:center; background:linear-gradient(150deg,var(--royal),var(--navy)); }
.covfb img{ width:52px; height:52px; opacity:.92; }
.covfb.feat img{ width:88px; height:88px; }

@media(max-width:980px){ .artgrid{ grid-template-columns:1fr 1fr; } .artfeat{ grid-template-columns:1fr; } .artfeat .ff-img{ min-height:200px; } }
@media(max-width:620px){ .artgrid{ grid-template-columns:1fr; } }

/* ================= ARTICLE READER ================= */
.reader{ max-width:760px; margin:0 auto; padding:0 40px; }
.art-hero{ background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.art-hero::before{ content:""; position:absolute; right:-180px; top:-160px; width:560px; height:560px; border-radius:50%; border:90px solid rgba(255,255,255,.06); }
.art-hero .reader{ position:relative; padding:64px 40px 56px; }
.art-hero .backlink{ font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.04em; color:#9FB2FF; display:inline-flex; gap:7px; }
.art-hero .backlink:hover{ color:#fff; }
.art-hero .htags{ display:flex; gap:8px; flex-wrap:wrap; margin:26px 0 0; }
.art-hero .htags .dtag{ background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.22); color:#fff; }
.art-hero h1{ font-family:"Schibsted Grotesk",sans-serif; font-weight:900; font-size:clamp(30px,4.4vw,52px); letter-spacing:-.03em; line-height:1.05; margin:18px 0 0; }
.art-hero .hmeta{ display:flex; gap:18px; flex-wrap:wrap; margin-top:24px; font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:rgba(255,255,255,.7); }
.art-hero .hmeta b{ color:#fff; font-weight:500; }

/* accroche / résumé box (top cadran) */
.accroche{ background:var(--haze); border-left:3px solid var(--royal); border-radius:0 14px 14px 0; padding:26px 30px; margin:0 0 8px; }
.accroche .k{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--royal); }
.accroche p{ font-family:"Schibsted Grotesk",sans-serif; font-weight:600; font-size:19px; line-height:1.5; color:var(--navy); letter-spacing:-.01em; margin:12px 0 0; }
.resume{ border:1px solid var(--line); border-radius:14px; padding:24px 28px; margin-top:18px; background:#fff; }
.resume .k{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-40); }
.resume p{ font-size:15px; line-height:1.62; color:var(--ink-60); margin-top:10px; }

/* article body typography */
.artbody{ padding:48px 0 8px; }
.artbody h2{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:26px; color:var(--navy); letter-spacing:-.02em; line-height:1.15; margin:44px 0 0; scroll-margin-top:96px; }
.artbody h2:first-child{ margin-top:0; }
.artbody p{ font-size:17px; line-height:1.75; color:var(--ink); margin-top:18px; }
.artbody p strong{ font-weight:600; color:var(--navy); }
.artlead{ font-size:19px !important; line-height:1.7 !important; color:var(--ink-60) !important; }

/* references */
.refs{ margin-top:48px; padding-top:30px; border-top:1px solid var(--line); }
.refs .k{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-40); }
.refs ul{ list-style:none; margin:16px 0 0; padding:0; }
.refs li{ font-size:13.5px; color:var(--ink-60); line-height:1.5; padding:7px 0 7px 20px; position:relative; }
.refs li::before{ content:"—"; position:absolute; left:0; color:var(--ink-40); }

/* author card (editable identity) */
.authorcard{ display:grid; grid-template-columns:auto 1fr; gap:24px; align-items:start; background:var(--mist); border:1px solid var(--line); border-radius:var(--rad); padding:28px 30px; margin-top:44px; }
.authorcard image-slot{ width:84px; height:84px; }
.authorcard .au-avatar{ width:84px; height:84px; border-radius:50%; background:var(--haze); display:flex; align-items:center; justify-content:center; flex:none; }
.authorcard .au-avatar img{ width:46px; height:46px; }
.authorcard .ak{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--royal); }
.authorcard h4{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:22px; color:var(--navy); letter-spacing:-.01em; margin:8px 0 4px; }
.authorcard .arole{ font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--ink-40); }
.authorcard .abio{ font-size:14.5px; line-height:1.6; color:var(--ink-60); margin-top:12px; }
.authorcard [contenteditable]{ outline:none; border-radius:5px; transition:box-shadow .15s, background .15s; }
.authorcard [contenteditable]:hover{ background:#fff; }
.authorcard [contenteditable]:focus{ background:#fff; box-shadow:0 0 0 2px var(--royal); }
.editnote{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; color:var(--ink-40); margin-top:14px; display:flex; align-items:center; gap:7px; }
.editnote::before{ content:"✎"; }

/* next / prev nav */
.artnav{ display:flex; justify-content:space-between; gap:16px; margin-top:48px; padding-top:28px; border-top:1px solid var(--line); flex-wrap:wrap; }
.artnav a{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:15px; color:var(--royal); display:inline-flex; gap:8px; align-items:center; }
.artnav a:hover{ color:var(--electric); }

@media(max-width:620px){
  .reader{ padding:0 22px; }
  .art-hero .reader{ padding:46px 22px 40px; }
  .authorcard{ grid-template-columns:1fr; }
  .artbody p{ font-size:16px; }
}
