/* ============================================================================
 * FDE 3.0 · room.css — 自习室「房间」整屏工作界面
 * 依据：CLIB-FDE-小组工作界面高保真-20261006.html（定稿①）
 * 视觉：复用全站 shell 设计 token（--fde-*），与大厅/全站颜色·按钮·圆角无缝衔接
 * 作用域：所有类以 .rm- 前缀且置于 #fde-room 内，不污染全站
 * 红线：不使用演示/占位数据；空态均为诚实引导；飞书未授权走站内诚实态
 * ========================================================================== */

#fde-room {
  position: fixed; inset: 0; z-index: 200;
  display: flex; flex-direction: column;
  background: var(--fde-bg);
  color: var(--fde-ink);
  font-family: var(--fde-font);
  -webkit-font-smoothing: antialiased;
}
/* 房间为全屏接管：打开期间隐藏全局站点导航与全局悬浮助教，避免遮挡房间 appbar */
body.fde-room-open .nav,
body.fde-room-open #p4Coach { display: none !important; }
#fde-room * { box-sizing: border-box; }
#fde-room .rm-scroll { flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; }

/* ---------------- Appbar ---------------- */
.rm-appbar {
  flex: none; background: rgba(255,255,255,.82);
  backdrop-filter: saturate(1.5) blur(16px); -webkit-backdrop-filter: saturate(1.5) blur(16px);
  border-bottom: 1px solid var(--fde-line);
}
.rm-appbar__in {
  max-width: 1280px; margin: 0 auto;
  display: flex; align-items: center; gap: 12px;
  padding: 8px 20px;
}
.rm-back {
  flex: none; display: inline-flex; align-items: center; gap: 4px;
  height: 34px; padding: 0 12px; border-radius: var(--fde-r-sm);
  background: var(--fde-surface); border: 1px solid var(--fde-line);
  color: var(--fde-ink-2); font-size: var(--fde-fs-md); font-weight: 600; font-family: inherit;
  cursor: pointer; transition: all .15s var(--fde-ease);
}
.rm-back:hover { border-color: var(--fde-blue-line); color: var(--fde-navy); }
.rm-back b { font-size: 17px; line-height: 1; font-weight: 600; }
.rm-picon {
  flex: none; width: 36px; height: 36px; border-radius: 14px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--fde-blue-weak); color: var(--fde-navy);
}
.rm-picon svg { width: 20px; height: 20px; }
.rm-appbar__tt { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.rm-appbar__title {
  font-size: 17px; font-weight: 600; color: var(--fde-ink);
  letter-spacing: .2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2;
}
.rm-appbar__meta { display: flex; align-items: center; gap: 8px; }
.rm-rbadge {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px; font-weight: 600; color: var(--fde-ink-2);
  background: var(--fde-surface-2); border: 1px solid var(--fde-line);
  padding: 1px 8px; border-radius: 14px; white-space: nowrap;
}
.rm-statepill {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px; font-weight: 600; padding: 4px 8px; border-radius: 999px;
  background: var(--fde-success-weak); color: var(--fde-success); white-space: nowrap;
}
.rm-statepill i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.rm-statepill--recruit { background: var(--fde-blue-weak); color: var(--fde-navy); }
.rm-statepill--ended { background: var(--fde-surface-2); color: var(--fde-ink-3); }

/* appbar 内进度（紧凑） */
.rm-aprog { display: flex; align-items: center; gap: 8px; flex: none; }
.rm-aprog__bar { width: 96px; height: 6px; border-radius: 999px; background: var(--fde-surface-2); overflow: hidden; }
.rm-aprog__bar i { display: block; height: 100%; border-radius: 999px; background: var(--fde-navy); }
.rm-aprog__pct { font-size: 13px; font-weight: 600; color: var(--fde-navy); }
.rm-aprog__left { font-size: 12px; color: var(--fde-ink-3); white-space: nowrap; }
.rm-aprog__left b { color: var(--fde-ink-2); font-weight: 600; }

.rm-appbar__sp { flex: 1 1 auto; }
.rm-iconbtn {
  flex: none; width: 32px; height: 32px; border-radius: var(--fde-r-sm);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--fde-surface); border: 1px solid var(--fde-line);
  color: var(--fde-ink-2); cursor: pointer; transition: all .15s;
}
.rm-iconbtn:hover { border-color: var(--fde-blue-line); color: var(--fde-navy); }
.rm-iconbtn svg { width: 17px; height: 17px; }
.rm-mechip { flex: none; display: flex; align-items: center; gap: 8px; padding-left: 4px; }
.rm-mechip .fde-avatar { width: 34px; height: 34px; font-size: 13px; }
.rm-mechip__t { display: flex; flex-direction: column; gap: 4px; }
.rm-mechip__n { font-size: 13px; font-weight: 600; color: var(--fde-ink); line-height: 1.1; white-space: nowrap; }
.rm-mechip__s { display: flex; gap: 4px; }
.rm-roletag {
  font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 999px;
  background: var(--fde-blue-weak); color: var(--fde-navy); white-space: nowrap;
}
.rm-roletag--cap { background: #f4ecd8; color: #8a6d2f; }
.rm-submit {
  flex: none; height: 36px; padding: 0 16px; border-radius: var(--fde-r-sm);
  background: var(--fde-navy); color: #fff; border: 1px solid transparent;
  font-size: 13px; font-weight: 600; font-family: inherit; cursor: pointer;
  transition: all .15s; display: inline-flex; align-items: center; gap: 8px;
}
.rm-submit:hover { background: var(--fde-navy-2); }

/* ---------------- Subnav（下划线式 scrollspy） ---------------- */
.rm-subnav {
  flex: none; position: sticky; top: 0; z-index: 6;
  background: rgba(255,255,255,.9); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--fde-line);
}
.rm-subnav__in {
  max-width: 1280px; margin: 0 auto; padding: 0 20px;
  display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none;
}
.rm-subnav__in::-webkit-scrollbar { display: none; }
.rm-subnav a {
  flex: 0 0 auto; position: relative;
  padding: 12px 16px; font-size: 13px; font-weight: 600; color: var(--fde-ink-3);
  text-decoration: none; white-space: nowrap; cursor: pointer; transition: color .15s;
}
.rm-subnav a:hover { color: var(--fde-navy); }
.rm-subnav a::after {
  content: ''; position: absolute; left: 14px; right: 14px; bottom: -1px; height: 2px;
  border-radius: 14px; background: var(--fde-navy); transform: scaleX(0); transition: transform .2s var(--fde-ease);
}
.rm-subnav a.on { color: var(--fde-navy); }
.rm-subnav a.on::after { transform: scaleX(1); }

/* ---------------- 布局容器 ---------------- */
.rm-wrap { max-width: 1280px; margin: 0 auto; width: 100%; padding: 24px 20px 64px; }
.rm-section { margin-bottom: 32px; scroll-margin-top: 110px; }
.rm-sechead { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.rm-secno {
  flex: none; width: 28px; height: 28px; border-radius: 14px;
  background: var(--fde-navy); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600;
}
.rm-sechead__t { display: flex; flex-direction: column; gap: 4px; }
.rm-sechead__title { font-size: 17px; font-weight: 600; color: var(--fde-ink); line-height: 1.2; }
.rm-sechead__sub { font-size: 12px; color: var(--fde-ink-3); }
.rm-sechead__refs { margin-left: auto; font-size: 12px; color: var(--fde-ink-3); font-family: ui-monospace, Menlo, monospace; }

/* 卡片 */
.rm-card {
  background: var(--fde-surface); border: 1px solid var(--fde-line);
  border-radius: var(--fde-r-lg); padding: 16px;
}
.rm-card__hd { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; }
.rm-card__title { font-size: 17px; font-weight: 600; color: var(--fde-ink); display: inline-flex; align-items: center; gap: 8px; }
.rm-card__title > svg { width: 17px; height: 17px; color: var(--fde-navy); flex: 0 0 auto; }
.rm-card__sub { font-size: 12px; color: var(--fde-ink-3); margin-top: 4px; }
.rm-card__sp { flex: 1 1 auto; }

/* ---------------- 组织部：岗位编制 ---------------- */
.rm-seats { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.rm-seat {
  position: relative; border-radius: 14px; padding: 12px 12px;
  display: flex; flex-direction: column; gap: 8px; min-width: 0;
  border: 1px solid var(--fde-line); background: var(--fde-surface-2);
}
.rm-seat__top { display: flex; align-items: center; gap: 8px; min-width: 0; }
.rm-seat__av {
  width: 28px; height: 28px; border-radius: 50%; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 600; color: #fff; overflow: hidden;
}
.rm-seat__id { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.rm-seat__nm {
  font-size: 13px; font-weight: 600; color: var(--fde-ink); line-height: 1.15;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.rm-seat__rl {
  font-size: 12px; color: var(--fde-ink-3); line-height: 1.2; margin-top: 1px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* filled：中性灰（克制，不抢眼） */
.rm-seat--filled { background: rgba(0,0,0,.03); border-color: rgba(0,0,0,.08); }
/* empty：indigo 虚线，突出缺口 */
.rm-seat--empty { background: var(--fde-blue-weak); border: 1.5px dashed var(--fde-blue-line); }
.rm-seat__av--q { background: #fff; color: var(--fde-navy); border: 1.5px dashed var(--fde-blue-line); }
/* 小状态方角标签（队长/组员/招募中/待确认），贴合定稿 .tagmini */
.rm-tagmini {
  align-self: flex-start; font-size: 12px; font-weight: 600; line-height: 1.4;
  padding: 1px 8px; border-radius: 14px; border: none; font-family: inherit; cursor: default;
}
.rm-tagmini--lead { background: #C2A46B; color: #fff; }
.rm-tagmini--mem { background: rgba(0,0,0,.1); color: var(--fde-ink-2); }
.rm-tagmini--pending { background: #FBF3E2; color: #8A5300; }
.rm-tagmini--rec { background: var(--fde-navy); color: #fff; cursor: pointer; }
.rm-tagmini--rec:hover { filter: brightness(1.06); }
.rm-seats-note { margin-top: 12px; font-size: 12px; color: var(--fde-ink-3); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rm-seats-count { font-weight: 600; color: var(--fde-navy); }

/* 组织部三栏：会议 | 班规 | 聊天 */
.rm-orggrid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 16px; }
.rm-orggrid .rm-col-chat { grid-column: 1 / -1; }
@media (min-width: 1080px) {
  /* 彼得 2026-10-10：沟通卡太窄（可视范围小）→ 把聊天列加宽（.95fr → 1.35fr），
     会议/班规略收，整体仍是一行三卡、不换行。 */
  .rm-orggrid { grid-template-columns: 1fr .95fr 1.35fr; }
  .rm-orggrid .rm-col-chat { grid-column: auto; }
}

/* 会议 */
.rm-meetbtns { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.rm-mini {
  height: 30px; padding: 0 12px; border-radius: var(--fde-r-sm);
  font-size: 12px; font-weight: 600; font-family: inherit; cursor: pointer; transition: all .15s;
  display: inline-flex; align-items: center; gap: 4px;
}
.rm-mini--primary { background: var(--fde-navy); color: #fff; border: 1px solid transparent; }
.rm-mini--primary:hover { background: var(--fde-navy-2); }
.rm-mini--ghost { background: var(--fde-surface); color: var(--fde-ink-2); border: 1px solid var(--fde-line); }
.rm-mini--ghost:hover { border-color: var(--fde-blue-line); color: var(--fde-navy); }
.rm-meetlist { display: flex; flex-direction: column; gap: 8px; }
.rm-meet {
  border: 1px solid var(--fde-line); border-radius: var(--fde-r-md);
  padding: 12px 12px; background: var(--fde-surface);
}
.rm-meet__t { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.rm-meet__name { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-kindtag { font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: var(--fde-surface-2); color: var(--fde-ink-3); }
.rm-kindtag--fixed { background: var(--fde-blue-weak); color: var(--fde-navy); }
.rm-meet__meta { font-size: 12px; color: var(--fde-ink-3); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rm-meet__avs { display: flex; padding-left: 4px; }
.rm-meet__avs .fde-avatar { width: 22px; height: 22px; font-size: 12px; border: 2px solid #fff; margin-left: -8px; }
.rm-meet__avs .fde-avatar:first-child { margin-left: 0; }
.rm-meet__foot { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.rm-confirmtxt { font-size: 12px; font-weight: 600; }
.rm-confirmtxt--pending { color: var(--fde-warning); }
.rm-confirmtxt--ok { color: var(--fde-success); }
.rm-confirmtxt--ended { color: var(--fde-ink-3); }
.rm-booktag { font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 14px; background:var(--fde-surface-2); color:var(--fde-ink-3); }
.rm-booktag--feishu { background: var(--fde-blue-weak); color: var(--fde-navy); }

/* 班规 */
.rm-acc { border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); overflow: hidden; }
.rm-acc__item { border-bottom: 1px solid var(--fde-line); }
.rm-acc__item:last-child { border-bottom: none; }
.rm-acc__head {
  width: 100%; display: flex; align-items: center; gap: 8px;
  padding: 12px 12px; background: var(--fde-surface); border: none; cursor: pointer;
  font-family: inherit; text-align: left;
}
.rm-acc__no {
  flex: none; width: 22px; height: 22px; border-radius: 14px; background: var(--fde-blue-weak);
  color: var(--fde-navy); font-size: 12px; font-weight: 600;
  display: inline-flex; align-items: center; justify-content: center;
}
.rm-acc__tt { flex: 1; font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-acc__caret { color: var(--fde-ink-3); transition: transform .2s; font-size: 12px; }
.rm-acc__item[data-open] .rm-acc__caret { transform: rotate(180deg); }
.rm-acc__body { display: none; padding: 0 12px 12px 48px; font-size: 13px; color: var(--fde-ink-2); line-height: 1.6; }
.rm-acc__item[data-open] .rm-acc__body { display: block; }
.rm-rules-confirm { display: flex; align-items: center; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.rm-rules-pct { font-size: 12px; font-weight: 600; color: var(--fde-ink-2); }
.rm-rules-effect { font-size: 12px; font-weight: 600; padding: 4px 8px; border-radius: 999px; }
.rm-rules-effect--yes { background: var(--fde-success-weak); color: var(--fde-success); }
.rm-rules-effect--no { background: var(--fde-surface-2); color: var(--fde-ink-3); }
.rm-rewardbox {
  margin-top: 8px; border-radius: var(--fde-r-md); padding: 8px 12px;
  background: var(--fde-surface-2); font-size: 12px; color: var(--fde-ink-2); line-height: 1.6;
}
.rm-rewardbox b { color: var(--fde-ink); }

/* 小窗聊天（常驻迷你卡） */
.rm-chatcard { display: flex; flex-direction: column; min-height: 320px; }
.rm-chatcard__hd { display: flex; align-items: center; gap: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--fde-line-2); }
.rm-chatcard__who { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.rm-chatcard__name { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-chatcard__hint { font-size: 12px; color: var(--fde-ink-3); }
.rm-chatcard__x { border: none; background: transparent; color: var(--fde-ink-3); cursor: pointer; font-size: 17px; }
.rm-chatstream { flex: 1 1 auto; min-height: 150px; max-height: 260px; overflow-y: auto; padding: 12px 4px; display: flex; flex-direction: column; gap: 8px; }
.rm-msg { display: flex; gap: 8px; align-items: flex-end; }
.rm-msg .fde-avatar { width: 24px; height: 24px; font-size: 12px; flex: none; }
.rm-msg__b {
  max-width: 78%; padding: 8px 12px; border-radius: 14px; background: var(--fde-surface-2);
  font-size: 13px; color: var(--fde-ink); line-height: 1.45; word-break: break-word; white-space: pre-wrap;
}
.rm-msg__name { font-size: 12px; color: var(--fde-ink-3); margin-bottom: 4px; font-weight: 600; }
.rm-msg--me { flex-direction: row-reverse; }
.rm-msg--me .rm-msg__b { background: var(--fde-navy); color: #fff; }
.rm-chatbar { display: flex; gap: 8px; padding-top: 8px; border-top: 1px solid var(--fde-line-2); }
.rm-chatbar input {
  flex: 1; height: 34px; border: 1px solid var(--fde-line); border-radius: var(--fde-r-sm);
  padding: 0 12px; font-size: 13px; font-family: inherit; outline: none; background: var(--fde-surface);
}
.rm-chatbar input:focus { border-color: var(--fde-navy); }
.rm-chatbar button {
  flex: none; width: 36px; height: 34px; border-radius: var(--fde-r-sm);
  background: var(--fde-navy); color: #fff; border: none; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.rm-chatbar button svg { width: 16px; height: 16px; }

/* ---------------- 任务目标 ---------------- */
.rm-leadobj {
  border: 1px solid var(--fde-line); border-left: 3px solid var(--fde-navy);
  border-radius: var(--fde-r-md); padding: 16px 16px; background: var(--fde-surface);
}
.rm-eyebrow { font-size: 12px; font-weight: 600; color: var(--fde-navy); letter-spacing: .4px; margin-bottom: 8px; }
.rm-leadobj__t { font-size: 17px; font-weight: 600; color: var(--fde-ink); line-height: 1.6; }
.rm-tagrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.rm-tagrow__lb { font-size: 12px; font-weight: 600; color: var(--fde-ink-3); }
.rm-gtag {
  display: inline-flex; align-items: center; font-size: 12px; font-weight: 600;
  padding: 4px 12px; border-radius: 999px; background: var(--fde-surface-2); color: var(--fde-ink-2);
}
.rm-gtag--ind { background: var(--fde-blue-weak); color: var(--fde-navy); }
.rm-gtag--level { background: #f4ecd8; color: #8a6d2f; }
.rm-gtag--diff { background: var(--fde-danger-weak); color: var(--fde-danger); }
.rm-elemgrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-top: 16px; }
@media (min-width: 900px) { .rm-elemgrid { grid-template-columns: repeat(4, 1fr); } }
.rm-elem { border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 12px; background: var(--fde-surface); }
.rm-elem__h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rm-elem__ic { width: 26px; height: 26px; border-radius: 14px; background: var(--fde-blue-weak); color: var(--fde-navy); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.rm-elem__ic svg { width: 15px; height: 15px; }
.rm-elem__n { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-elem__v { font-size: 12px; color: var(--fde-ink-2); line-height: 1.55; }
.rm-elem__owner { margin-top: 8px; font-size: 12px; color: var(--fde-ink-3); display: flex; align-items: center; gap: 4px; }
.rm-elem__owner b { color: var(--fde-navy); }

/* ---------------- 看板：流程步进器 ---------------- */
.rm-flow { display: flex; align-items: flex-start; padding: 8px 0 4px; overflow-x: auto; scrollbar-width: none; }
.rm-flow::-webkit-scrollbar { display: none; }
.rm-fstep { flex: 1 0 90px; display: flex; flex-direction: column; align-items: center; gap: 8px; position: relative; }
.rm-fstep::before { content: ''; position: absolute; top: 15px; left: -50%; width: 100%; height: 2px; background: var(--fde-line); z-index: 0; }
.rm-fstep:first-child::before { display: none; }
.rm-fstep__dot {
  position: relative; z-index: 1; width: 30px; height: 30px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600; background: var(--fde-surface); border: 2px solid var(--fde-line); color: var(--fde-ink-3);
}
.rm-fstep--done .rm-fstep__dot { background: var(--fde-success); border-color: var(--fde-success); color: #fff; }
.rm-fstep--done::before { background: var(--fde-success); }
.rm-fstep--cur .rm-fstep__dot { background: var(--fde-navy); border-color: var(--fde-navy); color: #fff; }
.rm-fstep--cur::before { background: linear-gradient(90deg, var(--fde-success), var(--fde-navy)); }
.rm-fstep__lb { font-size: 12px; font-weight: 600; color: var(--fde-ink-2); }
.rm-fstep--cur .rm-fstep__lb { color: var(--fde-navy); }

/* 看板四状态列 */
.rm-kanban { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 16px; }
.rm-kcol { background: var(--fde-surface-2); border-radius: var(--fde-r-md); padding: 8px; min-height: 120px; display: flex; flex-direction: column; gap: 8px; }
.rm-kcol__hd { display: flex; align-items: center; gap: 8px; padding: 4px 4px 0; }
.rm-kcol__n { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-kcol__ct { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--fde-ink-3); background: var(--fde-surface); border-radius: 999px; min-width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; padding: 0 8px; }
.rm-ktask { background: var(--fde-surface); border: 1px solid var(--fde-line); border-radius: 14px; padding: 8px 12px; cursor: grab; }
.rm-ktask__t { font-size: 13px; font-weight: 600; color: var(--fde-ink); line-height: 1.4; margin-bottom: 8px; }
.rm-ktask__ms { font-size: 12px; font-weight: 600; color: var(--fde-navy); background: var(--fde-blue-weak); padding: 1px 8px; border-radius: 999px; display: inline-flex; margin-bottom: 8px; }
.rm-ktask__q { font-size: 12px; color: var(--fde-ink-2); line-height: 1.45; margin-bottom: 8px; }
.rm-ktask__foot { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding-top: 8px; border-top: 1px solid var(--fde-line-2); }
.rm-ktask__who { display: flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; color: var(--fde-ink-2); }
.rm-ktask__who .fde-avatar { width: 20px; height: 20px; font-size: 12px; }
.rm-ktask__m { margin-left: auto; display: flex; gap: 8px; }
.rm-metric { font-size: 12px; color: var(--fde-ink-3); display: inline-flex; align-items: center; gap: 4px; }
.rm-metric svg { width: 11px; height: 11px; }
.rm-addtask { margin-top: 12px; }

/* ---------------- 甘特（里程碑行，三态） ---------------- */
.rm-gantt { margin-top: 4px; border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); overflow: hidden; }
.rm-gantt__axis { display: grid; grid-template-columns: 150px 1fr; background: var(--fde-surface-2); border-bottom: 1px solid var(--fde-line); }
.rm-gantt__axislb { padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--fde-ink-3); }
.rm-gantt__axisweeks { position: relative; height: 28px; }
.rm-gantt__week { position: absolute; top: 0; bottom: 0; border-left: 1px solid var(--fde-line); font-size: 12px; color: var(--fde-ink-3); padding: 8px 0 0 4px; }
.rm-grow { display: grid; grid-template-columns: 150px 1fr; border-bottom: 1px solid var(--fde-line-2); min-height: 40px; }
.rm-grow:last-child { border-bottom: none; }
.rm-grow__lb { padding: 8px 12px; font-size: 12px; font-weight: 600; color: var(--fde-ink-2); display: flex; align-items: center; gap: 8px; }
.rm-grow__lb i { width: 6px; height: 6px; border-radius: 50%; flex: none; }
.rm-grow__track { position: relative; padding: 8px 0; }
.rm-grow__bar { position: absolute; top: 9px; height: 22px; border-radius: 14px; display: flex; align-items: center; padding: 0 8px; font-size: 12px; font-weight: 600; white-space: nowrap; overflow: hidden; }
.rm-grow__bar--done { background: var(--fde-success); color: #fff; }
.rm-grow__bar--cur { background: var(--fde-navy); color: #fff; }
.rm-grow__bar--todo { background: var(--fde-surface-2); color: var(--fde-ink-3); border: 1px solid var(--fde-line); }
.rm-gantt__today { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--fde-danger); z-index: 2; }
.rm-gantt__today span { position: absolute; top: 2px; left: 3px; font-size: 12px; color: var(--fde-danger); font-weight: 600; white-space: nowrap; }

/* ---------------- OKR ---------------- */
.rm-okr { display: flex; flex-direction: column; gap: 12px; margin-top: 4px; }
.rm-okr__o { display: flex; gap: 12px; border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 16px; background: var(--fde-surface); }
.rm-okr__obadge { flex: none; width: 30px; height: 30px; border-radius: 14px; background: var(--fde-navy); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; }
.rm-okr__ot { flex: 1; font-size: 13px; font-weight: 600; color: var(--fde-ink); line-height: 1.5; }
.rm-okr__opct { flex: none; align-self: center; font-size: 17px; font-weight: 600; color: var(--fde-navy); }
.rm-kr { border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 12px 16px; background: var(--fde-surface); }
.rm-kr__hd { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.rm-kr__no { font-size: 12px; font-weight: 600; color: var(--fde-navy); background: var(--fde-blue-weak); padding: 4px 8px; border-radius: 999px; }
.rm-kr__t { flex: 1; font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-kr__pct { font-size: 12px; font-weight: 600; color: var(--fde-navy); }
.rm-kr__bar { height: 7px; border-radius: 999px; background: var(--fde-surface-2); overflow: hidden; }
.rm-kr__bar i { display: block; height: 100%; background: var(--fde-navy); border-radius: 999px; }
.rm-kr__map { margin-top: 8px; font-size: 12px; color: var(--fde-ink-3); display: flex; gap: 8px; flex-wrap: wrap; }
.rm-kr__map b { color: var(--fde-navy); font-weight: 600; }

/* ---------------- 交付归档 ---------------- */
.rm-mtabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.rm-mtab {
  height: 32px; padding: 0 16px; border-radius: var(--fde-r-sm);
  background: var(--fde-surface); border: 1px solid var(--fde-line);
  font-size: 13px; font-weight: 600; color: var(--fde-ink-2); font-family: inherit; cursor: pointer;
  display: inline-flex; align-items: center; gap: 8px; transition: all .15s;
}
.rm-mtab:hover { border-color: var(--fde-blue-line); color: var(--fde-navy); }
.rm-mtab.on { background: var(--fde-navy); border-color: var(--fde-navy); color: #fff; }
.rm-mtab__st { font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: var(--fde-surface-2); color: var(--fde-ink-3); }
.rm-mtab.on .rm-mtab__st { background: rgba(255,255,255,.25); color: #fff; }
.rm-mtab__st--done { background: var(--fde-success-weak); color: var(--fde-success); }
.rm-mtab__st--cur { background: var(--fde-blue-weak); color: var(--fde-navy); }
.rm-dellist { display: flex; flex-direction: column; gap: 8px; }
.rm-del {
  display: flex; align-items: center; gap: 12px;
  border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 8px 12px; background: var(--fde-surface);
}
.rm-del__ic { flex: none; width: 34px; height: 34px; border-radius: 14px; display: inline-flex; align-items: center; justify-content: center; }
.rm-del__ic svg { width: 17px; height: 17px; }
.rm-del__ic--doc { background: var(--fde-blue-weak); color: var(--fde-navy); }
.rm-del__ic--data { background: var(--fde-success-weak); color: var(--fde-success); }
.rm-del__ic--code { background: #efeafb; color: #6d5bd0; }
.rm-del__ic--video { background: var(--fde-warning-weak); color: var(--fde-warning); }
.rm-del__main { flex: 1; min-width: 0; }
.rm-del__t { font-size: 13px; font-weight: 600; color: var(--fde-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rm-del__meta { font-size: 12px; color: var(--fde-ink-3); margin-top: 4px; display: flex; gap: 8px; align-items: center; }
.rm-autoarch { font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 999px; background: var(--fde-success-weak); color: var(--fde-success); }
.rm-del__open { flex: none; height: 30px; padding: 0 12px; border-radius: var(--fde-r-sm); background: var(--fde-surface); border: 1px solid var(--fde-line); font-size: 12px; font-weight: 600; color: var(--fde-ink-2); cursor: pointer; font-family: inherit; display: inline-flex; align-items: center; gap: 4px; }
.rm-del__open:hover { border-color: var(--fde-blue-line); color: var(--fde-navy); }
.rm-del__open svg { width: 13px; height: 13px; }

/* ---------------- 提交结项 ---------------- */
.rm-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); overflow: hidden; margin-bottom: 16px; }
.rm-cstep { display: flex; align-items: center; gap: 8px; padding: 12px 16px; background: var(--fde-surface); border-right: 1px solid var(--fde-line); position: relative; }
.rm-cstep:last-child { border-right: none; }
.rm-cstep__n { flex: none; width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; background: var(--fde-surface-2); color: var(--fde-ink-3); }
.rm-cstep--done .rm-cstep__n { background: var(--fde-success); color: #fff; }
.rm-cstep--cur .rm-cstep__n { background: var(--fde-navy); color: #fff; }
.rm-cstep__t { font-size: 12px; font-weight: 600; color: var(--fde-ink-2); line-height: 1.3; }
.rm-closegrid { display: grid; grid-template-columns: 1fr; gap: 16px; }
@media (min-width: 980px) { .rm-closegrid { grid-template-columns: 1.1fr .9fr; } }
.rm-checklist { display: flex; flex-direction: column; gap: 8px; }
.rm-check { display: flex; align-items: flex-start; gap: 8px; border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 12px 12px; }
.rm-check__box { flex: none; width: 20px; height: 20px; border-radius: 14px; border: 2px solid var(--fde-line); margin-top: 1px; display: inline-flex; align-items: center; justify-content: center; }
.rm-check--ok { background: var(--fde-success-weak); border-color: transparent; }
.rm-check--ok .rm-check__box { background: var(--fde-success); border-color: var(--fde-success); color: #fff; }
.rm-check--gap .rm-check__box { border-color: var(--fde-warning); color: var(--fde-warning); }
.rm-check__t { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-check__h { font-size: 12px; color: var(--fde-ink-3); margin-top: 4px; line-height: 1.5; }
.rm-aicard { border: 1px solid var(--fde-line); border-radius: var(--fde-r-md); padding: 16px; background: var(--fde-surface); display: flex; flex-direction: column; gap: 8px; }
.rm-aicard__score { display: flex; align-items: baseline; gap: 8px; }
.rm-aicard__score b { font-size: 34px; font-weight: 600; color: var(--fde-navy); }
.rm-aicard__score span { font-size: 12px; color: var(--fde-ink-3); }
.rm-aicard__reason { font-size: 13px; color: var(--fde-ink-2); line-height: 1.6; }
.rm-aicard__src { font-size: 12px; color: var(--fde-ink-3); }
.rm-closeactions { display: flex; gap: 8px; margin-top: 16px; flex-wrap: wrap; }

/* ---------------- 成长轻提示（横幅） ---------------- */
.rm-growhint {
  display: flex; align-items: center; gap: 16px;
  border: 1px solid var(--fde-line); border-radius: var(--fde-r-lg);
  padding: 16px 16px; background: linear-gradient(120deg, #ffffff, #f4f6ff);
  cursor: pointer; transition: all 0.16s var(--fde-ease);
}
.rm-growhint:hover { border-color: var(--fde-blue-line); }
.rm-growhint__ic { flex: none; width: 40px; height: 40px; border-radius: 14px; background: var(--fde-blue-weak); color: var(--fde-navy); display: inline-flex; align-items: center; justify-content: center; }
.rm-growhint__ic svg { width: 21px; height: 21px; }
.rm-growhint__t { flex: 1; min-width: 0; }
.rm-growhint__title { font-size: 13px; font-weight: 600; color: var(--fde-ink); }
.rm-growhint__sub { font-size: 12px; color: var(--fde-ink-3); margin-top: 4px; line-height: 1.5; }
.rm-growhint__go { flex: none; color: var(--fde-navy); font-size: 17px; font-weight: 600; }

/* ---------------- 空态（诚实） ---------------- */
.rm-honestempty {
  text-align: center; padding: 24px 16px; border: 1px dashed var(--fde-line);
  border-radius: var(--fde-r-md); color: var(--fde-ink-3); background: var(--fde-surface);
}
.rm-honestempty__ic { font-size: 22px; margin-bottom: 8px; opacity: .8; }
.rm-honestempty__t { font-size: 13px; font-weight: 600; color: var(--fde-ink-2); margin-bottom: 4px; }
.rm-honestempty__d { font-size: 12px; line-height: 1.6; }
.rm-honestempty .fde-btn { margin-top: 12px; }

/* ---------------- 加载骨架 ---------------- */
.rm-skeleton { display: flex; flex-direction: column; gap: 12px; }
.rm-skline { height: 14px; border-radius: 14px; background: var(--fde-surface-2); position: relative; overflow: hidden; }
.rm-skline::after { content:''; position:absolute; inset:0; background: linear-gradient(90deg, transparent, rgba(255,255,255,.7), transparent); animation: rmshim 1.3s infinite; transform: translateX(-100%); }
@keyframes rmshim { to { transform: translateX(100%); } }

/* ---------------- 响应式 ---------------- */
@media (max-width: 1023px) {
  .rm-seats { grid-template-columns: repeat(3, 1fr); gap: 8px; }
}
@media (max-width: 860px) {
  .rm-appbar__in { padding: 8px 12px; gap: 8px; flex-wrap: wrap; }
  .rm-aprog, .rm-iconbtn, .rm-mechip__t { display: none; }
  .rm-appbar__title { font-size: 17px; }
  .rm-submit { height: 32px; padding: 0 12px; font-size: 13px; }
  .rm-wrap { padding: 16px 12px 50px; }
  .rm-subnav__in { padding: 0 12px; }
  .rm-seats { grid-template-columns: repeat(2, 1fr); }
  .rm-orggrid { grid-template-columns: 1fr; }
  .rm-elemgrid { grid-template-columns: repeat(2, 1fr); }
  .rm-kanban { grid-template-columns: 1fr; }
  .rm-gantt__axis, .rm-grow { grid-template-columns: 96px 1fr; }
  .rm-gantt__axislb { padding: 8px; }
  .rm-steps { grid-template-columns: repeat(2, 1fr); }
  .rm-cstep:nth-child(2) { border-right: none; }
  .rm-cstep:nth-child(1), .rm-cstep:nth-child(2) { border-bottom: 1px solid var(--fde-line); }
  .rm-sechead__refs { display: none; }
}

/* ============================================================================
 * M21 · 项目复盘面板（room.js → sectionRetro 专用）
 * 只新增 .rm-retro* 前缀类，作用域仍在 #fde-room 内，不改动上面任何既有规则
 * ========================================================================== */
#fde-room .rm-retro-chip {
  display: inline-flex; align-items: center; height: 24px; padding: 0 8px; margin: 0 8px 8px 0;
  border-radius: 999px; background: var(--fde-surface); border: 1px solid var(--fde-line);
  font-size: 12px; color: var(--fde-ink-2); white-space: nowrap;
}
#fde-room .rm-retro-none { font-size: 12px; line-height: 1.7; color: var(--fde-ink-3); }
#fde-room .rm-retro-kv { display: flex; gap: 16px; padding: 8px 0; }
#fde-room .rm-retro-kv + .rm-retro-kv { border-top: 1px solid var(--fde-line); }
#fde-room .rm-retro-kv__k { flex: 0 0 92px; font-size: 12px; color: var(--fde-ink-3); }
#fde-room .rm-retro-kv__v { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--fde-ink); line-height: 1.6; }
#fde-room .rm-retro-kv__h { display: block; margin-top: 4px; font-size: 12px; color: var(--fde-ink-3); }
#fde-room .rm-retro-na { display: grid; grid-template-columns: 150px 1fr 190px 34px; gap: 8px; align-items: center; margin-bottom: 8px; }
#fde-room .rm-retro-naacts { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
#fde-room .rm-retro-nahint { flex: 1 1 auto; font-size: 12px; color: var(--fde-ink-3); }
#fde-room .rm-retro-assets { display: flex; flex-direction: column; }
#fde-room .rm-retro-asset { display: flex; align-items: center; gap: 8px; padding: 8px 0; }
#fde-room .rm-retro-asset + .rm-retro-asset { border-top: 1px solid var(--fde-line); }
#fde-room .rm-retro-asset__t { flex: 1 1 auto; min-width: 0; font-size: 13px; color: var(--fde-ink); text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#fde-room a.rm-retro-asset__t:hover { color: var(--fde-navy); }
#fde-room .rm-retro-asset__m { flex: 0 0 auto; font-size: 12px; color: var(--fde-ink-3); }
#fde-room .rm-retro-signs { display: flex; flex-wrap: wrap; }
#fde-room .rm-card--retro-pub { background: var(--fde-bg); }
@media (max-width: 768px) {
  #fde-room .rm-retro-na { grid-template-columns: 1fr; gap: 8px; }
  #fde-room .rm-retro-kv { flex-direction: column; gap: 4px; }
  #fde-room .rm-retro-kv__k { flex: none; }
}

/* P-23 ① 任务真实度标签（训练 / 演练 / 实战）：一眼可辨、不混（规格 §1） */
#fde-room .rm-reality{display:inline-flex;align-items:center;height:20px;padding: 0 8px;margin-left: 8px;border-radius: 999px;font-size: 12px;font-weight: 600;white-space:nowrap;vertical-align:middle}
#fde-room .rm-reality--live{background:#FFF7E6;color:#8A6A1F;border:1px solid #F0DCB4}
#fde-room .rm-reality--drill{background:#EEF1FD;color:#4F6BED;border:1px solid #C9D3FF}
#fde-room .rm-reality--training{background:#F2F3F7;color:#6E6E73;border:1px solid #E5E5EA}

/* P-23 ② 命题库弹窗内的一行命题 */
#fde-room .rm-drillrow{border:1px solid var(--fde-line);border-radius: 14px;padding: 12px 16px;margin-bottom: 8px;background:var(--fde-surface)}
#fde-room .rm-drillrow__hd{display:flex;align-items:center;gap: 8px;flex-wrap:wrap;font-size: 13px}
#fde-room .rm-drillrow__meta{margin-left: auto;font-size: 12px;color:var(--fde-ink-3)}
#fde-room .rm-drillrow__d{font-size: 13px;color:var(--fde-ink-2);line-height:1.6;margin-top: 8px}
#fde-room .rm-drillrow__roles{font-size: 12px;color:var(--fde-ink-3);margin-top: 4px}
#fde-room .rm-drillrow__act{margin-top: 8px}
#fde-room .rm-drillrow__match:not(:empty){margin-top: 8px;padding-top: 8px;border-top:1px solid var(--fde-line)}
#fde-room .rm-drillrow__role{display:flex;align-items:baseline;gap: 8px;flex-wrap:wrap;font-size: 13px;padding: 4px 0}
#fde-room .rm-drillrow__role>span{color:var(--fde-ink-2)}
#fde-room .rm-drillrow__duty{flex:1 1 100%;font-size: 12px;color:var(--fde-ink-3);line-height:1.6}
#fde-room .rm-drillrow__role>.rm-mini{margin-left: 4px;padding: 4px 8px;font-size: 12px}
#fde-room .rm-drillrow__role>.rm-reality--live{background:#EAF7EE;color:#1D7A45;border:1px solid #BFE6CD}
