:root{--navy:#0c2a5c;--navy-deep:#081c3f;--blue:#2c4f9e;--red:#e1262d;--paper:#fcfcfe;--mist:#eef1f7;--ink:#14203a;--muted:#55607a;--line:#d5dbe8;
--serif:'Iowan Old Style','Palatino Linotype',Palatino,'Book Antiqua',Georgia,serif;--sans:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
*{box-sizing:border-box}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--ink);font:1.0625rem/1.7 var(--serif)}
a{color:var(--blue)}
:focus-visible{outline:3px solid var(--red);outline-offset:2px}
[hidden]{display:none!important}
.skip{position:absolute;left:-999px;top:0;background:#fff;color:var(--navy);padding:.6rem 1rem;font-family:var(--sans)}
.skip:focus{left:0;z-index:10}
.banner{background:var(--red);color:#fff;text-align:center;padding:.65rem 1rem;font:600 1rem var(--sans)}
.site-header{background:var(--navy);color:#fff}
.bar{max-width:72rem;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.25rem;gap:1rem;flex-wrap:wrap}
.brand{font:600 1.7rem var(--serif);letter-spacing:.16em;color:#fff;text-decoration:none}
nav a{color:#d9e1f3;text-decoration:none;font:500 1rem var(--sans);padding:.35rem .1rem;margin-left:1.4rem;border-bottom:2px solid transparent}
nav a:hover{color:#fff}
nav a[aria-current=page]{color:#fff;border-color:#fff}
.tricolor{height:6px;background:linear-gradient(90deg,var(--blue) 0 33.3%,#e9ecf3 33.3% 66.6%,var(--red) 66.6%)}
.hero{background:var(--navy);color:#fff}
.hero-in{max-width:72rem;margin:auto;padding:4.5rem 1.25rem;display:grid;grid-template-columns:1.35fr .65fr;gap:3.5rem;align-items:center}
.hero h1{font:600 clamp(2.4rem,5.2vw,4.1rem)/1.08 var(--serif);margin:0 0 1.2rem}
.hero p{font-size:1.2rem;max-width:34rem;color:#dbe3f5;margin:0 0 2rem}
.hero-logo{border-radius:50%;overflow:hidden;background:#fff;aspect-ratio:1;max-width:22rem;justify-self:center;width:100%}
.hero-logo img{display:block;width:100%;height:100%;object-fit:cover}
.btn{display:inline-block;background:#fff;color:var(--navy);font:600 1rem var(--sans);padding:.8rem 1.4rem;border-radius:.3rem;text-decoration:none;margin:0 .6rem .6rem 0;border:1px solid #fff}
.btn:hover{background:var(--mist)}
.btn.ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.65)}
.btn.ghost:hover{background:rgba(255,255,255,.1)}
.btn.solid{background:var(--navy);color:#fff;border-color:var(--navy);cursor:pointer}
.btn.solid:hover{background:var(--navy-deep)}
.btn.danger{background:#fff;color:var(--red);border-color:var(--red);cursor:pointer}
.wrap{max-width:72rem;margin:auto;padding:3.5rem 1.25rem}
.wrap.tint{max-width:none;background:var(--mist)}
.wrap.tint>.in{max-width:72rem;margin:auto}
h2{font:600 clamp(1.7rem,3vw,2.2rem)/1.2 var(--serif);color:var(--navy);margin:0 0 1.2rem}
.prose{max-width:44rem}
.prose p{margin:0 0 1.1rem}
.chantiers{list-style:none;margin:0;padding:0;border-bottom:1px solid var(--line)}
.chantiers a{display:grid;grid-template-columns:7rem 1fr;gap:1rem;padding:1.15rem .25rem;border-top:1px solid var(--line);text-decoration:none;color:var(--ink)}
.chantiers a:hover{background:#fff}
.chantiers .t{font:600 .95rem var(--sans);color:var(--blue);padding-top:.25rem}
.chantiers .n{font:600 1.3rem/1.3 var(--serif);color:var(--navy);display:block}
.chantiers .r{font:.95rem var(--sans);color:var(--muted)}
.page-head{background:var(--navy);color:#fff}
.page-head .in{max-width:72rem;margin:auto;padding:3rem 1.25rem}
.page-head h1{font:600 clamp(2rem,4.2vw,3rem)/1.1 var(--serif);margin:0 0 .5rem}
.page-head p{margin:0;color:#dbe3f5;font-size:1.1rem;max-width:40rem}
.prog{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:3.5rem;align-items:start}
.toc{position:sticky;top:1.5rem;font-family:var(--sans);font-size:.95rem}
.toc ol{list-style:none;margin:0;padding:0;border-left:3px solid var(--line)}
.toc a{display:block;padding:.55rem .9rem;text-decoration:none;color:var(--ink)}
.toc a:hover{background:var(--mist);color:var(--navy)}
.toc b{display:block;color:var(--blue)}
.prog section{margin-bottom:3.5rem;scroll-margin-top:1rem}
.prog h2{border-bottom:3px solid var(--navy);padding-bottom:.6rem;margin-bottom:.5rem}
.article{padding:1.6rem 0;border-top:1px solid var(--line)}
.article:first-of-type{border-top:0}
.article .num{font:600 .95rem var(--sans);color:var(--blue)}
.article h3{font:600 1.35rem/1.3 var(--serif);margin:.15rem 0 .7rem;color:var(--navy)}
.article p{margin:0 0 .9rem;max-width:42rem}
.preamble{border-left:4px solid var(--red);padding-left:1.4rem;margin-bottom:3.5rem}
.preamble p{max-width:42rem;margin:0 0 1rem}
.event{display:grid;grid-template-columns:6rem minmax(0,1fr);gap:1.4rem;padding:1.3rem 0;border-top:1px solid var(--line)}
.event:last-child{border-bottom:1px solid var(--line)}
.date{border:2px solid var(--navy);text-align:center;font-family:var(--sans);align-self:start;background:#fff}
.date .d{display:block;font:700 2rem/1.1 var(--serif);color:var(--navy);padding-top:.35rem}
.date .m{display:block;font-weight:600;font-size:.85rem;background:var(--navy);color:#fff;padding:.2rem 0;margin-top:.3rem}
.event h3{font:600 1.3rem/1.3 var(--serif);color:var(--navy);margin:0 0 .25rem}
.event .meta{font:.95rem var(--sans);color:var(--muted);margin:0 0 .5rem}
.event p{margin:0;max-width:40rem}
.month{font:600 1rem var(--sans);color:var(--blue);margin:2.2rem 0 .6rem}
.empty{padding:2rem;background:#fff;border:1px dashed var(--line);font-family:var(--sans);color:var(--muted)}
.site-footer{background:var(--navy-deep);color:#c5cfe6;font:.95rem var(--sans)}
.site-footer .in{max-width:72rem;margin:auto;padding:2rem 1.25rem;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.site-footer a{color:#e4eaf8;margin-right:1.2rem}
.admin{max-width:56rem;margin:auto;padding:3rem 1.25rem;font-family:var(--sans)}
.admin h1{font:600 2rem var(--serif);color:var(--navy);margin:0 0 1.5rem}
.panel{background:#fff;border:1px solid var(--line);padding:1.5rem;margin-bottom:1.5rem}
.panel h2{font-size:1.3rem}
label{display:block;font-weight:600;font-size:.95rem;margin:0 0 .3rem}
input[type=text],input[type=password],input[type=date],input[type=time],textarea{width:100%;font:1rem var(--sans);padding:.65rem .75rem;border:1px solid #9aa6c2;border-radius:.25rem;background:#fff;color:var(--ink)}
textarea{min-height:5.5rem;resize:vertical}
.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}
.field{margin-bottom:1rem}
.check{display:flex;gap:.6rem;align-items:center;font-weight:600;margin-bottom:1rem}
.check input{width:1.2rem;height:1.2rem}
.err{color:#b3151b;font-weight:600;margin:.8rem 0 0}
.ok{color:#14683a;font-weight:600}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}
.help{color:var(--muted);font-size:.9rem;margin:.3rem 0 0}
@media (max-width:52rem){
 .hero-in{grid-template-columns:1fr;padding:3rem 1.25rem}
 .hero-logo{max-width:15rem;order:-1;justify-self:start}
 .prog{grid-template-columns:1fr}
 .toc{position:static}
 .toc ol{display:grid;grid-template-columns:1fr 1fr}
 .chantiers a{grid-template-columns:1fr;gap:.2rem}
 .event{grid-template-columns:4.5rem minmax(0,1fr);gap:1rem}
 .row{grid-template-columns:1fr}
 nav a{margin:0 1rem 0 0}
}
