/* ===== 云枢智控 · 集群地图模块样式（mobile.map.css） =====
   061：三级下钻卡片 + 忙闲度徽标 + 搜索定位 + 💬问集群浮窗。
   独立文件防 mobile.css 超限。仅被 /static/mobile.html 引用。
   依赖 mobile.css 主题变量（--card/--border/--accent/--online/--offline 等）。
   单文件 ≤500 行。 */

/* ===== 地图屏：flex 列布局，顶部条/搜索固定，卡片区滚动 ===== */
#screen-map{display:none;flex-direction:column;overflow:hidden;position:relative}
#screen-map.active{display:flex}
#screen-map{padding-top:calc(env(safe-area-inset-top, 0px) + 44px)}   /* v20260934 四·19: map屏用统一.subbar(inset+44), padTop严格一致; 原"55px+max(inset,10)"旧公式残留65px断层 */

.map-bar{
  position:fixed;top:0;left:0;right:0;max-width:480px;margin:0 auto;z-index:10;display:flex;align-items:center;gap:8px;padding:12px 14px;flex-shrink:0;
  background:var(--card);border-bottom:1px solid var(--border);
}
.map-bar h2{font-size:17px;font-weight:700;color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-updated{font-size:11px;color:var(--sub);flex-shrink:0}
.map-refresh{
  flex-shrink:0;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);
  background:var(--card);color:var(--accent);font-size:17px;cursor:pointer;
}
.map-refresh:active{opacity:.7}

.map-search{
  display:flex;align-items:center;gap:4px;padding:8px 14px;flex-shrink:0;background:var(--bg);
  border-bottom:1px solid var(--border);
}
.map-search input{
  flex:1;min-height:44px;background:var(--card);border:1px solid var(--border);
  border-radius:22px;padding:0 16px;color:var(--text);font-size:16px;outline:none;
}
.map-search input:focus{border-color:var(--accent)}
.map-search-clear{
  flex-shrink:0;width:40px;height:40px;border:none;background:none;color:var(--sub);font-size:16px;cursor:pointer;
}

.map-body{flex:1;overflow-y:auto;min-height:0;padding:12px;-webkit-overflow-scrolling:touch}
.map-list{display:flex;flex-direction:column;gap:10px}
.map-empty{
  background:var(--card);border:1px dashed var(--border);border-radius:12px;
  padding:28px 16px;font-size:13px;color:var(--sub);text-align:center;
}
.map-search-note{font-size:12px;color:var(--sub);margin-bottom:10px}

/* ===== 机器卡片（一级） ===== */
.map-mcard{
  background:var(--card);border:1px solid var(--border);border-radius:12px;
  padding:12px 14px;cursor:pointer;display:flex;flex-direction:column;gap:6px;
}
.map-mcard:active{border-color:var(--accent)}
.map-mhead{display:flex;justify-content:space-between;align-items:center;gap:8px}
.map-mname{font-size:16px;font-weight:700;color:var(--text)}
.map-mmeta{font-size:12px;color:var(--sub);display:flex;align-items:center;gap:6px}
.map-mdesc{font-size:12px;color:var(--sub);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.map-mfoot{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--sub)}
.map-more{color:var(--accent);font-weight:600}

/* ===== 忙闲度徽标（busy/status 字段 → 色块） ===== */
.mb{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;white-space:nowrap;flex-shrink:0}
.mb-idle{background:var(--online-soft);color:var(--online);border:1px solid var(--online)}
.mb-light{background:#14b8a622;color:#0d9488;border:1px solid #14b8a6}
.mb-mid{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}
.mb-busy{background:var(--offline-soft);color:var(--offline);border:1px solid var(--offline)}
.mb-off{background:var(--bar-bg);color:var(--sub);border:1px solid var(--border)}

/* 状态点 */
.mb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.mb-dot-on{background:var(--online)}
.mb-dot-off{background:var(--offline)}

/* ===== 返回条 + 子标题 ===== */
.map-backbar{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.map-back{
  min-height:44px;padding:0 14px;background:var(--border);color:var(--text);
  border:none;border-radius:8px;cursor:pointer;font-size:14px;flex-shrink:0;
}
.map-back:active{opacity:.85}
.map-backtitle{font-size:16px;font-weight:600;color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-sub-title{font-size:13px;color:var(--sub);margin:0 0 10px}

/* ===== AI 卡片（二级） ===== */
.map-acard{
  background:var(--card);border:1px solid var(--border);border-radius:12px;
  padding:12px 14px;cursor:pointer;display:flex;flex-direction:column;gap:6px;
}
.map-acard:active{border-color:var(--accent)}
.map-ahead{display:flex;justify-content:space-between;align-items:center;gap:8px}
.map-aname{font-size:16px;font-weight:700;color:var(--text)}
.map-arole{
  font-size:11px;color:var(--accent);background:var(--accent-soft);
  padding:2px 8px;border-radius:4px;align-self:flex-start;
}
.map-adoing{font-size:13px;color:var(--text);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ===== 详情四块卡（三级：doing/done/plans/outputs） ===== */
.map-aihead{margin-bottom:10px}
.map-block{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin-bottom:10px}
.map-block h3{font-size:14px;color:var(--accent);font-weight:600;margin-bottom:8px}
.map-block-body{font-size:13px;color:var(--text);line-height:1.6}
.map-block-body ul{padding-left:18px}
.map-block-body li{margin:3px 0;word-break:break-all}
.map-block-body p{margin:0}
.map-empty-note{color:var(--sub);font-size:12px}
.map-output{cursor:pointer;color:var(--accent)}
.map-output:active{opacity:.7}

/* ===== 💬 问集群浮窗（内嵌面板，非独立跳页） ===== */
.map-fab{
  position:absolute;right:16px;bottom:16px;width:56px;height:56px;border-radius:50%;
  background:var(--accent-grad);color:#fff;border:none;font-size:24px;cursor:pointer;
  box-shadow:0 4px 12px rgba(0,0,0,.3);z-index:30;
}
.map-fab.hidden{display:none}
.map-ask{
  position:absolute;inset:0;z-index:35;background:var(--bg);
  display:none;flex-direction:column;
}
.map-ask.show{display:flex}
.map-ask-head{
  display:flex;justify-content:space-between;align-items:center;padding:10px 14px;
  background:var(--card);border-bottom:1px solid var(--border);flex-shrink:0;
}
.map-ask-head span{font-size:16px;font-weight:700;color:var(--text)}
.map-ask-close{width:40px;height:40px;border:none;background:none;color:var(--sub);font-size:16px;cursor:pointer}
.map-ask-msgs{
  flex:1;overflow-y:auto;min-height:0;padding:14px;
  display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch;
}
.ask-msg{max-width:82%;padding:11px 14px;border-radius:12px;font-size:14px;line-height:1.5;word-break:break-word;white-space:pre-wrap}
.ask-msg.ai{align-self:flex-start;background:var(--card);border:1px solid var(--border);color:var(--text)}
.ask-msg.user{align-self:flex-end;background:var(--accent);color:#fff}
.ask-msg.pending{opacity:.7;animation:mapAskPending 1.2s ease-in-out infinite}
@keyframes mapAskPending{0%,100%{opacity:.7}50%{opacity:.3}}
.map-ask-in{
  display:flex;align-items:center;gap:8px;padding:10px 14px;
  padding-bottom:var(--safe-b);
  background:var(--card);border-top:1px solid var(--border);flex-shrink:0;
}
.map-ask-in input{
  flex:1;min-height:44px;background:var(--bar-bg);border:1px solid var(--border);
  border-radius:22px;padding:0 16px;color:var(--text);font-size:16px;outline:none;
}
.map-ask-in input:focus{border-color:var(--accent)}
.map-ask-send{
  min-height:44px;padding:0 18px;background:var(--accent-grad);color:#fff;border:none;
  border-radius:22px;font-size:14px;font-weight:700;cursor:pointer;flex-shrink:0;
}
.map-ask-send:active{opacity:.8}
