/* main.css — Liquid glass d'origine (vitre navy, reflets, Fraunces/Inter) + motifs φ */
:root{--bg:#070A12;--surface:#0F172A;--surface2:#1a2440;--navy:#0F172A;--accent:#38BDF8;--accent2:#2DD4BF;--btn:#38BDF8;--btn-hover:#0EA5E9;--btn-ink:#fff;--ink:#E5E7EB;--muted:#94A3B8;--line:rgba(255,255,255,.08)}
*{box-sizing:border-box}html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}}
body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.65}
code,pre,.mono{font-family:ui-monospace,Menlo,Consolas,monospace}
.font-display,h1,.serif{font-family:Fraunces,Georgia,'Times New Roman',serif;font-weight:600;letter-spacing:-.01em}
.bg{position:fixed;inset:0;z-index:-2;background:radial-gradient(1200px 800px at 15% 10%, rgba(56,189,248,.12), transparent 60%),radial-gradient(1000px 700px at 85% 15%, rgba(45,212,191,.10), transparent 60%),linear-gradient(180deg,#070A12 0%,#0B1220 55%,#070A12 100%)}
.bg::before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(700px 500px at 50% 95%, rgba(56,189,248,.06), transparent 70%),repeating-radial-gradient(circle at 85% 8%, transparent 0 79px, var(--line) 79px 80px, transparent 80px 129px, var(--line) 129px 130px, transparent 130px 209px);filter:blur(.5px)}
/* Liquid glass d'origine : vitre navy floue, reflet haut, ombre profonde */
.glass{position:relative;background:linear-gradient(135deg, rgba(17,24,39,0.88), rgba(15,23,42,0.72));backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%);border:1px solid rgba(255,255,255,.08);border-radius:22px;box-shadow:0 10px 36px rgba(0,0,0,.45), 0 1px 0 rgba(255,255,255,.06) inset;overflow:hidden}
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg, rgba(255,255,255,.06) 0%, rgba(255,255,255,0) 50%);pointer-events:none}
.glass > *{position:relative;z-index:1}
header.hero{max-width:1080px;margin:28px auto 0;padding:44px 34px}
@media(max-width:640px){header.hero{padding:28px 18px;margin:14px auto 0}}
.eyebrow{font-size:11px;font-weight:800;letter-spacing:.22em;color:var(--accent);margin:0 0 14px}
h1{margin:0;font-size:clamp(34px,5.4vw,58px);line-height:1.04;color:var(--ink)}
h2,h3{color:var(--ink)}
.lede{margin:18px 0 0;max-width:640px;font-size:16px;color:var(--muted)}
.desc{margin:14px 0 0;max-width:760px;color:var(--muted);font-size:14px}
.badge{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;font-size:12px;font-weight:800;color:var(--ink);background:rgba(127,127,127,.12);backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:0 4px 14px rgba(0,0,0,.25)}
.badge i{width:8px;height:8px;background:#10B981;border-radius:50%;box-shadow:0 0 10px rgba(16,185,129,.7)}
.cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:24px}
/* Boutons d'origine : primaire dégradé, vitre, survol relevé */
.btn{appearance:none;border:none;cursor:pointer;padding:12px 20px;border-radius:12px;font-weight:850;font-size:13px;font-family:inherit;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .14s, box-shadow .14s;min-height:44px}
.btn:active{transform:translateY(1px)}
.btn.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:0 8px 20px rgba(0,0,0,.25);font-weight:900}
.btn.glass{background:rgba(127,127,127,.12);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:var(--ink);border:1px solid var(--line);box-shadow:0 4px 16px rgba(0,0,0,.2)}
.btn.glass:hover{background:rgba(127,127,127,.2)}
.btn:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(0,0,0,.25)}
.btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.btn.secondary{background:rgba(255,255,255,.7);color:var(--navy);border:1px solid rgba(15,23,42,.12)}
.meta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px;font-size:12px;color:var(--muted);font-weight:700}
/* Barre de navigation flottante : ne coupe plus la page en deux */
nav.sticky{position:sticky;top:14px;z-index:10;max-width:1080px;margin:18px auto;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;min-height:48px;background:var(--surface);border:1px solid var(--line);border-radius:12px}
nav.sticky a{font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
nav.sticky a.link{padding:10px 12px;border-radius:8px}
nav.sticky a.link:hover{background:var(--surface2);color:var(--accent)}
nav.sticky a:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.wrap{max-width:1080px;margin:0 auto;padding:20px 24px 40px}
@media(max-width:640px){.wrap{padding:16px 12px 32px}}
.grid3{display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:880px){.grid3{grid-template-columns:1fr 1fr 1fr}}
.card{padding:26px}
.card h2{margin:6px 0 8px;font-size:clamp(22px,3vw,30px);color:var(--ink);font-family:Fraunces,Georgia,serif;font-weight:600;letter-spacing:-.01em}
.card h2 span.icon{width:28px;height:28px;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-family:Inter,system-ui,sans-serif}
.card h3{margin:10px 0 6px;font-size:19px;color:var(--ink);font-family:Fraunces,Georgia,serif;font-weight:600}
.meta{color:var(--muted);font-size:12px;line-height:1.5}
.pills{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.pill{font-size:11px;font-weight:800;background:rgba(127,127,127,.10);color:var(--ink);padding:5px 9px;border-radius:999px;border:1px solid var(--line)}
.num{font-family:Fraunces,Georgia,serif;font-size:13px;font-weight:700;color:var(--accent);letter-spacing:.14em}
ul{margin:8px 0 0 18px;padding:0}
li{margin:4px 0;font-size:13.5px;color:var(--ink)}
.step{display:grid;grid-template-columns:52px 1fr;gap:14px;padding:14px 0;border-top:1px solid var(--line)}
.step:first-of-type{border-top:none}
.step .n{font-family:Fraunces,Georgia,serif;font-size:15px;font-weight:700;color:var(--accent)}
.step strong{color:var(--ink)}
.step p{margin:4px 0 0;font-size:13.5px;color:var(--muted)}
footer{text-align:center;color:var(--muted);font-size:12px;padding:28px;border-top:1px solid var(--line);margin-top:20px}
footer .cta-title{font-family:Fraunces,Georgia,serif;font-size:clamp(24px,3.4vw,36px);color:var(--ink);margin:0 0 8px;font-weight:600}
footer a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.kv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}
@media(min-width:880px){.kv-grid{grid-template-columns:repeat(3,1fr)}}
.kv{display:flex;gap:10px;align-items:center;background:rgba(127,127,127,.08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.kv-n{font-family:Fraunces,Georgia,serif;font-weight:700;font-size:20px;color:var(--accent);min-width:52px}
.kv-l{font-size:12px;color:var(--muted);font-weight:700;line-height:1.4}
.job{border-top:1px solid var(--line);padding:14px 0}
.job:first-of-type{border-top:none}
.job-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;align-items:baseline}
.job-head strong{color:var(--ink);font-size:14px}
.job-date{font-size:12px;color:var(--accent);font-weight:800}
.skill-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:14px}
@media(min-width:880px){.skill-grid{grid-template-columns:1fr 1fr}}
.skill{background:rgba(127,127,127,.07);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:14px;padding:14px}
.skill h3{margin:0 0 6px;font-size:14px;font-family:Inter,system-ui,sans-serif;font-weight:800;border-left:3px solid var(--accent);padding-left:8px}
.skill p{margin:6px 0;font-size:13px;color:var(--ink)}
.skill .meta{font-size:11.5px}
/* Portrait hero — composition au nombre d'or : anneau externe ≈ φ × portrait (214/132) */
header.hero{display:flex;gap:36px;align-items:center;flex-wrap:wrap}
.portrait-phi{position:relative;width:112px;height:112px;flex:none;margin:0 auto}
.portrait-phi::before{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid var(--accent);opacity:.4}
/* En-tête pro : identité à gauche, contrôles à droite */
.hero-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.identity{display:flex;align-items:center;gap:14px;min-width:0}
.identity-text{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}
.site-name{font-size:clamp(22px,3vw,28px);font-weight:600;letter-spacing:0;line-height:1.15;margin:0}
.hero-tools{display:flex;align-items:center;gap:10px}
.theme-dots{display:flex;gap:8px;align-items:center}
/* Portrait journal : petit, cliquable (lightbox), halo d'ondes contenu (ne déborde plus sur le nom) */
.portrait-inline{display:block;position:relative;width:78px;height:78px;flex:none;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));padding:3px;box-shadow:0 6px 16px rgba(0,0,0,.35);cursor:zoom-in;border:none;font:inherit}
.portrait-inline img{display:block;width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:center 35%}
.portrait-inline:hover img{box-shadow:0 0 0 3px var(--accent),0 0 24px var(--accent)}
.portrait-inline::before{content:"";position:absolute;inset:-11px;border-radius:50%;border:1px solid var(--accent);opacity:.55;pointer-events:none}
.portrait-inline::after{content:"";position:absolute;inset:0;border-radius:50%;border:1px solid var(--accent);opacity:0;pointer-events:none;animation:ripple-phi-calme 5s ease-out infinite}
@keyframes ripple{0%{transform:scale(1);opacity:.45}70%{opacity:.1}100%{transform:scale(1.45);opacity:0}}
/* Lightbox portrait */
.plb{position:fixed;inset:0;z-index:10000;display:grid;place-items:center}
.plb[hidden]{display:none}
.plb-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.82);cursor:zoom-out}
.plb-frame{position:relative;text-align:center;max-width:min(420px,90vw)}
.plb-frame img{width:min(360px,80vw);height:min(360px,80vw);border-radius:50%;object-fit:cover;object-position:center 30%;border:4px solid transparent;background:linear-gradient(135deg,var(--accent),var(--accent2)) border-box;box-shadow:0 0 80px var(--accent)}
.plb-frame .btn{margin-top:16px}
@media (prefers-reduced-motion: reduce){.portrait-inline::after{animation:none;display:none}}
.portrait-sm{width:164px;height:164px}
.portrait-sm .ring{width:108px;height:108px}
.portrait-sm img{width:100px;height:100px}
/* Mise en page journal : portrait flottant, texte justifié façon presse */
.article::after{content:"";display:block;clear:both}
.article p{text-align:justify;hyphens:auto}
.portrait-article{width:172px;height:172px;float:left;margin:8px 24px 16px 0}
.portrait-article .portrait-big,.portrait-article .portrait-big .ring{width:160px;height:160px}
.portrait-article .portrait-big .ring{padding:4px}
.portrait-article .portrait-big img{width:150px;height:150px}
.portrait-article::after{animation-name:ripple-phi-calme;border-width:1px}
@keyframes ripple-phi-calme{0%{transform:scale(.93);opacity:.4}70%{opacity:.1}100%{transform:scale(1.22);opacity:0}}
@media(max-width:640px){.portrait-article{float:none;margin:0 auto 18px}}
/* Grand bloc portrait (hero accueil) : anneau φ + onde contenue, cliquable */
.portrait-big{display:grid;place-items:center;background:none;border:none;padding:0;cursor:zoom-in;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100px;height:100px;border-radius:50%}
.portrait-big .ring{width:100px;height:100px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent2));padding:3px;box-shadow:0 8px 22px rgba(0,0,0,.4);display:grid;place-items:center}
.portrait-big img{display:block;width:94px;height:94px;border-radius:50%;object-fit:cover;object-position:center 35%}
.portrait-big:hover img{box-shadow:0 0 0 3px var(--accent),0 0 28px var(--accent)}
.portrait-phi::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--accent);opacity:0;pointer-events:none;animation:ripple-phi 4.5s ease-out infinite}
@keyframes ripple-phi{0%{transform:scale(.9);opacity:.5}70%{opacity:.12}100%{transform:scale(1.45);opacity:0}}
@media(max-width:640px){.portrait-phi{width:96px;height:96px}.portrait-big,.portrait-big .ring{width:84px;height:84px}.portrait-big img{width:78px;height:78px}.portrait-sm{width:130px;height:130px}.portrait-sm .ring{width:86px;height:86px}.portrait-sm img{width:78px;height:78px}}
/* Accessibilité : boutons thème 44px min */
.theme-btn{width:44px !important;height:44px !important;border-radius:50% !important;cursor:pointer;display:inline-grid;place-items:center}
@media(max-width:640px){.theme-btn{width:40px !important;height:40px !important}}
/* Focus visible global */
:focus{outline:none}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
