/* Thèse — dans l'univers visuel de pablomcordoba.com : fond #F0F0F0, éclats 3D, Inter, gris */
:root { --bg:#F0F0F0; --veil:rgba(240,240,240,.95); --ink:#3c3c3c; --text:#474747; --soft:#646464; --faint:#9a9a9a; --rule:#d9d9d9;
        --sans:'Inter', system-ui, sans-serif; --menu:clamp(17px, 1.6vw, 28px); }
* { box-sizing:border-box; }
html { scroll-padding-top:40px; }
body { margin:0; min-height:100vh; background:var(--bg); color:var(--soft); font-family:var(--sans); font-weight:500;
       -webkit-font-smoothing:antialiased; font-feature-settings:"kern" 1, "liga" 1, "calt" 1; overflow-x:hidden; }
a { color:inherit; text-decoration:none; transition:color .25s; }
a:hover { color:var(--ink); }
#c { position:fixed; inset:0; width:100vw; height:100vh; z-index:0; display:block; }
/* voile clair sur la scène de l'accueil, comme le #descIntro du site (rgba 240 / 0.8) */
body.landing::after { content:""; position:fixed; inset:0; z-index:1; pointer-events:none; background:rgba(240,240,240,.8); }
/* bandeau haut : le nom reste lisible quand le contenu défile dessous */
body::before { content:""; position:fixed; top:0; left:0; right:0; height:70px; z-index:4; pointer-events:none;
               background:linear-gradient(rgba(240,240,240,.96) 55%, rgba(240,240,240,0)); }
body.page::before { left:auto; right:0; width:min(900px, 64%); }

/* coin haut gauche : nom + menu, comme sur le site */
.home { position:fixed; top:22px; left:64px; z-index:6; font-size:var(--menu); font-weight:600; color:var(--soft); letter-spacing:-.005em; }
.menu-btn { position:fixed; top:20px; left:18px; z-index:7; width:34px; height:30px; padding:6px 5px; border:0; background:none; cursor:pointer;
            display:flex; flex-direction:column; justify-content:space-between; }
.menu-btn span { display:block; height:2px; background:var(--soft); transition:transform .35s, opacity .35s; }
.menu-btn em { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
.menu-btn:hover span { background:var(--ink); }
body.toc-open .menu-btn span:nth-child(1) { transform:translateY(8px) rotate(45deg); }
body.toc-open .menu-btn span:nth-child(2) { opacity:0; }
body.toc-open .menu-btn span:nth-child(3) { transform:translateY(-8px) rotate(-45deg); }

/* sélecteur de langue, comme sur le site */
.langs { position:fixed; right:18px; bottom:14px; z-index:6; font-size:13px; letter-spacing:.04em; }
.langs a { color:var(--faint); padding:4px 3px; }
.langs a.current, .langs a:hover { color:var(--ink); }
.langs a + a::before { content:"·"; color:#c4c4c4; padding-right:6px; }

/* ---------------------------------------------------------------- accueil de la thèse */
.intro { position:relative; z-index:2; width:min(640px, 46vw); padding:16vh 0 18vh 64px; }
.kicker { margin:0 0 14px; font-size:12px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); }
.intro h1 { margin:0; font-size:clamp(30px, 3.4vw, 60px); line-height:1.04; font-weight:600; letter-spacing:-.025em; color:var(--ink);
            text-shadow:0 0 18px var(--bg), 0 0 2px var(--bg); }
.subtitle { margin:16px 0 0; font-size:clamp(16px, 1.35vw, 22px); line-height:1.35; font-weight:400; color:var(--soft); text-shadow:0 0 12px var(--bg); }
.info { margin:22px 0 0; font-size:13px; line-height:1.6; color:var(--faint); text-shadow:0 0 8px var(--bg); }
.actions { margin:28px 0 0; display:flex; gap:10px; flex-wrap:wrap; }
.btn { display:inline-block; padding:10px 18px; font-size:14px; font-weight:600; color:var(--bg); background:var(--ink); border:1px solid var(--ink); transition:background .25s, color .25s; }
.btn:hover { background:#000; color:#fff; }
.btn.ghost { background:rgba(240,240,240,.6); color:var(--ink); }
.btn.ghost:hover { background:var(--ink); color:var(--bg); }
.chapters { list-style:none; margin:0; padding:0; }
/* plan de la thèse : fenêtre semi-transparente fixe à droite */
.plan { position:fixed; z-index:3; top:72px; left:22px; bottom:24px; width:calc(36% - 44px); overflow-y:auto; overscroll-behavior:contain;
        padding:26px 30px 30px; background:rgba(240,240,240,.55); -webkit-backdrop-filter:blur(12px) saturate(1.1); backdrop-filter:blur(12px) saturate(1.1);
        border:1px solid rgba(255,255,255,.7); box-shadow:0 10px 40px rgba(0,0,0,.06); animation:slideL .8s cubic-bezier(.2,.7,.2,1) both; }
.plan h2 { margin:0 0 18px; font-size:11px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); font-weight:600; }
.plan h2 a { color:inherit; }
.plan h2 a:hover { color:var(--ink); }
.plan li { position:relative; }
.chapters > li { margin:0 0 22px; }
.chapters .ch-a { display:block; padding-right:26px; font-size:clamp(15px, 1.25vw, 21px); font-weight:600; line-height:1.2; color:var(--soft);
                  transition:color .25s, transform .35s; }
.chapters .ch-a:hover { color:#000; transform:translateX(6px); }
.chapters .n { display:block; font-size:11px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); font-weight:500; margin-bottom:3px; }
.chapters ul { list-style:none; margin:7px 0 0; padding:0; }
.chapters ul ul { margin:3px 0 6px 18px; }
.chapters li li > a { display:inline-block; padding:2px 26px 2px 0; font-size:13px; line-height:1.35; color:var(--soft); transition:color .2s, transform .3s; }
.chapters li li li > a { font-size:12.5px; }
.chapters li li > a:hover { color:#000; transform:translateX(5px); }
.chapters li li .n { display:inline; font-size:12px; letter-spacing:0; text-transform:none; margin-right:6px; }
.chapters a[aria-current] { color:#000; font-weight:600; }
.chapters li.has > ul { display:none; }
.chapters li.open > ul { display:block; animation:unfold .35s ease-out; }
@keyframes unfold { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
/* les petits + et − qui ouvrent et ferment les parties */
.plan .tog { position:absolute; right:0; top:1px; width:22px; height:22px; padding:0; border:0; background:none; cursor:pointer;
             color:var(--faint); font:500 15px/22px var(--sans); text-align:center; }
.plan li.l1 > .tog { top:-3px; }
.plan .tog::before { content:"+"; }
.plan li.open > .tog::before { content:"–"; }
.plan .tog:hover { color:#000; }
.abstract { margin:6vh 0 0; padding:26px 0 0; border-top:1px solid var(--rule); }
.abstract h2, .children h2, .footnotes h2, .onpage b, .cite b { margin:0 0 12px; font-size:11px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); font-weight:600; display:block; }
.abstract p { margin:0 0 1em; font-size:15px; line-height:1.7; font-weight:400; color:var(--text); hyphens:auto; }
.abstract .kw, .abstract .jury { font-size:12.5px; color:var(--faint); line-height:1.6; }

/* ---------------------------------------------------------------- pages de lecture */
.panel { position:relative; z-index:2; margin-left:auto; width:min(900px, 64%); min-height:100vh; background:var(--veil);
         padding:96px clamp(24px, 5vw, 84px) 120px; animation:slide .7s cubic-bezier(.2,.7,.2,1) both; }
@keyframes slide { from { transform:translateX(60px); } to { transform:none; } }
@keyframes slideL { from { transform:translateX(-60px); opacity:0; } to { transform:none; opacity:1; } }
.panel article { max-width:690px; }
.close { position:absolute; top:22px; right:26px; font-size:44px; font-weight:300; line-height:1; color:var(--soft); }
.close:hover { color:#000; transform:rotate(90deg); transition:transform .3s, color .3s; }
.crumbs { font-size:12.5px; line-height:1.5; color:var(--faint); margin:0 40px 30px 0; }
.crumbs a { color:var(--soft); }
.crumbs .s { margin:0 7px; color:#c4c4c4; }
.panel .kicker { margin-bottom:10px; }
.panel h1 { margin:0 0 12px; font-size:clamp(28px, 2.7vw, 46px); line-height:1.1; font-weight:600; letter-spacing:-.02em; color:var(--ink); }
.meta { margin:0 0 34px; font-size:12.5px; color:var(--faint); }
.onpage { margin:0 0 38px; padding:2px 0 2px 16px; border-left:2px solid var(--rule); font-size:13.5px; }
.onpage a { display:block; padding:2px 0; color:var(--soft); }
.onpage a:hover { color:#000; }

.body { font-size:17px; line-height:1.75; font-weight:400; color:var(--text); }
.body p { margin:0 0 1.05em; hyphens:auto; }
.body h2 { margin:2.3em 0 .7em; font-size:1.3em; line-height:1.3; font-weight:600; color:var(--ink); letter-spacing:-.01em; }
.body h3 { margin:1.9em 0 .6em; font-size:1.08em; font-weight:600; color:var(--ink); }
.body h4 { margin:1.6em 0 .5em; font-size:1em; font-weight:600; color:var(--soft); }
.body em { font-style:italic; }
.body strong { font-weight:600; }
.body blockquote { margin:1.5em 0; padding:0 0 0 1.3em; border-left:2px solid var(--rule); font-size:.93em; color:#555; }
.body .epigraphe { margin:0 0 2.4em auto; max-width:78%; text-align:right; font-size:.92em; font-style:italic; color:var(--soft); }
.body .vers blockquote { font-style:italic; }
.body .center { text-align:center; font-size:.9em; color:var(--soft); margin:1.2em 0; }
.body figure { margin:2.2em 0; }
.body img { display:block; max-width:100%; height:auto; margin:0 auto; background:#e4e4e4; cursor:zoom-in; transition:filter .3s; }
.body img:hover { filter:contrast(1.05); }
.body figcaption { margin-top:10px; font-size:12.5px; line-height:1.55; font-weight:500; color:var(--soft); }
.body table { display:block; overflow-x:auto; width:100% !important; margin:1.6em 0; border-collapse:collapse; font-size:12.5px; line-height:1.4; }
.body td, .body th { border:1px solid var(--rule); padding:6px 8px; vertical-align:top; }
.body code { font-size:.86em; background:rgba(0,0,0,.05); padding:1px 4px; }
.body a { text-decoration:underline; text-decoration-color:#bdbdbd; text-underline-offset:2px; overflow-wrap:anywhere; }
.body a:hover { text-decoration-color:var(--ink); }
.body a.footnote-ref { text-decoration:none; font-size:.66em; font-weight:600; color:var(--soft); padding:0 2px; }
.body a.footnote-ref sup { vertical-align:super; line-height:0; font-size:1em; }
.body a.footnote-ref:hover, .body a.footnote-ref.active { color:#fff; background:var(--ink); border-radius:2px; }
.footnotes { margin-top:3.6em; padding-top:1.4em; border-top:1px solid var(--rule); font-size:14px; line-height:1.6; color:#555; }
.footnotes hr { display:none; }
.footnotes ol { margin:0; padding-left:1.7em; }
.footnotes li { margin-bottom:.6em; }
.footnotes li p { margin:0; }
.footnotes li:target { background:rgba(255,255,255,.7); }
.footnotes a.footnote-back { text-decoration:none; color:var(--faint); margin-left:4px; }
.csl-entry { margin-bottom:.75em; padding-left:1.6em; text-indent:-1.6em; font-size:15px; }

.children { margin:3.4em 0 0; padding-top:1.4em; border-top:1px solid var(--rule); }
.card { display:block; padding:13px 0; border-bottom:1px solid rgba(0,0,0,.06); transition:transform .3s; }
.card:hover { transform:translateX(6px); }
.card .t { font-size:16px; font-weight:600; color:var(--ink); }
.card .n { margin-right:7px; font-size:12px; color:var(--faint); font-weight:500; }
.card .d { display:block; margin-top:3px; font-size:13.5px; line-height:1.55; font-weight:400; color:var(--soft); }
.pager { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:3.6em; }
.pager a { display:block; padding:14px 16px; border:1px solid var(--rule); font-size:14px; line-height:1.35; font-weight:600; color:var(--ink);
           transition:background .25s, color .25s, border-color .25s; }
.pager a:hover { background:var(--ink); border-color:var(--ink); color:var(--bg); }
.pager small { display:block; margin-bottom:4px; font-size:11px; letter-spacing:.07em; text-transform:uppercase; font-weight:500; color:var(--faint); }
.pager .next { grid-column:2; text-align:right; }
.cite { margin:2.8em 0 0; font-size:12px; line-height:1.6; color:var(--faint); overflow-wrap:anywhere; }

/* bulle de note */
#note-pop { position:absolute; z-index:30; width:max-content; max-width:min(460px, calc(100vw - 24px)); padding:12px 15px 13px;
            background:rgba(250,250,250,.98); border-left:3px solid var(--ink); box-shadow:0 10px 34px rgba(0,0,0,.13);
            font-size:13.5px; line-height:1.55; font-weight:400; color:#333; animation:pop .18s ease-out; }
@keyframes pop { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } }
#note-pop .no { margin-right:7px; font-size:11px; font-weight:600; color:var(--faint); }
#note-pop p { display:inline; margin:0; }
#note-pop a { text-decoration:underline; text-decoration-color:#bbb; overflow-wrap:anywhere; }
#note-pop a.footnote-back { display:none; }

#zoom { position:fixed; inset:0; z-index:40; display:flex; align-items:center; justify-content:center; padding:24px; background:rgba(240,240,240,.97); cursor:zoom-out; }
#zoom img { max-width:100%; max-height:100%; box-shadow:0 10px 40px rgba(0,0,0,.15); }
#zoom[hidden] { display:none; }

@media (max-width: 900px) {
  .plan { position:relative; top:auto; right:auto; bottom:auto; width:auto; margin:0 16px 70px; overflow:visible; animation:none; }
  .intro { width:auto; padding:110px 22px 80px; }
  .panel { width:100%; padding:86px 22px 90px; animation:none; }
  .home { left:58px; top:22px; font-size:17px; }
  .chapters .ch-a { font-size:20px; }
  .abstract { padding:22px 18px; }
}
@media (max-width: 560px) {
  .body { font-size:16.5px; }
  .pager { grid-template-columns:1fr; }
  .pager .next { grid-column:1; }
  .close { top:14px; right:16px; }
}
@media (prefers-reduced-motion: reduce) {
  .panel { animation:none; }
  * { transition:none !important; }
}
@media print {
  #c, .home, .menu-btn, .plan, .langs, .pager, .close, .onpage { display:none !important; }
  .panel { width:auto; background:none; padding:0; animation:none; }
}

/* page de titre de la thèse : première page du panneau de droite */
body.landing .menu-btn { display:none; }
body.landing .home { left:22px; }
.cover { padding-top:6vh; }
.cover h1, .panel .cover h1 { margin:0; font-size:clamp(30px, 3.3vw, 58px); line-height:1.04; font-weight:600; letter-spacing:-.025em; color:var(--ink); }
.cover .subtitle, .cover .info { text-shadow:none; }
@media (max-width: 900px) {
  body.landing .panel { padding-top:80px; }
  .plan { position:relative; top:auto; left:auto; bottom:auto; width:auto; margin:0 16px 70px; overflow:visible; animation:none; }
}

/* le même plan sur toutes les pages : fixe à gauche sur grand écran, volet ☰ sur téléphone */
@media (min-width: 901px) {
  .menu-btn { display:none; }
  .home { left:22px; }
}
@media (max-width: 900px) {
  body.page .plan { position:fixed; z-index:5; top:0; left:0; right:auto; bottom:0; width:min(440px, 100vw); margin:0; padding:76px 24px 50px;
                    background:rgba(240,240,240,.97); overflow-y:auto; animation:none; transform:translateX(-102%);
                    transition:transform .5s cubic-bezier(.2,.7,.2,1); }
  body.page.toc-open .plan { transform:none; }
  body.toc-open .home { opacity:0; pointer-events:none; }
}

/* barre de défilement du plan côté gauche : la fenêtre est en sens inverse, son contenu dans le bon sens */
.plan { direction:rtl; scrollbar-width:thin; scrollbar-color:rgba(0,0,0,.18) transparent; }
.plan > * { direction:ltr; }
.plan::-webkit-scrollbar { width:6px; }
.plan::-webkit-scrollbar-thumb { background:rgba(0,0,0,.18); border-radius:3px; }
.plan::-webkit-scrollbar-track { background:transparent; }
