/* =====================================================================
   IDENTITÉS VISUELLES PAR PAGE
   Linux : matrix vert · Cinéma : salle rouge · Aviation : ciel · Parcours : bleu marine
   ===================================================================== */
:root{ --linux:#39d96a; --cinema:#d6283a; --aviation:#3b9cff; --parcours:#5b8cff; }

/* ---------------------------------------------------------------------
   ACCUEIL : les cartes annoncent chaque univers
   --------------------------------------------------------------------- */
.passion.linux .ph.empty{background:radial-gradient(circle at 30% 20%,#0f4a1d,transparent 60%),repeating-linear-gradient(0deg,#041006 0 3px,#06180a 3px 6px)}
.passion.cinema .ph.empty{background:repeating-linear-gradient(90deg,#4a0710 0,#8f0d1c 4%,#c0182b 6%,#8f0d1c 8%,#4a0710 12%)}
.passion.aviation .ph.empty{background:linear-gradient(180deg,#6fb8ff,#cfe8ff 70%,#f2f8ff)}
.passion.aviation::before{background:linear-gradient(180deg,transparent 25%,rgba(6,28,58,.85))}
.passion .ph.empty{border:0}
.passion .ph.empty::after{color:rgba(255,255,255,.6)}

/* =====================================================================
   LINUX — matrix / phosphore vert
   ===================================================================== */
body.p-linux{
  --bg:#030803;--bg2:#06110a;--card:#071409;--ink:#c9f7d3;--muted:#6fa97d;--line:#15391e;
  --accent:#39ff6a;--accent-ink:#021004;
  font-family:"JetBrains Mono",ui-monospace,monospace;font-size:15px;
  background:radial-gradient(ellipse at 50% 0,#0a2410 0,transparent 55%),var(--bg);
}
body.p-linux::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:600;
  background:repeating-linear-gradient(180deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.22) 2px 3px);mix-blend-mode:multiply}
body.p-linux h1{font-family:"VT323",var(--mono);font-weight:400;letter-spacing:0;font-size:clamp(48px,6.4vw,92px);line-height:.95;color:#d9ffe1;text-shadow:0 0 6px rgba(57,255,106,.65),0 0 28px rgba(57,255,106,.35)}
body.p-linux h2,body.p-linux h3{font-family:var(--mono);font-weight:700;letter-spacing:-.02em}
body.p-linux h2{text-shadow:0 0 14px rgba(57,255,106,.35)}
body.p-linux h2::before{content:"# ";color:var(--accent)}
body.p-linux .eyebrow::before{content:"> "}
body.p-linux .eyebrow::after{content:"_";animation:blink 1s steps(1) infinite}
body.p-linux .lead{font-size:16.5px;line-height:1.75}
body.p-linux .card,body.p-linux .stat{background:linear-gradient(180deg,rgba(10,30,14,.9),rgba(4,12,6,.9));border:1px solid #1f5a2c;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(57,255,106,.05),0 0 0 rgba(57,255,106,0);transition:box-shadow .25s,border-color .25s}
body.p-linux .card:hover,body.p-linux .stat:hover{border-color:var(--accent);box-shadow:0 0 22px rgba(57,255,106,.18)}
body.p-linux .card h3{font-size:17px}
body.p-linux .card h3::before{content:"./";color:var(--accent);margin-right:2px}
body.p-linux .chip{border-radius:3px;background:transparent;border-color:#1f5a2c;font-family:var(--mono);font-size:13.5px}
body.p-linux .chip:hover{background:rgba(57,255,106,.08);box-shadow:0 0 12px rgba(57,255,106,.2)}
body.p-linux .filters button{border-radius:3px;font-family:var(--mono)}
body.p-linux .filters button.on{background:var(--accent);color:var(--accent-ink)}
body.p-linux .ph{border-radius:4px}
body.p-linux .ph.empty{background:repeating-linear-gradient(0deg,#041006 0 3px,#071a0b 3px 6px);border-color:#1f5a2c}
body.p-linux a.auto{text-decoration-color:rgba(57,255,106,.55)}
body.p-linux .site-header{background:rgba(3,8,3,.85);border-color:#15391e}
body.p-linux .brand{font-family:var(--mono);font-size:16px}
body.p-linux .menu a[aria-current="page"]{background:rgba(57,255,106,.1);color:var(--accent)}
body.p-linux .term{border-color:#1f5a2c;box-shadow:0 0 40px rgba(57,255,106,.12),0 30px 80px rgba(0,0,0,.5)}
body.p-linux .page-hero{position:relative;isolation:isolate;overflow:hidden}
canvas.matrix{position:absolute;inset:0;width:100%;height:100%;z-index:-1;opacity:.22;pointer-events:none;
  -webkit-mask-image:linear-gradient(180deg,#000 40%,transparent);mask-image:linear-gradient(180deg,#000 40%,transparent)}

/* =====================================================================
   CINÉMA — salle rouge, rideau, marquise
   ===================================================================== */
body.p-cinema{
  --bg:#12060a;--bg2:#1d0a0f;--card:#200b11;--ink:#f6e8d8;--muted:#c49d90;--line:#3e1822;
  --accent:#e2b65b;--accent-ink:#1a0a00;
  background:radial-gradient(ellipse 80% 50% at 50% -5%,rgba(193,18,31,.38),transparent 70%),var(--bg);
}
body.p-cinema h1,body.p-cinema h2{font-family:"Playfair Display",var(--serif);font-weight:700}
body.p-cinema .site-header{background:rgba(18,6,10,.86);border-color:#3e1822}
body.p-cinema .menu a[aria-current="page"]{background:#3a0d16;color:#ffd98a}
/* La scène */
.stage{position:relative;border-radius:18px;overflow:hidden;background:#000;box-shadow:0 30px 80px rgba(0,0,0,.6),0 0 0 1px #3e1822}
.stage .projector{border:0;border-radius:0;min-height:440px}
.stage .projector .cap h2{font-family:"Limelight","Playfair Display",serif;font-weight:400;color:#ffd98a;text-shadow:0 0 18px rgba(255,190,90,.45)}
.stage .projector::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 35%,rgba(255,240,210,.12),transparent 60%);pointer-events:none}
.valance{position:absolute;top:0;left:0;right:0;height:46px;z-index:5;
  background:linear-gradient(180deg,#5a0610,#9b1020 60%,#7a0b18);box-shadow:0 6px 18px rgba(0,0,0,.55)}
.valance::after{content:"";position:absolute;left:0;right:0;top:100%;height:22px;
  background:radial-gradient(circle at 50% 0,#7a0b18 0 19px,transparent 20px) 0 0/44px 22px repeat-x}
.valance::before{content:"";position:absolute;left:0;right:0;bottom:4px;height:3px;background:linear-gradient(90deg,#8a6420,#ffd98a,#8a6420);opacity:.8}
.curtain{position:absolute;top:0;bottom:0;width:51%;z-index:4;
  background:
    linear-gradient(180deg,rgba(0,0,0,.25),transparent 30%,transparent 75%,rgba(0,0,0,.45)),
    repeating-linear-gradient(90deg,#4a0710 0,#7d0c19 2.2%,#b8152a 4%,#d72339 4.6%,#b8152a 5.4%,#7d0c19 7.4%,#4a0710 9%);
  transition:transform 2.4s cubic-bezier(.65,.02,.25,1);box-shadow:inset 0 0 40px rgba(0,0,0,.5)}
.curtain.left{left:0;transform-origin:left center}
.curtain.right{right:0;transform-origin:right center}
.stage.open .curtain{transform:scaleX(.13)}
.stage .grain{z-index:2}
/* Marquise à ampoules + tickets */
.marquee{position:relative;padding:22px;border-radius:20px;background:linear-gradient(180deg,#2a0d13,#1a070c)}
.marquee::before{content:"";position:absolute;inset:7px;border-radius:15px;border:5px dotted #ffd98a;filter:drop-shadow(0 0 4px rgba(255,200,110,.9));animation:bulbs 1.4s steps(1) infinite;pointer-events:none}
@keyframes bulbs{50%{border-color:#a8843f;filter:none}}
body.p-cinema .marquee .stat{background:#f4e4c4;color:#3a0f12;border:0;border-radius:6px;text-align:center;
  -webkit-mask:radial-gradient(circle at 0 50%,transparent 11px,#000 12px) left/51% 100% no-repeat,radial-gradient(circle at 100% 50%,transparent 11px,#000 12px) right/51% 100% no-repeat;
          mask:radial-gradient(circle at 0 50%,transparent 11px,#000 12px) left/51% 100% no-repeat,radial-gradient(circle at 100% 50%,transparent 11px,#000 12px) right/51% 100% no-repeat}
body.p-cinema .marquee .stat b{color:#8f0d1c;font-family:"Playfair Display",serif}
body.p-cinema .marquee .stat span{color:#6b3a2c;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
body.p-cinema .film-face.front{box-shadow:0 0 0 1px #6b4a1c,0 12px 30px rgba(0,0,0,.5)}
body.p-cinema .film-back{border-color:#6b4a1c;background:linear-gradient(180deg,#2a0d13,#160609)}
body.p-cinema .btn.primary{background:#c1121f;border-color:#c1121f;color:#fff}
body.p-cinema .filters button.on{background:#c1121f;border-color:#c1121f;color:#fff}
body.p-cinema .ph.empty{background:repeating-linear-gradient(90deg,#1d0a0f 0 14px,#26101a 14px 28px)}
body.p-cinema .eyebrow{color:#ffd98a}

/* =====================================================================
   AVIATION — ciel bleu, aéré (et vol de nuit)
   ===================================================================== */
body.p-aviation{
  --bg:#f4f9ff;--bg2:#e6f1fc;--card:#ffffff;--ink:#0f2a44;--muted:#587190;--line:#d7e5f4;
  --accent:#1f7ae0;--accent-ink:#ffffff;
  background:linear-gradient(180deg,#8ccaff 0,#cbe7ff 560px,#eef6ff 1100px,#f7fbff 1600px);
  font-family:"Manrope",var(--sans);
}
body.p-aviation h1,body.p-aviation h2,body.p-aviation h3{font-family:"Manrope",var(--sans);letter-spacing:-.03em}
body.p-aviation h1{font-weight:300;font-size:clamp(46px,7.5vw,92px)}
body.p-aviation h2{font-weight:300}
body.p-aviation h1 b,body.p-aviation h2 b{font-weight:700}
body.p-aviation section{padding:104px 0}
body.p-aviation .page-hero{position:relative;isolation:isolate;overflow:hidden;padding:110px 0 70px}
body.p-aviation .site-header{background:rgba(220,238,255,.55);border-color:rgba(255,255,255,.6)}
body.p-aviation .menu a[aria-current="page"]{background:#fff;color:var(--accent)}
body.p-aviation .card,body.p-aviation .stat,body.p-aviation .steps li,body.p-aviation .table-wrap,body.p-aviation .metar,body.p-aviation .vtable div{
  border-color:#e1ecf8;box-shadow:0 10px 34px rgba(31,122,224,.08)}
body.p-aviation .stat,body.p-aviation .steps li{border-radius:18px}
body.p-aviation .ph{border-radius:24px}
body.p-aviation .ph.empty{background:linear-gradient(180deg,#d9ecff,#f3f9ff);border:1px dashed #b9d4f0}
body.p-aviation .table-wrap table{background:#fff}
body.p-aviation th{background:#f1f7fe}
body.p-aviation .panel{box-shadow:0 30px 70px rgba(15,42,68,.25)}
body.p-aviation .eyebrow{color:#1f7ae0}
.sky{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.cloud{position:absolute;width:var(--w,220px);height:calc(var(--w,220px)*.28);background:#fff;border-radius:999px;opacity:var(--o,.9);
  filter:blur(1.5px);animation:drift var(--d,90s) linear infinite;animation-delay:var(--dl,0s)}
.cloud::before,.cloud::after{content:"";position:absolute;background:#fff;border-radius:50%}
.cloud::before{width:45%;height:160%;left:14%;bottom:20%}
.cloud::after{width:34%;height:120%;right:16%;bottom:28%}
@keyframes drift{from{transform:translateX(-30vw)}to{transform:translateX(130vw)}}
.plane-fly svg{width:64px;display:block}
.plane-fly{position:absolute;top:18%;left:0;width:64px;animation:fly 26s linear infinite;animation-delay:2s;opacity:0}
.plane-fly::after{content:"";position:absolute;right:58px;top:13px;width:260px;height:3px;border-radius:3px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95))}
@keyframes fly{0%{transform:translate(-120px,40px);opacity:0}4%{opacity:1}60%{transform:translate(110vw,-30px);opacity:1}61%,100%{opacity:0;transform:translate(110vw,-30px)}}
/* Vol de nuit */
body.p-aviation.nuit{
  --bg:#071226;--bg2:#0c1b36;--card:#0f2140;--ink:#e6f0ff;--muted:#8aa3c4;--line:#1d3358;--accent:#6fb3ff;--accent-ink:#04101f;
  background:radial-gradient(1px 1px at 20% 12%,#fff,transparent),radial-gradient(1px 1px at 70% 8%,#fff,transparent),radial-gradient(1.5px 1.5px at 85% 22%,#fff,transparent),
    radial-gradient(1px 1px at 40% 28%,#cfe,transparent),radial-gradient(1px 1px at 55% 16%,#fff,transparent),radial-gradient(1.2px 1.2px at 10% 30%,#fff,transparent),
    linear-gradient(180deg,#030816 0,#0a1a3a 600px,#071226 1200px)}
body.p-aviation.nuit .site-header{background:rgba(7,18,38,.7);border-color:#1d3358}
body.p-aviation.nuit .menu a[aria-current="page"]{background:#12284b}
body.p-aviation.nuit .cloud{--o:.08!important}
body.p-aviation.nuit .ph.empty{background:linear-gradient(180deg,#0f2140,#0a1730);border-color:#1d3358}
body.p-aviation.nuit .table-wrap table{background:var(--card)}
body.p-aviation.nuit th{background:var(--bg2)}
body.p-aviation.nuit .eyebrow{color:var(--accent)}
body.p-aviation.nuit .plane-fly::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.25))}

/* =====================================================================
   PARCOURS — bleu marine, sobre, façon CV
   ===================================================================== */
body.p-parcours{
  --bg:#f3f5f9;--bg2:#e8edf5;--card:#ffffff;--ink:#14213d;--muted:#56637a;--line:#dce3ee;
  --accent:#2c5bd6;--accent-ink:#ffffff;--navy:#0f1d3a;
  font-family:"Montserrat",var(--sans);font-size:15.5px;
}
body.p-parcours h1,body.p-parcours h2,body.p-parcours h3{font-family:"Montserrat",var(--sans);letter-spacing:-.02em}
body.p-parcours h1{font-weight:700}
body.p-parcours h2{font-weight:700}
body.p-parcours .site-header{background:var(--navy);border-color:#1c2d52}
body.p-parcours .brand{color:#fff;font-family:"Montserrat",sans-serif;font-weight:700}
body.p-parcours .brand span{color:#8fb0ff}
body.p-parcours .menu a{color:#b9c6df}
body.p-parcours .menu a:hover{background:#1a2b52;color:#fff}
body.p-parcours .menu a[aria-current="page"]{background:#1f3566;color:#fff}
body.p-parcours .icon-btn{background:#1a2b52;border-color:#2a3f6e;color:#fff}
@media (max-width:860px){ body.p-parcours .menu{background:var(--navy)} }
.cv-hero{background:linear-gradient(135deg,#0f1d3a 0,#16295a 100%);color:#fff;padding:70px 0 60px;position:relative;overflow:hidden}
.cv-hero::after{content:"";position:absolute;right:-120px;top:-120px;width:420px;height:420px;border-radius:50%;border:60px solid rgba(91,140,255,.08)}
.cv-hero .wrap{display:grid;grid-template-columns:auto 1fr;gap:40px;align-items:center}
.cv-hero .ph{width:170px;height:170px;border-radius:50%;border:5px solid rgba(255,255,255,.15)}
.cv-hero .ph img{object-position:center 20%}
.cv-hero h1{font-size:clamp(36px,5vw,56px);color:#fff}
.cv-hero .role{font-weight:600;color:#8fb0ff;margin-top:6px;font-size:18px}
.cv-hero .lead{color:#c8d3ea;margin-top:16px;font-size:16.5px;max-width:70ch}
.cv-hero .meta{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:20px;font-size:14px;color:#c8d3ea}
.cv-hero .meta a{color:#fff;text-decoration:underline;text-decoration-color:rgba(143,176,255,.6);text-underline-offset:3px}
.cv-hero a.auto{color:#fff}
@media (max-width:700px){ .cv-hero .wrap{grid-template-columns:1fr} .cv-hero .ph{width:120px;height:120px} }
body.p-parcours .tabs button{border-radius:8px;font-family:"Montserrat",sans-serif;font-weight:600}
body.p-parcours .tabs button.on{background:var(--navy);border-color:var(--navy);color:#fff}
body.p-parcours .tl,body.p-parcours .card{box-shadow:0 4px 18px rgba(15,29,58,.06);border-radius:10px}
body.p-parcours .tl h3{font-family:"Montserrat",sans-serif;font-weight:700}
body.p-parcours .tl .org{color:var(--accent);font-weight:600}
body.p-parcours .lang .bar i{background:linear-gradient(90deg,#2c5bd6,#5b8cff)}
body.p-parcours .contact-box{background:var(--navy);border-color:var(--navy);color:#fff}
body.p-parcours .contact-box h2{color:#fff}
body.p-parcours .contact-box dt{color:#8fa3c8}
body.p-parcours .contact-box dd,body.p-parcours .contact-box a{color:#fff}
body.p-parcours .contact-box .eyebrow{color:#8fb0ff}
body.p-parcours .site-footer{background:var(--navy);color:#8fa3c8;border-color:#1c2d52}
body.p-parcours .site-footer kbd{background:#1a2b52;border-color:#2a3f6e;color:#fff}

/* Bouton de thème : seulement sur l'accueil (clair/sombre) et l'aviation (jour/nuit) */


@media (prefers-reduced-motion:reduce){ .curtain{transition:none} .cloud,.plane-fly{animation:none} }
.stage .projector .cap{padding-left:11%;padding-right:11%}
body.p-aviation .stat b,body.p-aviation .gauge .center b,body.p-aviation .vtable b{font-family:"Manrope",var(--sans);font-weight:300;letter-spacing:-.03em}
body.p-parcours .stat b{font-family:"Montserrat",var(--sans)}
body.p-linux .stat b,body.p-linux .gauge .center b{font-family:var(--mono)}
@media (max-width:700px){ .stage .projector{min-height:360px} .stage .projector .cap{padding:24px 14%} .valance{height:34px} }
.passion.aviation .tag{color:#fff;text-shadow:0 1px 6px rgba(6,28,58,.6)}

/* ---- Cinéma : affiches générées, filmothèque ---- */
.poster-gen{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:14px 12px;text-align:center;
  background:radial-gradient(ellipse at 50% 0,hsl(var(--h) var(--s) calc(var(--l) + 14%)),hsl(var(--h) var(--s) var(--l)) 60%,hsl(var(--h) var(--s) calc(var(--l) - 10%)));
  border:1px solid rgba(255,217,138,.35);border-radius:12px;color:#f6e8d8;overflow:hidden}
.poster-gen::before{content:"";position:absolute;inset:6px;border:1px solid rgba(255,217,138,.25);border-radius:8px;pointer-events:none}
.poster-gen b{font:700 clamp(15px,1.4vw,19px)/1.15 "Playfair Display",var(--serif);text-wrap:balance;margin:auto 0}
.poster-gen .pg-top{font:600 12px var(--mono);letter-spacing:.3em;color:#ffd98a}
.poster-gen .pg-bot{font:11px var(--mono);color:#e7cdb4;opacity:.8;min-height:1em}
body.p-cinema .film .ph.empty,.film .ph.empty{background:none;border:0}
.film .ph.empty::after{content:none}
.film-face.front .ph{position:relative;z-index:1}
.film-back .vu{font:12px var(--mono);color:var(--accent)}
.decades{display:flex;align-items:flex-end;gap:8px;height:220px;padding:16px 4px 0;border-bottom:1px solid var(--line)}
.dec{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;background:none;border:0;cursor:pointer;color:var(--muted);font:inherit;gap:6px}
.dec .bar{display:block;height:calc(var(--v) * 85% + 3px);min-height:3px;border-radius:6px 6px 0 0;background:linear-gradient(180deg,#e2b65b,#8f0d1c);position:relative;transition:filter .2s,transform .2s;transform-origin:bottom}
.dec .bar i{position:absolute;top:-20px;left:0;right:0;text-align:center;font:normal 600 12px var(--mono);color:var(--ink)}
.dec small{font:12px var(--mono);text-align:center;padding-bottom:6px}
.dec:hover .bar{filter:brightness(1.25)}
.dec.on .bar{background:linear-gradient(180deg,#ffd98a,#c1121f);box-shadow:0 0 18px rgba(255,200,110,.45)}
.dec.on small{color:#ffd98a}
.lib-tools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:26px}
.lib-tools input{background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:10px 12px;font:14px var(--sans);min-width:260px}
#lib-pick a{color:#ffd98a}
.lib-count{font:13px var(--mono);color:var(--muted);margin:14px 0 10px}
.library{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px 18px}
.library a{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px dashed var(--line);color:var(--ink);font-size:14.5px;border-radius:6px}
.library a:hover{background:var(--card);text-decoration:none;color:#ffd98a}
.library small{font:12px var(--mono);color:var(--muted)}
.passion .ph.empty::after{content:none}
.stat.club{display:flex;align-items:center;gap:14px}
.stat.club img{width:54px;height:auto;flex:none}
.gallery .ph:only-child{grid-row:span 2;max-width:340px}
.gallery figcaption{font-size:12.5px}
.passion.cinema .tag{color:#ffd98a}
.dec small{font-size:11px}
@media (max-width:700px){ .dec small{font-size:9px;writing-mode:vertical-rl;transform:rotate(180deg)} .decades{gap:4px} }
.pcredit{position:absolute;top:10px;right:12px;font:10.5px var(--mono);color:rgba(255,255,255,.55);z-index:1}
.passion.linux .ph img{object-position:top;filter:saturate(1.2) hue-rotate(-10deg) brightness(.9)}
.metar-photo{margin-top:26px;aspect-ratio:16/9}
.metar-photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 10px;background:linear-gradient(transparent,rgba(6,28,58,.75));color:#fff;font:12px var(--mono)}

/* ---- Parcours : logos des organisations ---- */
.tl .who{display:flex;gap:14px;align-items:flex-start}
.org-logo{flex:none;width:48px;height:48px;border-radius:10px;display:grid;place-items:center;overflow:hidden;
  background:#fff;border:1px solid var(--line);font:700 13px "Montserrat",var(--sans);color:#fff;letter-spacing:.02em}
.org-logo.img img{width:100%;height:100%;object-fit:contain;padding:5px}
.org-logo.mono,.org-logo:not(.img){background:linear-gradient(135deg,#1f3566,#2c5bd6);border-color:transparent}
.org-logo.img{background:#fff}

/* ---- Téléphone : clic = copie ---- */
button.tel{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:copy;text-decoration:underline dotted;text-underline-offset:3px}
button.tel:hover{color:var(--accent)}
button.tel::after{content:" ⧉";font-size:.8em;opacity:.6}
.cv-hero button.tel{color:#fff}

/* ---- Parcours : mode sombre ---- */
body.p-parcours.sombre{
  --bg:#0a1222;--bg2:#101b31;--card:#121f38;--ink:#e6ecf7;--muted:#93a3bf;--line:#22314f;--accent:#7aa2ff;--accent-ink:#06101f;--navy:#060d1a}
body.p-parcours.sombre .cv-hero{background:linear-gradient(135deg,#060d1a,#0f1d3a)}
body.p-parcours.sombre .tl,body.p-parcours.sombre .card{box-shadow:0 4px 18px rgba(0,0,0,.35)}
body.p-parcours.sombre .tabs button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
body.p-parcours.sombre .contact-box{background:#060d1a;border-color:#22314f}
body.p-parcours.sombre .org-logo.img{background:#e9eef8}

/* =====================================================================
   SOBRIÉTÉ — moins de décor générique
   ===================================================================== */
.section-head{display:block;margin-bottom:28px}
.section-head p{margin-top:12px;max-width:62ch}
.reveal{opacity:1!important;transform:none!important;transition:none!important}
.btn:hover,.chip:hover{transform:none}
.gallery .ph:hover img{transform:none}

/* Linux : le setup comme un fichier de config, pas des cartes */
body.p-linux #setup{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:0 40px;border-top:1px solid #1f5a2c}
body.p-linux #setup .stat{background:none;border:0;border-bottom:1px dashed #1f5a2c;border-radius:0;box-shadow:none;padding:14px 0;display:flex;justify-content:space-between;align-items:baseline;gap:16px}
body.p-linux #setup .stat span::after{content:" ="}
body.p-linux #setup .stat b{margin:0}
body.p-linux .cards{gap:36px}
body.p-linux .cards .card{background:none;border:0;border-left:2px solid var(--accent);border-radius:0;box-shadow:none;padding:2px 0 2px 18px}
body.p-linux .cards .card:hover{box-shadow:none}
body.p-linux .card h3::before{content:none}

/* Aviation : les totaux comme le bas d'une page de carnet de vol */
body.p-aviation #vol-stats{display:flex;flex-wrap:wrap;gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
body.p-aviation #vol-stats .stat{flex:1 1 160px;background:none;border:0;border-right:1px solid var(--line);border-radius:0;box-shadow:none;padding:18px 22px}
body.p-aviation #vol-stats .stat:last-child{border-right:0}

/* ---- Rideau v2 : plis souples, ouverture fluide ---- */
.curtain{background:none!important;box-shadow:none;display:flex;width:50.5%;transform:none!important;
  transition:width 3s cubic-bezier(.62,0,.22,1);will-change:width;filter:drop-shadow(0 0 22px rgba(0,0,0,.65))}
.curtain.right{flex-direction:row-reverse}
.curtain::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,0,0,.45),rgba(0,0,0,0) 22%,rgba(0,0,0,0) 72%,rgba(0,0,0,.55))}
.fold{flex:1 1 0;min-width:0;transform-origin:50% 0;
  background:linear-gradient(90deg,#33030a 0%,#6e0916 18%,#a8132a 40%,#cf2a40 50%,#a8132a 60%,#6e0916 82%,#33030a 100%)}
.stage.open .curtain{width:7%}
.stage.open .fold{animation:sway 3.2s cubic-bezier(.3,.2,.2,1) calc(var(--i) * 45ms) both}
.stage.open .curtain.right .fold{animation-name:sway-r}
@keyframes sway{0%{transform:skewX(0)}35%{transform:skewX(-4deg)}65%{transform:skewX(1.6deg)}100%{transform:skewX(0)}}
@keyframes sway-r{0%{transform:skewX(0)}35%{transform:skewX(4deg)}65%{transform:skewX(-1.6deg)}100%{transform:skewX(0)}}
.valance{height:40px;background:linear-gradient(180deg,#4a050f,#8e0d1f 70%,#76091a)}
.valance::after{height:26px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='26' viewBox='0 0 90 26'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%2376091a'/%3E%3Cstop offset='1' stop-color='%23560612'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 0H90V3C78 27 57 27 45 6C33 27 12 27 0 3Z' fill='url(%23g)'/%3E%3C/svg%3E") 0 0/90px 26px repeat-x}
.valance::before{bottom:2px;height:2px;opacity:.65}
@media (prefers-reduced-motion:reduce){ .curtain{transition:none} .stage.open .fold{animation:none} }

/* ---- Transition de thème (View Transitions) ---- */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
::view-transition-new(root){z-index:2}
html.vt-run *{transition:none!important}
body.p-aviation .vtable{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0;border-top:1px solid var(--line)}
body.p-aviation .vtable div{background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;padding:12px 8px 12px 0}

.tl .who .org-logo + .org-logo{margin-left:-6px}
.org-logo.full.img img{padding:0;object-fit:cover}
.org-logo.dark.img{background:#1b1b1d}
.org-logo{width:52px;height:52px}

/* ---- Logo Notre-Dame : cadrer sur l'emblème (le SVG contient le texte en bas) ---- */
.org-logo[data-mono="ND"].img img{object-fit:cover;object-position:50% 0;padding:3px 3px 0}

/* ---- Cartes de films : le recto ne doit jamais traverser le verso ---- */
.film-inner{transform-style:preserve-3d}
.film-face{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:rotateY(0deg)}
.film-face.film-back{transform:rotateY(180deg);z-index:2}
.film-face.front,.film-face.front *{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.film-face.front .ph,.film-face.front img{transform:none!important;transition:none!important}
.film.flip .film-face.front{visibility:hidden;transition:visibility 0s .35s}
.film .film-face.front{transition:visibility 0s .35s}
.fetch{font-size:1em}

/* Icône « copier » dessinée en SVG (le caractère ⧉ manque dans beaucoup de polices) */
button.tel::after{content:"";display:inline-block;width:.85em;height:.85em;margin-left:.4em;vertical-align:-.08em;opacity:.65;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2'/%3E%3Cpath d='M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='9' width='12' height='12' rx='2'/%3E%3Cpath d='M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1'/%3E%3C/svg%3E") center/contain no-repeat}
button.tel:hover::after{opacity:1}

/* ---- Thème du terminal par page ---- */
body.p-cinema{--t-bg:#170609;--t-bar:#2a0d13;--t-border:#4a1a22;--t-fg:#f3e2cf;--t-title:#c49d90;--t-pr:#e2b65b;--t-pa:#ff8a73;--t-hl:#ffd98a;--t-dim:#9a7469;--t-err:#ff6b6b}
body.p-aviation{--t-bg:#0b1a2e;--t-bar:#12263f;--t-border:#1d3a5c;--t-fg:#dbe8f7;--t-title:#7d93ad;--t-pr:#6fd1a0;--t-pa:#6fb3ff;--t-hl:#ffd166;--t-dim:#7d93ad;--t-err:#ff7b7b}
body.p-parcours{--t-bg:#0f1d3a;--t-bar:#16295a;--t-border:#25407a;--t-fg:#e6ecf7;--t-title:#8fa3c8;--t-pr:#8fb0ff;--t-pa:#7ad0c6;--t-hl:#ffd27a;--t-dim:#8fa3c8;--t-err:#ff8080}
body.p-home{--t-bg:#2e3440;--t-bar:#3b4252;--t-border:#434c5e;--t-fg:#d8dee9;--t-title:#9aa5b8;--t-pr:#a3be8c;--t-pa:#81a1c1;--t-hl:#88c0d0;--t-dim:#7b88a1;--t-err:#bf616a}
body.p-cinema .pal i:nth-child(1){color:#8f0d1c}body.p-cinema .pal i:nth-child(2){color:#c1121f}body.p-cinema .pal i:nth-child(3){color:#e57a5a}body.p-cinema .pal i:nth-child(4){color:#e2b65b}
body.p-cinema .pal i:nth-child(5){color:#ffd98a}body.p-cinema .pal i:nth-child(6){color:#f4e4c4}body.p-cinema .pal i:nth-child(7){color:#6b3a2c}body.p-cinema .pal i:nth-child(8){color:#f6e8d8}
body.p-home .pal i:nth-child(1){color:#bf616a}body.p-home .pal i:nth-child(2){color:#d08770}body.p-home .pal i:nth-child(3){color:#ebcb8b}body.p-home .pal i:nth-child(4){color:#a3be8c}
body.p-home .pal i:nth-child(5){color:#8fbcbb}body.p-home .pal i:nth-child(6){color:#88c0d0}body.p-home .pal i:nth-child(7){color:#81a1c1}body.p-home .pal i:nth-child(8){color:#b48ead}

/* Icône du bouton de thème */
#theme-btn svg{width:17px;height:17px;display:block}
/* Logos des organisations : fichiers nets et détourés (fond transparent), posés sur une tuile claire unie */
.org-logo.img{background:#fff}
body.p-parcours.sombre .org-logo.img{background:#f1f4f9;box-shadow:0 0 0 1px rgba(255,255,255,.12)}
.org-logo.img img{padding:3px}
.org-logo.full.img img{padding:0}
