/* 凌知：全站随身智能体（右下角航迹圆环 + 角落面板 + 一次性引导气泡） */
.lj-orb { position: fixed; right: 28px; bottom: 28px; width: 56px; height: 56px; border: 0; padding: 0; border-radius: 50%; background: #fff; cursor: pointer; z-index: 96;
  box-shadow: 0 10px 28px rgba(19,32,44,.18), 0 0 0 1px rgba(228,234,239,.9); display: flex; align-items: center; justify-content: center; transition: transform .25s cubic-bezier(.2,.7,.2,1), box-shadow .25s; }
.lj-orb:hover { transform: translateY(-2px); box-shadow: 0 16px 36px rgba(19,32,44,.22), 0 0 0 1px rgba(228,234,239,.9); }
.lj-orb .lj-ring { position: absolute; inset: 9px; border-radius: 50%;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='1' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%2322485b'/%3E%3Cstop offset='1' stop-color='%23e28e8d'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='14' cy='14' r='11' fill='none' stroke='url(%23g)' stroke-width='2.2' stroke-dasharray='50 20' stroke-linecap='round'/%3E%3Ccircle cx='14' cy='14' r='3' fill='%23e28e8d'/%3E%3C/svg%3E") center/contain no-repeat; }
.lj-orb .lj-orbit { position: absolute; inset: 4px; border-radius: 50%; }
.lj-orb .lj-orbit::after { content: ""; position: absolute; left: 50%; top: -2px; width: 5px; height: 5px; margin-left: -2.5px; border-radius: 50%; background: #f2a7a2; box-shadow: 0 0 6px 1px rgba(242,167,162,.8); }
.lj-orb .lj-label { position: absolute; right: 66px; top: 50%; transform: translate(8px, -50%); white-space: nowrap; background: var(--ink, #1b2e3e); color: #fff; font: 600 13px/1 var(--sans, sans-serif); letter-spacing: .04em; padding: 9px 14px; border-radius: 999px; opacity: 0; pointer-events: none; transition: opacity .2s, transform .25s cubic-bezier(.2,.7,.2,1); }
.lj-orb:hover .lj-label, .lj-orb.is-done .lj-label { opacity: 1; transform: translate(0, -50%); }
.lj-orb .lj-badge { position: absolute; right: 2px; top: 2px; width: 12px; height: 12px; border-radius: 50%; background: #e06b71; border: 2px solid #fff; opacity: 0; transform: scale(.4); transition: opacity .2s, transform .25s cubic-bezier(.2,.7,.2,1); }
.lj-orb.is-done .lj-badge { opacity: 1; transform: none; }
.lj-orb .lj-clock { position: absolute; left: 50%; top: 100%; transform: translateX(-50%); margin-top: 6px; font: 500 11.5px/1 var(--sans, sans-serif); color: var(--muted, #6b7d8f); white-space: nowrap; opacity: 0; transition: opacity .2s; font-variant-numeric: tabular-nums; }
.lj-orb.is-working .lj-clock { opacity: 1; }
.lj-orb.is-off .lj-ring { filter: grayscale(1); opacity: .55; }
.lj-orb.is-off .lj-orbit { display: none; }
.lj-orb.is-working { box-shadow: 0 10px 28px rgba(19,32,44,.18), 0 0 0 3px rgba(226,142,141,.25), 0 0 24px rgba(127,164,186,.35); }
@media (prefers-reduced-motion: no-preference) {
  .lj-orb { animation: lj-breathe 4s ease-in-out infinite; }
  .lj-orb .lj-orbit { animation: lj-orbit 8s linear infinite; }
  .lj-orb.is-working .lj-ring { animation: lj-spin 1.2s linear infinite; }
  .lj-orb.is-working .lj-orbit { animation-duration: 2s; }
  .lj-orb.is-done .lj-ring { animation: lj-pop .5s cubic-bezier(.2,.7,.2,1); }
}
@keyframes lj-breathe { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.04); } }
@keyframes lj-orbit { to { transform: rotate(360deg); } }
@keyframes lj-spin { to { transform: rotate(360deg); } }
@keyframes lj-pop { 0% { transform: scale(1); } 40% { transform: scale(1.25); } 100% { transform: scale(1); } }
.lj-orb:hover { animation: none; }

/* 角落面板 */
.lj-panel { position: fixed; right: 28px; bottom: 96px; width: 420px; height: min(660px, calc(100vh - 120px)); z-index: 95; background: #fff; border-radius: 18px; overflow: hidden;
  box-shadow: 0 30px 70px rgba(19,32,44,.28), 0 0 0 1px rgba(228,234,239,.9); transform-origin: 100% 100%; display: flex; flex-direction: column;
  opacity: 0; transform: scale(.55) translate(8px, 8px); pointer-events: none; transition: opacity .22s, transform .32s cubic-bezier(.2,.7,.2,1); }
.lj-panel.on { opacity: 1; transform: none; pointer-events: auto; }
.lj-panel::before { content: ""; position: absolute; inset: 0; border-radius: 18px; padding: 2px; background: linear-gradient(115deg,#7fa4ba,#c9a0a4 48%,#f2a7a2); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: .5; pointer-events: none; z-index: 2; }
.lj-head { display: flex; align-items: center; gap: 10px; padding: 10px 12px 10px 14px; background: linear-gradient(120deg,#182a39 0%,#22485b 58%,#2b4557 100%); color: #fff; flex: none; }
.lj-head .lj-ava { width: 26px; height: 26px; border-radius: 50%; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='1' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%2322485b'/%3E%3Cstop offset='1' stop-color='%23e28e8d'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='14' cy='14' r='11' fill='none' stroke='url(%23g)' stroke-width='2.2' stroke-dasharray='50 20' stroke-linecap='round'/%3E%3Ccircle cx='14' cy='14' r='3' fill='%23e28e8d'/%3E%3C/svg%3E") center/70% no-repeat; flex: none; }
.lj-head b { font-size: 15px; letter-spacing: .04em; }
.lj-head .lj-sub { font-size: 12px; color: #b9c8d3; }
.lj-head .lj-state { margin-left: auto; font-size: 11.5px; color: #c5d2db; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.lj-head .lj-state i { width: 7px; height: 7px; border-radius: 50%; background: #8fa2b0; }
.lj-head .lj-state.ok i { background: #3fbf7f; }
.lj-head .lj-state.bad i { background: #e06b71; }
.lj-head .lj-state.work i { background: #f2a7a2; }
.lj-head a, .lj-head button { border: 0; background: rgba(255,255,255,.1); color: #fff; font: 500 12px/1 var(--sans, sans-serif); border-radius: 999px; padding: 6px 10px; cursor: pointer; text-decoration: none; transition: background .18s; }
.lj-head a:hover, .lj-head button:hover { background: rgba(255,255,255,.22); }
.lj-head .lj-close { font-size: 16px; line-height: 1; padding: 4px 9px; }
.lj-frame { flex: 1; width: 100%; border: 0; background: #fff; }
.lj-foot { flex: none; font-size: 11.5px; color: var(--muted, #6b7d8f); padding: 6px 14px; border-top: 1px solid var(--line, #e4eaef); background: #fff; }

/* 引导气泡 */
.lj-bubble { position: fixed; right: 96px; bottom: 34px; width: 300px; z-index: 97; background: #fff; border: 1px solid var(--line, #e4eaef); border-radius: 16px 16px 4px 16px; padding: 14px 16px; box-shadow: 0 18px 44px rgba(19,32,44,.16);
  font-size: 14px; color: var(--ink, #1b2e3e); line-height: 1.6; opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity .25s, transform .3s cubic-bezier(.2,.7,.2,1); }
.lj-bubble.on { opacity: 1; transform: none; pointer-events: auto; }
.lj-bubble b { display: block; font-size: 13px; color: var(--rose-d, #a9666c); letter-spacing: .06em; margin-bottom: 4px; }
.lj-bubble button.lj-try { display: block; width: 100%; text-align: left; margin-top: 10px; border: 1px solid var(--line, #e4eaef); border-radius: 10px; background: var(--paper2, #f6f8fa); color: var(--steel, #22485b); font-family: inherit; font-size: 13.5px; padding: 8px 12px; cursor: pointer; }
.lj-bubble button.lj-try:hover { border-color: var(--steel, #22485b); }
.lj-bubble .lj-x { position: absolute; right: 8px; top: 6px; border: 0; background: none; color: var(--muted, #6b7d8f); font-size: 16px; cursor: pointer; padding: 2px 6px; }

@media (max-width: 720px) {
  .lj-orb { right: 16px; bottom: 16px; width: 52px; height: 52px; }
  .lj-orb .lj-label { display: none; }
  .lj-panel { inset: 0; width: auto; height: auto; border-radius: 0; transform-origin: 50% 100%; }
  .lj-panel::before { display: none; }
  .lj-bubble { right: 16px; left: 16px; width: auto; bottom: 80px; }
}
@media (prefers-reduced-motion: reduce) { .lj-orb, .lj-orb .lj-orbit, .lj-orb .lj-ring { animation: none !important; } .lj-panel, .lj-bubble { transition: none; } }

/* 拖动与位置 */
.lj-orb { touch-action: none; }
.lj-orb.is-drag { cursor: grabbing; animation: none; transition: none; box-shadow: 0 18px 40px rgba(19,32,44,.28); }
.lj-orb:not(.is-drag) { cursor: grab; }
.lj-bubble .lj-hint { display: block; margin-top: 8px; font-size: 12px; color: var(--muted, #6b7d8f); }
/* 手机端面板全屏时圆环让位（面板自带关闭） */
@media (max-width: 720px) { .lj-panel.on ~ .lj-orb { display: none; } }
