/* ===== CSI site — shared design system (Direction B: Do-tank dynamique) ===== */
@import url("base.css");

:root{ --rad:16px; --maxw:1240px; }

body{ font-family:"Archivo",system-ui,sans-serif; color:var(--ink); background:var(--paper); line-height:1.6; }
.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 40px; }
.mono{ font-family:"IBM Plex Mono",monospace; }
h1,h2,h3,h4{ font-family:"Schibsted Grotesk",system-ui,sans-serif; font-weight:800; letter-spacing:-.025em; line-height:1; margin:0; }
p{ margin:0; }
.ey{ font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--royal); }

/* ---------- buttons ---------- */
.btn{ display:inline-flex; align-items:center; gap:9px; font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:14.5px; padding:13px 24px; border-radius:999px; background:var(--royal); color:#fff; border:2px solid var(--royal); transition:.16s; white-space:nowrap; cursor:pointer; }
.btn:hover{ background:var(--electric); border-color:var(--electric); transform:translateY(-1px); }
.btn.ghost{ background:transparent; color:#fff; border-color:rgba(255,255,255,.5); }
.btn.ghost:hover{ background:#fff; color:var(--royal); border-color:#fff; }
.btn.dark{ background:var(--navy); border-color:var(--navy); }
.btn.dark:hover{ background:var(--electric); border-color:var(--electric); }
.btn.outline{ background:transparent; color:var(--royal); border-color:var(--royal); }
.btn.outline:hover{ background:var(--royal); color:#fff; }

/* ---------- nav ---------- */
.nav{ position:sticky; top:0; z-index:50; background:rgba(255,255,255,.9); backdrop-filter:blur(12px); border-bottom:1px solid var(--line); transition:.25s; }
.nav.scrolled{ box-shadow:0 10px 34px -22px rgba(40,96,248,.6); }
.nav .wrap{ display:flex; align-items:center; gap:32px; height:78px; }
.nav .logo{ display:flex; align-items:center; gap:11px; }
.nav .logo img{ height:34px; width:auto; }
.nav .logo .wm{ display:flex; flex-direction:column; gap:2px; line-height:1.15; }
.nav .logo .wm .wm-name{ font-family:"Archivo",sans-serif; font-weight:400; font-size:13px; line-height:1.2; color:var(--navy); letter-spacing:.003em; max-width:23ch; }
.nav .logo .wm .wm-name b{ font-weight:700; }
@media(max-width:1180px){ .nav .logo .wm .wm-name{ font-size:12px; max-width:19ch; } }
@media(max-width:640px){ .nav .logo .wm .wm-name{ display:none; } }
.nav .links{ display:flex; gap:4px; margin-left:6px; align-items:center; }
.navitem{ position:relative; }
.navitem > .navtop .sub{ display:none; }
.navitem > .navtop{ font-size:15px; font-weight:600; color:var(--navy); position:relative; display:flex; flex-direction:column; gap:2px; line-height:1.15; padding:10px 26px 10px 13px; border-radius:11px; transition:color .15s, background .15s; }
.navitem > .navtop .sub{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; font-weight:400; letter-spacing:.02em; color:var(--ink-40); transition:color .15s; }
.navitem > .navtop .caret{ position:absolute; right:11px; top:50%; width:7px; height:7px; border-right:1.6px solid var(--ink-40); border-bottom:1.6px solid var(--ink-40); transform:translateY(-70%) rotate(45deg); transition:.2s; }
.navitem:hover > .navtop, .navitem:focus-within > .navtop{ color:var(--accent); background:var(--accent-soft); }
.navitem:hover > .navtop .sub, .navitem:focus-within > .navtop .sub{ color:var(--accent); }
.navitem:hover > .navtop .caret, .navitem:focus-within > .navtop .caret{ border-color:var(--accent); transform:translateY(-30%) rotate(225deg); }
.navitem.active > .navtop{ color:var(--accent); }
.navitem.active > .navtop::before{ content:""; position:absolute; left:13px; right:26px; bottom:3px; height:2px; background:var(--accent); border-radius:2px; }
.drop{ position:absolute; top:calc(100% + 8px); left:0; min-width:256px; background:#fff; border:1px solid var(--line); border-radius:15px; box-shadow:0 30px 64px -30px rgba(16,0,144,.42); padding:9px; opacity:0; visibility:hidden; transform:translateY(9px); transition:opacity .18s cubic-bezier(.22,.61,.36,1), transform .18s cubic-bezier(.22,.61,.36,1), visibility .18s; z-index:60; }
.drop::before{ content:""; position:absolute; left:0; right:0; top:-10px; height:10px; }
.navitem:hover > .drop, .navitem:focus-within > .drop{ opacity:1; visibility:visible; transform:none; }
.drop a{ display:flex; flex-direction:column; gap:2px; padding:11px 15px; border-radius:10px; font-size:14.5px; font-weight:600; color:var(--navy); transition:background .13s, color .13s; }
.drop a .dd{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; font-weight:400; letter-spacing:.02em; color:var(--ink-40); }
.drop a:hover{ background:var(--accent-soft); color:var(--accent); }
.drop a:hover .dd{ color:var(--accent); }
.nav .right{ margin-left:auto; display:flex; align-items:center; gap:18px; }
.nav .lang{ display:inline-flex; gap:2px; font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.04em; }
.nav .lang button{ font:inherit; background:none; border:0; cursor:pointer; color:var(--ink-40); padding:4px 6px; border-radius:6px; transition:color .15s, background .15s; }
.nav .lang button:hover{ color:var(--navy); }
.nav .lang button.on{ color:var(--navy); font-weight:700; background:var(--haze); }
.nav .lang b{ color:var(--royal); }
.nav .burger{ display:none; width:46px; height:46px; background:none; border:0; position:relative; flex:none; cursor:pointer; }
.nav .burger span{ position:absolute; left:11px; right:11px; height:2px; background:var(--navy); border-radius:2px; transition:transform .25s cubic-bezier(.22,.61,.36,1), opacity .2s; }
.nav .burger span:nth-child(1){ top:16px; } .nav .burger span:nth-child(2){ top:22px; } .nav .burger span:nth-child(3){ top:28px; }
body.menu-open .nav .burger span:nth-child(1){ transform:translateY(6px) rotate(45deg); }
body.menu-open .nav .burger span:nth-child(2){ opacity:0; }
body.menu-open .nav .burger span:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* ---------- generic section ---------- */
section{ padding:96px 0; }
.shead{ max-width:920px; }
.shead .ey{ color:var(--royal); }
.shead h2{ font-size:clamp(36px,5vw,62px); margin:16px 0 0; color:var(--navy); }
.shead .lead{ font-size:19px; color:var(--ink-60); margin-top:22px; max-width:60ch; }

/* ---------- interior page hero ---------- */
.phero{ background:var(--royal); color:#fff; position:relative; overflow:hidden; }
.phero::before{ content:""; position:absolute; right:-160px; top:-140px; width:560px; height:560px; border-radius:50%; border:88px solid rgba(255,255,255,.09); }
.phero::after{ content:""; position:absolute; right:80px; top:90px; width:440px; height:440px; border-radius:50%; border:88px solid rgba(255,255,255,.07); }
.phero .wrap{ position:relative; padding:78px 40px; }
.phero .crumb{ font-family:"IBM Plex Mono",monospace; font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.7); }
.phero h1{ font-size:clamp(44px,6.4vw,82px); font-weight:900; margin:20px 0 0; max-width:16ch; }
.phero .sub{ font-size:20px; color:rgba(255,255,255,.88); max-width:54ch; margin:24px 0 0; }

/* ---------- proof ribbon ---------- */
.proof{ background:var(--navy); }
.proof .wrap{ display:grid; grid-template-columns:repeat(5,1fr); padding:0; }
.proof .stat{ padding:30px 26px; border-left:1px solid rgba(255,255,255,.14); color:#fff; }
.proof .stat:first-child{ border-left:0; }
.proof .stat b{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:42px; display:block; line-height:1; letter-spacing:-.03em; }
.proof .stat span{ font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:rgba(255,255,255,.62); display:block; margin-top:10px; }

/* ---------- cards / grids reused across pages ---------- */
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }

/* pillar cards */
.pcard{ background:var(--mist); border-radius:var(--rad); padding:36px 32px 38px; transition:.18s; border:1px solid transparent; }
.pcard:hover{ background:var(--navy); transform:translateY(-5px); }
.pcard:hover *{ color:#fff !important; }
.pcard .n{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:15px; color:var(--royal); }
.pcard h3{ font-size:36px; margin:18px 0 14px; color:var(--navy); }
.pcard p{ font-size:15px; color:var(--ink-60); }
.pcard .tags{ display:flex; flex-wrap:wrap; gap:8px; margin-top:22px; }
.pcard .tags span{ font-family:"IBM Plex Mono",monospace; font-size:11px; padding:5px 11px; border-radius:999px; background:#fff; border:1px solid var(--line); color:var(--ink-60); }
.pcard:hover .tags span{ background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.25); }

/* vertical study tiles */
.vert{ background:var(--mist); border-radius:var(--rad); padding:28px 26px 30px; min-height:170px; display:flex; flex-direction:column; transition:.16s; cursor:pointer; border:1px solid transparent; }
.vert:hover{ background:var(--royal); transform:translateY(-4px); }
.vert:hover *{ color:#fff !important; }
.vert .vn{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-40); }
.vert h4{ font-size:22px; margin:14px 0 8px; color:var(--navy); font-weight:700; }
.vert p{ font-size:13.5px; color:var(--ink-60); margin-top:auto; }
.vert.cta-tile{ background:var(--navy); }
.vert.cta-tile *{ color:#fff; }

/* agenda rows */
.agenda{ display:grid; gap:12px; }
.arow{ display:grid; grid-template-columns:auto 1fr auto; gap:26px; align-items:center; background:var(--mist); border-radius:var(--rad); padding:22px 26px; transition:.16s; }
.arow:hover{ background:var(--haze); }
.arow .date{ text-align:center; min-width:78px; }
.arow .date b{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:26px; color:var(--royal); display:block; line-height:1; }
.arow .date span{ font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--ink-40); }
.arow .ti{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:20px; color:var(--navy); }
.arow .who{ font-size:13.5px; color:var(--ink-60); margin-top:3px; }
.arow .go{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--royal); white-space:nowrap; }

/* publication cards */
.pub{ border:1px solid var(--line); border-radius:var(--rad); padding:30px 28px 32px; display:flex; flex-direction:column; min-height:280px; transition:.16s; background:#fff; }
.pub:hover{ transform:translateY(-4px); box-shadow:0 24px 56px -34px rgba(40,96,248,.55); border-color:var(--royal); }
.pub.signature{ background:var(--royal); border-color:var(--royal); color:#fff; }
.pub .tagp{ display:inline-block; font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--royal); }
.pub.signature .tagp{ color:#fff; }
.pub .badge{ align-self:flex-start; background:#fff; color:var(--royal); font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:11px; letter-spacing:.04em; text-transform:uppercase; padding:5px 12px; border-radius:999px; margin-bottom:16px; white-space:nowrap; }
.pub h4{ font-size:24px; margin:14px 0 12px; color:var(--navy); font-weight:700; }
.pub.signature h4{ color:#fff; font-size:30px; }
.pub p{ font-size:14px; color:var(--ink-60); }
.pub.signature p{ color:rgba(255,255,255,.82); }
.pub .meta{ margin-top:auto; font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--ink-40); padding-top:20px; }
.pub.signature .meta{ color:rgba(255,255,255,.8); }

/* join cards */
.jc{ background:#fff; border-radius:var(--rad); padding:36px 32px 38px; display:flex; flex-direction:column; border:1px solid var(--line); transition:.18s; }
.jc:hover{ transform:translateY(-5px); box-shadow:0 28px 60px -34px rgba(40,96,248,.5); }
.jc.feat{ background:var(--royal); border-color:var(--royal); color:#fff; }
.jc .tag{ display:inline-block; font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--royal); margin-bottom:14px; }
.jc.feat .tag{ color:rgba(255,255,255,.85); }
.jc h3{ font-size:28px; color:var(--navy); font-weight:700; }
.jc.feat h3{ color:#fff; }
.jc p{ font-size:14.5px; color:var(--ink-60); margin:14px 0 0; }
.jc.feat p{ color:rgba(255,255,255,.85); }
.jc .price{ font-family:"IBM Plex Mono",monospace; font-size:12.5px; color:var(--royal); margin-top:auto; padding-top:22px; }
.jc.feat .price{ color:#fff; }
.jc .btn{ margin-top:18px; align-self:flex-start; }
.jc.feat .btn{ background:#fff; color:var(--royal); border-color:#fff; }

/* newsletter */
.nl{ background:var(--electric); color:#fff; }
.nl .wrap{ display:grid; grid-template-columns:1fr 1fr; gap:48px; align-items:center; }
.nl h2{ font-size:clamp(30px,3.6vw,46px); }
.nl p{ color:rgba(255,255,255,.85); margin-top:14px; font-size:16px; }
.nl form{ display:flex; gap:12px; }
.nl input{ flex:1; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.45); border-radius:999px; color:#fff; padding:15px 22px; font:inherit; }
.nl input::placeholder{ color:rgba(255,255,255,.65); }
.nl button{ background:#fff; color:var(--electric); border:0; border-radius:999px; padding:15px 28px; font-family:"Schibsted Grotesk",sans-serif; font-weight:700; cursor:pointer; }

/* footer */
.foot{ background:var(--navy); color:#fff; padding:78px 0 36px; }
.foot .ftop{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:40px; }
.foot img{ height:42px; width:auto; margin-bottom:20px; }
.foot .blurb{ font-size:14.5px; color:rgba(255,255,255,.62); max-width:34ch; }
.foot h5{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:#9FB2FF; margin:0 0 16px; }
.foot ul{ list-style:none; margin:0; padding:0; }
.foot li{ padding:6px 0; font-size:14px; color:rgba(255,255,255,.78); }
.foot li a:hover{ color:#fff; }
.foot .social{ display:flex; gap:12px; margin-top:18px; }
.foot .social a{ display:flex; align-items:center; justify-content:center; width:40px; height:40px; border:1px solid rgba(255,255,255,.24); border-radius:11px; color:rgba(255,255,255,.82); transition:.18s; }
.foot .social a:hover{ background:#fff; color:var(--navy); border-color:#fff; transform:translateY(-2px); }
.foot .social svg{ width:19px; height:19px; display:block; }
.foot .base{ display:flex; justify-content:space-between; margin-top:56px; padding-top:24px; border-top:1px solid rgba(255,255,255,.16); font-family:"IBM Plex Mono",monospace; font-size:12px; color:rgba(255,255,255,.5); flex-wrap:wrap; gap:12px; }

/* image-slot defaults */
image-slot{ display:block; background:var(--haze); }

/* ============ scroll reveal ============ */
html{ scroll-behavior:smooth; }
.reveal{ opacity:0; transform:translateY(34px); transition:opacity 1s cubic-bezier(.22,.61,.36,1), transform 1.05s cubic-bezier(.22,.61,.36,1); will-change:opacity,transform; }
.reveal.in{ opacity:1; transform:none; }
.reveal.d1{ transition-delay:.1s; } .reveal.d2{ transition-delay:.2s; } .reveal.d3{ transition-delay:.3s; } .reveal.d4{ transition-delay:.4s; }
@media(prefers-reduced-motion:reduce){ .reveal{ opacity:1; transform:none; transition:none; } }

/* ============ cinematic hero logo mark (home) ============ */
.cine .ringmark{ position:absolute; left:50%; top:42%; width:min(74vh,680px); aspect-ratio:1; transform:translate(-50%,-50%); opacity:.16; will-change:transform,opacity; }

/* translated org name under the French wordmark (EN / IT only) */
.nav .logo .wm .wm-tr{ font-family:"Archivo",sans-serif; font-style:italic; font-weight:400; font-size:9.5px; letter-spacing:.01em; color:var(--royal); text-transform:none; max-width:30ch; line-height:1.2; margin-top:1px; }
@media(max-width:1180px){ .nav .logo .wm .wm-tr{ display:none; } }
.foot .blurb-tr{ font-style:italic; font-size:13px; color:rgba(159,178,255,.85); margin-top:6px; }

/* ============ page transition — gray logo fade (smooth) ============ */
.pagefx{ position:fixed; inset:0; z-index:1000; background:var(--mist); display:grid; place-items:center; pointer-events:none; opacity:0; visibility:hidden; }
.pagefx .pfx-logo{ width:124px; height:124px; opacity:0; transform:scale(.86); }
html.pfx-incoming .pagefx{ opacity:1; visibility:visible; }
html.pfx-incoming .pagefx .pfx-logo{ opacity:1; transform:scale(1); }
.pagefx.pfx-lift{ animation:pfxFadeOut .95s cubic-bezier(.4,0,.2,1) forwards; }
.pagefx.pfx-lift .pfx-logo{ animation:pfxLogoOut .8s cubic-bezier(.4,0,.2,1) forwards; }
body.pfx-cover .pagefx{ visibility:visible; pointer-events:all; animation:pfxFadeIn .5s cubic-bezier(.4,0,.2,1) forwards; }
body.pfx-cover .pagefx .pfx-logo{ animation:pfxLogoIn .56s cubic-bezier(.22,.61,.36,1) forwards; }
@keyframes pfxFadeIn{ from{ opacity:0; } to{ opacity:1; } }
@keyframes pfxFadeOut{ from{ opacity:1; } to{ opacity:0; } }
@keyframes pfxLogoIn{ 0%{ opacity:0; transform:scale(.8) rotate(-6deg); } 60%{ opacity:1; } 100%{ opacity:1; transform:scale(1) rotate(0); } }
@keyframes pfxLogoOut{ 0%{ opacity:1; transform:scale(1); } 100%{ opacity:0; transform:scale(1.07) rotate(4deg); } }
@media(prefers-reduced-motion:reduce){ .pagefx{ display:none !important; } html.pfx-incoming .pagefx{ display:none !important; } }

/* ============ rebrand notification (toast) ============ */
.csi-notif{ position:fixed; left:24px; bottom:24px; z-index:900; width:min(366px,calc(100vw - 48px)); background:#fff; border:1px solid var(--line); border-left:3px solid var(--orange); border-radius:14px; box-shadow:0 26px 64px -30px rgba(16,0,144,.5); padding:19px 22px; opacity:0; transform:translateY(18px) scale(.98); transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1); }
.csi-notif.show{ opacity:1; transform:none; }
.csi-notif[hidden]{ display:none; }
.csi-notif-x{ position:absolute; top:11px; right:11px; background:none; border:0; font-size:19px; line-height:1; color:var(--ink-40); cursor:pointer; padding:4px 6px; border-radius:7px; transition:.15s; }
.csi-notif-x:hover{ color:var(--navy); background:var(--mist); }
.csi-notif-k{ font-family:"IBM Plex Mono",monospace; font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--orange); }
.csi-notif-t{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:16px; color:var(--navy); margin:8px 24px 0 0; line-height:1.25; letter-spacing:-.01em; }
.csi-notif-s{ font-size:13px; color:var(--ink-60); margin:8px 0 0; line-height:1.5; }
@media(max-width:560px){ .csi-notif{ left:12px; right:12px; bottom:12px; width:auto; } }
@media(prefers-reduced-motion:reduce){ .csi-notif{ transition:opacity .3s linear; transform:none; } }

/* ============ per-page accent theming ============ */
body[data-accent] .ey,
body[data-accent] .shead .ey,
body[data-accent] .thead .ey,
body[data-accent] .thead .all,
body[data-accent] .crumb{ color:var(--accent); }
body[data-accent="orange"] .btn{ background:var(--accent); border-color:var(--accent); }
body[data-accent="orange"] .btn:hover{ background:var(--orange-deep); border-color:var(--orange-deep); }
body[data-accent="orange"] .phero{ background:var(--accent); }
body[data-accent="orange"] ::selection{ background:var(--accent); color:#fff; }
body[data-accent="slate"] .phero{ background:#1B1D2E; }
body[data-accent="sky"] .btn{ background:var(--accent); border-color:var(--accent); }
body[data-accent="sky"] .btn:hover{ background:var(--sky-deep); border-color:var(--sky-deep); }
body[data-accent="sky"] .phero{ background:var(--accent); }
body[data-accent="sky"] ::selection{ background:var(--accent); color:#fff; }

/* ============ cinematic logo hero (home) ============ */
.cine{ position:relative; height:100vh; min-height:620px; background:var(--navy); color:#fff; overflow:hidden; display:flex; align-items:center; }
.cine::after{ content:""; position:absolute; inset:0; background:radial-gradient(120% 90% at 50% 30%, rgba(40,96,248,.32), transparent 62%); pointer-events:none; opacity:0; transition:opacity 1.4s ease; }
.cine.loaded::after{ opacity:1; }
.cine .cine-in{ position:relative; max-width:var(--maxw); margin:0 auto; padding:0 40px; width:100%; will-change:transform,opacity; }
.cine .ey{ color:#9FB2FF; }
.cine h1{ font-family:"Schibsted Grotesk",sans-serif; font-weight:800; font-size:clamp(40px,6vw,82px); letter-spacing:-.03em; line-height:1; margin:18px 0 0; max-width:18ch; }
.cine p.sub{ font-size:19px; color:rgba(255,255,255,.78); max-width:50ch; margin:26px 0 0; }
.cine .cta{ display:flex; gap:14px; margin-top:34px; flex-wrap:wrap; }
.cine .scrollcue{ position:absolute; left:50%; bottom:30px; transform:translateX(-50%); font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:rgba(255,255,255,.5); display:flex; flex-direction:column; align-items:center; gap:8px; }
.cine .scrollcue .bar{ width:1px; height:34px; background:linear-gradient(rgba(255,255,255,.5),transparent); animation:cuepulse 2.4s ease-in-out infinite; transform-origin:top; }
@keyframes cuepulse{ 0%,100%{ transform:scaleY(.55); opacity:.5; } 50%{ transform:scaleY(1); opacity:1; } }

/* staged entrance — bloom the ring, rise the copy */
.cine .ringmark{ opacity:0; }
.cine.loaded .ringmark{ animation:ringBloom 1.7s cubic-bezier(.16,.8,.24,1) forwards; }
@keyframes ringBloom{ 0%{ opacity:0; transform:translate(-50%,-50%) scale(.62) rotate(-8deg); } 100%{ opacity:.16; transform:translate(-50%,-50%) scale(1) rotate(0); } }
.cine .cine-in > *{ opacity:0; transform:translateY(22px); }
.cine.loaded .cine-in > *{ animation:cineRise .9s cubic-bezier(.16,.8,.24,1) forwards; }
.cine.loaded .cine-in > .ey{ animation-delay:.18s; }
.cine.loaded .cine-in > h1{ animation-delay:.30s; }
.cine.loaded .cine-in > .sub{ animation-delay:.46s; }
.cine.loaded .cine-in > .cta{ animation-delay:.60s; }
.cine .scrollcue{ opacity:0; }
.cine.loaded .scrollcue{ animation:cineRise .8s cubic-bezier(.16,.8,.24,1) .9s forwards; }
@keyframes cineRise{ to{ opacity:1; transform:none; } }
@media(prefers-reduced-motion:reduce){
  .cine .ringmark,.cine .cine-in > *,.cine .scrollcue{ opacity:1 !important; transform:none !important; animation:none !important; }
  .cine .ringmark{ opacity:.16 !important; transform:translate(-50%,-50%) !important; }
  .cine .scrollcue .bar{ animation:none; }
}

/* ============ communiqué band ============ */
.comm{ background:var(--slate); border-top:1px solid var(--slate-2); border-bottom:1px solid var(--slate-2); }
.comm .wrap{ display:grid; grid-template-columns:auto 1fr; gap:40px; align-items:start; }
.comm .tagcol{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--orange); padding-top:5px; white-space:nowrap; }
.comm h2{ font-size:clamp(24px,2.8vw,34px); color:var(--navy); letter-spacing:-.02em; }
.comm p{ font-size:16px; color:var(--ink-60); margin-top:14px; max-width:64ch; }
.comm p strong{ color:var(--ink); font-weight:600; }

/* ============ org chart ============ */
.org{ display:flex; flex-direction:column; align-items:center; gap:0; }
.org .tier{ display:flex; gap:16px; justify-content:center; flex-wrap:wrap; }
.org .conn{ width:1px; height:30px; background:var(--line-2); }
.onode{ border:1px solid var(--line); border-radius:10px; padding:16px 20px; min-width:200px; background:#fff; border-top:3px solid var(--line-2); }
.onode .role{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:15.5px; color:var(--navy); }
.onode .name{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-40); margin-top:4px; }
.onode.gov{ background:var(--navy); border-color:var(--navy); border-top-color:var(--orange); text-align:center; }
.onode.gov .role{ color:#fff; }
.onode.advisory{ background:#fff; border-top-color:#7C6FE0; }
.onode.bureau{ background:var(--navy); border-top-color:var(--royal); }
.onode.bureau .role{ color:#fff; } .onode.bureau .name{ color:#9FB2FF; }
.onode.pole{ border-top-color:var(--orange); background:var(--orange-soft); }
.onode.sub{ border-top-color:var(--slate-2); background:var(--slate); min-width:150px; }
.onode.sub .role{ font-size:13.5px; }
.onode.transversal{ border:1.5px dashed #2F9E68; background:#fff; border-top:1.5px dashed #2F9E68; }
.onode.transversal .role{ color:#1F8A5B; font-size:13.5px; }
.org .legend{ display:flex; gap:18px; flex-wrap:wrap; justify-content:center; margin-bottom:36px; }
.org .legend span{ font-family:"IBM Plex Mono",monospace; font-size:11.5px; color:var(--ink-60); display:inline-flex; align-items:center; gap:7px; }
.org .legend i{ width:12px; height:12px; border-radius:3px; display:inline-block; border:1px solid var(--line-2); }

/* ============ speaker / intervenant cards ============ */
.speakers{ display:grid; grid-template-columns:repeat(2,1fr); gap:0; border-top:1px solid var(--line); }
.spk{ display:grid; grid-template-columns:auto 1fr; gap:20px; padding:24px 4px; border-bottom:1px solid var(--line); align-items:start; transition:.16s; }
.spk:hover{ background:var(--sky-soft); padding-left:14px; padding-right:14px; }
.spk:nth-child(odd){ border-right:1px solid var(--line); padding-right:32px; }
.spk:nth-child(odd):hover{ padding-right:24px; }
.spk .av{ width:50px; height:50px; border-radius:50%; background:var(--slate); display:flex; align-items:center; justify-content:center; font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:16px; color:var(--sky); border:1px solid var(--slate-2); overflow:hidden; }
.spk .who b{ font-family:"Schibsted Grotesk",sans-serif; font-weight:700; font-size:17px; color:var(--navy); display:block; }
.spk .who .fn{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-40); margin-top:3px; }
.spk .who .subj{ font-size:14.5px; color:var(--ink-60); margin-top:9px; }
.spk .who .subj .k{ color:var(--sky-deep); }

/* ============ cartographie (two-panel) ============ */
.carto{ display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.cpanel{ border:1px solid var(--line); border-radius:var(--rad); overflow:hidden; }
.cpanel .ch{ padding:22px 26px; border-bottom:1px solid var(--line); }
.cpanel.exist .ch{ background:var(--haze); }
.cpanel.white .ch{ background:var(--orange-soft); }
.cpanel .ch .k{ font-family:"IBM Plex Mono",monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.cpanel.exist .ch .k{ color:var(--royal); } .cpanel.white .ch .k{ color:var(--orange); }
.cpanel .ch h3{ font-size:22px; color:var(--navy); margin-top:8px; font-weight:700; }
.cpanel .ch p{ font-size:13.5px; color:var(--ink-60); margin-top:6px; }
.csector{ padding:20px 26px; border-bottom:1px solid var(--line); }
.csector:last-child{ border-bottom:0; }
.csector .sname{ font-family:"IBM Plex Mono",monospace; font-size:12px; color:var(--ink-40); text-transform:uppercase; letter-spacing:.06em; margin-bottom:12px; }
.cstack{ display:flex; flex-wrap:wrap; gap:8px; }
.cstack .tagx{ font-size:13.5px; padding:6px 12px; border-radius:999px; border:1px solid var(--line-2); color:var(--navy); background:#fff; }
.cpanel.white .cstack .tagx{ border-style:dashed; border-color:var(--orange); color:var(--orange-deep); background:var(--orange-soft); }

@media(max-width:980px){
  .proof .wrap{ grid-template-columns:repeat(2,1fr); }
  .proof .stat{ border-top:1px solid rgba(255,255,255,.14); }
  .grid-2,.grid-3,.grid-4,.nl .wrap,.foot .ftop{ grid-template-columns:1fr; }
  .foot .ftop{ grid-template-columns:1fr 1fr; }
  .comm .wrap,.carto,.speakers{ grid-template-columns:1fr; }
  .spk:nth-child(odd){ border-right:0; padding-right:4px; }
}

/* ============ generalised reading thread (all pages) ============ */
.thread{ position:fixed; left:26px; top:50%; transform:translateY(-50%); z-index:40; display:flex; flex-direction:column; }
.thread::before{ content:""; position:absolute; left:6px; top:14px; bottom:14px; width:2px; background:var(--line-2); border-radius:2px; }
.thread .tprog{ position:absolute; left:6px; top:14px; width:2px; height:0; background:var(--accent); border-radius:2px; transition:height .25s cubic-bezier(.22,.61,.36,1); }
.thread a{ position:relative; display:flex; align-items:center; gap:12px; padding:11px 0; font-family:"IBM Plex Mono",monospace; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-40); }
.thread a .nub{ width:14px; height:14px; border-radius:50%; border:2px solid var(--line-2); background:var(--paper); flex:none; z-index:1; transition:.18s; }
.thread a .tlabel{ opacity:0; transform:translateX(-5px); transition:.2s; white-space:nowrap; }
.thread a:hover .tlabel,.thread a.on .tlabel{ opacity:1; transform:none; }
.thread a:hover{ color:var(--navy); }
.thread a.on{ color:var(--accent); }
.thread a.on .nub{ border-color:var(--accent); background:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }
@media(max-width:1280px){ .thread{ display:none; } }

/* ============ nav dropdowns + mobile menu ============ */
@media(max-width:980px){
  .nav .wrap{ gap:14px; }
  .nav{ -webkit-backdrop-filter:none; backdrop-filter:none; background:#fff; }
  .nav .burger{ display:block; order:3; }
  .nav .right{ display:none; }
  .nav .links{ position:fixed; top:78px; left:0; right:0; bottom:0; display:flex; flex-direction:column; align-items:stretch; gap:0; margin:0; padding:18px 22px 40px; background:#fff; border-top:1px solid var(--line); overflow-y:auto; transform:translateX(100%); transition:transform .32s cubic-bezier(.22,.61,.36,1); z-index:55; -webkit-overflow-scrolling:touch; }
  body.menu-open .nav .links{ transform:none; }
  body.menu-open{ overflow:hidden; }
  .navitem{ border-bottom:1px solid var(--line); }
  .navitem > .navtop{ padding:18px 8px; border-radius:0; font-size:20px; }
  .navitem > .navtop .sub{ font-size:11px; margin-top:3px; }
  .navitem > .navtop .caret{ right:10px; width:9px; height:9px; }
  .navitem.open > .navtop .caret{ transform:translateY(-30%) rotate(225deg); border-color:var(--accent); }
  .navitem.active > .navtop::before{ display:none; }
  .navitem.active > .navtop{ color:var(--accent); }
  .drop{ position:static; opacity:1; visibility:visible; transform:none; box-shadow:none; border:0; border-radius:0; padding:0 0 12px; min-width:0; max-height:0; overflow:hidden; transition:max-height .3s ease; }
  .navitem.open > .drop{ max-height:600px; }
  .navitem:hover > .drop, .navitem:focus-within > .drop{ opacity:1; }
  .drop a{ padding:11px 18px; font-size:16px; }
  .nav-mobile-cta{ display:flex; flex-direction:column; gap:12px; margin-top:26px; }
  .nav-mobile-cta .btn{ justify-content:center; width:100%; font-size:16px; padding:15px 24px; }
  .nav-mobile-cta .lang{ display:flex; justify-content:center; gap:6px; margin-top:4px; }
  .nav-mobile-cta .lang button{ font-family:"IBM Plex Mono",monospace; font-size:14px; padding:8px 14px; border:1px solid var(--line); border-radius:8px; }
}
@media(min-width:981px){ .nav-mobile-cta{ display:none; } }
