/* Kids' Island — Assistant de l'espace client (bulle en bas à droite + fenêtre de verre).
   Même verre vert profond que le menu, la barre latérale et les bandeaux. */
.ka-launcher{
  position:fixed; right:18px; bottom:18px; z-index:10010;
  width:84px; height:96px; padding:0; border:0; background:none; cursor:pointer;
  display:block;
  filter:drop-shadow(0 16px 24px rgba(16,54,45,.3));
  -webkit-tap-highlight-color:transparent;
}
.ka-launcher img{
  width:100%; height:100%; object-fit:contain; display:block;
  transform-origin:50% 6%;
  animation:kaSwing 3.6s ease-in-out infinite alternate;
}
/* Balancement accroché aux ballons : pivot en haut, de gauche à droite et retour. */
@keyframes kaSwing{
  0%{ transform:rotate(-9deg) translateY(0) }
  50%{ transform:rotate(0deg) translateY(-3px) }
  100%{ transform:rotate(9deg) translateY(0) }
}
.ka-launcher:hover img{ animation-duration:1.8s; }
.ka-launcher:focus-visible{ outline:none; }
.ka-launcher:focus-visible img{ filter:drop-shadow(0 0 0 3px #fff) drop-shadow(0 0 0 6px #F47D60); }
.ka-launcher .ka-dot{
  position:absolute; right:10px; bottom:14px;
  width:14px; height:14px; border-radius:50%;
  background:#34c759; border:2px solid #fff; box-shadow:0 2px 6px rgba(0,0,0,.25);
}

/* Bulle d'accueil */
.ka-hello{
  position:fixed; right:108px; bottom:34px; z-index:10011;
  max-width:min(260px, calc(100vw - 140px));
  padding:12px 14px;
  border:1px solid rgba(255,255,255,.85); border-radius:18px 18px 4px 18px;
  background:rgba(255,255,255,.86);
  -webkit-backdrop-filter:blur(16px) saturate(150%); backdrop-filter:blur(16px) saturate(150%);
  box-shadow:0 1px 0 #fff inset, 0 18px 40px -20px rgba(16,54,45,.45);
  color:#10362d; font:600 .9rem/1.4 'DM Sans',system-ui,sans-serif;
  opacity:0; transform:translate3d(10px,8px,0) scale(.96); filter:blur(8px);
  pointer-events:none; visibility:hidden;
  transition:opacity .35s ease, transform .5s cubic-bezier(.16,1,.3,1), filter .4s ease, visibility 0s linear .5s;
}
.ka-hello.is-on{ opacity:1; transform:none; filter:blur(0); pointer-events:auto; visibility:visible; transition:opacity .35s ease, transform .5s cubic-bezier(.16,1,.3,1), filter .4s ease, visibility 0s; }
.ka-hello button{
  position:absolute; top:-8px; left:-8px;
  width:24px; height:24px; border-radius:50%; border:1px solid rgba(16,54,45,.12);
  background:#fff; color:#10362d; font-size:.9rem; line-height:1; cursor:pointer;
  box-shadow:0 4px 10px -4px rgba(0,0,0,.3);
}

/* Fenêtre */
.ka-panel{
  position:fixed; right:18px; bottom:124px; z-index:10015;
  width:min(380px, calc(100vw - 24px));
  height:min(620px, calc(100dvh - 150px));
  display:flex; flex-direction:column;
  border:1px solid rgba(255,255,255,.24); border-radius:30px;
  background:
    radial-gradient(60% 50% at 10% 0%, rgba(129,191,229,.24), transparent 60%),
    radial-gradient(50% 40% at 100% 100%, rgba(244,125,96,.22), transparent 60%),
    rgba(10,44,37,.72);
  -webkit-backdrop-filter:blur(30px) saturate(170%); backdrop-filter:blur(30px) saturate(170%);
  box-shadow:0 1px 0 rgba(255,255,255,.22) inset, 0 40px 90px -30px rgba(0,0,0,.65);
  color:#fff; font-family:'DM Sans',system-ui,sans-serif;
  opacity:0; transform:translate3d(0,24px,0) scale(.96); filter:blur(12px);
  visibility:hidden; pointer-events:none;
  transition:opacity .28s ease, transform .42s cubic-bezier(.16,1,.3,1), filter .36s ease, visibility 0s linear .42s;
}
.ka-panel.is-open{ opacity:1; transform:none; filter:blur(0); visibility:visible; pointer-events:auto; transition:opacity .28s ease, transform .42s cubic-bezier(.16,1,.3,1), filter .36s ease, visibility 0s; }
.ka-head{ display:flex; align-items:center; gap:12px; padding:14px 14px 12px 16px; border-bottom:1px solid rgba(255,255,255,.12); }
.ka-head img{ width:42px; height:48px; object-fit:contain; flex:0 0 auto; }
.ka-head strong{ display:block; font-size:1rem; letter-spacing:-.01em; }
.ka-head small{ display:block; margin-top:2px; color:rgba(255,255,255,.66); font-size:.76rem; }
.ka-role{
  display:inline-block; margin-top:4px; padding:2px 9px; border-radius:999px;
  background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.18);
  font-size:.62rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.85);
}
.ka-close{
  margin-left:auto; width:40px; height:40px; flex:0 0 auto;
  border:1px solid rgba(255,255,255,.2); border-radius:50%;
  background:rgba(255,255,255,.12); color:#fff; font-size:1.3rem; line-height:1; cursor:pointer;
  display:grid; place-items:center;
}
.ka-body{ flex:1 1 auto; min-height:0; overflow:auto; overscroll-behavior:contain; padding:14px 14px 8px; display:flex; flex-direction:column; gap:10px; }
.ka-msg{ max-width:88%; padding:10px 14px; border-radius:18px; font-size:.92rem; line-height:1.5; white-space:pre-line; }
.ka-msg.bot{ align-self:flex-start; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.14); border-bottom-left-radius:6px; }
.ka-msg.me{ align-self:flex-end; background:#fff; color:#10362d; border-bottom-right-radius:6px; }
.ka-msg b{ font-weight:700; }
.ka-actions{ display:flex; flex-wrap:wrap; gap:6px; align-self:flex-start; max-width:92%; }
.ka-chip{
  min-height:36px; padding:7px 13px;
  border:1px solid rgba(255,255,255,.22); border-radius:999px;
  background:rgba(255,255,255,.1); color:#fff;
  font-family:inherit; font-size:.82rem; font-weight:600; cursor:pointer; text-align:left;
  transition:background .15s ease, transform .15s cubic-bezier(.16,1,.3,1);
}
.ka-chip:hover{ background:rgba(255,255,255,.2); }
.ka-chip:active{ transform:scale(.97); }
.ka-chip.go{ background:#F47D60; border-color:#F47D60; }
.ka-chip.go:hover{ background:#f0694a; }
.ka-chip:focus-visible, .ka-close:focus-visible, .ka-send:focus-visible{ outline:none; box-shadow:0 0 0 2px rgba(10,44,37,.9), 0 0 0 5px #F47D60; }
.ka-typing{ align-self:flex-start; display:flex; gap:4px; padding:12px 14px; }
.ka-typing i{ width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.7); animation:kaDots 1s ease-in-out infinite; }
.ka-typing i:nth-child(2){ animation-delay:.15s } .ka-typing i:nth-child(3){ animation-delay:.3s }
@keyframes kaDots{ 0%,100%{ opacity:.3; transform:translateY(0) } 50%{ opacity:1; transform:translateY(-3px) } }
.ka-form{ display:flex; gap:8px; padding:10px 12px calc(12px + env(safe-area-inset-bottom,0px)); border-top:1px solid rgba(255,255,255,.12); }
.ka-input{
  flex:1 1 auto; min-width:0; min-height:44px; padding:10px 14px;
  border:1px solid rgba(255,255,255,.2); border-radius:14px;
  background:rgba(255,255,255,.12); color:#fff; font:inherit; font-size:.95rem;
}
.ka-input::placeholder{ color:rgba(255,255,255,.55); }
.ka-input:focus{ outline:none; border-color:rgba(255,255,255,.5); background:rgba(255,255,255,.16); }
.ka-send{
  width:44px; height:44px; flex:0 0 auto;
  border:0; border-radius:14px; background:#F47D60; color:#fff; cursor:pointer;
  display:grid; place-items:center;
}
.ka-send svg{ width:20px; height:20px; }

@media (max-width:980px){
  .ka-launcher{ right:12px; bottom:calc(92px + env(safe-area-inset-bottom,0px)); width:70px; height:80px; }
  .ka-hello{ right:92px; bottom:calc(104px + env(safe-area-inset-bottom,0px)); }
  .ka-panel{ right:12px; left:12px; width:auto; bottom:calc(180px + env(safe-area-inset-bottom,0px)); height:min(560px, calc(100dvh - 200px)); }
  #portal-dashboard.kg-dock-hidden ~ .ka-launcher{ bottom:18px; }
}
@media (max-width:980px) and (max-height:700px){
  .ka-panel{ bottom:calc(96px + env(safe-area-inset-bottom,0px)); height:calc(100dvh - 120px); }
}
html.ki-borne-mode .ka-launcher, html.ki-borne-mode .ka-panel, html.ki-borne-mode .ka-hello{ display:none !important; }
html:not(.ka-on) .ka-launcher, html:not(.ka-on) .ka-panel, html:not(.ka-on) .ka-hello{ display:none !important; }
#portal-dashboard.ki-sidebar-open ~ .ka-launcher, #portal-dashboard.ki-sidebar-open ~ .ka-hello{ opacity:0; pointer-events:none; }
html.portal-open body.dark-mode .ka-panel{ background:rgba(12,14,13,.8); }
html.portal-open body.dark-mode .ka-hello{ background:rgba(28,34,31,.9); color:#e6e6e3; border-color:rgba(255,255,255,.14); }
html.portal-open body.dark-mode .ka-hello button{ background:#26211b; color:#e6e6e3; }
@media (prefers-reduced-motion:reduce){
  .ka-launcher img{ animation:none; }
  .ka-panel, .ka-hello{ transition:none; transform:none; filter:none; }
  .ka-typing i{ animation:none; }
}
