/*! LemmiLink Chat — écran « Radar à opportunités » v2 (29/10/2026). Préfixe .lmkr-, chargé APRÈS lmk-chat.css.
 * Uniquement transform/opacity pour les boucles ; une seule horloge (3 s) partagée faisceau ↔ flash des points (cf. P.rPhase). */
.lmkr{--rp:#d42e54;--rp6:#b8264a;--rd:3000ms}

/* ── mise en page : empilé par défaut, 2 colonnes dès 820 px de cadre (container query) ── */
.lmkc-rad.lmkr{container-type:inline-size;position:relative;flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:safe center;justify-content:center;gap:1.4rem 4rem;padding:1.6rem 1.1rem 1.4rem;text-align:center;
  background:radial-gradient(55% 60% at 50% 32%,#fff 0,rgba(255,255,255,0) 70%),radial-gradient(120% 90% at 50% 100%,#fbeef1 0,#fbf8f5 60%)}
.lmkr-viz{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:.8rem}
.lmkr-side{flex:0 0 100%;max-width:560px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.85rem}
@container (min-width:820px){
  .lmkc-rad.lmkr{padding:2rem 2.5rem}
  .lmkr-side{flex:1 1 360px;align-items:flex-start;text-align:left}
  .lmkr-scope{width:min(440px,44cqw,calc(100vh - 230px))!important}
}

/* ── radar ── */
.lmkr-scope{position:relative;width:min(290px,74cqw);min-width:200px;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,#fff 0,#fff 16%,#fdf4f6 58%,#fae6ec 100%);
  box-shadow:0 0 0 1px rgba(212,46,84,.16),0 0 0 12px rgba(212,46,84,.035),0 0 0 13px rgba(212,46,84,.07),0 46px 90px -42px rgba(212,46,84,.6),inset 0 0 46px rgba(212,46,84,.07);
  transition:transform .6s cubic-bezier(.7,0,.3,1),opacity .4s .22s;animation:lmkr-in .7s cubic-bezier(.2,.8,.2,1) backwards}
.lmkr-grid,.lmkr-ring,.lmkr-ticks,.lmkr-orbit,.lmkr-wave,.lmkr-sweep,.lmkr-dots,.lmkr-comps{position:absolute;inset:0;border-radius:50%;pointer-events:none}
.lmkr-grid{background:linear-gradient(rgba(212,46,84,.075) 1px,transparent 1px) 50% 50%/8.333% 8.333%,linear-gradient(90deg,rgba(212,46,84,.075) 1px,transparent 1px) 50% 50%/8.333% 8.333%;
  -webkit-mask:radial-gradient(closest-side,#000 40%,transparent 100%);mask:radial-gradient(closest-side,#000 40%,transparent 100%)}
.lmkr-grid::before,.lmkr-grid::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(212,46,84,.16),rgba(212,46,84,.16)) 50% 0/1px 100% no-repeat,linear-gradient(rgba(212,46,84,.16),rgba(212,46,84,.16)) 0 50%/100% 1px no-repeat}
.lmkr-grid::after{transform:rotate(45deg);opacity:.45}
.lmkr-ring{border:1px solid rgba(212,46,84,.2);animation:lmkr-breathe var(--rd) ease-in-out infinite}
.lmkr-ring:nth-child(3){inset:13%;animation-delay:-.4s}
.lmkr-ring:nth-child(4){inset:26%;animation-delay:-.8s}
.lmkr-ring:nth-child(5){inset:38%;border-color:rgba(212,46,84,.28);animation-delay:-1.2s}
.lmkr-ticks{inset:-8px;background:repeating-conic-gradient(rgba(212,46,84,.32) 0 .7deg,transparent .7deg 6deg);
  -webkit-mask:radial-gradient(closest-side,transparent 93%,#000 94%,#000 99%,transparent 100%);mask:radial-gradient(closest-side,transparent 93%,#000 94%,#000 99%,transparent 100%)}
.lmkr-ticks::after{content:"";position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(var(--rp) 0 1.2deg,transparent 1.2deg 30deg);
  -webkit-mask:radial-gradient(closest-side,transparent 88%,#000 89%,#000 99%,transparent 100%);mask:radial-gradient(closest-side,transparent 88%,#000 89%,#000 99%,transparent 100%);opacity:.55}
.lmkr-orbit{inset:13%;border:1px dashed rgba(212,46,84,.32);animation:lmkr-spin 40s linear infinite;transition:border-color .5s}
.lmkr-orbit::after{content:"";position:absolute;left:50%;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;border:2px solid var(--rp);background:#fff;opacity:0;transform:scale(.4);transition:opacity .4s,transform .4s}
.lmkr-scope[data-phase=competitors] .lmkr-orbit{border-color:rgba(212,46,84,.7);animation-duration:5s}
.lmkr-scope[data-phase=competitors] .lmkr-orbit::after{opacity:1;transform:scale(1)}
.lmkr-wave{inset:38%;border:2px solid rgba(212,46,84,.4);opacity:0;animation:lmkr-wave var(--rd) cubic-bezier(.2,.6,.3,1) infinite}
.lmkr-wave+.lmkr-wave{animation-delay:calc(var(--rd) / -2)}
.lmkr-sweep{background:conic-gradient(from 0deg,rgba(212,46,84,0) 0deg,rgba(212,46,84,0) 240deg,rgba(212,46,84,.045) 285deg,rgba(212,46,84,.13) 325deg,rgba(212,46,84,.3) 350deg,rgba(212,46,84,.52) 359.4deg,rgba(212,46,84,0) 360deg);
  animation:lmkr-spin var(--rd) linear infinite;will-change:transform}
.lmkr-sweep::after{content:"";position:absolute;left:calc(50% - 1px);top:1%;width:2px;height:49%;border-radius:2px;background:linear-gradient(to top,rgba(212,46,84,0),var(--rp))}

/* points : extérieur = apparition, intérieur = flash synchronisé au faisceau */
.lmkr-dot{position:absolute;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;z-index:2}
.lmkr-dot i{display:block;width:100%;height:100%;border-radius:50%;background:var(--rp);animation:lmkr-hit var(--rd) linear infinite}
.lmkr-dot--g{width:5px;height:5px;margin:-2.5px 0 0 -2.5px;opacity:0;transition:opacity .9s}
.lmkr-dot--g i{background:#e9809a}
.lmkr-dot--g.is-on{opacity:.75}
.lmkr-scope[data-phase=radar] .lmkr-dot--g.is-on,.lmkr-scope[data-phase=offers] .lmkr-dot--g.is-on{opacity:1}
.lmkr.is-reveal .lmkr-dot--g.is-on{opacity:.4}
.lmkr-dot--o{animation:lmkr-pop .5s cubic-bezier(.2,1.7,.4,1) both}
.lmkr-dot--o i{box-shadow:0 0 0 2px #fff}
.lmkr-dot--big{width:10px;height:10px;margin:-5px 0 0 -5px}

/* concurrents réels (résultat API) */
.lmkr-comp{position:absolute;width:0;height:0;z-index:5;animation:lmkr-pop .6s cubic-bezier(.2,1.5,.4,1) both}
.lmkr-comp::before{content:"";position:absolute;left:-18px;top:-18px;width:36px;height:36px;border-radius:50%;border:2px solid var(--rp);animation:lmkr-ripple 1.1s ease-out both;animation-delay:inherit}
.lmkr-comp .lmkr-fav{position:absolute;left:-17px;top:-17px;width:34px;height:34px}
.lmkr-comp b{position:absolute;top:21px;left:0;transform:translateX(-50%);max-width:124px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:.12rem .5rem;border-radius:999px;background:#fff;border:1px solid #f1d5dc;box-shadow:0 6px 14px -8px rgba(21,22,27,.35);font-size:.7rem;font-weight:650;line-height:1.35;color:#15161b}
.lmkr-fav{position:relative;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;overflow:hidden;box-shadow:0 0 0 1px rgba(21,22,27,.08),0 8px 18px -8px rgba(21,22,27,.4)}
.lmkr-fav::before{content:attr(data-l);position:absolute;font-weight:750;font-size:.95rem;color:var(--rp)}
.lmkr-fav img{position:relative;width:58%;height:58%;object-fit:contain;background:#fff;border-radius:4px}

/* le site du client, au centre */
.lmkr-core{position:absolute;inset:39%;z-index:6;animation:lmkr-beat 1.5s ease-in-out infinite}
.lmkr-fav--me{width:100%;height:100%;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--rp),0 14px 30px -8px rgba(212,46,84,.65)}
.lmkr-fav--me::before{font-size:clamp(1.1rem,6cqw,1.7rem)}
.lmkr-fav--me img{width:54%;height:54%}
.lmkr-lock{position:absolute;inset:-22%;border-radius:50%;border:1.5px dashed rgba(212,46,84,.55);animation:lmkr-spin 12s linear infinite reverse}
.lmkr-me{margin:0!important;padding:.22rem .8rem;border-radius:999px;background:#fff;border:1px solid #f6d5dd;color:var(--rp6);font-size:.84rem;font-weight:650;max-width:90cqw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── colonne texte ── */
.lmkr-kick{display:inline-flex;align-items:center;gap:.45rem;margin:0!important;padding:.3rem .8rem;border-radius:999px;background:#fff;border:1px solid #f6d5dd;color:var(--rp6);font-size:.72rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.lmkr-kick i{width:8px;height:8px;border-radius:50%;background:var(--rp);animation:lmkr-live 1.2s ease-in-out infinite}
.lmkr-kick span{opacity:.5}
.lmkr-kick b{font-weight:inherit}
.lmkr-kick.is-done i{animation:none;background:#16a34a}
.lmkr-kick .lmkc-clock{letter-spacing:.02em;opacity:1}
.lmkr .lmkr-title{margin:0!important;font-size:clamp(1.35rem,3.4cqw,2rem);font-weight:750;letter-spacing:-.03em;line-height:1.15;color:#15161b;text-wrap:balance}
.lmkr-micro{margin:-.35rem 0 0!important;min-height:1.5em;overflow:hidden;color:#5f6370;font-size:.95rem}
.lmkr-micro span{display:inline-block;animation:lmkr-up .45s cubic-bezier(.2,.8,.2,1) both}

.lmkr-steps{list-style:none;margin:.25rem 0 0!important;padding:0!important;width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}
.lmkr-step{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.2rem .55rem;padding:.7rem .75rem .75rem;border-radius:14px;background:#fff;border:1px solid #ebe5df;text-align:left;transition:border-color .35s,box-shadow .35s,transform .35s}
.lmkr-step.is-run{border-color:#f3c2cf;box-shadow:0 14px 28px -18px rgba(212,46,84,.65);transform:translateY(-2px)}
.lmkr-n{position:relative;width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#f2eeea;color:#8a8e99;font-size:.75rem;font-weight:700;transition:background .3s,color .3s}
.lmkr-n b{transition:opacity .2s,transform .3s}
.lmkr-ck{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0}
.lmkr-ck svg{width:14px;height:14px}
.lmkr-ck path{stroke-dasharray:24;stroke-dashoffset:24}
.is-run .lmkr-n{background:#fdf2f5;color:var(--rp);animation:lmkr-ring 1.4s ease-out infinite}
.is-done .lmkr-n{background:#178d72;color:#fff;animation:lmkr-bounce .55s cubic-bezier(.2,1.7,.4,1)}
.is-done .lmkr-n b{opacity:0;transform:scale(.3)}
.is-done .lmkr-ck{opacity:1}
.is-done .lmkr-ck path{stroke-dashoffset:0;transition:stroke-dashoffset .45s .12s ease-out}
.lmkr-lab{min-width:0;display:flex;flex-direction:column;line-height:1.2}
.lmkr-lab b{font-size:.86rem;font-weight:650;color:#15161b;line-height:1.15}
.lmkr-lab small{font-size:.72rem;color:#8a8e99;margin-top:.1rem}
.is-run .lmkr-lab small{color:var(--rp6)}
.is-done .lmkr-lab small{color:#178d72}
.lmkr-bar{grid-column:1/-1;display:block;height:4px;margin-top:.4rem;border-radius:99px;background:#f2eeea;overflow:hidden}
.lmkr-bar s{position:relative;display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#f08aa1,var(--rp));transform-origin:0 50%;transform:scaleX(0);overflow:hidden;will-change:transform}
.is-run .lmkr-bar s::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:lmkr-shim 1.1s linear infinite}
.is-done .lmkr-bar s{background:linear-gradient(90deg,var(--rp),var(--rp6))}

.lmkr-stats{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.55rem}
.lmkr-stat{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.7rem .8rem;border-radius:14px;background:#fff;border:1px solid #ebe5df;text-align:left;position:relative;overflow:hidden}
.lmkr-stat b{font-size:clamp(1.3rem,3cqw,1.75rem);font-weight:750;letter-spacing:-.03em;line-height:1.05;font-variant-numeric:tabular-nums;color:#15161b}
.lmkr-stat span{font-size:.74rem;line-height:1.25;color:#5f6370}
.lmkr-stat small{font-size:inherit}
.lmkr-stat.is-wait b{color:#d9d1ca}
.lmkr-stat.is-wait::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 35%,rgba(212,46,84,.07) 50%,transparent 65%);transform:translateX(-100%);animation:lmkr-sweepx 1.8s ease-in-out infinite}
.lmkr-stat.is-live{border-color:#f3c2cf;animation:lmkr-glow .8s cubic-bezier(.2,1.4,.4,1) both}
.lmkr-stat.is-live:nth-child(2){animation-delay:.26s}.lmkr-stat.is-live:nth-child(3){animation-delay:.52s}
.lmkr-stat.is-live:nth-child(3) b{color:var(--rp)}
.lmkr .lmkc-src{margin:0!important;font-size:.76rem;color:#8a8e99}
.lmkr>.lmkc-note{flex:0 0 100%;max-width:560px;justify-content:center}
.lmkr:not([aria-busy]):not(.is-exit) .lmkr-sweep{animation-play-state:paused;opacity:.3}

/* ── sortie : le radar se rétracte dans l'avatar du conseiller ── */
.lmkr.is-exit .lmkr-scope{transform:translate(var(--ex,0),var(--ey,-240px)) scale(var(--es,.1));opacity:0}
.lmkr.is-exit .lmkr-me,.lmkr.is-exit .lmkr-side{opacity:0;transform:translateY(16px);transition:opacity .3s,transform .45s cubic-bezier(.7,0,.3,1)}
/* entrée du chat : avatar qui « reçoit » le radar, diagnostic en cascade */
.lmkc--enter .lmkc-head .lmkc-ava{animation:lmkr-land .75s cubic-bezier(.2,1.5,.4,1) both}
.lmkc--enter .lmkc-msg--a{animation:lmkr-rise .5s cubic-bezier(.2,.8,.2,1) both}
.lmkc--enter .lmkc-body>.lmkc-card{animation:lmkr-rise .65s cubic-bezier(.2,.8,.2,1) both}
.lmkc--enter .lmkc-body>.lmkc-card:nth-child(3){animation-delay:.14s}
.lmkc--enter .lmkc-body>.lmkc-card:nth-child(4){animation-delay:.28s}
.lmkc--enter .lmkc-body>.lmkc-card:nth-child(5){animation-delay:.42s}
.lmkc--enter .lmkc-body>.lmkc-card:nth-child(n+6){animation-delay:.56s}
.lmkc--enter .lmkc-kpi{animation:lmkr-rise .5s cubic-bezier(.2,.8,.2,1) both}
.lmkc--enter .lmkc-kpi:nth-child(2){animation-delay:.08s}.lmkc--enter .lmkc-kpi:nth-child(3){animation-delay:.16s}.lmkc--enter .lmkc-kpi:nth-child(4){animation-delay:.24s}.lmkc--enter .lmkc-kpi:nth-child(n+5){animation-delay:.32s}

/* ── mobile / cadres étroits ── */
@container (max-width:520px){
  .lmkc-rad.lmkr{gap:1.1rem;padding:1.1rem .85rem 1rem}
  .lmkr-side{gap:.7rem}
  .lmkr-scope{width:min(250px,68cqw)}
  .lmkr-steps,.lmkr-stats{gap:.4rem}
  .lmkr-step{grid-template-columns:1fr;justify-items:center;text-align:center;padding:.55rem .35rem .6rem;gap:.3rem}
  .lmkr-lab{align-items:center}
  .lmkr-lab b{font-size:.76rem;white-space:normal;line-height:1.15}
  .lmkr-lab small{font-size:.68rem}
  .lmkr-stat{align-items:center;text-align:center;padding:.55rem .35rem}
  .lmkr-stat small{display:none}
  .lmkr-comp b{max-width:96px;font-size:.64rem}
  .lmkr-comp .lmkr-fav{left:-14px;top:-14px;width:28px;height:28px}
  .lmkr-comp::before{left:-15px;top:-15px;width:30px;height:30px}
  .lmkr-comp b{top:17px}
  .lmkr .lmkc-src{font-size:.7rem}
}

@keyframes lmkr-spin{to{transform:rotate(360deg)}}
@keyframes lmkr-in{from{opacity:0;transform:scale(.86) rotate(-20deg)}to{opacity:1;transform:none}}
@keyframes lmkr-breathe{0%,100%{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.012)}}
@keyframes lmkr-wave{0%{opacity:.75;transform:scale(1)}100%{opacity:0;transform:scale(4.2)}}
@keyframes lmkr-hit{0%{transform:scale(2.1);opacity:1}10%{transform:scale(1);opacity:1}100%{transform:scale(1);opacity:.42}}
@keyframes lmkr-pop{0%{opacity:0;transform:scale(0)}100%{opacity:1;transform:scale(1)}}
@keyframes lmkr-ripple{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(2.6)}}
@keyframes lmkr-beat{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes lmkr-live{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}
@keyframes lmkr-up{from{opacity:0;transform:translateY(70%)}to{opacity:1;transform:none}}
@keyframes lmkr-ring{0%{box-shadow:0 0 0 0 rgba(212,46,84,.4)}100%{box-shadow:0 0 0 9px rgba(212,46,84,0)}}
@keyframes lmkr-bounce{0%{transform:scale(.5)}100%{transform:scale(1)}}
@keyframes lmkr-shim{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes lmkr-sweepx{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
@keyframes lmkr-glow{0%{transform:scale(.94)}100%{transform:scale(1)}}
@keyframes lmkr-rise{from{opacity:0;transform:translateY(18px) scale(.985)}to{opacity:1;transform:none}}
@keyframes lmkr-land{0%{transform:scale(1.9)}55%{transform:scale(.9)}100%{transform:scale(1)}}

/* version sobre : pas de rotation ni d'ondes, tout apparaît directement (la règle globale de lmk-chat.css coupe les animations) */
@media (prefers-reduced-motion:reduce){
  .lmkr-sweep{opacity:.4}
  .lmkr-wave,.lmkr-lock,.lmkr-stat.is-wait::after{display:none}
  .lmkr-dot i{opacity:.8}
  .lmkr-scope,.lmkr.is-exit .lmkr-side{transition:none!important}
}

/* QA2 : radar en calque au-dessus du chat pendant sa sortie (diagnostic déjà affiché dessous, aucun clic intercepté) */
.lmkc-radov{position:absolute;inset:0;z-index:30;pointer-events:none;display:flex;overflow:hidden}
.lmkc-radov>.lmkr{flex:1;background:transparent!important}
.lmkr.is-ov .lmkr-me,.lmkr.is-ov .lmkr-side,.lmkr.is-ov .lmkr-title,.lmkr.is-ov .lmkr-micro,.lmkr.is-ov .lmkc-rad-dom{opacity:0;transition:opacity .25s}
