/* FabriceWillot.be — Charte graphique V2 / Bootstrap 5 + Phosphor locaux. */
:root{--fw-blue:#163B78;--fw-europe:#003399;--fw-yellow:#FFCC00;--fw-text:#192838;--fw-muted:#536172;--fw-border:#D8DEE8;--fw-surface:#F7F8FA;--fw-surface-blue:#EEF3F8;--bs-primary:#163B78;--bs-primary-rgb:22,59,120;--bs-body-color:#192838;--bs-secondary-color:#536172;--bs-body-font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--bs-body-font-size:1.075rem;--bs-body-line-height:1.65;--bs-border-color:#D8DEE8;--bs-link-color:#163B78;--bs-link-hover-color:#0E2A58;--bs-border-radius:.4rem}
body{color:var(--fw-text);background:#fff}h1,h2,h3,h4,h5,h6{color:var(--fw-text);letter-spacing:-.025em;line-height:1.17}a{color:var(--fw-blue)}a:hover{color:#0E2A58}.text-primary{color:var(--fw-blue)!important}.bg-primary-subtle{background-color:var(--fw-surface-blue)!important}.bg-light-subtle,.bg-light{background-color:var(--fw-surface)!important}
.btn-primary{--bs-btn-bg:var(--fw-blue);--bs-btn-border-color:var(--fw-blue);--bs-btn-hover-bg:#0E2A58;--bs-btn-hover-border-color:#0E2A58;--bs-btn-active-bg:#0E2A58;--bs-btn-active-border-color:#0E2A58}.btn-outline-primary{--bs-btn-color:var(--fw-blue);--bs-btn-border-color:var(--fw-blue);--bs-btn-hover-bg:var(--fw-blue);--bs-btn-hover-border-color:var(--fw-blue)}.btn:focus-visible,a:focus-visible{outline:3px solid var(--fw-yellow);outline-offset:3px}.navbar-brand{font-size:1.6rem;letter-spacing:-.04em}.fw-navbar .nav-link{font-size:.98rem;font-weight:550;color:var(--fw-text)}.fw-navbar .nav-link:hover,.fw-navbar .nav-link.active{color:var(--fw-blue)}.fw-navbar .nav-link.active{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.65rem}.fw-shell{padding-left:clamp(20px,3vw,64px)!important;padding-right:clamp(20px,3vw,64px)!important}.fw-navbar{min-height:80px}
/* Bento : bordures sur les cellules ; espacements intérieurs sans doublons Bootstrap */
.fw-bento{width:100%}.fw-panel{min-width:0;border-right:1px solid var(--fw-border)}.fw-panel:last-child{border-right:0}.fw-panel-inner{padding:clamp(28px,3.6vw,76px)}.fw-panel-blue{background:var(--fw-surface-blue)}.fw-panel-soft{background:var(--fw-surface)}.fw-panel-contact{background:var(--fw-surface-blue)}.fw-eyebrow{font-size:.77rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--fw-muted);line-height:1.5}.fw-display{font-size:clamp(2.6rem,4.2vw,5.3rem);font-weight:750;line-height:1.06;letter-spacing:-.055em}.fw-section-heading{font-size:clamp(1.7rem,2.4vw,3rem);font-weight:700;line-height:1.14}.fw-yellow-rule{width:54px;height:4px;background:var(--fw-yellow);border-radius:3px}.fw-hero-copy{min-height:520px}.fw-hero-photo{height:100%;min-height:490px;background:url('/assets/img/bruxelles-europe.webp') center/cover no-repeat;position:relative}.fw-photo-caption{position:absolute;right:clamp(24px,3vw,64px);bottom:30px;background:rgba(255,255,255,.9);color:var(--fw-text);padding:8px 14px;font-size:.8rem}.fw-home-book{height:clamp(130px,13.5vw,215px);width:100%;object-fit:contain;object-position:center}.fw-lined-list li{border-bottom:1px solid var(--fw-border);padding:.7rem 0}.fw-lined-list li:first-child{border-top:1px solid var(--fw-border)}.fw-arrow-link{text-decoration:none;display:inline-flex;gap:.75rem;align-items:center}.fw-arrow-link:hover{text-decoration:underline}.fw-feature-bg{min-height:410px;background:linear-gradient(90deg,rgba(10,30,60,.9),rgba(10,30,60,.3)),url('/assets/img/bruxelles.webp') center/cover no-repeat}.fw-feature-copy{padding:clamp(30px,4vw,76px);max-width:720px}.fw-resource-links a{display:flex;align-items:center;gap:1rem;min-height:63px;border-bottom:1px solid var(--fw-border);color:var(--fw-text);text-decoration:none}.fw-resource-links a:first-child{border-top:1px solid var(--fw-border)}.fw-resource-links a:hover{color:var(--fw-blue)}.fw-resource-links .ph{font-size:1.35rem;color:var(--fw-blue)}
/* Shared footer */
/* Footer full bleed: grid borders belong to the footer, never to the page shell. */
.fw-footer{background:var(--fw-text);color:#E2E9F2}
.fw-footer .fw-footer-grid{margin:0}
.fw-footer-grid .fw-panel{border-right:0;border-bottom:1px solid #3B4A5B;min-width:0}
.fw-footer-grid .fw-panel-inner{padding:clamp(32px,3.2vw,64px)}
.fw-footer .fw-footer-brand{font-size:clamp(1.5rem,1.8vw,2.15rem);color:#fff;letter-spacing:-.045em}
.fw-footer-brand span{color:#EACB61}
.fw-footer h2{color:#fff}
.fw-footer p,.fw-footer .small{color:#CBD5E1}
.fw-footer-links li{margin-bottom:.95rem;min-width:0}
.fw-footer-links a,.fw-footer-bottom a{color:#E2E9F2;text-decoration:none}
.fw-footer-links a:hover,.fw-footer-bottom a:hover{color:#FFDC67;text-decoration:underline}
.fw-footer-external{display:inline-flex;align-items:baseline;gap:.4rem;max-width:100%}
.fw-footer-external span{min-width:0;overflow-wrap:normal}
.fw-footer-external .ph{display:inline-block;white-space:nowrap}
.fw-footer-contact{background:var(--fw-surface-blue);color:var(--fw-text)}
.fw-footer .fw-panel-contact{background:var(--fw-surface-blue);color:var(--fw-text)}
.fw-footer .fw-panel-contact h2{color:var(--fw-text)}
.fw-footer .fw-panel-contact p{color:var(--fw-muted)}
.fw-footer-bottom{border-color:#3B4A5B!important;color:#CBD5E1}
@media(min-width:1200px){.fw-footer-grid .fw-panel:not(:last-child){border-right:1px solid #3B4A5B}}
@media(min-width:768px) and (max-width:1199.98px){.fw-footer-grid .fw-panel:nth-child(odd){border-right:1px solid #3B4A5B}}

/* Functional components kept on other routes */
.narrow{max-width:780px}.hp{position:absolute!important;left:-10000px!important;opacity:0!important}.tool-symbol{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--fw-surface-blue);color:var(--fw-blue);font-size:1.7rem}.card{transition:border-color .2s}.card:hover{border-color:#a5b6d0}.section-title{font-weight:700;margin-bottom:1rem}.section-title::after{content:"";display:block;width:36px;height:3px;margin-top:.6rem;background:var(--fw-yellow)}.tool-favicon{height:44px;width:44px;object-fit:contain;flex-shrink:0;border-radius:9px;background:#fff;padding:4px;border:1px solid var(--fw-border)}.tool-favicon-lg{height:64px;width:64px;padding:6px}.tool-os{font-size:1.17rem;color:var(--fw-muted);line-height:1;display:inline-flex;align-items:center}.tool-os .ph{font-size:1.18rem}.tool-os[title]{cursor:help}.tool-license{font-size:1.15rem}.tool-item .min-width-0{min-width:0}.tool-item[hidden],.pub-entry[hidden],#pub-empty[hidden],.livre-entry[hidden],#livre-empty[hidden]{display:none!important}.tool-avatar{background:var(--fw-blue);color:#fff;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;min-height:44px;flex-shrink:0;border-radius:9px;font-weight:700;font-size:1.4rem;line-height:1}.tool-avatar.tool-favicon-lg{width:64px;height:64px;min-width:64px;min-height:64px;font-size:2rem}.tool-item .card-body>div:first-child .tool-favicon{width:52px;height:52px}.pub-intro{max-width:820px}.pub-cover{width:84px;height:116px;object-fit:contain;flex:0 0 auto}.pub-placeholder{width:84px;height:104px;border-radius:.8rem;background:var(--fw-surface-blue);color:var(--fw-blue);display:grid;place-items:center;flex:0 0 auto}.pub-placeholder i{font-size:2.3rem}.pub-type{font-weight:600;color:var(--fw-blue)}.pub-filters .btn,.livre-filter{border-radius:50rem}.livre-cover,.livre-placeholder{width:110px;height:156px;flex:0 0 110px;object-fit:contain;border-radius:.4rem}.livre-placeholder{display:grid;place-items:center;background:var(--fw-surface-blue);color:var(--fw-blue)}.livre-placeholder i{font-size:2.8rem}.livre-statut{display:inline-block;font-size:.76rem;padding:.23rem .62rem;border:1px solid var(--fw-border);border-radius:50rem;color:var(--fw-muted)}.livre-statut-a-paraitre{color:var(--fw-blue);border-color:#a5b6d0}
@media(max-width:1199.98px){.fw-bento .fw-panel{border-bottom:1px solid var(--fw-border)}.fw-panel-inner{padding:clamp(26px,3vw,52px)}}@media(max-width:991.98px){.fw-hero-copy{min-height:auto}.fw-hero-photo{min-height:340px}.fw-display{font-size:clamp(2.35rem,7vw,4rem)}}@media(max-width:575.98px){:root{--bs-body-font-size:1.04rem}.fw-hero-photo{min-height:255px}.fw-home-book{height:145px}.fw-panel-inner{padding:28px 22px}.fw-footer-grid .fw-panel-inner{padding:30px 22px}.fw-navbar{min-height:68px}}@media(max-width:380px){.livre-cover,.livre-placeholder{width:80px;height:118px;flex-basis:80px}}

/* V2.3 — continuité éditoriale : catalogues et zone interventions. */
.fw-catalog-hero{background:var(--fw-surface-blue)}
.fw-catalog-hero p{max-width:78ch}
.fw-catalog-content{padding-top:clamp(32px,3vw,64px)}
.fw-catalog-page .fw-catalog-card{border:1px solid var(--fw-border);border-radius:0;box-shadow:none;background:#fff}
.fw-catalog-page .fw-catalog-card:hover{border-color:#a4b5ca}
.fw-catalog-page .fw-catalog-card .card-body{padding:clamp(24px,2.5vw,42px)}
.fw-catalog-page .form-control,.fw-catalog-page .form-select{border-color:var(--fw-border)}
.fw-catalog-page .fw-display{max-width:1050px}
.fw-feature-bg{height:100%;background:linear-gradient(90deg,rgba(10,30,60,.92),rgba(10,30,60,.45)),url('/assets/img/bruxelles.webp') center/cover no-repeat}
.fw-catalog-page .livres-groupe{margin-bottom:clamp(44px,5vw,90px)}

/* Outils : drapeau UE et infobulles accessibles, sans fournisseur externe. */
.tool-eu-flag{display:block;width:27px;height:18px;object-fit:cover;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.12)}
.tool-os,.tool-license,.tool-origin{cursor:help;position:relative;z-index:2}
.tool-os:focus-visible,.tool-license:focus-visible,.tool-origin:focus-visible{outline:2px solid var(--fw-blue);outline-offset:3px;border-radius:2px}

.tool-country-flag{display:block;width:24px;height:16px;object-fit:cover;border-radius:2px;box-shadow:0 0 0 1px rgba(0,0,0,.13)}
.tool-zone-label{font-size:.72rem;color:var(--fw-muted);font-weight:600;white-space:nowrap}

/* Flag Icons - pictogrammes de provenance locaux, accessibles dans les infobulles. */
.tool-origin .fi{display:inline-block;flex:0 0 auto;line-height:1;vertical-align:middle;box-shadow:0 0 0 1px rgba(0,0,0,.12);border-radius:2px;background-size:cover}
.tool-origin .fi.tool-eu-flag{width:27px;height:19px}
.tool-origin .fi.tool-country-flag{width:24px;height:18px}
.tool-origin .fi:before{content:none}

/* Publications — V2.4.17 : cartes documentaires et aperçus des couvertures. */
.publications-page .pub-intro{max-width:850px}.publications-page .pub-card{border:1px solid var(--fw-border);border-radius:14px;overflow:hidden;box-shadow:0 2px 10px rgba(25,40,56,.045)}
.publications-page .pub-card:hover{border-color:#9CB3D1}.pub-card-top{display:flex;gap:19px;padding:22px 22px 17px;align-items:flex-start;min-width:0}
.publications-page .pub-cover,.publications-page .pub-placeholder{width:125px;height:169px;flex:0 0 125px;object-fit:contain;object-position:top center;background:#fff;border:1px solid #dde3eb;border-radius:4px;box-shadow:0 8px 24px rgba(25,40,56,.14),0 2px 6px rgba(25,40,56,.08)}
.publications-page .pub-placeholder{display:grid;place-items:center;background:#F0F4F9;color:#5C718B}.publications-page .pub-placeholder .ph{font-size:2.5rem}
.pub-card-headings{min-width:0}.pub-card-headings h2{overflow-wrap:anywhere;line-height:1.3}.pub-type{display:block;font-size:.76rem;font-weight:700;color:var(--fw-blue);letter-spacing:.015em}.pub-date{display:block;color:var(--fw-muted);font-size:.85rem;margin-top:5px}
.publications-page .pub-card .card-body{padding:0 22px 22px}.pub-summary{line-height:1.55}.pub-doi{overflow-wrap:anywhere}.pub-actions{padding-top:8px}.pub-actions .btn{white-space:normal}
@media(max-width:575.98px){.pub-card-top{padding:18px 18px 14px;gap:14px}.publications-page .pub-cover,.publications-page .pub-placeholder{width:96px;height:137px;flex-basis:96px}.publications-page .pub-card .card-body{padding:0 18px 18px}.pub-card-headings h2{font-size:1.08rem}}

/* V2.4.20 — actions compactes des notices et sélection d'articles LinkedIn. */
.publications-page .pub-actions{gap:.35rem!important;align-items:center}
.publications-page .pub-actions .btn{font-size:.75rem;line-height:1.2;padding:.36rem .55rem;min-height:33px;white-space:nowrap}
.publications-page .pub-actions .btn .ph{font-size:.9rem;vertical-align:-.07em}
.publications-page .pub-article-card{border:1px solid var(--fw-border);border-radius:14px;box-shadow:0 2px 10px rgba(25,40,56,.045)}
.publications-page .pub-article-card .card-body{padding:1.15rem 1.3rem}
.publications-page .pub-article-card .pub-type{display:inline-block}
.publications-page .pub-article-card h3{line-height:1.4}
.publications-page .pub-article-link{font-size:.79rem;padding:.34rem .6rem}
@media(max-width:360px){.publications-page .pub-actions .btn{font-size:.72rem;padding:.32rem .45rem}}


.publications-page .pub-article-card{overflow:hidden}
.publications-page .pub-article-cover{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-bottom:1px solid rgba(23,43,77,.08)}
.publications-page .pub-article-card .card-body{padding:1rem 1.15rem 1.15rem}
.publications-page .pub-article-theme{display:inline-flex;align-items:center;padding:.16rem .45rem;border-radius:999px;background:#eef4fb;color:#315b86;font-size:.72rem;font-weight:600}
.publications-page .pub-actions .btn{font-size:.78rem;padding:.34rem .56rem}
.publications-page .pub-card .btn i{font-size:.95rem}
@media (max-width:575.98px){.publications-page .pub-actions .btn{font-size:.74rem;padding:.32rem .5rem}}

/* V2.4.22 — catalogue unifié, boutons centrés sans décalage vertical. */
.publications-page .pub-cover-article{object-fit:contain;background:#eef2f7;padding:0;border-color:#dce4ec}
.publications-page .pub-actions{display:flex;align-items:center;gap:.375rem!important;padding-top:.45rem}
.publications-page .pub-actions .btn{display:inline-flex;align-items:center;justify-content:center;gap:.26rem;height:32px;min-height:32px;box-sizing:border-box;padding:0 .62rem!important;font-size:.78rem;line-height:1!important;white-space:nowrap;vertical-align:middle}
.publications-page .pub-actions .btn .ph{display:inline-flex;align-items:center;justify-content:center;font-size:.95rem;line-height:1;vertical-align:baseline}
@media(max-width:380px){.publications-page .pub-actions .btn{height:31px;min-height:31px;font-size:.75rem;padding:0 .5rem!important}}

/* V2.4.24 : illustration des articles en 4:3, couvertures Zenodo conservées. */
.publications-page .pub-cover.pub-cover-article{width:125px;height:auto;aspect-ratio:4/3;flex:0 0 125px;object-fit:cover;object-position:center;background:#edf2f8;padding:0;border:1px solid #dce4ec;border-radius:5px;box-shadow:0 4px 11px rgba(25,40,56,.13)}
@media (max-width:575.98px){.publications-page .pub-cover.pub-cover-article{width:96px;flex-basis:96px}}

/* V2.4.25 — Vignette éditoriale Kessel sans image externe. */
.publications-page .pub-placeholder.pub-placeholder-kessel{height:auto;aspect-ratio:4/3;flex-direction:column;gap:.18rem;padding:.5rem;background:linear-gradient(135deg,#163b78,#0c2949);border-color:#284d7c;color:#fff;box-shadow:0 4px 11px rgba(25,40,56,.13);text-align:center}
.publications-page .pub-kessel-logo{font-weight:800;font-size:1.35rem;letter-spacing:.08em;color:#f6d165;line-height:1.15}
.publications-page .pub-kessel-label{font-size:.61rem;line-height:1.25;color:#f2f6fc}
@media(max-width:575.98px){.publications-page .pub-placeholder.pub-placeholder-kessel{height:auto;aspect-ratio:4/3}}
