:root{
  --navy:#0B1F3A; --navy-2:#13294B; --navy-soft:#3C4C68;
  --red:#C8102E; --red-dark:#9C0D24; --green:#1E7A4C;
  --white:#FFFFFF; --paper:#F6F7F9; --rule:#E2E5EB;
  --ink:#101828; --ink-soft:#5B6472; --ink-faint:#8D93A0;
  --serif:'Instrument Serif', serif; --sans:'Instrument Sans', sans-serif;
}
*{box-sizing:border-box;}
body{margin:0; background:var(--white); color:var(--ink); font-family:var(--sans); -webkit-font-smoothing:antialiased; -webkit-tap-highlight-color:transparent;}
a{color:inherit; text-decoration:none;} button{font-family:var(--sans);}
:focus-visible{outline:2px solid var(--red); outline-offset:2px;}
.wrap{max-width:1180px; margin:0 auto; padding:0 28px;}
.narrow{max-width:860px; margin:0 auto; padding:0 28px;}
.narrow-sm{max-width:640px; margin:0 auto; padding:0 28px;}
@media (max-width:640px){ .wrap,.narrow,.narrow-sm{padding:0 18px;} }
img{max-width:100%; display:block;}

/* ---------- Masthead ---------- */
.masthead{background:var(--white); padding:26px 0 0; border-bottom:1px solid var(--rule);}
.masthead .wrap{display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; padding-bottom:20px;}
.brand{display:flex; align-items:center; gap:12px;}
.brand .mark{width:38px; height:38px; border-radius:50%; background:var(--navy); display:flex; align-items:center; justify-content:center; flex:none; color:#fff; font-family:var(--serif); font-size:20px; position:relative;}
.brand .mark::after{content:""; position:absolute; inset:-4px; border-radius:50%; border:1px solid var(--red);}
.brand-text .name{font-family:var(--serif); font-size:26px; line-height:1; color:var(--navy);}
.brand-text .sub{font-family:var(--serif); font-style:italic; font-size:14.5px; color:var(--ink-soft); margin-top:4px;}
nav.primary{display:flex; align-items:center; gap:24px;}
nav.primary a{font-size:13.5px; font-weight:600; letter-spacing:0.02em; color:var(--navy-2); padding:6px 0; border-bottom:2px solid transparent;}
nav.primary a:hover, nav.primary a.active{color:var(--red); border-color:var(--red);}
.admin-btn{width:34px; height:34px; border-radius:50%; border:1px solid var(--rule); background:var(--white); display:flex; align-items:center; justify-content:center; cursor:pointer; color:var(--navy-2); flex:none;}
.admin-btn:hover{border-color:var(--red); color:var(--red);}

@media (max-width:480px){
  .masthead .wrap{padding-bottom:14px; gap:12px;}
  .brand .mark{width:34px; height:34px; font-size:18px;}
  .brand-text .name{font-size:21px;} .brand-text .sub{font-size:12.5px;}
  nav.primary{flex-basis:100%; width:100%; gap:16px; overflow-x:auto; -webkit-overflow-scrolling:touch;}
  nav.primary a{font-size:13px; padding:8px 0; white-space:nowrap;}
}

/* ---------- Breadcrumb ---------- */
.breadcrumb{padding:18px 0; border-bottom:1px solid var(--rule);}
.breadcrumb .wrap{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-faint); flex-wrap:wrap;}
.breadcrumb a:hover{color:var(--red);}

/* ---------- Spotlight (citation à la une) ---------- */
.spotlight{background:var(--navy);}
.spotlight-grid{display:grid; grid-template-columns:1.15fr 0.85fr; align-items:center; gap:48px; min-height:260px; padding:44px 0;}
@media (max-width:820px){ .spotlight-grid{grid-template-columns:1fr; gap:22px; padding:32px 0;} }
.spotlight-quote blockquote{margin:0; font-family:var(--serif); font-style:italic; font-size:clamp(26px,3.6vw,42px); line-height:1.22; color:#fff;}
.spotlight-quote blockquote::before{content:"\201C"; color:var(--red); font-style:normal; margin-right:4px;}
.spotlight-quote blockquote::after{content:"\201D"; color:var(--red); font-style:normal; margin-left:2px;}
.spotlight-cite{margin:18px 0 0; font-size:12.5px; font-weight:600; letter-spacing:0.05em; text-transform:uppercase; color:rgba(255,255,255,0.55);}
.spotlight-media{width:100%; aspect-ratio:4/3; background:var(--navy-2); border:1px solid rgba(255,255,255,0.12); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; color:rgba(255,255,255,0.45); overflow:hidden;}
.spotlight-media img{width:100%; height:100%; object-fit:cover;}
.spotlight-media svg{width:26px; height:26px; opacity:.7;} .spotlight-media span{font-size:11px; text-transform:uppercase; letter-spacing:.03em; text-align:center; max-width:75%; opacity:.8;}

/* ---------- Section / list ---------- */
.section{padding:40px 0 64px;}
.section-top{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:6px; flex-wrap:wrap; gap:10px;}
.section-top h1{font-family:var(--serif); font-weight:400; font-size:clamp(30px,4vw,42px); color:var(--navy); margin:0;}
.section-top .count{font-size:12.5px; color:var(--ink-faint);}
.section-sub{color:var(--ink-soft); font-size:14.5px; margin:0 0 30px; max-width:60ch;}

.list{border-top:1px solid var(--rule);}
.item{display:grid; grid-template-columns:96px 1fr auto; gap:22px; align-items:flex-start; padding:26px 0; border-bottom:1px solid var(--rule); position:relative;}
@media (max-width:680px){ .item{grid-template-columns:1fr; gap:12px;} }
.item .thumb{width:96px; height:96px; border:1px solid var(--rule); background:var(--paper); display:flex; align-items:center; justify-content:center; color:var(--ink-faint); flex:none; overflow:hidden;}
.item .thumb img{width:100%; height:100%; object-fit:cover;}
.item .thumb svg{width:22px; height:22px;}
@media (max-width:680px){ .item .thumb{width:100%; height:140px;} }
.item-body .tags-row{display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap;}
.item-body .tag{font-size:11px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:var(--red);}
.pdf-tag{display:inline-flex; align-items:center; gap:4px; font-size:11px; color:var(--ink-faint); border:1px solid var(--rule); border-radius:10px; padding:2px 8px 2px 6px;}
.pdf-tag svg{width:11px; height:11px;}
.item h2{font-family:var(--serif); font-weight:400; font-size:23px; line-height:1.22; margin:0 0 8px; color:var(--navy);}
.item:hover h2{color:var(--red);}
.item p.teaser{margin:0; color:var(--ink-soft); font-size:14px; line-height:1.55; max-width:62ch;}
.item .date{font-size:12.5px; color:var(--ink-faint); white-space:nowrap;}
.item.featured-row{padding:32px 0; grid-template-columns:140px 1fr auto;}
.item.featured-row h2{font-size:30px;}
.item.featured-row .thumb{width:140px; height:140px;}
@media (max-width:680px){ .item.featured-row{grid-template-columns:1fr;} .item.featured-row .thumb{width:100%; height:180px;} }
.empty-state{padding:60px 0; text-align:center; color:var(--ink-faint); font-size:14px;}

/* ---------- Article detail ---------- */
.article-head{padding:44px 0 30px;}
.article-head .cat{color:var(--red); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;}
.article-head h1{font-family:var(--serif); font-weight:400; font-size:clamp(34px,5vw,52px); line-height:1.08; color:var(--navy); margin:14px 0 18px;}
.article-head .lede{font-size:18px; line-height:1.6; color:var(--ink-soft); margin:0 0 22px;}
.byline{display:flex; align-items:center; gap:14px; padding-top:18px; border-top:1px solid var(--rule); font-size:13px; color:var(--ink-faint); flex-wrap:wrap; row-gap:6px;}
.byline .dot{width:3px; height:3px; border-radius:50%; background:var(--ink-faint);}
.hero-media{width:100%; aspect-ratio:16/9; background:var(--paper); border:1px solid var(--rule); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; color:var(--ink-faint); margin-bottom:8px; overflow:hidden;}
.hero-media img{width:100%; height:100%; object-fit:cover;}
.hero-media svg{width:28px; height:28px; opacity:.6;} .hero-media span{font-size:11.5px; text-transform:uppercase; opacity:.75;}
.article-body{padding:38px 0 20px; font-size:17.5px; line-height:1.75; color:var(--ink);}
.article-body p{margin:0 0 22px;}
.article-body p:first-of-type::first-letter{font-family:var(--serif); font-size:54px; float:left; line-height:.8; padding:6px 8px 0 0; color:var(--navy);}
.article-foot{padding:26px 0 50px; border-top:1px solid var(--rule); margin-top:10px;}
.back-link{font-size:13px; font-weight:600; color:var(--navy-2);}
.back-link:hover{color:var(--red);}

.pdf-attachment{display:flex; align-items:center; gap:16px; background:var(--paper); border:1px solid var(--rule); padding:20px 22px; margin:34px 0; flex-wrap:wrap;}
.pdf-attachment .icon{width:48px; height:48px; background:var(--navy); color:#fff; flex:none; display:flex; align-items:center; justify-content:center;}
.pdf-attachment .icon svg{width:22px; height:22px;}
.pdf-attachment .info{flex:1; min-width:180px;}
.pdf-attachment .info .name{font-weight:600; color:var(--navy); font-size:15px; word-break:break-word;}
.pdf-attachment .info .meta{font-size:12.5px; color:var(--ink-faint); margin-top:2px;}
.pdf-attachment .actions{display:flex; gap:10px; flex-wrap:wrap;}
.pdf-attachment .btn-view{font-size:12.5px; font-weight:600; padding:10px 16px; border:1px solid var(--navy); color:var(--navy); background:var(--white);}
.pdf-attachment .btn-view:hover{background:var(--navy); color:#fff;}
.pdf-attachment .btn-download{font-size:12.5px; font-weight:700; letter-spacing:.02em; text-transform:uppercase; padding:10px 18px; background:var(--red); color:#fff; border:none;}
.pdf-attachment .btn-download:hover{background:var(--red-dark);}
@media (max-width:480px){ .pdf-attachment .actions{width:100%;} .pdf-attachment .actions a{flex:1; text-align:center;} }

/* ---------- Page head ---------- */
.page-head{padding:48px 0 6px; text-align:center;}
.page-head .kicker{font-size:11px; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; color:var(--red); margin:0 0 14px; text-align:center;}
.page-head h1{font-family:var(--serif); font-weight:400; font-size:clamp(36px,5vw,54px); color:var(--navy); margin:0 0 14px;}
.page-head p{color:var(--ink-soft); font-size:15.5px; line-height:1.6; max-width:46ch; margin:0 auto;}

/* ---------- About ---------- */
.exergue{padding:34px 0 46px; text-align:center;}
.exergue blockquote{margin:0 auto; max-width:640px; font-family:var(--serif); font-style:italic; font-size:clamp(24px,3.4vw,32px); line-height:1.42; color:var(--navy-2);}
.exergue blockquote::before{content:"\201C"; color:var(--red); font-style:normal;}
.exergue blockquote::after{content:"\201D"; color:var(--red); font-style:normal;}
.exergue .rule{width:44px; height:2px; background:var(--red); margin:24px auto 0;}
.bio{padding:12px 0 60px; border-top:1px solid var(--rule);}
.bio-grid{display:grid; grid-template-columns:280px 1fr; gap:52px; align-items:start; padding-top:52px;}
@media (max-width:760px){ .bio-grid{grid-template-columns:1fr; gap:28px;} }
.portrait{width:100%; aspect-ratio:3/4; background:var(--paper); border:1px solid var(--rule); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; color:var(--ink-faint); position:relative; overflow:hidden;}
.portrait img{width:100%; height:100%; object-fit:cover;}
.portrait svg{width:30px; height:30px; opacity:.6;} .portrait span{font-size:11px; text-transform:uppercase; text-align:center; max-width:70%; opacity:.75;}
.bio-text h2{font-family:var(--serif); font-weight:400; font-size:28px; color:var(--navy); margin:0 0 18px;}
.bio-text p{font-size:16px; line-height:1.75; color:var(--ink); margin:0 0 20px;}
.bio-text p:first-of-type::first-letter{font-family:var(--serif); font-size:46px; float:left; line-height:.8; padding:6px 8px 0 0; color:var(--navy);}
.facts{display:flex; flex-wrap:wrap; gap:10px 28px; margin-top:26px; padding-top:22px; border-top:1px dotted var(--rule);}
.facts div{font-size:12.5px; color:var(--ink-faint);}
.facts strong{display:block; font-family:var(--serif); font-size:15px; color:var(--navy); font-weight:400; margin-bottom:2px;}

/* ---------- Contact ---------- */
.contact-section{padding:44px 0 70px;}
form{border-top:1px solid var(--rule); padding-top:38px;}
.field{margin-bottom:22px;}
.field label{display:block; font-size:12px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; color:var(--navy-2); margin-bottom:8px;}
.field input[type="text"], .field input[type="email"], .field textarea{width:100%; border:1px solid var(--rule); background:var(--paper); padding:13px 14px; font-family:var(--sans); font-size:15px; color:var(--ink);}
.field input:focus, .field textarea:focus{outline:none; border-color:var(--navy); background:var(--white);}
.field textarea{resize:vertical; min-height:150px; line-height:1.6;}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
@media (max-width:560px){ .field-row{grid-template-columns:1fr;} }
.hp-field{position:absolute; left:-9999px; top:-9999px; width:1px; height:1px; overflow:hidden;}
.antispam{display:flex; align-items:center; gap:14px; background:var(--paper); border:1px solid var(--rule); padding:16px 18px; margin-bottom:26px; flex-wrap:wrap;}
.antispam svg{width:20px; height:20px; color:var(--red); flex:none;}
.antispam .q{font-size:14px; color:var(--navy-2); font-weight:600;}
.antispam input{width:70px; border:1px solid var(--rule); background:var(--white); padding:9px 10px; font-size:14px; text-align:center;}
.form-msg{font-size:13px; padding:14px 16px; margin-bottom:20px;}
.form-msg.error{color:var(--red); background:#FBEAEC; border:1px solid #F1C4CB;}
.submit-row{display:flex; align-items:center; gap:16px; flex-wrap:wrap;}
.btn-submit{font-size:13.5px; font-weight:700; letter-spacing:0.03em; text-transform:uppercase; background:var(--red); color:#fff; border:none; padding:14px 30px; cursor:pointer;}
.btn-submit:hover{background:var(--red-dark);}
.form-note{font-size:12px; color:var(--ink-faint);}
.success-box{display:flex; align-items:flex-start; gap:14px; background:#F0F7F3; border:1px solid #BFE0CC; padding:20px 22px; margin-bottom:30px;}
.success-box svg{width:20px; height:20px; color:var(--green); flex:none; margin-top:2px;}
.success-box h3{margin:0 0 4px; font-family:var(--serif); font-weight:400; font-size:19px; color:var(--navy);}
.success-box p{margin:0; font-size:13.5px; color:var(--ink-soft); line-height:1.5;}
.alt-contact{border-top:1px solid var(--rule); margin-top:50px; padding-top:34px; display:flex; gap:36px; flex-wrap:wrap;}
.alt-contact div{flex:1; min-width:180px;}
.alt-contact .label{font-size:11px; font-weight:700; letter-spacing:0.06em; text-transform:uppercase; color:var(--red); margin-bottom:8px;}
.alt-contact .value{font-family:var(--serif); font-size:19px; color:var(--navy);}

/* ---------- Admin ---------- */
.admin-wrap{padding:44px 0 80px;}
.gate{max-width:360px; margin:60px auto; text-align:center;}
.gate h2{font-family:var(--serif); font-weight:400; font-size:28px; color:var(--navy); margin:0 0 8px;}
.gate p{color:var(--ink-soft); font-size:13.5px; margin:0 0 22px;}
.gate input{width:100%; border:1px solid var(--rule); background:var(--paper); padding:13px 14px; font-size:15px; text-align:center; margin-bottom:14px;}
.tabs{display:flex; gap:6px; border-bottom:1px solid var(--rule); margin-bottom:32px; flex-wrap:wrap;}
.tab-btn{padding:11px 16px; font-size:13.5px; font-weight:600; color:var(--ink-faint); border-bottom:2px solid transparent;}
.tab-btn.active{color:var(--navy); border-color:var(--red);}
.admin-card{background:var(--paper); border:1px solid var(--rule); padding:24px; margin-bottom:20px;}
.admin-card h3{font-family:var(--serif); font-weight:400; font-size:20px; color:var(--navy); margin:0 0 18px;}
.admin-field{margin-bottom:16px;}
.admin-field label{display:block; font-size:11.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; color:var(--navy-2); margin-bottom:7px;}
.admin-field input[type="text"], .admin-field textarea{width:100%; border:1px solid var(--rule); background:var(--white); padding:11px 13px; font-family:var(--sans); font-size:14.5px; color:var(--ink);}
.admin-field textarea{resize:vertical; min-height:100px; line-height:1.55;}
.admin-field input:focus, .admin-field textarea:focus{outline:none; border-color:var(--navy);}
.img-picker{display:flex; align-items:center; gap:14px; flex-wrap:wrap;}
.img-preview{width:96px; height:72px; border:1px solid var(--rule); background:var(--white); display:flex; align-items:center; justify-content:center; color:var(--ink-faint); overflow:hidden; flex:none; font-size:11px; text-align:center;}
.img-preview img{width:100%; height:100%; object-fit:cover;}
.btn-sm{font-size:12.5px; font-weight:600; padding:9px 14px; border:1px solid var(--rule); background:var(--white); cursor:pointer; color:var(--navy-2); display:inline-block;}
.btn-sm:hover{border-color:var(--red); color:var(--red);}
.btn-primary{font-size:12.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; padding:11px 22px; background:var(--navy); color:#fff; border:none; cursor:pointer;}
.btn-primary:hover{background:var(--red);}
.btn-danger{font-size:12px; font-weight:600; padding:8px 12px; border:1px solid var(--rule); background:var(--white); color:var(--red); cursor:pointer;}
.btn-danger:hover{background:var(--red); color:#fff; border-color:var(--red);}
.saved-flag{font-size:12.5px; color:var(--green); margin-left:12px;}
.admin-list-item{display:flex; align-items:center; gap:14px; padding:14px 0; border-bottom:1px solid var(--rule);}
.admin-list-item .thumb-sm{width:52px; height:52px; border:1px solid var(--rule); background:var(--white); flex:none; overflow:hidden; display:flex; align-items:center; justify-content:center; color:var(--ink-faint);}
.admin-list-item .thumb-sm img{width:100%; height:100%; object-fit:cover;}
.admin-list-item .meta{flex:1; min-width:0;}
.admin-list-item .meta strong{display:block; font-size:14.5px; color:var(--navy); font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.admin-list-item .meta span{font-size:12px; color:var(--ink-faint);}
.admin-list-item .actions{display:flex; gap:8px; flex:none;}
.msg-item{padding:16px 0; border-bottom:1px solid var(--rule);}
.msg-item .msg-top{display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:6px;}
.msg-item strong{font-size:14.5px; color:var(--navy);}
.msg-item .msg-date{font-size:11.5px; color:var(--ink-faint);}
.msg-item .msg-subject{font-size:13px; font-weight:600; color:var(--ink); margin-bottom:4px;}
.msg-item .msg-body{font-size:13.5px; color:var(--ink-soft); line-height:1.5; white-space:pre-wrap;}
.msg-item .msg-actions{margin-top:8px; display:flex; gap:10px;}
.admin-note{font-size:12px; color:var(--ink-faint); background:var(--white); border:1px dashed var(--rule); padding:12px 14px; margin-bottom:22px;}
.admin-dash-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:16px;}
@media (max-width:760px){ .admin-dash-grid{grid-template-columns:1fr 1fr;} }
.admin-dash-card{background:var(--paper); border:1px solid var(--rule); padding:22px; text-align:center;}
.admin-dash-card .n{font-family:var(--serif); font-size:34px; color:var(--navy);}
.admin-dash-card .l{font-size:12px; color:var(--ink-faint); text-transform:uppercase; letter-spacing:.04em; margin-top:4px;}
.admin-dash-card:hover{border-color:var(--red);}

/* ---------- Footer ---------- */
footer{background:var(--navy); color:rgba(255,255,255,0.7); margin-top:10px;}
footer .wrap{padding:44px 28px 30px; display:grid; grid-template-columns:2fr 1fr; gap:36px;}
@media (max-width:760px){ footer .wrap{grid-template-columns:1fr; gap:26px;} }
@media (max-width:640px){ footer .wrap{padding:36px 18px 24px;} .footer-bottom{padding:16px 18px;} }
footer .f-brand{font-family:var(--serif); font-size:24px; color:#fff; margin-bottom:10px;}
footer .f-desc{font-size:13px; line-height:1.6; max-width:36ch; color:rgba(255,255,255,0.55);}
footer h4{font-size:11.5px; letter-spacing:0.08em; text-transform:uppercase; color:rgba(255,255,255,0.5); margin:0 0 14px;}
footer ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px;}
footer ul a{font-size:13.5px; color:rgba(255,255,255,0.82);}
footer ul a:hover{color:var(--red);}
.footer-bottom{border-top:1px solid rgba(255,255,255,0.12); padding:16px 28px; font-size:11.5px; color:rgba(255,255,255,0.45); text-align:center;}
