/* Kapti · petites touches vivantes (oct. 2026) */
/* 1. Équipe en direct dans le hero */
.kfun-live{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:22px}
.kfun-live__lab{font-size:13px;color:var(--muted,#6b6b7b);margin-right:.25rem}
.kfun-city{display:inline-flex;align-items:center;gap:.45rem;height:32px;padding:0 .75rem;border-radius:999px;border:1px solid rgba(69,1,225,.14);background:#fff;font-size:13px;white-space:nowrap}
.kfun-city b{font-weight:600}
.kfun-city time{font-variant-numeric:tabular-nums;color:#4501e1;font-weight:500}
.kfun-city i{width:7px;height:7px;border-radius:50%;background:#b9b9c6}
.kfun-city.is-awake i{background:#22c55e;animation:kfunPulse 2s infinite}
[data-theme="dark"] .kfun-city{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
[data-theme="dark"] .kfun-city time{color:#b7a4ff}
@keyframes kfunPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 7px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
/* 2. Pastille qui glisse dans le menu (bureau) */
@media (min-width:981px){
.nav__links{isolation:isolate}
.kfun-blob{position:absolute;z-index:-1;top:0;left:0;height:36px;width:0;border-radius:10px;background:var(--accent-soft,#efeaff);opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.34,1.4,.5,1),width .35s cubic-bezier(.34,1.4,.5,1),opacity .2s}
[data-theme="dark"] .kfun-blob{background:rgba(183,164,255,.14)}
.kfun-blob.on{opacity:1}
.nav__links a:hover{background:none!important}
.nav__links a.kfun-on{color:#4501e1!important}
[data-theme="dark"] .nav__links a:hover{background:none!important}
.nav__links a.kfun-on{color:#cbbcff}
}
/* 3. Petit rappel sur « Prendre RDV » */
.site-header .btn--primary.btn--sm{transform-origin:50% 60%}
.site-header .btn--primary.btn--sm.kfun-nudge{animation:kfunNudge .9s cubic-bezier(.3,1.5,.5,1)}
@keyframes kfunNudge{0%,100%{transform:none}20%{transform:rotate(-4deg) scale(1.04)}40%{transform:rotate(3deg) scale(1.04)}60%{transform:rotate(-2deg)}80%{transform:rotate(1deg)}}
/* 4. L’équipe dit bonjour au survol */
.member__photo{position:relative;transition:transform .35s cubic-bezier(.34,1.5,.5,1)}
.member:hover .member__photo{transform:translateY(-4px) rotate(-1.2deg)}
.member:nth-child(even):hover .member__photo{transform:translateY(-4px) rotate(1.2deg)}
.member__photo[data-hello]::after{content:attr(data-hello);position:absolute;left:10px;bottom:10px;padding:5px 10px;border-radius:999px 999px 999px 4px;background:#fff;color:#16132b;font-size:12.5px;font-weight:600;box-shadow:0 6px 18px -8px rgba(22,19,43,.45);opacity:0;transform:translateY(6px) scale(.9);transform-origin:0 100%;transition:opacity .25s,transform .35s cubic-bezier(.34,1.6,.5,1)}
.member:hover .member__photo[data-hello]::after{opacity:1;transform:none}
.member:hover .member__photo img{filter:none!important;opacity:1!important}
/* 5. Les pastilles des sur-titres respirent */
.eyebrow::before{animation:kfunBreath 2.6s ease-in-out infinite}
@keyframes kfunBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.45)}}
@media (prefers-reduced-motion:reduce){.kfun-city.is-awake i,.eyebrow::before,.site-header .btn--primary.btn--sm.kfun-nudge{animation:none}.kfun-blob,.member__photo{transition:none}}
/* ===== fun v2 (30 oct. 2026) ===== */
/* surligneur sur la fin du titre du hero */
.hero h1 em{background-image:linear-gradient(transparent 72%,rgba(124,92,255,.16) 72%,rgba(124,92,255,.16) 92%,transparent 92%);background-repeat:no-repeat;background-size:0% 100%;animation:kfunMark 1.1s cubic-bezier(.6,.1,.2,1) .5s forwards}
[data-theme="dark"] .hero h1 em{background-image:linear-gradient(transparent 72%,rgba(183,164,255,.18) 72%,rgba(183,164,255,.18) 92%,transparent 92%)}
@keyframes kfunMark{to{background-size:100% 100%}}
/* macaron qui tourne sur l'image du hero */
.hero-case{position:relative}
.kfun-badge{position:absolute;right:-14px;top:-18px;width:104px;height:104px;z-index:3;pointer-events:none}
.kfun-badge svg{width:100%;height:100%;animation:kfunSpin 18s linear infinite}
.kfun-badge text{font:600 9.5px/1 var(--font-mono,ui-monospace,monospace);letter-spacing:.14em;text-transform:uppercase;fill:#4501e1}
.kfun-badge circle.bg{fill:#fff;stroke:rgba(69,1,225,.18)}
.kfun-badge .core{position:absolute;inset:0;display:grid;place-items:center;font-size:26px;animation:kfunBob 2.6s ease-in-out infinite}
[data-theme="dark"] .kfun-badge circle.bg{fill:#14121f;stroke:rgba(183,164,255,.3)}
[data-theme="dark"] .kfun-badge text{fill:#b7a4ff}
@keyframes kfunSpin{to{transform:rotate(360deg)}}
@keyframes kfunBob{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-4px) rotate(6deg)}}
@media (max-width:640px){.kfun-badge{width:82px;height:82px;right:-6px;top:-22px}.kfun-badge text{font-size:9px}.kfun-badge .core{font-size:20px}}
/* apparition au scroll, avec un petit rebond */
.kfun-rev{opacity:0;transform:translateY(22px) scale(.985);transition:opacity .6s ease,transform .7s cubic-bezier(.3,1.45,.5,1)}
.kfun-rev.in{opacity:1;transform:none}
/* trait qui se dessine sous les titres de section */
.section-head h2,.section h2{position:relative}
.kfun-squiggle{display:block;width:120px;height:12px;margin-top:10px;color:#7c5cff}
.kfun-squiggle path{stroke-dasharray:140;stroke-dashoffset:140;transition:stroke-dashoffset 1s cubic-bezier(.6,.1,.2,1) .15s}
.in .kfun-squiggle path,.kfun-squiggle.in path{stroke-dashoffset:0}
/* cartes qui s'inclinent (souris) */
.kfun-tilt{transition:transform .35s cubic-bezier(.3,1.4,.5,1);will-change:transform}
/* logos clients qui bougent au survol */
.proof__clients li:hover,.proof__clients a:hover{animation:kfunWiggle .5s ease}
@keyframes kfunWiggle{25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}
/* bandeau de fin : visages qui sautent, petite phrase */
.cta-band__faces img{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.cta-band:hover .cta-band__faces img{transform:translateY(-6px)}
.cta-band:hover .cta-band__faces img:nth-child(2){transition-delay:.05s}
.cta-band:hover .cta-band__faces img:nth-child(3){transition-delay:.1s}
.cta-band:hover .cta-band__faces img:nth-child(4){transition-delay:.15s}
.cta-band:hover .cta-band__faces img:nth-child(5){transition-delay:.2s}
.kfun-promise{display:inline-flex;align-items:center;gap:.5rem;margin-top:14px;padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.12);font-size:14px;transform:rotate(-1.5deg)}
/* bouton principal : flèche qui part au survol */
main .btn--primary{position:relative;overflow:hidden}
main .btn--primary::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 50%,transparent 70%);transform:translateX(-120%);pointer-events:none}
main .btn--primary:hover::after{transform:translateX(120%);transition:transform .7s ease}
/* FAQ : la question ouverte s'allume */
.faq details[open] summary{color:#4501e1}
[data-theme="dark"] .faq details[open] summary{color:#b7a4ff}
@media (prefers-reduced-motion:reduce){.hero h1 em{animation:none;background-size:100% 100%}.kfun-badge svg,.kfun-badge .core{animation:none}.kfun-rev{opacity:1;transform:none;transition:none}.kfun-squiggle path{stroke-dashoffset:0;transition:none}main .btn--primary::after{display:none}}
/* ===== fun v3 (30 oct. 2026) ===== */
/* 1. vie au repos : boutons principaux */
@keyframes kfunBreath{0%,100%{box-shadow:0 0 0 0 rgba(69,1,225,0)}40%{box-shadow:0 0 0 7px rgba(69,1,225,.16)}80%{box-shadow:0 0 0 12px rgba(69,1,225,0)}}
@keyframes kfunWobble{0%,100%{transform:none}20%{transform:rotate(-3deg) scale(1.03)}40%{transform:rotate(2.5deg) scale(1.03)}60%{transform:rotate(-1.5deg)}80%{transform:rotate(1deg)}}
.kfun-breath{animation:kfunBreath 1.6s ease-out}
.mobile-cta .btn.kfun-wobble{animation:kfunWobble .8s ease}
.mobile-cta .btn::after{display:inline-block;animation:kfunArrow 2.4s ease-in-out infinite}
@keyframes kfunArrow{0%,70%,100%{transform:none}80%{transform:translateX(4px)}90%{transform:translateX(0)}}
.kfun-wave{display:inline-block;transform-origin:70% 70%}
.kfun-wave.go{animation:kfunWave 1.2s ease}
@keyframes kfunWave{0%,100%{transform:rotate(0)}15%{transform:rotate(16deg)}30%{transform:rotate(-8deg)}45%{transform:rotate(14deg)}60%{transform:rotate(-4deg)}75%{transform:rotate(10deg)}}
/* 2. équipe : cartes de même hauteur */
.team{align-items:stretch!important}
.team>.member,.team>a.member{height:auto!important;align-self:stretch!important;display:flex;flex-direction:column}
#collectif .team>.member{min-height:100%}
.team>.member .member__community,.team>.member .member__join{margin-top:auto}
/* 3. « Salut » : chacun son tour, aussi au toucher */
.member.kfun-hi .member__photo[data-hello]::after,.member:focus-within .member__photo[data-hello]::after{opacity:1;transform:none}
/* 4. fiches membres */
.profile__card{position:relative}
.kfun-pbadge{position:absolute;right:10px;top:10px;width:104px;height:104px;z-index:3;pointer-events:none}
.kfun-pbadge svg{width:100%;height:100%;animation:kfunSpin 20s linear infinite}
.kfun-pbadge text{font:600 9px/1 var(--font,system-ui);letter-spacing:.16em;text-transform:uppercase;fill:#4501e1}
.kfun-pbadge circle.bg{fill:#fff;stroke:rgba(69,1,225,.2)}
.kfun-pbadge .core{position:absolute;inset:0;display:grid;place-items:center;font-size:30px}
.kfun-pbadge .core span{display:inline-block;transform-origin:70% 70%;animation:kfunWave 1.6s ease 1s infinite;animation-duration:4s}
[data-theme="dark"] .kfun-pbadge circle.bg{fill:#14121f;stroke:rgba(183,164,255,.3)}
[data-theme="dark"] .kfun-pbadge text{fill:#b7a4ff}
@media (max-width:640px){.kfun-pbadge{width:84px;height:84px;right:8px;top:8px}.kfun-pbadge .core{font-size:24px}}
.kfun-ptime{display:inline-flex;align-items:center;gap:.45rem}
.kfun-ptime i{width:7px;height:7px;border-radius:50%;background:#b9b9c6}
.kfun-ptime.is-awake i{background:#22c55e;animation:kfunPulse 2s infinite}
.kfun-ptime time{font-variant-numeric:tabular-nums;color:#4501e1;font-weight:600}
[data-theme="dark"] .kfun-ptime time{color:#b7a4ff}
.profile__photo{transition:transform .5s cubic-bezier(.3,1.4,.5,1)}
.profile__card:hover .profile__photo{transform:scale(1.02) rotate(-.6deg)}
/* 5. sommaire des études de cas */
.ktoc{margin:8px 0 28px;padding:22px;border-radius:20px;background:var(--accent-soft,#efeaff);border:1px solid rgba(69,1,225,.14)}
.ktoc__label{display:flex;align-items:baseline;gap:.6rem;margin:0 0 14px;font-family:var(--font-display);font-size:22px;font-weight:700;color:var(--ink)}
.ktoc__label small{font-family:var(--font);font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.ktoc__list{list-style:none;margin:0;padding:0;display:grid;gap:8px;grid-template-columns:1fr}
@media (min-width:640px){.ktoc__list{grid-template-columns:1fr 1fr}}
@media (min-width:1000px){.ktoc__list{grid-template-columns:repeat(3,1fr)}}
.ktoc__list a{display:flex;align-items:center;gap:12px;min-height:52px;padding:10px 14px;border-radius:14px;background:var(--surface,#fff);border:1px solid var(--line,rgba(0,0,0,.08));color:var(--ink);text-decoration:none;font-weight:600;font-size:15px;line-height:1.3;transition:transform .25s cubic-bezier(.3,1.5,.5,1),border-color .2s}
.ktoc__list a:hover{transform:translateY(-2px);border-color:var(--accent)}
.ktoc__n,.kchap{display:inline-grid;place-items:center;flex:0 0 auto;width:30px;height:30px;border-radius:10px;background:#4501e1;color:#fff;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
[data-theme="dark"] .ktoc__n,[data-theme="dark"] .kchap{background:#7c5cff}
.kchap{margin-bottom:10px}
.ktoc-sec{scroll-margin-top:128px}
.ktoc-bar{position:fixed;left:0;right:0;top:68px;z-index:49;transform:translateY(-130%);opacity:0;visibility:hidden;transition:transform .3s ease,opacity .3s ease,visibility 0s .3s;background:#fff;border-bottom:1px solid var(--line,rgba(0,0,0,.08));box-shadow:0 8px 20px -16px rgba(22,19,43,.35)}
[data-theme="dark"] .ktoc-bar{background:#0e0b1d;border-bottom-color:rgba(255,255,255,.08)}
.ktoc-bar.on{transform:none;opacity:1;visibility:visible;transition:transform .3s ease,opacity .3s ease}
.ktoc-bar ol{display:flex;gap:6px;list-style:none;margin:0 auto;padding:8px var(--gutter,18px);max-width:1200px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.ktoc-bar ol::-webkit-scrollbar{display:none}
.ktoc-bar a{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;height:34px;padding:0 12px;border-radius:999px;font-size:14px;font-weight:600;color:var(--ink-2,#55556a);text-decoration:none}
.ktoc-bar a span{font-size:11px;opacity:.6;font-variant-numeric:tabular-nums}
.ktoc-bar a.cur{background:#4501e1;color:#fff}
[data-theme="dark"] .ktoc-bar a{color:#cfc8ea}
[data-theme="dark"] .ktoc-bar a.cur{background:#7c5cff;color:#fff}
/* 6. plus de vide sous le pied de page sur mobile */
@media (max-width:980px){body{padding-bottom:0!important}.site-footer{padding-bottom:calc(104px + env(safe-area-inset-bottom))!important}}
/* 7. menu mobile plein écran */
@media (max-width:980px){
html.kfun-menu-open,html.kfun-menu-open body{overflow:hidden!important;overscroll-behavior:none}
html.kfun-menu-open .site-header{background:#14063f!important;border-color:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;z-index:70}
html.kfun-menu-open .site-header .logo{color:#fff}
html.kfun-menu-open .nav-toggle,html.kfun-menu-open .site-header .theme-toggle{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.18);color:#fff}
html.kfun-menu-open .nav-toggle span{background:transparent}
html.kfun-menu-open .nav-toggle span::before{background:#fff;top:0;transform:rotate(45deg)}
html.kfun-menu-open .nav-toggle span::after{background:#fff;top:0;transform:rotate(-45deg)}
.nav-toggle span::before,.nav-toggle span::after{transition:transform .3s cubic-bezier(.3,1.4,.5,1),top .2s}
.site-header .nav.is-open{position:fixed;top:68px;left:0;right:0;bottom:0;height:calc(100vh - 68px);height:calc(100dvh - 68px);overflow:hidden;display:flex;flex-direction:column;justify-content:flex-start;padding:min(4vh,28px) var(--gutter,18px) calc(18px + env(safe-area-inset-bottom));background:#14063f;background-image:radial-gradient(120% 60% at 100% 0%,rgba(124,92,255,.45),transparent 60%),radial-gradient(90% 50% at 0% 100%,rgba(69,1,225,.55),transparent 65%);border:0;z-index:69;color:#fff}
.site-header .nav.is-open .nav__links{display:flex;flex-direction:column;gap:0;margin:0;padding:0}
.site-header .nav.is-open .nav__links li{opacity:0;transform:translateY(18px);animation:kfunIn .5s cubic-bezier(.3,1.4,.5,1) forwards}
.site-header .nav.is-open .nav__links li:nth-child(2){animation-delay:.05s}.site-header .nav.is-open .nav__links li:nth-child(3){animation-delay:.1s}.site-header .nav.is-open .nav__links li:nth-child(4){animation-delay:.15s}.site-header .nav.is-open .nav__links li:nth-child(5){animation-delay:.2s}.site-header .nav.is-open .nav__links li:nth-child(6){animation-delay:.25s}
@keyframes kfunIn{to{opacity:1;transform:none}}
.site-header .nav.is-open .nav__links a{display:flex;align-items:center;justify-content:space-between;padding:min(1.4vh,12px) 0;border:0;border-bottom:1px solid rgba(255,255,255,.12);font-family:var(--font-display);font-size:clamp(26px,5.4vh,42px);font-weight:700;line-height:1.1;letter-spacing:-.02em;color:#fff;background:none!important}
.site-header .nav.is-open .nav__links a::after{content:"↗";font-size:.55em;font-weight:500;opacity:.4;transition:transform .25s,opacity .25s}
.site-header .nav.is-open .nav__links a[aria-current]::after{opacity:1;transform:translate(3px,-3px)}
.site-header .nav.is-open .nav__links a[aria-current]{color:#c9b8ff}
.site-header .nav.is-open .nav__linkedin{margin-top:auto;color:#fff;border-color:rgba(255,255,255,.18);opacity:.85}
.site-header .nav.is-open .lang-menu,.site-header .nav.is-open .lang-switch{margin:12px 0 0}
.site-header .nav.is-open .lang-switch a,.site-header .nav.is-open .lang-menu a{color:#fff;border-color:rgba(255,255,255,.2);background:rgba(255,255,255,.06)}
.site-header .nav.is-open .lang-switch a[aria-current],.site-header .nav.is-open .lang-menu a[aria-current]{background:#fff;color:#14063f}
.site-header .nav.is-open .btn--primary{margin-top:14px!important;min-height:52px;background:#fff!important;color:#14063f!important;border-color:#fff!important;border-radius:999px;font-weight:700}
.site-header .nav.is-open .btn--primary::before{content:"👋";margin-right:8px;display:inline-block;animation:kfunWave 1.6s ease .6s 2}
.kfun-menu-deco{position:absolute;right:-34px;bottom:calc(200px + env(safe-area-inset-bottom));width:140px;height:140px;opacity:.9;pointer-events:none}
.kfun-menu-deco svg{width:100%;height:100%;animation:kfunSpin 22s linear infinite}
.kfun-menu-deco text{font:600 10px/1 var(--font,system-ui);letter-spacing:.18em;text-transform:uppercase;fill:rgba(255,255,255,.55)}
.mobile-cta{transition:transform .25s ease,opacity .2s}
html.kfun-menu-open .mobile-cta{opacity:0;pointer-events:none}
}
@media (max-width:980px) and (max-height:620px){.site-header .nav.is-open .nav__links a{font-size:24px}.kfun-menu-deco{display:none}}
@media (prefers-reduced-motion:reduce){.kfun-breath,.mobile-cta .btn.kfun-wobble,.mobile-cta .btn::after,.kfun-wave.go,.kfun-pbadge svg,.kfun-pbadge .core span,.kfun-menu-deco svg,.site-header .nav.is-open .btn--primary::before{animation:none!important}.site-header .nav.is-open .nav__links li{animation:none;opacity:1;transform:none}.ktoc-bar,.ktoc__list a{transition:none}}
/* contact sans formulaire (30 oct.) */
.kc-ways{display:grid;gap:14px;align-content:start}
.kc-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;width:100%;min-height:84px;padding:18px 22px;border-radius:20px;border:1px solid rgba(69,1,225,.14);background:var(--surface,#fff);color:inherit;text-decoration:none;text-align:left;font:inherit;cursor:pointer;transition:transform .3s cubic-bezier(.3,1.5,.5,1),border-color .2s,box-shadow .3s}
.kc-card:hover{transform:translateY(-3px);border-color:#4501e1;box-shadow:0 18px 40px -26px rgba(69,1,225,.6)}
.kc-card--li{background:#4501e1;border-color:#4501e1;color:#fff}
.kc-card--li small{color:rgba(255,255,255,.78)!important}
.kc-ico{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:rgba(69,1,225,.08);color:#4501e1}
.kc-card--li .kc-ico{background:rgba(255,255,255,.16);color:#fff}
.kc-ico svg{width:22px;height:22px}
.kc-txt strong{display:block;font-size:17px;font-weight:600;line-height:1.3;word-break:break-word}
.kc-txt small{display:block;margin-top:3px;font-size:14px;color:var(--muted,#6b6b7b)}
.kc-arrow{font-size:20px;opacity:.7}.kc-arrow svg{width:18px;height:18px}
.kc-mail{border-style:dashed;border-width:1.5px}
.kc-mail.is-copied{border-color:#16a34a;border-style:solid}
.kc-mail.is-copied .kc-done{color:#16a34a}
.kc-tip{margin-top:6px;font-size:15px;color:var(--muted,#6b6b7b);max-width:34rem}
[data-theme="dark"] .kc-card:not(.kc-card--li){background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.16)}
[data-theme="dark"] .kc-ico{background:rgba(183,164,255,.12);color:#b7a4ff}
[data-theme="dark"] .kc-card--li .kc-ico{color:#fff}
@media (max-width:640px){.kc-card{padding:16px;gap:12px}.kc-txt strong{font-size:15.5px}}
@media (prefers-reduced-motion:reduce){.kc-card{transition:none}}
/* équipe en ce moment : 3 villes sur une ligne (mobile) */
@media (max-width:640px){.kfun-live{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.kfun-live__lab{grid-column:1/-1;margin:0 0 2px}.kfun-city{justify-content:center;gap:.35rem;padding:0 .4rem;font-size:12px;height:30px;min-width:0}.kfun-city b{overflow:hidden;text-overflow:ellipsis}}
.kc-txt small[hidden]{display:none!important}
@media (max-width:640px){.kfun-city{gap:.25rem;padding:0 .25rem;font-size:11.5px;letter-spacing:-.01em}.kfun-city i{width:6px;height:6px;flex-shrink:0}.kfun-city b{overflow:visible;text-overflow:clip}}
/* ===== fun v5 (30 oct. 2026) ===== */
/* 1. fiches membres : liens en grille propre */
.profile__online{gap:10px 16px}
@media (max-width:640px){
.profile__online{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.profile__links{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important;width:100%}
.profile__links li{display:flex;min-width:0}
.profile__links li:last-child:nth-child(odd){grid-column:1/-1}
.profile__link{width:100%;min-height:48px;height:48px;padding:0 12px;justify-content:center;gap:8px;font-size:15px;white-space:nowrap}
}
/* 2. bouton flottant : la main qui salue */
.mobile-cta .btn::after{content:none!important;display:none!important}
.kfun-cta-wave{display:inline-block;margin-right:8px;transform-origin:70% 70%;animation:kfunWaveIdle 6s ease-in-out 1.5s infinite}
@keyframes kfunWaveIdle{0%,78%,100%{transform:rotate(0)}81%{transform:rotate(16deg)}84%{transform:rotate(-8deg)}87%{transform:rotate(14deg)}90%{transform:rotate(-4deg)}93%{transform:rotate(10deg)}96%{transform:rotate(0)}}
/* 3. sous-menu Projets (mobile) */
.nav-sub[hidden]{display:none!important}
@media (min-width:981px){.nav-sub{display:none!important}}
@media (max-width:980px){
.site-header .nav.is-open.nav--sub .nav__links,.site-header .nav.is-open.nav--sub .nav__linkedin,.site-header .nav.is-open.nav--sub .kfun-menu-deco{display:none!important}
.site-header .nav.is-open .nav-sub{display:flex;flex-direction:column;gap:0;color:#fff}
.nav-sub__crumb{display:flex;align-items:center;gap:12px;margin:0 0 min(2vh,14px);font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.nav-sub__crumb b{color:#c9b8ff;font-weight:700}
.nav-sub__back{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px 0 10px;border-radius:999px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);color:#fff;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}
.nav-sub__list{list-style:none;margin:0;padding:0}
.nav-sub__list li{opacity:0;transform:translateX(18px);animation:kfunInX .45s cubic-bezier(.3,1.4,.5,1) forwards}
.nav-sub__list li:nth-child(2){animation-delay:.05s}.nav-sub__list li:nth-child(3){animation-delay:.1s}.nav-sub__list li:nth-child(4){animation-delay:.15s}.nav-sub__list li:nth-child(5){animation-delay:.2s}.nav-sub__list li:nth-child(6){animation-delay:.25s}
@keyframes kfunInX{to{opacity:1;transform:none}}
.nav-sub__list a{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px;padding:min(1.5vh,13px) 0;border-bottom:1px solid rgba(255,255,255,.12);color:#fff;text-decoration:none}
.nav-sub__list a::after{content:"↗";grid-column:2;grid-row:1/3;font-size:20px;opacity:.4;transition:transform .25s,opacity .25s}
.nav-sub__list a[aria-current]::after{opacity:1;transform:translate(3px,-3px)}
.nav-sub__list strong{font-family:var(--font-display);font-size:clamp(24px,4.6vh,36px);font-weight:700;line-height:1.1;letter-spacing:-.02em}
.nav-sub__list span{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:3px}
.nav-sub__list a[aria-current] strong{color:#c9b8ff}
.nav-sub__all{display:inline-flex;margin-top:14px;font-weight:700;color:#c9b8ff;text-decoration:none}
}
@media (prefers-reduced-motion:reduce){.kfun-cta-wave{animation:none}.nav-sub__list li{animation:none;opacity:1;transform:none}}

/* fix iPhone : le survol des flèches avalait le premier tap dans le menu mobile */
@media (hover:hover) and (pointer:fine){.site-header .nav.is-open .nav__links a:hover::after,.nav-sub__list a:hover::after{opacity:1;transform:translate(3px,-3px)}}
.site-header .nav a,.nav-sub__back{touch-action:manipulation;-webkit-tap-highlight-color:rgba(255,255,255,.08)}
.site-header .nav.is-open .nav-sub{position:relative;z-index:2}
/* fix sliders mobiles (projets livrés, prototypes, équipe) : défilement horizontal seulement, carte bloquée dans son cadre */
@media (max-width:980px){
#travaux .grid,#secteurs .concept-grid,#collectif .team{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;align-items:stretch}
#travaux .grid::-webkit-scrollbar,#secteurs .concept-grid::-webkit-scrollbar,#collectif .team::-webkit-scrollbar{display:none}
#travaux .grid>*,#secteurs .concept-grid>*,#collectif .team>*{scroll-snap-stop:always;min-width:0}
#travaux .grid>.kfun-rev,#secteurs .concept-grid>.kfun-rev,#collectif .team>.kfun-rev,
#travaux .grid>.reveal,#secteurs .concept-grid>.reveal,#collectif .team>.reveal,
#travaux .grid>.kfun-tilt,#secteurs .concept-grid>.kfun-tilt{opacity:1!important;transform:none!important;transition:none!important}
}

.member__community[data-hello]::after{content:none!important;display:none!important}
/* libellé « Chez nous, il est » plus lisible sur ordinateur */
.kfun-live__lab{font-size:16px;font-weight:600;color:var(--ink,#16132b);margin-right:.5rem;letter-spacing:-.005em}
[data-theme="dark"] .kfun-live__lab,.hero--dark .kfun-live__lab{color:#fff}
@media (max-width:640px){.kfun-live__lab{font-size:14px}}
@media (min-width:641px){.kfun-city{height:38px;padding:0 .95rem;font-size:15px}}
/* ===== fix 31/10 : menu mobile, le sous-menu Projets reste accessible sur tous les écrans ===== */
@media (max-width:980px){
.site-header .nav.is-open{overflow-y:auto!important;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.site-header .nav.is-open.nav--sub .nav-sub{padding-bottom:calc(24px + env(safe-area-inset-bottom))}
.nav-sub__list a{padding:min(1.2vh,11px) 0}
.nav-sub__list strong{font-size:clamp(22px,3.9vh,34px)}
.nav-sub__all{display:flex!important;align-items:center;justify-content:center;width:100%;min-height:52px;margin-top:18px!important;border-radius:999px;background:#fff;color:#14063f!important;font-size:16px}
}
@media (max-width:980px) and (max-height:700px){.nav-sub__list span{font-size:11.5px}.nav-sub__list a{padding:8px 0}.nav-sub__list strong{font-size:22px}}
/* ===== fix 31/10 (2) : menu mobile — plus de bande blanche ni d'en-tête coupé sur iPhone =====
   Quand le menu est ouvert, la page (body) est figée en position:fixed : l'en-tête « sticky »
   n'y est plus fiable sur iOS (il remonte et laisse voir la page entre lui et le menu).
   On fixe donc l'en-tête en haut de l'écran et le panneau du menu démarre à 0, sous lui. */
@media (max-width:980px){
html.kfun-menu-open .site-header{position:fixed!important;top:0!important;left:0;right:0;transform:none!important;padding-top:env(safe-area-inset-top)}
html.kfun-menu-open .site-header::after{content:"";position:fixed;top:0;left:0;right:0;height:calc(68px + env(safe-area-inset-top));background:#14063f;z-index:2;pointer-events:none}
html.kfun-menu-open .site-header .logo,html.kfun-menu-open .site-header .theme-toggle,html.kfun-menu-open .site-header .nav-toggle{position:relative;z-index:3}
.site-header .nav.is-open{top:0!important;bottom:0!important;height:auto!important;max-height:none!important;z-index:1!important;padding-top:calc(68px + env(safe-area-inset-top) + min(4vh,28px))!important}
}
/* ===== 01/11 : la bulle « Salut » passe en haut pour ne plus cacher « Disponible » ===== */
.member__photo[data-hello]::after{bottom:auto!important;top:10px;border-radius:999px 999px 999px 4px;transform-origin:0 0}
/* ===== 01/11 : « chez lui, en ce moment » sur chaque fiche membre ===== */
.kvie{display:flex;gap:14px;align-items:flex-start;margin:18px 0 6px;padding:14px 16px;border:1px solid rgba(124,92,255,.22);border-radius:16px;background:rgba(124,92,255,.07);max-width:560px}
.kvie__ico{flex:none;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:rgba(124,92,255,.14);font-size:21px}
.kvie__haut{margin:0 0 3px;font-size:13px;letter-spacing:.02em;opacity:.75}
.kvie__haut time{font-variant-numeric:tabular-nums;font-weight:700;opacity:1;color:#7c5cff}
[data-theme="dark"] .kvie__haut time,.profile--dark .kvie__haut time{color:#c9b8ff}
.kvie__txt{margin:0;font-size:16px;line-height:1.45;transition:opacity .3s}
.kvie__txt.out{opacity:0}
.kvie__txt a{color:inherit;text-decoration:underline;text-underline-offset:3px}
/* 01/11 soir : indices de slider sur téléphone */
.kslide{-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - 36px),transparent)}
.kslide.kslide--fin{-webkit-mask-image:none;mask-image:none}
.kslide__pts{display:flex;justify-content:center;gap:6px;margin-top:14px}
.kslide__pts i{width:6px;height:6px;border-radius:999px;background:currentColor;opacity:.22;transition:width .25s ease,opacity .25s ease}
.kslide__pts i.on{width:18px;opacity:.75}
@media (prefers-reduced-motion:reduce){.kslide__pts i{transition:none}}
