/* ── Alliance 组件层 v2(2026-07-10 视觉回炉:对齐用户定稿 mockup 密度)────
   叠加在 frost.css 之后。v1(2026-07-08 Phase A 基座)偏素描;v2 按三张定稿
   mockup(联盟成员/联盟排行/王国)把尺度、留白、徽章、色彩能量拉满:
   每行独立卡片、emoji 方块头像、红色数字徽章、金渐变阶徽、金银铜名次块、
   实心 ember「我的排名」钉条。类名 API 与 v1 兼容(测试/模板断言不变)。
   设计文档 docs/superpowers/specs/2026-07-08-alliance-redesign-design.md §4 + 定稿图。 */
:root {
  --fz-card: #101f30;                    /* 卡底(v2 略深,衬 hairline) */
  --fz-card-hi: #142839;                 /* 卡底(高一档,行内/悬浮) */
  --fz-hair: rgba(159, 216, 239, .12);   /* 霜蓝细线描边 */
  --fz-castle: #C8403A;                  /* 城堡/火炉徽红(mockup 圆角方块) */
  --fz-gold-g: linear-gradient(180deg, #F5D98B, #D9A94E);  /* 金渐变(阶徽/名次/分段钮) */
  --fz-peach: #F5B36B;                   /* 数值 ember 亮橙(mockup 战力字色) */
}

/* ── 页级顶栏 .fz-pagebar(‹ 返回 | 居中标题 | 右槽)——mockup 每屏统一 ── */
.fz-pagebar {
  display: flex; align-items: center; gap: 8px; padding: 2px 2px 0;
}
.fz-pagebar .pb-back, .fz-pagebar .pb-right {
  flex: none; width: 38px; height: 38px; display: grid; place-items: center;
  border-radius: 12px; color: var(--fz-ice); text-decoration: none; font-size: 19px;
}
.fz-pagebar .pb-back:hover, .fz-pagebar .pb-right:hover { background: rgba(159, 216, 239, .08); }
.fz-pagebar .pb-right { color: var(--fz-dim); font-size: 16px; }
.fz-pagebar h1 {
  flex: 1; min-width: 0; margin: 0; text-align: center;
  font-size: 19px; font-weight: 800; letter-spacing: .02em; color: var(--fz-snow);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ── 计数条 .fz-strip(「本站活跃 9/97 · 口径备注」整条居中卡)────────── */
.fz-strip {
  display: block; text-align: center; padding: 12px 14px;
  background: var(--fz-card); border: 1px solid var(--fz-hair); border-radius: 14px;
  font-size: 13.5px; color: var(--fz-dim);
}
.fz-strip b { color: var(--fz-ok); font-weight: 800; font-variant-numeric: tabular-nums; }
.fz-strip .n2 { color: var(--fz-snow); font-weight: 700; }

/* ── 搜索 pill .fz-search ─────────────────────────────────────────── */
.fz-search input {
  width: 100%; padding: 14px 16px; font: inherit; font-size: 14.5px;
  background: #0d1a29; color: var(--fz-snow);
  border: 1px solid var(--fz-hair); border-radius: 16px;
}
.fz-search input::placeholder { color: #5d7488; }

/* ── 共享子件 ───────────────────────────────────────────────────── */
/* v2:头像=emoji 方块 tile(mockup),不再是字母圆 */
.fz-avatar {
  width: 46px; height: 46px; flex: none; border-radius: 12px;
  background: linear-gradient(155deg, #1c3247, #101f2e);
  border: 1px solid var(--fz-hair);
  display: grid; place-items: center; overflow: hidden;
  color: var(--fz-ice); font-weight: 700; font-size: 23px; line-height: 1;
}
.fz-avatar img { width: 100%; height: 100%; object-fit: cover; }
.fz-chev { flex: none; color: var(--fz-dim); font-size: 18px; line-height: 1; }
.fz-live {
  width: 8px; height: 8px; flex: none; border-radius: 50%;
  background: var(--fz-ok); box-shadow: 0 0 0 3px rgba(111, 207, 151, .16);
}
.fz-live.is-off { background: #3a4b5a; box-shadow: none; }
/* 活跃状态(点+字,右下,mockup)*/
.fz-livetag { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--fz-ok); font-weight: 600; }
.fz-livetag.is-off { color: #51667a; }
.fz-livetag .fz-live { width: 7px; height: 7px; box-shadow: none; }
/* stat 单元(名片卡 / 统帅卡共用) */
.fz-stat { text-align: center; padding: 8px 4px; min-width: 0; }
.fz-stat .k { display: block; font-size: 11px; color: var(--fz-dim); margin-bottom: 3px; }
.fz-stat .v {
  display: block; font-size: 15px; font-weight: 700; color: var(--fz-snow);
  font-variant-numeric: tabular-nums;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-stat.is-power .v { color: var(--fz-peach); }

/* ── 1. 联盟名片卡 .fz-ally-card ────────────────────────────────── */
.fz-ally-card {
  background: linear-gradient(180deg, #17293e, #101d2e);
  border: 1px solid var(--fz-hair); border-top-color: rgba(159, 216, 239, .24);
  border-radius: 18px; padding: 17px 16px 8px;
  box-shadow: 0 18px 34px -24px rgba(0, 0, 0, .9);
}
.fz-ally-head { display: flex; align-items: center; gap: 12px; position: relative; }
.fz-ally-flag {
  width: 50px; height: 50px; flex: none; border-radius: 13px;
  background: radial-gradient(120% 120% at 30% 20%, #24425d, #0e1a28);
  border: 1px solid var(--fz-hair); display: grid; place-items: center; font-size: 25px;
}
.fz-ally-title { min-width: 0; padding-right: 84px; }
.fz-ally-title b {
  display: block; font-size: 18px; font-weight: 800; letter-spacing: .02em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-ally-tag { color: var(--fz-ice); font-weight: 700; }
.fz-ally-rank {
  position: absolute; top: 0; right: 0; white-space: nowrap;
  font-size: 12px; font-weight: 800; color: #2a1c08;
  border-radius: 999px; padding: 5px 11px; background: var(--fz-gold-g);
  box-shadow: 0 6px 14px -8px rgba(232, 196, 118, .7);
}
.fz-ally-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 4px; margin-top: 14px; }

/* ── 1b. 盟主置顶卡 .fz-lead-card(金描边 hero,mockup 成员屏)────────── */
.fz-lead-card {
  position: relative; margin-top: 10px;
  display: flex; align-items: center; gap: 13px;
  padding: 19px 15px 15px; border-radius: 18px;
  background: linear-gradient(170deg, #1a2f47, #12233a 70%, #101f30);
  border: 1.5px solid rgba(232, 196, 118, .55);
  box-shadow: 0 16px 32px -20px rgba(0, 0, 0, .95), 0 0 0 1px rgba(232, 196, 118, .08);
}
.fz-lead-chip {
  position: absolute; top: -11px; left: 14px;
  font-size: 12px; font-weight: 800; color: #2a1c08; letter-spacing: .02em;
  background: var(--fz-gold-g); border-radius: 8px; padding: 3px 10px;
  box-shadow: 0 6px 12px -6px rgba(0, 0, 0, .6);
}
.fz-lead-card .fz-avatar {
  width: 56px; height: 56px; font-size: 28px; border-radius: 14px;
  background: linear-gradient(160deg, #f0c977, #d99a3e 70%, #b97b2c);
  border-color: rgba(232, 196, 118, .5);
}
.fz-lead-main { flex: 1; min-width: 0; }
.fz-lead-name { font-size: 17px; font-weight: 800; color: var(--fz-snow); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fz-lead-meta { display: flex; align-items: center; gap: 6px; margin-top: 5px; font-size: 13px; color: var(--fz-peach); }
.fz-lead-side { flex: none; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.fz-lead-side .pw { font-size: 18px; font-weight: 800; color: var(--fz-snow); font-variant-numeric: tabular-nums; }

/* ── 2. 阶级分组 .fz-rank-group(每组=独立大卡,mockup)──────────────── */
.fz-rank-group {
  background: var(--fz-card); border: 1px solid var(--fz-hair);
  border-radius: 16px; overflow: hidden;
}
.fz-rank-group + .fz-rank-group { margin-top: 0; }
.fz-rank-group-head {
  display: flex; align-items: center; gap: 12px; width: 100%;
  padding: 15px 15px; background: none; border: 0; cursor: pointer;
  text-align: left; color: var(--fz-snow); font: inherit;
}
.fz-rank-badge {
  flex: none; min-width: 42px; height: 27px; padding: 0 9px; border-radius: 8px;
  display: grid; place-items: center; font-size: 13px; font-weight: 800; letter-spacing: .02em;
  color: var(--fz-ice); background: rgba(159, 216, 239, .1); border: 1px solid var(--fz-hair);
}
.fz-rank-group.is-lead .fz-rank-badge {
  color: #2a1c08; background: var(--fz-gold-g);
  border-color: rgba(232, 196, 118, .6);
}
.fz-rank-name {
  flex: 1; min-width: 0; font-size: 16px; font-weight: 700;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-rank-count { flex: none; font-size: 13.5px; color: var(--fz-dim); font-variant-numeric: tabular-nums; }
.fz-rank-group-head .fz-chev { transition: transform .15s ease; }
.fz-rank-group.is-open .fz-chev { transform: rotate(90deg); }
.fz-rank-group-body {
  border-top: 1px solid var(--fz-hair); padding: 2px 8px 6px;
  display: flex; flex-direction: column;
}
.fz-rank-group-body[hidden] { display: none; }

/* ── 3. 成员卡 .fz-member-row (+ .is-placeholder) ───────────────── */
.fz-member-row {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 8px; border-radius: 12px;
}
.fz-member-row + .fz-member-row { border-top: 1px solid rgba(159, 216, 239, .07); }
.fz-member-main { flex: 1; min-width: 0; }
.fz-member-name {
  font-size: 15.5px; font-weight: 700; color: var(--fz-snow);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-member-meta {
  display: flex; align-items: center; gap: 7px; margin-top: 4px;
  font-size: 12.5px; color: var(--fz-dim);
}
.fz-member-meta .furnace { color: var(--fz-peach); font-weight: 600; }
.fz-member-side { margin-left: auto; flex: none; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.fz-member-side .pw { font-size: 15.5px; font-weight: 800; color: var(--fz-snow); font-variant-numeric: tabular-nums; }
.fz-member-row .fz-live { margin-left: auto; }
.fz-member-row.is-placeholder { opacity: .78; }
.fz-member-row.is-placeholder .fz-avatar {
  background: #131f2c; color: var(--fz-dim); border-style: dashed; font-size: 19px;
}
.fz-member-row.is-placeholder .fz-member-name { color: var(--fz-dim); font-weight: 500; }
.fz-invite {
  margin-left: auto; flex: none; white-space: nowrap; cursor: pointer; text-decoration: none;
  font-size: 12.5px; font-weight: 700; color: var(--fz-ember-hi);
  border: 1px solid rgba(240, 127, 45, .5); border-radius: 999px; padding: 6px 13px;
  background: rgba(240, 127, 45, .08);
}
.fz-invite:hover { background: rgba(240, 127, 45, .16); }

/* ── 4. 城堡/火炉徽 .fz-castle(v2:红色圆角方块,mockup)────────────── */
.fz-castle {
  --s: 21px; flex: none; width: var(--s); height: var(--s);
  display: inline-grid; place-items: center; border-radius: 6px;
  background: linear-gradient(180deg, #db5850, var(--fz-castle));
  box-shadow: 0 2px 6px -2px rgba(200, 64, 58, .8);
  color: #fff; font-size: 11.5px; font-weight: 800; line-height: 1;
  text-shadow: 0 1px 1px rgba(0, 0, 0, .4);
}

/* ── 4b. 分段切换 .fz-seg(实力榜/击败榜,active=金渐变,mockup)──────── */
.fz-seg { display: flex; gap: 10px; }
.fz-seg a {
  flex: 1; text-align: center; padding: 13px 0; border-radius: 15px;
  font-size: 15px; font-weight: 700; color: var(--fz-dim); text-decoration: none;
  background: var(--fz-card); border: 1px solid var(--fz-hair);
}
.fz-seg a.active {
  color: #2a1c08; background: var(--fz-gold-g); border-color: rgba(232, 196, 118, .6);
  box-shadow: 0 10px 22px -14px rgba(232, 196, 118, .8);
}

/* ── 5. 排名行 .fz-rank-row(v2:方块名次徽 + 独立卡行,mockup)────────── */
.fz-rank-row {
  display: flex; align-items: center; gap: 12px; padding: 13px 13px;
  border-radius: 16px; border: 1px solid var(--fz-hair); background: var(--fz-card);
}
.fz-rank-row + .fz-rank-row { margin-top: 9px; }
.fz-medal {
  flex: none; width: 36px; height: 36px; border-radius: 10px;
  display: grid; place-items: center;
  font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums;
  color: var(--fz-dim); background: rgba(159, 216, 239, .06); border: 1px solid var(--fz-hair);
}
.fz-rank-row .fz-avatar { width: 40px; height: 40px; font-size: 20px; border-radius: 11px; }
.fz-rank-row-name {
  flex: 1; min-width: 0; display: flex; align-items: center; gap: 7px;
  font-size: 15.5px; font-weight: 700; color: var(--fz-snow);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-rank-row-val { flex: none; font-size: 16px; font-weight: 800; color: var(--fz-snow); font-variant-numeric: tabular-nums; }
.fz-rank-row.g1 { border-color: rgba(232, 196, 118, .55); background: linear-gradient(180deg, rgba(232, 196, 118, .13), var(--fz-card)); }
.fz-rank-row.g2 { border-color: rgba(197, 210, 222, .4); }
.fz-rank-row.g3 { border-color: rgba(205, 144, 90, .45); }
.fz-rank-row.g1 .fz-medal { color: #2a1c08; background: var(--fz-gold-g); border: 0; box-shadow: 0 6px 14px -8px rgba(232, 196, 118, .9); }
.fz-rank-row.g2 .fz-medal { color: #1b2836; background: linear-gradient(180deg, #cfdae6, #93a7ba); border: 0; }
.fz-rank-row.g3 .fz-medal { color: #fff; background: linear-gradient(180deg, #d98e4f, #b36a33); border: 0; }
/* 我的排名:榜内=淡 ember 描边;钉底条(.fz-me-solid)=实心 ember 白字(mockup) */
.fz-rank-row.is-me { border-color: rgba(240, 127, 45, .55); background: linear-gradient(180deg, rgba(240, 127, 45, .14), var(--fz-card)); }
.fz-rank-row.is-me .fz-rank-row-val { color: var(--fz-ember-hi); }
.fz-rank-row.is-me.fz-me-solid {
  border: 0; background: linear-gradient(180deg, #F5983B, #E8781C);
  box-shadow: 0 14px 30px -14px rgba(240, 127, 45, .75);
}
.fz-rank-row.is-me.fz-me-solid .fz-medal { color: #7a3c0a; background: rgba(255, 255, 255, .85); border: 0; }
.fz-rank-row.is-me.fz-me-solid .fz-rank-row-name, .fz-rank-row.is-me.fz-me-solid .fz-rank-row-val { color: #fff; }

/* ── 6. 统帅卡主角卡 .fz-cc-hero ────────────────────────────────── */
.fz-cc-hero {
  --cc-grad: linear-gradient(150deg, #2a2230 0%, #1a1b2b 45%, #101827 100%);
  position: relative; border-radius: 18px; padding: 16px 15px 15px;
  background: var(--cc-grad);
  border: 1px solid var(--fz-hair); border-top-color: rgba(232, 196, 118, .3);
  box-shadow: 0 18px 34px -22px rgba(0, 0, 0, .9); overflow: hidden;
}
.fz-cc-hero::after {
  content: ""; position: absolute; inset: 6px; pointer-events: none;
  border: 1px solid rgba(232, 196, 118, .18); border-radius: 12px;
}
.fz-cc-hero > * { position: relative; }
.fz-cc-chip {
  display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .08em;
  color: var(--fz-gold); border: 1px solid rgba(232, 196, 118, .4); border-radius: 999px;
  padding: 2px 10px; background: rgba(0, 0, 0, .2);
}
.fz-cc-name {
  margin: 9px 0 12px; font-family: "Songti SC", "STZhongsong", "Noto Serif CJK SC", serif;
  font-size: 23px; font-weight: 700; letter-spacing: .03em; color: var(--fz-snow);
  text-shadow: 0 2px 8px rgba(0, 0, 0, .5);
}
.fz-cc-name .fz-ally-tag { color: var(--fz-gold); }
.fz-cc-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.fz-cc-stats .fz-stat {
  background: rgba(0, 0, 0, .22); border: 1px solid var(--fz-hair);
  border-radius: 9px; padding: 9px 4px;
}
.fz-cc-stats .fz-stat.is-power .v { color: var(--fz-ember-hi); }
.fz-cc-verify { display: flex; align-items: center; gap: 6px; margin-top: 11px; font-size: 12.5px; color: var(--fz-ok); }
.fz-cc-verify .serial { color: var(--fz-gold); font-weight: 600; }

/* ── 7. 信息卡 .fz-info-grid(2 列 · 眼睛可隐藏)────────────────── */
.fz-info-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--fz-line); border: 1px solid var(--fz-hair); border-radius: 14px; overflow: hidden;
}
.fz-info { background: var(--fz-card); padding: 11px 13px; min-width: 0; }
.fz-info .k { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--fz-dim); margin-bottom: 3px; }
.fz-info .v {
  font-size: 14.5px; font-weight: 600; color: var(--fz-snow);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-info.is-power .v { color: var(--fz-peach); }
.fz-eye { flex: none; font-size: 11px; color: var(--fz-dim); opacity: .85; }
.fz-info .v.is-hidden { color: var(--fz-dim); letter-spacing: .18em; }

/* ── 8. 入口行 .fz-entry (+ .is-hot)─────────────────────────────── */
.fz-entry {
  display: flex; align-items: center; gap: 13px; padding: 15px 15px;
  border-radius: 16px; background: var(--fz-card); border: 1px solid var(--fz-hair);
  text-decoration: none; color: var(--fz-snow);
}
.fz-entry + .fz-entry { margin-top: 10px; }
.fz-entry-ico {
  flex: none; width: 44px; height: 44px; border-radius: 12px;
  display: grid; place-items: center; font-size: 22px;
  background: rgba(159, 216, 239, .08); border: 1px solid var(--fz-hair);
}
.fz-entry-main { flex: 1; min-width: 0; }
.fz-entry-title { display: block; font-size: 15.5px; font-weight: 700; }
.fz-entry-sub {
  display: block; font-size: 12.5px; color: var(--fz-dim); margin-top: 2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.fz-entry:hover { border-color: var(--fz-line-hi); }
.fz-entry.is-hot {
  border-color: rgba(240, 127, 45, .55);
  background: linear-gradient(180deg, rgba(240, 127, 45, .12), var(--fz-card));
  box-shadow: 0 0 0 1px rgba(240, 127, 45, .1), 0 12px 24px -18px rgba(240, 127, 45, .5);
}
.fz-entry.is-hot .fz-entry-ico { background: rgba(240, 127, 45, .16); border-color: rgba(240, 127, 45, .4); color: var(--fz-ember-hi); }
.fz-entry.is-hot .fz-entry-title { color: var(--fz-ember-hi); }

/* ── 9. 心情/状态 chip .fz-status ───────────────────────────────── */
.fz-status {
  display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--fz-ice);
  border: 1px dashed var(--fz-line-hi); border-radius: 999px; padding: 5px 13px;
  background: rgba(159, 216, 239, .06);
}
.fz-status .ico { font-size: 13px; }
.fz-status.is-empty { color: var(--fz-dim); }

/* ── 10. 联盟频道列表 .fz-channels(2026-07-09 会议:作战室归入联盟,OOPZ 式分栏,
   一行一频道=图标+名+一句话说明;成员视角专用,路人不渲染)──────────────── */
.fz-channels {
  background: var(--fz-card); border: 1px solid var(--fz-hair);
  border-radius: 18px; overflow: hidden;
}
.fz-channels-hd {
  padding: 13px 16px 9px; font-size: 11.5px; font-weight: 800;
  letter-spacing: .16em; color: var(--fz-dim);
}
.fz-channel {
  display: flex; align-items: center; gap: 13px; padding: 14px 16px;
  border-top: 1px solid rgba(159, 216, 239, .08);
  text-decoration: none; color: var(--fz-snow);
}
.fz-channel-ico {
  flex: none; width: 42px; height: 42px; border-radius: 12px;
  display: grid; place-items: center; font-size: 21px;
  background: rgba(159, 216, 239, .08); border: 1px solid var(--fz-hair);
}
.fz-channel-main { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 8px; }
.fz-channel-name { flex: none; font-size: 15.5px; font-weight: 700; }
.fz-pill-lm { display: inline-block; margin-left: 6px; font-size: 10px; font-weight: 800;
  letter-spacing: .04em; padding: 1.5px 7px; border-radius: 999px; vertical-align: 2px;
  color: #26160A; background: linear-gradient(180deg, #F8D55F, #E88D3D); }
.fz-channel-desc {
  min-width: 0; font-size: 12.5px; color: var(--fz-dim);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
a.fz-channel:hover { background: rgba(159, 216, 239, .05); }
.fz-channel.is-hot .fz-channel-name { color: var(--fz-ember-hi); }
.fz-channel.is-hot .fz-channel-ico {
  background: rgba(240, 127, 45, .14); border-color: rgba(240, 127, 45, .4);
}
.fz-channel.is-soon { cursor: default; opacity: .55; }
.fz-soon-chip {
  flex: none; font-size: 11px; color: var(--fz-dim); white-space: nowrap;
  border: 1px dashed var(--fz-line-hi); border-radius: 999px; padding: 2px 9px;
}
@media (max-width: 420px) {  /* 窄屏:说明换行到频道名下,保持单列不溢出 */
  .fz-channel-main { display: block; }
  .fz-channel-desc { display: block; margin-top: 2px; }
}

/* ── 11. 频道面包屑 .fz-crumb(deploy_prep/arsenal/bearpit/frost 顶部
   「联盟 › 频道名」,链回 /alliance/home)───────────────────────────── */
.fz-crumb {
  max-width: 1100px; margin: 12px auto 2px; padding: 0 16px;
  display: flex; align-items: center; gap: 7px; font-size: 13px;
}
.fz-crumb a { color: var(--fz-ice); text-decoration: none; }
.fz-crumb a:hover { text-decoration: underline; }
.fz-crumb .sep { color: var(--fz-dim); }
.fz-crumb b { color: var(--fz-snow); font-weight: 600; }

/* ── 12. 盟内互动包(Lane B 2026-07-10:联盟匿名投票 + 盟友心情墙)────────
   /alliance/votes 投票卡+比例条+折叠发起表单;alliance/home 成员视角心情墙。
   390px 单列友好:全部块级纵排,比例条=卡内绝对定位填充,不横向溢出。 */
/* 12a. 投票卡 .fz-vote-card + 比例条 */
.fz-vote-card {
  background: var(--fz-card); border: 1px solid var(--fz-hair);
  border-radius: 16px; padding: 14px 14px 12px;
}
.fz-vote-card.is-done { opacity: .72; }
.fz-vote-top { display: flex; align-items: flex-start; gap: 9px; }
.fz-vote-chip {
  flex: none; margin-top: 1px; font-size: 11px; font-weight: 800; white-space: nowrap;
  border-radius: 999px; padding: 3px 9px;
}
.fz-vote-chip.is-anon { color: var(--fz-ice); background: rgba(159, 216, 239, .1); border: 1px solid var(--fz-hair); }
.fz-vote-chip.is-named { color: var(--fz-peach); background: rgba(245, 179, 107, .1); border: 1px solid rgba(245, 179, 107, .35); }
.fz-vote-q { min-width: 0; font-size: 15.5px; font-weight: 700; color: var(--fz-snow); line-height: 1.4; word-break: break-word; }
.fz-vote-meta { margin-top: 6px; font-size: 12px; color: var(--fz-dim); }
.fz-vote-opts { margin-top: 10px; display: flex; flex-direction: column; gap: 7px; }
.fz-vote-opts form { margin: 0; }
.fz-vote-opt {
  position: relative; display: flex; align-items: center; gap: 8px; width: 100%;
  padding: 10px 12px; border-radius: 10px; overflow: hidden;
  border: 1px solid var(--fz-hair); background: #0d1a29;
  color: var(--fz-snow); font: inherit; text-align: left;
}
.fz-vote-opt .bar {
  position: absolute; top: 0; left: 0; bottom: 0; max-width: 100%;
  background: linear-gradient(90deg, rgba(159, 216, 239, .24), rgba(159, 216, 239, .07));
  border-radius: 10px 0 0 10px; pointer-events: none;
}
.fz-vote-opt .txt { position: relative; flex: 1; min-width: 0; font-size: 14px; font-weight: 600; word-break: break-word; }
.fz-vote-opt .n { position: relative; flex: none; font-size: 12px; color: var(--fz-dim); font-variant-numeric: tabular-nums; white-space: nowrap; }
button.fz-vote-opt { cursor: pointer; }
button.fz-vote-opt:hover { border-color: var(--fz-line-hi); background: #10202f; }
.fz-vote-opt.is-mine { border-color: rgba(240, 127, 45, .5); }
.fz-vote-opt.is-mine .txt { color: var(--fz-ember-hi); }
.fz-vote-voters { margin: 3px 2px 0; font-size: 11.5px; color: var(--fz-dim); line-height: 1.5; word-break: break-word; }
.fz-vote-closebar { margin: 10px 0 0; text-align: right; }
.fz-vote-closebar button {
  padding: 6px 13px; cursor: pointer; font-size: 12.5px; font-weight: 700; font-family: inherit;
  color: var(--fz-dim); background: none; border: 1px solid var(--fz-hair); border-radius: 999px;
}
.fz-vote-closebar button:hover { color: var(--fz-snow); border-color: var(--fz-line-hi); }
/* 12b. 发起投票折叠表单 .fz-vote-new(details/summary,无 JS) */
.fz-vote-new { background: var(--fz-card); border: 1px solid var(--fz-hair); border-radius: 16px; }
.fz-vote-new summary { padding: 13px 16px; cursor: pointer; list-style: none; font-size: 15px; font-weight: 700; color: var(--fz-ice); }
.fz-vote-new summary::-webkit-details-marker { display: none; }
.fz-vote-new[open] summary { border-bottom: 1px solid var(--fz-hair); }
.fz-vote-new form { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 8px; }
.fz-vote-new input[type="text"] {
  width: 100%; padding: 10px 13px; font: inherit; font-size: 14px;
  background: #0d1a29; color: var(--fz-snow);
  border: 1px solid var(--fz-hair); border-radius: 10px;
}
.fz-vote-new input[type="text"]::placeholder { color: #5d7488; }
.fz-vote-new .row { display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; padding: 2px 1px; font-size: 13px; color: var(--fz-snow); }
.fz-vote-new .row label { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.fz-vote-new .dur { display: inline-flex; flex-wrap: wrap; gap: 8px 12px; color: var(--fz-dim); }
.fz-vote-new .go {
  margin-top: 2px; padding: 11px 0; border: 0; border-radius: 12px; cursor: pointer;
  font: inherit; font-size: 14.5px; font-weight: 800; color: #26160A;
  background: linear-gradient(180deg, #FFA75C, #E86F1E);
  box-shadow: 0 12px 24px -16px rgba(240, 127, 45, .6);
}
/* 12c. 心情墙 .fz-moods(「盟友这一刻」:发布框 + 心情行) */
.fz-moods { background: var(--fz-card); border: 1px solid var(--fz-hair); border-radius: 18px; padding: 13px 14px 6px; }
.fz-moods-hd { padding: 0 2px 10px; font-size: 11.5px; font-weight: 800; letter-spacing: .16em; color: var(--fz-dim); }
.fz-mood-form { display: flex; gap: 8px; padding-bottom: 6px; }
.fz-mood-form input {
  flex: 1; min-width: 0; padding: 10px 14px; font: inherit; font-size: 13.5px;
  background: #0d1a29; color: var(--fz-snow);
  border: 1px solid var(--fz-hair); border-radius: 999px;
}
.fz-mood-form input::placeholder { color: #5d7488; }
.fz-mood-form button {
  flex: none; padding: 0 16px; border: 0; border-radius: 999px; cursor: pointer;
  font: inherit; font-size: 13.5px; font-weight: 700; color: #26160A;
  background: linear-gradient(180deg, #FFA75C, #E86F1E);
}
.fz-mood-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 2px; }
.fz-mood-row + .fz-mood-row { border-top: 1px solid rgba(159, 216, 239, .07); }
.fz-mood-row .fz-avatar { width: 36px; height: 36px; font-size: 18px; border-radius: 10px; }
.fz-mood-main { flex: 1; min-width: 0; }
.fz-mood-name { display: flex; align-items: baseline; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--fz-dim); }
.fz-mood-name .t { font-size: 11.5px; font-weight: 400; }
.fz-mood-text { margin-top: 2px; font-size: 14px; color: var(--fz-snow); line-height: 1.45; word-break: break-word; }
.fz-mood-empty { padding: 10px 2px 12px; font-size: 13px; color: var(--fz-dim); text-align: center; }
/* 12d. 心情👍回应 .fz-mood-like(Lane B 留存包 2026-07-10:盟友可点;已点=实心 ember;
   本人条目=半透明只读计数。行 align-items:flex-start,chip 靠右由 margin-left:auto 顶过去) */
.fz-mood-react { margin-left: auto; flex: none; }
.fz-mood-like {
  flex: none; margin-left: auto; display: inline-flex; align-items: center; gap: 4px;
  font: inherit; font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums;
  white-space: nowrap; color: var(--fz-dim); background: rgba(159, 216, 239, .06);
  border: 1px solid var(--fz-hair); border-radius: 999px; padding: 4px 10px;
}
.fz-mood-react .fz-mood-like { margin-left: 0; }
button.fz-mood-like { cursor: pointer; }
button.fz-mood-like:hover { color: var(--fz-snow); border-color: var(--fz-line-hi); background: rgba(159, 216, 239, .12); }
.fz-mood-like.is-on {
  color: #26160A; background: linear-gradient(180deg, #FFA75C, #E86F1E);
  border-color: transparent;
}
.fz-mood-like.is-self { opacity: .75; }

/* ── 13. 小盟拉人卡 .fz-recruit(Lane B 留存包:成员视角且全盟<5人;
   实心 ember 大卡照 kingdom.css .kh-cta-card 的既有视觉语言,白 pill 按钮)───── */
.fz-recruit {
  display: block; padding: 18px 17px 17px; border-radius: 18px; text-decoration: none;
  background: linear-gradient(165deg, #F49A38, #E8781C 80%);
  box-shadow: 0 20px 42px -22px rgba(240, 127, 45, .85);
}
.fz-recruit h3 { margin: 0 0 5px; font-size: 17.5px; font-weight: 800; color: #fff; }
.fz-recruit p { margin: 0 0 13px; font-size: 13px; line-height: 1.5; color: rgba(255, 255, 255, .92); }
.fz-recruit .btn {
  display: inline-block; padding: 10px 20px; border-radius: 999px;
  background: #fff; color: #E8781C; font-size: 14px; font-weight: 800;
  box-shadow: 0 8px 18px -8px rgba(0, 0, 0, .35);
}
