/* 花朵 AI 客服：浮标、盛开动画、对话框 */
.fl{position:fixed;left:0;top:0;width:72px;height:72px;z-index:108;touch-action:none;user-select:none;-webkit-user-select:none}
.fl-sway{width:100%;height:100%;will-change:transform}
.fl-bob{width:100%;height:100%;animation:fl-bob 4.2s ease-in-out infinite}
@keyframes fl-bob{50%{transform:translateY(-7px) rotate(2deg)}}
.fl-btn{position:relative;display:block;width:100%;height:100%;border-radius:50%;cursor:grab}
.fl.is-drag .fl-btn{cursor:grabbing}
.fl-halo{position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(circle,#94d6ff33 0%,#3d6bff1a 45%,transparent 70%);animation:fl-halo 3s ease-in-out infinite}
@keyframes fl-halo{50%{transform:scale(1.18);opacity:.6}}
.fl-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 8px #7fb8ffaa) drop-shadow(0 4px 10px #000a)}
.fl-petal{transform-box:view-box;transform-origin:50px 54px;transition:transform .9s cubic-bezier(.25,1.5,.45,1);transform:rotate(calc((var(--i) - 2.5) * 14deg)) scale(.62,.8)}
.fl-btn:hover .fl-petal,.fl.is-peek .fl-petal{transform:rotate(calc((var(--i) - 2.5) * 30deg)) scale(.78,.9)}
.fl.is-open .fl-petal{transform:rotate(calc(var(--i) * 60deg)) scale(1)}
.fl-core{transform-box:view-box;transform-origin:50px 54px;transition:transform .8s cubic-bezier(.3,1.6,.5,1)}
.fl.is-open .fl-core{transform:scale(1.3)}
.fl-core-glow{animation:fl-core 2.4s ease-in-out infinite;transform-box:view-box;transform-origin:50px 54px}
@keyframes fl-core{50%{opacity:.35;transform:scale(1.4)}}
.fl-tip{position:absolute;bottom:calc(100% + 10px);right:-2px;white-space:nowrap;font-size:13px;letter-spacing:.06em;color:#e6eeff;background:linear-gradient(120deg,#0f2357ee,#1a1146ee);border:1px solid #94d6ff55;padding:8px 13px;border-radius:14px 14px 4px 14px;box-shadow:0 0 18px #3d6bff55;opacity:0;transform:translateY(6px) scale(.9);transform-origin:bottom right;transition:opacity .35s,transform .45s cubic-bezier(.3,1.6,.5,1);pointer-events:none}
.fl-tip b{color:#94d6ff;font-weight:600}
.fl.tip-left .fl-tip{right:auto;left:-2px;border-radius:14px 14px 14px 4px;transform-origin:bottom left}
.fl.tip-down .fl-tip{bottom:auto;top:calc(100% + 10px)}
.fl:hover .fl-tip,.fl.is-peek .fl-tip{opacity:1;transform:none}
.fl.is-open .fl-tip,.fl.is-drag .fl-tip{opacity:0!important}
.fl-avatar{position:absolute;left:50%;top:-34px;width:44px;height:44px;margin-left:-22px;opacity:0;transform:scale(.2);filter:blur(6px) drop-shadow(0 0 14px #94d6ff);pointer-events:none}
.fl-avatar img{width:100%;height:100%;max-width:none}

.fl-fx{position:fixed;left:0;top:0;width:0;height:0;z-index:109;pointer-events:none}
.fl-spark{position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 8px 2px var(--c,#94d6ff)}
.fl-ring{position:absolute;left:-60px;top:-60px;width:120px;height:120px;border-radius:50%;border:1.5px solid #94d6ffcc;box-shadow:0 0 22px #4f86ff,inset 0 0 22px #4f86ff88}
.fl-ring::before{content:"";position:absolute;inset:10px;border-radius:50%;border:1px dashed #c8b6ffaa}

/* 对话框 */
.fl-panel{position:fixed;z-index:110;width:min(390px,calc(100vw - 32px));height:min(580px,calc(100vh - 130px));display:flex;flex-direction:column;border-radius:22px;background:linear-gradient(165deg,#0d1d48f2 0%,#0a1433f5 55%,#140f3af5 100%);border:1px solid #94d6ff40;box-shadow:0 30px 80px -20px #000c,0 0 40px -6px #3d6bff88,inset 0 1px 0 #ffffff1a;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#e6eeff;overflow:hidden;visibility:hidden;font-family:"Segoe UI","PingFang SC","Microsoft YaHei",system-ui,sans-serif}
.fl-panel.is-on{visibility:visible}
.fl-panel::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--fl-a,0deg),transparent 0 70%,#94d6ff 80%,#c8b6ff 88%,transparent 95%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:fl-spin 6s linear infinite;pointer-events:none}
@property --fl-a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes fl-spin{to{--fl-a:360deg}}
.fl-head{display:flex;align-items:center;gap:12px;padding:16px 16px 14px;border-bottom:1px solid #ffffff14}
.fl-head-av{width:40px;height:40px;border-radius:50%;background:radial-gradient(circle,#1d3a85,#0a1433);display:grid;place-items:center;box-shadow:0 0 16px #4f86ff88;flex:none}
.fl-head-av img{width:30px;height:30px}
.fl-head strong{display:block;font-size:15px;letter-spacing:.04em}
.fl-head small{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#8796b4;letter-spacing:.06em}
.fl-head small i{width:6px;height:6px;border-radius:50%;background:#7fe0c8;box-shadow:0 0 8px #7fe0c8}
.fl-x{margin-left:auto;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#a9c8f5;transition:background .2s,transform .3s}
.fl-x:hover{background:#ffffff14;transform:rotate(90deg)}
.fl-log{flex:1;overflow-y:auto;padding:16px 14px 8px;display:flex;flex-direction:column;gap:12px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#94d6ff33 transparent}
.fl-msg{max-width:86%;font-size:14px;line-height:1.65;padding:10px 13px;border-radius:16px;word-wrap:break-word;animation:fl-in .45s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes fl-in{from{opacity:0;transform:translateY(10px) scale(.96)}}
.fl-msg.bot{align-self:flex-start;background:#ffffff0d;border:1px solid #ffffff14;border-bottom-left-radius:4px}
.fl-msg.me{align-self:flex-end;background:linear-gradient(135deg,#3d6bff,#5a4dff);border-bottom-right-radius:4px;box-shadow:0 6px 18px -6px #3d6bffaa}
.fl-msg a{color:#94d6ff;text-decoration:underline}
.fl-msg code{background:#00000040;padding:1px 5px;border-radius:5px;font-size:12.5px}
.fl-msg .fl-imgs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.fl-msg .fl-imgs img{width:92px;height:92px;object-fit:cover;border-radius:10px;border:1px solid #ffffff33}
.fl-msg.is-typing::after{content:"";display:inline-block;width:7px;height:14px;margin-left:3px;vertical-align:-2px;background:#94d6ff;animation:fl-caret .9s steps(2) infinite}
@keyframes fl-caret{50%{opacity:0}}
.fl-dots{display:inline-flex;gap:4px}
.fl-dots i{width:6px;height:6px;border-radius:50%;background:#94d6ff;animation:fl-dot 1.2s infinite}
.fl-dots i:nth-child(2){animation-delay:.15s}.fl-dots i:nth-child(3){animation-delay:.3s}
@keyframes fl-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
.fl-chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 14px 10px}
.fl-chip{font-size:12.5px;padding:6px 11px;border-radius:999px;border:1px solid #94d6ff44;color:#bfe0ff;background:#94d6ff0d;transition:background .2s,border-color .2s}
.fl-chip:hover{background:#94d6ff22;border-color:#94d6ff88}
.fl-att{display:flex;gap:8px;padding:0 14px 8px;flex-wrap:wrap}
.fl-att:empty{display:none}
.fl-att figure{position:relative;margin:0;width:54px;height:54px}
.fl-att img{width:100%;height:100%;object-fit:cover;border-radius:10px;border:1px solid #ffffff33}
.fl-att button{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:#0a1433;border:1px solid #94d6ff66;font-size:12px;line-height:1;color:#e6eeff}
.fl-form{display:flex;align-items:flex-end;gap:6px;padding:10px 10px 12px;border-top:1px solid #ffffff14;background:#00000022}
.fl-ic{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#a9c8f5;transition:background .2s,color .2s}
.fl-ic:hover{background:#ffffff14;color:#fff}
.fl-ic svg{width:20px;height:20px}
.fl-ic[disabled]{opacity:.35;pointer-events:none}
.fl-send{background:linear-gradient(135deg,#3d6bff,#7a5cff);color:#fff;box-shadow:0 0 14px #3d6bff88}
.fl-send:hover{background:linear-gradient(135deg,#5a84ff,#9277ff)}
.fl-mic.is-rec{color:#fff;background:#ff4d7a;box-shadow:0 0 0 0 #ff4d7a99;animation:fl-rec 1.2s infinite}
@keyframes fl-rec{70%{box-shadow:0 0 0 12px #ff4d7a00}}
.fl-input{flex:1;min-height:38px;max-height:120px;resize:none;border:1px solid #ffffff1f;background:#ffffff0a;color:#e6eeff;border-radius:19px;padding:9px 14px;font:inherit;font-size:14px;line-height:1.4;outline:none;transition:border-color .2s}
.fl-input:focus{border-color:#94d6ff88}
.fl-input::placeholder{color:#6b7a99}
.fl-note{font-size:10.5px;color:#56658a;text-align:center;padding:0 0 8px;letter-spacing:.04em}
@media (max-width:600px){
  .fl-panel{left:10px!important;right:10px!important;top:auto!important;bottom:10px!important;width:auto;height:min(78vh,620px)}
}
@media (prefers-reduced-motion:reduce){.fl-bob,.fl-halo,.fl-core-glow,.fl-panel::before{animation:none}}
