/* ============================================================
   PyreFolio — thème "Ember" (ambre sur fond sombre)
   ============================================================ */
* { box-sizing: border-box; }
body { font-family: 'Poppins', system-ui, sans-serif; }

:root {
    --pf-ink: #0b1020;
    --pf-ink-2: #131a30;
    --pf-card: #1a2238;
    --pf-line: rgba(255,255,255,.08);
    --pf-text: #e8ecf4;
    --pf-muted: #9aa3b8;
}

a { text-decoration: none; }
.pf-link { color: var(--pf-primary); }

/* Justification des paragraphes de prose (pas les titres/labels/chips) */
.pf-hero-tagline,
.pf-section > .container > p.text-muted,
.pf-project-body p,
.pf-methodo-card p,
.pf-tl-ctx,
.pf-case-accroche,
.pf-cs-chaprecit {
    text-align: justify;
    text-justify: inter-word;
    -webkit-hyphens: auto;
    hyphens: auto;
}

/* Boutons */
.pf-btn-primary {
    background: linear-gradient(135deg, var(--pf-primary), var(--pf-primary-dark));
    color: #1b1205; border: none; font-weight: 600; border-radius: 10px;
}
.pf-btn-primary:hover { color:#000; filter: brightness(1.05); }
.pf-btn-ghost {
    background: transparent; color: var(--pf-text);
    border: 1px solid var(--pf-line); border-radius: 10px; font-weight: 500;
}
.pf-btn-ghost:hover { border-color: var(--pf-primary); color: var(--pf-primary); }

/* Navbars */
.pf-navbar { background: var(--pf-ink-2); }
.pf-navbar-transparent { background: transparent; position: absolute; width: 100%; z-index: 10; }
.pf-brand-text { font-weight: 700; color: var(--pf-text); }
.pf-navbar .nav-link { color: var(--pf-muted); }
.pf-navbar .nav-link:hover { color: var(--pf-primary); }
.pf-avatar { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; }
.pf-avatar-initials { display:inline-flex; align-items:center; justify-content:center; background: var(--pf-primary); color:#1b1205; font-weight:700; }

/* ===== Landing ===== */
.pf-landing, .pf-portfolio { background: var(--pf-ink); color: var(--pf-text); }
/* Lisibilité : .text-muted de Bootstrap (gris foncé) est illisible sur fond sombre → tonalité claire */
.pf-portfolio .text-muted, .pf-landing .text-muted { color: #b3bbd0 !important; }
.pf-hero { padding: 120px 0 60px; background: radial-gradient(1200px 500px at 20% -10%, rgba(245,158,11,.18), transparent), var(--pf-ink); color: var(--pf-text); }
.min-vh-75 { min-height: 75vh; }
.pf-hero-badge { display:inline-block; padding:.4rem .9rem; border:1px solid var(--pf-line); border-radius: 999px; color: var(--pf-primary); font-size:.85rem; }
.pf-hero-title { font-size: clamp(2.2rem, 5vw, 3.6rem); font-weight: 800; line-height: 1.05; }
.pf-gradient-text { background: linear-gradient(135deg, var(--pf-primary), #fbbf24); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pf-hero-sub { color: var(--pf-muted); max-width: 560px; }
.pf-orb { width: 240px; height: 240px; border-radius: 50%; display:grid; place-items:center; font-size: 5.4rem; color:#fff;
    background: radial-gradient(circle at 30% 30%, var(--pf-primary), var(--pf-primary-dark)); box-shadow: 0 0 80px rgba(245,158,11,.5); animation: pf-float 5s ease-in-out infinite; }
.pf-orb i { filter: drop-shadow(0 6px 14px rgba(0,0,0,.30)); }
@keyframes pf-float { 0%,100%{ transform: translateY(0);} 50%{ transform: translateY(-16px);} }

/* Badges flottants autour de l'orbe (fonctionnalités) */
.pf-orb-wrap { position: relative; width: 300px; height: 300px; display:grid; place-items:center; }
.pf-orb-chip { position:absolute; width:58px; height:58px; border-radius:16px; display:grid; place-items:center;
    background: var(--pf-card); border:1px solid var(--pf-line); color: var(--pf-primary); font-size:1.4rem;
    box-shadow: 0 12px 30px rgba(0,0,0,.40); animation: pf-float 4.5s ease-in-out infinite; }
.pf-orb-chip-1 { top: 6%; left: 2%; animation-delay: 0s; }
.pf-orb-chip-2 { top: 18%; right: 0%; animation-delay: .6s; }
.pf-orb-chip-3 { bottom: 10%; left: 0%; animation-delay: 1.1s; }
.pf-orb-chip-4 { bottom: 2%; right: 8%; animation-delay: 1.6s; }
.pf-features { background: var(--pf-ink-2); }
.pf-feature-card { background: var(--pf-card); border:1px solid var(--pf-line); border-radius: 16px; padding: 1.5rem; }
.pf-feature-icon { width:48px;height:48px;border-radius:12px; display:grid;place-items:center; background: rgba(245,158,11,.15); color: var(--pf-primary); font-size:1.3rem; margin-bottom:1rem; }
.pf-feature-card h4 { color: var(--pf-text); font-size: 1.1rem; }
.pf-footer, .pf-pub-footer { background: var(--pf-ink-2); color: var(--pf-muted); }
.pf-pub-footer { padding: 2rem 0; }
.pf-pub-footer a { color: var(--pf-primary); }

/* ===== Dashboard (clair) ===== */
.pf-app { background: #f5f7fb; color: #1b2233; }
.pf-card { border:1px solid #e6e9f0; border-radius: 14px; }
.pf-public-url { color: var(--pf-primary-dark); font-weight:600; }
.pf-tile { background:#fff; border:1px solid #e6e9f0; border-radius:14px; padding:1.1rem; text-align:center; }
.pf-tile-n { font-size:1.8rem; font-weight:800; color: var(--pf-primary-dark); }
.pf-tile-l { color:#6b7280; font-size:.85rem; }
.pf-json { font-family: ui-monospace, "Cascadia Code", Consolas, monospace; font-size:.82rem; background:#0b1020; color:#e8ecf4; border-radius:10px; }

/* ===== Portfolio public ===== */
.pf-pub-topbar { position: sticky; top:0; z-index: 50; background: rgba(11,16,32,.85); backdrop-filter: blur(10px); border-bottom:1px solid var(--pf-line); padding:.6rem 0; }
.pf-pub-brand { color: var(--pf-text); font-weight: 700; }
.pf-lang-toggle a { color: var(--pf-muted); padding: 0 .35rem; font-size:.85rem; font-weight:600; }
.pf-lang-toggle a.active { color: var(--pf-primary); }
/* Navigation 3 vues (Portfolio / CV / Carte) */
.pf-view-nav { display:flex; gap:.2rem; }
.pf-view-tab {
  display:flex; align-items:center; gap:.35rem; padding:.28rem .7rem;
  border-radius:6px; font-size:.8rem; font-weight:600; color:var(--pf-muted);
  text-decoration:none; border:1px solid transparent; transition:all .15s;
}
.pf-view-tab i { font-size:.75rem; }
.pf-view-tab:hover { background:rgba(255,255,255,.08); color:var(--pf-text); }
.pf-view-tab.active { background:var(--pf-primary); color:#fff; border-color:var(--pf-primary-dark); }
.pf-tpl-light .pf-view-tab, .pf-tpl-classic .pf-view-tab { color:#6b7280; }
.pf-tpl-light .pf-view-tab:hover, .pf-tpl-classic .pf-view-tab:hover { background:rgba(0,0,0,.06); color:#111; }
.pf-tpl-light .pf-view-tab.active, .pf-tpl-classic .pf-view-tab.active { color:#fff; }
/* Mobile : header public wrappable (plus de débordement horizontal du chrome) — vaut aussi pour la page étude de cas */
@media (max-width: 640px) {
  .pf-pub-topbar .container { flex-wrap: wrap; gap: .4rem .5rem; }
  .pf-pub-topbar .container > div { flex-wrap: wrap; justify-content: flex-start; }
  .pf-view-nav { flex-wrap: wrap; }
  .pf-view-tab { padding: .26rem .55rem; font-size: .74rem; }
}

.pf-hero-pub { padding: 70px 0 40px; background: radial-gradient(900px 400px at 80% -10%, rgba(99,102,241,.18), transparent), radial-gradient(900px 400px at 10% 0%, rgba(245,158,11,.18), transparent); }
.pf-hero-grid { display:grid; grid-template-columns: 1fr 280px; gap: 2.5rem; align-items:center; }
.pf-hero-eyebrow { color: var(--pf-primary); font-weight:600; letter-spacing:.04em; text-transform: uppercase; font-size:.85rem; }
.pf-hero-name { font-size: clamp(2rem, 5vw, 3.2rem); font-weight: 800; margin:.3rem 0; }
.pf-hero-tagline { color: var(--pf-muted); font-size: 1.15rem; max-width: 560px; }
.pf-hero-photo { width: 200px; height: 200px; border-radius: 24px; object-fit: cover; border:2px solid var(--pf-line); }
.pf-hero-photo-placeholder { display:grid; place-items:center; font-size:5rem; font-weight:800; color:#1b1205; background: radial-gradient(circle at 30% 30%, #fbbf24, var(--pf-primary-dark)); }
.pf-hero-meta { margin-top:1rem; color: var(--pf-muted); font-size:.9rem; }
.pf-hero-meta > div { margin-bottom:.3rem; }
.pf-hero-links a { color: var(--pf-text); font-size:1.4rem; margin-right:1rem; }
.pf-hero-links a:hover { color: var(--pf-primary); }

/* Hook adaptatif */
.pf-adapt { margin-top: 1.6rem; border:1px solid var(--pf-line); border-radius: 14px; overflow:hidden; background: rgba(255,255,255,.03); }
.pf-adapt-trigger { width:100%; text-align:left; padding: 1rem 1.2rem; background: transparent; border:none; color: var(--pf-text); font-weight:600; cursor:pointer; }
.pf-adapt-open .pf-adapt-trigger { color: var(--pf-primary); }
.pf-adapt-body { padding: 0 1.2rem 1.2rem; }
.pf-adapt-input { background: var(--pf-ink-2); border:1px solid var(--pf-line); color: var(--pf-text); }
.pf-score { font-size: 1.4rem; font-weight: 800; color: var(--pf-primary); }
.pf-score-reason { color: var(--pf-muted); }

/* Stats */
.pf-stats { padding: 1.5rem 0; border-top:1px solid var(--pf-line); border-bottom:1px solid var(--pf-line); background: var(--pf-ink-2); }
.pf-stats-grid { display:flex; flex-wrap:wrap; gap: 1rem 2.5rem; justify-content: center; }
.pf-stat { text-align:center; }
.pf-stat-value { font-size: 1.6rem; font-weight: 800; color: var(--pf-primary); }
.pf-stat-label { color: var(--pf-muted); font-size:.85rem; max-width: 180px; }

/* Sections */
.pf-section { padding: 3.5rem 0; }
.pf-section-alt { background: var(--pf-ink-2); }
.pf-section-title { font-size: 1.6rem; font-weight: 700; margin-bottom: 1.8rem; }

/* Filtres */
.pf-filters { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.4rem; }
.pf-chip { background: transparent; border:1px solid var(--pf-line); color: var(--pf-muted); border-radius:999px; padding:.3rem .9rem; font-size:.82rem; cursor:pointer; }
.pf-chip.active, .pf-chip:hover { border-color: var(--pf-primary); color: var(--pf-primary); }

/* Projets */
.pf-projects { display:grid; grid-template-columns: repeat(auto-fill, minmax(320px,1fr)); gap:1rem; }
.pf-project-card { background: var(--pf-card); border:1px solid var(--pf-line); border-radius:16px; overflow:hidden; transition: border-color .2s, transform .2s; }
.pf-project-card:hover { border-color: var(--pf-primary); transform: translateY(-2px); }
.pf-project-head { display:flex; align-items:center; justify-content:space-between; padding:1.1rem 1.3rem; cursor:pointer; color: var(--pf-muted); }
.pf-project-name { font-size:1.1rem; font-weight:700; color: var(--pf-text); margin:0; }
.pf-badge-star { color: var(--pf-primary); font-size:.8rem; }
.pf-project-sub { font-size:.85rem; color: var(--pf-muted); }
.pf-project-body { padding: 0 1.3rem 1.3rem; color: var(--pf-muted); font-size:.92rem; }
.pf-project-body p { margin-bottom:.6rem; }
.pf-impact { list-style:none; padding:0; margin:.5rem 0; }
.pf-impact li { margin-bottom:.3rem; color: var(--pf-text); }
.pf-stack { display:flex; flex-wrap:wrap; gap:.4rem; margin:.6rem 0; }
.pf-stack span { background: rgba(245,158,11,.12); color: var(--pf-primary); border-radius:6px; padding:.15rem .6rem; font-size:.78rem; }
.pf-proofs a { display:inline-block; color: var(--pf-accent); margin-right:1rem; font-size:.85rem; }

/* Figure détourée latérale (décor) — réutilisable (Projets, Expérience…) */
.pf-figrow { display:grid; grid-template-columns: 280px 1fr; gap: 2.5rem; align-items:start; }
.pf-figrow.fig-right { grid-template-columns: 1fr 280px; }
.pf-figrow.fig-right .pf-figrow-aside { order: 2; }
.pf-figrow.fig-solo { display:block; }
.pf-figrow-aside { position: sticky; top: 84px; align-self:start; }
.pf-figrow-img { width:100%; max-width:280px; height:auto; display:block; filter: drop-shadow(0 18px 40px rgba(0,0,0,.4)); }
@media (max-width: 992px) {
    .pf-figrow, .pf-figrow.fig-right { grid-template-columns: 1fr; }
    .pf-figrow-aside { display:none; }   /* décoratif : masqué sur petit écran */
}

/* Timeline */
.pf-timeline { position:relative; padding-left: 1.5rem; }
.pf-timeline:before { content:''; position:absolute; left:6px; top:6px; bottom:6px; width:2px; background: var(--pf-line); }
.pf-tl-item { position:relative; margin-bottom:1.8rem; }
.pf-tl-dot { position:absolute; left:-1.5rem; top:6px; width:12px; height:12px; border-radius:50%; background: var(--pf-primary); box-shadow:0 0 0 4px rgba(245,158,11,.2); }
.pf-tl-period { color: var(--pf-primary); font-size:.82rem; font-weight:600; }
.pf-tl-role { font-size:1.15rem; font-weight:700; margin:.2rem 0 0; }
.pf-tl-org { color: var(--pf-muted); margin-bottom:.5rem; }
.pf-tl-ctx { color: var(--pf-muted); }
.pf-tl-content ul { color: var(--pf-text); }
.pf-tl-content li { margin-bottom:.3rem; }

/* Compétences */
.pf-skills-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap:1.2rem; }
.pf-skill-cat { background: var(--pf-card); border:1px solid var(--pf-line); border-radius:14px; padding:1.2rem; }
.pf-skill-cat h4 { font-size:1rem; color: var(--pf-primary); margin-bottom:.8rem; }
.pf-skill { display:flex; justify-content:space-between; align-items:center; padding:.35rem 0; border-bottom:1px dashed var(--pf-line); font-size:.9rem; }
.pf-skill:last-child { border-bottom:none; }
.pf-skill-level { font-size:.72rem; color: var(--pf-muted); }
.pf-lvl-avance, .pf-lvl-avancé { color:#34d399; }
.pf-lvl-courant { color:#60a5fa; }

/* Formation */
.pf-edu { display:flex; gap:1.2rem; padding:.8rem 0; border-bottom:1px solid var(--pf-line); }
.pf-edu-period { color: var(--pf-primary); font-size:.85rem; min-width: 110px; }

/* Chat */
.pf-chat { position: fixed; bottom: 20px; right: 20px; width: 360px; max-width: calc(100vw - 40px); background: var(--pf-card); border:1px solid var(--pf-line); border-radius: 16px; overflow:hidden; z-index: 100; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.pf-chat-head { display:flex; justify-content:space-between; align-items:center; padding:.8rem 1rem; background: var(--pf-ink-2); color: var(--pf-text); }
.pf-chat-head button { background:none; border:none; color: var(--pf-muted); }
.pf-chat-body { max-height: 320px; overflow-y:auto; padding:1rem; }
.pf-msg { padding:.5rem .8rem; border-radius:12px; margin-bottom:.5rem; font-size:.9rem; max-width: 85%; }
.pf-msg-bot { background: var(--pf-ink-2); color: var(--pf-text); }
.pf-msg-user { background: var(--pf-primary); color:#1b1205; margin-left:auto; }
.pf-chat-input { display:flex; border-top:1px solid var(--pf-line); }
.pf-chat-input input { flex:1; background: var(--pf-ink-2); border:none; color: var(--pf-text); padding:.7rem 1rem; outline:none; }
.pf-chat-input button { background: var(--pf-primary); color:#1b1205; border:none; padding: 0 1.1rem; }

/* Responsive */
@media (max-width: 768px) {
    .pf-hero-grid { grid-template-columns: 1fr; }
    .pf-hero-aside { order:-1; }
}

/* Print (CV) */
@media print {
    .pf-pub-topbar, .pf-adapt, .pf-chat, .pf-filters, .pf-hero-links { display:none !important; }
    body.pf-portfolio { background:#fff; color:#000; }
    .pf-section, .pf-section-alt, .pf-hero-pub, .pf-stats { background:#fff !important; padding: 1rem 0; }
    .pf-project-body { display:block !important; }
    .pf-cs-chapter, .pf-cs-hero { min-height:auto !important; page-break-inside: avoid; }
    .js-reveal { opacity:1 !important; transform:none !important; }
}

/* ===== Études de cas — cartes ===== */
.pf-cases { display:grid; grid-template-columns: repeat(auto-fill, minmax(360px,1fr)); gap:1.2rem; }
.pf-case-card { display:block; background: linear-gradient(160deg, var(--pf-card), #0f1730); border:1px solid var(--pf-line); border-radius:18px; padding:1.5rem; color:var(--pf-text); transition: transform .2s, border-color .2s, box-shadow .2s; }
.pf-case-card:hover { transform: translateY(-4px); border-color: var(--pf-primary); box-shadow:0 18px 50px rgba(245,158,11,.12); color:var(--pf-text); }
.pf-case-kicker { color: var(--pf-primary); font-size:.82rem; font-weight:600; text-transform:uppercase; letter-spacing:.04em; }
.pf-case-title { font-size:1.25rem; font-weight:700; margin:.5rem 0; }
.pf-case-accroche { color: var(--pf-muted); font-size:.92rem; }
.pf-case-metrics { display:flex; flex-wrap:wrap; gap:.4rem .8rem; margin:.8rem 0; font-size:.8rem; color:var(--pf-muted); }
.pf-case-metrics strong { color: var(--pf-primary); }
.pf-case-cta { display:inline-block; margin-top:.4rem; color: var(--pf-primary); font-weight:600; }

/* ===== Page étude de cas (scrollytelling) ===== */
.pf-cs-progress { position: fixed; top:0; left:0; height:3px; width:0; background: linear-gradient(90deg, var(--pf-primary), #fbbf24); z-index: 200; }
.pf-casestudy .pf-pub-topbar { background: rgba(11,16,32,.9); }

.pf-cs-hero { padding: 90px 0 60px; text-align:center; background: radial-gradient(900px 500px at 50% -10%, rgba(245,158,11,.18), transparent); }
.pf-cs-eyebrow { display:flex; gap:1.2rem; justify-content:center; color: var(--pf-muted); font-size:.9rem; margin-bottom:1rem; flex-wrap:wrap; }
.pf-cs-eyebrow span span, .pf-cs-eyebrow span { white-space:nowrap; }
.pf-cs-title { font-size: clamp(1.8rem, 4.5vw, 3rem); font-weight:800; max-width:900px; margin:0 auto 1rem; }
.pf-cs-role { color: var(--pf-primary); font-weight:600; }
.pf-cs-accroche { color: var(--pf-muted); font-size:1.15rem; max-width:760px; margin:1rem auto 0; }
.pf-cs-metrics { display:flex; flex-wrap:wrap; gap:1rem 3rem; justify-content:center; margin-top:2.2rem; }
.pf-cs-metric-val { font-size:2rem; font-weight:800; color: var(--pf-primary); }
.pf-cs-metric-lbl { color: var(--pf-muted); font-size:.85rem; max-width:200px; }
.pf-cs-scrollhint { margin-top:2.5rem; color: var(--pf-muted); font-size:.9rem; animation: pf-bob 2s ease-in-out infinite; }
@keyframes pf-bob { 0%,100%{ transform: translateY(0);} 50%{ transform: translateY(6px);} }

.pf-cs-chapter { padding: 5rem 0; border-top:1px solid var(--pf-line); }
.pf-cs-row { display:grid; grid-template-columns: 1fr 1fr; gap:3rem; align-items:center; }
.pf-cs-chapter:nth-child(even) .pf-cs-visual { order:2; }
.pf-cs-chapnum { color: var(--pf-primary); font-weight:700; letter-spacing:.1em; margin-bottom:.6rem; }
.pf-cs-climax-tag { background: var(--pf-primary); color:#1b1205; border-radius:6px; padding:.1rem .5rem; font-size:.8rem; margin-left:.5rem; }
.pf-cs-chaptitle { font-size: clamp(1.5rem, 3vw, 2.2rem); font-weight:800; margin-bottom:1rem; }
.pf-cs-chaprecit { color: var(--pf-muted); font-size:1.1rem; line-height:1.7; }

.pf-cs-icon { width:160px; height:160px; border-radius:32px; display:grid; place-items:center; font-size:4rem; color: var(--pf-primary);
    background: rgba(245,158,11,.1); border:1px solid var(--pf-line); margin:0 auto; }
.pf-cs-steps { display:flex; flex-direction:column; gap:.8rem; }
.pf-cs-step { display:flex; align-items:center; gap:1rem; background: var(--pf-card); border:1px solid var(--pf-line); border-radius:12px; padding:.9rem 1.1rem; }
.pf-cs-step-n { width:30px; height:30px; flex:none; border-radius:50%; background: var(--pf-primary); color:#1b1205; font-weight:700; display:grid; place-items:center; }
.pf-cs-bignum { font-size: clamp(3rem, 9vw, 6rem); font-weight:900; color: var(--pf-primary); line-height:1; text-align:center; }
.pf-cs-bignum-lbl { text-align:center; color: var(--pf-muted); margin-top:.6rem; }

.pf-cs-climax { background: radial-gradient(1000px 500px at 50% 50%, rgba(245,158,11,.16), transparent), var(--pf-ink-2); }
.pf-cs-climax .pf-cs-chaptitle { color: var(--pf-primary); }

.pf-cs-outro { padding: 5rem 0; text-align:center; background: var(--pf-ink-2); border-top:1px solid var(--pf-line); }

@media (max-width: 768px) {
    .pf-cs-row { grid-template-columns: 1fr; gap:1.5rem; }
    .pf-cs-chapter:nth-child(even) .pf-cs-visual { order:0; }
    .pf-cs-icon { width:120px; height:120px; font-size:3rem; }
}

/* ===== Méthodologie signature ===== */
.pf-methodo-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap:1rem; }
.pf-methodo-card { background: var(--pf-card); border:1px solid var(--pf-line); border-radius:14px; padding:1.3rem; }
.pf-methodo-icon { width:44px; height:44px; border-radius:11px; display:grid; place-items:center; background: rgba(245,158,11,.14); color: var(--pf-primary); font-size:1.2rem; margin-bottom:.8rem; }
.pf-methodo-card h4 { font-size:1rem; font-weight:700; color: var(--pf-text); margin-bottom:.4rem; }
.pf-methodo-card p { color: var(--pf-muted); font-size:.88rem; margin:0; }

/* ===== Éditeur dashboard (contexte clair) ===== */
.pf-ed-item { background:#fff; border:1px solid #e6e9f0; border-radius:12px; padding:1rem; margin-bottom:1rem; }
.pf-avatar-preview { width:84px; height:84px; border-radius:14px; object-fit:cover; border:1px solid #e6e9f0; }
.pf-fig-thumb { width:64px; height:96px; object-fit:contain; border:1px solid #e6e9f0; border-radius:10px; background:#0b1020; flex:none; }
.pf-app .nav-pills .nav-link { color:#475569; }
.pf-app .nav-pills .nav-link.active { background: var(--pf-primary-dark); color:#fff; }
.pf-app .pf-onb-theme { color:#64748b; border-color:#e6e9f0; }
.pf-app .pf-onb-theme.active { color:#1b2233; border-color: var(--pf-primary); }
.pf-app .form-label { font-size:.85rem; font-weight:600; color:#475569; margin-bottom:.2rem; }

/* ===== Onboarding (choix gabarit + style) ===== */
.pf-onb-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap:1rem; }
.pf-onb-card { text-align:left; background: var(--pf-card); border:2px solid var(--pf-line); border-radius:14px; padding:1.2rem; cursor:pointer; color:var(--pf-text); transition: border-color .2s, transform .2s; }
.pf-onb-card:hover { transform: translateY(-3px); }
.pf-onb-card.active { border-color: var(--pf-primary); }
.pf-onb-card-title { font-weight:700; margin-bottom:.3rem; }
.pf-onb-card-desc { color: var(--pf-muted); font-size:.88rem; }
.pf-onb-themes { display:flex; flex-wrap:wrap; gap:.8rem; }
.pf-onb-theme { display:flex; flex-direction:column; align-items:center; gap:.4rem; background:transparent; border:2px solid var(--pf-line); border-radius:12px; padding:.7rem; cursor:pointer; color:var(--pf-muted); transition: border-color .2s; min-width:96px; }
.pf-onb-theme.active { border-color: var(--pf-primary); color: var(--pf-text); }
.pf-onb-swatch { width:56px; height:56px; border-radius:50%; display:block; }
.pf-onb-theme-label { font-size:.78rem; }

/* ===== Au-delà du code (qualités + centres d'intérêt) ===== */
.pf-subhead { font-size: .95rem; font-weight: 700; color: var(--pf-primary); margin-bottom: .8rem; }
.pf-traits, .pf-interets { display:flex; flex-wrap:wrap; gap:.5rem .6rem; }
.pf-trait { background: rgba(245,158,11,.12); color: var(--pf-primary); border:1px solid var(--pf-line); border-radius:999px; padding:.35rem .9rem; font-size:.85rem; font-weight:600; }
.pf-interet { display:inline-flex; align-items:center; background: var(--pf-card); color: var(--pf-text); border:1px solid var(--pf-line); border-radius:999px; padding:.4rem 1rem; font-size:.86rem; transition: transform .2s ease, border-color .2s ease; }
.pf-interet i { color: var(--pf-primary); }
.pf-interet:hover { transform: translateY(-2px); border-color: var(--pf-primary); }

/* ===== Mobilité & ouverture internationale ===== */
.pf-mobilite-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(300px,1fr)); gap:1rem; }
.pf-mob-card { display:flex; align-items:flex-start; gap:1rem; background: var(--pf-card); border:1px solid var(--pf-line); border-radius:14px; padding:1.1rem 1.2rem; transition: transform .25s ease, border-color .25s ease; }
.pf-mob-card:hover { transform: translateY(-3px); border-color: var(--pf-primary); }
.pf-mob-icon { width:44px; height:44px; flex:none; border-radius:11px; display:grid; place-items:center; background: rgba(245,158,11,.14); color: var(--pf-primary); font-size:1.2rem; transition: transform .3s ease; }
.pf-mob-card:hover .pf-mob-icon { transform: scale(1.1) rotate(-4deg); }
.pf-mob-label { font-weight:700; color: var(--pf-text); }
.pf-mob-detail { color: var(--pf-muted); font-size:.88rem; margin-top:.2rem; }

/* ============================================================
   Animations & micro-interactions (page portfolio public)
   Principe : robuste — l'effet ne s'active QUE si JS ajoute .pf-anim-ready.
   Sans JS (ou prefers-reduced-motion), le contenu reste pleinement visible.
   ============================================================ */

/* Reveal au scroll */
.pf-anim-ready .pf-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
.pf-anim-ready .pf-reveal.is-visible { opacity: 1; transform: none; }
.pf-anim-ready .pf-reveal.is-visible.d1 { transition-delay:.06s; }
.pf-anim-ready .pf-reveal.is-visible.d2 { transition-delay:.12s; }
.pf-anim-ready .pf-reveal.is-visible.d3 { transition-delay:.18s; }
.pf-anim-ready .pf-reveal.is-visible.d4 { transition-delay:.24s; }

/* Accent animé sous les titres de section */
.pf-section-title::after { content:''; display:block; height:3px; width:64px; margin-top:.55rem; border-radius:3px; background: linear-gradient(90deg, var(--pf-primary), #fbbf24); }
.pf-anim-ready .pf-section-title::after { width:0; transition: width .9s cubic-bezier(.2,.7,.2,1) .15s; }
.pf-anim-ready .pf-section-title.is-visible::after { width:64px; }
.pf-section-title i { color: var(--pf-primary); }

/* Entrée du hero (au chargement) */
@keyframes pf-fade-up { from { opacity:0; transform: translateY(18px);} to { opacity:1; transform:none;} }
.pf-hero-pub .pf-hero-eyebrow { animation: pf-fade-up .6s ease both; }
.pf-hero-pub .pf-hero-name    { animation: pf-fade-up .6s .08s ease both; }
.pf-hero-pub .pf-hero-tagline { animation: pf-fade-up .6s .16s ease both; }
.pf-hero-pub .pf-adapt        { animation: pf-fade-up .6s .24s ease both; }
.pf-hero-pub .pf-hero-links   { animation: pf-fade-up .6s .32s ease both; }
.pf-hero-pub .pf-hero-aside   { animation: pf-fade-up .7s .2s ease both; }

/* Hook adaptatif : attirer l'œil sur la fonctionnalité signature */
.pf-adapt-trigger i.fa-wand-magic-sparkles { display:inline-block; transform-origin: 60% 60%; animation: pf-wand 3s ease-in-out infinite; }
@keyframes pf-wand { 0%,90%,100%{ transform: rotate(0);} 93%{ transform: rotate(-14deg);} 96%{ transform: rotate(12deg);} }
.pf-adapt:not(.pf-adapt-open) { animation: pf-adapt-pulse 3.4s ease-in-out infinite; }
@keyframes pf-adapt-pulse { 0%,100%{ box-shadow: 0 0 0 0 rgba(245,158,11,0);} 50%{ box-shadow: 0 0 0 4px rgba(245,158,11,.08);} }

/* Chiffres-clés : icône + survol */
.pf-stat-ico { color: var(--pf-primary); font-size:1.05rem; margin-bottom:.25rem; opacity:.92; }
.pf-stat { transition: transform .25s ease; }
.pf-stat:hover { transform: translateY(-3px); }

/* Projets : pastille d'icône + chevron + survol */
.pf-project-head-left { display:flex; align-items:center; gap:.9rem; min-width:0; }
.pf-project-ico { width:38px; height:38px; flex:none; border-radius:10px; display:grid; place-items:center; background: rgba(245,158,11,.12); color: var(--pf-primary); font-size:1rem; transition: transform .3s ease, background .3s ease; }
.pf-project-card:hover .pf-project-ico { transform: rotate(-6deg) scale(1.08); background: rgba(245,158,11,.2); }
.pf-project-chev { transition: transform .25s ease; color: var(--pf-muted); }
.pf-project-card:hover .pf-project-chev { color: var(--pf-primary); }

/* Études de cas : icône thématique + CTA animé */
.pf-case-ico { width:46px; height:46px; border-radius:12px; display:grid; place-items:center; background: rgba(245,158,11,.14); color: var(--pf-primary); font-size:1.2rem; margin-bottom:.9rem; transition: transform .3s ease, background .3s ease; }
.pf-case-card:hover .pf-case-ico { transform: rotate(-6deg) scale(1.08); background: rgba(245,158,11,.22); }
.pf-case-cta i { transition: transform .25s ease; }
.pf-case-card:hover .pf-case-cta i { transform: translateX(5px); }

/* Méthodologie & compétences : survol */
.pf-methodo-card, .pf-skill-cat { transition: transform .25s ease, border-color .25s ease; }
.pf-methodo-card:hover, .pf-skill-cat:hover { transform: translateY(-3px); border-color: var(--pf-primary); }
.pf-methodo-icon { transition: transform .3s ease; }
.pf-methodo-card:hover .pf-methodo-icon { transform: scale(1.1) rotate(-4deg); }

/* Liens sociaux : léger lift */
.pf-hero-links a { display:inline-block; transition: color .2s ease, transform .2s ease; }
.pf-hero-links a:hover { transform: translateY(-3px); }

/* Timeline : le poste actuel pulse doucement */
.pf-tl-item:first-child .pf-tl-dot { animation: pf-dot-pulse 2.6s ease-in-out infinite; }
@keyframes pf-dot-pulse { 0%,100%{ box-shadow: 0 0 0 4px rgba(245,158,11,.2);} 50%{ box-shadow: 0 0 0 9px rgba(245,158,11,.05);} }

/* Respect de l'accessibilité : aucune animation si l'utilisateur la refuse */
@media (prefers-reduced-motion: reduce) {
    .pf-anim-ready .pf-reveal { opacity:1 !important; transform:none !important; transition:none !important; }
    .pf-section-title::after { width:64px !important; transition:none !important; }
    .pf-hero-pub *, .pf-orb, .pf-adapt, .pf-adapt-trigger i, .pf-tl-dot, .pf-cs-scrollhint { animation: none !important; }
}

/* Impression : neutraliser les effets */
@media print {
    .pf-reveal { opacity:1 !important; transform:none !important; }
    .pf-stat-ico, .pf-project-ico, .pf-case-ico { color:#000 !important; background:transparent !important; }
}

/* ============================================================
   MODÈLES DE MISE EN PAGE (pf-tpl-*) — body.pf-tpl-<layout>
   ============================================================ */

/* ---- CLAIR (Light) : mêmes blocs, palette claire ---- */
.pf-portfolio.pf-tpl-light, .pf-portfolio.pf-tpl-classic {
    --pf-ink: #f6f8fc;
    --pf-ink-2: #eceff5;
    --pf-card: #ffffff;
    --pf-line: rgba(15,23,42,.12);
    --pf-text: #1b2233;
    --pf-muted: #5b6577;
}
.pf-tpl-light .text-muted, .pf-tpl-classic .text-muted { color: #5b6577 !important; }
.pf-tpl-light .pf-pub-topbar, .pf-tpl-classic .pf-pub-topbar { background: rgba(255,255,255,.88); border-bottom-color: var(--pf-line); }
.pf-tpl-light .pf-project-card, .pf-tpl-classic .pf-project-card,
.pf-tpl-light .pf-skill-cat, .pf-tpl-light .pf-methodo-card,
.pf-tpl-light .pf-mob-card, .pf-tpl-light .pf-cs-step { box-shadow: 0 2px 10px rgba(15,23,42,.05); }
.pf-tpl-light .pf-hero-pub, .pf-tpl-classic .pf-hero-pub {
    background: radial-gradient(900px 400px at 80% -10%, rgba(99,102,241,.10), transparent),
                radial-gradient(900px 400px at 10% 0%, rgba(245,158,11,.10), transparent);
}

/* ---- CLASSIQUE CV : 1 colonne, sans figures ni animations, compact ---- */
.pf-tpl-classic .pf-figrow, .pf-tpl-classic .pf-figrow.fig-right { grid-template-columns: 1fr !important; }
.pf-tpl-classic .pf-figrow-aside { display: none !important; }
.pf-tpl-classic .pf-adapt, .pf-tpl-classic .pf-chat { display: none !important; }
.pf-tpl-classic .pf-reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
.pf-tpl-classic .pf-hero-pub * , .pf-tpl-classic .pf-tl-dot, .pf-tpl-classic .pf-cs-scrollhint { animation: none !important; }
.pf-tpl-classic .pf-section { padding: 2rem 0; }
.pf-tpl-classic .pf-hero-pub { padding: 40px 0 24px; }
.pf-tpl-classic .pf-hero-grid { grid-template-columns: 1fr 160px; gap: 1.5rem; }
.pf-tpl-classic .pf-hero-photo { width: 150px; height: 150px; }
.pf-tpl-classic .pf-projects { grid-template-columns: 1fr; }
.pf-tpl-classic .pf-section-title::after { display: none; }

/* ---- SIDEBAR FIXE : le hero devient un rail latéral fixe ---- */
@media (min-width: 993px) {
    .pf-tpl-sidebar #top {
        position: fixed; top: 0; left: 0; width: 340px; height: 100vh; overflow-y: auto;
        border-right: 1px solid var(--pf-line); z-index: 40; padding-top: 1.5rem;
    }
    .pf-tpl-sidebar #top .container { max-width: 100%; }
    .pf-tpl-sidebar #top .pf-hero-grid { grid-template-columns: 1fr; gap: 1.2rem; text-align: center; }
    .pf-tpl-sidebar #top .pf-hero-aside { order: -1; }
    .pf-tpl-sidebar #top .pf-hero-meta { text-align: left; }
    .pf-tpl-sidebar #top .pf-adapt { display: none; }            /* rail compact */
    .pf-tpl-sidebar #top .pf-hero-name { font-size: 1.7rem; }
    .pf-tpl-sidebar .pf-pub-topbar,
    .pf-tpl-sidebar > section:not(#top),
    .pf-tpl-sidebar > footer { margin-left: 340px; }
    .pf-tpl-sidebar .pf-figrow-aside { display: none; }          /* le rail tient déjà la photo */
    .pf-tpl-sidebar .pf-figrow, .pf-tpl-sidebar .pf-figrow.fig-right { grid-template-columns: 1fr; }
}

/* Mode aperçu (iframe dashboard) : masquer la barre + bulle chat */
.pf-portfolio.pf-preview .pf-pub-topbar, .pf-portfolio.pf-preview .pf-chat { display: none !important; }
.pf-portfolio.pf-preview .pf-hero-pub { padding-top: 28px; }
/* Cadre d'aperçu dans le dashboard */
.pf-preview-frame { width:100%; height:560px; border:1px solid #e6e9f0; border-radius:14px; background:#0b1020; }
.pf-preview-bar { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin:1rem 0 .5rem; }

/* ============================================================
   SCROLLBARS STYLÉES (portfolio, dashboard, rail sidebar, iframe)
   ============================================================ */
* { scrollbar-width: thin; scrollbar-color: var(--pf-primary, #f59e0b) rgba(128,128,128,.16); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: rgba(128,128,128,.10); border-radius: 8px; }
::-webkit-scrollbar-thumb {
    background: linear-gradient(var(--pf-primary, #f59e0b), var(--pf-primary-dark, #d97706));
    border-radius: 8px; border: 2px solid transparent; background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: var(--pf-primary-dark, #d97706); }
::-webkit-scrollbar-corner { background: transparent; }

/* Boutons "ghost" sur le dashboard clair : les vars sombres (--pf-text/--pf-line)
   rendent le texte/bordure invisibles sur fond blanc → override visible. */
.pf-app .pf-btn-ghost { color:#1b2233; border-color:#cbd2de; background:#fff; }
.pf-app .pf-btn-ghost:hover { color: var(--pf-primary-dark); border-color: var(--pf-primary); background:#fff; }

/* QR code (dashboard + footer public) */
.pf-qr-box { width:128px; height:128px; flex:none; display:grid; place-items:center; background:#fff; border:1px solid #e6e9f0; border-radius:12px; padding:6px; overflow:hidden; }
.pf-qr-img { width:100%; height:100%; object-fit:contain; }
.pf-qr-box canvas, .pf-qr-box img, #pfFootQr canvas, #pfFootQr img { width:100% !important; height:100% !important; display:block; }
.pf-qr-foot { display:flex; align-items:center; gap:1rem; justify-content:center; margin-bottom:1.2rem; }
.pf-qr-foot .pf-qr-box { width:104px; height:104px; }
.pf-qr-foot-label { color: var(--pf-muted); font-size:.85rem; max-width:220px; text-align:left; }
.pf-stats-grid-dash { display:grid; grid-template-columns: repeat(auto-fill, minmax(150px,1fr)); gap:.8rem; }

/* Cartes études de cas : fond sombre par défaut → adapter au thème clair */
.pf-tpl-light .pf-case-card, .pf-tpl-classic .pf-case-card {
    background: #ffffff;
    border-color: var(--pf-line);
    color: var(--pf-text);
    box-shadow: 0 2px 10px rgba(15,23,42,.05);
}
.pf-tpl-light .pf-case-card:hover, .pf-tpl-classic .pf-case-card:hover {
    box-shadow: 0 18px 50px rgba(15,23,42,.12);
    color: var(--pf-text);
}

/* Admin thèmes (système) */
.pf-th-preview { border-radius:10px; padding:.7rem .9rem; display:flex; align-items:center; gap:.5rem; border:1px solid rgba(0,0,0,.15); }
.pf-th-dot { width:22px; height:22px; border-radius:50%; display:inline-block; border:1px solid rgba(255,255,255,.25); }
.pf-th-name { font-weight:700; margin-left:auto; }
.pf-th-col { display:flex; flex-direction:column; font-size:.68rem; color:#6b7280; gap:.2rem; align-items:center; }
.pf-th-col input[type=color] { width:44px; height:30px; border:1px solid #e6e9f0; border-radius:6px; padding:0; background:none; cursor:pointer; }
.border-dashed { border-style:dashed !important; border-width:2px !important; }
.pf-th-add { display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--pf-primary-dark); background:#fff; min-height:170px; cursor:pointer; }
.pf-th-add:hover { border-color: var(--pf-primary); }

/* Options de structure des modèles custom (admin) */
.pf-singlecol .pf-figrow, .pf-singlecol .pf-figrow.fig-right { grid-template-columns:1fr; }
.pf-singlecol .pf-figrow-aside { display:none; }
.pf-singlecol .pf-projects { grid-template-columns:1fr; }
.pf-nofig .pf-figrow-aside { display:none !important; }
.pf-nofig .pf-figrow, .pf-nofig .pf-figrow.fig-right { grid-template-columns:1fr; }
.pf-noanim .pf-reveal { opacity:1 !important; transform:none !important; transition:none !important; }
.pf-noanim .pf-hero-pub *, .pf-noanim .pf-tl-dot, .pf-noanim .pf-cs-scrollhint { animation:none !important; }
.pf-density-compact .pf-section { padding:2rem 0; }
.pf-density-compact .pf-hero-pub { padding:40px 0 24px; }

/* Mode clair/sombre forcé (indépendant du prototype) */
.pf-portfolio.pf-force-light {
    --pf-ink:#f6f8fc; --pf-ink-2:#eceff5; --pf-card:#ffffff;
    --pf-line:rgba(15,23,42,.12); --pf-text:#1b2233; --pf-muted:#5b6577;
}
.pf-force-light .text-muted { color:#5b6577 !important; }
.pf-force-light .pf-pub-topbar { background:rgba(255,255,255,.88); border-bottom-color:var(--pf-line); }
.pf-force-light .pf-case-card { background:#fff; border-color:var(--pf-line); color:var(--pf-text); box-shadow:0 2px 10px rgba(15,23,42,.05); }
.pf-portfolio.pf-force-dark {
    --pf-ink:#0b1020; --pf-ink-2:#131a30; --pf-card:#1a2238;
    --pf-line:rgba(255,255,255,.08); --pf-text:#e8ecf4; --pf-muted:#9aa3b8;
}

/* Styles de hero */
.pf-hero-centered .pf-hero-grid { grid-template-columns:1fr; text-align:center; }
.pf-hero-centered .pf-hero-aside { order:-1; }
.pf-hero-centered .pf-hero-tagline { margin-left:auto; margin-right:auto; }
.pf-hero-centered .pf-hero-links { justify-content:center; display:flex; }
.pf-hero-centered .pf-hero-meta { display:inline-block; text-align:left; }
.pf-hero-compact .pf-hero-pub { padding:34px 0 18px; }
.pf-hero-compact .pf-hero-photo { width:140px; height:140px; }
.pf-hero-compact .pf-hero-name { font-size:clamp(1.6rem,4vw,2.4rem); }
.pf-hero-banner .pf-hero-pub { padding:96px 0 64px; background:radial-gradient(1200px 520px at 50% -10%, color-mix(in srgb, var(--pf-primary) 28%, transparent), transparent), var(--pf-ink-2); }
.pf-hero-banner .pf-hero-name { font-size:clamp(2.4rem,6vw,4rem); }

/* Atouts du moteur adaptatif */
.pf-score-hl { list-style:none; padding:0; margin:.5rem 0 0; }
.pf-score-hl li { color:var(--pf-text); font-size:.9rem; margin-bottom:.25rem; }
.pf-score-hl i { color:var(--pf-primary); }
/* Bulle chat : message "…" en attente */
.pf-msg-bot { white-space:pre-wrap; }

/* Sources/citations dans le chat */
.pf-msg-src { margin-top:.4rem; display:flex; flex-wrap:wrap; align-items:center; gap:.3rem; }
.pf-msg-src i { color: var(--pf-primary); font-size:.7rem; }
.pf-src-chip { background: rgba(245,158,11,.14); color: var(--pf-primary); border-radius:999px; padding:.05rem .5rem; font-size:.7rem; font-weight:600; }

/* Liste des analyses recruteurs (dashboard) */
.pf-adapt-list { display:flex; flex-direction:column; gap:.4rem; }
.pf-adapt-row { display:flex; align-items:center; gap:.7rem; padding:.5rem .7rem; background:#fff; border:1px solid #e6e9f0; border-radius:10px; }
.pf-adapt-score { font-weight:800; color:var(--pf-primary-dark); min-width:48px; }
.pf-adapt-offer { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:#1b2233; font-size:.9rem; }
.pf-adapt-date { font-size:.8rem; white-space:nowrap; }

/* ============================================================
   EXPORT PDF / IMPRESSION SOIGNÉE (window.print → Enregistrer en PDF)
   ============================================================ */
@media print {
    @page { margin: 13mm; }
    /* Remappe la palette en clair (les éléments utilisent les vars → tout devient lisible) */
    .pf-portfolio {
        --pf-ink:#fff; --pf-ink-2:#fff; --pf-card:#fff; --pf-line:#dcdcdc;
        --pf-text:#111; --pf-muted:#444; background:#fff !important;
    }
    .pf-portfolio .text-muted { color:#444 !important; }
    /* Masquer l'interactif/décoratif */
    .pf-pub-topbar, .pf-chat, .pf-adapt, .pf-filters, .pf-hero-links,
    .pf-figrow-aside, .pf-cs-scrollhint, .pf-project-chev { display:none !important; }
    /* Tout déplier + figer les animations */
    .pf-project-body { display:block !important; }
    .pf-reveal, .js-reveal { opacity:1 !important; transform:none !important; }
    /* Fonds blancs, sans ombres */
    .pf-section, .pf-section-alt, .pf-hero-pub, .pf-stats, .pf-pub-footer { background:#fff !important; padding:.6rem 0 !important; }
    .pf-project-card, .pf-skill-cat, .pf-methodo-card, .pf-mob-card, .pf-case-card, .pf-feature-card, .pf-tile {
        box-shadow:none !important; border:1px solid #e2e2e2 !important;
    }
    /* Compacter */
    .pf-section-title { font-size:1.15rem !important; margin-bottom:.6rem !important; }
    .pf-hero-name { font-size:1.9rem !important; }
    .pf-hero-grid { grid-template-columns:1fr 120px !important; gap:1rem !important; }
    .pf-hero-photo { width:110px !important; height:110px !important; }
    .pf-figrow, .pf-figrow.fig-right { grid-template-columns:1fr !important; }
    .pf-projects, .pf-skills-grid, .pf-methodo-grid, .pf-cases, .pf-mobilite-grid { gap:.5rem !important; }
    /* Sauts de page propres */
    .pf-project-card, .pf-tl-item, .pf-skill-cat, .pf-methodo-card, .pf-case-card, .pf-mob-card, .pf-edu { page-break-inside: avoid; }
    .pf-section-title { page-break-after: avoid; }
    a { text-decoration:none !important; }
}

/* Impression — affinage disposition (hero, justification, espacements) */
@media print {
    /* Hero : photo compacte à gauche, infos pleine largeur à droite (plus de colonne étroite) */
    .pf-hero-grid { display:flex !important; flex-direction:row !important; align-items:flex-start !important; gap:1.4rem !important; }
    .pf-hero-aside { order:-1 !important; flex:0 0 135px !important; width:135px !important; }
    .pf-hero-photo { width:120px !important; height:120px !important; }
    .pf-hero-name { font-size:1.7rem !important; line-height:1.12 !important; margin:.2rem 0 !important; }
    .pf-hero-eyebrow { font-size:.78rem !important; }
    .pf-hero-tagline { font-size:1rem !important; max-width:none !important; }
    .pf-hero-meta { margin-top:.6rem !important; }
    /* Pas de texte justifié à l'impression (évite les rivières / coupures dans colonnes étroites) */
    .pf-hero-tagline, .pf-section > .container > p.text-muted, .pf-project-body p,
    .pf-methodo-card p, .pf-tl-ctx, .pf-case-accroche, .pf-cs-chaprecit {
        text-align:left !important; -webkit-hyphens:none !important; hyphens:none !important;
    }
    /* Un peu plus d'air (le précédent .6rem était trop serré) */
    .pf-section, .pf-hero-pub { padding:1rem 0 !important; }
    .pf-section-title { margin-top:.3rem !important; }
    /* Bande de chiffres plus compacte */
    .pf-stats-grid { gap:.8rem 2rem !important; }
    .pf-stat-value { font-size:1.3rem !important; }
}

/* Impression — déplier réellement les projets (x-collapse force height:0/overflow inline) */
@media print {
    .pf-project-body { display:block !important; height:auto !important; overflow:visible !important; }
}

/* Impression — densité (réduire le nombre de pages sans tasser) */
@media print {
    .pf-project-card { padding:.9rem 1.1rem !important; }
    .pf-project-body p { margin-bottom:.4rem !important; }
    .pf-impact { margin:.3rem 0 !important; }
    .pf-impact li, .pf-tl-content li { margin-bottom:.15rem !important; }
    .pf-stack { margin:.4rem 0 !important; }
}

/* Impression — laisser les grandes cartes (projets) se répartir sur les pages (évite les grands vides) */
@media print {
    .pf-project-card { page-break-inside: auto !important; }
}

/* ============================================================
   MODE CV COURT (?cv=1) — condensé : sections clés, projets en titres
   ============================================================ */
.pf-cv #etudes, .pf-cv [id^="methodo"], .pf-cv #mobilite, .pf-cv #stats, .pf-cv #apropos,
.pf-cv .pf-adapt, .pf-cv .pf-filters, .pf-cv .pf-figrow-aside { display:none !important; }

/* Hero compact — photo petite, meta inline, langues masquées */
.pf-cv .pf-hero-pub { padding: .5rem 0 .7rem !important; }
.pf-cv .pf-hero-grid { display:flex !important; flex-direction:row !important; align-items:flex-start !important; gap:.9rem !important; }
.pf-cv .pf-hero-aside { order:-1 !important; flex:0 0 85px !important; width:85px !important; }
.pf-cv .pf-hero-photo { width:75px !important; height:75px !important; }
.pf-cv .pf-hero-eyebrow { font-size:.7rem !important; }
.pf-cv .pf-hero-name { font-size:1.45rem !important; line-height:1.15 !important; margin:.1rem 0 .3rem !important; }
.pf-cv .pf-hero-tagline { font-size:.84rem !important; margin-bottom:.3rem !important; }
/* Meta : localisation + permis côte à côte sur une ligne */
.pf-cv .pf-hero-meta { display:flex !important; flex-wrap:wrap !important; gap:.1rem .55rem !important; font-size:.75rem !important; margin-top:.25rem !important; }
.pf-cv .pf-hero-meta > div { flex:0 0 auto !important; margin:0 !important; }
/* Langues : déjà dans Compétences, inutiles sur le CV papier */
.pf-cv .pf-hero-lang-item { display:none !important; }
/* Projets : titres seulement (corps replié, même à l'impression → spécificité > règle print) */
.pf-cv .pf-project-body { display:none !important; }
.pf-cv .pf-project-chev { display:none !important; }
.pf-cv .pf-project-head { cursor:default; }
.pf-cv .pf-figrow, .pf-cv .pf-figrow.fig-right { grid-template-columns:1fr; }
/* CV court — projets en flexbox 2 colonnes explicites (grid minmax résiste en PDF) */
.pf-cv .pf-projects {
  display: flex !important;
  flex-wrap: wrap !important;
  gap: .4rem !important;
  grid-template-columns: unset !important;
}
.pf-cv .pf-project-card {
  flex: 0 0 calc(50% - .2rem) !important;
  max-width: calc(50% - .2rem) !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  padding: .45rem .65rem !important;
}
.pf-cv .pf-project-head { padding:0 !important; gap:.4rem !important; }
.pf-cv .pf-project-ico { width:28px !important; height:28px !important; font-size:.78rem !important; }
.pf-cv .pf-project-name { font-size:.88rem !important; word-break:break-word; }
.pf-cv .pf-project-sub { font-size:.73rem !important; }
.pf-cv .pf-section { padding:.9rem 0 !important; }
.pf-cv .pf-pub-footer { display:none !important; }
@media (max-width: 768px){ .pf-cv .pf-project-card { flex: 0 0 100% !important; max-width: 100% !important; } }

/* ============================================================
   CV COURT — OVERRIDES DÉDIÉS IMPRESSION
   Bloc placé APRÈS tous les @media print génériques pour garantir
   l'ordre source en faveur du mode CV (le navigateur l'applique en dernier).
   ============================================================ */
@media print {
  /* Hero compact */
  .pf-cv .pf-hero-pub { padding: .4rem 0 .6rem !important; }
  .pf-cv .pf-hero-grid { display:flex !important; flex-direction:row !important; align-items:flex-start !important; gap:.9rem !important; }
  .pf-cv .pf-hero-aside { order:-1 !important; flex:0 0 88px !important; width:88px !important; }
  .pf-cv .pf-hero-photo { width:76px !important; height:76px !important; }
  .pf-cv .pf-hero-eyebrow { font-size:.7rem !important; }
  .pf-cv .pf-hero-name { font-size:1.45rem !important; line-height:1.15 !important; margin:.1rem 0 .25rem !important; }
  .pf-cv .pf-hero-tagline { font-size:.84rem !important; margin-bottom:.2rem !important; max-width:none !important; }
  .pf-cv .pf-hero-meta { display:flex !important; flex-wrap:wrap !important; gap:.1rem .55rem !important; font-size:.75rem !important; margin-top:.2rem !important; }
  .pf-cv .pf-hero-meta > div { flex:0 0 auto !important; margin:0 !important; }
  .pf-cv .pf-hero-lang-item { display:none !important; }
  /* Projets — flexbox 2 colonnes (grid minmax résiste en impression navigateur) */
  .pf-cv .pf-projects { display:flex !important; flex-wrap:wrap !important; gap:.4rem !important; }
  .pf-cv .pf-project-card { flex:0 0 calc(50% - .2rem) !important; max-width:calc(50% - .2rem) !important; min-width:0 !important; box-sizing:border-box !important; padding:.42rem .6rem !important; }
  .pf-cv .pf-project-head { padding:0 !important; gap:.4rem !important; }
  .pf-cv .pf-project-ico { width:26px !important; height:26px !important; font-size:.76rem !important; }
  .pf-cv .pf-project-name { font-size:.86rem !important; word-break:break-word !important; }
  .pf-cv .pf-project-sub { font-size:.72rem !important; }
  /* Sections masquées à l'impression en mode CV */
  .pf-cv #etudes, .pf-cv [id^="methodo"], .pf-cv #mobilite,
  .pf-cv #stats, .pf-cv #apropos, .pf-cv .pf-adapt,
  .pf-cv .pf-filters, .pf-cv .pf-figrow-aside { display:none !important; }
  .pf-cv .pf-project-body { display:none !important; }
  .pf-cv .pf-pub-footer { display:none !important; }
  .pf-cv .pf-section { padding:.85rem 0 !important; }
}
