/* ============================================================
   Date Hunter · 运营情报中台  设计系统
   Claude Design 2026-06-17：冷灰底 + 蓝色主动作 + 克制指标
   ============================================================ */
:root {
  /* —— 中性 / 纸面 —— */
  --paper: #F4F5F7;        /* 全局背景 */
  --paper-2: #EEF0F3;      /* 次级背景 / 分组底 */
  --surface: #FFFFFF;      /* 卡片 */
  --surface-sunk: #F8F9FB; /* 内嵌区/表头 */
  --line: #E3E6EB;         /* 边框 */
  --line-soft: #ECEFF3;    /* 更弱边框 */
  --line-dashed: #D5DAE2;

  /* —— 墨字 —— */
  --ink: #15181E;          /* 主文字 */
  --ink-2: #6B7079;        /* 次文字 */
  --ink-3: #646A74;        /* 弱文字 / 标签；在纸面背景保持 WCAG AA 对比度 */
  --ink-4: #676D77;        /* 占位 / 最弱文字；在 paper-2 上仍 >= 4.5:1 */

  /* —— 主动作：Claude Design 蓝色系统 —— */
  --brand: #2D5BD6;
  --brand-press: #1F47AA;
  --brand-soft: #EEF1F8;   /* 主色淡底 */
  --brand-line: #D7DFF4;
  --accent: #2D5BD6;
  --accent-soft: #EEF3FF;
  --accent-line: #C9D6FF;
  --purple: #7E5CC6;
  --purple-soft: #F4F0FF;
  --purple-line: #DCCFFF;
  --amber: #9A6A18;
  --amber-soft: #FFF7E8;
  --amber-line: #F0D8A8;
  --blue-a: #2D5BD6;
  --blue-b: #4D74C0;
  --blue-c: #5566B8;
  --blue-d: #5C84DB;
  --blue-e: #8FB0EE;
  --blue-f: #C9D2E6;
  --tree-anchor: #283463;

  /* —— 语义状态（克制，只用于状态/告警）—— */
  --ok: #1B7A4E;     --ok-soft:   #EAF6F0; --ok-line: #CDE7DA;
  --run: #1F9D5B;
  --warn: #A66A13;   --warn-soft: #FFF6E4; --warn-line: #EAD4A9;
  --bad: #A54D3E;    --bad-soft:  #F9E9E6;
  --idle: #858479;   --idle-soft: #F8F5EE;  /* 无数据/未采 */

  /* —— 平台固定色（仅小色点 / 图标）—— */
  --p-douyin: #18181B;
  --p-xhs: #D6453B;
  --p-sph: #E08A2B;

  --r-sm: 7px;
  --r: 12px;
  --r-lg: 16px;
  --shadow-sm: 0 8px 22px rgba(21,24,30,.05);
  --shadow: 0 12px 30px rgba(21,24,30,.06);
  --shadow-hover: 0 16px 38px -24px rgba(21,24,30,.26), 0 1px 2px rgba(21,24,30,.05);
  --shadow-pop: 0 18px 44px -18px rgba(21,24,30,.32);
  --motion-fast: .17s;
  --motion-med: .24s;
  --motion-slow: .6s;
  --motion-ease: cubic-bezier(.16,1,.3,1);

  --fs-num: "Hanken Grotesk", "SF Pro Display", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --fs-sans: "Hanken Grotesk", -apple-system, BlinkMacSystemFont, "PingFang SC",
             "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", Roboto, system-ui, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--fs-sans);
  background: var(--paper);
  color: var(--ink);
  font-size: 14px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
body.drawer-open { overflow: hidden; }
#root { min-height: 100vh; }
button { font-family: inherit; cursor: pointer; }
button:focus-visible,
[role="button"]:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}
::selection { background: var(--brand-soft); }
@keyframes ddIn {
  from { opacity: .92; transform: translateY(-6px) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes panelRise {
  from { transform: translateY(6px); }
  to { transform: translateY(0); }
}
@keyframes motionBlockIn {
  from { transform: translateX(-10px); opacity: .82; }
  to { transform: translateX(0); opacity: 1; }
}
@keyframes projectCardDrop {
  from { transform: translateY(-12px); opacity: .86; }
  to { transform: translateY(0); opacity: 1; }
}
@keyframes contributionCellIn {
  from { transform: translateY(10px) scale(.985); opacity: .72; }
  to { transform: translateY(0) scale(1); opacity: 1; }
}
@keyframes accountPortraitSwitch {
  from { transform: translateY(8px); opacity: .72; }
  to { transform: translateY(0); opacity: 1; }
}
@keyframes platformMetricNumberIn {
  from { transform: translateX(-34px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}
@keyframes platformMetricNumberOut {
  from { transform: translateX(0); opacity: 1; }
  to { transform: translateX(34px); opacity: 0; }
}
@keyframes pageScreenIn {
  from { transform: translateY(8px); opacity: .72; }
  to { transform: translateY(0); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

.num { font-variant-numeric: tabular-nums; font-feature-settings: "tnum" 1; }
.num,
.mono { font-family: var(--fs-num); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }

/* ============================================================
   APP SHELL
   ============================================================ */
.app { min-height: 100vh; display: flex; flex-direction: column; }

.topbar {
  position: sticky; top: 0; z-index: 40;
  background: rgba(244,245,247,.88);
  backdrop-filter: saturate(140%) blur(14px);
  border-bottom: 1px solid var(--line);
}
.topbar-inner {
  max-width: 1216px; margin: 0 auto; padding: 0 28px;
  min-height: 58px; display: flex; align-items: center; gap: 14px;
}
.brand-mark { display: flex; align-items: center; gap: 11px; flex-shrink: 0; }
.brand-logo {
  width: 29px; height: 29px; border-radius: 8px;
  background: #161A22; color: #fff;
  display: grid; place-items: center; flex-shrink: 0;
  box-shadow: none;
}
.brand-name { font-weight: 700; letter-spacing: -.01em; font-size: 14px; line-height: 1; }
.brand-sub { font-size: 10.5px; color: var(--ink-3); margin-top: 2px; letter-spacing: .02em; }

.tabs { display: flex; gap: 2px; margin-left: 2px; min-width: 0; }
.tab {
  border: 1px solid transparent; background: transparent; color: var(--ink-2);
  padding: 7px 11px; border-radius: 8px; font-size: 13.2px; font-weight: 500;
  display: flex; align-items: center; gap: 8px; white-space: nowrap;
  transition: background .14s, color .14s;
}
.tab:hover { background: var(--paper-2); color: var(--ink); }
.tab.active {
  background: var(--surface); color: var(--ink);
  box-shadow: 0 1px 2px rgba(22,24,29,0.06);
  border: 1px solid #EAECF1;
}
.tab.active:hover { background: var(--surface); color: var(--ink); }
.tab.active .tab-ico { opacity: 1; }
.tab-ico { opacity: .8; display: inline-flex; }
.tab .tab-ico svg { display:block; }

.topbar-right { margin-left: auto; display: flex; align-items: center; gap: 8px; min-width: 0; }
.api-pill {
  display: flex; align-items: center; gap: 8px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 999px; padding: 5px 10px; box-shadow: var(--shadow-sm);
  min-width: 142px;
}
.api-pill.ok { border-color: var(--ok-line); background: var(--surface); }
.api-pill.loading { border-color: var(--line); background: var(--surface-sunk); }
.api-title { font-size: 12px; font-weight: 650; color: var(--ink); line-height: 1.15; }
.api-meta { font-size: 10.5px; color: var(--ink-3); line-height: 1.2; margin-top: 1px; }
.shop-pill {
  display: flex; align-items: center; gap: 9px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 999px; padding: 5px 8px 5px 6px; box-shadow: var(--shadow-sm);
}
.shop-ava { width: 26px; height: 26px; border-radius: 50%; flex-shrink:0; }
.shop-pill .nm { font-weight: 600; font-size: 13px; }
.shop-pill .meta { font-size: 11px; color: var(--ink-3); }
.shop-pill .chev { color: var(--ink-4); margin-left: 2px; }
.api-mini {
  height: 34px; display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--line); background: rgba(255,255,255,.72);
  border-radius: 999px; padding: 0 11px; color: var(--ink-2);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
  flex-shrink: 0; min-width: 58px; justify-content: center;
}
.api-mini.ok { border-color: var(--accent-line); background: var(--surface); color: var(--ink-2); }
.api-mini.loading { background: var(--surface-sunk); }
.api-mini-label { font-size: 12px; font-weight: 650; }
.api-mini-cost { font-family: var(--fs-num); color: var(--ink-3); border-left: 1px solid var(--line); padding-left: 8px; }
.version-mini {
  height: 34px; display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--brand-line); background: #F7FAFF;
  border-radius: 999px; padding: 0 10px; color: var(--brand);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
  flex-shrink: 0; min-width: 0;
}
.version-mini-label { color: var(--ink-4); font-size: 10.5px; font-weight: 750; }
.version-mini b { font-family: var(--fs-num); font-size: 12px; font-weight: 800; letter-spacing: 0; }
.staff-mini {
  height: 34px; display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--line); background: var(--surface);
  border-radius: 999px; padding: 0 11px; color: var(--ink-2);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
}
.top-project-switch-wrap {
  position: relative;
  flex: 0 0 auto;
  min-width: 0;
}
.top-project-switch {
  height: 38px;
  min-width: 104px;
  border: 1px solid var(--brand);
  background: var(--brand);
  border-radius: 10px;
  padding: 0 13px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  color: #fff;
  box-shadow: 0 10px 20px -16px rgba(45,91,214,.55);
  cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.top-project-switch:hover,
.top-project-switch.open {
  border-color: var(--brand-press);
  background: var(--brand-press);
  box-shadow: 0 12px 24px -16px rgba(45,91,214,.72);
}
.top-project-switch:focus { outline: none; }
.top-project-switch:focus-visible {
  outline: 2px solid #9DB4FF;
  outline-offset: 2px;
}
.top-project-switch .ava {
  border-radius: 8px !important;
  background: var(--brand) !important;
  color: #fff !important;
  font-size: 11px !important;
  font-weight: 800 !important;
}
.top-project-switch > span {
  min-width: 0;
  display: inline-flex;
  align-items: center;
}
.top-project-action-label { font-size: 13px; font-weight: 760; letter-spacing: 0; }
.top-project-copy em {
  display: block;
  font-style: normal;
  color: var(--ink-4);
  font-size: 9.5px;
  line-height: 1.05;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.top-project-switch b {
  font-size: 12.5px;
  line-height: 1.1;
  font-weight: 750;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.top-project-switch svg:last-child {
  flex: 0 0 auto;
  color: currentColor;
}
.top-project-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 9px);
  z-index: 90;
  width: 330px;
  max-height: min(460px, calc(100vh - 84px));
  overflow: auto;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 14px;
  box-shadow: 0 18px 40px -24px rgba(22,24,29,.26), 0 8px 18px -16px rgba(45,91,214,.28);
  padding: 8px;
  animation: ddIn var(--motion-fast) var(--motion-ease);
  transform-origin: top right;
}
.top-project-menu-title {
  padding: 6px 8px 9px;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.top-project-menu-title b {
  font-family: var(--fs-num);
  font-size: 11px;
  color: var(--brand);
  font-weight: 700;
}
.top-project-menu-title.sub {
  margin-top: 5px;
  padding-top: 10px;
  border-top: 1px solid var(--line-soft);
}
.top-project-menu button {
  width: 100%;
  border: 0;
  background: transparent;
  border-radius: 11px;
  padding: 9px 8px;
  display: flex;
  align-items: center;
  gap: 9px;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.top-project-menu button:hover,
.top-project-menu button.on {
  background: #F4F7FE;
}
.top-project-menu button.on {
  color: var(--brand);
}
.top-project-menu button .ava {
  border-radius: 8px !important;
}
.top-project-menu span {
  min-width: 0;
  display: grid;
  gap: 1px;
}
.top-project-menu b {
  font-size: 12.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.top-project-menu em {
  font-style: normal;
  font-size: 10.5px;
  color: var(--ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.top-project-selected {
  margin-left: auto;
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  color: var(--brand);
  font-style: normal;
  font-size: 11px;
  font-weight: 800;
  flex: 0 0 18px;
}
.project-switch-filter-block {
  margin: 2px 0 5px;
  padding: 9px 8px 8px;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
}
.project-switch-filter-title,
.project-switch-group-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  color: var(--ink-3);
  font-size: 10.5px;
}
.project-switch-filter-title > span,
.project-switch-group-title > span {
  min-width: 0;
  display: block;
}
.project-switch-filter-title em,
.project-switch-group-title em {
  overflow: hidden;
  color: var(--ink-4);
  font-size: 9.5px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-switch-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-top: 7px;
}
.top-project-menu .project-switch-filter,
.sidebar-project-menu .project-switch-filter {
  width: auto;
  min-height: 25px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 4px 7px;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: var(--surface-sunk);
  color: var(--ink-3);
  font-size: 10px;
  line-height: 1;
  text-align: center;
  transition: border-color .15s ease, background .15s ease, color .15s ease, transform .15s ease;
}
.top-project-menu .project-switch-filter:hover,
.sidebar-project-menu .project-switch-filter:hover {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.top-project-menu .project-switch-filter.is-active,
.sidebar-project-menu .project-switch-filter.is-active {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  font-weight: 750;
}
.top-project-menu .project-switch-filter:disabled,
.sidebar-project-menu .project-switch-filter:disabled {
  cursor: not-allowed;
  opacity: .48;
}
.project-switch-filter > span,
.project-switch-filter > em {
  min-width: 0;
  display: inline;
  overflow: visible;
  color: inherit;
  font-size: inherit;
  font-style: normal;
  line-height: 1;
  white-space: nowrap;
}
.project-switch-filter > em { opacity: .72; font-family: var(--fs-num); }
.project-switch-group-title { margin: 8px 6px 4px; }
.project-switch-row-copy {
  min-width: 0;
  display: grid !important;
  gap: 1px !important;
}
.project-switch-row-segment {
  min-width: 0;
  display: flex !important;
  align-items: center;
  gap: 5px;
  overflow: hidden;
  margin-top: 1px;
  color: var(--ink-3);
  font-size: 9.5px;
  line-height: 1.2;
  white-space: nowrap;
}
.project-switch-row-segment i {
  flex: 0 0 auto;
  padding: 2px 5px;
  border-radius: 999px;
  color: var(--ink-2);
  background: var(--surface-sunk);
  font-size: 9px;
  font-style: normal;
  font-weight: 750;
}
.project-switch-row-segment.self i { color: #2F7A55; background: #EDF8F2; }
.project-switch-row-segment.benchmark i { color: #976122; background: #FFF4E6; }
.project-switch-row-segment.agency i { color: #725DB4; background: #F3F0FF; }
.project-switch-row-segment span {
  min-width: 0;
  display: block !important;
  overflow: hidden;
  color: inherit;
  font-size: inherit;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-switch-current { box-shadow: inset 2px 0 0 var(--brand); }
.project-switch-list {
  display: grid;
  gap: 4px;
  animation: projectSwitchListIn .18s var(--motion-ease);
  transform-origin: top center;
}
.project-switch-empty {
  padding: 13px 8px 10px;
  color: var(--ink-4);
  font-size: 10.5px;
  text-align: center;
}
@keyframes projectSwitchListIn {
  from { opacity: .45; transform: translateY(-4px); }
  to { opacity: 1; transform: translateY(0); }
}
.user-mini {
  height: 34px; display: inline-flex; align-items: center; gap: 7px;
  border: 1px solid var(--line); background: rgba(255,255,255,.74);
  border-radius: 999px; padding: 3px 9px 3px 4px; color: var(--ink-2);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
  cursor: pointer; max-width: 140px;
}
.user-mini:hover { border-color: var(--brand-line); background: var(--surface); color: var(--brand); }
.user-mini.busy { opacity: .72; pointer-events: none; }
.user-mini span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-mini input { display: none; }
.password-btn {
  height: 34px; border: 1px solid var(--line); background: rgba(255,255,255,.72);
  border-radius: 999px; padding: 0 11px; color: var(--ink-2);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
}
.password-btn:hover { border-color: var(--brand-line); color: var(--brand); background: var(--surface); }
.password-btn.warn { border-color: var(--warn-line); background: var(--warn-soft); color: #9A6712; }
.logout-btn {
  height: 34px; border: 1px solid var(--line); background: rgba(255,255,255,.72);
  border-radius: 999px; padding: 0 11px; color: var(--ink-2);
  font-size: 12px; white-space: nowrap; box-shadow: var(--shadow-sm);
}
.logout-btn:hover { border-color: var(--brand-line); color: var(--brand); background: var(--surface); }
.shop-switch {
  height: 38px; border: 1px solid var(--line); background: rgba(255,255,255,.9);
  border-radius: 999px; padding: 4px 10px 4px 5px; display: inline-flex;
  align-items: center; gap: 8px; color: var(--ink); box-shadow: var(--shadow-sm);
  width: auto; min-width: 0; max-width: 210px;
}
.shop-switch:hover, .shop-switch.open { border-color: var(--brand-line); background: var(--surface); }
.shop-switch-copy { line-height: 1.2; min-width: 0; flex: 1; text-align: left; display: flex; align-items: center; gap: 7px; }
.shop-switch .label { color: var(--ink-3); font-size: 10.5px; font-weight: 760; white-space: nowrap; }
.shop-switch .label, .shop-switch .meta { display: none; }
.shop-switch .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 800; font-size: 12.5px; max-width: 112px; }
.shop-switch .meta { color: var(--ink-3); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 70px; }
.shop-switch .chev { color: var(--ink-4); display: inline-flex; }
.project-switch-wrap { position: relative; flex: 0 0 auto; min-width: 0; }
.project-switch-menu {
  position: absolute; top: calc(100% + 8px); left: 0; z-index: 50; width: 292px;
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: var(--shadow-pop); padding: 8px;
}
.project-switch-title { font-size: 11px; color: var(--ink-3); font-weight: 800; padding: 5px 7px 7px; }
.project-switch-menu button {
  width: 100%; border: 0; background: transparent; border-radius: 9px; padding: 8px;
  display: flex; gap: 9px; align-items: center; text-align: left; color: var(--ink);
}
.project-switch-menu button:hover, .project-switch-menu button.on { background: var(--surface-sunk); }
.project-switch-menu span { min-width: 0; display: grid; gap: 1px; }
.project-switch-menu b { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-switch-menu em { font-style: normal; font-size: 10.5px; color: var(--ink-3); }
@media (max-width: 980px) {
  .api-mini-cost { display: none; }
  .shop-switch .label, .shop-switch .meta { display: none; }
  .shop-switch { max-width: 132px; }
  .top-project-switch { max-width: 142px; min-width: 0; }
}
@media (max-width: 1180px) {
  .user-mini span, .password-btn { display: none; }
  .user-mini { width: 34px; padding-right: 3px; justify-content: center; }
  .version-mini { padding: 0 9px; }
  .version-mini-label { display: none; }
  .api-mini span:not(.dot):not(.api-mini-cost) { display: none; }
  .api-mini { width: 34px; padding: 0; justify-content: center; overflow: hidden; }
  .api-mini-cost { display: none; }
}
@media (max-width: 760px) {
  .topbar-inner {
    flex-wrap: wrap;
    gap: 8px;
    padding: 8px 12px;
  }
  .brand-mark { order: 1; }
  .topbar-right {
    order: 2;
    margin-left: auto;
    flex: 0 1 auto;
    max-width: calc(100vw - 144px);
  }
  .tabs {
    order: 3;
    flex: 0 0 100%;
    width: 100%;
    max-width: 100%;
    margin-left: 0;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 2px;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .tabs::-webkit-scrollbar { display: none; }
  .tab { flex: 0 0 auto; }
  .top-project-switch { width: 34px; min-width: 34px; padding-right: 3px; justify-content: center; }
  .top-project-switch > span,
  .top-project-switch svg:last-child { display: none; }
  .top-project-menu { right: -72px; width: min(310px, calc(100vw - 24px)); }
}

/* 统一产品外壳中的复盘内容。复盘原页面继续负责内容和交互，主应用负责身份、项目与导航。 */
.integrated-review-screen {
  position: relative;
  width: 100%;
  min-height: calc(100vh - 24px);
  overflow: hidden;
  background: var(--bg);
}
.integrated-review-workflow {
  min-height: 48px;
  margin: 8px 16px 0;
  padding: 10px 14px;
  border: 1px solid #dfe5ee;
  border-radius: 12px;
  background: rgba(255,255,255,.9);
  display: flex;
  align-items: center;
  gap: 10px;
  color: #111827;
  font-size: 12px;
}
.integrated-review-workflow > span {
  flex: 0 0 auto;
  color: #315fd4;
  font-weight: 700;
}
.integrated-review-workflow > b {
  min-width: 180px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.integrated-review-workflow > em {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #4b5563;
  font-style: normal;
}
.integrated-review-workflow > small {
  flex: 0 0 auto;
  color: #8a5b00;
}
.integrated-review-frame {
  display: block;
  width: 100%;
  min-height: calc(100vh - 24px);
  border: 0;
  background: var(--bg);
  opacity: 0;
  transition: opacity 160ms ease;
}
.integrated-review-frame.loaded { opacity: 1; }
.integrated-review-loading {
  position: absolute;
  z-index: 2;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  color: var(--ink-3);
  background: var(--bg);
  font-size: 12px;
}

@media (max-width: 760px) {
  .integrated-review-screen,
  .integrated-review-frame { min-height: calc(100vh - 64px); }
  .integrated-review-workflow {
    margin: 6px 10px 0;
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .integrated-review-workflow > b,
  .integrated-review-workflow > em { width: 100%; flex-basis: 100%; }
}

.page { max-width: 1216px; margin: 0 auto; padding: 22px 28px 90px; width: 100%; }

.login-shell {
  min-height: 100vh; display: grid; place-items: center; padding: 24px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.54), rgba(244,245,247,.9)),
    var(--paper);
}
.login-card {
  width: min(420px, 100%); background: var(--surface); border: 1px solid var(--line);
  border-radius: 16px; padding: 26px; box-shadow: var(--shadow-pop);
  display: grid; gap: 14px;
}
.login-card h1 { margin: 4px 0 0; font-size: 24px; letter-spacing: 0; }
.login-card p { margin: 0 0 4px; color: var(--ink-3); font-size: 13px; line-height: 1.6; }
.login-card label { display: grid; gap: 7px; font-size: 12px; font-weight: 650; color: var(--ink-2); }
.login-card .login-remember { display: flex; align-items: center; gap: 8px; cursor: pointer; font-weight: 550; }
.login-card .login-remember input { width: 15px; height: 15px; margin: 0; accent-color: var(--blue); }
.login-card .btn { justify-content: center; margin-top: 4px; }
.login-error {
  border: 1px solid var(--bad); background: var(--bad-soft); color: var(--bad);
  border-radius: 8px; padding: 8px 10px; font-size: 12px;
}
.login-hint { font-size: 11px; color: var(--ink-4); text-align: center; }
.login-version {
  color: var(--brand);
  font-family: var(--fs-num);
  font-size: 11px;
  font-weight: 750;
  text-align: center;
}
.staff-cost {
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
}
.staff-cost em {
  display: block; font-style: normal; color: var(--ink-3);
  font-size: 11px; margin-top: 4px; line-height: 1.45;
}

/* 演示数据 黄条 */
.demo-banner {
  display: flex; align-items: center; gap: 10px;
  background: var(--warn-soft); border: 1px solid var(--warn-line);
  color: #9A6712; border-radius: var(--r);
  padding: 9px 14px; font-size: 12.5px; margin-bottom: 18px;
}
.demo-banner b { font-weight: 650; }
.demo-banner .spacer { flex: 1; }
.demo-banner .ghost { color: #9A7A33; }

/* ============================================================
   PRIMITIVES
   ============================================================ */
.card {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); box-shadow: var(--shadow);
}
.card-pad { padding: 18px; }

.eyebrow {
  font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--brand);
}
.sec-title { font-size: 15px; font-weight: 800; letter-spacing: -.01em; }
.muted { color: var(--ink-3); }
.hr { height: 1px; background: var(--line-soft); border: 0; margin: 14px 0; }

/* 状态圆点 */
.dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
.dot.ok { background: var(--ok); box-shadow: 0 0 0 3px var(--ok-soft); }
.dot.warn { background: var(--warn); box-shadow: 0 0 0 3px var(--warn-soft); }
.dot.bad { background: var(--bad); box-shadow: 0 0 0 3px var(--bad-soft); }
.dot.idle { background: var(--idle); box-shadow: 0 0 0 3px var(--idle-soft); }

/* 角色 chip */
.role {
  font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 6px;
  letter-spacing: .2px; white-space: nowrap; line-height: 1.6;
}
.role.main { background: #E7EEF6; color: #2C5481; }
.role.self-owned { background: var(--ok-soft); color: var(--ok); }
.role.exposure { background: #E7EEF6; color: #2C5481; }
.role.ip { background: var(--purple-soft); color: var(--purple); }
.role.matrix { background: var(--brand-soft); color: var(--brand); }
.role.vlog { background: #F6ECE0; color: #94591F; }
.role.competitor { background: var(--warn-soft); color: #9A6712; }
.role.trend { background: var(--idle-soft); color: var(--idle); }
.role[class*="custom_"] { background: var(--brand-soft); color: var(--brand); }

/* 通用徽标 */
.badge {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 999px;
  border: 1px solid transparent; white-space: nowrap;
}
.badge.ok { background: var(--ok-soft); color: var(--ok); border-color: var(--ok-line); }
.badge.warn { background: var(--warn-soft); color: #9A6712; border-color: var(--warn-line); }
.badge.bad { background: var(--bad-soft); color: #92341F; }
.badge.idle { background: var(--idle-soft); color: var(--idle); }
.badge.brand { background: var(--brand-soft); color: var(--brand); }
/* 待 LLM 升级 灰标 */
.badge.llm { background: #ECEAE3; color: #7C7869; border: 1px dashed #C9C5B7; }
.badge.llm::before { content: "✦"; font-size: 10px; }

/* 平台标记 */
.plat { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--ink-2); }
.plat .pdot { width: 7px; height: 7px; border-radius: 50%; }
.pdot.douyin { background: var(--p-douyin); }
.pdot.xhs { background: var(--p-xhs); }
.pdot.sph { background: var(--p-sph); }

/* 按钮 */
.btn {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 9px; padding: 8px 14px; font-size: 13px; font-weight: 600;
  display: inline-flex; align-items: center; gap: 7px;
  transition: background var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease);
}
.btn:hover { border-color: var(--brand-line); background: var(--surface-sunk); box-shadow: var(--shadow-hover); }
.btn:active { transform: translateY(1px); }
.btn.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn.primary:hover { background: var(--brand-press); border-color: var(--brand-press); }
.btn.primary:disabled { opacity: .5; cursor: not-allowed; }
.btn.lg { padding: 12px 20px; font-size: 14.5px; border-radius: 11px; }
.btn.xs { height: 26px; padding: 0 8px; font-size: 11px; border-radius: 8px; }
.btn.tiny { height: 27px; padding: 0 10px; font-size: 11.5px; border-radius: 8px; }
.btn.ghost { background: transparent; border-color: transparent; color: var(--ink-2); }
.btn.ghost:hover { background: var(--paper-2); }
.btn.danger { background: var(--bad-soft); border-color: rgba(178, 78, 48, .24); color: var(--bad); }
.btn.danger:hover { background: rgba(178, 78, 48, .14); border-color: rgba(178, 78, 48, .34); }
.btn:disabled { opacity: .48; cursor: not-allowed; }

/* chips（预设问题） */
.chip {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 999px; padding: 7px 14px; font-size: 12.5px; transition: .14s; text-align:left;
}
.chip:hover { border-color: var(--brand-line); color: var(--brand); background: var(--brand-soft); }

/* 指标卡 */
.metric { }
.metric .k { font-size: 11.5px; color: var(--ink-3); font-weight: 600; letter-spacing:0; }
.metric .v { font-family: var(--fs-num); font-size: 27px; font-weight: 760; letter-spacing: -.02em; margin-top: 2px; }
.metric .v .unit { font-size: 13px; font-weight: 550; color: var(--ink-3); margin-left: 3px; }
.metric .sub { font-size: 11.5px; color: var(--ink-3); margin-top: 1px; }

/* 表格 */
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.tbl th {
  text-align: left; font-weight: 600; color: var(--ink-3); font-size: 11.5px;
  letter-spacing: .04em; padding: 9px 10px; border-bottom: 1px solid var(--line);
  white-space: nowrap;
}
.tbl td { padding: 10px; border-bottom: 1px solid var(--line-soft); }
.tbl tr:last-child td { border-bottom: 0; }
.tbl tbody tr { transition: background .12s; }
.tbl tbody tr.clickable { cursor: pointer; }
.tbl tbody tr.clickable:hover { background: var(--surface-sunk); }
.tbl td.r, .tbl th.r { text-align: right; }
.rank { width: 22px; height: 22px; border-radius: 6px; background: var(--paper-2);
  display: inline-grid; place-items: center; font-size: 11.5px; font-weight: 650; color: var(--ink-2); }
.rank.top { background: var(--brand-soft); color: var(--brand); }

/* 进度药丸 */
.pill-prog { display: inline-flex; align-items: stretch; border-radius: 7px; overflow: hidden;
  border: 1px solid var(--line); font-size: 11.5px; font-weight: 600; }
.pill-prog span { padding: 3px 9px; display: inline-flex; align-items: center; gap: 5px; }
.pill-prog .seg-dl { background: var(--ok-soft); color: var(--ok); }
.pill-prog .seg-tr { background: var(--warn-soft); color: #9A6712; }
.pill-prog .seg-an { background: var(--brand-soft); color: var(--brand); }

/* callout 可复制动作 */
.callout {
  background: var(--brand-soft); border: 1px solid var(--brand-line);
  border-radius: var(--r); padding: 12px 14px;
}
.callout .h { font-size: 12px; font-weight: 650; color: var(--brand); display:flex; align-items:center; gap:6px; margin-bottom: 7px; }
.callout ul { margin: 0; padding-left: 2px; list-style: none; }
.callout li { font-size: 13px; color: var(--ink-2); padding: 2px 0 2px 18px; position: relative; }
.callout li::before { content: "→"; position: absolute; left: 0; color: var(--brand); font-weight: 700; }

/* 降级提示 */
.degrade {
  display: flex; align-items: center; gap: 10px;
  background: var(--surface-sunk); border: 1px dashed var(--line-dashed); color: var(--idle);
  border-radius: var(--r); padding: 14px 16px; font-size: 13px;
}
.empty-page-card {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 16px; align-items: start;
  border-style: dashed; background: var(--surface-sunk); min-height: 260px;
}
.empty-page-ic {
  width: 48px; height: 48px; border-radius: 14px; display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand); border: 1px solid var(--brand-line);
}
.empty-page-title { font-size: 22px; font-weight: 760; letter-spacing: -.3px; margin-top: 4px; }
.empty-page-sub { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin-top: 5px; max-width: 760px; }
.empty-check-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 18px; }
.empty-check-grid div { background: var(--surface); border: 1px solid var(--line-soft); border-radius: 11px; padding: 12px; }
.empty-check-grid b { display: block; font-size: 12px; color: var(--ink); margin-bottom: 5px; }
.empty-check-grid span { display: block; font-size: 11.5px; color: var(--ink-3); line-height: 1.45; }
@media (max-width: 780px) { .empty-page-card, .empty-check-grid { grid-template-columns: 1fr; } }

/* avatar 占位 */
.ava { border-radius: 50%; background: linear-gradient(135deg,#D9D4C7,#C3BDAD);
  display: grid; place-items: center; color: #fff; font-weight: 600; flex-shrink: 0; overflow:hidden; }
.ava img { width: 100%; height: 100%; object-fit: cover; display: block; }
.thumb { border-radius: 9px; background: var(--paper-2); border: 1px solid var(--line-soft);
  display: grid; place-items: center; color: var(--ink-4); flex-shrink: 0; overflow:hidden; position: relative; }
.thumb img { width: 100%; height: 100%; object-fit: cover; display: block; grid-area: 1 / 1; }
.thumb .play { width: 26px; height: 26px; border-radius: 50%; background: rgba(255,255,255,.85);
  display: grid; place-items: center; color: var(--ink-2); grid-area: 1 / 1; position: relative; z-index: 1; }

/* grid helpers */
.grid { display: grid; gap: 16px; }
.row { display: flex; }
.between { display:flex; align-items:center; justify-content: space-between; }

/* ============================================================
   界面一 主控台
   ============================================================ */
.console-grid {
  display: grid; grid-template-columns: 286px minmax(0,1fr) 340px;
  gap: 18px; align-items: start;
}
@media (max-width: 1180px) { .console-grid { grid-template-columns: 1fr; } }

.matrix-list { padding: 6px; }
.matrix-group-label {
  font-size: 10.5px; font-weight: 650; letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-4); padding: 12px 10px 6px;
}
.acct-row {
  display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 10px;
  cursor: pointer; transition: background .12s; position: relative;
}
.acct-row:hover { background: var(--surface-sunk); }
.acct-row.active { background: var(--brand-soft); }
.acct-row .nm { font-size: 13px; font-weight: 600; line-height: 1.25; }
.acct-row .meta { font-size: 11px; color: var(--ink-3); display:flex; align-items:center; gap:6px; }

.goal-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 640px) { .goal-grid { grid-template-columns: 1fr; } }
.goal-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: 18px; cursor: pointer; transition: .16s; position: relative; overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.goal-card:hover { border-color: var(--brand-line); box-shadow: var(--shadow); transform: translateY(-1px); }
.goal-card.sel { border-color: var(--brand); box-shadow: 0 0 0 1px var(--brand), var(--shadow); }
.goal-card .gi {
  width: 40px; height: 40px; border-radius: 11px; background: var(--brand-soft); color: var(--brand);
  display: grid; place-items: center; margin-bottom: 13px;
}
.goal-card.sel .gi { background: var(--brand); color: #fff; }
.goal-card .gt { font-size: 15px; font-weight: 650; }
.goal-card .gd { font-size: 12.5px; color: var(--ink-3); margin-top: 3px; }
.goal-card .running {
  position:absolute; left:0; right:0; bottom:0; height: 3px; background: var(--brand-soft); overflow:hidden;
}
.goal-card .running::after { content:""; position:absolute; inset:0; width: 40%;
  background: var(--brand); animation: indet 1.3s infinite; }
@keyframes indet { 0%{ transform: translateX(-100%);} 100%{ transform: translateX(350%);} }
.run-tag { position:absolute; top: 14px; right: 14px; }

/* 配置区 */
.config { position: sticky; top: 78px; }
.cfg-empty { text-align:center; color: var(--ink-3); padding: 40px 18px; }
.cfg-empty .ic { width:46px; height:46px; border-radius: 12px; background: var(--paper-2);
  display:grid; place-items:center; margin: 0 auto 12px; color: var(--ink-4); }
.field { margin-bottom: 16px; }
.field > label { font-size: 12px; font-weight: 600; color: var(--ink-2); display:block; margin-bottom: 7px; }
.seg { display: flex; background: var(--paper-2); border-radius: 9px; padding: 3px; gap: 3px; }
.seg button { flex:1; border:0; background: transparent; padding: 7px 4px; border-radius: 7px;
  font-size: 12.5px; font-weight: 550; color: var(--ink-2);
  transition: background var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease); }
.seg button.on { background: var(--surface); color: var(--ink); box-shadow: var(--shadow-sm); }
.seg button:active { transform: translateY(1px); }
.motion-number,
.motion-text {
  display: inline-block;
}
.motion-number {
  white-space: nowrap;
}
.motion-number .num-sep {
  display: inline-block;
  transform: translateY(.05em);
}
.project-total-play .motion-number .num-sep,
.project-contribution-head .motion-number .num-sep {
  transform: translateY(.08em);
}
.motion-text {
  max-width: 100%;
  min-width: 0;
  will-change: transform, opacity;
}
.motion-block {
  animation: motionBlockIn var(--motion-med) var(--motion-ease);
}
.platform-switch {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 4px;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: var(--paper-2);
  min-width: 0;
}
.platform-switch button {
  border: 0;
  background: transparent;
  color: var(--ink-2);
  border-radius: 999px;
  padding: 7px 10px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  font-weight: 760;
  line-height: 1;
  white-space: nowrap;
  transition: background var(--motion-fast) var(--motion-ease), color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease);
}
.platform-switch button:hover { color: var(--brand); background: #F8FAFF; }
.platform-switch button:active { transform: translateY(1px); }
.platform-switch button.active {
  background: var(--surface);
  color: var(--brand);
  box-shadow: 0 1px 2px rgba(22,24,29,.08);
}
.platform-switch b {
  min-width: 18px;
  height: 18px;
  display: inline-grid;
  place-items: center;
  padding: 0 6px;
  border-radius: 999px;
  background: rgba(45,91,214,.08);
  color: var(--brand);
  font-size: 10.5px;
  font-weight: 850;
}
.platform-switch button.active b {
  background: var(--brand);
  color: #fff;
}
.form-platform-switch {
  width: 100%;
  border-radius: 11px;
  justify-content: stretch;
}
.form-platform-switch button {
  flex: 1;
  justify-content: center;
  border-radius: 8px;
}
.depth-opt { display:flex; align-items:center; justify-content: space-between; padding: 10px 12px;
  border: 1px solid var(--line); border-radius: 10px; margin-bottom: 8px; cursor: pointer; transition:.12s; }
.depth-opt:hover { border-color: var(--brand-line); }
.depth-opt.on { border-color: var(--brand); background: var(--brand-soft); }
.depth-opt .dl { font-size: 13px; font-weight: 600; }
.depth-opt .dd { font-size: 11px; color: var(--ink-3); }
.depth-opt .dc { font-size: 12.5px; font-weight: 650; color: var(--brand); font-variant-numeric: tabular-nums; }
.radio { width: 16px; height:16px; border-radius:50%; border: 1.5px solid var(--line); flex-shrink:0; }
.depth-opt.on .radio { border-color: var(--brand); background: radial-gradient(var(--brand) 42%, transparent 46%); }

.budget-input { display:flex; align-items:center; gap:10px; }
.budget-input input[type=range] { flex:1; accent-color: var(--brand); }
.budget-num { font-family: var(--fs-num); font-weight: 650; font-size: 14px; min-width: 74px; text-align:right; }

.cost-bar {
  margin-top: 6px; border-radius: var(--r); border: 1px solid var(--line);
  background: var(--surface-sunk); padding: 12px 14px;
}
.cost-bar.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.cost-line { height: 7px; border-radius: 99px; background: var(--paper-2); overflow:hidden; margin-top: 8px; }
.cost-line i { display:block; height:100%; background: var(--brand); border-radius: 99px; transition: width .3s; }
.cost-bar.warn .cost-line i { background: var(--warn); }

/* 最近任务 */
.jobs-tbl td .st { display:inline-flex; align-items:center; gap:7px; }

/* ============================================================
   Claude Design 通用页头 / 卡片
   ============================================================ */
.design-page-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 18px;
  margin: 0 0 14px;
}
.design-page-head h1 {
  margin: 3px 0 0; font-size: 28px; line-height: 1.08; font-weight: 850;
  letter-spacing: -.035em; color: var(--ink);
}
.design-page-head p {
  margin: 5px 0 0; font-size: 13px; color: var(--ink-3); line-height: 1.45;
}
.design-eyebrow {
  font-size: 11px; line-height: 1; font-weight: 800; letter-spacing: .18em;
  text-transform: uppercase; color: var(--accent);
}
.design-page-head.gold .design-eyebrow { color: #B07A1E; }
.design-page-control {
  display: inline-flex; align-items: center; gap: 7px; flex-shrink: 0;
  background: var(--surface); border: 1px solid #EAECF1;
  padding: 6px 12px; border-radius: 999px; font-size: 12.5px;
  font-weight: 650; color: var(--ink-2); box-shadow: var(--shadow);
}
.design-page-control.project-switch-control {
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
}
.design-page-control.workflow-role-project-back-control {
  padding: 0;
  border: 0;
  background: transparent;
  border-radius: 0;
  box-shadow: none;
}
.design-page-control.project-switch-control .top-project-switch {
  height: 42px;
  min-width: 112px;
  border-radius: 10px;
  padding: 0 14px;
}
.design-page-control.project-switch-control .top-project-menu {
  top: calc(100% + 10px);
}
.design-page-control.project-switch-control .top-project-copy em {
  letter-spacing: .02em;
}
.design-page-control.project-switch-control .top-project-switch b {
  font-size: 13px;
}
.design-section-title {
  display: flex; align-items: center; gap: 8px; margin-bottom: 14px;
}
.design-section-title .bar {
  width: 3px; height: 14px; border-radius: 2px; background: var(--accent); flex-shrink: 0;
}
.design-section-title.soft .bar { background: var(--brand-line); }
.design-section-title.gold .bar { background: #B07A1E; }
.design-section-title b { display: block; font-size: 15px; font-weight: 850; color: var(--ink); line-height: 1.2; }
.design-section-title em { display: block; margin-top: 3px; font-style: normal; color: var(--ink-4); font-size: 11.3px; }
.design-section-title .sp { flex: 1; }
.design-empty-card {
  display: flex; gap: 16px; align-items: flex-start;
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px; box-shadow: var(--shadow);
}
@media (max-width: 760px) {
  .design-page-head { align-items: flex-start; flex-direction: column; }
  .design-page-head h1 { font-size: 25px; }
  .design-page-control { width: 100%; justify-content: center; }
}

/* ============================================================
   界面二 复盘看板
   ============================================================ */
.review-page { max-width: 1180px; margin: 0 auto; animation: panelRise var(--motion-med) var(--motion-ease); }
.review-hero-grid {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 16px; align-items: stretch;
}
.review-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px; box-shadow: var(--shadow);
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.review-current { text-align: right; }
.review-current span { display: block; font-size: 10.5px; color: var(--ink-4); }
.review-current b {
  display: block; margin-top: 2px; font-size: 24px; line-height: 1.05;
  font-weight: 850; color: var(--brand); letter-spacing: -.03em;
}
.review-chart-empty {
  border: 1px dashed #D5D9E0; border-radius: 12px; background: #FAFBFC;
  min-height: 150px; display: grid; place-items: center; text-align: center;
  color: var(--ink-4); font-size: 12.5px; padding: 22px; margin-top: 10px;
}
.review-chart-empty.small { min-height: 92px; margin-top: 0; }
.review-summary-list { display: grid; gap: 9px; }
.review-summary-list > div { display: flex; justify-content: space-between; gap: 10px; font-size: 12.5px; color: var(--ink-2); }
.review-summary-list b { color: var(--ink); }
.review-summary-list i { display: block; height: 1px; background: #EEF0F4; margin: 3px 0; }
.review-summary-list p { margin: 0; font-size: 11.5px; line-height: 1.55; color: var(--ink-4); }
.review-small-kpis {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 14px;
}
.review-small-kpi {
  background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  padding: 16px; box-shadow: var(--shadow);
}
.review-small-kpi > span { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--ink-4); }
.review-small-kpi > span i { width: 8px; height: 8px; border-radius: 2px; background: var(--accent); }
.review-small-kpi.ip > span i { background: #8FB0EE; }
.review-small-kpi.other > span i { background: #C2C7D0; }
.review-small-kpi b {
  display: block; margin-top: 7px; font-size: 22px; line-height: 1.08;
  font-weight: 850; color: var(--accent); letter-spacing: -.02em;
  white-space: nowrap;
}
.review-small-kpi.ip b { color: #4D74C0; }
.review-small-kpi.other b { color: #7A808B; }
.review-small-kpi em { display: block; margin-top: 4px; font-style: normal; color: var(--ink-4); font-size: 11px; }
.review-token-bars { display: grid; gap: 13px; margin-bottom: 12px; }
.review-token-bars > div { cursor: pointer; transition: opacity .15s; }
.review-token-bars > div.dim { opacity: .38; }
.rtb-top { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 6px; font-size: 12.5px; }
.rtb-top b { color: var(--ink); }
.rtb-top span { color: var(--ink-3); }
.rtb-track { height: 9px; border-radius: 99px; overflow: hidden; background: var(--paper-2); }
.rtb-track i { display: block; height: 100%; border-radius: 99px; background: var(--accent); transition: width .34s var(--motion-ease); }
@media (max-width: 900px) {
  .review-hero-grid, .review-small-kpis { grid-template-columns: 1fr; }
}
.report-head { display:grid; grid-template-columns: 1.4fr 1fr; gap: 18px; }
@media (max-width: 900px){ .report-head { grid-template-columns: 1fr; } }
.rh-meta { display:grid; grid-template-columns: 1fr 1fr; gap: 12px 22px; }
.rh-meta .k { font-size: 11px; color: var(--ink-3); }
.rh-meta .v { font-size: 13.5px; font-weight: 600; margin-top: 1px; }

.sections { display:grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
@media (max-width: 980px){ .sections { grid-template-columns: 1fr; } }
.section-card { grid-column: span 1; }
.section-card.wide { grid-column: 1 / -1; }
.sc-head { display:flex; align-items:center; gap: 10px; margin-bottom: 14px; }
.sc-no { width: 24px; height: 24px; border-radius: 7px; background: var(--ink); color:#fff;
  display:grid; place-items:center; font-size: 12px; font-weight: 700; flex-shrink:0; }
.sc-title { font-size: 15px; font-weight: 650; }
.sc-head .sp { flex:1; }

.metric-row { display:flex; gap: 8px; flex-wrap: wrap; }
.metric-row .mc { flex:1; min-width: 92px; background: var(--surface-sunk); border:1px solid var(--line-soft);
  border-radius: 10px; padding: 11px 12px; }

/* 横条图 */
.hbar-row { margin-bottom: 13px; }
.hbar-top { display:flex; justify-content: space-between; font-size: 12.5px; margin-bottom: 5px; }
.hbar-top .lab { font-weight: 600; }
.hbar-track { height: 9px; border-radius: 99px; background: var(--paper-2); position: relative; overflow: hidden; }
.hbar-track i { position:absolute; left:0; top:0; bottom:0; border-radius: 99px; }
.hbar-track i.a { background: var(--accent); }
.hbar-track i.b { background: var(--accent-line); }
.hbar-legend { display:flex; gap: 16px; font-size: 11.5px; color: var(--ink-3); margin-top: 4px; }
.hbar-legend i { width: 9px; height:9px; border-radius: 3px; display:inline-block; margin-right:5px; vertical-align: -1px; }

/* 日历热力 */
.cal { display:grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.cal .dow { font-size: 10.5px; color: var(--ink-4); text-align:center; font-weight:600; padding-bottom:2px; }
.cal .cell { aspect-ratio: 1; border-radius: 6px; background: var(--paper-2); position: relative;
  display:grid; place-items:center; font-size: 10px; color: var(--ink-4); }
.cal .cell .d { position:absolute; top:3px; left:5px; font-size: 9px; }
.cal .cell.lv1 { background: #DCEAE3; }
.cal .cell.lv2 { background: #AFD2C3; }
.cal .cell.lv3 { background: var(--accent); }
.cal .cell.lv3 .cnt { color:#fff; }
.cal .cell.lv2 .cnt, .cal .cell.lv1 .cnt { color: var(--brand); }
.cal .cell .cnt { font-size: 12px; font-weight: 700; }

/* 平台占比表 */
.share-tbl .bar { height: 7px; border-radius: 99px; background: var(--paper-2); overflow:hidden; }
.share-tbl .bar i { display:block; height:100%; background: var(--accent); }

/* 意图环形 + legend */
.intent-wrap { display:flex; gap: 18px; align-items:center; flex-wrap: wrap; }
.intent-legend { display:grid; gap: 7px; flex:1; min-width: 150px; }
.intent-legend .it { display:flex; align-items:center; gap: 9px; font-size: 12.5px; }
.intent-legend .sw { width: 11px; height:11px; border-radius: 3px; flex-shrink:0; }
.intent-legend .vv { margin-left:auto; font-weight: 650; font-variant-numeric: tabular-nums; }

/* 三栏建议 */
.advice-grid { display:grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
@media (max-width: 760px){ .advice-grid { grid-template-columns: 1fr; } }
.advice-col { border:1px solid var(--line); border-radius: var(--r); padding: 14px; }
.advice-col .ah { font-size: 13px; font-weight: 650; display:flex; align-items:center; gap:7px; margin-bottom: 11px; }
.advice-col.go .ah { color: var(--ok); }
.advice-col.stop .ah { color: var(--bad); }
.advice-col.test .ah { color: var(--brand); }
.advice-col li { font-size: 12.5px; color: var(--ink-2); margin-bottom: 9px; list-style:none; padding-left: 0;}
.advice-col .ev { font-size: 11px; color: var(--ink-4); margin-top: 1px; }
.advice-col ul { margin:0; padding:0; }

/* 抽屉 */
.drawer-mask { position: fixed; inset: 0; background: rgba(21,24,30,.32); z-index: 90;
  opacity:0; pointer-events:none; transition: opacity var(--motion-med) var(--motion-ease); }
.drawer-mask.open { opacity:1; pointer-events:auto; }
.drawer {
  position: fixed;
  top: 50%;
  left: 50%;
  right: auto;
  bottom: auto;
  width: min(720px, calc(100vw - 48px));
  max-width: calc(100vw - 24px);
  max-height: calc(100vh - 48px);
  background: var(--surface);
  z-index: 91;
  border: 1px solid rgba(232,234,239,.96);
  border-radius: 18px;
  box-shadow: var(--shadow-pop);
  transform: translate(-50%, calc(-50% + 14px)) scale(.985);
  opacity: 0;
  transition: transform var(--motion-med) var(--motion-ease), opacity var(--motion-med) var(--motion-ease);
  display:flex;
  flex-direction: column;
  overflow: hidden;
  pointer-events: none;
}
.drawer.open {
  transform: translate(-50%, -50%) scale(1);
  opacity: 1;
  pointer-events: auto;
}
.drawer-head { padding: 18px 20px; border-bottom: 1px solid var(--line); display:flex; align-items:flex-start; gap:12px; }
.drawer-body { padding: 20px; overflow:auto; }
.drawer-close { margin-left:auto; border:0; background: var(--paper-2); width:30px;height:30px;border-radius:8px; color: var(--ink-2); display:grid;place-items:center; }
.drawer-close:hover { background: var(--line); }

.drawer.account-quick-drawer {
  inset: 0 0 0 auto;
  width: min(560px, 100vw);
  max-width: 100vw;
  max-height: 100vh;
  border-radius: 20px 0 0 20px;
  transform: translateX(28px);
}
.drawer.account-quick-drawer.open { transform: translateX(0); }
.account-quick-drawer .drawer-body { display: grid; gap: 18px; }
.account-quick-works { display: grid; gap: 12px; }
.account-quick-work-list { display: grid; gap: 8px; }
.account-quick-work {
  width: 100%;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface);
  padding: 12px 13px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  text-align: left;
}
.account-quick-work:hover { border-color: var(--brand-line); background: var(--brand-soft); }
.account-quick-work > span { min-width: 0; display: grid; gap: 3px; }
.account-quick-work b,
.account-quick-work small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-quick-work b { color: var(--ink); font-size: 13px; }
.account-quick-work small { color: var(--ink-3); font-size: 11px; }
.account-quick-work em { flex: 0 0 auto; color: var(--ink-2); font-size: 12px; font-style: normal; }
.account-quick-empty { padding: 18px; border: 1px dashed var(--line); border-radius: 12px; color: var(--ink-3); }

/* ============================================================
   界面三 对标拆解
   ============================================================ */
.benchmark-page { max-width: 1180px; margin: 0 auto; }
.benchmark-grid {
  display: grid; grid-template-columns: minmax(280px, .85fr) minmax(0, 1.15fr);
  gap: 16px; align-items: start;
}
.benchmark-left, .benchmark-right { display: grid; gap: 14px; align-content: start; }
.benchmark-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px; box-shadow: var(--shadow);
}
.benchmark-select-list { display: grid; gap: 8px; }
.benchmark-select-list button, .benchmark-select-item {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border: 1px solid #E2E5EB; background: var(--surface); border-radius: 9px;
  padding: 9px 12px; font: inherit; font-size: 12.5px;
}
.benchmark-select-list button { cursor: pointer; }
.benchmark-select-list span { color: var(--ink-4); }
.benchmark-select-list b { display: flex; align-items: center; gap: 7px; color: var(--ink); font-weight: 700; min-width: 0; }
.benchmark-select-item.pending {
  background: var(--surface-sunk); border-style: dashed; cursor: default;
}
.benchmark-select-item.pending b { color: var(--ink-2); justify-content: flex-end; }
.benchmark-select-item.pending em {
  flex-shrink: 0; font-style: normal; font-size: 10.5px; font-weight: 750;
  color: var(--ink-4); border: 1px solid var(--line); background: #fff;
  border-radius: 999px; padding: 2px 7px;
}
.benchmark-pack-list { display: grid; gap: 8px; }
.benchmark-pack-list > div {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  font-size: 12.5px; color: var(--ink-2);
}
.benchmark-pack-list span { display: inline-flex; align-items: center; gap: 8px; }
.benchmark-pack-list span svg { color: var(--ok); }
.benchmark-pack-list b { color: var(--ink); }
.benchmark-pack-list em {
  font-style: normal; font-size: 11px; color: #B07A1E; background: #FCF8F0;
  border: 1px solid #EDD9B4; padding: 2px 8px; border-radius: 999px;
}
.benchmark-note {
  border-top: 1px solid #F2F3F6; margin: 13px 0 0; padding-top: 11px;
  color: var(--ink-4); font-size: 10.5px; line-height: 1.5;
}
.benchmark-query {
  display: flex; align-items: center; gap: 10px;
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 11px; padding: 11px 14px;
}
.benchmark-query > span { color: var(--ink-4); flex-shrink: 0; }
.benchmark-query input {
  flex: 1; border: 0; background: transparent; outline: none; color: var(--ink);
  font: inherit; font-size: 14px; min-width: 0;
}
.benchmark-rank-list { display: grid; }
.benchmark-rank-head, .benchmark-rank-row {
  display: grid; grid-template-columns: 24px minmax(0, 1fr) 74px 56px;
  gap: 12px; align-items: center;
}
.benchmark-rank-head {
  padding: 0 2px 8px; color: var(--ink-4); font-size: 10.5px;
}
.benchmark-rank-head span:nth-child(3), .benchmark-rank-head span:nth-child(4) { text-align: right; }
.benchmark-rank-row {
  padding: 10px 2px; border-top: 1px solid #F2F3F6; font-size: 12px;
}
.benchmark-rank-row > span {
  font-size: 13px; font-weight: 850; color: var(--brand); text-align: center;
}
.benchmark-rank-row:nth-child(n+4) > span { color: var(--ink-4); }
.benchmark-rank-row b {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: 12.5px; color: var(--ink);
}
.benchmark-rank-row em { display: block; margin-top: 2px; font-style: normal; font-size: 10.5px; color: var(--ink-4); }
.benchmark-rank-row strong { text-align: right; font-size: 13px; color: var(--ink); }
.benchmark-rank-row i { text-align: right; font-style: normal; color: var(--ok); font-weight: 700; }
.benchmark-analysis-empty {
  border: 1px dashed #D5D9E0; border-radius: 12px; background: #FAFBFC;
  padding: 22px; display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.benchmark-analysis-empty b { display: block; color: var(--ink-3); font-size: 13px; }
.benchmark-analysis-empty span { display: block; margin-top: 5px; color: var(--ink-4); font-size: 11.5px; line-height: 1.5; max-width: 420px; }
.benchmark-meeting-entry {
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px;
  padding: 18px 20px; box-shadow: var(--shadow);
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.benchmark-meeting-entry b { display: block; font-size: 13px; color: var(--ink); }
.benchmark-meeting-entry span:not(.badge) { display: block; margin-top: 3px; color: var(--ink-4); font-size: 11.5px; }
@media (max-width: 1040px){ .benchmark-grid { grid-template-columns: 1fr; } }
@media (max-width: 680px) {
  .benchmark-analysis-empty, .benchmark-meeting-entry { align-items: flex-start; flex-direction: column; }
  .benchmark-rank-head, .benchmark-rank-row { grid-template-columns: 22px minmax(0, 1fr) 64px; }
  .benchmark-rank-head span:nth-child(4), .benchmark-rank-row i { display: none; }
}
.intel-search {
  background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg);
  padding: 16px; box-shadow: var(--shadow);
}
.search-box { display:flex; align-items:center; gap: 10px; background: var(--surface-sunk);
  border: 1px solid var(--line); border-radius: 11px; padding: 11px 14px; }
.search-box input { flex:1; border:0; background: transparent; font-size: 14px; color: var(--ink); outline: none; font-family: inherit; }
.search-box input::placeholder { color: var(--ink-4); }
.chips-row { display:flex; gap: 9px; flex-wrap: wrap; margin-top: 13px; }

.intel-grid { display:grid; grid-template-columns: minmax(0,1fr) 320px; gap: 18px; margin-top: 18px; align-items:start; }
@media (max-width: 1040px){ .intel-grid { grid-template-columns: 1fr; } }

.vcard { background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); overflow:hidden; transition: box-shadow .16s; }
.vcard:hover { box-shadow: var(--shadow-pop); }
.vcard-head { display:flex; gap: 14px; padding: 16px; cursor:pointer; }
.vcard-head .thumb { width: 78px; height: 104px; }
.vcard .vt { font-size: 15px; font-weight: 650; line-height: 1.35; }
.vcard .vmeta { display:flex; align-items:center; gap: 9px; margin-top: 7px; flex-wrap: wrap; font-size: 12px; color: var(--ink-3); }
.growth { display:flex; gap: 14px; margin-top: 10px; }
.growth .g { font-size: 12px; }
.growth .g b { font-size: 14px; font-weight: 680; color: var(--ok); font-variant-numeric: tabular-nums; }
.growth .g .gl { color: var(--ink-3); font-size: 11px; }
.vexpand { padding: 0 16px; max-height: 0; overflow: hidden; transition: max-height .3s ease, padding .3s; border-top: 1px solid transparent; }
.vexpand.open { max-height: 1200px; padding: 16px; border-top: 1px solid var(--line-soft); }
.kv { display:grid; grid-template-columns: 92px 1fr; gap: 8px 14px; font-size: 13px; }
.kv .kk { color: var(--ink-3); font-weight: 550; }
.kv .vv { color: var(--ink); }
.struct { display:flex; flex-direction: column; gap: 6px; }
.struct .step { display:flex; gap: 9px; font-size: 12.5px; align-items:flex-start; }
.struct .step .n { width:18px;height:18px;border-radius:50%; background: var(--brand-soft); color: var(--brand);
  font-size: 10px; font-weight:700; display:grid;place-items:center; flex-shrink:0; margin-top:1px; }
.tagset { display:flex; gap: 6px; flex-wrap: wrap; }
.tag { font-size: 11.5px; background: var(--paper-2); color: var(--ink-2); padding: 2px 9px; border-radius: 6px; }

.side-sticky { position: sticky; top: 78px; }

/* ============================================================
   界面四 账号矩阵监控
   ============================================================ */
.matrix-hero {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 18px;
  margin: 0 0 16px;
}
.matrix-controls { display: grid; gap: 9px; justify-items: end; }
.city-filter { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.city-filter button {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 999px; padding: 5px 10px; font-size: 12px;
}
.city-filter button.on { background: var(--brand); border-color: var(--brand); color: #fff; }
.city-select {
  display: inline-flex; align-items: center; gap: 8px;
  border: 1px solid var(--line); background: var(--surface); border-radius: 999px;
  padding: 5px 8px 5px 11px; color: var(--ink-2); font-size: 12px;
}
.city-select span { color: var(--ink-3); white-space: nowrap; }
.city-select select {
  border: 0; background: transparent; color: var(--ink); outline: none;
  font: inherit; min-width: 112px; cursor: pointer;
}
.project-back-link { margin-bottom: 12px; }
.project-detail-head { margin-bottom: 12px; }
.project-title-meta { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 5px 10px; }
.project-title-platforms { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.project-title-platforms button {
  display: inline-flex; align-items: center; gap: 4px;
  margin: 0; padding: 1px 0 2px;
  border: 0; border-bottom: 1px solid transparent;
  background: transparent; color: var(--ink-3); cursor: pointer;
}
.project-title-platforms button:hover,
.project-title-platforms button.on { color: var(--project-platform-color); border-bottom-color: var(--project-platform-color); }
.project-title-platforms button i { width: 6px; height: 6px; border-radius: 99px; background: var(--project-platform-color); }
.project-title-platforms button b { font-size: inherit; font-weight: 750; }
.project-title-platforms button em { color: currentColor; font: 700 10px/1 var(--fs-num); font-style: normal; opacity: .72; }
.matrix-page-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 18px;
  margin: 4px 0 18px;
}
.matrix-page-head .design-page-head { flex: 1; margin: 0; min-width: 0; }
.matrix-page-head h2 {
  margin: 0; font-size: 22px; line-height: 1.15; letter-spacing: -.025em;
  color: var(--ink); font-weight: 850;
}
.matrix-page-head p {
  margin: 5px 0 0; max-width: none; font-size: 13px; color: var(--ink-3); line-height: 1.45;
}
.matrix-page-head > span {
  display: block; margin-top: 9px; font-size: 12px; color: var(--ink-3);
}
.project-detail-hero {
  display: flex; align-items: center; gap: 14px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 16px; padding: 18px 20px; box-shadow: var(--shadow);
}
.project-title-block { min-width: 0; flex: 1; }
.project-kicker {
  font-size: 10.5px; font-weight: 850; letter-spacing: .16em;
  color: var(--brand); text-transform: uppercase;
}
.project-title-block h2 {
  margin: 5px 0 0; font-size: 25px; line-height: 1.1;
  font-weight: 850; letter-spacing: -.03em; color: var(--ink);
}
.project-title-block p { margin: 4px 0 0; font-size: 12.5px; color: var(--ink-3); }
.project-kpi-strip {
  display: grid; grid-template-columns: 1.4fr repeat(4, minmax(0, 1fr));
  gap: 10px; margin-bottom: 15px;
}
.project-kpi-card {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 13px; padding: 14px 16px; box-shadow: var(--shadow);
  min-width: 0; display: grid; gap: 5px;
}
.project-kpi-card.brand { background: linear-gradient(180deg, #FFFFFF 0%, #F6F8FE 100%); border-color: var(--brand-line); }
.project-kpi-card.warn { background: var(--warn-soft); border-color: var(--warn-line); }
.project-kpi-card span { font-size: 11.5px; color: var(--ink-3); }
.project-kpi-card b {
  font-size: 22px; line-height: 1.1; font-weight: 850;
  letter-spacing: -.025em; color: var(--ink); overflow: hidden; text-overflow: ellipsis;
}
.project-kpi-card.brand b { color: var(--brand); font-size: 28px; }
.project-kpi-card.warn b { color: var(--warn); }
.project-kpi-card em { font-style: normal; font-size: 10.5px; color: var(--ink-4); line-height: 1.3; }
.project-ops-overview {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFC 100%);
  border-radius: 16px;
  padding: 16px;
  box-shadow: var(--shadow);
  margin-bottom: 16px;
}
.project-ops-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 13px;
}
.project-ops-head div { display: grid; gap: 3px; min-width: 0; }
.project-ops-head span {
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .16em;
  color: var(--brand);
}
.project-ops-head b {
  font-size: 15px;
  color: var(--ink);
  letter-spacing: -.01em;
}
.project-ops-head-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.project-first-grab-callout {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border: 1px solid var(--brand-line);
  background: linear-gradient(135deg, #F5F8FF 0%, #FFFFFF 68%);
  border-radius: 14px;
  padding: 14px 16px;
  margin: 0 0 13px;
}
.project-first-grab-callout > div {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.project-first-grab-callout span {
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .16em;
  color: var(--brand);
}
.project-first-grab-callout b {
  color: var(--ink);
  font-size: 15px;
  letter-spacing: -.01em;
}
.project-first-grab-callout p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.project-first-grab-callout .btn {
  flex-shrink: 0;
  height: 38px;
}
.first-archive-screen {
  min-height: calc(100vh - 110px);
  display: grid;
  align-content: start;
  gap: 16px;
}
.first-archive-screen-head {
  border-bottom: 1px solid var(--line-soft);
  padding-bottom: 14px;
}
.first-archive-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(280px, .75fr);
  gap: 16px;
  align-items: stretch;
}
.first-archive-primary,
.first-archive-accounts {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 16px;
  min-width: 0;
}
.first-archive-primary {
  padding: clamp(20px, 3vw, 34px);
  display: grid;
  gap: 24px;
}
.first-archive-title-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.first-archive-number {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: var(--brand);
  color: #fff;
  font-family: var(--fs-num);
  font-size: 13px;
  font-weight: 850;
  letter-spacing: .04em;
}
.first-archive-title-row b {
  display: block;
  color: var(--ink);
  font-size: clamp(20px, 2.3vw, 28px);
  line-height: 1.18;
  letter-spacing: -.03em;
}
.first-archive-title-row p {
  margin: 7px 0 0;
  color: var(--ink-3);
  font-size: 13px;
  line-height: 1.65;
  max-width: 680px;
}
.first-archive-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.first-archive-steps div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 13px;
  padding: 11px;
  display: grid;
  gap: 4px;
  align-content: start;
}
.first-archive-steps div.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.first-archive-steps span {
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  color: var(--ink-3);
  font-family: var(--fs-num);
  font-size: 12px;
  font-weight: 850;
}
.first-archive-steps div.on span {
  color: #fff;
  background: var(--brand);
  border-color: var(--brand);
}
.first-archive-steps b {
  color: var(--ink);
  font-size: 13px;
}
.first-archive-steps em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
}
.first-archive-scope {
  border-top: 1px solid var(--line-soft);
  padding-top: 20px;
}
.first-archive-scope > span {
  display: block;
  margin-bottom: 10px;
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 800;
}
.first-archive-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 9px;
  border-top: 1px solid var(--line-soft);
  padding-top: 20px;
}
.first-archive-accounts {
  padding: 18px;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 14px;
}
.first-archive-accounts-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 13px;
  border-bottom: 1px solid var(--line-soft);
}
.first-archive-accounts-head > div {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.first-archive-accounts-head span {
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 800;
}
.first-archive-accounts-head b {
  color: var(--brand);
  font-size: 22px;
}
.first-archive-accounts-head em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 10.5px;
}
.first-archive-account-list {
  display: grid;
  gap: 8px;
  align-content: start;
  max-height: 520px;
  overflow: auto;
}
.first-archive-account {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 8px;
  align-items: center;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 11px;
  padding: 9px;
}
.first-archive-account b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--ink);
  font-size: 12.5px;
}
.first-archive-account em {
  grid-column: 2;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.first-archive-account-list p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.project-policy-record {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 10px;
  margin: 0 0 13px;
}
.policy-record-card {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 13px;
  padding: 12px 13px;
  min-width: 0;
}
.policy-record-card > span {
  display: block;
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .13em;
  color: var(--brand);
  text-transform: uppercase;
  margin-bottom: 4px;
}
.policy-record-card > b {
  display: block;
  color: var(--ink);
  font-size: 13px;
  margin-bottom: 9px;
}
.policy-record-tags,
.policy-record-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.policy-record-tags em,
.policy-record-list em {
  font-style: normal;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 11px;
  line-height: 1.3;
}
.policy-record-list em {
  border-color: var(--line-soft);
  background: var(--surface-sunk);
  color: var(--ink-2);
}
.project-initial-completion {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
  margin: 0 0 13px;
  display: grid;
  gap: 10px;
}
.project-initial-completion-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}
.project-initial-completion-head b { font-size: 13px; color: var(--ink); }
.project-initial-completion-head span { font-size: 11px; color: var(--ink-4); text-align: right; }
.project-initial-completion-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 8px;
}
.project-initial-completion-row {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 10px;
  padding: 10px;
  min-width: 0;
  display: grid;
  gap: 4px;
}
.project-initial-completion-row.warn { background: var(--warn-soft); border-color: var(--warn-line); }
.project-initial-completion-row.running { background: var(--brand-soft); border-color: var(--brand-line); }
.project-initial-completion-row span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 720;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-initial-completion-row b { color: var(--ink); font-size: 13px; }
.project-initial-completion-row em {
  color: var(--ink-3);
  font-size: 11px;
  font-style: normal;
  line-height: 1.35;
}
.project-ops-flow {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
  gap: 9px;
}
.project-ops-policy {
  min-height: 86px;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 13px;
  padding: 10px;
  display: grid;
  gap: 4px;
  align-content: start;
}
.ops-policy-icon {
  width: 26px;
  height: 26px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
  color: var(--brand);
  margin-bottom: 2px;
}
.project-ops-policy span {
  font-size: 11px;
  color: var(--ink-3);
  font-weight: 700;
}
.project-ops-policy b {
  font-size: 13px;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-ops-policy em {
  font-style: normal;
  font-size: 10.5px;
  color: var(--ink-4);
  line-height: 1.35;
}
.project-policy-editor-inline {
  margin-top: 12px;
  border: 1px solid var(--brand-line);
  background:
    radial-gradient(circle at 0% 0%, rgba(47, 95, 227, .1), transparent 30%),
    linear-gradient(180deg, #FFFFFF 0%, #F6F8FE 100%);
  border-radius: 14px;
  padding: 14px;
  box-shadow: 0 16px 40px -30px rgba(47, 95, 227, .5);
  animation: panelRise var(--motion-med) var(--motion-ease);
}
.project-policy-effective-state,
.policy-version-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 11px;
  padding: 9px 11px;
  color: var(--ink-3);
  font-size: 11.5px;
}
.project-policy-effective-state { margin-top: 12px; }
.policy-version-strip { margin: -4px 0 14px; }
.project-policy-effective-state b,
.policy-version-strip b { color: var(--ink-2); }
.project-policy-scope-editor,
.policy-capture-scope {
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  border-radius: 12px;
  padding: 11px;
  margin-bottom: 12px;
}
.project-policy-scope-editor > div:first-child,
.policy-capture-scope > div:first-child { display: grid; gap: 3px; }
.project-policy-scope-editor b,
.policy-capture-scope b { color: var(--brand); font-size: 12.5px; }
.project-policy-scope-editor span,
.policy-capture-scope > div:first-child span { color: var(--ink-3); font-size: 11px; line-height: 1.4; }
.project-policy-scope-options,
.policy-capture-options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
  margin-top: 9px;
}
.project-policy-scope-options label,
.policy-capture-options label {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 9px;
  padding: 7px 8px;
  color: var(--ink-3);
  font-size: 11px;
  cursor: pointer;
}
.project-policy-scope-options label.on,
.policy-capture-options label.on { border-color: var(--brand-line); color: var(--brand); }
.project-policy-scope-options input,
.policy-capture-options input { accent-color: var(--brand); margin: 0; }
.inline-policy-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}
.inline-policy-head div {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.inline-policy-head b {
  font-size: 14px;
  color: var(--ink);
}
.inline-policy-head span {
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.45;
}
.inline-policy-toggle {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 999px;
  padding: 7px 10px;
  color: var(--ink-2);
  font-size: 11.5px;
  font-weight: 760;
}
.inline-policy-toggle input {
  accent-color: var(--brand);
}
.inline-policy-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.inline-policy-grid label {
  display: grid;
  gap: 6px;
  min-width: 0;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 720;
}
.inline-policy-grid select,
.inline-policy-grid input {
  width: 100%;
  min-height: 36px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink);
  border-radius: 10px;
  padding: 0 10px;
  font: inherit;
  outline: none;
}
.inline-policy-grid select:focus,
.inline-policy-grid input:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--brand-soft);
}
.inline-policy-grid select:disabled,
.inline-policy-grid input:disabled {
  opacity: .55;
  cursor: not-allowed;
}
.inline-policy-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 12px;
}
.inline-policy-actions > div {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  color: var(--ink-3);
  font-size: 11.3px;
  line-height: 1.45;
  min-width: 0;
}
.inline-policy-actions svg {
  flex-shrink: 0;
  color: var(--brand);
  margin-top: 1px;
}
.inline-policy-state {
  margin-top: 10px;
  border-radius: 10px;
  padding: 9px 10px;
  font-size: 11.5px;
}
.inline-policy-state.ok { background: var(--ok-soft); color: var(--ok); border: 1px solid var(--ok-line); }
.inline-policy-state.warn { background: rgba(194, 117, 36, .09); color: var(--warn); border: 1px solid rgba(194, 117, 36, .2); }
.project-ops-pipeline {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}
.ops-pipeline-item {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 11px;
  padding: 9px 10px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
}
.ops-pipeline-item span {
  font-size: 10.8px;
  color: var(--ink-3);
  white-space: nowrap;
}
.ops-pipeline-item b {
  font-size: 15px;
  color: var(--ink);
  font-weight: 850;
}
.ops-pipeline-item.ok { background: var(--ok-soft); border-color: var(--ok-line); }
.ops-pipeline-item.ok b { color: var(--ok); }
.ops-pipeline-item.brand { background: var(--brand-soft); border-color: var(--brand-line); }
.ops-pipeline-item.brand b { color: var(--brand); }
.ops-pipeline-item.warn { background: var(--warn-soft); border-color: var(--warn-line); }
.ops-pipeline-item.warn b { color: var(--warn); }
.ops-pipeline-item.idle { opacity: .72; }
.project-ops-note {
  margin-top: 10px;
  border: 1px dashed var(--line);
  background: var(--surface-sunk);
  border-radius: 11px;
  padding: 9px 10px;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.45;
}
.project-ops-note svg { flex-shrink: 0; color: var(--brand); margin-top: 1px; }
.background-task-center {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFC 100%);
  border-radius: 16px;
  padding: 16px;
  box-shadow: var(--shadow);
  margin-bottom: 16px;
}
.background-task-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 12px 0 14px;
}
.background-task-summary > div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 11px 12px;
  display: grid;
  gap: 3px;
  min-width: 0;
}
.background-task-summary span,
.background-task-summary em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
}
.background-task-summary b {
  font-size: 22px;
  color: var(--ink);
  line-height: 1.05;
}
.background-task-layout {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 14px;
  align-items: start;
}
.background-task-filters {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 10px;
  display: grid;
  gap: 7px;
}
.background-task-filters .filter-title {
  margin: 4px 0 1px;
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .14em;
  color: var(--ink-4);
}
.background-task-filters button {
  min-height: 31px;
  border: 1px solid transparent;
  background: transparent;
  border-radius: 9px;
  padding: 0 9px;
  color: var(--ink-2);
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  text-align: left;
}
.background-task-filters button.on,
.background-task-filters button:hover {
  border-color: var(--brand-line);
  background: var(--surface);
  color: var(--brand);
}
.priority-filter-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.priority-filter-row button {
  justify-content: center;
  padding: 0 6px;
}
.background-task-list { display: grid; gap: 9px; }
.background-task-row {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 12px;
  padding: 12px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
}
.background-task-row.ok { border-color: var(--ok-line); }
.background-task-row.warn { border-color: var(--warn-line); }
.background-task-row.bad { border-color: rgba(165, 77, 62, .28); }
.task-row-main { display: grid; gap: 7px; min-width: 0; }
.task-row-title {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.task-row-title b {
  color: var(--ink);
  font-size: 13.5px;
  font-weight: 800;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.task-row-title em {
  font-style: normal;
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
  border-radius: 999px;
  font-size: 10.5px;
  padding: 1px 6px;
}
.task-row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  color: var(--ink-3);
  font-size: 11.5px;
}
.task-row-reason {
  color: var(--ink-2);
  font-size: 12px;
  line-height: 1.45;
}
.task-row-side {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
  max-width: 220px;
}
.task-row-side .btn {
  min-height: 30px;
  height: 30px;
  padding: 0 9px;
  font-size: 11.5px;
}
.task-progress-bar {
  height: 6px;
  background: var(--paper-2);
  border-radius: 999px;
  overflow: hidden;
}
.task-progress-bar span {
  display: block;
  height: 100%;
  background: var(--brand);
  border-radius: inherit;
  transition: width var(--motion-slow) var(--motion-ease);
}
.task-dot {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--idle);
  flex: 0 0 auto;
}
.task-dot.ok { background: var(--ok); }
.task-dot.warn { background: var(--warn); }
.task-dot.bad { background: var(--bad); }
.task-dot.idle { background: var(--idle); }
.background-task-inline {
  margin-top: 8px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  border-radius: 10px;
  padding: 8px 9px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 8px;
  align-items: start;
}
.background-task-inline.compact { padding: 7px 8px; }
.background-task-inline b {
  display: block;
  color: var(--ink);
  font-size: 12px;
}
.background-task-inline em {
  display: block;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
  margin-top: 1px;
}
.background-task-inline strong {
  color: var(--brand);
  font-size: 12px;
}
.inline-task-actions {
  margin-top: 8px;
  align-items: flex-start;
}
.matrix-workbench-shell {
  display: grid; grid-template-columns: 280px minmax(0, 1fr);
  gap: 18px; align-items: start; margin-top: 12px;
}
.matrix-side-panel {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: 18px; box-shadow: var(--shadow); position: sticky; top: 78px;
}
.matrix-side-title { font-size: 13px; font-weight: 800; color: var(--ink); }
.matrix-side-title.small { margin-bottom: 10px; }
.matrix-side-sub { font-size: 11.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.45; }
.matrix-side-list { display: flex; flex-direction: column; gap: 8px; margin-top: 13px; }
.matrix-side-list.compact { margin-top: 0; }
.matrix-side-item {
  min-height: 40px; width: 100%; border: 1px solid var(--line-soft); border-radius: 10px;
  background: var(--surface-sunk); padding: 9px 11px; color: var(--ink-2);
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  font: inherit; font-size: 12.5px; text-align: left;
}
.matrix-side-item:hover { border-color: var(--brand-line); color: var(--brand-press); }
.matrix-side-item.on {
  border-color: var(--brand-line); background: var(--brand-soft);
  color: var(--brand); font-weight: 760;
}
.matrix-side-item span {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.matrix-side-item b, .matrix-side-item i {
  flex-shrink: 0; font-style: normal; font-size: 11px; color: currentColor;
}
.matrix-side-filter {
  border: 1px solid var(--line-soft); border-radius: 12px;
  background: var(--surface-sunk); padding: 13px; margin-top: 13px;
}
.matrix-city-select {
  display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line-soft);
  background: var(--surface); border-radius: 999px; padding: 6px 8px 6px 12px;
  box-shadow: var(--shadow-xs); color: var(--ink-3); font-size: 12px;
}
.matrix-city-select select {
  border: 0; background: transparent; color: var(--ink); outline: none;
  font: inherit; min-width: 118px; cursor: pointer;
}
@media (max-width: 980px) {
  .project-ops-flow,
  .inline-policy-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .project-ops-pipeline {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .background-task-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .background-task-layout {
    grid-template-columns: 1fr;
  }
  .background-task-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .background-task-filters .filter-title {
    grid-column: 1 / -1;
  }
}
@media (max-width: 620px) {
  .project-ops-head,
  .inline-policy-head,
  .inline-policy-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .project-ops-flow,
  .inline-policy-grid,
  .project-ops-pipeline {
    grid-template-columns: 1fr;
  }
  .background-task-summary,
  .background-task-filters,
  .background-task-row {
    grid-template-columns: 1fr;
  }
  .task-row-side {
    max-width: none;
    justify-content: flex-start;
  }
  .project-ops-head-actions {
    justify-content: flex-start;
  }
}
.matrix-main-panel {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: var(--r-lg); padding: 22px; box-shadow: var(--shadow);
  min-width: 0;
}
.matrix-main-panel-flat {
  padding: 0;
  margin: -2px 0 20px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.project-detail-tabs {
  display: flex; gap: 3px; border-bottom: 1px solid var(--line);
  margin: 0 0 14px; padding-left: 2px;
}
.project-detail-tabs button {
  border: 0; background: transparent; color: var(--ink-3);
  font: inherit; font-size: 13px; font-weight: 720;
  padding: 11px 16px 10px; border-bottom: 2px solid transparent;
  cursor: pointer;
  flex-shrink: 0;
  white-space: nowrap;
  transition: color var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease);
}
.project-detail-tabs button.on { color: var(--brand); border-bottom-color: var(--brand); }
.project-detail-tabs button:active { transform: translateY(1px); }
.project-tab-panel { animation: panelRise var(--motion-med) var(--motion-ease); }
.project-title-history-source {
  color: var(--ink-3);
  font-size: 12px;
  font-weight: 650;
}
.historical-project-stats {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: var(--shadow);
  margin-bottom: 16px;
  overflow: hidden;
}
.historical-project-summary {
  display: grid;
  grid-template-columns: minmax(280px, 1.6fr) repeat(2, minmax(180px, .7fr));
  border-bottom: 1px solid var(--line);
}
.historical-project-summary > div {
  min-width: 0;
  min-height: 142px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  padding: 24px 28px;
  border-left: 1px solid var(--line);
}
.historical-project-summary > div:first-child { border-left: 0; }
.historical-project-summary span,
.historical-project-summary em {
  color: var(--ink-3);
  font-size: 12px;
  font-style: normal;
}
.historical-project-summary b {
  color: var(--ink);
  font-size: 25px;
  line-height: 1;
}
.historical-project-summary b small { color: var(--ink-3); font-size: 14px; }
.historical-project-summary .historical-project-total b {
  color: var(--brand);
  font-size: clamp(40px, 5.2vw, 66px);
  letter-spacing: -.04em;
}
.historical-video-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 28px 14px;
}
.historical-video-head > div { display: flex; align-items: baseline; gap: 10px; }
.historical-video-head b { font-size: 16px; }
.historical-video-head span { color: var(--ink-3); font-size: 12px; }
.historical-video-table { padding: 0 28px 8px; overflow-x: auto; }
.historical-video-row {
  width: 100%;
  min-width: 780px;
  display: grid;
  grid-template-columns: 54px minmax(240px, 1.5fr) minmax(180px, 1fr) 118px 150px;
  align-items: center;
  gap: 14px;
  min-height: 54px;
  border: 0;
  border-top: 1px solid var(--line-soft);
  background: transparent;
  color: var(--ink-2);
  padding: 8px 10px;
  text-align: left;
  font: inherit;
  font-size: 12px;
}
button.historical-video-row { cursor: pointer; }
button.historical-video-row:hover { background: var(--surface-sunk); }
.historical-video-row > span,
.historical-video-row > b { min-width: 0; }
.historical-video-row strong {
  display: block;
  color: var(--ink);
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.historical-video-row > b { color: var(--ink); text-align: right; font-size: 14px; }
.historical-video-row-head {
  min-height: 36px;
  border-top: 0;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 700;
  cursor: default;
}
.historical-video-row-head > span:last-child { text-align: right; }
.historical-video-more {
  width: calc(100% - 56px);
  margin: 8px 28px 24px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface-sunk);
  color: var(--ink-2);
  min-height: 40px;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
}
.project-structure-toolbar {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 16px;
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 14px; padding: 14px 16px; box-shadow: var(--shadow);
  margin-bottom: 14px;
}
.project-contribution-panel {
  --contribution-color: #316EEC;
  --contribution-deep: #1457D9;
  --contribution-soft: #EDF3FF;
  --contribution-line: #C8D9FF;
  --contribution-shadow: rgba(49, 110, 236, .34);
  --contribution-scale: linear-gradient(90deg, #72A8FF 0%, #629DFF 24%, #4F8CFF 48%, #337CFF 72%, #1457D9 100%);
  background:
    radial-gradient(circle at 12% 0%, var(--contribution-soft), transparent 34%),
    linear-gradient(180deg, #FFFFFF 0%, #F7F9FF 100%);
  border: 1px solid var(--contribution-line);
  border-radius: 18px;
  padding: 26px;
  box-shadow: 0 24px 58px -38px var(--contribution-shadow);
  margin-bottom: 16px;
}
.tikhub-project-empty {
  min-height: 320px;
  display: grid;
  place-items: center;
}
.project-contribution-empty-business {
  min-height: 320px;
  display: grid;
  place-items: center;
}
.project-contribution-empty-copy {
  width: min(520px, 100%);
  text-align: center;
}
.project-contribution-empty-copy > span {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--contribution-soft);
  color: var(--contribution-color);
  font-size: 11px;
  font-weight: 800;
}
.project-contribution-empty-copy h3 {
  margin: 18px 0 8px;
  color: var(--ink);
  font-size: clamp(24px, 3vw, 34px);
  letter-spacing: -.03em;
}
.project-contribution-empty-copy p {
  margin: 0 auto;
  color: var(--ink-3);
  font-size: 14px;
  line-height: 1.7;
}
.tikhub-project-empty-copy {
  width: min(620px, 100%);
  text-align: center;
}
.tikhub-project-empty-copy > span {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  background: var(--contribution-soft);
  color: var(--contribution-color);
  font-size: 11px;
  font-weight: 800;
}
.tikhub-project-empty-copy h3 {
  margin: 18px 0 8px;
  color: var(--ink);
  font-size: clamp(24px, 3vw, 34px);
  letter-spacing: -.03em;
}
.tikhub-project-empty-copy p {
  margin: 0 auto;
  color: var(--ink-2);
  font-size: 14px;
  line-height: 1.75;
}
.tikhub-project-empty-copy em {
  display: block;
  margin-top: 18px;
  color: var(--ink-3);
  font-size: 12px;
  font-style: normal;
}
.contribution-platform-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: -4px 0 22px;
  min-width: 0;
}
.contribution-platform-tabs button {
  --platform-tab-color: #316EEC;
  --platform-tab-soft: #EDF3FF;
  flex: 0 0 auto;
  min-height: 36px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  padding: 7px 11px;
  background: rgba(255,255,255,.78);
  color: var(--ink-2);
  font: inherit;
  font-size: 12px;
  font-weight: 760;
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, color .16s ease, transform .16s ease, box-shadow .16s ease;
}
.contribution-platform-tabs button > i {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--platform-tab-color);
  box-shadow: 0 0 0 3px var(--platform-tab-soft);
}
.contribution-platform-tabs button > b {
  min-width: 19px;
  height: 19px;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  padding: 0 5px;
  background: var(--surface-sunk);
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 850;
}
.contribution-platform-tabs button:hover,
.contribution-platform-tabs button.active {
  border-color: var(--platform-tab-color);
  background: var(--platform-tab-soft);
  color: var(--platform-tab-color);
  transform: translateY(-1px);
  box-shadow: 0 10px 24px -20px var(--platform-tab-color);
}
.contribution-platform-tabs button.active > b {
  background: var(--platform-tab-color);
  color: #fff;
}
.project-contribution-head {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: 18px; margin-bottom: 18px;
}
.project-contribution-head span {
  display: block; font-size: 11px; color: var(--ink-3);
  font-weight: 760; letter-spacing: .12em;
}
.project-contribution-head span i { font-style: normal; color: var(--ink-4); }
.project-contribution-head .platform-metric-number-stage {
  display: block;
  position: relative;
  min-height: clamp(54px, 7vw, 82px);
  /* 让旧数字完整滑出，避免硬裁切在右侧形成一条“边框感”。 */
  overflow: visible;
  width: max-content;
  max-width: 100%;
  color: var(--contribution-color);
  font-size: inherit;
  letter-spacing: normal;
}
.platform-metric-number-value {
  white-space: nowrap;
  will-change: transform, opacity;
}
.platform-metric-number-value.is-incoming {
  /* 先让旧数字离场，再让新数字进场，避免两个数字短暂重叠。 */
  animation: platformMetricNumberIn .32s var(--motion-ease) .28s both;
}
.platform-metric-number-value.is-outgoing {
  position: absolute;
  inset: 0 auto auto 0;
  animation: platformMetricNumberOut .28s var(--motion-ease) both;
}
.project-contribution-head b {
  display: block; margin-top: 7px; font-size: clamp(54px, 7vw, 82px); line-height: .9;
  font-weight: 880; color: var(--contribution-color); letter-spacing: -.04em;
}
.contrib-scale { display: flex; align-items: center; gap: 9px; flex-shrink: 0; }
.contrib-scale span { font-size: 11px; color: var(--ink-4); letter-spacing: 0; font-weight: 600; }
.contrib-scale i {
  width: 112px; height: 8px; border-radius: 999px;
  background: var(--contribution-scale);
}
.account-contribution-strip { display: flex; gap: 3px; height: 48px; border-radius: 11px; overflow: hidden; }
.account-contribution-strip button {
  min-width: 0; border: 0; color: #fff; padding: 7px 10px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  font: inherit; cursor: pointer; box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
  transition: transform .16s ease, filter .16s ease, box-shadow .16s ease, flex-grow .42s var(--motion-ease), flex-basis .42s var(--motion-ease), background .28s ease;
}
.account-contribution-strip button:hover,
.account-contribution-strip button.active {
  filter: saturate(1.08) brightness(1.03);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.34), 0 10px 24px -18px rgba(20, 42, 104, .5);
}
.account-contribution-strip button.active { transform: translateY(-1px); }
.account-contribution-strip span {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: 12px; font-weight: 720;
}
.account-contribution-strip b { font-size: 13px; font-weight: 850; }
.contrib-note { margin-top: 9px; font-size: 11px; color: var(--ink-4); }
.contribution-timebar {
  margin-top: 13px;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.contribution-timebar > span {
  flex-shrink: 0;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .12em;
}
.contribution-timebar > div {
  min-width: 0;
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 1px 0 3px;
}
.contribution-timebar button {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.74);
  color: var(--ink-2);
  border-radius: 999px;
  padding: 6px 10px;
  font: inherit;
  font-size: 11.5px;
  font-weight: 700;
  transition: background .14s ease, border-color .14s ease, color .14s ease, transform .14s ease;
}
.contribution-timebar button:hover,
.contribution-timebar button.active {
  background: var(--contribution-color);
  border-color: var(--contribution-color);
  color: #fff;
  transform: translateY(-1px);
}
.contribution-timebar button b {
  display: inline-grid;
  place-items: center;
  min-width: 20px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--contribution-soft);
  color: var(--contribution-color);
  font-size: 10.5px;
  font-weight: 850;
}
.contribution-timebar button.active b,
.contribution-timebar button:hover b {
  background: rgba(255,255,255,.22);
  color: #fff;
}
.contribution-month-select {
  flex-shrink: 0;
  min-width: 106px;
  height: 32px;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.74);
  color: var(--ink-2);
  border-radius: 999px;
  padding: 0 28px 0 11px;
  font: inherit;
  font-size: 11.5px;
  font-weight: 700;
  outline: none;
  transition: background .14s ease, border-color .14s ease, color .14s ease, box-shadow .14s ease;
}
.contribution-month-select:hover,
.contribution-month-select.active {
  border-color: var(--contribution-line);
  background: var(--contribution-soft);
  color: var(--contribution-color);
  box-shadow: 0 8px 22px -18px var(--contribution-shadow);
}
.contribution-work-head {
  margin-top: 16px;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 14px;
  border-top: 1px solid var(--contribution-line);
  padding-top: 14px;
}
.contribution-work-head b {
  color: var(--ink);
  font-size: 13px;
}
.contribution-work-head span {
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.35;
  text-align: right;
}
.contribution-work-grid {
  position: relative;
  display: block;
  height: clamp(380px, 41vw, 440px);
  min-height: 380px;
  margin-top: 12px;
  border-radius: 14px;
  overflow: hidden;
  background: var(--surface-sunk);
}
.contribution-work-cell {
  position: absolute;
  min-width: 0; min-height: 0;
  box-sizing: border-box;
  border-radius: 12px; padding: 12px; color: #fff; overflow: hidden;
  display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-start; gap: 5px;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.2);
  border: 2px solid rgba(255,255,255,.78); font: inherit; text-align: left; cursor: pointer;
  transition:
    left .55s cubic-bezier(.22,1,.36,1),
    top .55s cubic-bezier(.22,1,.36,1),
    width .55s cubic-bezier(.22,1,.36,1),
    height .55s cubic-bezier(.22,1,.36,1),
    background .4s ease,
    color .24s ease,
    transform .18s ease,
    box-shadow .18s ease,
    filter .18s ease,
    opacity .2s var(--motion-ease);
  animation: contributionCellIn .28s var(--motion-ease);
  will-change: left, top, width, height;
}
.contribution-work-cell:hover {
  transform: translateY(-2px);
  filter: saturate(1.05) brightness(1.03);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.28), 0 16px 28px -22px rgba(26, 55, 130, .55);
}
.contribution-work-cell.hero { min-width: 0; }
.contribution-rest-row {
  display: flex;
  justify-content: stretch;
  margin-top: 8px;
}
.contribution-rest-summary {
  min-width: 0;
  color: #fff;
  border: 0;
  border-radius: 9px;
  padding: 11px 14px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  text-align: left;
  cursor: pointer;
  font: inherit;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.2);
  transition: transform .18s ease, filter .18s ease, box-shadow .18s ease, opacity .2s var(--motion-ease);
  animation: contributionCellIn .28s var(--motion-ease);
}
.contribution-rest-summary:hover,
.contribution-rest-summary.active {
  transform: translateY(-1px);
  filter: saturate(1.08) brightness(1.03);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.28), 0 12px 22px -20px rgba(26, 55, 130, .55);
}
.contribution-rest-summary .work-cell-title {
  font-size: 12px;
  line-height: 1.32;
  font-weight: 800;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.contribution-rest-summary em {
  font-style: normal;
  font-size: 9.5px;
  line-height: 1.25;
  opacity: .76;
}
.contribution-work-grid.compact {
  height: clamp(400px, 42vw, 460px);
  min-height: 400px;
}
.contribution-work-grid.compact .contribution-work-cell {
  border-radius: 10px;
  padding: 10px;
}
.contribution-work-cell .work-cell-title {
  color: #fff;
  font-size: var(--work-title-size, 12px); line-height: 1.28; font-weight: 760;
  display: -webkit-box; -webkit-line-clamp: var(--work-title-lines, 2); -webkit-box-orient: vertical; overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
  text-shadow: 0 1px 2px rgba(8, 32, 90, .2);
}
.contribution-work-cell .work-cell-internal-title {
  color: rgba(255,255,255,.78);
  font-size: 9.5px;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.contribution-work-cell em { font-style: normal; font-size: var(--work-meta-size, 10.5px); opacity: .78; }
.work-play-line {
  min-width: 0;
  max-width: 100%;
  display: block;
  color: #fff;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(8, 32, 90, .2);
}
.work-play-count {
  min-width: 0;
  max-width: 100%;
  display: block;
  color: #fff;
  font-size: var(--work-play-size, 15px);
  line-height: .98;
  font-weight: 860;
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.work-metric-line {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 1px;
}
.work-date-chip {
  min-width: 0;
  max-width: 100%;
  display: inline-block;
  color: var(--work-date-color, rgba(255,255,255,.76));
  font-size: var(--work-meta-size, 10.5px);
  line-height: 1.25;
  font-weight: 720;
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 1px 2px rgba(8, 32, 90, .18);
}
.contribution-rest-panel {
  margin-top: 12px;
  border: 1px solid var(--line-soft);
  border-radius: 14px;
  background: rgba(255,255,255,.72);
  overflow: hidden;
  transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.contribution-rest-panel.open {
  border-color: var(--contribution-line);
  background: rgba(255,255,255,.9);
  box-shadow: 0 18px 42px -34px var(--contribution-shadow);
}
.contribution-rest-head {
  min-height: 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px 10px 14px;
}
.contribution-rest-head div {
  min-width: 0;
  display: grid;
  gap: 2px;
}
.contribution-rest-head b {
  font-size: 13px;
  color: var(--ink);
}
.contribution-rest-head span {
  font-size: 11.5px;
  color: var(--ink-3);
}
.contribution-rest-head button {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  color: var(--contribution-color);
  border-radius: 999px;
  padding: 6px 11px;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  transition: background .14s ease, border-color .14s ease, transform .14s ease;
}
.contribution-rest-head button:hover {
  border-color: var(--contribution-line);
  background: var(--contribution-soft);
  transform: translateY(-1px);
}
.contribution-rest-list {
  display: grid;
  max-height: 360px;
  overflow: auto;
  padding: 0 12px 12px;
  animation: panelRise .26s var(--motion-ease);
}
.contribution-rest-list button {
  min-height: 42px;
  border: 0;
  border-top: 1px solid var(--line-soft);
  background: transparent;
  color: var(--ink);
  display: grid;
  grid-template-columns: minmax(0, 1fr) 92px 112px;
  align-items: center;
  gap: 12px;
  padding: 8px 2px;
  font: inherit;
  text-align: left;
  transition: background .14s ease, color .14s ease;
}
.contribution-rest-list button:hover {
  background: var(--contribution-soft);
  color: var(--contribution-color);
}
.contribution-rest-list span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12.5px;
  font-weight: 650;
}
.contribution-rest-list span strong,
.contribution-rest-list span small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.contribution-rest-list span strong { font-size: 12.5px; }
.contribution-rest-list span small { margin-top: 2px; color: var(--ink-3); font-size: 10px; font-weight: 500; }
.contribution-rest-list b {
  justify-self: end;
  font-size: 12.5px;
}
.contribution-rest-list em {
  justify-self: end;
  font-style: normal;
  color: var(--ink-3);
  font-size: 11px;
}
@media (max-width: 720px) {
  .contribution-work-head { align-items: flex-start; flex-direction: column; }
  .contribution-work-head span { text-align: left; }
  .contribution-rest-list button { grid-template-columns: minmax(0, 1fr) 76px; }
  .contribution-rest-list em { display: none; }
}
.matrix-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 12px; }
.matrix-section-head .muted { font-size: 12.5px; margin-top: 2px; }
.publish-strategy-panel {
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow);
  padding: 16px;
}
.publish-strategy-summary {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(300px, .82fr);
  gap: 12px;
  margin-bottom: 12px;
}
.publish-strategy-insight,
.publish-strategy-kpis > div,
.publish-strategy-block,
.publish-combo-block {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 13px;
}
.publish-strategy-insight span,
.publish-strategy-kpis span,
.publish-combo-card span {
  display: block;
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .08em;
}
.publish-strategy-insight b {
  display: block;
  margin-top: 6px;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.45;
}
.publish-strategy-kpis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.publish-strategy-kpis b {
  display: block;
  margin-top: 6px;
  color: var(--ink);
  font-size: 17px;
  font-weight: 840;
  line-height: 1.1;
}
.publish-strategy-kpis em {
  display: block;
  margin-top: 5px;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
}
.publish-strategy-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.publish-strategy-block-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
  margin-bottom: 10px;
}
.publish-strategy-block-head b {
  color: var(--ink);
  font-size: 13.5px;
}
.publish-strategy-block-head span {
  color: var(--ink-3);
  font-size: 11.5px;
  text-align: right;
}
.publish-strategy-row {
  display: grid;
  grid-template-columns: minmax(92px, .72fr) minmax(90px, 1fr) minmax(126px, auto);
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  border-top: 1px solid var(--line-soft);
}
.publish-strategy-row:first-of-type {
  border-top: 0;
}
.publish-strategy-row-label b {
  display: block;
  color: var(--ink);
  font-size: 12.5px;
}
.publish-strategy-row-label span {
  display: block;
  color: var(--ink-3);
  font-size: 10.5px;
  margin-top: 2px;
}
.publish-strategy-row-bar {
  height: 8px;
  border-radius: 999px;
  background: #EDF2FF;
  overflow: hidden;
}
.publish-strategy-row-bar i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #2F5FE3 0%, #72A8FF 100%);
}
.publish-strategy-row-metrics {
  display: grid;
  grid-template-columns: 42px 1fr 1fr;
  gap: 6px;
  align-items: baseline;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.publish-strategy-row-metrics span,
.publish-strategy-row-metrics em {
  color: var(--ink-3);
  font-size: 11px;
  font-style: normal;
}
.publish-strategy-row-metrics b {
  color: var(--ink);
  font-size: 12.5px;
}
.publish-combo-block {
  margin-top: 12px;
}
.account-strategy-block {
  margin-top: 12px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 13px;
}
.account-strategy-lead {
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 10px;
  padding: 10px 11px;
  font-size: 12.5px;
  font-weight: 720;
  line-height: 1.45;
  margin-bottom: 10px;
}
.account-strategy-table {
  display: grid;
  gap: 8px;
}
.account-strategy-head,
.account-strategy-row {
  display: grid;
  grid-template-columns: minmax(138px, 1.05fr) 82px minmax(92px, .72fr) minmax(100px, .82fr) minmax(116px, .9fr) minmax(140px, 1fr);
  gap: 9px;
  align-items: center;
}
.account-strategy-head {
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: .08em;
  padding: 0 2px;
}
.account-strategy-row {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 10px;
  padding: 10px;
}
.account-strategy-row b {
  display: block;
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.25;
}
.account-strategy-row em {
  display: block;
  margin-top: 4px;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
}
.account-strategy-account b {
  font-size: 13px;
}
.account-strategy-efficiency i {
  display: block;
  height: 6px;
  margin-top: 7px;
  border-radius: 999px;
  background: #EDF2FF;
  overflow: hidden;
}
.account-strategy-efficiency i span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #2F5FE3 0%, #72A8FF 100%);
}
.publish-combo-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.publish-combo-card {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 10px;
  padding: 11px;
}
.publish-combo-card b {
  display: block;
  margin-top: 8px;
  color: var(--ink);
  font-size: 20px;
  font-weight: 860;
  font-variant-numeric: tabular-nums;
}
.publish-combo-card em {
  display: block;
  margin-top: 5px;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.4;
}
.matrix-widget-block, .shop-structure, .local-api-panel {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: 16px; margin-bottom: 16px;
}
.monitor-widget-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.monitor-widget-grid.one { grid-template-columns: 1fr; }
.monitor-widget {
  min-height: 132px; border: 1px solid var(--line-soft); border-radius: var(--r);
  background: var(--surface-sunk); padding: 13px; display: flex; flex-direction: column;
  justify-content: space-between;
}
.monitor-widget.local-life { background: var(--warn-soft); border-color: var(--warn-line); }
.mw-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; font-size: 10.5px; }
.mw-title { font-size: 13px; font-weight: 700; margin-top: 10px; }
.mw-metric { font-size: 24px; line-height: 1.15; font-weight: 780; letter-spacing: -.4px; font-variant-numeric: tabular-nums; margin-top: 6px; }
.mw-sub { font-size: 11.5px; color: var(--ink-3); line-height: 1.4; margin-top: 8px; }
.local-quick-actions { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.local-action {
  border: 1px solid var(--line); background: var(--surface); border-radius: var(--r);
  padding: 12px; display: flex; gap: 10px; align-items: flex-start; color: var(--ink);
  text-align: left; transition: .14s; min-height: 76px;
}
.local-action:hover { border-color: var(--brand-line); background: var(--brand-soft); }
.local-action.primary { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); }
.local-action b { display: block; font-size: 13px; }
.local-action em { display: block; font-style: normal; color: var(--ink-3); font-size: 11.5px; line-height: 1.35; margin-top: 3px; }
.shop-monitor-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 16px; margin-bottom: 16px; }
.shop-monitor-grid.one { grid-template-columns: 1fr; }
.shop-monitor-grid.top-summary { margin-top: 10px; margin-bottom: 14px; }
.shop-monitor-card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: 16px;
}
.shop-monitor-card.large { padding: 20px; }
.shop-card-top { display: flex; align-items: center; gap: 12px; }
.shop-card-name { font-size: 15px; font-weight: 750; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shop-monitor-card.large .shop-card-name { font-size: 18px; }
.shop-card-meta { font-size: 12px; color: var(--ink-3); margin-top: 3px; }
.shop-card-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 18px; padding: 14px 0; border-top: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft); }
.shop-role-strip { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 13px; }
.shop-role-strip span { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--ink-2); }
.shop-role-strip b { color: var(--ink); }
.shop-structure-map-head {
  margin-top: 16px;
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 14px;
}
.shop-structure-map-head span {
  display: block;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
}
.shop-structure-map-head b {
  display: block;
  color: var(--ink);
  font-size: 15px;
  margin-top: 3px;
}
.shop-structure-map-head em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11.5px;
  white-space: nowrap;
}
.shop-structure-map {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}
.shop-structure-tile {
  min-width: 0;
  min-height: 132px;
  border: 1px solid var(--line-soft);
  border-radius: 14px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: var(--surface-sunk);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.45);
}
.shop-structure-tile.has-items {
  border-color: color-mix(in srgb, var(--tile-color, var(--brand)) 34%, var(--line-soft));
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--tile-color, var(--brand)) 12%, #fff) 0%, #fff 100%);
}
.shop-structure-tile.role-self_owned { --tile-color: #1B7A4E; }
.shop-structure-tile.role-exposure { --tile-color: #2D5BD6; }
.shop-structure-tile.role-ip { --tile-color: #7E5CC6; }
.shop-structure-tile.role-matrix { --tile-color: #4D74C0; }
.shop-structure-tile.role-vlog { --tile-color: #9A6A18; }
.shop-structure-tile.role-unclassified { --tile-color: #8A8F99; }
.shop-structure-tile-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}
.shop-structure-tile-top span {
  display: block;
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 760;
}
.shop-structure-tile-top b {
  display: block;
  margin-top: 2px;
  color: var(--tile-color, var(--brand));
  font-size: 30px;
  line-height: .95;
  font-weight: 900;
}
.shop-structure-tile-top em {
  flex-shrink: 0;
  color: var(--tile-color, var(--brand));
  background: color-mix(in srgb, var(--tile-color, var(--brand)) 10%, #fff);
  border: 1px solid color-mix(in srgb, var(--tile-color, var(--brand)) 24%, #fff);
  border-radius: 999px;
  padding: 2px 7px;
  font-size: 10.5px;
  font-style: normal;
  font-weight: 850;
}
.shop-structure-tile p {
  margin: 8px 0 9px;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.35;
}
.shop-structure-account-list {
  display: grid;
  gap: 5px;
}
.shop-structure-account-list span {
  min-width: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.72);
  border-radius: 8px;
  padding: 5px 6px;
}
.shop-structure-account-list i {
  min-width: 0;
  color: var(--ink-2);
  font-style: normal;
  font-size: 11px;
  font-weight: 680;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.shop-structure-account-list b {
  color: var(--ink-3);
  font-size: 10.5px;
}
.shop-structure-account-list .more,
.shop-structure-account-list .empty-copy {
  display: block;
  color: var(--ink-4);
  background: transparent;
  border-style: dashed;
  text-align: center;
}
.shop-structure-account-list .more i,
.shop-structure-account-list .empty-copy i {
  display: block;
}
.shop-card-actions { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.shop-structure.bookcase {
  border: 1px solid var(--line);
  border-radius: 22px;
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
  box-shadow: var(--shadow);
  padding: 18px;
  animation: panelRise var(--motion-med) var(--motion-ease);
}
.structure-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.structure-platform-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  margin: 16px 0 14px;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 16px;
  background: rgba(255,255,255,.78);
}
.structure-platform-switch { flex-wrap: wrap; }
.structure-shelf-summary {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  color: var(--ink-3);
  font-size: 11.5px;
  white-space: nowrap;
}
.structure-shelf-summary b { color: var(--ink); font-size: 13px; }
.structure-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.structure-grid.bookcase-grid {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  overflow: visible;
  padding-bottom: 4px;
}
.structure-col {
  border: 1px solid var(--line-soft);
  border-radius: 16px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(246,249,255,.92) 100%);
  padding: 11px;
  min-width: 0;
  min-height: 150px;
  transition: background var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.52);
}
.structure-col.drop-target {
  border-color: var(--brand);
  background: linear-gradient(180deg, #EDF4FF 0%, #FFFFFF 100%);
  box-shadow: inset 0 0 0 1px var(--brand-line), 0 16px 28px rgba(45,91,214,.12);
}
.structure-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
  min-height: 64px;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line-soft);
}
.structure-head > div { min-width: 0; }
.structure-head b {
  display: block;
  color: var(--ink);
  font-size: 13px;
  font-weight: 850;
  line-height: 1.2;
}
.structure-head em {
  display: block;
  margin-top: 4px;
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
}
.structure-head strong {
  color: var(--brand);
  font-size: 26px;
  line-height: 1;
  font-weight: 900;
}
.structure-role-dot {
  width: 8px;
  height: 8px;
  display: inline-block;
  border-radius: 999px;
  margin-right: 7px;
  vertical-align: 1px;
  background: var(--brand);
}
.structure-role-dot.role-self_owned { background: #1B7A4E; }
.structure-role-dot.role-exposure { background: #2D5BD6; }
.structure-role-dot.role-ip { background: #7E5CC6; }
.structure-role-dot.role-matrix { background: #4D74C0; }
.structure-role-dot.role-vlog { background: #9A6A18; }
.structure-role-dot.role-unclassified { background: #8A8F99; }
.structure-account {
  width: 100%; border: 1px solid var(--line-soft); background: var(--surface); border-radius: 9px;
  padding: 9px; display: grid; grid-template-columns: auto minmax(0,1fr) auto; gap: 9px; align-items: center;
  margin-bottom: 7px; color: var(--ink); text-align: left; cursor: grab;
  transition: background var(--motion-fast) var(--motion-ease), border-color var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease), box-shadow var(--motion-fast) var(--motion-ease);
}
.structure-account:active { cursor: grabbing; }
.structure-account:hover { border-color: var(--brand-line); background: var(--brand-soft); transform: translateY(-1px); }
.structure-account.dragging { opacity: .72; transform: scale(.985); border-color: var(--brand); box-shadow: var(--shadow-sm); }
.structure-account .sa-main { min-width: 0; display: grid; gap: 3px; }
.structure-account .sa-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12.5px; font-weight: 760; }
.structure-account .sa-meta { display: flex; align-items: center; gap: 4px; color: var(--ink-3); font-size: 10.5px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.structure-account .sa-meta .plat { font-size: 10.5px; }
.structure-account .sa-bio {
  color: var(--ink-4);
  font-size: 10.5px;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.structure-account .num { font-size: 11px; color: var(--ink-3); }
.structure-empty-slot {
  min-height: 68px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  display: grid;
  place-items: center;
  color: var(--ink-4);
  font-size: 12px;
  background: rgba(255,255,255,.48);
}
.matrix-data-rule-strip {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  border: 1px solid var(--line); background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFC 100%);
  border-radius: var(--r); padding: 11px 13px; margin: -2px 0 16px; box-shadow: var(--shadow-sm);
}
.data-rule-main { display: inline-flex; align-items: center; gap: 8px; min-width: 260px; flex: 1; color: var(--ink-2); font-size: 12px; line-height: 1.45; }
.data-rule-main b { color: var(--ink); font-weight: 800; }
.data-rule-main b.pending { color: var(--warn); }
.data-rule-ic {
  width: 24px; height: 24px; border-radius: 8px; display: grid; place-items: center;
  color: var(--brand); background: var(--brand-soft); border: 1px solid var(--brand-line); flex-shrink: 0;
}
.data-rule-stats { display: inline-flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.data-rule-stats span {
  border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 999px;
  padding: 4px 8px; font-size: 11px; color: var(--ink-3); white-space: nowrap;
}
.data-rule-stats b { color: var(--ink); font-weight: 800; }
.matrix-inline-link {
  border: 0; background: transparent; color: var(--brand); font: inherit; font-size: 12px;
  font-weight: 760; display: inline-flex; align-items: center; gap: 5px; cursor: pointer; padding: 5px 2px;
}
.matrix-inline-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.matrix-inline-link.disabled, .matrix-inline-link:disabled {
  color: var(--ink-4); cursor: not-allowed; text-decoration: none; opacity: .76;
}
.local-api-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.local-api-card { border: 1px solid var(--line-soft); border-radius: var(--r); background: var(--surface-sunk); padding: 12px; }
.lac-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 13px; font-weight: 720; }
.lac-desc { color: var(--ink-2); font-size: 12px; line-height: 1.5; margin-top: 8px; }
@media (max-width: 900px) {
  .matrix-workbench-shell { grid-template-columns: 1fr; }
  .matrix-side-panel { position: static; }
  .matrix-city-select { justify-content: space-between; border-radius: 10px; }
  .project-detail-hero, .project-structure-toolbar { flex-direction: column; align-items: stretch; }
  .project-kpi-strip { grid-template-columns: 1fr 1fr; }
  .project-kpi-card.brand { grid-column: 1 / -1; }
  .project-ops-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .project-ops-pipeline { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .publish-strategy-summary,
  .publish-strategy-grid,
  .publish-combo-grid { grid-template-columns: 1fr; }
  .account-strategy-head { display: none; }
  .account-strategy-row { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .account-strategy-account,
  .account-strategy-efficiency { grid-column: 1 / -1; }
  .publish-strategy-row { grid-template-columns: minmax(88px, .72fr) minmax(80px, 1fr); }
  .publish-strategy-row-metrics { grid-column: 1 / -1; grid-template-columns: repeat(3, 1fr); text-align: left; }
  .project-contribution-head { align-items: flex-start; flex-direction: column; }
  .historical-project-summary { grid-template-columns: 1fr 1fr; }
  .historical-project-summary .historical-project-total { grid-column: 1 / -1; }
  .historical-video-row {
    min-width: 0;
    grid-template-columns: 42px minmax(0, 1fr) 112px;
  }
  .historical-video-account,
  .historical-video-date { display: none; }
  .historical-video-play { grid-column: 3; text-align: right; }
  .matrix-hero { flex-direction: column; }
  .matrix-controls { justify-items: stretch; width: 100%; }
  .city-filter { justify-content: flex-start; }
  .city-select { justify-content: space-between; border-radius: 10px; }
  .shop-structure-map { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .monitor-widget-grid, .structure-grid, .local-api-grid, .local-quick-actions { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .project-kpi-strip { grid-template-columns: 1fr; }
  .project-ops-head { flex-direction: column; }
  .project-ops-flow, .project-ops-pipeline { grid-template-columns: 1fr; }
  .publish-strategy-kpis { grid-template-columns: 1fr; }
  .publish-strategy-block-head { align-items: flex-start; flex-direction: column; }
  .publish-strategy-block-head span { text-align: left; }
  .account-strategy-row { grid-template-columns: 1fr; }
  .account-strategy-row > div { grid-column: 1 / -1; }
  .publish-strategy-row { grid-template-columns: 1fr; }
  .project-detail-tabs { overflow-x: auto; }
  .historical-project-summary { grid-template-columns: 1fr; }
  .historical-project-summary .historical-project-total { grid-column: auto; }
  .historical-project-summary > div { min-height: 112px; padding: 20px; border-left: 0; border-top: 1px solid var(--line); }
  .historical-project-summary > div:first-child { border-top: 0; }
  .historical-video-head { align-items: flex-start; padding: 18px 20px 12px; }
  .historical-video-head > div { align-items: flex-start; flex-direction: column; gap: 4px; }
  .historical-video-table { padding: 0 20px 6px; }
  .historical-video-more { width: calc(100% - 40px); margin: 8px 20px 20px; }
  .contribution-work-grid,
  .contribution-work-grid.compact { height: 560px; min-height: 560px; }
  .contribution-rest-row { justify-content: stretch; }
  .contribution-rest-summary { flex-basis: 100% !important; }
  .shop-card-metrics { grid-template-columns: 1fr; }
  .shop-structure-map { grid-template-columns: 1fr; }
}
.mon-grid { display:grid; grid-template-columns: repeat(auto-fill, minmax(320px,1fr)); gap: 16px; }
.mon-card { background: var(--surface); border:1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: 16px; cursor: pointer; transition:.16s; }
.mon-card:hover { box-shadow: var(--shadow-pop); transform: translateY(-1px); }
.mon-top { display:flex; align-items:center; gap: 11px; }
.mon-top .nm { font-size: 14.5px; font-weight: 650; line-height:1.2; }
.mon-top .meta { font-size: 11.5px; color: var(--ink-3); }
.strategy { display:flex; flex-wrap: wrap; gap: 6px; margin: 13px 0; }
.strat { font-size: 11px; background: var(--surface-sunk); border:1px solid var(--line-soft);
  border-radius: 6px; padding: 3px 8px; color: var(--ink-2); white-space: nowrap; }
.strat b { color: var(--ink); font-weight: 650; }
.mon-new { display:flex; align-items:baseline; gap: 8px; padding: 11px 0; border-top:1px solid var(--line-soft); border-bottom:1px solid var(--line-soft); }
.mon-new .big { font-size: 24px; font-weight: 700; }
.spark-row { display:flex; justify-content: space-between; align-items:flex-end; margin-top: 13px; gap: 8px; }
.spark-stat .sl { font-size: 10.5px; color: var(--ink-3); }
.spark-stat .sv { font-size: 13px; font-weight: 650; font-variant-numeric: tabular-nums; }
.spark-stat .sv.up { color: var(--ok); }
.account-name-action {
  border: 0; background: transparent; color: var(--ink); padding: 0; margin: 0;
  font: inherit; font-weight: 750; cursor: pointer; text-align: left; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.account-name-action:hover { color: var(--brand); text-decoration: underline; text-underline-offset: 3px; }
.account-detail-hero {
  background: var(--surface); border: 1px solid var(--line); border-radius: 16px;
  padding: 20px; margin-bottom: 16px; box-shadow: var(--shadow);
}
.account-detail-topline { display: flex; align-items: center; gap: 14px; }
.account-detail-topline .metric-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.account-profile-inline { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line-soft); }
.account-profile-inline .account-profile-card {
  background: linear-gradient(180deg, #FFFDF8 0%, #F7FBF9 100%);
  border-color: var(--brand-line);
}
.account-profile-inline .account-profile-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.account-profile-inline .account-profile-item:last-child { grid-column: auto; }
.detail-grid .card.card-pad > .eyebrow:first-child {
  display: flex; align-items: center; gap: 7px;
}
.detail-grid .card.card-pad > .eyebrow:first-child::before {
  content: ""; width: 3px; height: 13px; border-radius: 2px; background: var(--brand);
}
.account-profile-card {
  border: 1px solid var(--line-soft);
  background: linear-gradient(180deg, #FAFCFA 0%, var(--surface-sunk) 100%);
  border-radius: 12px;
  padding: 12px;
  display: grid;
  gap: 10px;
}
.account-profile-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.account-profile-head b { display: block; margin-top: 3px; font-size: 14px; line-height: 1.25; color: var(--ink); }
.account-profile-head span {
  flex-shrink: 0; border-radius: 999px; border: 1px solid var(--brand-line);
  background: var(--brand-soft); color: var(--brand); font-size: 11px; font-weight: 760; padding: 4px 8px;
}
.account-profile-bio {
  color: var(--ink-2); font-size: 12px; line-height: 1.6;
  border: 1px solid var(--line-soft); border-radius: 9px; background: var(--surface); padding: 9px;
  word-break: break-word;
}
.account-profile-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.account-profile-item {
  min-width: 0; border: 1px solid var(--line-soft); background: var(--surface);
  border-radius: 9px; padding: 8px; display: grid; gap: 3px;
}
.account-profile-item span { font-size: 10.5px; color: var(--ink-3); }
.account-profile-item b {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--ink); font-size: 12px; font-weight: 750; font-variant-numeric: tabular-nums;
}
.project-audience-panel {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: 12px; margin-bottom: 12px;
}
.project-audience-panel > .matrix-section-head {
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin-bottom: 8px;
}
.project-audience-panel .audience-account-switcher {
  flex-wrap: nowrap;
  overflow-x: auto;
  max-width: none;
  width: 100%;
  justify-content: flex-start;
  gap: 5px;
  padding-bottom: 2px;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}
.project-audience-panel .audience-account-switcher button {
  flex-shrink: 0;
  font-size: 10.5px;
  padding: 3px 7px 3px 3px;
  gap: 4px;
}
.project-audience-panel .audience-account-switcher button span {
  max-width: 72px;
}
.project-audience-panel .account-portrait-stage .portrait-modal.inline {
  gap: 11px;
  padding: 11px;
}
.project-audience-panel .portrait-modal-head {
  padding: 10px;
}
.project-audience-panel .portrait-full-head {
  margin-bottom: 6px;
}
.project-audience-panel .portrait-priority-grid {
  gap: 10px;
  align-items: stretch;
}
.project-audience-panel .project-comment-cloud-panel {
  margin-top: 10px;
}
.portrait-modal.inline {
  gap: 10px;
}
.portrait-modal.inline .portrait-modal-head {
  padding: 9px 10px;
  gap: 10px;
  border-radius: 11px;
}
.portrait-modal.inline .portrait-account-name {
  font-size: 14px;
}
.portrait-modal.inline .portrait-missing {
  padding-top: 8px;
  gap: 5px;
}
.portrait-groups-compact {
  display: grid;
  gap: 10px;
}
.portrait-group-compact {
  display: grid;
  gap: 6px;
}
.portrait-group-head {
  font-size: 11px;
  font-weight: 760;
  color: var(--ink-3);
  letter-spacing: 0.02em;
}
.portrait-group-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 8px;
}
.portrait-group-grid.crowd {
  grid-template-columns: minmax(96px, 0.72fr) minmax(180px, 1.28fr);
}
.portrait-group-grid.device {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.portrait-group-grid.geo,
.portrait-group-grid.interest {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.portrait-compact-card {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 8px 9px;
  display: grid;
  gap: 6px;
}
.portrait-compact-card.micro {
  padding: 6px 8px;
  gap: 4px;
  border-radius: 9px;
}
.portrait-compact-card.compact {
  padding: 7px 9px;
  gap: 5px;
}
.portrait-compact-card.expandable {
  padding: 8px 10px;
}
.portrait-compact-card-title {
  font-size: 11.5px;
  font-weight: 760;
  color: var(--ink);
}
.portrait-compact-card.micro .portrait-compact-card-title {
  font-size: 11px;
}
.portrait-expand-link {
  justify-self: start;
  border: none;
  background: none;
  padding: 0;
  margin-top: 1px;
  font: inherit;
  font-size: 10.5px;
  font-weight: 650;
  color: var(--brand);
  cursor: pointer;
  line-height: 1.2;
}
.portrait-expand-link:hover {
  text-decoration: underline;
}
.portrait-modal.inline .word-cloud-block.compact {
  padding: 9px 10px;
  border-radius: 10px;
}
.portrait-modal.inline .word-cloud-block.compact .word-cloud {
  gap: 5px 7px;
}
.project-audience-panel .portrait-group-grid {
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}
.project-audience-panel .portrait-group-grid.crowd {
  grid-template-columns: minmax(96px, 0.72fr) minmax(180px, 1.28fr);
}
.project-audience-panel .portrait-group-grid.device {
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.project-audience-grid { display: grid; grid-template-columns: 1fr 1fr 1.2fr; gap: 12px; align-items: stretch; }
.portrait-visual-grid {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px; margin-top: 12px; align-items: stretch;
}
.portrait-visual-grid.modal-visuals { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.project-audience-panel .portrait-visual-grid,
.portrait-modal.inline .portrait-visual-grid {
  gap: 8px;
  margin-top: 8px;
}
.project-audience-panel .portrait-visual-grid .portrait-chart-card,
.portrait-modal.inline .portrait-visual-grid .portrait-chart-card {
  min-height: 132px;
  padding: 10px;
  gap: 8px;
}
.portrait-chart-card {
  min-width: 0; border: 1px solid var(--line-soft); background: var(--surface);
  border-radius: 12px; padding: 12px; display: grid; gap: 10px; min-height: 156px;
}
.audience-account-switcher {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
  max-width: 520px;
}
.audience-account-switcher button {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  color: var(--ink-2);
  border-radius: 999px;
  padding: 4px 8px 4px 4px;
  font: inherit;
  font-size: 11.5px;
  font-weight: 760;
  transition: transform .16s ease, border-color .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}
.audience-account-switcher button span {
  max-width: 92px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.audience-account-switcher button:hover,
.audience-account-switcher button.active {
  color: var(--brand);
  border-color: var(--brand-line);
  background: var(--brand-soft);
  box-shadow: 0 10px 22px -18px rgba(47,95,227,.42);
  transform: translateY(-1px);
}
.account-portrait-stage {
  animation: accountPortraitSwitch .28s var(--motion-ease);
}
.account-portrait-stage .portrait-modal.inline {
  border: 1px solid var(--line-soft);
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFF 100%);
  border-radius: 14px;
  padding: 14px;
}
.project-comment-cloud-panel { margin-top: 14px; }
.portrait-chart-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.portrait-chart-head b { font-size: 12.5px; color: var(--ink); }
.portrait-chart-head span { font-size: 10.5px; color: var(--ink-4); white-space: nowrap; }
.portrait-treemap { display: flex; flex-wrap: wrap; gap: 6px; min-height: 112px; align-content: stretch; }
.portrait-treemap-cell {
  min-width: 72px; min-height: 48px; border-radius: 9px; padding: 8px;
  color: #fff; display: flex; flex-direction: column; justify-content: space-between;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18); overflow: hidden;
}
.portrait-treemap-cell.hero { min-height: 76px; }
.portrait-treemap-cell span {
  font-size: 11px; line-height: 1.25; overflow: hidden; text-overflow: ellipsis;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.portrait-treemap-cell b { font-family: var(--fs-num); font-size: 15px; line-height: 1; margin-top: 6px; }
.portrait-donut-card,
.portrait-stack-card { background: linear-gradient(180deg, #FFFFFF 0%, #F6F8FF 100%); }
.portrait-donut-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.portrait-donut-item {
  min-width: 0; border: 1px solid rgba(47, 95, 227, .12); background: rgba(255,255,255,.72);
  border-radius: 11px; padding: 10px; display: grid; gap: 8px; justify-items: center;
}
.portrait-donut {
  width: 86px; height: 86px; border-radius: 50%; display: grid; place-items: center;
  position: relative; box-shadow: inset 0 0 0 1px rgba(255,255,255,.58), 0 7px 18px rgba(47,95,227,.08);
}
.portrait-donut::after {
  content: ""; position: absolute; inset: 18px; border-radius: 50%;
  background: var(--surface); box-shadow: inset 0 0 0 1px var(--line-soft);
}
.portrait-donut span {
  position: relative; z-index: 1; font-family: var(--fs-num); font-size: 14px;
  font-weight: 840; color: var(--ink);
}
.portrait-donut-item > b { font-size: 12px; color: var(--ink); }
.portrait-donut-legend { width: 100%; display: grid; gap: 5px; }
.portrait-donut-legend span {
  min-width: 0; display: flex; align-items: center; gap: 5px;
  font-size: 10.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.portrait-donut-legend i,
.portrait-stack-legend i { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: 0 0 auto; }
.portrait-donut-legend em {
  margin-left: auto; font-style: normal; font-family: var(--fs-num);
  color: var(--ink-2); font-weight: 760; flex: 0 0 auto;
}
.portrait-stack-list { display: grid; gap: 11px; }
.portrait-stack-row { display: grid; gap: 6px; min-width: 0; }
.portrait-stack-title { font-size: 11.5px; color: var(--ink-2); font-weight: 720; }
.portrait-stack-track {
  height: 12px; border-radius: 999px; background: #E6EBF7; overflow: hidden;
  display: flex; box-shadow: inset 0 0 0 1px rgba(47,95,227,.08);
}
.portrait-stack-track i {
  display: block; height: 100%; min-width: 3px; border-right: 2px solid rgba(255,255,255,.9);
}
.portrait-stack-track i:last-child { border-right: 0; }
.portrait-stack-legend { display: flex; flex-wrap: wrap; gap: 6px 10px; }
.portrait-stack-legend span {
  display: inline-flex; align-items: center; gap: 5px; font-size: 10.5px;
  color: var(--ink-3); max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.portrait-radar-card { background: linear-gradient(180deg, #FFFFFF 0%, #F4F7FF 100%); }
.portrait-radar-body { display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 8px; align-items: center; }
.portrait-radar-body svg { width: 132px; height: 132px; }
.radar-ring, .radar-frame { fill: none; stroke: var(--line); stroke-width: 1; }
.radar-axis { stroke: var(--line-soft); stroke-width: 1; }
.radar-area { fill: rgba(47, 95, 227, .18); stroke: var(--accent); stroke-width: 2; }
.portrait-radar-legend { display: grid; gap: 7px; min-width: 0; }
.portrait-radar-legend span { display: flex; align-items: baseline; gap: 6px; font-size: 11px; color: var(--ink-3); }
.portrait-radar-legend i { font-family: var(--fs-num); font-style: normal; color: var(--accent); font-size: 13px; font-weight: 800; min-width: 26px; }
.portrait-heatmap {
  display: grid; grid-template-columns: 42px repeat(4, 1fr); gap: 5px; align-items: center;
}
.heat-axis, .heat-date { font-size: 10.5px; color: var(--ink-4); text-align: center; }
.heat-date { text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.heat-cell { display: block; height: 20px; border-radius: 6px; border: 1px solid rgba(47,95,227,.10); }
.portrait-funnel { display: grid; gap: 8px; }
.funnel-row { display: grid; grid-template-columns: 34px minmax(0, 1fr) 64px; gap: 8px; align-items: center; }
.funnel-row span { font-size: 11px; color: var(--ink-3); }
.funnel-row i { display: block; height: 13px; border-radius: 999px; opacity: .82; }
.funnel-row b { font-family: var(--fs-num); font-size: 12px; color: var(--ink); text-align: right; font-weight: 780; }
.capability-card { background: linear-gradient(180deg, #FFFFFF 0%, #F7F9FF 100%); }
.capability-heatmap {
  display: grid; grid-template-columns: 54px repeat(6, 1fr); gap: 5px; align-items: center;
  min-height: 96px; padding-top: 2px;
}
.cap-axis {
  font-size: 9.5px; color: var(--ink-4); text-align: center; line-height: 1.15;
  min-height: 28px; display: grid; place-items: center;
}
.cap-axis.rotate { transform: rotate(-22deg); transform-origin: center; }
.cap-platform {
  font-size: 10.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.cap-cell {
  height: 24px; border-radius: 7px; border: 1px solid transparent;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.22);
}
.cap-cell.ok { background: rgba(47, 95, 227, .82); border-color: rgba(47,95,227,.18); }
.cap-cell.partial { background: rgba(176, 122, 30, .48); border-color: rgba(176,122,30,.16); }
.cap-cell.missing { background: #E5E7EC; border-color: #D8DCE4; }
.cap-legend { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; font-size: 10.5px; color: var(--ink-4); }
.cap-legend span { display: inline-flex; align-items: center; gap: 5px; }
.cap-legend i { width: 9px; height: 9px; border-radius: 3px; display: inline-block; }
.cap-legend i.ok { background: rgba(47, 95, 227, .82); }
.cap-legend i.partial { background: rgba(176, 122, 30, .48); }
.cap-legend i.missing { background: #D8DCE4; }
.similarity-card { background: linear-gradient(180deg, #FFFFFF 0%, #F3F6FF 100%); }
.similarity-network { width: 100%; min-height: 126px; display: block; }
.sim-link { stroke: rgba(47, 95, 227, .28); stroke-linecap: round; }
.sim-node { stroke: #fff; stroke-width: 3; filter: drop-shadow(0 4px 9px rgba(22,24,29,.13)); }
.sim-0 { fill: var(--accent); }
.sim-1 { fill: #5C78D4; }
.sim-2 { fill: #8BAEF2; }
.sim-3 { fill: #6A7FD0; }
.sim-4 { fill: var(--amber); }
.similarity-network text { font-size: 10px; fill: #fff; font-weight: 800; font-family: var(--fs-num); pointer-events: none; }
.similarity-note { font-size: 10.5px; color: var(--ink-4); line-height: 1.35; }
.portrait-modal { display: grid; gap: 16px; }
.portrait-modal-head {
  display: flex; align-items: center; gap: 12px; border: 1px solid var(--line-soft);
  background: var(--surface-sunk); border-radius: 13px; padding: 12px;
}
.portrait-account-name { font-size: 16px; font-weight: 780; color: var(--ink); }
.portrait-status { margin-left: auto; display: flex; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.portrait-section-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.portrait-section-grid.portrait-full-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.portrait-priority-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.18fr) minmax(280px, .82fr);
  gap: 12px;
  align-items: start;
}
.portrait-priority-grid.single { grid-template-columns: 1fr; }
.portrait-section-grid.portrait-secondary-grid { margin-top: 0; }
.portrait-section {
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 12px; padding: 12px; min-width: 0;
}
.portrait-section-combo {
  background: linear-gradient(180deg, #FFFFFF 0%, #F3F7FF 100%);
}
.portrait-section-core {
  border-color: rgba(47,95,227,.2);
  box-shadow: 0 14px 30px -26px rgba(47,95,227,.42);
}
.portrait-combo-grid.core {
  display: grid;
  grid-template-columns: minmax(136px, .62fr) minmax(0, 1.38fr);
  gap: 12px;
  align-items: start;
}
.portrait-combo-stack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
.portrait-mini-block {
  min-width: 0;
  display: grid;
  gap: 8px;
}
.portrait-mini-block + .portrait-mini-block {
  border-top: 1px dashed var(--line);
  padding-top: 12px;
}
.portrait-combo-grid.core .portrait-mini-block + .portrait-mini-block {
  border-top: 0;
  padding-top: 0;
  border-left: 1px dashed var(--line);
  padding-left: 12px;
}
.portrait-mini-title {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.portrait-mini-title b { font-size: 12px; color: var(--ink); }
.portrait-mini-title span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10.5px;
  color: var(--ink-4);
}
.portrait-section.interest { background: #F3F6FF; border-color: #D7E1FF; }
.portrait-section-title { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 12.5px; font-weight: 760; color: var(--ink); margin-bottom: 10px; }
.portrait-section-title span { font-size: 10.5px; color: var(--ink-4); font-weight: 650; white-space: nowrap; }
.portrait-full-block { margin-top: 14px; border-top: 1px solid var(--line-soft); padding-top: 14px; }
.portrait-full-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.portrait-full-head.account-level { margin-bottom: 0; }
.portrait-secondary-head { margin-top: 2px; margin-bottom: -2px; }
.portrait-full-head b { font-size: 13px; color: var(--ink); }
.portrait-full-head span { font-size: 11px; color: var(--ink-4); text-align: right; }
.portrait-row-wrap { display: grid; gap: 10px; }
.portrait-row-list { display: grid; gap: 9px; }
.portrait-row-wrap.compact,
.portrait-row-wrap.compact .portrait-row-list { gap: 7px; }
.portrait-row-wrap.compact .portrait-row-top { font-size: 11px; }
.portrait-row-wrap.micro,
.portrait-row-wrap.micro .portrait-row-list { gap: 4px; }
.portrait-row-wrap.micro .portrait-row-top { font-size: 10.5px; }
.portrait-row-wrap.micro .portrait-row-top b { font-size: 11px; }
.portrait-row-wrap.micro .portrait-bar { height: 4px; }
.portrait-row-top { display: flex; justify-content: space-between; gap: 10px; font-size: 11.5px; align-items: baseline; }
.portrait-row-top span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink-2); }
.portrait-row-top b { font-family: var(--fs-num); color: var(--ink); font-size: 12px; flex-shrink: 0; }
.portrait-bar { height: 6px; border-radius: 999px; overflow: hidden; background: var(--paper-2); }
.portrait-bar i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent), #8BAEF2); }
.portrait-row.synthetic .portrait-bar i { background: linear-gradient(90deg, #AEB7C8, #D8DEE9); }
.portrait-index-list { border-top: 1px dashed var(--line); padding-top: 9px; display: flex; flex-wrap: wrap; gap: 6px; }
.portrait-index-title { width: 100%; color: var(--ink-4); font-size: 10.5px; font-weight: 740; }
.portrait-index-list span {
  display: inline-flex; align-items: baseline; gap: 6px; min-width: 0;
  border: 1px solid var(--line-soft); background: var(--surface);
  border-radius: 8px; padding: 4px 7px; font-size: 10.5px;
}
.portrait-index-list b { max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink-3); font-weight: 650; }
.portrait-index-list em { font-style: normal; font-family: var(--fs-num); color: var(--ink); font-weight: 780; }
.portrait-missing { display: flex; flex-wrap: wrap; gap: 7px; border-top: 1px solid var(--line-soft); padding-top: 12px; }
.portrait-missing .eyebrow { width: 100%; margin: 0; }
.portrait-missing span {
  border: 1px solid var(--line-soft); background: var(--surface-sunk); color: var(--ink-3);
  border-radius: 999px; padding: 3px 8px; font-size: 11px;
}
.word-cloud-block { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 12px; padding: 12px; }
.word-cloud-block.compact { height: 100%; }
.word-cloud-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.word-cloud-head b { font-size: 12.5px; color: var(--ink); }
.word-cloud-head span { font-size: 10.5px; color: var(--ink-4); white-space: nowrap; }
.word-cloud { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.wc-token {
  display: inline-flex; align-items: center; min-height: 24px; border-radius: 999px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  color: var(--ink-2); padding: 2px 9px; font-weight: 650; line-height: 1.2;
}
.wc-token.lv-0 { font-size: 11px; opacity: .72; }
.wc-token.lv-1 { font-size: 11.5px; opacity: .82; }
.wc-token.lv-2 { font-size: 12.5px; }
.wc-token.lv-3 { font-size: 13.5px; background: var(--brand-soft); border-color: var(--brand-line); color: var(--brand); }
.wc-token.lv-4 { font-size: 15px; background: var(--brand-soft); border-color: var(--brand-line); color: var(--brand); }
@media (max-width: 1180px) {
  .portrait-visual-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portrait-visual-grid.modal-visuals { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .portrait-group-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 920px) {
  .project-audience-grid, .portrait-section-grid, .portrait-section-grid.portrait-full-grid, .portrait-priority-grid { grid-template-columns: 1fr; }
  .portrait-combo-grid.core { grid-template-columns: 1fr; }
  .portrait-combo-grid.core .portrait-mini-block + .portrait-mini-block {
    border-left: 0;
    padding-left: 0;
    border-top: 1px dashed var(--line);
    padding-top: 12px;
  }
  .portrait-group-grid, .project-audience-panel .portrait-group-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .portrait-visual-grid, .portrait-visual-grid.modal-visuals { grid-template-columns: 1fr; }
  .portrait-radar-body { grid-template-columns: 1fr; justify-items: center; }
  .portrait-radar-legend { width: 100%; }
  .portrait-combo-grid.core { grid-template-columns: 1fr; }
  .portrait-combo-grid.core .portrait-mini-block + .portrait-mini-block {
    border-left: 0;
    padding-left: 0;
    border-top: 1px dashed var(--line);
    padding-top: 12px;
  }
  .portrait-group-grid, .project-audience-panel .portrait-group-grid { grid-template-columns: 1fr; }
  .account-detail-topline { align-items: flex-start; flex-direction: column; }
  .account-detail-topline .metric-row { width: 100% !important; }
  .account-profile-inline .account-profile-grid { grid-template-columns: 1fr 1fr; }
}

/* 详情列表（界面四点击后） */
.work-list { display:flex; flex-direction:column; gap:0; }
.work-item { display:flex; gap: 12px; padding: 13px 4px; border-bottom: 1px solid var(--line-soft); align-items:center; }
.work-item:last-child { border-bottom:0; }
.back-link { display:inline-flex; align-items:center; gap:6px; color: var(--ink-2); font-size:13px; background:none; border:0; padding:6px 0; margin-bottom: 6px; }
.back-link:hover { color: var(--brand); }
.account-detail-tabs {
  width: fit-content; display: inline-flex; gap: 4px; padding: 4px; margin: 0 0 14px;
  background: var(--paper-2); border: 1px solid var(--line-soft); border-radius: 11px;
}
.account-detail-tabs button {
  border: 1px solid transparent; background: transparent; color: var(--ink-3);
  border-radius: 8px; padding: 7px 16px; font-size: 12.5px; font-weight: 650; font-family: inherit;
}
.account-detail-tabs button.on {
  background: var(--surface); color: var(--ink); border-color: var(--line);
  box-shadow: 0 1px 2px rgba(22,24,29,.06);
}
.account-portrait-page .portrait-modal.inline { gap: 14px; }

/* ============================================================
   弹窗 Modal + 表单
   ============================================================ */
.modal-mask { position: fixed; inset: 0; background: rgba(21,24,30,.42); backdrop-filter: blur(3px); z-index: 70;
  display: grid; place-items: center; padding: 24px; animation: fadein var(--motion-fast) var(--motion-ease); }
@keyframes fadein { from { opacity: 0; } to { opacity: 1; } }
.modal { width: 100%; background: var(--surface); border-radius: 18px;
  box-shadow: 0 30px 70px -24px rgba(21,24,30,.5); display: flex; flex-direction: column; max-height: 90vh;
  animation: pop var(--motion-med) var(--motion-ease); }
@keyframes pop { from { transform: translateY(10px) scale(.98); opacity: .96; } to { transform: none; opacity: 1; } }
.modal-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.modal-ic { width: 36px; height: 36px; border-radius: 10px; background: var(--brand-soft); color: var(--brand);
  display: grid; place-items: center; flex-shrink: 0; }
.modal-body { padding: 20px; overflow: auto; }
.modal-foot { padding: 14px 20px; border-top: 1px solid var(--line); display: flex; gap: 10px; justify-content: flex-end;
  background: #F8F9FB; border-radius: 0 0 18px 18px; }
.password-modal { max-width: 430px; }
.password-form { display: grid; gap: 13px; }
.password-form label { display: grid; gap: 7px; font-size: 12px; font-weight: 650; color: var(--ink-2); }
.password-note { font-size: 11.5px; line-height: 1.5; }

.text-input { width: 100%; border: 1px solid var(--line); background: var(--surface); border-radius: 9px;
  padding: 10px 12px; font-size: 13.5px; font-family: inherit; color: var(--ink); outline: none; transition: border-color .14s, box-shadow .14s; }
.text-input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.text-input::placeholder { color: var(--ink-4); }
.manual-account-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px;
  align-items: end; margin-top: 16px; max-width: 760px; }
.manual-account-form > label { display: grid; gap: 7px; min-width: 0; font-size: 13px; color: var(--ink-2); }
.manual-account-form .text-input { min-width: 0; min-height: 44px; box-sizing: border-box; }
.manual-account-form > button { grid-column: 1 / -1; justify-self: start; min-height: 44px; }
.manual-account-form > p { grid-column: 1 / -1; margin: 0; }
@media (max-width: 560px) {
  .manual-account-form { grid-template-columns: minmax(0, 1fr); }
  .manual-account-form .text-input { font-size: 16px; }
  .manual-account-form > button { justify-self: stretch; }
}
.template-grid { display: grid; gap: 12px; }
.template-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.template-grid.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 760px) { .template-grid.three { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .template-grid.two { grid-template-columns: 1fr; } }

/* 账号类型选择卡（添加账号弹窗） */
.account-add-workbench { display: grid; grid-template-columns: 224px minmax(0, 1fr); gap: 16px; align-items: start; }
.account-add-side {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #FAFBFC 0%, #F3F6FB 100%);
  border-radius: 14px;
  padding: 14px;
  display: grid;
  gap: 10px;
}
.account-add-side-title { display: grid; gap: 3px; margin-bottom: 2px; }
.account-add-side-title span { color: var(--brand); font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.account-add-side-title b { font-size: 15px; color: var(--ink); letter-spacing: -.01em; }
.account-add-step {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 10px;
  border: 1px solid transparent;
  border-radius: 12px;
  color: var(--ink-2);
}
.account-add-step b {
  width: 26px;
  height: 26px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  background: var(--surface);
  border: 1px solid var(--line);
  color: var(--ink-2);
  font-size: 12px;
}
.account-add-step span { display: grid; gap: 3px; min-width: 0; }
.account-add-step strong { font-size: 12.5px; color: var(--ink); }
.account-add-step em { font-style: normal; font-size: 11px; color: var(--ink-3); line-height: 1.35; }
.account-add-step.active { background: var(--brand-soft); border-color: var(--brand-line); }
.account-add-step.active b { background: var(--brand); border-color: var(--brand); color: #fff; }
.account-add-note {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  padding: 10px;
  border-radius: 12px;
  background: #fff;
  border: 1px dashed var(--line);
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.45;
}
.account-add-note svg { color: var(--brand); flex-shrink: 0; margin-top: 1px; }
.account-add-main {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  background: #fff;
  display: grid;
  gap: 12px;
}
.account-add-flow { display: grid; gap: 14px; }
.account-add-steps { display: flex; flex-wrap: wrap; gap: 7px; }
.account-add-steps span {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 999px; padding: 5px 9px; color: var(--ink-3); font-size: 11px; font-weight: 650;
}
.account-add-steps span b {
  width: 17px; height: 17px; border-radius: 50%; display: grid; place-items: center; background: var(--surface); border: 1px solid var(--line);
  color: var(--ink-3); font-size: 10px;
}
.account-add-steps span.done { color: var(--brand); border-color: var(--brand-line); background: var(--brand-soft); }
.account-add-steps span.done b, .account-add-steps span.active b { color: #fff; background: var(--brand); border-color: var(--brand); }
.account-add-steps span.active { color: var(--brand); border-color: var(--brand); background: var(--surface); }
.account-resolved-card {
  display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; align-items: center;
  border: 1px solid var(--ok-line); background: var(--ok-soft); border-radius: 12px; padding: 11px 12px;
}
.account-resolved-mark {
  width: 30px; height: 30px; display: grid; place-items: center; border-radius: 9px; color: var(--ok);
  background: var(--surface); border: 1px solid var(--ok-line);
}
.account-resolved-card > div { min-width: 0; display: grid; gap: 2px; }
.account-resolved-card > div > span { color: var(--ink-3); font-size: 11px; font-weight: 700; }
.account-resolved-card b { color: var(--ink); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-resolved-card em { color: var(--ink-3); font-size: 11px; font-style: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-resolve-empty {
  display: flex; gap: 8px; align-items: center; border: 1px dashed var(--line); border-radius: 11px;
  background: var(--surface-sunk); padding: 10px 11px; color: var(--ink-3); font-size: 11.5px; line-height: 1.4;
}
.account-resolve-empty svg { color: var(--brand); flex: 0 0 auto; }
.account-add-advanced { border-top: 1px solid var(--line-soft); padding-top: 11px; color: var(--ink-3); }
.account-add-advanced summary { cursor: pointer; color: var(--ink-2); font-size: 12px; font-weight: 700; }
.account-add-advanced p { margin: 8px 0 0; font-size: 11.5px; line-height: 1.5; }
.account-add-other-platform { border-top: 1px solid var(--line-soft); padding-top: 11px; color: var(--ink-3); }
.account-add-other-platform summary { cursor: pointer; color: var(--ink-2); font-size: 12px; font-weight: 700; }
.account-add-other-platform > p { margin: 8px 0 10px; font-size: 11.5px; line-height: 1.5; }
.account-add-other-platform-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 2px; font-size: 11px; line-height: 1.4; }
.account-add-platform-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.account-add-platform-tab {
  display: grid; gap: 4px; min-width: 0; padding: 10px 11px; text-align: left;
  border: 1px solid var(--line); border-radius: 12px; background: var(--surface); color: var(--ink-2); cursor: pointer;
}
.account-add-platform-tab b { color: var(--ink); font-size: 13px; }
.account-add-platform-tab span { color: var(--ink-3); font-size: 11px; line-height: 1.35; }
.account-add-platform-tab.active { border-color: var(--brand); background: var(--brand-soft); box-shadow: inset 0 0 0 1px var(--brand-line); }
.account-add-platform-tab.active b { color: var(--brand); }
.account-add-platform-tab:disabled { cursor: default; opacity: .65; }
.account-add-platform-panel { display: grid; gap: 14px; }
.account-add-input-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: -6px; color: var(--ink-3); font-size: 11px; line-height: 1.4; }
.account-draft-section, .account-draft-editor, .account-cost-preview {
  display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-sunk);
}
.account-draft-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--ink-2); font-size: 12px; }
.account-draft-title em { color: var(--ink-3); font-size: 11px; font-style: normal; }
.account-draft-list { display: grid; gap: 7px; }
.account-draft-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface); overflow: hidden; }
.account-draft-row.active { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand-line); }
.account-draft-open { display: grid; grid-template-columns: auto auto minmax(0, 1fr); gap: 8px; align-items: center; min-width: 0; padding: 9px 10px; border: 0; background: transparent; color: var(--ink-2); text-align: left; cursor: pointer; }
.account-draft-open > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink-3); font-size: 11.5px; }
.account-draft-remove { width: 34px; border: 0; border-left: 1px solid var(--line-soft); background: transparent; color: var(--ink-3); cursor: pointer; font-size: 18px; }
.account-draft-open:disabled, .account-draft-remove:disabled { cursor: default; opacity: .6; }
.account-draft-editor { background: var(--surface); border-color: var(--brand-line); }
.account-cost-preview { gap: 4px; border-color: var(--brand-line); background: var(--brand-soft); color: var(--ink-2); font-size: 11.5px; line-height: 1.45; }
.account-cost-preview b { color: var(--brand); font-size: 12px; }
.account-cost-preview em { color: var(--ink-3); font-style: normal; }
.account-cost-preview.actual { margin-top: 4px; border-color: var(--ok-line); background: var(--ok-soft); }
.account-cost-preview.actual b { color: var(--ok); }
@media (max-width: 720px) {
  .account-add-platform-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .account-add-input-actions, .account-draft-title { align-items: stretch; flex-direction: column; }
}
.account-add-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}
.account-add-header div { display: grid; gap: 2px; min-width: 0; }
.account-add-header span { font-size: 11px; color: var(--ink-3); font-weight: 700; }
.account-add-header b { color: var(--ink); font-size: 15px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-add-header em {
  font-style: normal;
  color: var(--brand);
  background: var(--brand-soft);
  border: 1px solid var(--brand-line);
  border-radius: 999px;
  padding: 4px 9px;
  font-size: 11px;
  font-weight: 700;
  flex-shrink: 0;
}
.account-candidate-banner {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  gap: 11px;
  align-items: center;
  padding: 11px 12px;
  border: 1px solid var(--brand-line);
  background: #F5F7FD;
  border-radius: 13px;
}
.account-candidate-banner > i {
  width: 32px;
  height: 32px;
  border-radius: 11px;
  display: grid;
  place-items: center;
  background: #fff;
  color: var(--brand);
  font-style: normal;
  font-weight: 800;
}
.account-candidate-banner span { display: grid; gap: 3px; min-width: 0; }
.account-candidate-banner b { font-size: 13px; color: var(--ink); }
.account-candidate-banner em { font-style: normal; color: var(--ink-3); font-size: 11.5px; line-height: 1.45; }
.account-candidate-banner small {
  color: var(--ink-2);
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 11px;
}
.account-candidate-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.account-candidate-card {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  gap: 9px;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 10px;
  background: var(--surface);
}
.account-candidate-card.ok { border-color: var(--ok-line); background: var(--ok-soft); }
.account-candidate-card > i {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #fff;
  border: 1px solid var(--line);
  color: var(--ink-2);
  font-style: normal;
  font-weight: 800;
  font-size: 12px;
}
.account-candidate-card span { display: grid; gap: 2px; min-width: 0; }
.account-candidate-card b { color: var(--ink); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-candidate-card em { color: var(--ink-3); font-size: 11px; font-style: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.account-candidate-card small { color: var(--ink-3); font-size: 10.5px; white-space: nowrap; }
.account-first-grab-card {
  border: 1px solid var(--warn-line);
  background: var(--warn-soft);
  border-radius: 13px;
  padding: 12px;
  display: grid;
  gap: 8px;
}
.account-first-grab-card div { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.account-first-grab-card b { font-size: 13px; color: var(--ink); }
.account-first-grab-card span { color: #9A6712; font-size: 11px; font-weight: 700; }
.account-first-grab-card p { margin: 0; color: var(--ink-3); font-size: 11.5px; line-height: 1.55; }
.type-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.type-opt { border: 1px solid var(--line); border-radius: 11px; padding: 12px 13px; cursor: pointer; transition: .14s; }
.type-opt:hover { border-color: var(--brand-line); }
.type-opt.on { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 0 0 1px var(--brand); }
.type-opt .th { display: flex; align-items: center; gap: 8px; }
.type-opt .td { font-size: 11.5px; color: var(--ink-3); margin-top: 6px; line-height: 1.45; }
@media (max-width: 760px) {
  .account-add-workbench { grid-template-columns: 1fr; }
  .account-candidate-grid { grid-template-columns: 1fr; }
  .account-resolved-card { grid-template-columns: 30px minmax(0, 1fr); }
  .account-resolved-card > .badge { grid-column: 2; justify-self: start; }
}

/* 多选账号 chip（监测任务） */
.pick-chip { border: 1px solid var(--line); background: var(--surface); border-radius: 999px;
  padding: 6px 12px 6px 7px; font-size: 12.5px; display: inline-flex; align-items: center; gap: 7px; cursor: pointer; transition: .14s; }
.pick-chip:hover { border-color: var(--brand-line); }
.pick-chip.on { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); }
.pick-chip .ck { width: 15px; height: 15px; border-radius: 5px; border: 1.5px solid var(--line); display: grid; place-items: center; flex-shrink: 0; }
.pick-chip.on .ck { background: var(--brand); border-color: var(--brand); color: #fff; }

/* 主控台动作工具条 */
.console-actions { display: flex; gap: 9px; }
@media (max-width: 720px) { .console-actions { flex-wrap: wrap; } }

/* toast */
.toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%);
  background: var(--ink); color: #fff; border-radius: 11px; padding: 11px 18px; font-size: 13px; z-index: 90;
  box-shadow: var(--shadow-pop); display: flex; align-items: center; gap: 9px; animation: toastin .25s ease; }
.toast .ok-ic { color: #7FD3A6; }
.toast b { display: block; font-size: 13px; line-height: 1.35; }
.toast em { display: block; margin-top: 2px; font-style: normal; font-size: 11.5px; color: rgba(255,255,255,.72); }
.btn.soft-disabled { opacity: .64; }
@keyframes toastin { from { transform: translate(-50%, 12px); opacity: 0; } to { transform: translate(-50%, 0); opacity: 1; } }

/* ============================================================
   作品列表 + 流量详情下钻
   ============================================================ */
.works-group-label { font-size: 11px; font-weight: 650; letter-spacing: .06em; color: var(--ink-3);
  display: flex; align-items: center; gap: 8px; margin: 4px 0 10px; }
.works-group-label .cnt { background: var(--paper-2); color: var(--ink-2); border-radius: 999px; padding: 1px 8px; font-size: 11px; }
.work-sort { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.work-sort button { border: 1px solid var(--line); background: var(--surface); color: var(--ink-3);
  border-radius: 8px; height: 29px; padding: 0 10px; font-size: 12px; font-weight: 650; cursor: pointer; }
.work-sort button.on { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); }
.download-rule { display: grid; gap: 9px; }
.download-rule .eyebrow { margin-bottom: 0; }
.rule-line { display: flex; justify-content: space-between; gap: 10px; font-size: 12.5px; }
.rule-line span { color: var(--ink-3); }
.rule-line b { color: var(--ink); font-weight: 750; }
.rule-folder { display: flex; gap: 8px; align-items: flex-start; border: 1px solid var(--line-soft);
  background: var(--surface-sunk); border-radius: 10px; padding: 9px 10px; color: var(--ink-2); font-size: 11.5px; line-height: 1.45; }
.rule-folder svg { color: var(--brand); margin-top: 1px; flex-shrink: 0; }
.download-disabled-note {
  border: 1px solid var(--warn-line);
  background: var(--warn-soft);
  color: #7E6326;
  border-radius: 10px;
  padding: 9px 10px;
  font-size: 11.5px;
  line-height: 1.45;
}
.download-disabled-note.ok { border-color: var(--ok-line); background: var(--ok-soft); color: var(--ok); }
.download-disabled-note.bad { border-color: var(--bad-line); background: var(--bad-soft); color: var(--bad); }

.work-row { display: flex; gap: 13px; align-items: center; padding: 12px; border: 1px solid var(--line-soft);
  border-radius: var(--r); margin-bottom: 9px; cursor: pointer; transition: .14s; background: var(--surface); }
.work-row:hover { border-color: var(--brand-line); box-shadow: var(--shadow-sm); }
.work-row.selected { border-color: var(--brand-line); background: var(--brand-soft); }
.work-select { width: 24px; height: 68px; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; cursor: pointer; }
.work-select input { width: 16px; height: 16px; accent-color: var(--brand); cursor: pointer; }
.work-select input:disabled { cursor: not-allowed; opacity: .42; }
.work-row .thumb { width: 52px; height: 68px; }
.work-row .wt { font-weight: 600; font-size: 13.5px; line-height: 1.35; }
.work-row .work-internal-material { margin-top: 2px; overflow: hidden; color: var(--ink-3); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.work-row .wmeta { font-size: 11.5px; color: var(--ink-3); display: flex; align-items: center; gap: 8px; margin-top: 4px; flex-wrap: wrap; }
.work-row .wstats { display: grid; grid-template-columns: repeat(5, minmax(42px, auto)); gap: 10px; margin-left: auto; text-align: right; flex-shrink: 0; }
.work-row .wstat .sl { font-size: 10.5px; color: var(--ink-4); }
.work-row .wstat .sv { font-size: 14px; font-weight: 680; font-variant-numeric: tabular-nums; }
.work-row .go { color: var(--ink-4); flex-shrink: 0; display: grid; place-items: center; }
.work-row-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
.work-link-btn { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--line-soft);
  display: grid; place-items: center; color: var(--brand); background: var(--surface); text-decoration: none; transition: .14s; }
.work-link-btn:hover { border-color: var(--brand-line); background: var(--brand-soft); }
@media (max-width: 640px) {
  .work-row .wstats { display: none; }
  .work-row-actions { align-self: stretch; align-items: flex-start; }
}

/* 流量详情抽屉内容 */
.td-cover { width: 100%; height: 200px; }
.td-cover-note { position: absolute; left: 12px; right: 12px; bottom: 12px; border-radius: 8px; padding: 8px 10px;
  background: rgba(21,24,30,.74); color: #fff; font-size: 11.5px; line-height: 1.4; }
.td-video-player-wrap {
  position: relative;
  width: 100%;
  height: 100%;
  display: grid;
  place-items: center;
  background: #111827;
}
.td-video-player { width: 100%; max-height: 360px; border-radius: 10px; background: #111; display: block; }
.td-player-source-badge {
  position: absolute;
  left: 10px;
  bottom: 10px;
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 0 8px;
  border-radius: 999px;
  background: rgba(21,24,30,.72);
  color: #fff;
  font-size: 10.5px;
  font-weight: 760;
  pointer-events: none;
}
.td-video-open-actions {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.td-video-open-actions .btn {
  min-width: 0;
  justify-content: center;
  white-space: nowrap;
}
.td-drawer-workbench { display: grid; gap: 14px; }
.video-review-drawer {
  width: min(1180px, 64vw);
  max-width: 100vw;
  overflow-x: hidden;
}
.video-review-drawer.video-shape-landscape {
  width: min(1320px, 78vw);
}
.video-review-drawer .drawer-body {
  padding: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-gutter: stable;
}
.video-review-drawer .td-drawer-workbench {
  min-height: calc(100vh - 76px);
  display: grid;
  grid-template-columns: minmax(340px, 46%) minmax(360px, 1fr);
  gap: 0;
  overflow: visible;
  background: var(--surface);
  align-items: start;
  max-width: 100%;
}
.td-review-video-stage {
  grid-column: 1 !important;
  grid-row: 1 / -1;
  position: sticky;
  top: 0;
  margin: 0 !important;
  height: calc(100vh - 76px);
  padding: 20px 22px;
  border-right: 1px solid var(--line);
  background: var(--canvas);
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr) auto;
  align-items: stretch;
  gap: 12px;
  min-width: 0;
  overflow-x: hidden;
}
.video-review-drawer .td-drawer-workbench.video-landscape {
  grid-template-columns: minmax(520px, 58%) minmax(360px, 1fr);
}
.td-review-detail-scroll {
  grid-column: 2;
  min-height: calc(100vh - 76px);
  overflow-x: hidden;
  overflow-y: visible;
  padding: 22px;
  display: grid;
  align-content: start;
  gap: 14px;
  min-width: 0;
}
.td-review-detail-scroll.panel-comments {
  height: calc(100vh - 76px);
  min-height: 0;
  overflow: hidden;
  align-content: stretch;
}
.td-review-detail-scroll *,
.td-review-detail-scroll *::before,
.td-review-detail-scroll *::after {
  max-width: 100%;
}
.td-review-detail-scroll .btn,
.td-review-detail-scroll button,
.td-review-detail-scroll input,
.td-review-detail-scroll select,
.td-review-detail-scroll textarea {
  min-width: 0;
}
.td-review-detail-scroll > .td-block {
  margin-top: 0;
}
.td-detail-summary {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 15px;
  padding: 14px;
  display: grid;
  gap: 12px;
  box-shadow: var(--shadow-sm);
}
.td-detail-summary-copy {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: 10px;
}
.td-detail-summary-copy div {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.td-detail-summary-copy b {
  color: var(--ink);
  font-size: 14px;
  letter-spacing: -.01em;
}
.td-detail-summary-copy em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.45;
}
.td-detail-summary-pills {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}
.td-detail-summary-pills span {
  min-height: 30px;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 999px;
  display: grid;
  place-items: center;
  padding: 0 8px;
  color: var(--ink-2);
  font-size: 11px;
  font-weight: 760;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.td-source-link {
  justify-content: center;
  min-height: 34px;
}
.td-review-video-stage .td-detail-summary {
  width: min(100%, 420px);
  justify-self: center;
  align-self: start;
  padding: 8px;
  border-color: var(--line);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.td-stage-primary-actions {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.15fr);
  gap: 6px;
}
.td-analysis-state {
  min-width: 0;
  min-height: 34px;
  border: 1px solid var(--line-soft);
  border-radius: 11px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 10px;
  color: var(--ink-2);
  background: var(--surface);
  font-size: 11px;
  font-weight: 820;
  white-space: nowrap;
}
.td-analysis-state.brand {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.td-analysis-state.ok {
  border-color: var(--line);
  background: var(--surface-sunk);
  color: var(--ink-2);
}
.td-analysis-state.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
  color: #9A6712;
}
.td-analysis-state.bad {
  border-color: rgba(178, 78, 48, .24);
  background: var(--bad-soft);
  color: #92341F;
}
.td-review-video-stage .td-source-link {
  min-height: 34px;
  background: var(--surface);
  border-radius: 11px;
  padding: 0 10px;
}
.td-layout-switch {
  width: min(100%, 420px);
  justify-self: center;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 5px;
  padding: 5px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 13px;
  box-shadow: var(--shadow-sm);
}
.td-layout-switch button {
  min-width: 0;
  min-height: 32px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: transparent;
  color: var(--ink-3);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 8px;
  cursor: pointer;
  font: inherit;
  font-size: 11px;
  font-weight: 820;
  white-space: nowrap;
  transition: border-color .18s var(--motion-ease), background .18s var(--motion-ease), color .18s var(--motion-ease);
}
.td-layout-switch button:hover,
.td-layout-switch button.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.video-review-drawer.video-shape-landscape .td-review-video-stage .td-detail-summary {
  width: 100%;
}
.td-panel-tabs {
  position: sticky;
  top: 0;
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
  padding: 8px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 14px;
  box-shadow: var(--shadow-sm);
}
.td-panel-tabs button {
  min-width: 0;
  min-height: 44px;
  border: 1px solid transparent;
  background: transparent;
  color: var(--ink-3);
  border-radius: 10px;
  padding: 6px 4px;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 2px;
  cursor: pointer;
  font: inherit;
}
.td-panel-tabs button:hover,
.td-panel-tabs button.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.td-panel-tabs span {
  font-size: 11px;
  font-weight: 820;
  line-height: 1.1;
}
.td-panel-tabs em {
  max-width: 100%;
  color: var(--ink-4);
  font-size: 9.8px;
  font-style: normal;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.td-panel-tabs button:hover em,
.td-panel-tabs button.on em {
  color: var(--brand);
}
.td-panel-content {
  display: grid;
  gap: 12px;
  min-width: 0;
}
.td-panel-content.panel-comments {
  height: 100%;
  min-height: 0;
  grid-template-rows: minmax(0, 1fr) auto;
  align-content: stretch;
}
.td-panel-content [hidden] {
  display: none !important;
}
.td-detail-section {
  display: grid;
  gap: 12px;
}
.td-section-head {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-left: 11px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line-soft);
}
.td-section-head::before {
  content: "";
  position: absolute;
  left: 0;
  top: 2px;
  width: 3px;
  height: 14px;
  border-radius: 2px;
  background: var(--brand);
}
.td-section-head div {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.td-section-head span {
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .14em;
}
.td-section-head b {
  color: var(--ink);
  font-size: 14.5px;
  letter-spacing: -.01em;
  line-height: 1.25;
}
.td-section-head em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.45;
}
.td-section-head i {
  flex-shrink: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  color: var(--ink-3);
  border-radius: 999px;
  padding: 4px 8px;
  font-style: normal;
  font-size: 10.5px;
  font-weight: 800;
  white-space: nowrap;
}
.td-review-video-shell {
  width: min(100%, clamp(280px, 24vw, 380px));
  justify-self: center;
  align-self: center;
  aspect-ratio: 9 / 16;
  border-radius: 0;
  background: #111827;
  box-shadow: 0 1px 2px rgba(22,24,29,.08);
  overflow: hidden;
  display: grid;
  place-items: center;
}
.td-review-video-shell.portrait {
  width: auto;
  height: min(100%, 58vh);
  max-width: 100%;
}
.td-review-video-shell.landscape {
  width: min(100%, clamp(480px, 44vw, 760px));
  justify-self: start;
  aspect-ratio: 16 / 9;
  border-radius: 0;
  box-shadow: 0 1px 2px rgba(22,24,29,.08);
}
.td-review-video-shell.square {
  width: min(100%, clamp(240px, 22vw, 340px));
  aspect-ratio: 1 / 1;
}
.video-review-drawer .td-video-player,
.video-review-drawer .td-cover {
  width: 100%;
  height: 100%;
  max-height: none;
  border-radius: 0;
}
.video-review-drawer .td-video-player-wrap {
  border-radius: 0;
}
.video-review-drawer .td-video-player {
  object-fit: contain;
}
.video-review-drawer .td-cover {
  min-height: 0;
  aspect-ratio: 9 / 16;
}
.td-review-video-shell.landscape .td-cover { aspect-ratio: 16 / 9; }
.td-review-video-shell.square .td-cover { aspect-ratio: 1 / 1; }
.td-video-stage-metrics {
  width: min(100%, 380px);
  justify-self: center;
  align-self: start;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
}
.td-video-stage-metrics .mc {
  padding: 8px 4px;
}
.td-video-stage-metrics .mc .v {
  font-size: 15px;
}
.video-review-drawer .td-workbench-hero,
.video-review-drawer .td-metrics,
.video-review-drawer .td-sub3,
.video-review-drawer .td-section-card,
.video-review-drawer .td-block {
  min-width: 0;
}
.td-status-line {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 999px; padding: 7px 9px 7px 7px;
}
.td-status-line > span:last-child {
  min-width: 0; color: var(--ink-3); font-size: 11.5px; line-height: 1.35;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.td-workbench-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: start;
  border: 1px solid var(--line); background: linear-gradient(180deg, #FFFFFF 0%, #F7F9FD 100%);
  border-radius: 15px; padding: 15px; box-shadow: var(--shadow-sm);
}
.td-workbench-title {
  margin-top: 5px; color: var(--ink); font-size: 17px; font-weight: 820; line-height: 1.32;
  letter-spacing: -.01em;
}
.td-workbench-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.td-workbench-meta span {
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-3);
  border-radius: 999px; padding: 3px 8px; font-size: 11px;
}
.td-flow { display: grid; grid-template-columns: 1fr; gap: 7px; min-width: 112px; }
.td-flow span {
  display: inline-flex; align-items: center; gap: 6px; justify-content: flex-start;
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-3);
  border-radius: 999px; padding: 6px 9px; font-size: 11.5px; font-weight: 680; white-space: nowrap;
}
.td-flow span.on { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); }
.td-metrics { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }
.td-metrics .mc { background: var(--surface-sunk); border: 1px solid var(--line-soft); border-radius: 10px; padding: 10px 6px; text-align: center; }
.td-metrics .mc .k { font-size: 10.5px; color: var(--ink-3); }
.td-metrics .mc .v { font-size: 16px; font-weight: 700; font-variant-numeric: tabular-nums; margin-top: 2px; }
.td-metrics-hero .mc { background: var(--surface); border-color: var(--line); box-shadow: var(--shadow-sm); }
.video-review-drawer .td-video-stage-metrics {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.video-review-drawer .td-video-stage-metrics .mc:first-child {
  grid-column: 1 / -1;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  text-align: left;
  padding: 10px 12px;
}
.video-review-drawer .td-video-stage-metrics .mc:first-child .v {
  font-size: 20px;
  color: var(--ink);
  margin-top: 0;
}
.video-review-drawer .td-video-stage-metrics .mc:not(:first-child) .v {
  font-size: 14px;
}
.video-review-drawer.video-shape-landscape .td-video-stage-metrics {
  width: 100%;
}
.td-stage-actions {
  width: min(100%, 420px);
  justify-self: center;
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 4px;
  padding: 6px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 15px;
  box-shadow: var(--shadow-sm);
}
.td-stage-actions button {
  border: 1px solid transparent;
  background: transparent;
  color: var(--ink-2);
  border-radius: 10px;
  min-width: 0;
  min-height: 50px;
  padding: 6px 3px;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 2px;
  cursor: pointer;
  font: inherit;
  transition: border-color .18s var(--motion-ease), background .18s var(--motion-ease), color .18s var(--motion-ease);
}
.td-stage-actions button:hover,
.td-stage-actions button.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.td-stage-actions span {
  font-size: 11px;
  font-weight: 780;
  line-height: 1.1;
}
.td-stage-actions em {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-style: normal;
  font-size: 9.8px;
  color: var(--ink-4);
  line-height: 1.1;
}
.td-stage-actions button.on em,
.td-stage-actions button:hover em {
  color: var(--brand);
}
.video-review-drawer.video-shape-landscape .td-stage-actions {
  width: 100%;
}

/* 视频详情工作台抽屉：保留侧边展开形态，只收字体、间距和信息层级 */
.video-review-drawer.layout-workbench {
  width: min(1260px, calc(100vw - 52px));
  max-width: calc(100vw - 20px);
  height: min(860px, calc(100vh - 28px));
  max-height: calc(100vh - 28px);
  background: var(--surface);
}
.video-review-drawer.layout-workbench.video-shape-landscape {
  width: min(1380px, calc(100vw - 40px));
}
.video-review-drawer.layout-workbench .drawer-head {
  min-height: 68px;
  padding: 14px 18px 13px 20px;
  border-bottom-color: #E8EAEF;
  background: rgba(255,255,255,.98);
  align-items: center;
}
.video-review-drawer.layout-workbench .drawer-head > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.video-review-drawer.layout-workbench .drawer-head .sec-title {
  max-width: min(760px, 58vw);
  color: var(--ink);
  font-size: 18px;
  font-weight: 850;
  line-height: 1.28;
  letter-spacing: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-review-drawer.layout-workbench .drawer-head .muted {
  color: var(--ink-3) !important;
  font-size: 11.5px;
  line-height: 1.35;
}
.video-review-drawer.layout-workbench .drawer-close {
  width: 32px;
  height: 32px;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  background: var(--surface-sunk);
}
.video-review-drawer.layout-workbench .drawer-body {
  overflow: hidden;
  max-height: none;
  flex: 1 1 auto;
  min-height: 0;
}
.video-review-drawer.layout-workbench .td-drawer-workbench,
.video-review-drawer.layout-workbench .td-drawer-workbench.video-landscape {
  height: 100%;
  min-height: 0;
  grid-template-columns: minmax(330px, 390px) minmax(520px, 1fr);
  background: var(--surface);
}
.video-review-drawer.layout-workbench.video-shape-landscape .td-drawer-workbench,
.video-review-drawer.layout-workbench .td-drawer-workbench.video-landscape {
  grid-template-columns: minmax(520px, 56%) minmax(480px, 1fr);
}
.video-review-drawer.layout-workbench .td-review-video-stage {
  height: 100%;
  min-height: 0;
  padding: 18px 18px 14px;
  grid-template-rows: minmax(0, 1fr) auto auto auto;
  align-content: stretch;
  gap: 9px;
  border-right-color: #E8EAEF;
  background: var(--surface-sunk);
}
.video-review-drawer.layout-workbench .td-video-stage-metrics {
  width: 100%;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc {
  min-height: 52px;
  padding: 9px 9px;
  border-color: #E8EAEF;
  background: var(--surface);
  border-radius: 10px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
  text-align: left;
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc:first-child {
  grid-column: auto;
  min-height: 52px;
  padding: 9px 9px;
  align-items: end;
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc .k {
  color: var(--ink-3);
  font-size: 10px;
  font-weight: 780;
  line-height: 1;
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc:first-child .k {
  color: var(--ink-2);
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc:first-child .v {
  color: var(--ink);
  font-size: 21px;
  font-weight: 880;
  line-height: 1.05;
  letter-spacing: 0;
}
.video-review-drawer.layout-workbench .td-video-stage-metrics .mc:not(:first-child) .v {
  margin-top: 5px;
  color: var(--ink);
  font-size: 15px;
  font-weight: 820;
  line-height: 1.05;
  letter-spacing: 0;
}
.video-review-drawer.layout-workbench .td-video-open-actions {
  width: 100%;
  justify-self: stretch;
  display: grid;
  grid-template-columns: minmax(0, .82fr) repeat(2, minmax(0, 1fr));
  gap: 6px;
}
.video-review-drawer.layout-workbench .td-video-open-actions .td-analysis-state,
.video-review-drawer.layout-workbench .td-video-open-actions .btn {
  min-height: 34px;
  border-radius: 9px;
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
  font-size: 11px;
}
.video-review-drawer.layout-workbench .td-stage-primary-actions {
  width: 100%;
  justify-self: stretch;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
}
.video-review-drawer.layout-workbench .td-stage-primary-actions .td-analysis-state,
.video-review-drawer.layout-workbench .td-stage-primary-actions .td-source-link {
  min-height: 36px;
  border-radius: 10px;
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
  font-size: 11px;
}
.video-review-drawer.layout-workbench .td-review-video-shell {
  align-self: stretch;
  justify-self: center;
  width: min(100%, 310px);
  border: 1px solid rgba(21,24,30,.08);
  box-shadow: 0 12px 28px -24px rgba(21,24,30,.45);
}
.video-review-drawer.layout-workbench .td-review-video-shell.portrait {
  width: auto;
  height: min(520px, 100%);
  min-height: 380px;
  max-height: 100%;
}
.video-review-drawer.layout-workbench.video-shape-landscape .td-review-video-shell,
.video-review-drawer.layout-workbench .td-review-video-shell.landscape {
  width: min(100%, 660px);
  height: auto;
  align-self: center;
}
.video-review-drawer.layout-workbench .td-cover-note {
  left: 10px;
  right: 10px;
  bottom: 10px;
  border-radius: 8px;
  padding: 7px 9px;
  font-size: 10.8px;
}
.video-review-drawer.layout-workbench .td-stage-actions {
  width: 100%;
  justify-self: stretch;
  gap: 4px;
  padding: 5px;
  border-color: #E8EAEF;
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-workbench .td-stage-actions button {
  min-height: 42px;
  border-radius: 9px;
  color: var(--ink-2);
}
.video-review-drawer.layout-workbench .td-stage-actions span {
  font-size: 10.8px;
  font-weight: 820;
}
.video-review-drawer.layout-workbench .td-stage-actions em {
  font-size: 9.5px;
}
.video-review-drawer.layout-workbench .td-review-detail-scroll {
  min-height: 0;
  height: 100%;
  padding: 20px 22px;
  background: var(--surface);
  gap: 12px;
}
.video-review-drawer.layout-workbench .td-review-detail-scroll.panel-comments {
  height: calc(100vh - 68px);
  overflow: hidden;
}
.video-review-drawer.layout-workbench .td-panel-content {
  gap: 12px;
}
.video-review-drawer.layout-workbench .td-section-card,
.video-review-drawer.layout-workbench .td-block {
  border-color: #E8EAEF;
  border-radius: 13px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-workbench .td-section-focus {
  border-color: #E8EAEF !important;
  box-shadow: 0 1px 2px rgba(22,24,29,.035) !important;
}
.video-review-drawer.layout-workbench .td-section-head {
  padding-left: 11px;
  padding-bottom: 9px;
}
.video-review-drawer.layout-workbench .td-section-head span {
  font-size: 10.2px;
  letter-spacing: .12em;
}
.video-review-drawer.layout-workbench .td-section-head b {
  font-size: 15px;
  font-weight: 850;
  letter-spacing: 0;
}
.video-review-drawer.layout-workbench .td-section-head em {
  max-width: 520px;
  color: var(--ink-3);
  font-size: 11.5px;
}
.video-review-drawer.layout-workbench .td-comments-section .word-cloud-block {
  padding: 12px;
  border: 1px solid #ECEFF3;
  border-radius: 12px;
  background: var(--surface-sunk);
}
.video-review-drawer.layout-workbench .td-comments-section .word-cloud {
  max-height: 118px;
}
.video-review-drawer.layout-workbench .comment-list {
  border-color: #E8EAEF;
  border-radius: 12px;
}
.video-review-drawer.layout-workbench .comment-item {
  padding: 11px 13px;
  border-bottom-color: #ECEFF3;
}
.video-review-drawer.layout-workbench .comment-main {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.6;
}
.video-review-drawer.layout-workbench .comment-meta {
  margin-top: 6px;
  color: var(--ink-3);
  font-size: 10.5px;
}
.video-review-drawer.layout-workbench .comment-replies {
  margin-left: 10px;
  border-left-color: #D7DFF4;
  background: #F8F9FB;
}
.video-review-drawer.layout-workbench .td-copyable-actions {
  margin-top: 0;
  border-color: #E8EAEF;
  background: var(--surface);
  border-radius: 13px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-modal {
  top: 50%;
  left: 50%;
  right: auto;
  bottom: auto;
  width: min(1180px, calc(100vw - 64px));
  max-width: calc(100vw - 32px);
  max-height: calc(100vh - 64px);
  border: 1px solid rgba(232, 234, 239, .92);
  border-radius: 18px;
  overflow: hidden;
  transform: translate(-50%, calc(-50% + 18px)) scale(.98);
  box-shadow: 0 30px 70px -24px rgba(21,24,30,.5);
}
.video-review-drawer.layout-modal.open {
  transform: translate(-50%, -50%) scale(1);
}
.video-review-drawer.layout-modal.video-shape-landscape {
  width: min(1320px, calc(100vw - 64px));
}
.video-review-drawer.layout-modal .drawer-body {
  max-height: calc(100vh - 142px);
  overflow: hidden;
}
.video-review-drawer.layout-modal .td-drawer-workbench,
.video-review-drawer.layout-modal .td-drawer-workbench.video-landscape {
  min-height: 0;
  height: min(760px, calc(100vh - 142px));
  grid-template-columns: minmax(300px, 42%) minmax(0, 1fr);
}
.video-review-drawer.layout-modal .td-review-video-stage {
  position: relative;
  height: 100%;
  min-height: 0;
}
.video-review-drawer.layout-modal .td-review-detail-scroll,
.video-review-drawer.layout-modal .td-review-detail-scroll.panel-comments {
  min-height: 0;
  height: 100%;
  overflow-y: auto;
}
.video-review-drawer.layout-modal .td-review-video-shell {
  width: min(100%, clamp(250px, 22vw, 340px));
}
.video-review-drawer.layout-modal .td-review-video-shell.portrait {
  width: auto;
  height: min(100%, 50vh);
}
.video-review-drawer.layout-modal.video-shape-landscape .td-review-video-shell {
  width: min(100%, clamp(420px, 38vw, 620px));
}

/* 视频详情弹窗：参考账单页的克制工作台风格，和右侧抽屉模式分开打磨 */
.video-review-drawer.layout-modal {
  width: min(1140px, 94vw);
  height: min(880px, 92vh);
  max-height: 92vh;
  border-color: rgba(227, 230, 235, .96);
  background: var(--surface);
  box-shadow: 0 26px 58px -30px rgba(21,24,30,.5), 0 1px 2px rgba(21,24,30,.06);
}
.video-review-drawer.layout-modal.video-shape-landscape {
  width: min(1180px, 94vw);
}
.video-review-drawer.layout-modal .drawer-head {
  min-height: 74px;
  padding: 15px 18px 14px 20px;
  background: var(--surface);
  border-bottom-color: #E3E6EB;
  align-items: center;
}
.video-review-drawer.layout-modal .drawer-head > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.video-review-drawer.layout-modal .drawer-head .sec-title {
  max-width: min(720px, 74vw);
  color: var(--ink);
  font-size: 19px;
  font-weight: 860;
  line-height: 1.24;
  letter-spacing: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-review-drawer.layout-modal .drawer-head .muted {
  color: var(--ink-3) !important;
}
.video-review-drawer.layout-modal .drawer-close {
  width: 34px;
  height: 34px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
}
.video-review-drawer.layout-modal .drawer-close:hover {
  background: var(--brand-soft);
  border-color: var(--brand-line);
  color: var(--brand);
}
.video-review-drawer.layout-modal .drawer-body {
  flex: 1 1 auto;
  height: auto;
  max-height: none;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
.video-review-drawer.layout-modal .td-drawer-workbench,
.video-review-drawer.layout-modal .td-drawer-workbench.video-landscape {
  height: 100%;
  min-height: 0;
  grid-template-columns: minmax(356px, 44%) minmax(0, 1fr);
  gap: 0;
  background: var(--surface);
  align-items: stretch;
}
.video-review-drawer.layout-modal .td-review-video-stage {
  height: 100%;
  min-height: 0;
  padding: 18px 18px 14px;
  border-right-color: #E3E6EB;
  background: linear-gradient(180deg, rgba(45,91,214,.075) 0%, rgba(45,91,214,0) 34%), #F8F9FB;
  grid-template-rows: auto auto auto minmax(180px, 1fr) auto;
  gap: 10px;
  overflow: hidden;
}
.video-review-drawer.layout-modal .td-video-stage-metrics {
  width: 100%;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  justify-self: stretch;
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc {
  min-height: 58px;
  padding: 9px 8px;
  background: rgba(255,255,255,.86);
  border-color: #E8EAEF;
  border-radius: 12px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
  text-align: left;
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc:first-child {
  grid-column: 1 / -1;
  min-height: 76px;
  display: grid;
  align-content: end;
  justify-content: stretch;
  gap: 4px;
  padding: 3px 2px 5px;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc .k {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 760;
  line-height: 1;
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc:first-child .k {
  color: var(--brand);
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc:first-child .v {
  color: var(--brand);
  font-size: clamp(38px, 4.2vw, 54px);
  font-weight: 880;
  line-height: .94;
  letter-spacing: 0;
}
.video-review-drawer.layout-modal .td-video-stage-metrics .mc:not(:first-child) .v {
  margin-top: 6px;
  color: var(--ink);
  font-size: 17px;
  font-weight: 820;
}
.video-review-drawer.layout-modal .td-stage-primary-actions {
  width: 100%;
  justify-self: stretch;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.video-review-drawer.layout-modal .td-stage-primary-actions .td-analysis-state,
.video-review-drawer.layout-modal .td-stage-primary-actions .td-source-link {
  min-height: 36px;
  border-radius: 10px;
  background: rgba(255,255,255,.9);
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-modal .td-stage-primary-actions .td-analysis-state:only-child {
  grid-column: 1 / -1;
}
.video-review-drawer.layout-modal .td-layout-switch {
  width: min(100%, 260px);
  justify-self: start;
  padding: 4px;
  border-color: #E3E6EB;
  border-radius: 12px;
  box-shadow: none;
}
.video-review-drawer.layout-modal .td-layout-switch button {
  min-height: 30px;
  border-radius: 8px;
  font-size: 11px;
}
.video-review-drawer.layout-modal .td-review-video-shell {
  align-self: stretch;
  width: min(100%, 318px);
  max-height: 100%;
  border-radius: 0;
  box-shadow: 0 1px 2px rgba(22,24,29,.08);
}
.video-review-drawer.layout-modal .td-review-video-shell.portrait {
  width: auto;
  height: 100%;
  max-height: 100%;
}
.video-review-drawer.layout-modal.video-shape-landscape .td-review-video-shell {
  width: min(100%, 620px);
  height: auto;
  align-self: center;
}
.video-review-drawer.layout-modal .td-stage-actions {
  width: 100%;
  justify-self: stretch;
  gap: 5px;
  padding: 6px;
  border-color: #E3E6EB;
  border-radius: 14px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-modal .td-stage-actions button {
  min-height: 48px;
  border-radius: 10px;
}
.video-review-drawer.layout-modal .td-stage-actions span {
  font-size: 10.8px;
}
.video-review-drawer.layout-modal .td-review-detail-scroll,
.video-review-drawer.layout-modal .td-review-detail-scroll.panel-comments {
  height: 100%;
  min-height: 0;
  padding: 18px 20px;
  background: var(--surface);
  overflow-y: auto;
  overscroll-behavior: contain;
  align-content: start;
}
.video-review-drawer.layout-modal .td-panel-content,
.video-review-drawer.layout-modal .td-panel-content.panel-comments {
  height: auto;
  min-height: 0;
  display: grid;
  grid-template-rows: none;
  gap: 12px;
  align-content: start;
}
.video-review-drawer.layout-modal .td-section-card,
.video-review-drawer.layout-modal .td-block {
  border-color: #E3E6EB;
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.video-review-drawer.layout-modal .td-section-focus {
  border-color: #E3E6EB !important;
  box-shadow: 0 1px 2px rgba(22,24,29,.035) !important;
}
.video-review-drawer.layout-modal .td-section-head {
  padding-bottom: 9px;
  border-bottom-color: #EEF0F4;
}
.video-review-drawer.layout-modal .td-section-head b {
  font-size: 15.5px;
  font-weight: 840;
  letter-spacing: 0;
}
.video-review-drawer.layout-modal .td-section-head em {
  max-width: 430px;
}
.video-review-drawer.layout-modal .td-comments-section .word-cloud-block {
  padding: 13px;
  border: 1px solid #ECEFF3;
  border-radius: 12px;
  background: #F8F9FB;
}
.video-review-drawer.layout-modal .td-comments-section .word-cloud {
  max-height: 120px;
}
.video-review-drawer.layout-modal .td-panel-content.panel-comments .td-comments-section {
  height: auto;
  min-height: 0;
  grid-template-rows: none;
  overflow: visible;
}
.video-review-drawer.layout-modal .td-panel-content.panel-comments .comment-list {
  overflow: visible;
}
.video-review-drawer.layout-modal .comment-item {
  border-color: #E8EAEF;
  background: var(--surface);
}
.video-review-drawer.layout-modal .td-copyable-actions {
  margin-top: 0;
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
  border-radius: 14px;
  box-shadow: 0 1px 2px rgba(22,24,29,.035);
}
.td-sub3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.td-view-stats {
  margin-top: 0;
}
.td-mini-card {
  min-height: 58px; display: grid; align-content: center; justify-items: center; gap: 4px;
  background: var(--surface-sunk); border: 1px solid var(--line-soft); border-radius: 10px; padding: 10px;
}
.td-mini-card span { color: var(--ink-3); font-size: 10.5px; }
.td-mini-card b { color: var(--ink); font-size: 16px; line-height: 1; font-weight: 760; font-variant-numeric: tabular-nums; }
.td-block { margin-top: 20px; }
.td-block > .eyebrow { margin-bottom: 11px; }
.td-section-card {
  border: 1px solid var(--line); background: var(--surface);
  border-radius: 15px; padding: 14px; box-shadow: var(--shadow-sm);
}
.td-section-focus {
  border-color: var(--line) !important;
  box-shadow: var(--shadow-sm) !important;
  transition: border-color .2s var(--motion-ease), box-shadow .2s var(--motion-ease);
}
.td-section-card > .eyebrow { margin-bottom: 10px; }
.day-axis { display: flex; justify-content: space-between; font-size: 10px; color: var(--ink-4); margin-top: 5px; }
.td-insight-grid {
  display: grid;
  gap: 10px;
}
.td-insight-block {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
}
.td-insight-title {
  color: var(--ink);
  font-size: 12px;
  font-weight: 800;
  margin-bottom: 10px;
}
.td-trigger-text {
  color: var(--ink-2);
  font-size: 12.5px;
  line-height: 1.55;
}
.td-comments-section .word-cloud-block {
  background: var(--surface);
  padding: 14px;
}
.td-comments-section .word-cloud {
  max-height: 142px;
  overflow: hidden;
}
.td-panel-content.panel-comments .td-comments-section {
  height: 100%;
  min-height: 0;
  margin-top: 0;
  grid-template-rows: auto auto minmax(0, 1fr);
  overflow: hidden;
}
.td-panel-content.panel-comments .comment-list {
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.td-copyable-actions {
  margin-top: 16px;
}
.td-panel-content.panel-comments .td-copyable-actions {
  margin-top: 0;
}
.td-ops-technical {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 13px;
  overflow: hidden;
  min-width: 0;
}
.td-ops-technical summary {
  min-height: 46px;
  padding: 11px 13px;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  list-style: none;
  color: var(--ink-2);
}
.td-ops-technical summary::-webkit-details-marker {
  display: none;
}
.td-ops-technical summary span {
  flex: 0 0 auto;
  color: var(--ink);
  font-size: 12px;
  font-weight: 820;
}
.td-ops-technical summary em {
  min-width: 0;
  flex: 1 1 auto;
  color: var(--ink-4);
  font-style: normal;
  font-size: 11px;
  line-height: 1.35;
  text-align: right;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.td-ops-technical summary::after {
  content: "";
  flex: 0 0 auto;
  width: 7px;
  height: 7px;
  border-right: 1.5px solid var(--ink-4);
  border-bottom: 1.5px solid var(--ink-4);
  transform: rotate(45deg);
  transition: transform .18s var(--motion-ease), border-color .18s var(--motion-ease);
}
.td-ops-technical[open] {
  background: #FBFCFF;
  border-color: var(--line);
  box-shadow: var(--shadow-sm);
}
.td-ops-technical[open] summary {
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface);
}
.td-ops-technical[open] summary::after {
  border-color: var(--brand);
  transform: translateY(2px) rotate(225deg);
}
.td-ops-technical > .td-section-card,
.td-ops-technical > .td-block {
  margin: 12px;
  box-shadow: none;
  border-color: var(--line-soft);
}
.td-ops-technical > .td-block {
  margin-top: 12px;
}
.td-tech-quick-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 12px;
}
.td-tech-quick-item {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 11px;
  padding: 10px;
  display: grid;
  gap: 4px;
}
.td-tech-quick-item span {
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 760;
}
.td-tech-quick-item b {
  color: var(--ink);
  font-size: 13px;
  font-weight: 830;
  line-height: 1.2;
}
.td-tech-quick-item em {
  color: var(--ink-4);
  font-size: 10.8px;
  font-style: normal;
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.asset-panel { display: grid; grid-template-columns: 1fr; gap: 12px; align-items: stretch;
  border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 12px;
  min-width: 0; overflow: hidden; }
.asset-panel > * { min-width: 0; }
.asset-title { font-size: 13px; font-weight: 720; color: var(--ink); }
.asset-sub { font-size: 12px; color: var(--ink-3); line-height: 1.45; margin-top: 3px; }
.asset-raw { font-size: 10.5px; color: var(--ink-4); margin-top: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.asset-variants { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; }
.asset-variants span { display: inline-flex; align-items: center; min-height: 22px; padding: 0 7px; border-radius: 999px;
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-3); font-size: 10.5px; }
.asset-local { margin-top: 7px; font-size: 11px; line-height: 1.45; border-radius: 9px; padding: 8px 9px;
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-2); }
.asset-local.ok { border-color: var(--ok-line); background: var(--ok-soft); color: var(--ok); }
.asset-local.warn { border-color: rgba(194, 117, 36, .24); background: rgba(194, 117, 36, .08); color: var(--warn); }
.asset-local.loading { color: var(--ink-3); }
.asset-local span { display: block; color: var(--ink-3); word-break: break-all; overflow-wrap: anywhere; margin-top: 3px; }
.asset-actions { display: flex; flex-direction: column; gap: 8px; align-items: stretch; }
.asset-actions .btn { justify-content: center; white-space: nowrap; }
.asset-disabled-reason {
  border: 1px solid var(--warn-line);
  background: var(--warn-soft);
  color: #7E6326;
  border-radius: 9px;
  padding: 8px 9px;
  font-size: 10.8px;
  line-height: 1.42;
}
.asset-quality { display: grid; gap: 5px; border: 1px solid var(--line-soft); background: var(--surface); border-radius: 10px; padding: 8px; }
.asset-quality span { font-size: 10.5px; color: var(--ink-3); font-weight: 650; }
.asset-quality select { width: 100%; border: 1px solid var(--line); background: var(--surface-sunk); color: var(--ink);
  border-radius: 8px; padding: 7px 8px; font: inherit; outline: none; }
.asset-quality select:focus { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.asset-quality em { font-style: normal; color: var(--ink-4); font-size: 10.5px; line-height: 1.35; }
.asset-admin-details {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.62);
  border-radius: 10px;
  overflow: hidden;
}
.asset-admin-details summary {
  min-height: 34px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  list-style: none;
  color: var(--ink-4);
  font-size: 11px;
  font-weight: 760;
}
.asset-admin-details summary::-webkit-details-marker {
  display: none;
}
.asset-admin-details summary::after {
  content: "";
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--ink-4);
  border-bottom: 1.5px solid var(--ink-4);
  transform: rotate(45deg);
}
.asset-admin-details[open] {
  padding-bottom: 10px;
}
.asset-admin-details[open] summary {
  margin-bottom: 8px;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface);
}
.asset-admin-details[open] summary::after {
  border-color: var(--brand);
  transform: translateY(2px) rotate(225deg);
}
.asset-admin-details .asset-variants,
.asset-admin-details .asset-raw,
.asset-admin-details .btn {
  margin-left: 10px;
  margin-right: 10px;
}
.video-review-drawer .asset-sub,
.video-review-drawer .asset-raw,
.video-review-drawer .asset-variants span,
.video-review-drawer .asset-disabled-reason,
.video-review-drawer .transcript-text,
.video-review-drawer .utterance-text,
.video-review-drawer .comment-main {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.video-review-drawer .asset-actions .btn {
  white-space: normal;
}
.comment-list { border: 1px solid var(--line-soft); border-radius: 10px; overflow: hidden; background: var(--surface); }
.comment-item { padding: 10px 12px; border-bottom: 1px solid var(--line-soft); }
.comment-item:last-child { border-bottom: 0; }
.comment-main { font-size: 12.5px; line-height: 1.45; color: var(--ink); }
.comment-meta { display: flex; gap: 10px; margin-top: 5px; font-size: 10.5px; color: var(--ink-4); }
.comment-replies {
  margin-top: 9px;
  margin-left: 14px;
  padding: 8px 10px;
  border-left: 2px solid var(--line);
  background: var(--surface-sunk);
  border-radius: 0 10px 10px 0;
  display: grid;
  gap: 8px;
}
.comment-replies-title {
  color: var(--ink-2);
  font-size: 10.5px;
  font-weight: 820;
}
.comment-reply-item {
  padding-top: 8px;
  border-top: 1px solid var(--line-soft);
}
.comment-reply-item:first-of-type {
  padding-top: 0;
  border-top: 0;
}
.comment-reply-main {
  color: var(--ink-2);
  font-size: 12px;
  line-height: 1.45;
}
.comment-foot { padding: 9px 12px; font-size: 11px; color: var(--brand); background: var(--brand-soft); border-top: 1px solid var(--brand-line); }
.empty-state-mini { border: 1px dashed var(--line); border-radius: 10px; padding: 12px; font-size: 12px; color: var(--ink-3); background: var(--surface-sunk); line-height: 1.5; }
.work-label-badge { display: inline-flex; align-items: center; max-width: 160px; height: 19px; padding: 0 7px; border-radius: 999px;
  font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border: 1px solid var(--line-soft); }
.work-label-badge.ready { background: var(--ok-soft); border-color: var(--ok-line); color: var(--ok); }
.work-label-badge.draft { background: var(--surface-sunk); color: var(--ink-3); }
.work-transcript-badge { display: inline-flex; align-items: center; height: 19px; padding: 0 7px; border-radius: 999px;
  font-size: 10.5px; color: var(--brand); background: var(--brand-soft); border: 1px solid var(--brand-line); }
.work-download-badge { display: inline-flex; align-items: center; height: 19px; padding: 0 7px; border-radius: 999px;
  font-size: 10.5px; color: var(--ok); background: var(--ok-soft); border: 1px solid var(--ok-line); }
.work-tag { display: inline-flex; align-items: center; max-width: 92px; height: 19px; padding: 0 7px; border-radius: 999px;
  font-size: 10.5px; color: var(--ink-3); background: var(--surface-sunk); border: 1px solid var(--line-soft);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

@media (max-width: 1180px) {
  .video-review-drawer {
    width: min(980px, 82vw);
  }
  .video-review-drawer.video-shape-landscape {
    width: min(1080px, 92vw);
  }
  .video-review-drawer .td-drawer-workbench {
    grid-template-columns: minmax(280px, 42%) minmax(0, 1fr);
  }
  .video-review-drawer .td-drawer-workbench.video-landscape {
    grid-template-columns: minmax(380px, 54%) minmax(0, 1fr);
  }
  .td-review-video-stage {
    padding: 18px;
  }
  .td-review-video-shell {
    width: min(100%, clamp(280px, 30vw, 360px));
  }
  .td-review-video-shell.landscape {
    width: min(100%, clamp(360px, 48vw, 560px));
  }
}

@media (max-width: 900px) {
  .video-review-drawer {
    width: 100vw;
    max-width: 100vw;
  }
  .video-review-drawer.layout-modal {
    width: calc(100vw - 24px);
    max-width: calc(100vw - 24px);
    max-height: calc(100vh - 24px);
  }
  .video-review-drawer.layout-modal .drawer-body {
    max-height: calc(100vh - 98px);
    overflow: auto;
  }
  .video-review-drawer .drawer-body {
    overflow: auto;
  }
  .video-review-drawer .td-drawer-workbench {
    height: auto;
    display: grid;
    grid-template-columns: 1fr;
    overflow: visible;
    padding-bottom: 18px;
  }
  .video-review-drawer .td-drawer-workbench.video-landscape {
    grid-template-columns: 1fr;
  }
  .video-review-drawer.layout-modal .td-drawer-workbench,
  .video-review-drawer.layout-modal .td-drawer-workbench.video-landscape {
    height: auto;
    grid-template-columns: 1fr;
  }
  .td-review-detail-scroll {
    grid-column: 1;
    height: auto;
    overflow: visible;
    padding: 16px;
  }
  .td-review-detail-scroll.panel-comments,
  .td-panel-content.panel-comments,
  .td-panel-content.panel-comments .td-comments-section {
    height: auto;
    overflow: visible;
  }
  .td-panel-content.panel-comments {
    grid-template-rows: none;
  }
  .td-panel-content.panel-comments .comment-list {
    overflow: visible;
  }
  .td-review-video-stage {
    grid-column: 1 !important;
    grid-row: auto;
    height: auto;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .video-review-drawer.layout-modal .td-review-video-stage {
    height: auto;
  }
  .td-review-video-shell {
    width: min(78vw, 420px);
    max-height: 70vh;
  }
  .td-review-video-shell.landscape {
    width: min(100%, 620px);
    justify-self: center;
  }
  .td-video-stage-metrics {
    width: min(100%, 520px);
  }
  .td-stage-actions {
    width: min(100%, 520px);
  }
  .td-detail-summary-pills {
    grid-template-columns: 1fr;
  }
  .td-section-head {
    flex-direction: column;
    align-items: stretch;
  }
  .td-section-head i {
    width: fit-content;
  }
}
.metric-pending-badge {
  display: inline-flex; align-items: center; height: 19px; padding: 0 7px; border-radius: 999px;
  font-size: 10.5px; color: var(--warn); background: var(--warn-soft); border: 1px solid var(--warn-line);
}
.wstat .sv.pending, .td-metrics .v.pending { color: var(--warn); font-size: 12px; letter-spacing: 0; white-space: nowrap; }
.transcript-block { margin: 0; }
.transcript-panel { border: 1px solid var(--brand-line); background: rgba(232, 244, 238, .64);
  border-radius: 10px; padding: 12px; }
.transcript-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 10px; }
.transcript-title { font-size: 13px; font-weight: 750; color: var(--ink); }
.transcript-meta { display: flex; align-items: center; gap: 6px; margin-top: 3px; font-size: 11px; color: var(--ink-3); }
.transcript-timed-block,
.transcript-full-block { display: grid; gap: 8px; }
.transcript-full-block { margin-top: 12px; }
.transcript-preview-block {
  display: grid;
  gap: 8px;
}
.transcript-subtitle {
  font-size: 11.5px;
  font-weight: 780;
  color: var(--ink-2);
}
.transcript-text { border: 1px solid var(--line-soft); background: var(--surface); border-radius: 9px;
  padding: 10px 11px; font-size: 13px; line-height: 1.68; color: var(--ink); white-space: pre-wrap; }
.utterance-list { display: grid; gap: 7px; max-height: 300px; overflow: auto; padding-right: 2px; }
.utterance-list.compact {
  max-height: none;
  overflow: visible;
}
.utterance-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 9px; align-items: start;
  border: 1px solid var(--line-soft); background: rgba(255,255,255,.55); border-radius: 9px; padding: 8px 9px; }
.utterance-time { font-size: 10.5px; color: var(--ink-4); font-variant-numeric: tabular-nums; padding-top: 1px; }
.utterance-text { font-size: 12.5px; line-height: 1.5; color: var(--ink-2); }
.transcript-full-details {
  margin-top: 10px;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.58);
  border-radius: 10px;
  overflow: hidden;
}
.transcript-full-details summary {
  min-height: 34px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  list-style: none;
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 780;
}
.transcript-full-details summary::-webkit-details-marker {
  display: none;
}
.transcript-full-details summary::after {
  content: "";
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--ink-4);
  border-bottom: 1.5px solid var(--ink-4);
  transform: rotate(45deg);
}
.transcript-full-details[open] {
  padding-bottom: 10px;
}
.transcript-full-details[open] summary {
  margin-bottom: 10px;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface);
  color: var(--ink);
}
.transcript-full-details[open] summary::after {
  border-color: var(--brand);
  transform: translateY(2px) rotate(225deg);
}
.transcript-full-details .transcript-timed-block,
.transcript-full-details .transcript-full-block {
  margin-left: 10px;
  margin-right: 10px;
}
.content-label-panel { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 12px; }
.workflow-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.workflow-step { height: 26px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface);
  display: grid; place-items: center; font-size: 11px; color: var(--ink-3); font-weight: 650; }
.workflow-step.on { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); }
.label-advanced {
  margin-top: 10px;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.64);
  border-radius: 10px;
  overflow: hidden;
}
.label-advanced summary {
  min-height: 36px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  cursor: pointer;
  list-style: none;
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 760;
}
.label-advanced summary::-webkit-details-marker {
  display: none;
}
.label-advanced summary::after {
  content: "";
  flex: 0 0 auto;
  width: 6px;
  height: 6px;
  border-right: 1.5px solid var(--ink-4);
  border-bottom: 1.5px solid var(--ink-4);
  transform: rotate(45deg);
  transition: transform .18s var(--motion-ease), border-color .18s var(--motion-ease);
}
.label-advanced[open] summary {
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface);
  color: var(--ink);
}
.label-advanced[open] summary::after {
  border-color: var(--brand);
  transform: translateY(2px) rotate(225deg);
}
.label-advanced .label-grid {
  padding: 10px;
}
.label-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.label-grid label, .label-wide { display: grid; gap: 6px; font-size: 11px; color: var(--ink-3); font-weight: 650; }
.label-wide { margin-top: 10px; }
.label-select, .label-input, .label-textarea { width: 100%; border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 9px; padding: 8px 9px; font: inherit; outline: none; }
.label-select:focus, .label-input:focus, .label-textarea:focus { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.label-textarea { min-height: 72px; resize: vertical; line-height: 1.45; }
.label-actions { display: flex; justify-content: space-between; gap: 12px; align-items: center; margin-top: 11px; }
.label-actions .muted { font-size: 11.5px; line-height: 1.45; }
.label-save-state { margin-top: 8px; border-radius: 9px; padding: 8px 9px; font-size: 11.5px; }
.label-save-state.ok { background: var(--ok-soft); color: var(--ok); border: 1px solid var(--ok-line); }
.label-save-state.warn { background: rgba(194, 117, 36, .09); color: var(--warn); border: 1px solid rgba(194, 117, 36, .2); }
@media (max-width: 560px) {
  .td-tech-quick-grid {
    grid-template-columns: 1fr;
  }
  .asset-actions { flex-direction: row; flex-wrap: wrap; }
  .td-workbench-hero { grid-template-columns: 1fr; }
  .td-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .td-flow span { justify-content: center; }
  .td-status-line { border-radius: 12px; align-items: flex-start; flex-direction: column; }
  .td-status-line > span:last-child { white-space: normal; }
}
@media (max-width: 560px) { .utterance-row { grid-template-columns: 1fr; gap: 4px; } .td-sub3 { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .label-grid, .workflow-steps { grid-template-columns: 1fr; } .label-actions { align-items: stretch; flex-direction: column; } }

/* ============================================================
   情报首页（重设后的运营主控台）
   ============================================================ */
.home-head { display: flex; align-items: flex-end; gap: 18px; margin-bottom: 26px; }
.home-greet { font-size: 26px; font-weight: 750; letter-spacing: -.01em; }
.home-greet .date { font-size: 12.5px; font-weight: 500; color: var(--ink-3); margin-left: 10px; letter-spacing: 0; }
.home-actions { margin-left: auto; display: flex; gap: 10px; }
.home-hint { font-size: 12px; color: var(--ink-3); background: var(--surface-sunk); border: 1px solid var(--line-soft); border-radius: 999px; padding: 7px 11px; }
.block-sub { font-size: 11.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.4; }
@media (max-width: 720px) {
  .home-head { align-items: stretch; flex-direction: column; }
  .home-actions { margin-left: 0; flex-wrap: wrap; }
}

/* 首页主入口 */
/* 首页路径导航带 */
.path-guide { margin: 2px 0 16px; }
.path-guide-head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 10px; flex-wrap: wrap; }
.path-guide-head .bt { font-size: 15px; font-weight: 800; }
.path-guide-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 920px) { .path-guide-grid { grid-template-columns: 1fr; } }
.path-guide-card { border: 1px solid var(--line); background: var(--surface); border-radius: 15px;
  box-shadow: 0 1px 2px rgba(22,24,29,0.04); padding: 15px 17px; text-align: left; color: var(--ink);
  display: flex; flex-direction: column; gap: 6px; cursor: pointer;
  transition: border-color .15s ease, box-shadow .15s ease; }
.path-guide-card:hover { border-color: var(--brand-line); box-shadow: 0 8px 22px -14px rgba(22,24,29,0.18); }
.path-guide-top { display: flex; align-items: center; gap: 8px; }
.path-guide-ic { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand); flex: none; }
.path-guide-step { font-size: 11px; font-weight: 650; letter-spacing: .12em; color: var(--ink-3); text-transform: uppercase; }
.path-guide-card b { font-size: 14.5px; font-weight: 700; }
.path-guide-desc { font-size: 12px; color: var(--ink-3); line-height: 1.5; }
.path-guide-action { margin-top: auto; display: inline-flex; align-items: center; gap: 3px;
  font-size: 12.5px; font-weight: 650; color: var(--brand); }

.entry-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
@media (max-width: 920px) { .entry-grid { grid-template-columns: 1fr; } }
.entry-card { border: 1px solid var(--line); background: var(--surface); border-radius: 15px;
  box-shadow: 0 1px 2px rgba(22,24,29,0.04); padding: 18px 20px; text-align: left; color: var(--ink); display: grid; grid-template-columns: auto 1fr;
  column-gap: 14px; row-gap: 3px; cursor: pointer; transition: border-color .15s ease, box-shadow .15s ease; min-height: 78px; align-items: center; }
.entry-card:hover { border-color: #C9D4EE; transform: none; box-shadow: 0 8px 22px -14px rgba(22,24,29,0.18); }
.entry-card.primary { border-color: var(--line); background: var(--surface); }
.entry-ic { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: var(--brand-soft); color: var(--brand);
  grid-row: span 2; }
.entry-card.primary .entry-ic { background: var(--brand); color: #fff; }
.entry-main { font-size: 14.5px; font-weight: 700; align-self: end; }
.entry-sub { font-size: 12px; color: var(--ink-3); line-height: 1.45; }

/* 未落地功能状态入口 */
.pending-capabilities {
  margin: 12px 0 22px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 14px;
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.pending-capabilities-summary {
  min-height: 58px;
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) auto 18px;
  gap: 10px;
  align-items: center;
  padding: 11px 14px;
  cursor: pointer;
  list-style: none;
}
.pending-capabilities-summary::-webkit-details-marker { display: none; }
.pending-capabilities-summary:hover { background: var(--surface-sunk); }
.pending-capabilities-summary-ic {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  display: grid;
  place-items: center;
  background: var(--brand-soft);
  color: var(--brand);
}
.pending-capabilities-summary-copy {
  display: grid;
  gap: 2px;
  min-width: 0;
}
.pending-capabilities-summary-copy b { font-size: 13px; font-weight: 750; }
.pending-capabilities-summary-copy em {
  font-size: 11px;
  line-height: 1.35;
  font-style: normal;
  color: var(--ink-3);
}
.pending-capabilities-chevron {
  display: grid;
  place-items: center;
  color: var(--ink-3);
  transition: transform .16s ease;
}
.pending-capabilities[open] .pending-capabilities-chevron { transform: rotate(180deg); }
.pending-capabilities-body {
  border-top: 1px solid var(--line-soft);
  padding: 10px 14px 12px;
}
.pending-capabilities-note {
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.45;
}
.pending-capability-list {
  display: grid;
  gap: 0;
  margin-top: 6px;
}
.pending-capability {
  min-height: 0;
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: start;
  padding: 10px 0;
  border-bottom: 1px solid var(--line-soft);
}
.pending-capability:last-child { border-bottom: 0; }
.pending-capability-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.pending-capability-ic {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  background: var(--surface-sunk);
  color: var(--brand);
}
.pending-capability-copy b {
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.3;
}
.pending-capability-copy p,
.pending-capability-copy em {
  margin: 0;
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.45;
}
.pending-capability-copy p { color: var(--ink-3); }
.pending-capability-copy em { color: var(--ink-2); }
.pending-capability-copy em span {
  margin-right: 6px;
  color: var(--ink);
  font-weight: 750;
}
.pending-capabilities-foot {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  min-height: 34px;
  padding-top: 9px;
  border-top: 1px solid var(--line-soft);
}
.pending-capabilities-foot > span {
  color: var(--ink-3);
  font-size: 11px;
}
@media (max-width: 620px) {
  .pending-capabilities-summary { grid-template-columns: 30px minmax(0, 1fr) 18px; }
  .pending-capabilities-summary > .badge { grid-column: 2; justify-self: start; }
  .pending-capabilities-chevron { grid-column: 3; grid-row: 1; }
  .pending-capability { grid-template-columns: 26px minmax(0, 1fr); }
  .pending-capability > .badge { grid-column: 2; justify-self: start; }
  .pending-capabilities-foot { justify-content: flex-start; }
}

/* —— 高流量提醒 band —— */
.alert-band { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 20px; }
@media (max-width: 980px) { .alert-band { grid-template-columns: 1fr; } }
.alert-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg);
  padding: 16px; box-shadow: var(--shadow); display: flex; flex-direction: column; gap: 10px; position: relative; overflow: hidden; }
.alert-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; }
.alert-card.hot::before { background: var(--bad); }
.alert-card.up::before { background: var(--ok); }
.alert-card.info::before { background: var(--brand); }
.alert-top { display: flex; align-items: center; gap: 9px; }
.alert-ic { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; flex-shrink: 0; }
.alert-card.hot .alert-ic { background: var(--bad-soft); color: var(--bad); }
.alert-card.up .alert-ic { background: var(--ok-soft); color: var(--ok); }
.alert-card.info .alert-ic { background: var(--brand-soft); color: var(--brand); }
.alert-tip { font-size: 11px; font-weight: 650; letter-spacing: .04em; }
.alert-card.hot .alert-tip { color: var(--bad); }
.alert-card.up .alert-tip { color: var(--ok); }
.alert-card.info .alert-tip { color: var(--brand); }
.alert-acct { font-size: 11.5px; color: var(--ink-3); margin-left: auto; }
.alert-title { font-size: 14.5px; font-weight: 650; line-height: 1.35; }
.alert-metric { display: flex; align-items: baseline; gap: 7px; }
.alert-metric .m { font-size: 24px; font-weight: 750; letter-spacing: -.5px; font-variant-numeric: tabular-nums; }
.alert-card.hot .alert-metric .m { color: var(--bad); }
.alert-card.up .alert-metric .m { color: var(--ok); }
.alert-card.info .alert-metric .m { color: var(--brand); }
.alert-metric .w { font-size: 11.5px; color: var(--ink-3); }
.alert-reason { font-size: 12px; color: var(--ink-2); line-height: 1.45; }
.alert-card .btn { align-self: flex-start; margin-top: 2px; }

/* —— 首页两栏 —— */
.home-cols { display: grid; grid-template-columns: minmax(0,1.55fr) minmax(0,1fr); gap: 18px; align-items: start; }
@media (max-width: 1020px) { .home-cols { grid-template-columns: 1fr; } }
.block { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--shadow); }
.block-head { display: flex; align-items: center; gap: 10px; padding: 18px 20px 10px; }
.block-head .bt { font-size: 15px; font-weight: 800; }
.block-head .sp { flex: 1; }
.block-body { padding: 0 20px 20px; }

/* 快捷业务目标（一行 5 个 slim 卡） */
.quick-goals { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; }
@media (max-width: 720px) { .quick-goals { grid-template-columns: repeat(2, 1fr); } }
.qgoal { border: 1px solid var(--line); border-radius: var(--r); padding: 13px 11px; cursor: pointer; transition: .15s; background: var(--surface); }
.qgoal:hover { border-color: var(--brand-line); background: var(--brand-soft); transform: translateY(-1px); }
.qgoal .qi { width: 32px; height: 32px; border-radius: 9px; background: var(--brand-soft); color: var(--brand); display: grid; place-items: center; margin-bottom: 9px; }
.qgoal:hover .qi { background: var(--brand); color: #fff; }
.qgoal .qt { font-size: 12.5px; font-weight: 600; line-height: 1.3; }

/* 我的项目 项目卡 */
.project-new-btn { padding: 7px 12px; font-size: 12.5px; }
.project-board {
  margin: 14px 2px 16px;
  border: 0;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
}
.project-board > .block-head {
  padding: 0;
  margin: 0 0 10px;
  align-items: baseline;
}
.project-board > .block-head .bt {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.02em;
}
.project-board > .block-head .bt::before {
  content: "";
  width: 3px;
  height: 16px;
  border-radius: 2px;
  background: var(--brand);
  display: inline-block;
}
.project-board > .block-head .block-sub {
  display: block;
  margin-top: 4px;
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1.35;
}
.project-board-head-controls {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  margin-left: auto;
}
.project-board-filter-menu-wrap {
  position: relative;
  display: inline-flex;
  z-index: 20;
}
.project-board-filter-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 90;
  width: 232px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.98);
  box-shadow: 0 18px 40px -24px rgba(22,24,29,.26), 0 8px 18px -16px rgba(45,91,214,.28);
  animation: ddIn var(--motion-fast) var(--motion-ease);
  transform-origin: top right;
}
.project-board-filter-menu-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 2px 2px 8px;
  color: var(--ink-2);
  font-size: 11px;
  font-weight: 750;
}
.project-board-filter-menu-head em {
  color: var(--ink-4);
  font-size: 9.5px;
  font-style: normal;
  font-weight: 500;
}
.project-board-filters {
  display: grid;
  gap: 5px;
}
.project-board-filter {
  width: 100%;
  min-height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 9px;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  background: var(--surface-sunk);
  color: var(--ink-3);
  font: inherit;
  font-size: 10.5px;
  line-height: 1;
  text-align: left;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, color .15s ease, transform .15s ease;
}
.project-board-filter:hover {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.project-board-filter.is-active {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  font-weight: 750;
}
.project-board-filter > span {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.project-board-filter-dot {
  width: 7px;
  height: 7px;
  display: inline-block;
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--brand);
  box-shadow: 0 0 0 2px rgba(45,91,214,.1);
}
.project-board-filter.self {
  border-color: #D9ECE2;
  background: #F8FCFA;
  color: #2F7A55;
}
.project-board-filter.self .project-board-filter-dot {
  background: #2F7A55;
  box-shadow: 0 0 0 2px rgba(47,122,85,.1);
}
.project-board-filter.benchmark {
  border-color: #F1E2CB;
  background: #FFFAF4;
  color: #976122;
}
.project-board-filter.benchmark .project-board-filter-dot {
  background: #976122;
  box-shadow: 0 0 0 2px rgba(151,97,34,.1);
}
.project-board-filter.agency {
  border-color: #E2DCF6;
  background: #FAF9FF;
  color: #725DB4;
}
.project-board-filter.agency .project-board-filter-dot {
  background: #725DB4;
  box-shadow: 0 0 0 2px rgba(114,93,180,.1);
}
.project-board-filter.other {
  border-color: #E5E8EC;
  background: #FAFBFC;
  color: #7C8795;
}
.project-board-filter.other .project-board-filter-dot {
  background: #9AA3AF;
  box-shadow: 0 0 0 2px rgba(124,135,149,.1);
}
.project-board-filter.self:hover,
.project-board-filter.self.is-active {
  border-color: #B7DEC8;
  background: #EDF8F2;
  color: #2F7A55;
}
.project-board-filter.benchmark:hover,
.project-board-filter.benchmark.is-active {
  border-color: #E9CEA7;
  background: #FFF4E6;
  color: #976122;
}
.project-board-filter.agency:hover,
.project-board-filter.agency.is-active {
  border-color: #CEC2ED;
  background: #F3F0FF;
  color: #725DB4;
}
.project-board-filter.other:hover,
.project-board-filter.other.is-active {
  border-color: #D4DAE1;
  background: #F3F5F7;
  color: #687483;
}
.project-board-filter:disabled {
  cursor: not-allowed;
  opacity: .45;
}
.project-board-filter em {
  color: inherit;
  font-family: var(--fs-num);
  font-size: 10px;
  font-style: normal;
  opacity: .72;
}
.project-head-note {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  white-space: nowrap;
}
.project-head-toggle {
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: var(--surface);
  color: var(--brand);
  font: inherit;
  font-size: 11px;
  font-weight: 650;
  padding: 4px 9px;
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.project-head-toggle:hover {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  text-decoration: none;
}
.project-head-toggle.open {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.project-head-collapse {
  border: 0;
  background: transparent;
  color: var(--ink-3);
  font: inherit;
  font-size: 11px;
  font-weight: 650;
  padding: 4px 2px;
  cursor: pointer;
}
.project-head-collapse:hover { color: var(--brand); }
.project-board > .block-body { padding: 0; }
.project-list-window { position: relative; overflow: visible; padding-right: 0; }
.project-list-window { animation: projectBoardRowsIn .2s var(--motion-ease); transform-origin: top center; }
.project-list-window.collapsed.multi { max-height: none; }
.project-list-window.expanded { max-height: none; overflow: visible; padding-right: 0; }
.project-list-window.expanded .project-card {
  animation: projectCardDrop .32s var(--motion-ease);
}
.project-export-dock {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
}
.project-export-dock span {
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.35;
  text-align: right;
}
.project-export-dock .btn {
  flex-shrink: 0;
}
.project-export-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.project-grid.single { grid-template-columns: 1fr; }
.project-grid.overview {
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 12px;
  align-items: stretch;
}
@keyframes projectBoardRowsIn {
  from { opacity: .55; transform: translateY(-5px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (max-width: 900px) {
  .project-board > .block-head { align-items: flex-start; flex-direction: column; gap: 10px; }
  .project-board-head-controls { width: 100%; justify-content: flex-start; margin-left: 0; }
}
@media (max-width: 860px) { .project-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .project-grid.overview { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .project-export-dock {
    align-items: stretch;
    flex-direction: column;
  }
  .project-export-dock span {
    text-align: left;
  }
  .project-export-dock .btn {
    justify-content: center;
  }
  .project-export-actions {
    justify-content: stretch;
  }
  .project-export-actions .btn {
    flex: 1 1 150px;
  }
}
.project-card {
  position: relative; border: 1px solid var(--line); background: var(--surface);
  border-radius: 18px; padding: 26px 28px; min-width: 0;
  box-shadow: 0 1px 2px rgba(22,24,29,0.04), 0 18px 40px -28px rgba(22,24,29,0.16);
  overflow: hidden;
  transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
.project-card:hover { border-color: #C9D4EE; box-shadow: 0 8px 22px -14px rgba(22,24,29,0.18); }
.project-card.active { border-color: var(--line); box-shadow: 0 1px 2px rgba(22,24,29,0.04), 0 18px 40px -28px rgba(22,24,29,0.16); }
.project-card.active::before {
  display: none;
}
.project-card + .project-card { margin-top: 0; }
.project-grid.single .project-card { padding: 26px 28px; }
.project-grid.overview .project-card {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 16px;
  border-radius: 14px;
}
.project-grid.overview .project-card-top { align-items: flex-start; gap: 10px; }
.project-grid.overview .project-card-top > div:nth-child(2) { min-width: 0; flex: 1 1 auto; }
.project-grid.overview .project-card-top > .ava { flex: 0 0 auto; }
.project-grid.overview .project-name { font-size: 14px; }
.project-grid.overview .project-meta { display: block; min-width: 0; overflow: hidden; font-size: 10.5px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.project-grid.overview .project-status-stack { flex: 0 1 44%; max-width: 44%; gap: 4px; align-items: flex-end; }
.project-grid.overview .project-status-stack .badge { max-width: 100%; overflow: hidden; font-size: 10px; padding: 3px 6px; text-overflow: ellipsis; white-space: nowrap; }
.project-grid.overview .project-brief {
  grid-template-columns: 1fr;
  gap: 10px;
  margin-top: 14px;
  padding-top: 14px;
}
.project-grid.overview .project-total-play { min-height: 0; }
.project-grid.overview .project-total-play > span { font-size: 10px; }
.project-grid.overview .project-total-line { margin-top: 5px; transform: none; }
.project-grid.overview .project-total-play b { font-size: clamp(28px, 4vw, 40px); }
.project-grid.overview .project-sparkline { display: none; }
.project-grid.overview .project-stats {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border-left: 0;
  border-top: 1px solid var(--line-soft);
  padding-top: 8px;
}
.project-grid.overview .project-stat { min-height: 46px; padding: 2px 9px; }
.project-grid.overview .project-stat > span { font-size: 10.5px; }
.project-grid.overview .project-stat b,
.project-grid.overview .project-stat.emphasis b,
.project-grid.overview .project-stat.peak b,
.project-grid.overview .project-stat.account-count b { font-size: 17px; margin-top: 4px; }
.project-grid.overview .project-stat em { font-size: 9.5px; margin-top: 3px; }
.project-grid.overview .project-stat.account-count { align-items: flex-start; text-align: left; }
.project-grid.overview .project-lower-grid { display: none; }
.project-grid.overview .project-actions { margin-top: auto; padding-top: 14px; gap: 6px; }
.project-grid.overview .project-actions .btn.primary { width: 100%; min-height: 32px; justify-content: center; font-size: 11.5px; }
.project-grid.overview .project-actions .btn:not(.primary) { display: none; }
.project-card-top { display: flex; align-items: center; gap: 13px; min-width: 0; }
.project-status-stack { margin-left: auto; display: inline-flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.project-status-stack .badge {
  background: var(--surface-sunk); border-color: var(--line-soft); color: var(--ink-2);
}
.project-status-stack .badge.brand { color: var(--brand); }
.project-name { font-size: 17px; font-weight: 700; letter-spacing: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-meta { font-size: 12px; color: var(--ink-3); margin-top: 2px; display: flex; align-items: center; gap: 5px; }
.project-brief {
  display: grid; grid-template-columns: minmax(360px, .74fr) minmax(0, 1.26fr);
  gap: 40px; margin-top: 22px; align-items: flex-end;
  border-top: 1px solid var(--line-soft); padding-top: 22px;
}
@media (max-width: 840px) { .project-brief { grid-template-columns: 1fr; } }
.project-total-play {
  border: 0; background: transparent; color: var(--accent);
  border-radius: 0; padding: 0; min-height: 88px; display: flex; flex-direction: column; justify-content: center;
}
.project-total-play > span {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: var(--ink-3);
}
.project-total-play > span i {
  font-style: normal;
  color: #C4CAD3;
  margin-left: 8px;
}
.project-total-line { display: flex; align-items: flex-end; gap: 14px; margin-top: 8px; min-width: 0; transform: translateY(-7px); }
.project-total-play b { font-family: var(--fs-num); font-size: clamp(46px, 4.8vw, 58px); line-height: .95; font-weight: 800; color: var(--brand); letter-spacing: -.035em; white-space: nowrap; }
.project-total-play em { font-style: normal; font-size: 12px; color: var(--ink-4); margin-top: 9px; line-height: 1.35; }
.project-sparkline { width: 120px; height: 42px; margin-bottom: 6px; overflow: visible; flex: 0 0 120px; }
.project-sparkline polyline { stroke: var(--accent); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.project-sparkline circle { fill: var(--accent); }
.project-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border-left: 1px solid var(--line-soft); }
@media (max-width: 760px) { .project-stats { grid-template-columns: repeat(2, 1fr); } }
.project-stat {
  min-height: 88px; border: 0; border-right: 1px solid var(--line-soft);
  background: transparent; border-radius: 0; padding: 2px 18px;
  display: flex; flex-direction: column; justify-content: center;
}
.project-stat > span { color: var(--ink-3); font-size: 11.5px; font-weight: 650; }
.project-stat b { font-family: var(--fs-num); margin-top: 6px; color: var(--ink); font-size: 24px; line-height: 1.05; font-weight: 700; letter-spacing: -.02em; }
.project-stat em { margin-top: 6px; font-style: normal; font-size: 10.5px; color: var(--ink-3); }
.project-stat .metric-label { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.project-stat .metric-label em {
  margin: 0; border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 999px; padding: 1px 6px; line-height: 1.25; white-space: nowrap;
}
.project-stat-inline {
  display: inline-flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 4px;
  margin-top: 6px;
}
.project-stat-inline b,
.project-stat-inline em {
  margin-top: 0;
}
.project-stat.emphasis b,
.project-stat.peak b { font-size: 24px; color: var(--ink); }
.project-stat.account-count { align-items: flex-end; text-align: right; }
.project-stat.account-count b { font-size: 24px; color: var(--ink); }
.project-audit-row { display: none; }
.project-audit-row > span { min-height: 28px; display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 999px; padding: 3px 9px 3px 4px; }
.project-audit-row b { color: var(--ink-2); font-weight: 700; }
.project-audit-row em { font-style: normal; color: var(--ink-3); font-size: 10.5px; }
.operating-chip.self { color: var(--ok); background: var(--ok-soft); border-color: var(--ok-line); }
.operating-chip.agency { color: var(--purple); background: var(--purple-soft); border-color: var(--purple-line); }
.operating-chip.unknown { color: var(--ink-2); background: var(--surface-sunk); border-color: var(--line-soft); }
.project-audit-row .dup { padding-left: 10px; }
.project-audit-row .dup.warn { background: rgba(194, 117, 36, .1); border-color: rgba(194, 117, 36, .24); color: var(--warn); }
.project-audit-row .dup.ok { color: var(--ok); background: var(--ok-soft); border-color: var(--ok-line); }
.project-lower-grid {
  margin-top: 22px;
  border-top: 1px solid var(--line-soft);
  padding-top: 22px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  align-items: start;
}
.project-chart-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 36px;
  align-items: stretch;
}
.project-profile {
  margin-top: 12px; border-top: 1px solid var(--line-soft); background: transparent;
  border-radius: 0; padding: 18px 0 0; display: grid;
  grid-template-columns: minmax(180px, .8fr) minmax(0, 1.2fr); gap: 34px; align-items: start;
}
.project-lower-grid .project-profile {
  margin-top: 0;
  border-top: 0;
  padding-top: 0;
  grid-template-columns: 1fr;
  gap: 10px;
  min-width: 0;
}
.project-profile-head { display: grid; align-content: start; gap: 9px; font-size: 12px; color: var(--ink-3); }
.project-profile-head > div { display: grid; gap: 2px; }
.project-profile-head b { color: var(--ink); font-size: 13px; }
.project-profile-head strong { font-size: 11.5px; color: var(--brand); line-height: 1; font-family: var(--fs-num); background: var(--brand-soft); border: 1px solid var(--brand-line); border-radius: 999px; padding: 5px 8px; white-space: nowrap; }
.account-type-panel { min-width: 0; align-self: start; }
.account-type-bar {
  display: flex; height: 8px; border-radius: 6px; overflow: hidden;
  background: var(--line); box-shadow: inset 0 0 0 1px rgba(22,24,29,.02);
}
.account-type-bar .seg { min-width: 0; flex-basis: 0; }
.account-type-bar .seg {
  transition: flex-grow .34s var(--motion-ease), flex-basis .34s var(--motion-ease), background .2s var(--motion-ease);
}
.account-type-bar .self-owned { background: var(--ok); }
.account-type-bar .matrix { background: var(--accent); }
.account-type-bar .ip { background: #8AA5F3; }
.account-type-bar .other { background: #D6DAE2; }
.account-type-grid { display: grid; grid-template-columns: 1fr; gap: 9px; grid-column: auto; margin-top: 13px; }
.project-lower-grid .account-type-grid { margin-top: 13px; }
.account-type-tile {
  border: 0; background: transparent; border-radius: 0;
  padding: 0; min-height: 0; display: grid; grid-template-columns: minmax(90px, 1fr) auto minmax(110px, 1fr);
  align-items: baseline; gap: 10px;
}
.account-type-tile span { font-size: 12.5px; color: var(--ink-2); font-weight: 500; display: flex; align-items: center; gap: 8px; }
.account-type-tile span i { width: 8px; height: 8px; border-radius: 2px; background: var(--line); flex: 0 0 8px; }
.account-type-tile b { font-family: var(--fs-num); font-size: 12.5px; line-height: 1; color: var(--ink); letter-spacing: -.01em; font-weight: 600; text-align: right; }
.account-type-tile em { font-style: normal; font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.account-type-tile.on.self-owned { background: #F7FBF9; border-color: #CDE7DA; }
.account-type-tile.on.self-owned b { color: var(--ok); }
.account-type-tile.self-owned span i { background: var(--ok); }
.account-type-tile.on.matrix { background: transparent; border-color: transparent; }
.account-type-tile.on.matrix b { color: var(--ink); }
.account-type-tile.matrix span i { background: var(--accent); }
.account-type-tile.on.ip { background: transparent; border-color: transparent; }
.account-type-tile.on.ip b { color: var(--ink); }
.account-type-tile.ip span i { background: #8AA5F3; }
.account-type-tile.on.other { background: transparent; border-color: transparent; }
.account-type-tile.on.other b { color: var(--ink); }
.account-type-tile.other span i { background: #D6DAE2; }
.account-type-tile.empty { opacity: .55; background: transparent; }
.account-type-tile.empty b { color: var(--ink-4); }
.project-card-side {
  display: grid;
  gap: 16px;
}
.project-platform-card {
  border: 1px solid var(--line-soft);
  background: linear-gradient(180deg, rgba(255,255,255,.78), rgba(248,250,255,.62));
  border-radius: 14px;
  padding: 13px 14px;
}
.project-platform-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.project-platform-head div {
  display: grid;
  gap: 2px;
}
.project-platform-head span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 700;
}
.project-platform-head b {
  color: var(--ink);
  font-size: 13px;
}
.project-platform-head em {
  color: var(--ink-4);
  font-style: normal;
  font-size: 11px;
  white-space: nowrap;
}
.project-platform-bar {
  display: flex;
  height: 8px;
  border-radius: 999px;
  overflow: hidden;
  background: var(--line-soft);
  margin-top: 11px;
}
.project-platform-bar i {
  min-width: 0;
  transition: flex-grow .34s var(--motion-ease), flex-basis .34s var(--motion-ease);
}
.project-platform-bar .douyin { background: var(--brand); }
.project-platform-bar .xhs { background: #E46F6A; }
.project-platform-bar .sph { background: #E4A449; }
.project-platform-bar .empty { background: var(--line); }
.project-platform-list {
  display: grid;
  gap: 7px;
  margin-top: 10px;
}
.project-platform-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(72px, auto);
  align-items: baseline;
  gap: 8px;
  color: var(--ink-2);
  font-size: 12px;
}
.project-platform-row span {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 7px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.project-platform-row b {
  color: var(--ink);
  font-size: 12.5px;
  text-align: right;
}
.project-platform-row em {
  color: var(--ink-3);
  font-style: normal;
  text-align: right;
  white-space: nowrap;
}
.project-platform-row.muted { opacity: .65; }
.project-chart-row > .project-platform-card {
  min-width: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.project-chart-row > .project-platform-card .project-platform-head em {
  white-space: normal;
  text-align: right;
}
.project-chart-row > .project-platform-card .project-platform-bar {
  height: 7px;
}
.project-chart-row > .project-platform-card .project-platform-row {
  grid-template-columns: minmax(0, 1fr) auto auto;
}
@media (max-width: 980px) {
  .project-lower-grid { grid-template-columns: 1fr; }
  .project-chart-row { grid-template-columns: 1fr; }
  .project-profile { grid-template-columns: 1fr; }
}
@media (max-width: 760px) { .project-profile { grid-template-columns: 1fr; } .account-type-grid { grid-column: auto; } }
@media (max-width: 520px) { .account-type-tile { grid-template-columns: minmax(80px, 1fr) auto; } .account-type-tile em { grid-column: 1 / -1; } }
.project-policy-card {
  margin-top: 14px; border-top: 1px solid var(--line-soft); border-left: 0; border-right: 0; border-bottom: 0; border-radius: 0;
  background: transparent; padding: 18px 0 0; display: grid; gap: 10px; position: relative;
}
.project-lower-grid .project-policy-card {
  margin-top: 0;
  border-top: 0;
  padding-top: 0;
}
.project-policy-card.paused { opacity: .72; }
.project-policy-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.project-policy-head > div { display: grid; gap: 2px; }
.project-policy-head span { font-size: 11.5px; color: var(--ink-3); font-weight: 650; }
.project-policy-head b { font-size: 13px; color: var(--ink-2); font-weight: 600; }
.project-policy-head b em { font-style: normal; color: var(--ink-4); font-weight: 400; }
.project-policy-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.project-policy-run {
  min-height: 28px;
  border: 1px solid var(--brand-line);
  border-radius: 999px;
  background: var(--brand);
  color: #fff;
  padding: 5px 10px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: inherit;
  font-size: 12px;
  font-weight: 760;
  cursor: pointer;
  box-shadow: 0 10px 22px -18px rgba(45, 91, 214, .78);
}
.project-policy-run:hover {
  background: var(--brand-press);
}
.project-policy-edit {
  border: 0;
  background: transparent;
  color: var(--brand);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  padding: 0;
  cursor: pointer;
}
.project-policy-edit:hover { text-decoration: underline; }
.project-policy-collapse {
  border: 0;
  background: transparent;
  color: var(--ink-3);
  font: inherit;
  font-size: 11.5px;
  padding: 0;
  cursor: pointer;
}
.project-policy-collapse:hover { color: var(--brand); }
.project-policy-collapsed {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border-top: 1px solid var(--line-soft);
  padding-top: 14px;
}
.project-lower-grid .project-policy-collapsed { border-top: 0; padding-top: 0; }
.project-policy-collapsed-copy {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 5px;
  min-width: 0;
}
.project-policy-collapsed-copy b { color: var(--ink-2); font-size: 13px; }
.project-policy-collapsed-copy span { color: var(--ink-4); font-size: 11.5px; }
.project-policy-collapsed-copy em { color: var(--ink-3); font-size: 11px; font-style: normal; }
.project-policy-reveal {
  flex: 0 0 auto;
  min-height: 28px;
  border: 1px solid var(--brand-line);
  border-radius: 999px;
  background: var(--brand-soft);
  color: var(--brand);
  padding: 5px 10px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font: inherit;
  font-size: 12px;
  font-weight: 760;
  cursor: pointer;
}
.project-policy-reveal:hover { background: var(--brand); color: #fff; }
@media (max-width: 640px) {
  .project-policy-head { align-items: flex-start; flex-direction: column; }
  .project-policy-actions { justify-content: flex-start; }
  .project-policy-collapsed { align-items: flex-start; flex-direction: column; }
  .project-policy-reveal { width: 100%; justify-content: center; }
}
.project-policy-flow { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.project-lower-grid > .project-policy-card .project-policy-flow,
.project-lower-grid > .project-policy-card .project-policy-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.project-lower-grid .project-policy-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.project-policy-flow span,
.project-policy-flow button.policy-chip {
  min-height: 34px; border: 1px solid var(--line-soft); border-radius: 8px;
  background: #F8FAFF; padding: 7px 8px; color: var(--ink-2); font-size: 11px;
  line-height: 1.35; display: flex; align-items: center; gap: 5px; min-width: 0;
}
.project-policy-flow button.policy-chip {
  width: 100%; text-align: left; cursor: pointer; font: inherit;
  transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.project-policy-flow button.policy-chip span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-policy-flow button.policy-chip svg:last-child { margin-left: auto; color: var(--ink-3); }
.project-policy-flow button.policy-chip:hover,
.project-policy-flow button.policy-chip.active {
  border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand-press);
}
.project-policy-flow svg { flex-shrink: 0; color: var(--brand); }
.project-policy-summary-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px;
  margin-top: 3px;
}
.project-policy-summary-grid span {
  min-height: 34px; border: 1px solid #DCE5F8; border-radius: 9px;
  background: #F4F7FE; padding: 8px 11px; color: var(--ink); font-size: 12px;
  line-height: 1.35; display: flex; align-items: center; gap: 6px; min-width: 0;
}
.project-policy-summary-grid span svg { color: var(--brand); flex-shrink: 0; }
.project-policy-footline {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 7px;
  color: var(--ink-3); font-size: 11px; line-height: 1.45;
  margin-top: 1px;
}
.project-policy-footline > span {
  background: #F8F9FB;
  border: 1px solid #EEF0F4;
  border-radius: 999px;
  padding: 4px 10px;
}
.project-policy-footline b {
  color: var(--ink-2); font-weight: 650; white-space: nowrap;
}
.policy-popover {
  border: 1px solid var(--brand-line); background: var(--surface); border-radius: 12px;
  box-shadow: var(--shadow-pop); padding: 12px; display: grid; gap: 11px;
}
.policy-popover-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.policy-popover-head b { font-size: 13px; color: var(--ink); }
.policy-popover-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 9px; align-items: end; }
.policy-popover-grid.single { grid-template-columns: 1fr; }
.policy-popover-grid label { display: grid; gap: 5px; font-size: 11.5px; color: var(--ink-3); font-weight: 650; min-width: 0; }
.policy-popover-grid .text-input { min-height: 36px; font-size: 12px; width: 100%; box-sizing: border-box; }
.policy-popover-actions { display: flex; justify-content: flex-end; gap: 8px; }
.project-policy-note {
  display: flex; flex-wrap: wrap; gap: 6px; font-size: 11px; color: var(--ink-3);
}
.project-policy-note span {
  border: 1px solid var(--line-soft); border-radius: 999px; background: var(--surface);
  padding: 3px 8px; white-space: nowrap;
}
@media (max-width: 920px) { .project-policy-flow, .project-policy-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .policy-popover-grid { grid-template-columns: 1fr; } }
@media (max-width: 920px) { .first-archive-workspace { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .project-policy-record, .first-archive-steps { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .project-policy-flow, .project-policy-summary-grid { grid-template-columns: 1fr; } .project-policy-footline, .project-first-grab-callout, .first-archive-actions { align-items: stretch; flex-direction: column; } .first-archive-actions .btn { width: 100%; } }
.role-summary-grid { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; min-width: 0; }
@media (max-width: 700px) { .project-profile { display: grid; } .role-summary-grid { justify-content: flex-start; } }
.role-summary {
  border: 1px solid var(--line-soft); background: var(--surface); border-radius: 10px;
  padding: 8px 10px; display: flex; align-items: center; gap: 8px; min-width: 0;
}
.role-summary > span.num { font-size: 11.5px; color: var(--ink-3); }
.role-summary > b { font-size: 12.5px; color: var(--ink); font-variant-numeric: tabular-nums; }
.role-summary.muted-only { display: block; color: var(--ink-3); font-size: 12px; }
.project-actions {
  display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px;
  border-top: 1px solid var(--line-soft); padding-top: 22px;
}
.project-card-next {
  display: flex; align-items: baseline; gap: 8px; margin-top: 18px; padding-top: 15px;
  border-top: 1px solid var(--line-soft); min-width: 0;
}
.project-card-next span { color: var(--ink-3); font-size: 11.5px; flex: 0 0 auto; }
.project-card-next b { color: var(--ink-2); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-grid.overview .project-card-next { display: none; }
.project-expand-btn {
  width: 100%; height: 34px; margin-top: 10px; border: 1px solid var(--line-soft);
  border-radius: 999px; background: var(--surface-sunk); color: var(--ink-2);
  display: flex; align-items: center; justify-content: center; gap: 7px;
  font-size: 12px; font-weight: 650; transition: .14s;
}
.project-expand-btn:hover { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); }
.project-expand-btn svg { transition: transform .14s; }
.project-list-window.expanded + .project-expand-btn svg { transform: rotate(180deg); }
.proj-row { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--line-soft); border-radius: var(--r); margin-bottom: 9px; }
.proj-row:last-child { margin-bottom: 0; }
.proj-row .pn { font-size: 13.5px; font-weight: 650; }
.proj-row .pm { font-size: 11.5px; color: var(--ink-3); display: flex; align-items: center; gap: 7px; margin-top: 2px; }

.daily-traffic-block { margin-top: 18px; }
.daily-traffic-body {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(320px, .95fr);
  gap: 14px; align-items: stretch;
}
.traffic-map-canvas {
  min-height: 256px; border: 1px solid var(--line-soft); border-radius: 14px;
  background:
    radial-gradient(circle at 52% 46%, rgba(45, 134, 91, .12), transparent 34%),
    linear-gradient(135deg, #F8FBF7, #F7F3EC);
  padding: 18px; position: relative; overflow: hidden;
}
.traffic-map-backdrop {
  position: absolute; inset: 16px; display: grid; place-items: center; pointer-events: none;
}
.traffic-map-backdrop svg { width: min(96%, 760px); height: 100%; opacity: .96; overflow: visible; }
.map-land {
  fill: rgba(45, 134, 91, .045);
  stroke: rgba(22, 91, 79, .28);
  stroke-width: 2.2;
}
.map-line {
  fill: none;
  stroke: rgba(22, 91, 79, .16);
  stroke-width: 1.3;
  stroke-dasharray: 8 10;
}
.map-coast {
  fill: none;
  stroke: rgba(140, 104, 55, .22);
  stroke-width: 1.8;
}
.map-dot {
  fill: rgba(22, 91, 79, .28);
  stroke: rgba(255, 255, 255, .88);
  stroke-width: 2;
}
.traffic-city-node {
  position: absolute; left: var(--city-x); top: var(--city-y); transform: translate(-50%, -50%);
  width: var(--city-size); min-height: var(--city-size); border-radius: 999px;
  border: 1px solid rgba(45, 134, 91, .22); background: rgba(255, 255, 255, .76);
  box-shadow: 0 12px 28px rgba(31, 36, 28, .10); padding: 12px;
  display: grid; align-content: center; gap: 4px; z-index: 2; backdrop-filter: blur(8px);
  animation: trafficNodeIn var(--motion-med) var(--motion-ease); animation-delay: var(--city-delay);
}
.traffic-city-node::before {
  content: ""; position: absolute; inset: -7px; border: 1px solid rgba(45, 134, 91, .12);
  border-radius: inherit; pointer-events: none;
}
.traffic-city-node.active { border-color: var(--brand); background: rgba(236, 247, 242, .84); }
.traffic-city-node.self { border-color: rgba(45, 134, 91, .34); background: rgba(232, 243, 238, .82); }
.traffic-city-node.agency { border-color: rgba(107, 74, 140, .36); background: rgba(246, 239, 251, .84); }
.traffic-city-node.agency b { color: #6B4A8C; }
.traffic-city-node.industry { border-color: rgba(194, 117, 36, .34); background: rgba(250, 242, 226, .84); }
.traffic-city-node.industry b { color: #8A5E12; }
.traffic-city-node.unknown { border-color: rgba(156, 152, 140, .32); background: rgba(250, 249, 245, .82); }
.traffic-city-node span { font-size: 12px; font-weight: 760; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: center; }
.traffic-city-node b { font-size: 17px; color: var(--brand); line-height: 1.05; }
.traffic-city-node em { font-style: normal; font-size: 10.5px; color: var(--ink-3); line-height: 1.25; text-align: center; }
@keyframes trafficNodeIn { from { transform: translate(-50%, calc(-50% + 4px)); } to { transform: translate(-50%, -50%); } }
.traffic-empty {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: min(320px, 72%); border: 1px dashed var(--brand-line); border-radius: 14px;
  background: rgba(255,255,255,.72); color: var(--ink-2); padding: 18px;
  display: grid; gap: 6px; text-align: center; z-index: 2; backdrop-filter: blur(8px);
}
.traffic-empty b { color: var(--ink); font-size: 14px; }
.traffic-empty span { color: var(--ink-3); font-size: 12px; line-height: 1.45; }
.traffic-report-side { display: grid; gap: 10px; }
.traffic-report-kpis { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.traffic-report-kpis div {
  border: 1px solid var(--line-soft); background: var(--surface); border-radius: 12px;
  padding: 11px 12px; min-width: 0;
}
.traffic-report-kpis span { display: block; font-size: 11.5px; color: var(--ink-3); }
.traffic-report-kpis b { display: block; margin-top: 5px; font-size: 21px; color: var(--ink); line-height: 1.05; }
.traffic-rank-list {
  border: 1px solid var(--line-soft); background: var(--surface); border-radius: 12px; overflow: hidden;
}
.traffic-rank-row {
  display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 10px; align-items: center;
  padding: 10px 12px; border-bottom: 1px solid var(--line-soft);
}
.traffic-rank-row:last-child { border-bottom: 0; }
.traffic-rank-row strong {
  width: 24px; height: 24px; border-radius: 8px; display: grid; place-items: center;
  background: var(--brand-soft); color: var(--brand); font-family: var(--fs-num); font-size: 12px;
}
.traffic-rank-row span { min-width: 0; display: grid; gap: 2px; }
.traffic-rank-row b { color: var(--ink); font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.traffic-rank-row em { color: var(--ink-3); font-style: normal; font-size: 10.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.traffic-rank-row i { font-style: normal; color: var(--brand); font-size: 12.5px; font-weight: 780; white-space: nowrap; }
.traffic-report-note {
  border: 1px solid #E6D6A8; background: #FFFCF3; color: #6F5720;
  border-radius: 12px; padding: 11px 12px; font-size: 11.8px; line-height: 1.45;
}
.traffic-report-note b { color: #8A5E12; }
@media (max-width: 900px) {
  .daily-traffic-body { grid-template-columns: 1fr; }
  .traffic-map-canvas { min-height: 0; }
}
@media (max-width: 560px) {
  .traffic-report-kpis { grid-template-columns: 1fr; }
}
.peacock-screen {
  min-height: calc(100vh - 100px);
  padding: 10px 0 28px;
}
.peacock-top {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 16px; align-items: center;
  margin-bottom: 16px; border: 1px solid var(--line-soft); border-radius: 16px;
  background: linear-gradient(135deg, #F8FBF7, #F5F1E8); padding: 14px 16px;
  box-shadow: var(--shadow-sm);
}
.peacock-top > div { display: grid; gap: 3px; min-width: 0; }
.peacock-top span { font-size: 12px; color: var(--brand); font-weight: 760; }
.peacock-top b { font-size: 24px; line-height: 1.1; color: var(--ink); }
.peacock-top em {
  font-style: normal; border: 1px solid var(--brand-line); background: var(--brand-soft);
  color: var(--brand); border-radius: 999px; padding: 5px 10px; font-size: 11.5px; font-weight: 700;
}
.peacock-mode-tabs {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 999px;
}
.peacock-mode-tabs button {
  height: 28px; border: 0; background: transparent; border-radius: 999px;
  padding: 0 10px; color: var(--ink-2); font-size: 11.5px; font-weight: 700;
}
.peacock-mode-tabs button:hover { background: var(--surface); color: var(--ink); }
.peacock-mode-tabs button.on { background: var(--brand); color: #fff; }
.peacock-screen .daily-traffic-block { margin-top: 0; }
.peacock-screen .daily-traffic-body { grid-template-columns: minmax(0, 1.25fr) minmax(360px, .75fr); }
.peacock-screen .traffic-map-canvas { min-height: 430px; padding: 26px; gap: 16px; }
.peacock-screen .traffic-city-node { border-radius: 24px; }
.peacock-screen .traffic-city-node b { font-size: 22px; }
.peacock-screen .traffic-report-kpis b { font-size: 26px; }
@media (max-width: 860px) {
  .peacock-top { grid-template-columns: 1fr; align-items: start; }
  .peacock-top .btn { width: fit-content; }
  .peacock-screen .daily-traffic-body { grid-template-columns: 1fr; }
}

/* 中台底座状态 */
.foundation-panel { margin: 18px 0; }
.foundation-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 920px) { .foundation-grid { grid-template-columns: 1fr; } }
.foundation-card {
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 12px; padding: 13px; min-width: 0;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.54);
}
.foundation-card.ok { border-color: var(--ok-line); background: var(--ok-soft); }
.foundation-card.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.foundation-top { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: start; }
.foundation-ic {
  width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center;
  background: var(--surface); color: var(--brand); border: 1px solid var(--line-soft);
}
.foundation-title { font-size: 13px; font-weight: 760; color: var(--ink); }
.foundation-summary { margin-top: 2px; font-size: 11.5px; color: var(--ink-2); line-height: 1.45; }
.foundation-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
@media (max-width: 620px) { .foundation-cols { grid-template-columns: 1fr; } }
.foundation-cols div {
  border: 1px solid rgba(255,255,255,.64); background: rgba(255,255,255,.42);
  border-radius: 10px; padding: 9px 10px;
}
.foundation-cols span { display: block; font-size: 10.5px; color: var(--ink-3); font-weight: 750; margin-bottom: 5px; }
.foundation-cols p { margin: 4px 0; font-size: 11.2px; color: var(--ink-2); line-height: 1.4; display: flex; gap: 5px; align-items: flex-start; }
.foundation-next {
  margin-top: 10px; border-top: 1px solid rgba(255,255,255,.72); padding-top: 9px;
  font-size: 11.5px; color: var(--ink-2); line-height: 1.45;
}
.foundation-next b { color: var(--ink); margin-right: 7px; }
.content-layer-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 13px; }
@media (max-width: 980px) { .content-layer-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .content-layer-strip { grid-template-columns: 1fr; } }
.content-layer {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 9px; align-items: start;
  border: 1px solid var(--line-soft); background: var(--surface); border-radius: 11px; padding: 10px;
}
.content-layer.ok { border-color: var(--ok-line); background: var(--ok-soft); }
.content-layer.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.layer-key {
  width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center;
  background: var(--ink); color: #fff; font-weight: 800; font-size: 12px;
  box-shadow: 0 5px 12px rgba(31,36,28,.12);
}
.content-layer b { font-size: 12px; color: var(--ink); }
.content-layer p { margin: 2px 0 0; font-size: 11px; color: var(--ink-3); line-height: 1.4; }
.foundation-action-row { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.foundation-action-row span {
  display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--line-soft);
  background: var(--surface-sunk); color: var(--ink-2); border-radius: 999px; padding: 5px 9px; font-size: 11.2px;
}

/* 数据发现 */
.discovery-page { max-width: 1240px; margin: 0 auto; }
.discovery-page.embedded {
  max-width: none;
  margin-top: 16px;
}
.discovery-embedded-head {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r-sm);
  padding: 15px 16px;
  margin-bottom: 12px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}
.discovery-embedded-head h2 {
  margin: 4px 0 0;
  font-size: 18px;
  line-height: 1.25;
}
.discovery-embedded-head p {
  margin: 5px 0 0;
  color: var(--ink-3);
  font-size: 12.5px;
  line-height: 1.45;
}
.discovery-embedded-head > span {
  flex-shrink: 0;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 999px;
  padding: 6px 9px;
  font-size: 11.5px;
  font-weight: 760;
}
.discovery-summary {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 10px; margin: 16px 0 18px;
}
.discovery-summary .metric {
  border: 1px solid var(--line); background: var(--surface);
  border-radius: var(--r-sm); padding: 13px 14px; box-shadow: none;
}
.discovery-summary .metric .k { color: var(--ink-4); font-size: 11px; }
.discovery-summary .metric .v { font-size: 22px; line-height: 1.12; font-weight: 850; letter-spacing: 0; }
.discovery-layout {
  display: grid; grid-template-columns: 210px minmax(0, 1fr);
  gap: 16px; align-items: start;
}
.discovery-side {
  position: sticky; top: 76px;
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface); padding: 8px;
}
.discovery-side button {
  width: 100%; border: 0; background: transparent; color: var(--ink-2);
  border-radius: 7px; padding: 10px 10px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  font-size: 13px; text-align: left;
}
.discovery-side button:hover { background: var(--surface-sunk); color: var(--ink); }
.discovery-side button.on { background: var(--brand-soft); color: var(--brand); font-weight: 800; }
.discovery-side button em { font-style: normal; color: var(--ink-3); font-size: 12px; font-family: var(--fs-num); }
.discovery-side button.on em { color: var(--brand); }
.discovery-main { min-width: 0; }
.discovery-overview {
  display: flex; align-items: stretch; justify-content: space-between;
  gap: 12px; margin-bottom: 12px;
}
.discovery-note {
  flex: 1; min-width: 0;
  border: 1px solid var(--brand-line); background: var(--brand-soft);
  border-radius: var(--r-sm); padding: 12px 14px;
  display: flex; gap: 10px; align-items: center;
}
.discovery-note b { color: var(--brand); white-space: nowrap; }
.discovery-note span { color: var(--ink-2); font-size: 13px; }
.discovery-docs { display: flex; gap: 8px; flex-wrap: wrap; align-content: center; }
.discovery-docs button,
.discovery-tools button {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 7px; padding: 8px 10px; font-size: 12px;
}
.discovery-docs button:hover,
.discovery-tools button:hover { border-color: var(--brand-line); color: var(--brand); background: #F7FAFF; }
.discovery-hotline {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface); padding: 10px 12px; margin-bottom: 12px;
}
.discovery-hotline span { color: var(--ink-3); font-size: 12px; font-weight: 750; }
.discovery-hotline b {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 999px; padding: 4px 8px; font-size: 12px; font-weight: 650;
  color: var(--ink-2);
}
.discovery-panel {
  border: 1px solid var(--line); background: var(--surface);
  border-radius: var(--r-sm); overflow: hidden;
}
.discovery-panel-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 14px; padding: 15px 16px; border-bottom: 1px solid var(--line);
  background: var(--surface-sunk);
}
.discovery-panel-head h2 { margin: 0; font-size: 18px; line-height: 1.2; }
.discovery-panel-head p { margin: 5px 0 0; color: var(--ink-3); font-size: 12.5px; }
.discovery-tools { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.discovery-tools input,
.discovery-tools select {
  height: 34px; border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); color: var(--ink); padding: 0 10px; font: inherit;
  font-size: 12.5px;
}
.discovery-tools input { width: 260px; }
.discovery-tools select { width: 118px; }
.discovery-table-meta {
  color: var(--ink-3); font-size: 12px;
  padding: 9px 16px; border-bottom: 1px solid var(--line);
}
.discovery-table-wrap { overflow: auto; max-height: 650px; }
.discovery-table { min-width: 1120px; }
.discovery-table th {
  position: sticky; top: 0; z-index: 1;
  background: var(--surface); white-space: nowrap;
}
.discovery-sort-head {
  width: 100%; border: 0; background: transparent; color: inherit;
  padding: 0; font: inherit; font-weight: inherit; text-align: inherit;
  display: inline-flex; align-items: center; gap: 4px;
}
.discovery-sort-head em {
  font-style: normal; color: var(--brand); font-size: 12px;
}
.discovery-table td { max-width: 230px; }
.discovery-table .wide-cell { min-width: 220px; max-width: 360px; }
.discovery-table .link-cell { white-space: nowrap; }
.discovery-path {
  display: inline-block; max-width: 260px; overflow: hidden; text-overflow: ellipsis;
  vertical-align: top; white-space: nowrap; letter-spacing: 0;
}
.mini-tag {
  display: inline-block; border: 1px solid var(--line); border-radius: 999px;
  padding: 2px 7px; margin: 0 4px 4px 0;
  color: var(--ink-2); background: var(--surface-sunk); font-size: 11.5px;
}
.discovery-lead-workbench { padding: 14px; }
.discovery-lanes {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px; margin-bottom: 12px;
}
.discovery-lanes button {
  border: 1px solid var(--line); background: var(--surface);
  border-radius: 7px; padding: 10px 11px;
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  color: var(--ink-2); font-size: 12.5px;
}
.discovery-lanes button.on {
  border-color: var(--brand-line); background: var(--brand-soft);
  color: var(--brand); font-weight: 800;
}
.discovery-lanes button em { font-style: normal; font-family: var(--fs-num); color: inherit; }
.discovery-lead-controls {
  display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: var(--r-sm); padding: 10px; margin-bottom: 12px;
}
.discovery-lead-controls label {
  display: grid; gap: 4px; min-width: 150px;
}
.discovery-lead-controls label span {
  color: var(--ink-3); font-size: 11.5px; font-weight: 760;
}
.discovery-lead-controls select {
  height: 34px; border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); color: var(--ink); padding: 0 9px;
  font: inherit; font-size: 12.5px;
}
.discovery-lead-controls em {
  margin-left: auto; font-style: normal; color: var(--ink-3);
  font-size: 12px; padding-bottom: 8px;
}
.discovery-lead-grid {
  display: grid; grid-template-columns: minmax(280px, 0.9fr) minmax(0, 1.35fr);
  gap: 12px; align-items: start;
}
.discovery-lead-list {
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface-sunk); padding: 8px;
  max-height: 690px; overflow: auto;
}
.discovery-lead-list > button {
  width: 100%; border: 1px solid transparent; background: var(--surface);
  border-radius: 7px; padding: 11px; margin-bottom: 8px;
  text-align: left; color: var(--ink);
}
.discovery-lead-list > button:hover,
.discovery-lead-list > button.on {
  border-color: var(--brand-line); background: #F7FAFF;
}
.lead-card-top {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 10px;
}
.lead-card-top b {
  font-size: 13.5px; line-height: 1.25; overflow-wrap: anywhere;
}
.lead-card-top span {
  flex-shrink: 0; border: 1px solid var(--brand-line); color: var(--brand);
  background: var(--brand-soft); border-radius: 999px; padding: 2px 7px;
  font-size: 11px; font-weight: 850;
}
.discovery-lead-list p {
  margin: 6px 0 8px; color: var(--ink-3); font-size: 12px;
  line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden;
}
.discovery-lead-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.discovery-lead-chips span {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 999px; padding: 3px 7px;
  color: var(--ink-2); font-size: 11px; line-height: 1.1;
}
.discovery-lead-detail {
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface); padding: 16px;
  min-height: 520px;
}
.lead-detail-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 14px; margin-bottom: 12px;
}
.lead-detail-head span {
  color: var(--ink-3); font-size: 12px; font-weight: 760;
}
.lead-detail-head h3 {
  margin: 5px 0 6px; font-size: 20px; line-height: 1.2;
  overflow-wrap: anywhere;
}
.lead-detail-head p {
  margin: 0; color: var(--ink-3); font-size: 12.5px; line-height: 1.45;
}
.lead-detail-head > b {
  flex-shrink: 0; border: 1px solid var(--brand-line);
  background: var(--brand-soft); color: var(--brand);
  border-radius: 7px; padding: 7px 9px; font-size: 13px;
}
.lead-detail-metrics {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px; margin: 14px 0;
}
.lead-detail-metrics div {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 7px; padding: 9px 10px; min-width: 0;
}
.lead-detail-metrics span {
  display: block; color: var(--ink-3); font-size: 10.5px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.lead-detail-metrics b {
  display: block; margin-top: 4px; font-family: var(--fs-num);
  font-size: 14px; overflow-wrap: anywhere;
}
.lead-form-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px; margin-top: 12px;
}
.lead-form-grid label { display: grid; gap: 5px; min-width: 0; }
.lead-form-grid label span { color: var(--ink-3); font-size: 11.5px; font-weight: 760; }
.lead-form-grid input,
.lead-form-grid select {
  width: 100%; height: 34px; border: 1px solid var(--line);
  border-radius: 7px; padding: 0 9px; background: var(--surface);
  color: var(--ink); font: inherit; font-size: 12.5px;
}
.lead-actions {
  display: flex; flex-wrap: wrap; gap: 8px;
  border-top: 1px solid var(--line); padding-top: 12px; margin-top: 14px;
}
.lead-actions button {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 7px; padding: 8px 10px; color: var(--ink-2);
  font-size: 12px; font-weight: 760;
}
.lead-actions button:hover { border-color: var(--brand-line); color: var(--brand); background: #F7FAFF; }
.lead-actions button.danger:hover { border-color: #F2B9B2; color: #B33A2E; background: #FFF6F4; }
.lead-source-line {
  display: flex; align-items: center; gap: 8px; margin-top: 10px;
  color: var(--ink-3); font-size: 12px;
}
.lead-source-line span { font-weight: 800; color: var(--ink-2); }
.lead-source-line em { font-style: normal; color: var(--ink-3); overflow-wrap: anywhere; }
.city-store-ranking { padding: 14px; }
.city-store-controls {
  display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: var(--r-sm); padding: 10px; margin-bottom: 12px;
}
.city-store-controls label {
  display: grid; gap: 4px; min-width: 150px;
}
.city-store-controls label span {
  color: var(--ink-3); font-size: 11.5px; font-weight: 760;
}
.city-store-controls select {
  height: 34px; border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); color: var(--ink); padding: 0 9px;
  font: inherit; font-size: 12.5px;
}
.city-store-stat {
  margin-left: auto; display: grid; gap: 3px; text-align: right; min-width: 210px;
}
.city-store-stat b { font-size: 15px; color: var(--ink); }
.city-store-stat span { color: var(--ink-3); font-size: 12px; }
.city-store-list {
  display: grid; gap: 9px; max-height: 720px; overflow: auto;
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface-sunk); padding: 9px;
}
.city-store-list article {
  display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 12px;
  border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); padding: 12px;
}
.city-store-list article.chain { background: #FBFAF7; }
.city-store-rank {
  border-right: 1px solid var(--line);
  padding-right: 10px; display: grid; align-content: start; gap: 6px;
}
.city-store-rank span {
  font-family: var(--fs-num); font-size: 18px; font-weight: 850; color: var(--brand);
}
.city-store-rank em {
  width: fit-content; font-style: normal; border: 1px solid var(--line);
  background: var(--surface-sunk); border-radius: 999px; padding: 3px 7px;
  color: var(--ink-3); font-size: 11px; line-height: 1.2;
}
.city-store-list article.chain .city-store-rank em {
  color: #8A5E12; border-color: #EEE0C2; background: #FFF8E9;
}
.city-store-body { min-width: 0; }
.city-store-title {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
}
.city-store-title h3 {
  margin: 0; font-size: 15px; line-height: 1.28; overflow-wrap: anywhere;
}
.city-store-title b {
  flex-shrink: 0; font-family: var(--fs-num); font-size: 12px;
  border: 1px solid var(--brand-line); background: var(--brand-soft);
  color: var(--brand); border-radius: 7px; padding: 4px 7px;
}
.city-store-metrics {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;
}
.city-store-metrics span {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 999px; padding: 3px 7px;
  color: var(--ink-2); font-size: 11.5px; line-height: 1.2;
}
.city-store-metrics b { font-family: var(--fs-num); }
.city-store-body p {
  margin: 9px 0 0; color: var(--ink-3); font-size: 12.5px; line-height: 1.45;
}
.city-store-source {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 9px;
  color: var(--ink-4); font-size: 11.5px;
}
.city-store-source span { color: var(--ink-3); }
.account-potential-board { padding: 14px; }
.account-potential-controls {
  display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap;
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: var(--r-sm); padding: 10px; margin-bottom: 12px;
}
.account-potential-controls label {
  display: grid; gap: 4px; min-width: 150px;
}
.account-potential-controls label span {
  color: var(--ink-3); font-size: 11.5px; font-weight: 760;
}
.account-potential-controls select {
  height: 34px; border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); color: var(--ink); padding: 0 9px;
  font: inherit; font-size: 12.5px;
}
.account-potential-stat {
  margin-left: auto; display: grid; gap: 3px; text-align: right; min-width: 210px;
}
.account-potential-stat b { font-size: 15px; color: var(--ink); }
.account-potential-stat span { color: var(--ink-3); font-size: 12px; }
.account-potential-list {
  display: grid; gap: 9px; max-height: 720px; overflow: auto;
  border: 1px solid var(--line); border-radius: var(--r-sm);
  background: var(--surface-sunk); padding: 9px;
}
.account-potential-list article {
  display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 12px;
  border: 1px solid var(--line); border-radius: 7px;
  background: var(--surface); padding: 12px;
}
.account-potential-list article.hot {
  border-color: var(--brand-line); background: #F8FCFA;
}
.account-potential-score {
  border-right: 1px solid var(--line);
  padding-right: 10px; display: grid; align-content: start; gap: 6px;
}
.account-potential-score span {
  font-family: var(--fs-num); font-size: 22px; font-weight: 880; color: var(--brand);
}
.account-potential-score em {
  width: fit-content; font-style: normal; border: 1px solid var(--brand-line);
  background: var(--brand-soft); border-radius: 999px; padding: 3px 7px;
  color: var(--brand); font-size: 11px; line-height: 1.2; font-weight: 760;
}
.account-potential-body { min-width: 0; }
.account-potential-title {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
}
.account-potential-title h3 {
  margin: 0; font-size: 15.5px; line-height: 1.28; overflow-wrap: anywhere;
}
.account-potential-title p {
  margin: 4px 0 0; color: var(--ink-3); font-size: 12px; line-height: 1.35;
}
.account-potential-title a {
  flex-shrink: 0; border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 7px; padding: 5px 8px; color: var(--brand); font-size: 12px;
  text-decoration: none; font-weight: 760;
}
.account-potential-metrics {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;
}
.account-potential-metrics span {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 999px; padding: 3px 7px;
  color: var(--ink-2); font-size: 11.5px; line-height: 1.2;
  max-width: 100%; overflow-wrap: anywhere;
}
.account-potential-metrics b { font-family: var(--fs-num); }
.account-potential-body > p {
  margin: 9px 0 0; color: var(--ink-3); font-size: 12.5px; line-height: 1.45;
}
.account-potential-body blockquote {
  margin: 9px 0 0; padding: 8px 10px; border-left: 3px solid var(--brand-line);
  background: var(--surface-sunk); color: var(--ink-2); font-size: 12px; line-height: 1.45;
}
.account-potential-actions {
  display: flex; align-items: center; gap: 7px; flex-wrap: wrap;
  border-top: 1px solid var(--line); margin-top: 10px; padding-top: 10px;
}
.account-potential-actions span {
  margin-right: auto; color: var(--ink-3); font-size: 12px; font-weight: 760;
}
.account-potential-actions button {
  border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: 7px; padding: 7px 9px; color: var(--ink-2);
  font-size: 12px; font-weight: 760;
}
.account-potential-actions button:hover {
  border-color: var(--brand-line); color: var(--brand); background: #F7FAFF;
}
.empty-cell { text-align: center; color: var(--ink-3); padding: 32px !important; }
@media (max-width: 1080px) {
  .discovery-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .discovery-layout { grid-template-columns: 1fr; }
  .discovery-side {
    position: static; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .discovery-lanes,
  .discovery-lead-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .discovery-summary,
  .discovery-side { grid-template-columns: 1fr; }
  .lead-detail-metrics,
  .lead-form-grid { grid-template-columns: 1fr; }
  .discovery-overview,
  .discovery-panel-head { flex-direction: column; }
  .discovery-tools,
  .discovery-tools input,
  .discovery-tools select,
  .discovery-tools button { width: 100%; }
  .city-store-controls,
  .city-store-controls label,
  .city-store-controls select,
  .account-potential-controls,
  .account-potential-controls label,
  .account-potential-controls select { width: 100%; }
  .city-store-stat { margin-left: 0; text-align: left; min-width: 0; }
  .account-potential-stat { margin-left: 0; text-align: left; min-width: 0; }
  .city-store-list article,
  .account-potential-list article { grid-template-columns: 1fr; }
  .city-store-rank,
  .account-potential-score { border-right: 0; border-bottom: 1px solid var(--line); padding: 0 0 8px; }
}

.admin-page { max-width: 1180px; margin: 0 auto; }
.admin-tabs {
  display: flex; align-items: center; gap: 3px;
  border-bottom: 1px solid #E6E8ED; margin-bottom: 20px;
}
.admin-tabs button {
  border: 0; background: transparent; color: var(--ink-3);
  font: inherit; font-size: 13px; font-weight: 760;
  padding: 12px 18px 11px; border-bottom: 2px solid transparent; cursor: pointer;
}
.admin-tabs button.on { color: var(--brand); border-bottom-color: var(--brand); }
.admin-tabs .billing-toggle { margin-left: auto; margin-bottom: 8px; }
.billing-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
  margin: 16px 0 14px;
}
.billing-toggle {
  display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0;
  border: 1px solid var(--line-soft); background: var(--surface);
  border-radius: 999px; padding: 8px 11px; font-size: 12px; color: var(--ink-2);
}
.billing-toggle input { accent-color: var(--brand); }
.billing-grid {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px;
  margin-bottom: 12px;
}
.billing-grid .metric {
  background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  padding: 15px 16px; box-shadow: var(--shadow);
}
.billing-grid .metric:nth-child(4) {
  background: #FBF8F2; border-color: #EEE6D4;
}
.billing-grid .metric:nth-child(4) .k,
.billing-grid .metric:nth-child(4) .v { color: #9A6712; }
.billing-grid .metric .k { color: var(--ink-4); font-size: 11px; }
.billing-grid .metric .v { font-size: 23px; line-height: 1.1; font-weight: 850; letter-spacing: -.02em; }
@media (max-width: 1080px) { .billing-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 680px) { .billing-grid { grid-template-columns: 1fr; } }
.billing-note {
  display: flex; align-items: flex-start; gap: 8px;
  border: 1px solid var(--brand-line); background: var(--brand-soft);
  border-radius: 12px; padding: 11px 12px; color: var(--ink-2);
  font-size: 12.5px; line-height: 1.48; margin: 12px 0 14px;
}
.billing-note svg { color: var(--brand); flex-shrink: 0; margin-top: 1px; }
.billing-two {
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr);
  gap: 14px; align-items: start; margin-bottom: 14px;
}
.billing-two > * { min-width: 0; }
.billing-two.staff-governance { grid-template-columns: minmax(0, 1fr) minmax(340px, .9fr); }
@media (max-width: 980px) { .billing-two { grid-template-columns: 1fr; } }
.billing-table-wrap {
  max-width: 100%; overflow: auto; border: 1px solid var(--line-soft);
  border-radius: 12px; background: var(--surface);
}
.billing-table {
  width: 100%; border-collapse: collapse; font-size: 12px; min-width: 620px;
}
.billing-table.compact { min-width: 760px; }
.billing-table th {
  position: sticky; top: 0; z-index: 1; background: var(--surface-sunk);
  color: var(--ink-3); font-size: 10.5px; text-transform: uppercase;
  letter-spacing: 0; text-align: left; padding: 9px 10px;
  border-bottom: 1px solid var(--line-soft);
}
.billing-table td {
  padding: 10px; border-bottom: 1px solid var(--line-soft);
  color: var(--ink-2); vertical-align: top;
}
.billing-table tr:last-child td { border-bottom: 0; }
.billing-table td.num, .billing-table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.billing-table code {
  font-family: var(--fs-num); font-size: 11px; color: var(--ink);
  background: var(--surface-sunk); border: 1px solid var(--line-soft);
  border-radius: 7px; padding: 2px 5px; white-space: nowrap;
}
.billing-table b { display: block; color: var(--ink); font-variant-numeric: tabular-nums; }
.billing-table em {
  display: block; margin-top: 2px; color: var(--ink-4); font-style: normal;
  font-size: 10.5px; font-variant-numeric: tabular-nums;
}
.billing-table.staff-table { min-width: 860px; }
.billing-table.staff-table td:last-child { white-space: normal; }
.staff-governance { margin-bottom: 14px; }
.staff-management-card { display: grid; gap: 12px; }
.staff-management-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.staff-management-head > div:first-child { display: grid; gap: 3px; }
.staff-management-head .sec-title { font-size: 16px; }
.staff-management-head span { color: var(--ink-3); font-size: 11px; }
.staff-head-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.staff-field-label { display: block; color: var(--ink); font-size: 11.5px; }
.staff-create-form {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
  margin-bottom: 12px;
}
.staff-create-form .field { margin-bottom: 0; }
.staff-create-projects { margin-top: 10px; }
.project-check-list {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px; margin-top: 7px;
}
.project-check {
  display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 7px;
  border: 1px solid var(--line); background: var(--surface); border-radius: 9px;
  padding: 8px 9px; cursor: pointer; min-width: 0;
}
.project-check.on { border-color: var(--brand); background: var(--brand-soft); }
.project-check input { accent-color: var(--brand); }
.project-check span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 700; color: var(--ink); }
.project-check em { font-style: normal; font-size: 10.5px; color: var(--ink-4); white-space: nowrap; }
.staff-create-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border-top: 1px solid var(--line-soft); padding-top: 10px; margin-top: 11px;
}
.mini-check { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--ink-3); }
.mini-check input { accent-color: var(--brand); }
.staff-project-cell { display: inline-grid; justify-items: end; gap: 2px; }
.staff-project-cell em {
  max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--ink-4); font-size: 10.5px; font-style: normal;
}
.staff-scope-editor { display: grid; gap: 8px; min-width: 300px; text-align: left; }
.staff-scope-summary { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.staff-scope-summary b { font-size: 12px; color: var(--ink); }
.staff-scope-summary em { margin: 0; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-check-list.staff-scope-list { grid-template-columns: repeat(2, minmax(0, 1fr)); max-height: 176px; overflow: auto; padding-right: 2px; }
.staff-table td:last-child .btn + .btn { margin-left: 6px; }
.staff-capability-picker { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; margin-top: 7px; }
.staff-capability-picker label { display: flex; align-items: center; gap: 7px; min-width: 0; padding: 8px 9px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); cursor: pointer; }
.staff-capability-picker label.on { border-color: var(--brand); background: var(--brand-soft); }
.staff-capability-picker input { accent-color: var(--brand); }
.staff-capability-picker span { color: var(--ink); font-size: 11.5px; font-weight: 700; }
.staff-capability-picker em { margin-left: auto; color: var(--ink-4); font: 9.5px/1 var(--fs-num); }
.staff-create-form .staff-capability-picker { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.staff-create-form .staff-capability-picker label,
.staff-capability-picker.compact label { display: grid; grid-template-columns: 16px minmax(0, 1fr); align-items: start; }
.staff-create-form .staff-capability-picker input,
.staff-capability-picker.compact input { grid-row: 1 / span 3; }
.staff-create-form .staff-capability-picker span,
.staff-create-form .staff-capability-picker em,
.staff-create-form .staff-capability-picker small,
.staff-capability-picker.compact span,
.staff-capability-picker.compact em { grid-column: 2; margin: 0; }
.staff-create-form .staff-capability-picker em,
.staff-create-form .staff-capability-picker small,
.staff-capability-picker.compact em { color: var(--ink-3); font: 10px/1.45 var(--fs-body); }
.staff-capability-picker.compact { grid-template-columns: repeat(2, minmax(88px, 1fr)); min-width: 210px; margin-top: 0; }
.staff-capability-picker.compact label { padding: 6px 7px; }
.staff-capability-cell { display: grid; gap: 6px; min-width: 220px; }
.staff-capability-cell > small { color: var(--ink-3); font-size: 10px; line-height: 1.5; }
.staff-capability-summary { display: flex; flex-wrap: wrap; gap: 5px; min-width: 190px; }
.staff-capability-summary span { padding: 4px 7px; border: 1px solid var(--line-soft); border-radius: 999px; color: var(--ink-4); font-size: 10px; }
.staff-capability-summary span.on { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); font-weight: 700; }
.staff-capability-summary span.off { opacity: .55; }
.staff-admin-scope { display: inline-flex; padding: 5px 8px; border-radius: 999px; background: var(--surface-sunk); color: var(--ink-3); font-size: 10.5px; font-weight: 700; }
.staff-row-actions { display: flex; flex-wrap: wrap; gap: 6px; min-width: 180px; }
.staff-temp-password { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid var(--brand-line); border-radius: 10px; background: var(--brand-soft); }
.staff-temp-password b { font-size: 13px; }
.staff-temp-password p { margin: 0; color: var(--ink-3); font-size: 12px; line-height: 1.55; }
.staff-temp-password code { display: block; padding: 8px 10px; border-radius: 8px; background: var(--surface); font-size: 15px; letter-spacing: .04em; word-break: break-all; }
.staff-table tr.editing td { background: color-mix(in srgb, var(--brand-soft) 55%, var(--surface)); }
.staff-help-drawer,
.staff-audit-drawer { border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.staff-help-drawer summary,
.staff-audit-drawer summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; color: var(--ink-2); font-size: 11.5px; font-weight: 700; cursor: pointer; }
.staff-help-drawer p { margin: 0; padding: 0 12px 12px; color: var(--ink-3); font-size: 11px; line-height: 1.65; }
.staff-audit-drawer .audit-list { margin: 0 10px 10px; }
@media (max-width: 720px) {
  .project-check-list { grid-template-columns: 1fr; }
  .project-check-list.staff-scope-list { grid-template-columns: 1fr; }
  .staff-scope-editor { min-width: 0; }
  .staff-create-foot { align-items: stretch; flex-direction: column; }
  .staff-create-foot .btn { justify-content: center; }
  .staff-management-head { align-items: stretch; flex-direction: column; }
  .staff-capability-picker { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .staff-create-form .staff-capability-picker { grid-template-columns: 1fr; }
}
.duplicate-project-list { display: grid; gap: 8px; }
.duplicate-project-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 10px; padding: 10px 11px;
}
.duplicate-project-row.current { border-color: var(--brand); background: var(--brand-soft); }
.duplicate-project-row b { display: block; color: var(--ink); font-size: 13px; }
.duplicate-project-row span { display: block; margin-top: 2px; color: var(--ink-3); font-size: 11.5px; }
.duplicate-project-row em { flex-shrink: 0; color: var(--ink-4); font-size: 11px; font-style: normal; }
.billing-source-list {
  max-height: 426px; overflow: auto; border: 1px solid var(--line-soft);
  border-radius: 12px; background: var(--surface);
}
.billing-source {
  display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px;
  align-items: center; padding: 10px 11px; border-bottom: 1px solid var(--line-soft);
  font-size: 12px;
}
.billing-source:last-child { border-bottom: 0; }
.billing-source b {
  display: block; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.billing-source span {
  display: block; margin-top: 2px; color: var(--ink-3); font-size: 10.5px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.billing-source > div:last-child {
  color: var(--brand); font-weight: 720; font-variant-numeric: tabular-nums;
}
.billing-retry-list {
  max-height: 376px; overflow: auto; border: 1px solid var(--line-soft);
  border-radius: 12px; background: var(--surface);
}
.billing-retry {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px;
  align-items: start; padding: 10px 11px; border-bottom: 1px solid var(--line-soft);
}
.billing-retry:last-child { border-bottom: 0; }
.billing-retry b {
  display: block; color: var(--ink); font-family: var(--fs-num); font-size: 11px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.billing-retry span:not(.badge) {
  display: block; color: var(--ink-3); font-size: 10.5px; margin-top: 2px;
}
.billing-retry em {
  display: block; color: var(--ink-2); font-style: normal; font-size: 11.2px;
  line-height: 1.4; margin-top: 6px;
}
.audit-list {
  max-height: 350px; overflow: auto; border: 1px solid var(--line-soft);
  border-radius: 12px; background: var(--surface);
}
.audit-row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px;
  align-items: start; padding: 10px 11px; border-bottom: 1px solid var(--line-soft);
}
.audit-row:last-child { border-bottom: 0; }
.audit-row b {
  display: block; color: var(--ink); font-size: 12px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.audit-row span:not(.badge) {
  display: block; color: var(--ink-3); font-size: 10.5px; margin-top: 2px;
}
.audit-row em {
  display: block; color: var(--ink-4); font-family: var(--fs-num); font-style: normal;
  font-size: 10.5px; line-height: 1.45; margin-top: 5px; word-break: break-all;
}
.billing-roadmap {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 14px;
}
@media (max-width: 880px) { .billing-roadmap { grid-template-columns: 1fr; } }
.billing-roadmap > div {
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 12px; padding: 12px; min-height: 86px;
}
.billing-roadmap b { display: block; color: var(--ink); font-size: 12.5px; }
.billing-roadmap span { display: block; color: var(--ink-3); font-size: 11.5px; line-height: 1.45; margin-top: 5px; }
/* AI 账户与多公司账单 */
.ai-billing-workspace { margin: 18px 0 24px; scroll-margin-top: 72px; }
.ai-billing-intro {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 18px;
  margin: 18px 0 14px;
}
.ai-billing-intro .eyebrow { color: var(--brand); font-size: 11px; font-weight: 800; }
.ai-billing-intro h2 { margin: 5px 0 0; color: var(--ink); font-size: 28px; line-height: 1.12; font-weight: 850; }
.ai-billing-intro p { margin: 7px 0 0; color: var(--ink-3); font-size: 13px; line-height: 1.5; }
.ai-source-state { display: grid; justify-items: end; gap: 7px; flex-shrink: 0; }
.ai-source-state em { color: var(--ink-4); font-size: 10.5px; font-style: normal; }
.ai-preview-note { margin-top: 0; }
.ai-overview-metrics, .ai-detail-metrics {
  display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin: 0 0 14px;
}
.ai-overview-metrics > div, .ai-detail-metrics > div {
  min-width: 0; border: 1px solid var(--line); background: var(--surface); border-radius: 14px;
  padding: 15px 16px; box-shadow: var(--shadow);
}
.ai-overview-metrics span, .ai-detail-metrics span { display: block; color: var(--ink-4); font-size: 11px; font-weight: 650; }
.ai-overview-metrics b, .ai-detail-metrics b {
  display: block; margin-top: 7px; color: var(--ink); font-family: var(--fs-num);
  font-size: 24px; line-height: 1; font-weight: 850; font-variant-numeric: tabular-nums;
}
.ai-overview-metrics > div:nth-child(2) b, .ai-detail-metrics > div:first-child b { color: var(--brand); }
.ai-overview-metrics em, .ai-detail-metrics em { display: block; margin-top: 7px; color: var(--ink-4); font-size: 10.5px; font-style: normal; }
.ai-company-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.ai-company-card {
  appearance: none; width: 100%; min-width: 0; color: inherit; text-align: left; font: inherit;
  border: 1px solid var(--line); background: var(--surface); border-radius: 16px; padding: 16px;
  box-shadow: var(--shadow); cursor: pointer; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.ai-company-card:hover { border-color: var(--brand-line); box-shadow: 0 12px 30px -24px rgba(24, 51, 111, .5); transform: translateY(-1px); }
.ai-company-card:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.ai-company-head { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.ai-company-avatar {
  display: inline-grid; place-items: center; width: 38px; height: 38px; border-radius: 11px;
  background: #15181E; color: #fff; font-size: 14px; font-weight: 850;
}
.ai-company-avatar.large { width: 46px; height: 46px; border-radius: 13px; font-size: 16px; }
.ai-company-head b { display: block; color: var(--ink); font-size: 14px; }
.ai-company-head div > span { display: block; margin-top: 3px; color: var(--ink-4); font-size: 10.5px; }
.ai-company-primary { display: grid; grid-template-columns: 1.15fr .85fr; gap: 10px; margin: 16px 0 12px; }
.ai-company-primary > div { min-width: 0; border-left: 2px solid var(--brand-line); padding-left: 10px; }
.ai-company-primary span, .ai-company-balance span { display: block; color: var(--ink-4); font-size: 10.5px; }
.ai-company-primary b { display: block; margin-top: 5px; color: var(--ink); font-family: var(--fs-num); font-size: 21px; font-weight: 830; }
.ai-company-primary > div:first-child b { color: var(--brand); }
.ai-company-primary em, .ai-company-balance em { display: block; margin-top: 4px; color: var(--ink-4); font-size: 10px; font-style: normal; }
.ai-company-balance { display: grid; grid-template-columns: 1fr auto; gap: 2px 10px; align-items: baseline; padding: 10px 0; border-top: 1px solid var(--line-soft); }
.ai-company-balance b { color: var(--ink); font-family: var(--fs-num); font-size: 14px; }
.ai-company-balance em { grid-column: 1 / -1; }
.ai-quota-mini { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 10px; }
.ai-quota-mini > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ai-quota-mini span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink-3); font-size: 10.5px; }
.ai-quota-mini b { flex-shrink: 0; color: var(--ink); font-size: 11px; }
.ai-quota-mini i, .ai-package-row > i, .ai-budget-cell i { display: block; height: 5px; margin-top: 8px; background: #E5EAF4; border-radius: 999px; overflow: hidden; }
.ai-quota-mini i span, .ai-package-row > i span, .ai-budget-cell i b { display: block; height: 100%; background: var(--brand); border-radius: inherit; }
.ai-company-foot { display: flex; align-items: center; gap: 12px; margin-top: 12px; color: var(--ink-4); font-size: 10.5px; }
.ai-company-foot b { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; color: var(--brand); font-size: 11px; }
.ai-company-foot svg { transform: rotate(-90deg); }
.ai-promotion-strip {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px;
  border: 1px solid var(--line); background: var(--surface); border-radius: 14px; padding: 13px 15px;
}
.ai-promotion-strip > div { display: grid; grid-template-columns: auto auto; align-items: center; gap: 5px 9px; }
.ai-promotion-strip b { color: var(--ink); font-size: 12.5px; }
.ai-promotion-strip p { grid-column: 1 / -1; margin: 0; color: var(--ink-3); font-size: 11.5px; }
.billing-divider { display: flex; align-items: center; gap: 12px; margin: 28px 0 15px; color: var(--ink-4); font-size: 10.5px; font-weight: 750; }
.billing-divider::before, .billing-divider::after { content: ""; height: 1px; background: var(--line-soft); flex: 1; }
.ai-company-detail { margin: 18px 0 26px; }
.ai-detail-head { display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: end; margin-bottom: 14px; }
.ai-detail-head > .btn { grid-column: 1 / -1; justify-self: start; }
.ai-detail-head > .btn svg { transform: rotate(90deg); }
.ai-detail-title { display: flex; align-items: center; gap: 12px; }
.ai-detail-title > div > span { color: var(--brand); font-size: 10.5px; font-weight: 800; }
.ai-detail-title h2 { margin: 3px 0 0; color: var(--ink); font-size: 25px; line-height: 1.1; }
.ai-detail-title p { margin: 5px 0 0; color: var(--ink-3); font-size: 12px; }
.ai-detail-metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ai-billing-wide-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(300px, .75fr); gap: 14px; margin-bottom: 14px; }
.ai-billing-wide-grid.accounts { grid-template-columns: minmax(0, 1.4fr) minmax(320px, .8fr); }
.ai-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 13px; }
.ai-section-head b { display: block; color: var(--ink); font-size: 15px; }
.ai-section-head div > span { display: block; margin-top: 4px; color: var(--ink-4); font-size: 10.5px; }
.ai-chart-legend { display: inline-flex; align-items: center; gap: 12px; }
.ai-chart-legend span { display: inline-flex !important; align-items: center; gap: 5px; margin-top: 0 !important; color: var(--ink-3) !important; }
.ai-chart-legend span::before { content: ""; width: 7px; height: 7px; border-radius: 2px; background: var(--brand); }
.ai-chart-legend .output::before { background: #9AB4F4; }
.ai-token-chart { display: grid; grid-template-columns: 36px minmax(0, 1fr); height: 220px; }
.ai-token-scale { display: flex; flex-direction: column; justify-content: space-between; padding: 1px 7px 24px 0; color: var(--ink-4); font-size: 9.5px; text-align: right; }
.ai-token-plot { position: relative; min-width: 0; }
.ai-token-grid { position: absolute; inset: 0 0 24px; display: flex; flex-direction: column; justify-content: space-between; pointer-events: none; }
.ai-token-grid i { display: block; height: 1px; background: var(--line-soft); }
.ai-token-bars { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(12, minmax(10px, 1fr)); gap: 5px; align-items: end; }
.ai-token-day { display: grid; grid-template-rows: minmax(0, 1fr) 20px; height: 100%; min-width: 0; align-items: end; }
.ai-token-stack { display: flex; align-items: flex-end; justify-content: center; gap: 2px; height: 100%; min-height: 0; }
.ai-token-stack span { display: block; width: min(11px, 42%); min-height: 2px; border-radius: 3px 3px 1px 1px; background: var(--brand); transition: height .45s cubic-bezier(.16,1,.3,1); }
.ai-token-stack .ai-token-output { background: #9AB4F4; }
.ai-token-day em { align-self: end; overflow: hidden; color: var(--ink-4); font-size: 9px; font-style: normal; text-align: center; white-space: nowrap; }
.ai-token-foot { display: flex; align-items: center; gap: 18px; margin-top: 7px; padding-top: 10px; border-top: 1px solid var(--line-soft); color: var(--ink-4); font-size: 10.5px; }
.ai-token-foot b { color: var(--ink-2); font-family: var(--fs-num); }
.ai-balance-split { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; }
.ai-balance-split > div { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 10px; }
.ai-balance-split span { display: block; color: var(--ink-4); font-size: 10.5px; }
.ai-balance-split b { display: block; margin-top: 5px; color: var(--ink); font-family: var(--fs-num); font-size: 17px; }
.ai-package-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 10px; border-top: 1px solid var(--line-soft); padding: 12px 0; }
.ai-package-row div b { display: block; color: var(--ink); font-size: 12px; }
.ai-package-row div span { display: block; margin-top: 3px; color: var(--ink-4); font-size: 10px; }
.ai-package-row strong { color: var(--brand); font-family: var(--fs-num); font-size: 16px; }
.ai-package-row > i { grid-column: 1 / -1; margin-top: 0; }
.ai-disabled-action { width: 100%; justify-content: center; margin-top: 4px; }
.ai-account-list { display: grid; gap: 0; border: 1px solid var(--line-soft); border-radius: 12px; overflow: hidden; }
.ai-account-row { display: grid; grid-template-columns: 8px minmax(150px, 1fr) 90px 90px minmax(100px, .7fr) auto; gap: 10px; align-items: center; padding: 11px; border-bottom: 1px solid var(--line-soft); }
.ai-account-row:last-child { border-bottom: 0; }
.ai-account-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--brand); }
.ai-account-row > div > b { display: block; color: var(--ink); font-size: 12px; }
.ai-account-row > div > span { display: block; color: var(--ink-4); font-size: 10px; }
.ai-budget-cell i { margin-top: 5px; }
.ai-source-groups { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.ai-source-label { display: block; margin-bottom: 6px; color: var(--ink-4); font-size: 10.5px; font-weight: 750; }
.ai-source-row { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 8px; align-items: center; padding: 8px 0; border-top: 1px solid var(--line-soft); font-size: 11px; }
.ai-source-row span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--ink-2); }
.ai-source-row b { color: var(--ink); font-family: var(--fs-num); }
.ai-source-row em { color: var(--brand); font-style: normal; font-family: var(--fs-num); }
.ai-alert-list { display: grid; gap: 8px; }
.ai-alert-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 10px; }
.ai-alert-row div b { display: block; color: var(--ink); font-size: 12px; }
.ai-alert-row div span { display: block; margin-top: 3px; color: var(--ink-3); font-size: 10.5px; }
.ai-alert-row em { color: var(--ink-3); font-size: 10.5px; font-style: normal; }

@media (max-width: 1180px) {
  .ai-company-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ai-overview-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ai-account-row { grid-template-columns: 8px minmax(140px, 1fr) 78px 78px minmax(90px, .7fr); }
  .ai-account-row > .btn { display: none; }
}
@media (max-width: 900px) {
  .ai-billing-wide-grid, .ai-billing-wide-grid.accounts { grid-template-columns: 1fr; }
  .ai-detail-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .admin-tabs { gap: 0; overflow-x: auto; overflow-y: hidden; flex-wrap: nowrap; }
  .admin-tabs button { flex: 0 0 auto; padding-inline: 14px; }
  .admin-tabs .billing-toggle { display: none; }
  .ai-billing-intro, .ai-promotion-strip { align-items: stretch; flex-direction: column; }
  .ai-source-state { justify-items: start; }
  .ai-overview-metrics, .ai-detail-metrics { grid-template-columns: 1fr 1fr; }
  .ai-company-grid { grid-template-columns: 1fr; }
  .ai-detail-head { grid-template-columns: 1fr; align-items: start; }
  .ai-detail-head > .badge { justify-self: start; }
  .ai-detail-title { align-items: flex-start; }
  .ai-token-chart { height: 188px; grid-template-columns: 30px minmax(0, 1fr); }
  .ai-token-bars { gap: 2px; }
  .ai-token-day em { font-size: 8px; }
  .ai-token-foot { align-items: flex-start; flex-direction: column; gap: 5px; }
  .ai-account-row { grid-template-columns: 8px minmax(0, 1fr) auto; }
  .ai-account-row > div:nth-of-type(3), .ai-account-row > div:nth-of-type(4), .ai-account-row > .ai-budget-cell { display: none; }
  .ai-source-groups { grid-template-columns: 1fr; }
  .ai-alert-row { grid-template-columns: auto minmax(0, 1fr); align-items: start; }
  .ai-alert-row > em { grid-column: 2; }
}
@media (prefers-reduced-motion: reduce) {
  .ai-company-card, .ai-token-stack span { transition: none; }
}

/* ============================================================

/* ============================================================
   新建抓取任务 子页（组合抓取）
   ============================================================ */
.grab-page { max-width: 1240px; }
.grab-page-head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 18px;
  margin: 8px 0 18px;
}
.grab-page-head h1 {
  margin: 5px 0 0; color: var(--ink); font-size: 29px; line-height: 1.12;
  font-weight: 860; letter-spacing: -.02em;
}
.grab-page-head p {
  margin: 7px 0 0; color: var(--ink-3); font-size: 13px; line-height: 1.55;
  max-width: 680px;
}
.grab-page-pills { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; max-width: 440px; }
.grab-page-pills span {
  height: 26px; display: inline-flex; align-items: center; padding: 0 10px;
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-3);
  border-radius: 999px; font-size: 11.5px; white-space: nowrap;
}
@media (max-width: 820px) {
  .grab-page-head { display: grid; }
  .grab-page-pills { justify-content: flex-start; max-width: none; }
}
.grab-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(340px, 420px); gap: 16px; align-items: stretch;
  border: 1px solid var(--line); background: linear-gradient(180deg, #FFFFFF 0%, #F7F9FD 100%);
  border-radius: 18px; padding: 18px; margin: 0 0 18px; box-shadow: var(--shadow);
}
.grab-hero-main { min-width: 0; display: grid; align-content: center; }
.grab-hero-title {
  margin-top: 6px; font-size: 24px; line-height: 1.12; font-weight: 850;
  color: var(--ink); letter-spacing: -.03em;
}
.grab-hero-sub { margin-top: 7px; font-size: 13px; line-height: 1.55; color: var(--ink-3); max-width: 680px; }
.grab-hero-tags { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 12px; }
.grab-hero-tags span {
  display: inline-flex; align-items: center; height: 25px; padding: 0 9px;
  border: 1px solid var(--line-soft); background: var(--surface); color: var(--ink-3);
  border-radius: 999px; font-size: 11.5px;
}
.grab-hero-side { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.grab-hero-metric {
  border: 1px solid var(--line-soft); background: var(--surface);
  border-radius: 13px; padding: 12px; display: grid; align-content: center; gap: 5px; min-width: 0;
}
.grab-hero-metric span { color: var(--ink-3); font-size: 11px; font-weight: 700; }
.grab-hero-metric b {
  color: var(--brand); font-size: 24px; font-weight: 850; line-height: 1;
  font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis;
}
.grab-hero-metric em { font-style: normal; color: var(--ink-4); font-size: 10.5px; line-height: 1.35; }
@media (max-width: 980px) {
  .grab-hero { grid-template-columns: 1fr; }
  .grab-hero-side { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 620px) { .grab-hero-side { grid-template-columns: 1fr; } }
.grab-mode-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 16px;
}
.grab-mode-card {
  min-height: 76px;
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: var(--r-sm);
  padding: 13px 14px;
  text-align: left;
  color: var(--ink-2);
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  align-items: start;
  column-gap: 10px;
  row-gap: 4px;
  box-shadow: var(--shadow-sm);
}
.grab-mode-card:not(.on) { opacity: .68; box-shadow: none; }
.grab-mode-card:hover {
  border-color: var(--brand-line);
  background: var(--surface-sunk);
}
.grab-mode-card.on {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: var(--brand);
  box-shadow: inset 0 0 0 1px rgba(30, 90, 77, .08);
}
.grab-mode-icon {
  grid-row: span 2;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  color: var(--ink-3);
}
.grab-mode-card.on .grab-mode-icon {
  border-color: var(--brand-line);
  background: var(--surface);
  color: var(--brand);
}
.grab-mode-card b {
  min-width: 0;
  color: inherit;
  font-size: 14px;
  font-weight: 850;
  line-height: 1.25;
}
.grab-mode-card em {
  grid-column: 2;
  color: var(--ink-4);
  font-size: 12px;
  font-style: normal;
  line-height: 1.45;
}
.grab-mode-card.on em { color: var(--brand); }
@media (max-width: 820px) {
  .grab-mode-grid { grid-template-columns: 1fr; }
}
.grab-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; }
@media (max-width: 1180px) { .grab-cols { grid-template-columns: minmax(0,1fr); } }
@media (max-width: 940px) { .grab-cols { grid-template-columns: 1fr; } }
.grab-main-card { border-radius: 16px; box-shadow: var(--shadow-sm); }
.grab-advanced-settings {
  margin: 0 0 14px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 0 13px;
}
.grab-advanced-settings > summary {
  cursor: pointer;
  list-style: none;
  padding: 12px 0;
  color: var(--ink-2);
  font-size: 12.5px;
  font-weight: 750;
}
.grab-advanced-settings > summary::-webkit-details-marker { display: none; }
.grab-advanced-settings > summary::after { content: "⌄"; float: right; color: var(--ink-4); }
.grab-advanced-settings[open] > summary::after { transform: rotate(180deg); }
.grab-maintenance-settings { margin-top: 14px; }
.grab-ready-bar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px;
  align-items: center;
  margin-top: 16px;
  padding: 13px;
  border: 1px solid var(--brand-line);
  background: linear-gradient(180deg, #F9FCFB 0%, var(--brand-soft) 100%);
  border-radius: 14px;
}
.grab-ready-summary { min-width: 0; display: grid; gap: 3px; }
.grab-ready-summary span { color: var(--ink-3); font-size: 11px; font-weight: 700; }
.grab-ready-summary b { color: var(--ink); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.grab-ready-summary em { color: var(--brand); font-size: 11.5px; font-style: normal; }
.grab-budget-input { display: inline-flex; align-items: center; gap: 5px; color: var(--ink-3); font-size: 11px; white-space: nowrap; }
.grab-budget-input input { width: 62px; min-height: 34px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); padding: 0 7px; color: var(--ink); font-family: var(--fs-num); }
.grab-budget-input b { color: var(--ink-2); font-size: 11px; }
.grab-ready-bar > small { grid-column: 1 / -1; color: var(--ink-3); font-size: 11px; line-height: 1.35; }
@media (max-width: 720px) {
  .grab-ready-bar { grid-template-columns: 1fr auto; }
  .grab-ready-bar .btn { grid-column: 1 / -1; justify-content: center; }
}
.grab-side-panel {
  position: sticky; top: 78px;
  border: 1px solid var(--line); background: var(--surface);
  border-radius: 16px; padding: 18px; box-shadow: var(--shadow-sm);
}
.grab-side-title { color: var(--ink); font-size: 13px; font-weight: 800; }
.grab-side-sub { color: var(--ink-3); font-size: 11.5px; line-height: 1.45; margin-top: 4px; }
.task-side-list { display: grid; gap: 8px; margin-top: 13px; }
.task-side-step {
  display: flex; align-items: flex-start; gap: 11px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 11px; padding: 11px;
}
.task-side-step.active {
  border-color: var(--brand-line); background: var(--brand-soft);
}
.task-side-step > .num {
  width: 24px; height: 24px; border-radius: 7px;
  display: grid; place-items: center; flex-shrink: 0;
  background: var(--surface); color: var(--ink-4);
  border: 1px solid var(--line-soft); font-size: 12px; font-weight: 850;
}
.task-side-step.active > .num {
  color: var(--brand); border-color: var(--brand-line);
}
.task-side-step b { display: block; color: var(--ink-2); font-size: 12.5px; line-height: 1.35; }
.task-side-step.active b { color: var(--brand); }
.task-side-step em { display: block; color: var(--ink-4); font-style: normal; font-size: 11.5px; line-height: 1.45; margin-top: 2px; }
.task-side-step.active em { color: var(--ink-3); }
.grab-side-note {
  display: grid; gap: 7px; margin-top: 14px;
  border: 1px solid #CDE7DA; background: #F0F7F3;
  border-radius: 12px; padding: 13px;
}
.grab-side-note b { color: #1B7A4E; font-size: 12.5px; }
.grab-side-note span { color: #3E6B55; font-size: 11.5px; line-height: 1.5; }
@media (max-width: 940px) { .grab-side-panel { position: static; } }
.grab-content-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-width: 0;
  max-width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--line-soft);
  border-radius: 11px;
  background: var(--surface-sunk);
}
.grab-content-summary-copy { min-width: 0; display: grid; gap: 3px; }
.grab-content-summary-copy > span { color: var(--ink-3); font-size: 11px; font-weight: 750; }
.grab-content-summary-copy b { color: var(--ink); font-size: 13px; line-height: 1.45; overflow-wrap: anywhere; }
.grab-content-summary-state { color: var(--brand); font-size: 11px; font-weight: 750; white-space: nowrap; }
.grab-content-settings { margin: 10px 0 0; min-width: 0; max-width: 100%; }
.grab-content-settings-body { min-width: 0; max-width: 100%; padding: 1px 0 2px; }
.grab-content-settings-title { margin: 2px 0 10px; color: var(--ink-3); font-size: 11px; font-weight: 750; }
.grab-content-settings .grab-fields-grid { min-width: 0; max-width: 100%; }
.grab-content-settings .field-check { min-width: 0; }
.grab-content-settings .field-check .fn { overflow-wrap: anywhere; }
.grab-data-definition {
  min-width: 0;
  max-width: 100%;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line-soft);
}
.grab-data-definition > summary {
  cursor: pointer;
  color: var(--ink-3);
  font-size: 12px;
  font-weight: 750;
}
.grab-data-definition-list { display: grid; gap: 10px; margin-top: 10px; }
.grab-data-definition-group { display: grid; gap: 5px; min-width: 0; }
.grab-data-definition-group > b { color: var(--ink-2); font-size: 12px; }
.grab-data-definition-row { display: grid; grid-template-columns: minmax(110px, .32fr) minmax(0, 1fr); gap: 8px; min-width: 0; color: var(--ink-3); font-size: 11.5px; line-height: 1.45; }
.grab-data-definition-row span,
.grab-data-definition-row small { min-width: 0; overflow-wrap: anywhere; }
.grab-data-definition-row small { color: var(--ink-4); font-size: inherit; }
.grab-fields-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
@media (max-width: 760px) { .grab-fields-grid { grid-template-columns: 1fr; } }
@media (max-width: 480px) {
  .grab-content-summary { grid-template-columns: 1fr; }
  .grab-content-summary-state { justify-self: start; white-space: normal; }
  .grab-data-definition-row { grid-template-columns: 1fr; gap: 2px; }
}
@media (max-width: 1120px) {
  .followup-plan-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .followup-plan-grid { grid-template-columns: 1fr; }
  .followup-plan-head { flex-direction: column; gap: 10px; }
  .followup-plan-head em { white-space: normal; }
}
.fg-col > .eyebrow { margin-bottom: 10px; }
.grab-range-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(240px, .55fr);
  gap: 14px;
}
.grab-range-grid .seg {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
  padding: 4px;
}
.grab-range-grid .seg button {
  min-height: 38px;
  justify-content: center;
  white-space: nowrap;
}
.followup-plan-panel {
  margin: 14px 0 2px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
  border-radius: 16px;
  padding: 14px;
  box-shadow: 0 12px 30px -26px rgba(45, 91, 214, .42);
}
.followup-plan-panel.idle {
  background: var(--surface-sunk);
  border-color: var(--line-soft);
  box-shadow: none;
}
.followup-plan-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}
.followup-plan-head b {
  display: block;
  margin-top: 4px;
  color: var(--ink);
  font-size: 15px;
  font-weight: 820;
}
.followup-plan-head p {
  margin: 5px 0 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.55;
}
.followup-plan-head em {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  border: 1px solid #F1D8AF;
  background: #FFF8EB;
  color: #9A641C;
  border-radius: 999px;
  padding: 5px 10px;
  font-style: normal;
  font-size: 11px;
  font-weight: 760;
  white-space: nowrap;
}
.followup-plan-head em.ok {
  border-color: #BDE4D2;
  background: #EFFAF5;
  color: #18734A;
}
.followup-plan-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 9px;
}
.followup-plan-field {
  display: grid;
  gap: 7px;
  min-width: 0;
}
.followup-plan-field > span {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 760;
}
.followup-plan-field .text-input {
  min-height: 36px;
  padding: 7px 9px;
  font-size: 12px;
}
.followup-plan-field .text-input:disabled {
  color: var(--ink-4);
  background: #F3F5F9;
  border-color: var(--line-soft);
}
.followup-execution-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 12px;
}
.followup-execution-strip span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 26px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 999px;
  padding: 4px 9px;
  font-size: 11px;
  font-weight: 720;
  line-height: 1.25;
}
.field-preset-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 10px 0 14px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 12px;
  padding: 10px 12px;
  font-size: 12px;
  line-height: 1.5;
}
.field-preset-note svg {
  flex-shrink: 0;
  margin-top: 2px;
}
.grab-task-card {
  border: 1px solid var(--line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FAFF 100%);
  border-radius: 16px;
  padding: 14px;
  margin: 0 0 14px;
  box-shadow: 0 10px 26px -24px rgba(45,91,214,.35);
}
.grab-task-card .field {
  margin-bottom: 12px;
}
.grab-kind-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
  margin-bottom: 10px;
}
.grab-kind-card {
  min-height: 86px;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 13px;
  padding: 12px;
  display: grid;
  align-content: start;
  gap: 6px;
  color: var(--ink-3);
}
.grab-kind-card.on {
  border-color: var(--brand);
  background: var(--brand-soft);
  color: var(--brand);
  box-shadow: inset 0 0 0 1px rgba(45,91,214,.08);
}
.grab-kind-card b {
  color: inherit;
  font-size: 13px;
  font-weight: 850;
}
.grab-kind-card span {
  color: var(--ink-4);
  font-size: 11.5px;
  line-height: 1.45;
}
.grab-kind-card.on span {
  color: var(--brand);
}
.save-rule-toggle {
  border: 1px dashed var(--line);
  background: var(--surface-sunk);
  border-radius: 13px;
  padding: 11px 12px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  cursor: pointer;
}
.save-rule-toggle.on {
  border-style: solid;
  border-color: var(--brand-line);
  background: #F3F7FF;
}
.save-rule-toggle input {
  margin-top: 3px;
}
.save-rule-toggle span {
  display: grid;
  gap: 3px;
}
.save-rule-toggle b {
  color: var(--ink);
  font-size: 12.5px;
  font-weight: 850;
}
.save-rule-toggle em {
  color: var(--ink-4);
  font-style: normal;
  font-size: 11.5px;
  line-height: 1.45;
}
@media (max-width: 760px) {
  .grab-kind-grid { grid-template-columns: 1fr; }
}
.date-range-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}
.date-range-row label {
  display: grid;
  gap: 5px;
}
.date-range-row span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 700;
}
.date-range-trigger {
  width: 100%;
  margin-top: 10px;
  border: 1px solid var(--brand-line);
  background: linear-gradient(180deg, #F8FBFF 0%, #F1F6FF 100%);
  color: var(--ink);
  border-radius: 14px;
  padding: 13px 14px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  text-align: left;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.72);
}
.date-range-trigger:hover {
  border-color: var(--brand);
  background: #F3F7FF;
}
.date-range-trigger span {
  display: grid;
  gap: 3px;
  min-width: 0;
}
.date-range-trigger em {
  font-style: normal;
  color: var(--ink-4);
  font-size: 11px;
  font-weight: 750;
}
.date-range-trigger b {
  color: var(--brand);
  font-size: 14px;
  font-family: var(--fs-num);
  font-weight: 820;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.date-range-trigger i {
  flex-shrink: 0;
  min-width: 54px;
  height: 30px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  background: var(--brand);
  color: white;
  font-style: normal;
  font-size: 12px;
  font-weight: 850;
}
.date-picker-modal {
  display: grid;
  gap: 15px;
}
.date-picker-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
  gap: 10px;
  align-items: stretch;
}
.date-picker-summary > div {
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  border-radius: 13px;
  padding: 11px 12px;
  display: grid;
  gap: 4px;
}
.date-picker-summary span {
  color: var(--ink-4);
  font-size: 11px;
  font-weight: 750;
}
.date-picker-summary b {
  color: var(--brand);
  font-family: var(--fs-num);
  font-size: 16px;
  font-weight: 860;
}
.date-picker-summary em {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 13px;
  padding: 11px 12px;
  display: flex;
  align-items: center;
  color: var(--ink-3);
  font-size: 12px;
  font-style: normal;
  font-weight: 720;
}
.date-picker-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.date-picker-toolbar b {
  color: var(--ink);
  font-size: 13px;
  font-weight: 820;
}
.date-picker-months {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.date-picker-month {
  border: 1px solid var(--line);
  background: #FBFCFF;
  border-radius: 16px;
  padding: 13px;
}
.date-picker-month-title {
  color: var(--ink);
  font-size: 13px;
  font-weight: 850;
  margin-bottom: 10px;
}
.date-picker-weekdays,
.date-picker-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 5px;
}
.date-picker-weekdays span {
  color: var(--ink-4);
  font-size: 10.5px;
  font-weight: 760;
  text-align: center;
  padding-bottom: 3px;
}
.date-picker-grid button {
  height: 34px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--surface);
  color: var(--ink-2);
  font-family: var(--fs-num);
  font-size: 12px;
  font-weight: 760;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease, color .15s ease, transform .15s ease;
}
.date-picker-grid button:hover:not(:disabled) {
  border-color: var(--brand-line);
  color: var(--brand);
  transform: translateY(-1px);
}
.date-picker-grid button.in-range {
  background: #EAF2FF;
  border-color: #D6E5FF;
  color: var(--brand);
  border-radius: 5px;
}
.date-picker-grid button.selected {
  background: var(--brand);
  border-color: var(--brand);
  color: #fff;
  box-shadow: 0 8px 18px -12px rgba(45,91,214,.65);
}
.date-picker-grid button.empty {
  background: transparent;
  border-color: transparent;
  cursor: default;
}
@media (max-width: 760px) {
  .date-picker-summary,
  .date-picker-months { grid-template-columns: 1fr; }
}
.range-safety-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin-top: 10px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
  border-radius: 10px;
  padding: 10px 11px;
  font-size: 11.5px;
  line-height: 1.45;
}
.range-safety-note svg { flex-shrink: 0; margin-top: 1px; }
.range-safety-note.warn {
  border-color: rgba(194, 117, 36, .24);
  background: rgba(194, 117, 36, .08);
  color: var(--warn);
}
.range-safety-note.own {
  border-color: var(--ok-line);
  background: var(--ok-soft);
  color: var(--ok);
}
@media (max-width: 620px) {
  .grab-range-grid { grid-template-columns: 1fr; }
  .date-range-row { grid-template-columns: 1fr; }
}
.field-topology-strip {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px;
  border: 1px solid var(--brand-line); background: var(--brand-soft);
  border-radius: 13px; padding: 10px; margin-bottom: 14px;
}
.field-topology-strip div {
  border: 1px solid rgba(23, 107, 91, .13); background: rgba(255,255,255,.68);
  border-radius: 10px; padding: 8px 9px;
}
.field-topology-strip div.optional-state {
  border-color: var(--line-soft);
  background: var(--surface);
}
.field-topology-strip span { display: block; color: var(--ink-3); font-size: 10.5px; font-weight: 700; }
.field-topology-strip b { display: block; margin-top: 3px; color: var(--brand); font-size: 17px; font-weight: 850; font-variant-numeric: tabular-nums; }
.field-topology-strip div.optional-state b {
  color: var(--ink-2);
  font-size: 15px;
  white-space: nowrap;
}
.field-topology-strip p {
  grid-column: 1 / -1; margin: 1px 0 0; color: var(--ink-3); font-size: 11.5px; line-height: 1.45;
}
@media (max-width: 680px) { .field-topology-strip { grid-template-columns: 1fr; } }
.field-check { display: flex; gap: 10px; align-items: flex-start; border: 1px solid var(--line); border-radius: 10px;
  padding: 11px 12px; margin-bottom: 9px; cursor: pointer; transition: .14s; }
.field-check:hover { border-color: var(--brand-line); }
.field-check.on { border-color: var(--brand); background: var(--brand-soft); }
.field-check.auto-on:not(.on) { border-color: #BBD3E9; background: #EEF6FC; }
.field-check.auto-on.partial:not(.on) { border-color: #D4C9EE; background: #F4F0FB; }
.field-check.disabled { cursor: not-allowed; opacity: .62; background: var(--surface-sunk); }
.field-check.disabled:hover { border-color: var(--line); }
.field-check .ck { width: 17px; height: 17px; border-radius: 5px; border: 1.5px solid var(--line); display: grid; place-items: center;
  flex-shrink: 0; margin-top: 1px; background: var(--surface); }
.field-check.on .ck { background: var(--brand); border-color: var(--brand); color: #fff; }
.field-check.auto-on:not(.on) .ck { background: #D9EBF8; border-color: #8DBADE; color: #2D6F9F; }
.field-check.auto-on.partial:not(.on) .ck { background: #E9E0FA; border-color: #B8A2E0; color: #6F56A8; }
.field-check .fn { font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 7px; }
.field-check .fd { font-size: 11px; color: var(--ink-3); margin-top: 2px; line-height: 1.4; }
.field-check .fc { font-size: 11px; color: var(--ink-4); font-variant-numeric: tabular-nums; margin-top: 3px; }
.field-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 7px; }
.field-tags span { font-size: 10.5px; line-height: 1.35; color: var(--ink-2);
  background: var(--surface-sunk); border: 1px solid var(--line-soft); border-radius: 999px; padding: 2px 7px; }
.field-check.on .field-tags span { background: rgba(255,255,255,.62); border-color: var(--brand-line); color: var(--brand); }
.field-check.auto-on:not(.on) .field-tags span { background: rgba(255,255,255,.72); border-color: #BBD3E9; color: #2D6F9F; }
.field-check.auto-on.partial:not(.on) .field-tags span { border-color: #D4C9EE; color: #6F56A8; }
.field-deps { font-size: 10.5px; color: var(--brand); margin-top: 6px; line-height: 1.35; }
.field-check.auto-on:not(.on) .field-deps { color: #2D6F9F; }
.field-check.auto-on.partial:not(.on) .field-deps { color: #6F56A8; }
.field-auto-note {
  width: fit-content; margin-top: 7px; border: 1px solid #BBD3E9; background: rgba(255,255,255,.7);
  color: #2D6F9F; border-radius: 999px; padding: 3px 8px; font-size: 10.5px; line-height: 1.35;
}
.field-check.partial .field-auto-note { border-color: #D4C9EE; color: #6F56A8; }
.field-route { font-family: var(--fs-num); font-size: 10px; color: var(--ink-4); margin-top: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.account-textarea { min-height: 86px; resize: vertical; line-height: 1.55; font-family: var(--fs-num); }
.probe-actions { display: flex; align-items: center; gap: 10px; margin-top: 9px; flex-wrap: wrap; }
.project-select-meta {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px;
}
.project-select-meta span {
  border: 1px solid var(--line-soft); background: var(--surface-sunk); color: var(--ink-3);
  border-radius: 999px; padding: 3px 8px; font-size: 11px; line-height: 1.35;
}
.post-add-actions {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 12px;
}
.post-add-actions .btn { height: 30px; padding: 0 10px; font-size: 11.5px; }
.post-add-actions span { margin-left: auto; font-size: 11.5px; color: var(--ink-3); }
.post-add-account-list {
  display: grid; gap: 8px; margin-top: 10px; max-height: 240px; overflow: auto;
}
.post-add-account {
  display: grid; grid-template-columns: 18px 28px minmax(0, 1fr); gap: 9px; align-items: center;
  border: 1px solid var(--line-soft); background: var(--surface); border-radius: 10px;
  padding: 9px 10px; cursor: pointer;
}
.post-add-account.on { border-color: var(--brand-line); background: var(--brand-soft); }
.post-add-account input { accent-color: var(--brand); margin: 0; }
.post-add-account span { min-width: 0; display: grid; gap: 2px; }
.post-add-account b { font-size: 12.5px; color: var(--ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.post-add-account em { font-style: normal; font-size: 11px; color: var(--ink-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.policy-modal-intro {
  display: flex; align-items: flex-start; gap: 8px; border: 1px solid var(--line-soft);
  border-radius: 12px; background: var(--surface-sunk); padding: 10px 12px;
  color: var(--ink-2); font-size: 12px; line-height: 1.45; margin-bottom: 14px;
}
.policy-modal-intro svg { color: var(--brand); flex-shrink: 0; margin-top: 1px; }
.policy-workbench {
  display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: 16px; align-items: start;
}
.policy-summary-side {
  border: 1px solid var(--line); background: var(--surface);
  border-radius: 16px; padding: 14px; box-shadow: var(--shadow-sm);
}
.policy-summary-title { color: var(--ink); font-size: 12.5px; font-weight: 800; margin-bottom: 10px; }
.policy-summary-item {
  display: flex; align-items: flex-start; gap: 9px;
  border: 1px solid var(--line-soft); background: var(--surface-sunk);
  border-radius: 10px; padding: 10px; margin-bottom: 8px;
}
.policy-summary-item.active {
  border-color: var(--brand-line); background: var(--brand-soft);
}
.policy-summary-item > span {
  width: 24px; height: 24px; border-radius: 7px; display: grid; place-items: center;
  background: var(--surface); color: var(--ink-3); border: 1px solid var(--line-soft);
  font-size: 11px; font-weight: 850; flex-shrink: 0;
}
.policy-summary-item.active > span { color: var(--brand); border-color: var(--brand-line); }
.policy-summary-item b { display: block; color: var(--ink-2); font-size: 12px; line-height: 1.35; }
.policy-summary-item.active b { color: var(--brand); }
.policy-summary-item em { display: block; color: var(--ink-4); font-style: normal; font-size: 11px; line-height: 1.45; margin-top: 2px; }
.policy-summary-item.active em { color: var(--ink-3); }
.policy-summary-note {
  border: 1px solid var(--warn-line); background: var(--warn-soft);
  border-radius: 11px; padding: 11px; margin-top: 10px;
}
.policy-summary-note b { display: block; color: #9A6712; font-size: 12px; }
.policy-summary-note span { display: block; color: #7E6326; font-size: 11px; line-height: 1.45; margin-top: 5px; }
.policy-main-form {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 16px;
  padding: 14px;
}
.policy-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.policy-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 4px 0 14px; }
.policy-toggle,
.policy-check {
  border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface);
  padding: 10px 11px; display: flex; align-items: center; gap: 8px;
  font-size: 12.5px; color: var(--ink-2); cursor: pointer;
}
.policy-toggle input,
.policy-check input { accent-color: var(--brand); margin: 0; }
.policy-preview {
  margin-top: 12px; border: 1px solid var(--brand-line); background: var(--brand-soft);
  border-radius: 12px; padding: 10px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px;
}
.policy-preview span { font-size: 11.5px; color: var(--brand); display: flex; align-items: center; gap: 5px; min-width: 0; }
@media (max-width: 760px) {
  .policy-workbench,
  .policy-form-grid,
  .policy-check-grid,
  .policy-preview,
  .policy-capture-options,
  .project-policy-scope-options { grid-template-columns: 1fr; }
}
.probe-note { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); background: var(--surface-sunk);
  border-radius: var(--r); color: var(--ink-2); font-size: 12px; line-height: 1.45; margin-top: 10px; }
.probe-note.bad { background: var(--bad-soft); border-color: #E2B7AA; color: #863520; }
.probe-note.warn { background: var(--warn-soft); border-color: var(--warn-line); color: #9A6712; }
.resolve-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
@media (max-width: 940px) { .resolve-grid { grid-template-columns: 1fr; } }
.resolve-card { border: 1px solid var(--line); background: var(--surface-sunk); border-radius: var(--r); padding: 11px 12px; min-width: 0; }
.resolve-card.ok { border-color: var(--brand-line); background: var(--brand-soft); }
.resolve-card.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.resolve-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.resolve-name { font-size: 13px; font-weight: 700; margin-top: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.resolve-meta { font-size: 11px; color: var(--ink-3); margin-top: 3px; line-height: 1.45; }
.resolve-sec { font-family: var(--fs-num); font-size: 10px; color: var(--ink-4); margin-top: 7px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 去重提示 */
.dedup { display: flex; align-items: flex-start; gap: 9px; background: var(--warn-soft); border: 1px solid var(--warn-line);
  color: #9A6712; border-radius: var(--r); padding: 11px 13px; font-size: 12.5px; line-height: 1.5; }

.strategy-panel {
  border: 1px solid var(--line); background: linear-gradient(180deg, var(--surface), var(--surface-sunk));
  border-radius: var(--r-lg); padding: 14px; margin: 14px 0 16px; box-shadow: var(--shadow-sm);
}
.strategy-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.strategy-head b { display: block; margin-top: 3px; font-size: 14px; color: var(--ink); }
.strategy-head span { flex-shrink: 0; border: 1px solid var(--brand-line); background: var(--brand-soft); color: var(--brand);
  border-radius: 999px; padding: 4px 9px; font-size: 11px; font-weight: 700; }
.strategy-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; }
@media (max-width: 1080px) { .strategy-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .strategy-grid { grid-template-columns: 1fr; } }
.strategy-card { border: 1px solid var(--line-soft); background: var(--surface); border-radius: 10px; padding: 10px; min-width: 0; display: grid; gap: 8px; }
.strategy-card.init { border-color: #C9D8C5; }
.strategy-card.daily { border-color: #BBD3E9; background: #F4FAFE; }
.strategy-card.asset { border-color: #D8CFB9; }
.strategy-card.weekly { border-color: #E6D6A8; background: #FFFCF3; }
.strategy-card.portrait { border-color: #D4C9EE; background: #F7F3FC; }
.strategy-step { width: fit-content; font-family: var(--fs-num); font-size: 10px; font-weight: 800; letter-spacing: .06em;
  border-radius: 999px; border: 1px solid var(--line-soft); padding: 2px 7px; color: var(--ink-3); background: var(--surface-sunk); }
.strategy-title { font-size: 12.5px; font-weight: 760; color: var(--ink); line-height: 1.35; }
.strategy-meta { margin-top: 4px; font-size: 10.5px; color: var(--brand); font-weight: 700; }
.strategy-copy { margin-top: 7px; color: var(--ink-3); font-size: 10.5px; line-height: 1.45; }
.strategy-cost { margin-top: 8px; color: var(--ink-2); font-size: 10.5px; font-weight: 700; font-variant-numeric: tabular-nums; }
.strategy-note { display: flex; gap: 8px; align-items: flex-start; margin-top: 11px; color: var(--ink-2); font-size: 11.5px; line-height: 1.45;
  border-top: 1px solid var(--line-soft); padding-top: 10px; }

.grab-summary { position: sticky; top: 78px; }
.sum-line { display: flex; justify-content: space-between; gap: 12px; font-size: 12.5px; padding: 7px 0; border-bottom: 1px solid var(--line-soft); }
.sum-line:last-of-type { border-bottom: 0; }
.sum-line .sv { font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sum-line.wrap .sv {
  white-space: normal;
  text-align: right;
  line-height: 1.45;
}
.daily-local-summary-card { margin-top: 12px; border: 1px solid var(--ok-line); background: var(--ok-soft); border-radius: 11px; padding: 11px; }
.daily-local-summary-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.daily-local-summary-head span { display: inline-flex; align-items: center; gap: 6px; color: var(--ink); font-size: 12px; font-weight: 750; }
.daily-local-summary-head b { color: var(--ok); font-size: 11px; }
.daily-local-summary-card p { margin: 7px 0 0; color: var(--ink-2); font-size: 11px; line-height: 1.5; }
.daily-local-summary-card em { display: block; margin-top: 6px; color: var(--ink-3); font-size: 10.5px; font-style: normal; line-height: 1.45; }
.sum-cost { display: flex; justify-content: space-between; align-items: baseline; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line); }
.sum-cost .big { font-size: 22px; font-weight: 750; color: var(--brand); font-variant-numeric: tabular-nums; }
.cost-breakdown { margin-top: 9px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cost-breakdown div { background: var(--surface-sunk); border: 1px solid var(--line-soft); border-radius: 9px; padding: 8px 9px; }
.cost-breakdown span { display: block; font-size: 10.5px; color: var(--ink-3); }
.cost-breakdown b { font-size: 14px; font-weight: 720; color: var(--ink); font-variant-numeric: tabular-nums; }
.cost-list { margin-top: 10px; max-height: 220px; overflow: auto; border-top: 1px solid var(--line-soft); }
.cost-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); }
.cost-row .ct { font-size: 12px; font-weight: 650; }
.cost-row .cs { font-size: 10.5px; color: var(--ink-3); margin-top: 1px; }
.cost-row > .num { font-size: 12px; color: var(--brand); font-weight: 720; flex-shrink: 0; }
.mini-tag { display: inline-flex; align-items: center; margin-left: 6px; border: 1px solid var(--brand-line);
  color: var(--brand); background: var(--brand-soft); border-radius: 999px; padding: 1px 6px; font-size: 10px; font-weight: 650; }
.topology-panel { margin-top: 12px; border: 1px solid var(--line); background: var(--surface-sunk); border-radius: 11px; padding: 11px; }
.topology-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.topology-head b { font-size: 11px; color: var(--ink-3); font-weight: 650; }
.topology-list { display: grid; gap: 8px; max-height: 260px; overflow: auto; }
.topology-row { border: 1px solid var(--line-soft); background: var(--surface); border-radius: 9px; padding: 9px; }
.topology-row.base { background: color-mix(in srgb, var(--surface) 76%, var(--brand-soft)); }
.topology-title { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; font-weight: 750; color: var(--ink); }
.topology-title em { font-style: normal; font-size: 10px; color: var(--brand); border: 1px solid var(--brand-line); background: var(--brand-soft); border-radius: 999px; padding: 1px 6px; flex-shrink: 0; }
.topology-endpoint { margin-top: 4px; font-family: var(--fs-num); font-size: 10px; color: var(--ink-4); line-height: 1.35; word-break: break-all; }
.topology-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 7px; font-size: 10.5px; align-items: center; }
.topology-tags b { color: var(--ink-3); font-size: 10.5px; font-weight: 650; }
.topology-tags span { border: 1px solid var(--brand-line); background: var(--brand-soft); color: var(--brand); border-radius: 999px; padding: 2px 6px; }
.topology-tags.bonus span { border-color: var(--line-soft); background: var(--surface-sunk); color: var(--ink-2); }
.topology-foot { display: flex; justify-content: space-between; gap: 8px; border-top: 1px solid var(--line-soft); margin-top: 8px; padding-top: 7px; color: var(--ink-3); font-size: 10.5px; }
.topology-empty { font-size: 11.5px; color: var(--ink-3); line-height: 1.45; }
.rate-calib { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.rate-calib label { display: grid; gap: 4px; font-size: 10.5px; color: var(--ink-3); }
.rate-calib .text-input { padding: 8px 9px; font-size: 12px; font-family: var(--fs-num); }
.grab-confirm-modal {
  width: min(560px, calc(100vw - 32px));
}
.grab-confirm-body {
  display: grid;
  gap: 11px;
  min-height: 0;
  overflow: auto;
  padding: 18px 20px 14px;
}
.grab-confirm-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 132px;
  gap: 12px;
  align-items: start;
}
.grab-confirm-top h3 {
  margin: 5px 0 4px;
  font-size: 22px;
  line-height: 1.12;
  letter-spacing: 0;
}
.grab-confirm-top p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12.5px;
  line-height: 1.4;
}
.grab-confirm-cost {
  border: 1px solid var(--brand-line);
  background: linear-gradient(180deg, #F8FAFF, var(--brand-soft));
  border-radius: 12px;
  padding: 11px 12px;
  display: grid;
  align-content: center;
  gap: 3px;
  text-align: right;
}
.grab-confirm-cost.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}
.grab-confirm-cost span {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 750;
}
.grab-confirm-cost b {
  color: var(--brand);
  font-family: var(--fs-num);
  font-size: 28px;
  line-height: 1;
  font-weight: 850;
}
.grab-confirm-cost.warn b { color: var(--warn); }
.grab-confirm-cost em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 11px;
}
.grab-confirm-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.grab-confirm-summary > div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 9px 10px;
  min-width: 0;
}
.grab-confirm-summary span { display: block; color: var(--ink-3); font-size: 10.5px; font-weight: 700; }
.grab-confirm-summary b { display: block; margin-top: 3px; color: var(--ink); font-size: 12.5px; line-height: 1.35; }
.grab-confirm-template { margin: 0; }
.grab-confirm-tech {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 0 10px;
}
.grab-confirm-tech > summary { cursor: pointer; padding: 10px 0; color: var(--ink-2); font-size: 12px; font-weight: 750; }
.grab-confirm-tech > div { display: grid; gap: 5px; padding: 0 0 10px; color: var(--ink-3); font-size: 11px; line-height: 1.4; }
.grab-confirm-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 7px;
}
.grab-confirm-stat {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 11px;
  padding: 10px;
  min-width: 0;
}
.grab-confirm-stat.on {
  border-color: var(--brand-line);
  background: color-mix(in srgb, var(--surface) 72%, var(--brand-soft));
}
.grab-confirm-stat span {
  display: block;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 750;
}
.grab-confirm-stat b {
  display: block;
  margin-top: 5px;
  color: var(--ink);
  font-size: 23px;
  line-height: 1;
  font-weight: 850;
}
.grab-confirm-stat b em {
  margin-left: 3px;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 700;
  font-style: normal;
}
.grab-confirm-stat small {
  display: block;
  margin-top: 6px;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.grab-confirm-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
.grab-confirm-meta > div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 11px;
  padding: 9px 10px;
  min-width: 0;
}
.grab-confirm-meta span {
  display: block;
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 700;
}
.grab-confirm-meta b {
  display: block;
  margin-top: 3px;
  font-size: 12.5px;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.grab-confirm-meta em {
  display: block;
  margin-top: 3px;
  color: var(--ink-3);
  font-size: 10.5px;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-style: normal;
}
.grab-confirm-note {
  display: grid;
  gap: 4px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 8px 10px;
  color: var(--ink-2);
  font-size: 11.5px;
  line-height: 1.45;
}
.grab-confirm-note > span { display: block; }
.grab-confirm-note.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
  color: var(--warn);
}
.grab-confirm-actions {
  gap: 8px;
  justify-content: flex-end;
}
.grab-confirm-actions .btn.primary[disabled] {
  opacity: .55;
  cursor: not-allowed;
}
@media (max-width: 760px) {
  .grab-confirm-top,
  .grab-confirm-stats,
  .grab-confirm-meta,
  .grab-confirm-summary {
    grid-template-columns: 1fr;
  }
  .grab-confirm-cost { text-align: left; }
  .grab-confirm-actions {
    flex-wrap: wrap;
  }
  .grab-confirm-actions .btn {
    flex: 1 1 150px;
    justify-content: center;
  }
}

/* ============================================================
   项目登记台
   ============================================================ */
.local-ops-page {
  max-width: 1180px;
  margin: 0 auto;
  animation: panelRise var(--motion-med) var(--motion-ease);
}
.local-ops-hero {
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(420px, 1.08fr);
  gap: 24px;
  align-items: stretch;
  padding: 24px;
  margin-bottom: 16px;
}
.local-ops-hero.compact {
  grid-template-columns: minmax(0, .72fr) minmax(420px, 1.28fr);
  padding: 18px;
  margin-bottom: 14px;
}
.local-ops-hero h2 {
  margin: 12px 0 0;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -.035em;
}
.local-ops-hero p {
  margin: 10px 0 0;
  max-width: 560px;
  color: var(--ink-3);
  font-size: 13px;
  line-height: 1.65;
}
.local-ops-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  border: 0;
  border-radius: 0;
  overflow: visible;
  background: transparent;
}
.local-ops-summary div {
  background: var(--surface);
  border-left: 1px solid var(--line-soft);
  padding: 17px 14px;
  display: grid;
  align-content: center;
  gap: 5px;
  min-height: 98px;
}
.local-ops-summary div:first-child { border-left: 0; }
.local-ops-summary span {
  font-size: 11.5px;
  color: var(--ink-3);
  font-weight: 700;
}
.local-ops-summary b {
  font-family: var(--fs-num);
  font-size: 31px;
  line-height: 1;
  color: var(--brand);
  letter-spacing: -.025em;
}
.local-ops-summary em {
  font-style: normal;
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1.35;
}
.local-ops-switch {
  max-width: 560px;
  margin: 0;
}
.local-ops-secondary-head {
  margin: 16px 0 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
}
.local-ops-secondary-head.primary {
  margin-top: 14px;
  border: 1px solid var(--brand-line);
  background: var(--surface);
  border-radius: 14px;
  padding: 12px;
}
.local-ops-secondary-note {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 11px 12px;
  margin-bottom: 12px;
}
.local-ops-secondary-note b,
.local-ops-secondary-note span {
  display: block;
}
.local-ops-secondary-note b {
  color: var(--ink);
  font-size: 12.5px;
}
.local-ops-secondary-note span {
  margin-top: 4px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.4;
}
.local-ops-secondary-head > div:first-child {
  display: grid;
  gap: 3px;
}
.local-ops-secondary-head b {
  color: var(--ink);
  font-size: 13px;
}
.local-ops-secondary-head span {
  color: var(--ink-3);
  font-size: 11.5px;
}
.local-ops-map {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}
.local-ops-field-card {
  border: 1px solid var(--line);
  background: var(--surface);
  border-radius: 16px;
  box-shadow: var(--shadow);
  padding: 18px;
}
.local-ops-field-card.auto { border-color: var(--ok-line); background: linear-gradient(180deg, #FFFFFF 0%, #F7FBF9 100%); }
.local-ops-field-card.manual { border-color: var(--warn-line); background: linear-gradient(180deg, #FFFFFF 0%, #FFF9ED 100%); }
.local-ops-field-card.review { border-color: var(--brand-line); background: linear-gradient(180deg, #FFFFFF 0%, #F7F9FF 100%); }
.local-ops-field-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: flex-start;
  padding-bottom: 13px;
  border-bottom: 1px solid var(--line-soft);
}
.local-ops-field-head b {
  display: block;
  font-size: 16px;
  font-weight: 850;
}
.local-ops-field-head span {
  display: block;
  margin-top: 4px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.4;
}
.local-ops-field-list {
  display: grid;
  gap: 10px;
  padding-top: 13px;
}
.local-ops-field-row {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.62);
  border-radius: 12px;
  padding: 12px;
}
.local-ops-field-row strong {
  display: block;
  font-size: 13px;
  color: var(--ink);
}
.local-ops-field-row p {
  margin: 6px 0 0;
  color: var(--ink-2);
  font-size: 12.2px;
  line-height: 1.48;
}
.local-ops-field-row em {
  display: inline-flex;
  margin-top: 8px;
  font-style: normal;
  color: var(--ink-3);
  background: var(--surface-sunk);
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 10.8px;
  line-height: 1.2;
}
.local-ops-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(320px, .75fr);
  gap: 14px;
  align-items: start;
}
.local-ops-stack {
  display: grid;
  gap: 14px;
}
.local-ops-hero-daily {
  grid-template-columns: minmax(0, .95fr) minmax(420px, 1.05fr);
  align-items: stretch;
}
.local-ops-daily-route {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.local-ops-daily-route div {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.76);
  border-radius: 12px;
  padding: 11px;
  display: grid;
  gap: 6px;
}
.local-ops-daily-route div.primary {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.local-ops-daily-route span {
  width: 24px;
  height: 24px;
  border-radius: 8px;
  display: grid;
  place-items: center;
  background: var(--surface-sunk);
  color: var(--brand);
  font-family: var(--fs-num);
  font-size: 12px;
  font-weight: 850;
}
.local-ops-daily-route b {
  color: var(--ink);
  font-size: 12.5px;
}
.local-ops-daily-route em {
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.3;
  font-style: normal;
}
.local-ops-entry-form {
  grid-column: 1 / -1;
}
.local-ops-entry-type-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  margin-bottom: 14px;
}
.local-ops-entry-type-row.compact {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.local-ops-entry-type-row button {
  min-height: 76px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 13px;
  padding: 12px;
  text-align: left;
  color: var(--ink);
  cursor: pointer;
  transition: border-color var(--motion-fast) var(--motion-ease), background var(--motion-fast) var(--motion-ease), transform var(--motion-fast) var(--motion-ease);
}
.local-ops-entry-type-row button:hover {
  transform: translateY(-1px);
  border-color: var(--brand-line);
}
.local-ops-entry-type-row button.on {
  border-color: var(--brand);
  background: var(--brand-soft);
}
.local-ops-entry-type-row b,
.local-ops-entry-type-row span {
  display: block;
}
.local-ops-entry-type-row b {
  font-size: 13px;
  font-weight: 850;
}
.local-ops-entry-type-row span {
  margin-top: 6px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.35;
}
.local-ops-form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.local-ops-form-grid.compact {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.local-ops-form-grid label {
  display: grid;
  gap: 6px;
  min-width: 0;
}
.local-ops-form-grid label.wide {
  grid-column: span 2;
}
.local-ops-form-grid label > span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 750;
}
.local-ops-fake-input {
  min-height: 42px;
  border: 1px solid var(--line-soft);
  background: #fff;
  border-radius: 11px;
  padding: 11px 12px;
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.35;
  display: flex;
  align-items: center;
}
.local-ops-fake-input.locked {
  background: var(--surface-sunk);
  color: var(--brand);
  font-weight: 750;
}
.local-ops-fake-input.required {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand-press);
  font-weight: 750;
}
.local-ops-fake-input.textarea {
  min-height: 82px;
  align-items: flex-start;
}
.local-ops-form-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.local-ops-form-footer span {
  margin-right: auto;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.local-ops-retire-card {
  min-height: 100%;
}
.local-ops-upload-card {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
}
.local-ops-upload-card h3 {
  margin: 10px 0 0;
  font-size: 22px;
  line-height: 1.1;
}
.local-ops-upload-card p {
  margin: 7px 0 0;
  max-width: 680px;
  color: var(--ink-3);
  font-size: 12.5px;
  line-height: 1.55;
}
.local-ops-upload-actions {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  justify-content: flex-end;
  flex-wrap: wrap;
}
.local-ops-template-grid {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
}
.local-ops-template-grid div {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.74);
  border-radius: 12px;
  padding: 12px;
  display: grid;
  gap: 6px;
}
.local-ops-template-grid b {
  font-size: 12.5px;
  font-weight: 850;
}
.local-ops-template-grid span {
  color: var(--ink-3);
  font-size: 11.3px;
  line-height: 1.35;
}
.local-ops-import-status {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  border-color: var(--line-soft);
  background: var(--surface);
}
.local-ops-import-status.ok {
  border-color: var(--ok-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FBF9 100%);
}
.local-ops-import-status.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}
.local-ops-import-status h3 {
  margin: 9px 0 0;
  font-size: 18px;
  line-height: 1.15;
}
.local-ops-import-status p {
  margin: 6px 0 0;
  color: var(--ink-3);
  font-size: 12.3px;
  line-height: 1.5;
}
.local-ops-import-warnings {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 7px;
  max-width: 520px;
}
.local-ops-import-warnings span {
  border: 1px solid var(--warn-line);
  background: rgba(255,255,255,.72);
  color: #8F5B11;
  border-radius: 999px;
  padding: 6px 9px;
  font-size: 11.2px;
  line-height: 1.25;
}
.local-ops-preview-card {
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
}
.local-ops-sheet-preview {
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FAFF 100%);
}
.local-ops-sheet-preview.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}
.local-ops-sheet-preview.ok {
  border-color: var(--brand-line);
}
.local-ops-preview-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding-bottom: 15px;
  border-bottom: 1px solid var(--line-soft);
}
.local-ops-preview-head h3 {
  margin: 10px 0 0;
  font-size: 21px;
  line-height: 1.15;
  letter-spacing: -.025em;
}
.local-ops-preview-head p {
  margin: 7px 0 0;
  color: var(--ink-3);
  font-size: 12.5px;
  line-height: 1.5;
}
.local-ops-preview-safe {
  max-width: 260px;
  border: 1px solid var(--ok-line);
  background: var(--ok-soft);
  color: var(--ok);
  border-radius: 12px;
  padding: 10px 11px;
  display: flex;
  gap: 8px;
  font-size: 11.5px;
  line-height: 1.45;
  font-weight: 650;
}
.local-ops-preview-grid {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 14px;
  margin: 15px 0;
}
.local-ops-preview-grid > div {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.72);
  border-radius: 13px;
  padding: 14px;
}
.local-ops-preview-grid > div > b {
  display: block;
  font-size: 13px;
  margin-bottom: 10px;
}
.local-ops-mini-bars {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}
.local-ops-mini-bars span,
.local-ops-traffic-list span {
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface);
  padding: 10px;
  display: grid;
  gap: 6px;
}
.local-ops-mini-bars i,
.local-ops-traffic-list i {
  font-style: normal;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 700;
}
.local-ops-mini-bars strong,
.local-ops-traffic-list strong {
  font-family: var(--fs-num);
  font-size: 22px;
  line-height: 1;
  letter-spacing: -.02em;
  color: var(--brand);
}
.local-ops-traffic-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
}
.local-ops-sheet-summary,
.local-ops-sheet-groups {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  margin-top: 14px;
}
.local-ops-sheet-summary div,
.local-ops-sheet-groups div {
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.76);
  border-radius: 12px;
  padding: 12px;
  display: grid;
  gap: 6px;
}
.local-ops-sheet-summary span,
.local-ops-sheet-groups span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 750;
}
.local-ops-sheet-summary b {
  font-family: var(--fs-num);
  font-size: 24px;
  color: var(--brand);
  line-height: 1.05;
  letter-spacing: 0;
}
.local-ops-sheet-summary em {
  color: var(--ink-4);
  font-size: 11px;
  font-style: normal;
}
.local-ops-sheet-groups b {
  font-size: 13px;
  color: var(--ink);
}
.local-ops-formal-import {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.82);
  border-radius: 13px;
  padding: 13px;
  margin-top: 12px;
}
.local-ops-formal-import b {
  display: block;
  color: var(--ink);
  font-size: 14px;
  margin-top: 7px;
}
.local-ops-formal-import p {
  margin: 5px 0 0;
  color: var(--ink-3);
  font-size: 11.7px;
  line-height: 1.45;
}
.local-ops-formal-import em {
  display: block;
  color: var(--ink-4);
  font-style: normal;
  font-size: 11px;
  margin-top: 5px;
}
.local-ops-formal-import-counts {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 6px;
  max-width: 340px;
}
.local-ops-formal-import-counts span {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 999px;
  padding: 6px 9px;
  color: var(--ink-2);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}
.local-ops-sheet-table-wrap {
  overflow: auto;
  margin-top: 14px;
}
.local-ops-sheet-table {
  min-width: 980px;
}
.local-ops-sheet-video-list {
  display: grid;
  gap: 8px;
  margin-top: 12px;
  max-height: 560px;
  overflow: auto;
  padding-right: 2px;
}
.local-ops-sheet-video-row {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) 88px 88px 88px minmax(130px, .6fr) auto 92px;
  gap: 8px;
  align-items: end;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.78);
  border-radius: 12px;
  padding: 10px;
}
.local-ops-sheet-video-row > div {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.local-ops-sheet-video-row b {
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-sheet-video-row span,
.local-ops-sheet-video-row em,
.local-ops-sheet-video-row label > span {
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.35;
  font-style: normal;
}
.local-ops-sheet-video-row label {
  display: grid;
  gap: 5px;
  min-width: 0;
}
.local-ops-sheet-video-row label.note {
  min-width: 0;
}
.local-ops-sheet-video-row .text-input {
  min-height: 34px;
  padding: 7px 9px;
  font-size: 12px;
}
.local-ops-sheet-save {
  align-self: center;
  color: var(--ink-4);
  font-size: 11px;
  line-height: 1.25;
}
.local-ops-sheet-save.ok { color: var(--ok); font-weight: 750; }
.local-ops-sheet-save.warn { color: var(--bad); font-weight: 750; }
.local-ops-daily-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
}
.local-ops-daily-head h3 {
  margin: 8px 0 4px;
  color: var(--ink);
  font-size: 18px;
  letter-spacing: 0;
}
.local-ops-daily-head p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.local-ops-daily-status {
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%);
}
.local-ops-status-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  padding-bottom: 13px;
  border-bottom: 1px solid var(--line-soft);
}
.local-ops-status-head h3 {
  margin: 8px 0 4px;
  color: var(--ink);
  font-size: 19px;
  line-height: 1.12;
}
.local-ops-status-head p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.local-ops-status-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.local-ops-status-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}
.local-ops-status-card {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 13px;
  padding: 12px;
  display: grid;
  gap: 6px;
}
.local-ops-status-card span {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 820;
  letter-spacing: .03em;
}
.local-ops-status-card b {
  color: var(--ink);
  font-size: 21px;
  font-weight: 880;
  line-height: 1.05;
  font-variant-numeric: tabular-nums;
}
.local-ops-status-card em {
  color: var(--ink-3);
  font-size: 11.5px;
  font-style: normal;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.local-ops-status-card.ok {
  border-color: var(--ok-line);
  background: var(--ok-soft);
}
.local-ops-status-card.ok b { color: var(--ok); }
.local-ops-status-card.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
}
.local-ops-status-card.warn b { color: var(--warn); }
.local-ops-status-card.run {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.local-ops-status-card.run b { color: var(--brand); }
.local-ops-status-card.idle {
  background: var(--surface-sunk);
}
.local-ops-web-entry-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
}
.local-ops-scope-card {
  padding-bottom: 14px;
}
.local-ops-scope-card .local-ops-web-entry-title {
  margin-bottom: 10px;
}
.local-ops-scope-grid {
  align-items: end;
}
.local-ops-web-entry-card {
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%);
}
.local-ops-web-entry-focus {
  border-color: var(--ok-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FBF9 100%);
}
.local-ops-content-layer {
  border-color: var(--brand-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F8FBFF 100%);
}
.local-ops-backfill-card {
  border-color: var(--ok-line);
  background: linear-gradient(180deg, #FFFFFF 0%, #F7FBF9 100%);
}
.local-ops-date-mini {
  width: 150px;
  min-width: 150px;
}
.local-ops-backfill-table-wrap {
  width: 100%;
  overflow-x: auto;
  padding-bottom: 2px;
}
.local-ops-backfill-table {
  min-width: 1080px;
}
.local-ops-backfill-table th,
.local-ops-backfill-table td {
  vertical-align: middle;
}
.local-ops-backfill-table td {
  font-size: 12px;
}
.local-ops-backfill-table td b,
.local-ops-backfill-table td span,
.local-ops-backfill-table td em {
  display: block;
  min-width: 0;
}
.local-ops-backfill-table td b {
  max-width: 220px;
  color: var(--ink);
  font-size: 12.5px;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-backfill-table td span {
  color: var(--ink);
  font-family: var(--fs-num);
  font-weight: 800;
}
.local-ops-backfill-table td em {
  margin-top: 3px;
  color: var(--ink-4);
  font-size: 10.5px;
  font-style: normal;
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-backfill-table .text-input {
  min-height: 32px;
  padding: 6px 8px;
  font-size: 12px;
}
.local-ops-backfill-table td.r .text-input {
  text-align: right;
}
.local-ops-backfill-table .btn {
  min-height: 32px;
  padding: 6px 10px;
}
.local-ops-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.local-ops-row-actions .btn {
  min-width: 50px;
}
.local-ops-backfill-empty {
  background: var(--surface-sunk);
  color: var(--ink-3);
  font-size: 12px;
  text-align: center;
}
.local-ops-empty-inline {
  border: 1px dashed var(--line);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 16px;
  color: var(--ink-3);
  font-size: 12px;
}
.local-ops-modal-backdrop {
  position: fixed;
  inset: 0;
  z-index: 40;
  background: rgba(20, 28, 38, .34);
  display: grid;
  place-items: center;
  padding: 20px;
}
.local-ops-modal {
  width: min(680px, 100%);
  max-height: calc(100vh - 40px);
  overflow: auto;
  box-shadow: var(--shadow-lg);
}
.local-ops-setup-modal {
  width: min(900px, 100%);
}
.local-ops-setup-sections {
  display: grid;
  gap: 12px;
}
.local-ops-setup-section {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 14px;
  padding: 14px;
}
.local-ops-account-check-flow {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.local-ops-check-steps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}
.local-ops-check-steps > div {
  border: 1px solid var(--line-soft);
  background: #fff;
  border-radius: 12px;
  padding: 12px;
  min-width: 0;
}
.local-ops-check-steps b {
  display: block;
  color: var(--ink);
  font-size: 12.5px;
  font-weight: 850;
}
.local-ops-check-steps span {
  display: block;
  margin-top: 5px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.45;
}
.local-ops-daily-answer {
  border: 1px solid var(--ok-line);
  background: var(--ok-soft);
  color: var(--ok);
  border-radius: 12px;
  padding: 12px 13px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.local-ops-daily-answer b {
  white-space: nowrap;
  font-size: 13px;
  font-weight: 850;
}
.local-ops-daily-answer span {
  color: var(--ink-2);
  font-size: 12px;
  line-height: 1.45;
}
.local-ops-web-entry-title {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.local-ops-web-entry-paths {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 9px;
}
.local-ops-web-entry-paths div {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 12px;
  padding: 11px;
  display: grid;
  gap: 6px;
}
.local-ops-web-entry-paths b {
  color: var(--ink);
  font-size: 12.3px;
  font-weight: 850;
}
.local-ops-web-entry-paths span {
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.local-ops-daily-filters {
  display: grid;
  grid-template-columns: minmax(180px, 1.5fr) repeat(5, minmax(120px, 1fr)) auto;
  gap: 10px;
  align-items: end;
}
.local-ops-evaluation-filters {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
  gap: 10px;
  align-items: end;
}
.local-ops-daily-filters label,
.local-ops-evaluation-filters label,
.local-ops-eval-video-row label,
.local-ops-daily-video-row label {
  display: grid;
  gap: 5px;
  min-width: 0;
}
.local-ops-daily-filters label > span,
.local-ops-evaluation-filters label > span,
.local-ops-eval-video-row label > span,
.local-ops-daily-video-row label > span {
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 750;
}
.local-ops-daily-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 10px;
}
.local-ops-daily-summary div {
  min-height: 96px;
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 12px;
  padding: 13px;
  display: grid;
  align-content: space-between;
  gap: 6px;
}
.local-ops-daily-summary span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 750;
}
.local-ops-daily-summary b {
  color: var(--brand);
  font-family: var(--fs-num);
  font-size: 24px;
  line-height: 1.05;
  letter-spacing: 0;
}
.local-ops-daily-summary em {
  color: var(--ink-4);
  font-size: 11px;
  font-style: normal;
}
.local-ops-traffic-card {
  overflow: hidden;
  background:
    radial-gradient(circle at 12% 4%, rgba(45, 91, 214, .08), transparent 32%),
    linear-gradient(180deg, #FFFFFF 0%, #FBFCFF 100%);
}
.local-ops-traffic-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  margin-bottom: 18px;
}
.local-ops-traffic-head h3 {
  margin: 8px 0 5px;
  color: var(--ink);
  font-size: 20px;
  line-height: 1.1;
}
.local-ops-traffic-head p {
  margin: 0;
  color: var(--ink-3);
  font-size: 12px;
  line-height: 1.45;
}
.local-ops-traffic-body {
  display: grid;
  grid-template-columns: minmax(180px, 220px) minmax(420px, 1fr) minmax(210px, 260px);
  gap: 18px;
  align-items: stretch;
}
.local-ops-traffic-summary-panel {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: 9px;
  padding-right: 16px;
  border-right: 1px solid var(--line-soft);
}
.local-ops-traffic-summary-panel > span,
.local-ops-traffic-summary-grid span,
.local-ops-traffic-chart-topline span,
.local-ops-traffic-rank-head span {
  color: var(--ink-3);
  font-size: 11.5px;
  font-weight: 750;
  letter-spacing: .01em;
}
.local-ops-traffic-summary-panel > b {
  color: var(--ink);
  font-family: var(--fs-num);
  font-size: clamp(34px, 4.4vw, 52px);
  line-height: .95;
  letter-spacing: 0;
}
.local-ops-traffic-summary-panel > em {
  color: var(--ink-3);
  font-size: 12px;
  font-style: normal;
  line-height: 1.45;
}
.local-ops-traffic-summary-grid {
  display: grid;
  gap: 10px;
  margin-top: 8px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.local-ops-traffic-summary-grid div {
  min-width: 0;
  display: grid;
  gap: 3px;
}
.local-ops-traffic-summary-grid b {
  color: var(--ink);
  font-family: var(--fs-num);
  font-size: 17px;
  line-height: 1.1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-traffic-chart-panel {
  min-width: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
}
.local-ops-traffic-chart-topline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.local-ops-traffic-plot {
  height: 286px;
  border: 0;
  background:
    linear-gradient(180deg, rgba(255,255,255,.82) 0%, rgba(246,248,252,.78) 100%);
  border-radius: 12px;
  overflow: hidden;
}
.local-ops-traffic-plot svg {
  width: 100%;
  height: 100%;
  display: block;
}
.local-ops-traffic-grid-line {
  stroke: #E9EDF5;
  stroke-width: 1;
}
.local-ops-traffic-axis-label {
  fill: var(--ink-4);
  font-family: var(--fs-num);
  font-size: 11px;
}
.local-ops-traffic-today-line {
  stroke: #B8C0CD;
  stroke-dasharray: 4 4;
  stroke-width: 1.2;
}
.local-ops-traffic-today-label {
  fill: var(--ink-3);
  font-size: 11px;
  font-weight: 700;
}
.local-ops-traffic-total-line {
  fill: none;
  stroke: #101827;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .78;
}
.local-ops-traffic-total-dot {
  fill: #FFFFFF;
  stroke: #101827;
  stroke-width: 1.8;
}
.local-ops-traffic-empty {
  min-height: 100%;
  display: grid;
  place-items: center;
  color: var(--ink-3);
  font-size: 13px;
  font-weight: 650;
}
.local-ops-traffic-delta {
  flex: 0 0 auto;
  font-family: var(--fs-num);
  font-size: 12px;
  font-weight: 750;
}
.local-ops-traffic-delta.ok { color: var(--ok); }
.local-ops-traffic-delta.warn { color: var(--bad); }
.local-ops-traffic-rank-panel {
  min-width: 0;
  display: grid;
  align-content: start;
  gap: 12px;
  padding-left: 16px;
  border-left: 1px solid var(--line-soft);
}
.local-ops-traffic-rank-head {
  display: grid;
  gap: 4px;
}
.local-ops-traffic-rank-head b {
  color: var(--ink);
  font-size: 15px;
  line-height: 1.25;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-traffic-rank-list {
  display: grid;
  gap: 10px;
}
.local-ops-traffic-rank-row {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  position: relative;
  padding-bottom: 9px;
}
.local-ops-traffic-rank-row span {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 650;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-traffic-rank-row span i {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  flex: 0 0 auto;
}
.local-ops-traffic-rank-row b {
  color: var(--ink);
  font-family: var(--fs-num);
  font-size: 12px;
  font-weight: 760;
  white-space: nowrap;
}
.local-ops-traffic-rank-row em {
  position: absolute;
  left: 0;
  right: auto;
  bottom: 0;
  height: 3px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(45,91,214,.55), rgba(110,162,255,.22));
  font-style: normal;
}
.local-ops-daily-warnings {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.local-ops-daily-warnings span {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 999px;
  padding: 7px 10px;
  color: var(--ink-3);
  font-size: 11px;
  font-weight: 750;
}
.local-ops-daily-warnings span.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
  color: var(--warn);
}
.local-ops-daily-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
  gap: 12px;
}
.local-ops-chip-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.local-ops-chip-list span {
  min-width: 0;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 9px 10px;
  color: var(--ink);
  font-size: 12px;
  font-weight: 750;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 8px;
  align-items: center;
}
.local-ops-chip-list span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-chip-list b,
.local-ops-chip-list em {
  color: var(--ink-3);
  font-family: var(--fs-num);
  font-size: 11px;
  font-style: normal;
}
.local-ops-daily-video-list {
  display: grid;
  gap: 8px;
  max-height: 660px;
  overflow: auto;
  padding-right: 2px;
}
.local-ops-daily-video-row {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 88px 88px 88px minmax(140px, .55fr) auto 92px;
  gap: 8px;
  align-items: end;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.84);
  border-radius: 12px;
  padding: 10px;
}
.local-ops-daily-video-main {
  display: grid;
  gap: 4px;
  min-width: 0;
}
.local-ops-daily-video-main b {
  color: var(--ink);
  font-size: 12.8px;
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-daily-video-main span,
.local-ops-daily-video-main em {
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.35;
  font-style: normal;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.local-ops-daily-video-main i {
  color: var(--warn);
  font-size: 11px;
  line-height: 1.35;
  font-style: normal;
}
.local-ops-daily-video-row .text-input {
  min-height: 34px;
  padding: 7px 9px;
  font-size: 12px;
}
.local-ops-eval-video-list {
  display: grid;
  gap: 8px;
  max-height: 720px;
  overflow: auto;
  padding-right: 2px;
}
.local-ops-eval-video-row {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) 130px 116px minmax(150px, .7fr) minmax(150px, .7fr) auto 92px;
  gap: 8px;
  align-items: end;
  border: 1px solid var(--line-soft);
  background: rgba(255,255,255,.86);
  border-radius: 12px;
  padding: 10px;
}
.local-ops-eval-video-row .text-input {
  min-height: 34px;
  padding: 7px 9px;
  font-size: 12px;
}
.local-ops-incident-card {
  border-color: var(--warn-line);
  background: linear-gradient(180deg, rgba(255,252,246,.96), rgba(255,255,255,.9));
}
.local-ops-screenshot-card {
  border-color: rgba(47, 95, 227, .14);
  background: linear-gradient(180deg, rgba(248,251,255,.96), rgba(255,255,255,.9));
}
.local-ops-check-row {
  min-height: 58px;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface-sunk);
  padding: 10px 12px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.local-ops-check-row input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--brand);
}
.local-ops-file-input {
  padding-top: 8px;
}
.local-ops-textarea {
  min-height: 78px;
  resize: vertical;
  line-height: 1.48;
}
.local-ops-field-hint {
  color: var(--ink-4);
  font-size: 11px;
  font-style: normal;
  line-height: 1.35;
}
.local-ops-health-strip {
  margin-top: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.local-ops-health-strip span {
  border: 1px solid rgba(47, 95, 227, .14);
  background: rgba(47, 95, 227, .06);
  color: var(--ink-2);
  border-radius: 999px;
  padding: 5px 9px;
  font-size: 11.5px;
  font-weight: 720;
}
.local-ops-entry-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.local-ops-entry-item {
  min-height: 78px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
  display: grid;
  gap: 7px;
  align-content: start;
}
.local-ops-entry-item span {
  color: var(--ink-3);
  font-size: 11.3px;
  font-weight: 700;
}
.local-ops-entry-item b {
  color: var(--ink);
  font-size: 13px;
  line-height: 1.42;
}
.local-ops-retire-list,
.local-ops-sensitive {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}
.local-ops-retire-list span,
.local-ops-sensitive span {
  min-height: 34px;
  border: 1px solid var(--line-soft);
  border-radius: 999px;
  background: var(--surface-sunk);
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 7px 11px;
  color: var(--ink-2);
  font-size: 12px;
  font-weight: 650;
}
.local-ops-retire-list svg { color: var(--brand); }
.local-ops-sensitive span {
  border-color: rgba(178,78,48,.18);
  background: var(--bad-soft);
  color: #8D3E29;
}
.local-ops-note {
  margin-top: 14px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand-press);
  border-radius: 12px;
  padding: 11px 12px;
  font-size: 12.2px;
  line-height: 1.55;
}
.local-ops-note.compact {
  grid-column: 1 / -1;
  margin-top: -4px;
  padding: 8px 10px;
  font-size: 11.7px;
}
.local-ops-note.warn {
  border-color: var(--warn-line);
  background: var(--warn-soft);
  color: #8F5B11;
}
.local-ops-note.warn span {
  display: block;
}
.local-ops-note.warn span + span {
  margin-top: 4px;
}
.local-ops-steps {
  display: grid;
  gap: 10px;
}
.local-ops-steps div {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 11px;
  align-items: start;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
}
.local-ops-steps b {
  width: 30px;
  height: 30px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  background: var(--brand);
  color: #fff;
  font-family: var(--fs-num);
}
.local-ops-steps span {
  color: var(--ink-2);
  font-size: 12.5px;
  line-height: 1.55;
}
.local-ops-match-flow {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  align-items: center;
  margin-bottom: 14px;
}
.local-ops-match-flow > div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 13px;
  min-height: 76px;
}
.local-ops-match-flow b {
  display: block;
  font-size: 13px;
}
.local-ops-match-flow span {
  display: block;
  margin-top: 6px;
  color: var(--ink-3);
  font-size: 11.5px;
  line-height: 1.35;
}
.local-ops-match-flow svg {
  justify-self: center;
  color: var(--ink-4);
  display: none;
}
.local-ops-table { margin-top: 6px; }
@media (max-width: 980px) {
  .local-ops-hero,
  .local-ops-hero-daily,
  .local-ops-map,
  .local-ops-grid,
	  .local-ops-preview-grid,
		  .local-ops-web-entry-grid,
		  .local-ops-web-entry-paths,
	  .local-ops-sheet-summary,
	  .local-ops-sheet-groups,
	  .local-ops-status-grid,
	  .local-ops-daily-summary,
	  .local-ops-traffic-body,
	  .local-ops-daily-grid,
  .local-ops-daily-filters,
  .local-ops-evaluation-filters,
  .local-ops-upload-card { grid-template-columns: 1fr; }
	  .local-ops-daily-head { flex-direction: column; }
	  .local-ops-status-head { flex-direction: column; }
	  .local-ops-traffic-head { align-items: flex-start; flex-direction: column; }
	  .local-ops-traffic-summary-panel { padding-right: 0; padding-bottom: 14px; border-right: 0; border-bottom: 1px solid var(--line-soft); }
	  .local-ops-traffic-rank-panel { padding-left: 0; padding-top: 14px; border-left: 0; border-top: 1px solid var(--line-soft); }
	  .local-ops-status-actions { justify-content: flex-start; }
	  .local-ops-secondary-head { align-items: flex-start; flex-direction: column; }
  .local-ops-daily-route { grid-template-columns: 1fr 1fr; }
  .local-ops-daily-answer { align-items: flex-start; flex-direction: column; gap: 5px; }
  .local-ops-import-status { flex-direction: column; }
  .local-ops-import-warnings { justify-content: flex-start; max-width: none; }
  .local-ops-formal-import { grid-template-columns: 1fr; }
  .local-ops-formal-import-counts { justify-content: flex-start; max-width: none; }
  .local-ops-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .local-ops-entry-grid,
  .local-ops-match-flow,
  .local-ops-mini-bars,
  .local-ops-traffic-list,
  .local-ops-check-steps,
  .local-ops-sheet-summary,
  .local-ops-sheet-groups,
  .local-ops-entry-type-row,
  .local-ops-form-grid,
  .local-ops-form-grid.compact,
  .local-ops-template-grid,
  .local-ops-chip-list { grid-template-columns: 1fr 1fr; }
  .local-ops-sheet-video-row,
  .local-ops-eval-video-row,
  .local-ops-daily-video-row { grid-template-columns: minmax(0, 1fr) 1fr 1fr; }
  .local-ops-sheet-video-row > div,
  .local-ops-sheet-video-row label.note,
  .local-ops-eval-video-row label.note,
  .local-ops-eval-video-row .local-ops-daily-video-main,
  .local-ops-daily-video-main,
  .local-ops-daily-video-row label.note,
  .local-ops-sheet-save { grid-column: 1 / -1; }
  .local-ops-form-grid label.wide { grid-column: span 2; }
  .local-ops-preview-head { flex-direction: column; }
  .local-ops-upload-actions { justify-content: flex-start; }
}
@media (max-width: 640px) {
  .local-ops-summary { grid-template-columns: 1fr; }
  .local-ops-switch { max-width: none; }
  .local-ops-daily-route,
  .local-ops-mini-bars,
  .local-ops-traffic-list,
  .local-ops-check-steps,
  .local-ops-sheet-summary,
	  .local-ops-sheet-groups,
	  .local-ops-status-grid,
	  .local-ops-daily-summary,
	  .local-ops-traffic-body,
  .local-ops-daily-filters,
  .local-ops-evaluation-filters,
  .local-ops-web-entry-paths,
  .local-ops-entry-type-row,
  .local-ops-entry-type-row.compact,
  .local-ops-form-grid,
  .local-ops-form-grid.compact,
  .local-ops-template-grid,
  .local-ops-chip-list { grid-template-columns: 1fr; }
  .local-ops-sheet-video-row,
  .local-ops-eval-video-row,
  .local-ops-daily-video-row { grid-template-columns: 1fr; }
  .local-ops-sheet-video-row > div,
  .local-ops-sheet-video-row label.note,
  .local-ops-eval-video-row label.note,
  .local-ops-eval-video-row .local-ops-daily-video-main,
  .local-ops-daily-video-main,
  .local-ops-daily-video-row label.note,
  .local-ops-sheet-save { grid-column: auto; }
  .local-ops-form-grid label.wide { grid-column: auto; }
  .local-ops-form-footer { align-items: stretch; flex-direction: column; }
  .local-ops-form-footer span { margin-right: 0; }
}
.rate-note { margin-top: 7px; font-size: 10.5px; color: var(--ink-3); line-height: 1.45; }

.probe-result { margin-top: 18px; border: 1px solid var(--brand-line); background: var(--surface); border-radius: var(--r-lg);
  box-shadow: var(--shadow); padding: 17px; }
.probe-result-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; padding-bottom: 12px; border-bottom: 1px solid var(--line-soft); }
.probe-result-actions { margin-top: 16px; border: 1px solid var(--ok-line); background: var(--ok-soft); border-radius: 11px; padding: 12px; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.probe-result-actions.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.probe-result-actions div { min-width: 0; }
.probe-result-actions b { display: block; color: var(--ink); font-size: 12.5px; }
.probe-result-actions span { display: block; margin-top: 3px; color: var(--ink-3); font-size: 11px; line-height: 1.45; }
.probe-result-actions .btn { flex-shrink: 0; }
@media (max-width: 620px) {
  .probe-result-actions { align-items: stretch; flex-direction: column; }
  .probe-result-actions .btn { justify-content: center; width: 100%; }
}
.probe-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
@media (max-width: 760px) { .probe-metrics { grid-template-columns: 1fr 1fr; } }
.probe-section { margin-top: 16px; }
.field-status-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 9px; }
@media (max-width: 980px) { .field-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .field-status-grid { grid-template-columns: 1fr; } }
.field-status { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 9px; padding: 10px; min-width: 0; }
.field-status .fs-name { font-size: 12px; font-weight: 700; margin-top: 7px; }
.field-status .fs-evi { font-size: 10.5px; color: var(--ink-3); line-height: 1.4; margin-top: 3px; }
.fan-preview-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 9px; }
@media (max-width: 980px) { .fan-preview-grid { grid-template-columns: 1fr; } }
.fan-preview-card { border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 10px; padding: 11px; min-width: 0; }
.fan-preview-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.fan-preview-top b { font-size: 12.5px; line-height: 1.35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fan-dim-list { display: grid; gap: 8px; margin-top: 10px; }
.fan-dim { border-top: 1px solid var(--line-soft); padding-top: 8px; }
.fan-dim > span { display: inline-block; font-size: 11.5px; font-weight: 700; color: var(--ink); }
.fan-dim > em { float: right; font-style: normal; font-size: 10.5px; color: var(--ink-3); }
.fan-bars { clear: both; display: grid; gap: 4px; margin-top: 6px; }
.fan-bars i { display: flex; justify-content: space-between; gap: 8px; border: 1px solid var(--line-soft); background: var(--surface); border-radius: 7px; padding: 5px 7px; font-style: normal; }
.fan-bars b { font-size: 10.5px; font-weight: 650; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fan-bars span { flex-shrink: 0; font-size: 10.5px; color: var(--brand); font-weight: 700; }
.fan-error-note { margin-top: 9px; font-size: 10.5px; color: #9A6712; background: var(--warn-soft); border: 1px solid var(--warn-line); border-radius: 8px; padding: 7px 8px; line-height: 1.4; }
.role-judge-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin-top: 9px; }
@media (max-width: 900px) { .role-judge-list { grid-template-columns: 1fr; } }
.role-judge { display: grid; gap: 5px; border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 9px; padding: 10px; }
.rj-account { font-size: 12.5px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rj-role { width: fit-content; font-size: 11px; border-radius: 999px; background: var(--brand-soft); color: var(--brand); border: 1px solid var(--brand-line); padding: 2px 8px; }
.initial-guide {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 18px;
}
.initial-guide-rail {
  display: grid;
  gap: 10px;
  align-content: start;
}
.initial-guide-step {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
}
.initial-guide-step b {
  width: 30px;
  height: 30px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: #EEF1F8;
  color: var(--brand);
  font-family: var(--fs-num);
  font-weight: 800;
}
.initial-guide-step.on {
  border-color: var(--brand-line);
  background: #F8FAFF;
}
.initial-guide-step.on b {
  background: var(--brand);
  color: #fff;
}
.initial-guide-step strong,
.initial-guide-step em {
  display: block;
}
.initial-guide-step strong {
  font-size: 13px;
  font-weight: 800;
}
.initial-guide-step em {
  margin-top: 4px;
  color: var(--ink-3);
  font-size: 11.5px;
  font-style: normal;
  line-height: 1.35;
}
.initial-guide-body {
  min-width: 0;
}
.initial-guide-note {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  margin-bottom: 14px;
  border: 1px solid var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand-press);
  border-radius: 12px;
  padding: 11px 12px;
  font-size: 12.5px;
  line-height: 1.5;
}
.initial-guide-panel {
  display: grid;
  gap: 13px;
}
.initial-guide-mini {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 10px 12px;
  color: var(--ink-2);
  font-size: 12px;
  line-height: 1.5;
}
.initial-guide-textarea {
  min-height: 120px;
  resize: vertical;
  line-height: 1.55;
}
.initial-guide-preview {
  display: flex;
  gap: 8px;
  align-items: center;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 11px 12px;
  color: var(--ink-3);
  font-size: 12px;
}
.initial-guide-preview b {
  color: var(--ink);
  font-size: 13px;
}
.initial-guide-preview em {
  margin-left: auto;
  font-style: normal;
  color: var(--brand);
  font-weight: 700;
}
.initial-guide-summary {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(140px, .6fr);
  gap: 10px;
}
.initial-guide-summary > div {
  display: grid;
  gap: 4px;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 12px;
  min-width: 0;
}
.initial-guide-summary span,
.initial-guide-check-grid > div > span {
  color: var(--brand);
  font-size: 10.5px;
  font-weight: 850;
  letter-spacing: .13em;
}
.initial-guide-summary b {
  color: var(--ink);
  font-size: 15px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.initial-guide-summary em {
  color: var(--ink-3);
  font-style: normal;
  font-size: 12px;
}
.initial-guide-check-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.initial-guide-check-grid > div {
  border: 1px solid var(--line-soft);
  background: var(--surface);
  border-radius: 12px;
  padding: 12px;
}
.initial-guide-tags {
  display: flex;
  gap: 7px;
  flex-wrap: wrap;
  margin-top: 10px;
}
.initial-guide-tags em {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 999px;
  padding: 5px 8px;
  color: var(--ink-2);
  font-size: 11px;
  font-style: normal;
  line-height: 1;
}
.initial-guide-rule-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.initial-guide-rule-list div {
  display: flex;
  gap: 7px;
  align-items: center;
  border: 1px solid var(--ok-line);
  background: var(--ok-soft);
  border-radius: 11px;
  padding: 9px 10px;
  color: var(--ink-2);
  font-size: 12px;
}
.initial-guide-rule-list svg {
  color: var(--ok);
  flex-shrink: 0;
}
.initial-guide-done {
  text-align: center;
  padding: 12px 4px 4px;
}
.done-mark {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  margin: 0 auto 12px;
  border-radius: 16px;
  background: var(--ok-soft);
  color: var(--ok);
  border: 1px solid var(--ok-line);
}
.initial-guide-done h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 800;
}
.initial-guide-done p {
  max-width: 520px;
  margin: 8px auto 0;
  color: var(--ink-2);
  font-size: 13px;
  line-height: 1.55;
}
.initial-guide-duplicate { max-width: 620px; margin: 10px auto 0; display: flex; align-items: flex-start; justify-content: center; gap: 7px; border: 1px solid var(--warn-line); background: var(--warn-soft); border-radius: 10px; padding: 9px 10px; color: var(--ink-2); font-size: 11.5px; line-height: 1.45; text-align: left; }
.initial-guide-duplicate svg { flex-shrink: 0; color: var(--warn); }
.initial-guide-done-path {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-top: 16px;
  text-align: left;
}
.initial-guide-done-path div {
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 12px;
  padding: 10px;
}
.initial-guide-done-path div.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.initial-guide-done-path b {
  width: 23px;
  height: 23px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  background: var(--surface);
  color: var(--brand);
  font-size: 11px;
  margin-bottom: 7px;
}
.initial-guide-done-path span {
  display: block;
  color: var(--ink-2);
  font-size: 11.5px;
  font-weight: 750;
  line-height: 1.3;
}
.initial-guide-result-list {
  display: grid;
  gap: 8px;
  margin-top: 16px;
  text-align: left;
}
.initial-guide-result-list div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  border: 1px solid var(--line-soft);
  background: var(--surface-sunk);
  border-radius: 10px;
  padding: 10px 12px;
}
.initial-guide-result-list b {
  font-size: 12.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.initial-guide-result-list span {
  color: var(--ink-3);
  font-size: 11.5px;
  min-width: 0;
  overflow-wrap: anywhere;
  white-space: normal;
}
@media (max-width: 840px) {
  .initial-guide { grid-template-columns: 1fr; }
  .initial-guide-rail { grid-template-columns: 1fr; }
  .initial-guide-summary,
  .initial-guide-check-grid,
  .initial-guide-rule-list,
  .initial-guide-done-path { grid-template-columns: 1fr; }
  .initial-guide-preview,
  .initial-guide-result-list div { align-items: flex-start; flex-direction: column; }
  .initial-guide-preview em { margin-left: 0; }
}
.probe-top-list { margin-top: 9px; border-top: 1px solid var(--line-soft); }
.probe-top-row { display: grid; grid-template-columns: 26px minmax(0,1fr) auto; gap: 10px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line-soft); }
.probe-top-row .rank { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 7px; background: var(--brand); color: #fff; font-size: 12px; font-weight: 750; }
.probe-top-row .pt-title { font-size: 12.5px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.probe-top-row .pt-stats { font-size: 12px; color: var(--brand); font-weight: 700; white-space: nowrap; }
.advice-mini { display: grid; gap: 8px; margin-top: 9px; }
.advice-mini div { display: flex; gap: 8px; align-items: flex-start; border: 1px solid var(--line-soft); background: var(--surface-sunk); border-radius: 9px; padding: 9px 10px; font-size: 12.5px; line-height: 1.45; }

/* ============================================================
   Responsive shell · 1.0.1 上线阶段
   目标：宽屏增列、手机底部导航、页面级无横向溢出
   ============================================================ */
:root {
  --app-max: 1680px;
  --app-pad-x: clamp(20px, 4vw, 64px);
  --mobile-nav-h: 68px;
}

html,
body {
  max-width: 100%;
  overflow-x: clip;
}

img,
svg,
canvas,
video {
  max-width: 100%;
}

.topbar-inner,
.page {
  width: 100%;
  max-width: var(--app-max);
  margin-inline: auto;
  padding-inline: var(--app-pad-x);
}

.page {
  padding-top: clamp(18px, 2.2vw, 30px);
  padding-bottom: 96px;
}

.page-screen-motion {
  animation: pageScreenIn var(--motion-med) var(--motion-ease);
  will-change: transform, opacity;
}

body.drawer-open .page-screen-motion {
  animation: none;
  transform: none !important;
  will-change: auto;
}

.page-screen-motion:has(.modal-mask) {
  animation: none;
  transform: none !important;
  will-change: auto;
}

.page > * {
  min-width: 0;
}

.review-page,
.benchmark-page,
.admin-page,
.local-ops-page,
.grab-page {
  max-width: 100%;
}

.grid-kpi {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

.grid-card {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
}

.grid-wide {
  display: grid;
  gap: 18px;
  grid-template-columns: repeat(auto-fit, minmax(min(380px, 100%), 1fr));
}

.hero-num {
  font-size: clamp(34px, 3.8vw, 58px);
}

.mobile-tabbar {
  display: none;
}

@media (min-width: 1440px) {
  .console-grid {
    grid-template-columns: minmax(250px, 300px) minmax(0, 1fr) minmax(320px, 380px);
  }

  .grab-cols {
    grid-template-columns: minmax(0, 1fr);
  }

  .grab-hero {
    grid-template-columns: minmax(0, 1fr) minmax(360px, 460px);
  }

  .billing-two {
    grid-template-columns: minmax(0, 1.28fr) minmax(340px, .72fr);
  }

  .billing-two.staff-governance {
    grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr);
  }

  .local-ops-grid {
    grid-template-columns: minmax(0, 1.35fr) minmax(340px, .65fr);
  }
}

@media (max-width: 1199px) {
  :root {
    --app-pad-x: clamp(18px, 3vw, 36px);
  }
}

@media (max-width: 767px) {
  :root {
    --app-pad-x: 16px;
  }

  body {
    background: #F5F6F8;
  }

  .topbar {
    z-index: 80;
  }

  .topbar-inner {
    min-height: 58px;
    flex-wrap: nowrap;
    gap: 10px;
    padding-block: 8px;
  }

  .brand-mark {
    min-width: 0;
  }

  .brand-logo {
    width: 28px;
    height: 28px;
    border-radius: 8px;
  }

  .brand-name {
    font-size: 13px;
  }

  .brand-sub {
    display: none;
  }

  .tabs {
    display: none !important;
  }

  .topbar-right {
    flex: 0 0 auto;
    margin-left: auto;
    max-width: none;
    gap: 6px;
  }

  .staff-mini,
  .api-mini,
  .user-mini,
  .logout-btn {
    width: 34px;
    height: 34px;
    min-width: 34px;
    padding: 0;
    justify-content: center;
    overflow: hidden;
  }

  .version-mini {
    height: 34px;
    min-width: 72px;
    padding: 0 8px;
    justify-content: center;
  }

  .staff-mini span:not(.dot),
  .logout-btn {
    font-size: 0;
  }

  .logout-btn::before {
    content: "退";
    font-size: 12px;
    font-weight: 750;
  }

  .page {
    padding-top: 18px;
    padding-bottom: calc(var(--mobile-nav-h) + 44px + env(safe-area-inset-bottom));
  }

  .mobile-tabbar {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(10px + env(safe-area-inset-bottom));
    z-index: 55;
    display: flex;
    align-items: stretch;
    gap: 4px;
    min-height: var(--mobile-nav-h);
    padding: 7px;
    border: 1px solid rgba(213, 218, 226, .92);
    border-radius: 18px;
    background: rgba(255,255,255,.94);
    box-shadow: 0 18px 42px -24px rgba(21,24,30,.38), 0 2px 8px rgba(21,24,30,.08);
    backdrop-filter: saturate(140%) blur(18px);
  }

  .mobile-tabbar button {
    flex: 1 1 0;
    min-width: 0;
    border: 0;
    border-radius: 13px;
    background: transparent;
    color: var(--ink-3);
    display: grid;
    place-items: center;
    align-content: center;
    gap: 3px;
    padding: 6px 2px;
    font: inherit;
    font-size: 10.5px;
    font-weight: 750;
    line-height: 1.1;
    white-space: nowrap;
  }

  .mobile-tabbar button.active {
    background: var(--brand);
    color: #fff;
    box-shadow: 0 10px 22px -18px rgba(45,91,214,.7);
  }

  .mobile-tabbar .tab-ico {
    display: inline-flex;
    opacity: 1;
  }

  .mobile-tabbar button span:last-child {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .design-page-head,
  .grab-page-head,
  .matrix-page-head,
  .between,
  .local-ops-secondary-head,
  .project-ops-head,
  .project-contribution-head,
  .shop-structure-map-head,
  .structure-platform-row,
  .inline-policy-head,
  .inline-policy-actions,
  .strategy-head,
  .billing-two,
  .local-ops-import-status,
  .local-ops-preview-head {
    align-items: stretch;
    flex-direction: column;
  }

  .design-page-head h1,
  .grab-page-head h1 {
    font-size: 24px;
    line-height: 1.15;
  }

  .design-page-control,
  .grab-page-pills,
  .project-ops-head-actions,
  .structure-actions,
  .local-ops-upload-actions,
  .local-ops-import-warnings {
    justify-content: flex-start;
    width: 100%;
    max-width: none;
  }

  .card-pad,
  .review-card,
  .matrix-main-panel,
  .matrix-widget-block,
  .shop-structure,
  .local-api-panel,
  .shop-monitor-card,
  .grab-side-panel,
  .grab-main-card,
  .local-ops-field-card,
  .local-ops-upload-card,
  .local-ops-preview-card,
  .admin-page .card {
    border-radius: 14px;
    padding: 14px;
  }

  .console-grid,
  .grab-cols,
  .grab-hero,
  .grab-range-grid,
  .policy-workbench,
  .matrix-workbench-shell,
  .local-ops-hero,
  .local-ops-grid,
  .local-ops-map,
  .local-ops-preview-grid,
  .local-ops-upload-card,
  .billing-two,
  .first-archive-workspace,
  .project-policy-record,
  .daily-traffic-body,
  .peacock-screen .daily-traffic-body {
    grid-template-columns: 1fr !important;
  }

  .config,
  .grab-side-panel,
  .grab-summary,
  .matrix-side-panel {
    position: static;
  }

  .goal-grid,
  .grab-hero-side,
  .grab-fields-grid,
  .grab-kind-grid,
  .resolve-grid,
  .strategy-grid,
  .project-ops-flow,
  .project-ops-pipeline,
  .inline-policy-grid,
  .project-policy-flow,
  .project-policy-summary-grid,
  .first-archive-steps,
  .local-ops-summary,
  .local-ops-entry-grid,
  .local-ops-match-flow,
  .local-ops-mini-bars,
  .local-ops-traffic-list,
  .local-ops-entry-type-row,
  .local-ops-form-grid,
  .local-ops-template-grid,
  .billing-grid,
  .billing-roadmap,
  .project-audience-grid,
  .portrait-donut-grid,
  .foundation-grid,
  .content-layer-strip,
  .field-status-grid,
  .fan-preview-grid,
  .role-judge-list {
    grid-template-columns: 1fr !important;
  }

  .project-kpi-strip,
  .review-small-kpis,
  .metric-row,
  .probe-metrics,
  .project-policy-summary-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .project-kpi-card.brand {
    grid-column: 1 / -1;
  }

  .project-kpi-card,
  .grab-hero-metric,
  .metric-row .mc {
    min-width: 0;
  }

  .project-contribution-panel {
    padding: 16px;
    border-radius: 15px;
  }

  .project-contribution-head b {
    font-size: clamp(40px, 15vw, 58px);
  }

  .contribution-timebar,
  .data-rule-main,
  .project-first-grab-callout,
  .project-policy-footline,
  .first-archive-actions,
  .local-ops-form-footer,
  .post-add-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .contribution-timebar > div,
  .contribution-platform-tabs,
  .project-detail-tabs,
  .admin-tabs,
  .platform-switch,
  .structure-platform-switch {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }

  .contribution-timebar > div::-webkit-scrollbar,
  .contribution-platform-tabs::-webkit-scrollbar,
  .project-detail-tabs::-webkit-scrollbar,
  .admin-tabs::-webkit-scrollbar,
  .platform-switch::-webkit-scrollbar,
  .structure-platform-switch::-webkit-scrollbar {
    display: none;
  }

  .shop-monitor-grid,
  .mon-grid {
    grid-template-columns: 1fr;
  }

  .shop-card-top,
  .project-detail-hero,
  .project-structure-toolbar,
  .account-detail-topline,
  .work-item {
    align-items: flex-start;
  }

  .shop-card-actions,
  .console-actions,
  .probe-actions,
  .post-add-actions,
  .local-ops-upload-actions {
    gap: 7px;
  }

  .shop-card-actions .btn,
  .console-actions .btn,
  .local-ops-form-footer .btn,
  .post-add-actions .btn {
    justify-content: center;
  }

  .structure-grid.bookcase-grid {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  }

  .data-rule-main {
    min-width: 0;
  }

  .card:has(.tbl),
  .card-pad:has(.tbl),
  .section-card:has(.tbl),
  .billing-table-wrap {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .tbl {
    min-width: 560px;
  }

  .billing-table {
    min-width: 620px;
  }

  .staff-create-form .template-grid.three {
    grid-template-columns: 1fr;
  }

  .staff-create-form,
  .staff-create-form .field,
  .staff-create-form label {
    min-width: 0;
  }

  .modal-mask {
    padding: 14px;
    place-items: end center;
  }

  .modal {
    width: calc(100vw - 28px) !important;
    max-height: calc(100vh - 28px - env(safe-area-inset-bottom));
    border-radius: 16px;
  }

  .modal-head,
  .modal-body,
  .modal-foot {
    padding-inline: 16px;
  }

  .modal-foot {
    flex-wrap: wrap;
  }

  .modal-foot .btn {
    flex: 1 1 auto;
    justify-content: center;
  }

  .drawer {
    width: 100vw;
    max-width: 100vw;
  }

  .toast {
    left: 12px;
    right: 12px;
    bottom: calc(var(--mobile-nav-h) + 26px + env(safe-area-inset-bottom));
    transform: none;
    justify-content: flex-start;
  }

  @keyframes toastin {
    from { transform: translateY(12px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
  }
}

@media (max-width: 380px) {
  .page {
    padding-inline: 12px;
  }

  .mobile-tabbar {
    left: 8px;
    right: 8px;
    padding: 6px;
  }

  .mobile-tabbar button {
    font-size: 10px;
  }

  .project-kpi-strip,
  .review-small-kpis,
  .metric-row,
  .probe-metrics {
    grid-template-columns: 1fr !important;
  }
}

/* ============================================================
   Date Hunter APP shell：左侧工作栏 + 顶部 utility bar
   ============================================================ */
.app {
  min-height: 100vh;
  display: block;
}

.app-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: 224px minmax(0, 1fr);
  transition: grid-template-columns .28s var(--motion-ease);
}

.app-shell.sidebar-collapsed {
  grid-template-columns: 0 minmax(0, 1fr);
}

.app-main-shell {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.app-sidebar {
  position: sticky;
  top: 0;
  height: 100vh;
  z-index: 70;
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 20px 18px;
  border-right: 1px solid #ECEEF2;
  background: #FAFAFB;
  box-shadow: none;
  overflow: visible;
  transition: transform .28s var(--motion-ease), opacity .2s var(--motion-ease), padding .28s var(--motion-ease), gap .28s var(--motion-ease), border-color .2s var(--motion-ease);
  isolation: isolate;
}

.sidebar-brand {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
}

.main-sidebar-toggle {
  position: fixed;
  top: 10px;
  left: 182px;
  z-index: 95;
  width: 42px;
  height: 38px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: rgba(75, 85, 99, .34);
  display: grid;
  place-items: center;
  padding: 0;
  opacity: 0;
  cursor: pointer;
  box-shadow: none;
  transition: left .28s var(--motion-ease), opacity .16s ease, color .16s ease;
}

.main-sidebar-toggle svg {
  position: relative;
  transform: rotate(180deg);
  transition: transform .28s var(--motion-ease), opacity .16s ease;
}

.main-sidebar-toggle.collapsed {
  left: -10px;
}

.main-sidebar-toggle.collapsed svg {
  transform: rotate(0deg);
}

.main-sidebar-toggle:hover,
.main-sidebar-toggle:focus-visible {
  opacity: 1;
  color: var(--brand);
  outline: none;
}

.main-sidebar-toggle.collapsed:hover,
.main-sidebar-toggle.collapsed:focus-visible {
  left: -2px;
}

.sidebar-brand-text,
.sidebar-label,
.sidebar-user-copy,
.sidebar-section-title,
.sidebar-project-copy {
  transition: opacity .18s var(--motion-ease), transform .24s var(--motion-ease), max-width .24s var(--motion-ease);
}

.app-sidebar .brand-logo {
  width: 22px;
  height: 22px;
  border-radius: 0;
  background: transparent;
  color: #111827;
  box-shadow: none;
}

.sidebar-section {
  display: grid;
  gap: 8px;
}

.sidebar-section-title {
  padding: 0;
  color: #9AA3AF;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0;
  margin-top: 2px;
}

.sidebar-project-switch-wrap {
  position: relative;
}

.sidebar-current-project {
  width: 100%;
  min-height: 64px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  padding: 4px 0 8px;
  border-bottom: 1px solid var(--line-soft);
  color: var(--ink);
}
.sidebar-current-project > .ava {
  flex: 0 0 auto;
  box-shadow: none;
}
.sidebar-current-project-segment {
  align-self: start;
  margin-top: 3px;
  padding: 3px 6px;
  border-radius: 999px;
  color: var(--ink-3);
  background: var(--surface-sunk);
  font-size: 9px;
  font-weight: 750;
  line-height: 1;
  white-space: nowrap;
}
.sidebar-current-project-segment.self { color: #2F7A55; background: #EDF8F2; }
.sidebar-current-project-segment.benchmark { color: #976122; background: #FFF4E6; }
.sidebar-current-project-segment.agency { color: #725DB4; background: #F3F0FF; }

.sidebar-project-switch {
  width: 100%;
  min-height: 56px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  padding: 0;
  cursor: pointer;
  box-shadow: none;
  transition: color .15s ease;
}

.sidebar-project-switch .ava,
.sidebar-user-dock .ava {
  flex: 0 0 auto;
  box-shadow: none;
}

.sidebar-project-switch:hover,
.sidebar-project-switch.open {
  color: #111827;
  background: transparent;
  box-shadow: none;
}

.sidebar-project-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
  text-align: left;
}

.sidebar-project-copy b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 14px;
  line-height: 1.2;
  font-weight: 650;
}

.sidebar-project-copy em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-style: normal;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.25;
}

.sidebar-project-status {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  overflow: hidden;
  color: #9AA3AF;
  font-size: 10.5px;
  line-height: 1.2;
  font-weight: 600;
  white-space: nowrap;
}

.sidebar-project-status i {
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: #C4CBD5;
  flex: 0 0 auto;
}

.sidebar-project-status .motion-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sidebar-project-status.running {
  color: #4B5563;
}

.sidebar-project-status.running i {
  background: var(--brand);
}

.sidebar-project-status.queued {
  color: #6B7280;
}

.sidebar-project-status.queued i {
  background: var(--warn);
}

.sidebar-project-status.bad {
  color: var(--bad);
}

.sidebar-project-status.bad i {
  background: var(--bad);
}

.sidebar-project-menu {
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 8px);
  z-index: 85;
  display: grid;
  gap: 4px;
  max-height: min(58vh, 440px);
  overflow: auto;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: rgba(255,255,255,.98);
  box-shadow: var(--shadow-pop);
}

.sidebar-project-menu-title {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 6px 8px;
  color: var(--ink-3);
  font-size: 11px;
}

.sidebar-project-menu-title b {
  color: var(--ink-2);
}

.sidebar-project-menu button {
  border: 0;
  border-radius: 10px;
  background: transparent;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 8px;
  color: var(--ink);
  text-align: left;
  cursor: pointer;
}

.sidebar-project-menu button:hover,
.sidebar-project-menu button.on {
  background: var(--surface-sunk);
}

.sidebar-project-menu span {
  min-width: 0;
  display: grid;
  gap: 1px;
}

.sidebar-project-menu b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12.5px;
}

.sidebar-project-menu em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--ink-3);
  font-style: normal;
  font-size: 10.5px;
}

.sidebar-project-selected {
  width: 18px;
  color: var(--brand);
  font-style: normal;
  font-weight: 800;
  text-align: center;
}

.sidebar-scroll {
  min-height: 0;
  flex: 1 1 auto;
  overflow-y: auto;
  overflow-x: hidden;
  display: grid;
  align-content: start;
  gap: 14px;
  padding-bottom: 8px;
}

.sidebar-scroll::-webkit-scrollbar,
.sidebar-project-menu::-webkit-scrollbar {
  width: 0;
  height: 0;
}

.sidebar-nav {
  display: grid;
  gap: 2px;
}

.sidebar-nav-item,
.sidebar-create-trigger {
  width: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #4B5563;
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 34px;
  padding: 0;
  font: inherit;
  font-size: 14px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  position: relative;
  transition: color .14s ease;
}

.sidebar-nav-item:hover,
.sidebar-create-trigger:hover,
.sidebar-create-trigger.open {
  background: transparent;
  color: #111827;
}

.sidebar-nav-item.active {
  background: transparent;
  color: var(--brand);
  box-shadow: none;
  font-weight: 600;
}

.sidebar-nav-item.subtle.active {
  background: transparent;
  color: var(--brand);
  box-shadow: none;
}

.sidebar-nav-item::before {
  content: "";
  width: 2px;
  height: 18px;
  border-radius: 999px;
  background: transparent;
  flex: 0 0 2px;
}

.sidebar-nav-item.active::before {
  background: var(--brand);
}

.sidebar-nav-ic {
  width: 18px;
  height: 18px;
  border-radius: 0;
  display: grid;
  place-items: center;
  color: inherit;
  flex: 0 0 auto;
}

.sidebar-bottom {
  flex: 0 0 auto;
  display: grid;
  gap: 14px;
  padding-top: 12px;
  border-top: 1px solid #ECEEF2;
}

.sidebar-create-menu-wrap,
.sidebar-user-wrap {
  position: relative;
}

.sidebar-create-trigger {
  justify-content: flex-start;
  border: 0;
  background: transparent;
  box-shadow: none;
  color: #4B5563;
}

.sidebar-popover {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(100% + 8px);
  z-index: 90;
  display: grid;
  gap: 4px;
  padding: 7px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: rgba(255,255,255,.98);
  box-shadow: var(--shadow-pop);
}

.sidebar-popover button {
  width: 100%;
  min-height: 34px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--ink-2);
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 9px;
  font: inherit;
  font-size: 12.5px;
  font-weight: 650;
  text-align: left;
  cursor: pointer;
}

.sidebar-popover button:hover {
  background: var(--surface-sunk);
  color: var(--ink);
}

.sidebar-user-menu-label {
  margin: 4px 9px 2px;
  color: #9AA3AF;
  font-size: 10.5px;
  font-weight: 750;
}

.sidebar-user-export-state {
  padding: 2px 9px 5px;
  color: var(--brand);
  font-size: 11px;
  line-height: 1.35;
  font-weight: 650;
}

.sidebar-user-version {
  margin: 4px 9px 2px;
  color: #A3AAB5;
  font-family: var(--fs-num);
  font-size: 10.5px;
  line-height: 1.35;
}

.sidebar-user-dock {
  width: 100%;
  min-height: 34px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.sidebar-user-dock:hover,
.sidebar-user-dock.open {
  background: transparent;
  color: #111827;
}

.sidebar-user-dock span {
  min-width: 0;
  display: grid;
}

.sidebar-user-dock b {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  line-height: 1.2;
  font-weight: 650;
}

.sidebar-user-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #8a94a5;
  font-size: 10.5px;
  line-height: 1.2;
}

.sidebar-user-menu-row {
  min-height: 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 9px;
  color: var(--ink-3);
  font-size: 11.5px;
}

.sidebar-user-menu-row b {
  color: var(--ink);
  font-size: 12px;
}

.app-main-shell .topbar {
  display: none;
}

.app-main-shell .topbar-inner {
  width: 100%;
  max-width: none;
  padding-inline: clamp(20px, 3vw, 36px);
}

.app-main-shell .topbar .brand-mark {
  display: none;
}

.topbar-spacer {
  flex: 1 1 auto;
  min-width: 0;
}

.mobile-auth-controls {
  display: none;
}

.mobile-new-project-button {
  display: none;
}

.app-main-shell .page {
  width: 100%;
  max-width: min(var(--app-max), 100%);
  margin-inline: auto;
  padding-inline: clamp(20px, 3vw, 42px);
  padding-top: 14px;
  transition: padding .24s var(--motion-ease);
}

.sidebar-collapsed .app-sidebar {
  gap: 0;
  padding: 20px 0;
  border-color: transparent;
  opacity: 0;
  overflow: hidden;
  transform: translateX(-100%);
  pointer-events: none;
}

@media (min-width: 980px) {
  .app-shell .design-page-control.project-switch-control {
    display: none;
  }
}

@media (max-width: 979px) {
  .app-shell {
    display: block;
  }

  .app-sidebar {
    display: none;
  }

  .main-sidebar-toggle {
    display: none;
  }

  .app-main-shell .topbar .brand-mark {
    display: flex;
  }

  .app-main-shell .topbar {
    position: sticky;
    top: 0;
    z-index: 50;
    display: block;
  }

  .topbar-spacer {
    display: none;
  }

  .mobile-auth-controls {
    display: flex;
    align-items: center;
    gap: 8px;
  }

  .mobile-new-project-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    padding: 0 10px;
    border: 1px solid var(--brand-line);
    border-radius: 9px;
    background: var(--brand-soft);
    color: var(--brand);
    font: inherit;
    font-size: 11.5px;
    font-weight: 700;
    white-space: nowrap;
  }

  .mobile-current-user {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--ink);
  }

  .mobile-current-user b {
    max-width: 92px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
  }

  .mobile-logout-button {
    min-height: 32px;
    padding: 0 10px;
    border: 1px solid var(--line);
    border-radius: 9px;
    background: var(--surface);
    color: var(--ink-2);
    font: inherit;
    font-size: 11.5px;
    font-weight: 700;
  }

  .app-main-shell .topbar-inner,
  .app-main-shell .page {
    padding-inline: var(--app-pad-x);
  }

  .app-main-shell .page {
    padding-top: clamp(18px, 2.2vw, 30px);
    padding-bottom: calc(var(--mobile-nav-h) + 44px + env(safe-area-inset-bottom));
  }

  .mobile-tabbar {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(10px + env(safe-area-inset-bottom));
    z-index: 55;
    display: flex;
    align-items: stretch;
    gap: 4px;
    min-height: var(--mobile-nav-h);
    padding: 7px;
    border: 1px solid rgba(213, 218, 226, .92);
    border-radius: 18px;
    background: rgba(255,255,255,.94);
    box-shadow: 0 18px 42px -24px rgba(21,24,30,.38), 0 2px 8px rgba(21,24,30,.08);
    backdrop-filter: saturate(140%) blur(18px);
  }

  .mobile-tabbar button {
    flex: 1 1 0;
    min-width: 0;
    border: 0;
    border-radius: 13px;
    background: transparent;
    color: var(--ink-3);
    display: grid;
    place-items: center;
    align-content: center;
    gap: 3px;
    padding: 6px 2px;
    font: inherit;
    font-size: 10.5px;
    font-weight: 750;
    line-height: 1.1;
    white-space: nowrap;
  }

  .mobile-tabbar button.active {
    background: var(--brand);
    color: #fff;
    box-shadow: 0 10px 22px -18px rgba(45,91,214,.7);
  }

  .mobile-tabbar .tab-ico {
    display: inline-flex;
    opacity: 1;
  }
}

/* Mobile page headers keep the project switcher compact and visibly actionable. */
@media (max-width: 767px) {
  .app-shell .design-page-control.project-switch-control {
    align-self: flex-start;
    justify-content: flex-start;
    width: fit-content;
    max-width: 100%;
  }

  .app-shell .design-page-control.project-switch-control .top-project-switch {
    width: auto;
    min-width: 0;
    max-width: 100%;
    height: 36px;
    padding: 0 11px;
    border-radius: 9px;
  }

  .app-shell .design-page-control.project-switch-control .top-project-switch > .top-project-action-label {
    display: inline-flex;
  }

  .app-shell .design-page-control.project-switch-control .top-project-switch svg:last-child {
    display: block;
  }

  .app-shell .design-page-control.project-switch-control .top-project-menu {
    left: 0;
    right: auto;
    width: min(330px, calc(100vw - 32px));
  }
}
.integrated-prototype-entry {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 18px;
  padding: 14px 16px;
  border: 1px solid var(--brand-line);
  border-radius: var(--r);
  background: var(--brand-soft);
}

.integrated-prototype-entry > div {
  display: grid;
  grid-template-columns: auto auto;
  align-items: center;
  gap: 5px 9px;
  min-width: 0;
}

.integrated-prototype-entry b { font-size: 14px; color: var(--ink); }
.integrated-prototype-entry small { grid-column: 1 / -1; color: var(--ink-2); line-height: 1.5; }
.integrated-prototype-entry .btn { flex: 0 0 auto; text-decoration: none; }

@media (max-width: 640px) {
  .integrated-prototype-entry { align-items: stretch; flex-direction: column; }
  .integrated-prototype-entry .btn { justify-content: center; width: 100%; }
}

/* —— 岗位工作台（壳内） —— */
.workflow-screen { display: grid; gap: 14px; }
.workflow-disabled-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface);
}
.workflow-disabled-card p { margin: 4px 0 0; color: var(--ink-2); font-size: 12.5px; line-height: 1.5; }
.workflow-role-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.workflow-role-tabs button {
  height: 32px;
  padding: 0 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--surface);
  color: var(--ink-2);
  font-size: 12.5px;
  font-weight: 650;
}
.workflow-role-tabs button.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
  color: var(--brand);
}
.workflow-layout {
  display: grid;
  grid-template-columns: minmax(240px, 0.92fr) minmax(0, 1.08fr);
  gap: 14px;
  align-items: start;
}
.workflow-task-list,
.workflow-action-panel {
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface);
  padding: 12px 14px;
}
.workflow-deliverable-switcher { display:grid; gap:9px; margin-bottom:14px; padding:11px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.workflow-deliverable-switcher>header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.workflow-deliverable-switcher>header>div { display:grid; gap:2px; }
.workflow-deliverable-switcher>header span { color:var(--ink-3); font-size:9.5px; }
.workflow-deliverable-switcher>header b { color:var(--ink); font-size:11.5px; }
.workflow-deliverable-switcher>header>strong { flex:none; padding:5px 8px; border-radius:999px; background:var(--ok-soft); color:var(--ok); font-size:10px; }
.workflow-deliverable-switcher > .workflow-deliverable-options { display:flex; flex-wrap:wrap; gap:7px; }
.workflow-deliverable-switcher button { display:grid; gap:2px; min-width:96px; padding:8px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink-2); text-align:left; }
.workflow-deliverable-switcher button b { font-size:11px; }
.workflow-deliverable-switcher button span { color:var(--ink-3); font-size:9.5px; }
.workflow-deliverable-switcher button.on { border-color:var(--brand); background:var(--brand-soft); color:var(--brand); box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 10%,transparent); }
.workflow-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 10px;
}
.workflow-task-manual {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  margin-bottom: 10px;
}
.workflow-task-rows { display: grid; gap: 6px; }
.workflow-task-rows.compact { margin-top: 8px; }
.workflow-task-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 4px 8px;
  align-items: center;
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
  text-align: left;
}
.workflow-task-row.on {
  border-color: var(--brand-line);
  background: var(--brand-soft);
}
.workflow-task-id {
  grid-column: 1 / -1;
  font-size: 11px;
  color: var(--ink-3);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.workflow-task-topic {
  font-size: 12.5px;
  font-weight: 650;
  color: var(--ink);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.workflow-empty { padding: 12px 0; font-size: 12.5px; }
.workflow-all-tasks { margin-top: 10px; font-size: 12.5px; color: var(--ink-2); }
.workflow-form,
.workflow-subform { display: grid; gap: 10px; }
.workflow-subform { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-soft); }
.workflow-textarea { min-height: 72px; resize: vertical; }
.workflow-error { margin-bottom: 10px; }
.workflow-version-meta { font-size: 12px; }
.workflow-review-stage { display: grid; gap: 10px; padding: 10px; border: 1px solid var(--line-soft); border-radius: var(--r); background: var(--surface-sunk); }
.workflow-sync-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; font-size: 12px; color: var(--ink-2); }
.workflow-sync-tools label { display: inline-flex; align-items: center; gap: 6px; }
.workflow-player-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.workflow-player-card { display: grid; gap: 6px; min-width: 0; }
.workflow-player-card video { width: 100%; aspect-ratio: 16 / 9; border-radius: 10px; background: #08111f; }
.workflow-player-head { display: flex; justify-content: space-between; gap: 8px; font-size: 12.5px; }
.workflow-player-empty { display: grid; place-items: center; aspect-ratio: 16 / 9; border: 1px dashed var(--line); border-radius: 10px; color: var(--ink-3); }
.workflow-player-card small { overflow: hidden; color: var(--ink-3); text-overflow: ellipsis; white-space: nowrap; }
.workflow-readonly-version { display: grid; gap: 10px; min-width: 0; }
.workflow-readonly-version video { width: 100%; max-height: 460px; border-radius: 10px; background: #08111f; }
.workflow-version-business-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.workflow-version-business-head b { font-size: 14px; }
.workflow-version-business-head span { color: var(--ink-3); font-size: 12px; }
.workflow-version-facts {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  gap: 6px 12px;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
  font-size: 12px;
}
.workflow-version-facts span { color: var(--ink-3); }
.workflow-version-facts b,
.workflow-version-facts code { min-width: 0; overflow-wrap: anywhere; color: var(--ink); }
.workflow-review-readonly { border-color: var(--brand-line); }
.workflow-time-comments { display: grid; gap: 8px; padding-top: 8px; border-top: 1px solid var(--line-soft); }
.workflow-time-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.workflow-comment-chip { padding: 7px 9px; border-radius: 8px; background: var(--brand-soft); color: var(--ink-2); font-size: 12px; }
.workflow-review-decision {
  display: grid;
  gap: 8px;
  padding: 10px;
  border: 1px solid color-mix(in srgb, var(--warn) 32%, var(--line-soft));
  border-radius: 10px;
  background: color-mix(in srgb, var(--warn) 7%, var(--surface));
}
.workflow-review-decision-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
  font-size: 12.5px;
}
.workflow-review-decision-head span {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--ink-3);
  font-size: 11px;
}
.workflow-version-history {
  display: grid;
  gap: 8px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line-soft);
}
.workflow-version-history-item {
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-version-history-item > summary {
  cursor: pointer;
  color: var(--ink-2);
  font-size: 12.5px;
  font-weight: 650;
}
.workflow-version-history-item[open] > summary { margin-bottom: 10px; }
.workflow-rejection-form { border-top-color: var(--brand-line); }
.workflow-approval-form { border-top-color: color-mix(in srgb, var(--ok) 42%, var(--line-soft)); }
.workflow-publisher-confirm,
.workflow-default-publisher-admin { display: grid; gap: 8px; }
.workflow-publisher-confirm { align-items: start; grid-template-columns: auto 1fr; }
.workflow-default-publisher-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.workflow-approved-inventory-item {
  display: grid;
  gap: 10px;
  padding: 10px;
  border: 1px solid color-mix(in srgb, var(--ok) 38%, var(--line-soft));
  border-radius: 10px;
  background: color-mix(in srgb, var(--ok) 5%, var(--surface));
}
.workflow-approved-asset { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; align-items: center; padding: 10px; border: 1px solid var(--brand-line); border-radius: 10px; background: var(--brand-soft); }
.workflow-approved-asset span { grid-column: 1; color: var(--ink-2); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.workflow-approved-asset a { grid-column: 2; grid-row: 1 / span 2; }
.workflow-detail-grid {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 6px 12px;
  font-size: 12.5px;
}
.workflow-detail-grid span { color: var(--ink-3); }
.workflow-r1-context {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--brand-line);
  border-radius: 11px;
  background: var(--brand-soft);
}
.workflow-r1-context > div { min-width: 0; }
.workflow-r1-context span,
.workflow-handoff-section > span,
.workflow-script-source > span {
  display: block;
  color: var(--ink-3);
  font-size: 10.5px;
  font-weight: 700;
}
.workflow-r1-context b {
  display: block;
  margin-top: 3px;
  color: var(--ink);
  font-size: 12px;
  overflow-wrap: anywhere;
}
.workflow-daily-plan-form {
  grid-template-columns: minmax(0, 1fr) minmax(120px, .55fr) auto;
  align-items: end;
}
.workflow-daily-plan-form .sec-title { grid-column: 1 / -1; }
.workflow-business-context {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.workflow-dispatch-success {
  display: grid;
  gap: 5px;
  padding: 12px 14px;
  border: 1px solid var(--ok-line);
  border-radius: 11px;
  background: var(--ok-soft);
}
.workflow-dispatch-success > div { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.workflow-dispatch-success p { margin: 0; color: var(--ink-2); font-size: 12px; }
.workflow-dispatch-success code { color: var(--ok); font-size: 10.5px; overflow-wrap: anywhere; }
.workflow-generated-task-name {
  display: grid; gap: 4px; align-content: center;
  padding: 9px 10px; border: 1px solid var(--line-soft); border-radius: 9px; background: var(--surface-sunk);
}
.workflow-generated-task-name span { color: var(--ink-3); font-size: 10.5px; }
.workflow-generated-task-name b { color: var(--ink); font-size: 12px; overflow-wrap: anywhere; }
.workflow-operator-handoffs { display: grid; gap: 7px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line-soft); }
.workflow-operator-handoff-row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 3px 10px;
  padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px;
  background: var(--surface-sunk); color: var(--ink); text-align: left;
}
.workflow-operator-handoff-row span { font-size: 12px; font-weight: 750; }
.workflow-operator-handoff-row b { color: var(--brand); font-size: 11px; }
.workflow-operator-handoff-row em { color: var(--ink-2); font-size: 10.5px; font-style: normal; }
.workflow-operator-handoff-row code { color: var(--ink-3); font-size: 9.5px; overflow-wrap: anywhere; }
.workflow-dispatch-form { gap: 14px; }
.workflow-dispatch-heading > div {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.workflow-dispatch-heading p,
.workflow-dispatch-section-title small,
.workflow-target-toolbar .muted {
  margin: 3px 0 0;
  color: var(--ink-3);
  font-size: 11px;
  line-height: 1.5;
}
.workflow-step-no,
.workflow-dispatch-section-title > span {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 28px;
  height: 28px;
  border-radius: 9px;
  background: var(--brand-soft);
  color: var(--brand);
  font: 800 10px/1 var(--fs-num);
}
.workflow-dispatch-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.workflow-dispatch-grid > label { min-width: 0; }
.workflow-dispatch-grid > label.wide { grid-column: 1 / -1; }
.workflow-dispatch-grid label > small { display: block; margin-top: 4px; color: var(--ink-3); font-size: 9.5px; }
.workflow-dispatch-section {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface-sunk);
}
.workflow-dispatch-section-title {
  display: flex;
  align-items: flex-start;
  gap: 9px;
}
.workflow-dispatch-section-title > div { display: grid; gap: 1px; }
.workflow-dispatch-section-title b { color: var(--ink); font-size: 13px; }
.workflow-script-source,
.workflow-handoff-section {
  display: grid;
  gap: 6px;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-script-source pre,
.workflow-handoff-section pre {
  max-height: 260px;
  margin: 0;
  padding: 9px;
  overflow: auto;
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink-2);
  font: 11.5px/1.65 var(--fs-sans);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.project-script-editor { scroll-margin-top: 24px; }
.project-script-editor-fields { min-width: 0; margin: 0; padding: 0; border: 0; display: grid; gap: 12px; }
.project-script-editor-fields > label { display: grid; gap: 6px; }
.project-script-editor-fields > fieldset { min-width: 0; }
.workflow-return-action-form { scroll-margin-top: 24px; scroll-margin-bottom: 110px; }
.workflow-script-source > summary {
  cursor: pointer;
  color: var(--ink-2);
  font-size: 11.5px;
  font-weight: 750;
}
.workflow-script-source[open] > summary { margin-bottom: 8px; }
.workflow-script-readout { display: grid; gap: 6px; }
.workflow-script-readout p {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 8px;
  margin: 0;
  padding: 8px 9px;
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink-2);
  font-size: 11.5px;
  line-height: 1.55;
}
.workflow-script-readout p > span { color: var(--brand); font: 750 10px/1.6 var(--fs-num); }
.workflow-reference-picker {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
}
.workflow-reference-picker legend { color: var(--ink-2); font-size: 11.5px; font-weight: 750; }
.workflow-reference-picker label {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  padding: 8px;
  border-radius: 8px;
  background: var(--surface-sunk);
}
.workflow-reference-picker label.disabled { opacity: .48; }
.workflow-reference-picker b,
.workflow-reference-picker small { display: block; overflow-wrap: anywhere; }
.workflow-reference-picker b { color: var(--ink); font-size: 11.5px; }
.workflow-reference-picker small { margin-top: 3px; color: var(--ink-3); font-size: 10px; }
.workflow-reference-picker em { display: block; margin-top: 5px; color: var(--ink-2); font-size: 10.5px; font-style: normal; line-height: 1.5; }
.workflow-reference-picker a { display: inline-block; margin-top: 6px; color: var(--brand); font-size: 10.5px; font-weight: 700; }
.workflow-sentence-editor { display: grid; gap: 8px; }
.workflow-sentence-row {
  display: grid;
  grid-template-columns: 30px minmax(0, .9fr) minmax(0, 1.1fr);
  gap: 10px;
  align-items: stretch;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface);
}
.workflow-sentence-number { color: var(--brand); font: 800 11px/1.8 var(--fs-num); }
.workflow-sentence-row > div,
.workflow-sentence-row > label { min-width: 0; }
.workflow-sentence-row small { display: block; margin-bottom: 4px; color: var(--ink-3); font-size: 9.5px; font-weight: 700; }
.workflow-sentence-row p { margin: 0; color: var(--ink-2); font-size: 11.5px; line-height: 1.55; white-space: pre-wrap; }
.workflow-sentence-row textarea { min-height: 62px; resize: vertical; line-height: 1.5; }
.workflow-dispatch-review {
  display: grid;
  gap: 4px;
  padding: 10px 11px;
  border: 1px solid var(--brand-line);
  border-radius: 10px;
  background: var(--brand-soft);
}
.workflow-dispatch-review span { color: var(--ink-2); font-size: 11px; line-height: 1.5; }
.workflow-dispatch-gate {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--line-soft);
  border-radius: 11px;
  background: var(--surface);
}
.workflow-dispatch-gate > div { display: grid; gap: 3px; }
.workflow-dispatch-gate b { color: var(--ink); font-size: 12px; }
.workflow-dispatch-gate span { color: var(--ink-3); font-size: 10.5px; line-height: 1.5; }
.workflow-dispatch-gate.blocked { border-color: var(--warn-line); background: var(--warn-soft); }
.workflow-dispatch-gate.ready { border-color: var(--ok-line); background: var(--ok-soft); }

/* 运营工作台：项目入口 → 项目总览 → 内容任务 → 人员派发 */
.workflow-operator-projects,.workflow-operator-overview,.workflow-operator-composer,.workflow-operator-assign { display:grid; gap:18px; min-width:0; }
.workflow-operator-projects { gap:10px; }
.workflow-operator-create-view { gap:10px; }
.workflow-operator-create-view .matrix-page-head { margin-bottom:4px; }
.workflow-operator-create-view .workflow-operator-composer { gap:14px; }
.workflow-operator-create-project-context { display:none; }
.workflow-operator-project-head>div,.workflow-operator-section-head>div,.workflow-operator-assignment-form>div:first-child { display:grid; gap:5px; }
.workflow-operator-project-head span,.workflow-operator-section-head span,.workflow-operator-assignment-form>div:first-child span { color:var(--brand); font-size:11px; font-weight:800; letter-spacing:.08em; }
.workflow-operator-project-head h2,.workflow-operator-section-head h3,.workflow-operator-assignment-form h3 { margin:0; color:var(--ink); letter-spacing:-.025em; }
.workflow-operator-project-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(248px,1fr)); gap:12px; align-items:stretch; }
.workflow-operator-project-card { --project-platform:var(--brand); --project-platform-ink:#244caa; --project-platform-mark:none; display:grid; grid-template-rows:156px auto; gap:0; min-width:0; min-height:230px; padding:0; overflow:hidden; border:1px solid var(--line); border-radius:16px; background:var(--surface); color:var(--ink); text-align:left; box-shadow:0 1px 2px rgba(22,24,29,.035),0 16px 34px -30px rgba(22,24,29,.2); transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease; }
.workflow-operator-project-card.platform-douyin { --project-platform:#2d5bd6; --project-platform-ink:#244caa; --project-platform-mark:url("./assets/project-platform/marks/douyin.svg"); }
.workflow-operator-project-card.platform-xiaohongshu { --project-platform:#d95b70; --project-platform-ink:#9c3045; --project-platform-mark:url("./assets/project-platform/marks/xiaohongshu.svg"); }
.workflow-operator-project-card.platform-kuaishou { --project-platform:#d9821f; --project-platform-ink:#7a4700; --project-platform-mark:url("./assets/project-platform/marks/kuaishou.svg"); }
.workflow-operator-project-card.platform-shipinhao { --project-platform:#238d69; --project-platform-ink:#176347; --project-platform-mark:url("./assets/project-platform/marks/shipinhao.svg"); }
.workflow-operator-project-card.platform-unknown { --project-platform:#8a94a6; --project-platform-ink:#596273; --project-platform-mark:none; }
.workflow-operator-project-card:hover,.workflow-operator-project-card.current { border-color:var(--brand-line); background:#fff; box-shadow:0 10px 28px -18px rgba(33,73,151,.25); transform:translateY(-1px); }
.workflow-operator-project-card:disabled { cursor:wait; opacity:.72; }
.workflow-operator-project-visual { position:relative; display:grid; align-content:space-between; gap:14px; min-width:0; overflow:hidden; padding:17px 18px 16px; border-top:3px solid var(--project-platform); background:#fff; isolation:isolate; }
.workflow-operator-project-visual::before,.workflow-operator-project-visual::after { content:""; position:absolute; inset:0; pointer-events:none; }
.workflow-operator-project-visual::before { z-index:-2; background:linear-gradient(105deg,#fff 0%,#fff 38%,color-mix(in srgb,var(--project-platform) 7%,#fff) 66%,color-mix(in srgb,var(--project-platform) 20%,#fff) 100%); }
.workflow-operator-project-visual::after { z-index:-1; background:linear-gradient(90deg,rgba(255,255,255,.98) 0%,rgba(255,255,255,.93) 42%,rgba(255,255,255,.26) 72%,rgba(255,255,255,0) 100%); }
.workflow-operator-project-platform-mark { position:absolute; z-index:0; top:27px; right:20px; width:96px; height:96px; background:var(--project-platform); opacity:.15; pointer-events:none; transform:rotate(-4deg); -webkit-mask:var(--project-platform-mark) center/contain no-repeat; mask:var(--project-platform-mark) center/contain no-repeat; }
.workflow-operator-project-card.platform-xiaohongshu .workflow-operator-project-platform-mark { top:45px; right:12px; width:126px; height:62px; transform:none; }
.workflow-operator-project-card.platform-unknown .workflow-operator-project-platform-mark { display:none; }
.workflow-operator-project-card-head,.workflow-operator-project-primary { position:relative; z-index:1; }
.workflow-operator-project-card-head { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:10px; min-width:0; }
.workflow-operator-project-copy { display:grid; align-content:start; min-width:0; }
.workflow-operator-project-copy b { overflow:hidden; color:#15181e; font-size:17px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-project-badges { display:flex; align-items:center; justify-content:flex-end; gap:5px; min-width:0; }
.workflow-operator-project-current,.workflow-operator-project-platform { flex:0 0 auto; padding:4px 7px; border:1px solid rgba(255,255,255,.8); border-radius:999px; background:rgba(255,255,255,.82); font-size:9.5px; font-style:normal; font-weight:800; white-space:nowrap; box-shadow:0 1px 4px rgba(22,24,29,.04); }
.workflow-operator-project-current { color:var(--brand); }
.workflow-operator-project-platform { border-color:var(--project-platform); color:var(--project-platform-ink); }
.workflow-operator-project-primary { display:grid; gap:4px; min-width:0; }
.workflow-operator-project-primary small,.workflow-operator-project-meta small { color:#7e8797; font-size:10.5px; }
.workflow-operator-project-primary b { overflow:hidden; color:#15181e; font:800 30px/1 var(--fs-num); letter-spacing:-.035em; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-project-meta { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto; align-items:end; gap:10px; min-width:0; padding:14px 18px 15px; background:var(--surface); }
.workflow-operator-project-meta>span { display:grid; gap:4px; min-width:0; }
.workflow-operator-project-meta b { overflow:hidden; color:var(--ink-2); font-size:11.5px; font-variant-numeric:tabular-nums; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-project-meta>strong { flex:0 0 auto; color:var(--project-platform-ink); font-size:12px; white-space:nowrap; }
.workflow-project-data { display:grid; gap:13px; padding:18px 20px; border:1px solid var(--line); border-radius:16px; background:var(--surface); }
.workflow-project-data-heading { display:flex; align-items:end; justify-content:space-between; gap:18px; }
.workflow-project-data-heading>div { display:grid; gap:4px; }
.workflow-project-data-heading span { color:var(--brand); font-size:10.5px; font-weight:800; letter-spacing:.08em; }
.workflow-project-data-heading h2 { margin:0; color:var(--ink); font-size:19px; letter-spacing:-.02em; }
.workflow-project-data-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--line-soft); border-radius:13px; overflow:hidden; }
.workflow-project-data-card { display:grid; align-content:start; gap:6px; min-width:0; min-height:108px; padding:15px 16px; border-right:1px solid var(--line-soft); background:var(--surface-sunk); }
.workflow-project-data-card:last-child { border-right:0; }
.workflow-project-data-card>span { color:var(--ink-3); font-size:10.5px; }
.workflow-project-data-card>b { color:var(--ink); font:800 22px/1.2 var(--fs-num); letter-spacing:-.02em; }
.workflow-project-data-card>small { color:var(--ink-3); font-size:10px; line-height:1.45; }
.workflow-project-data-card.live.available { background:var(--brand-soft); }
.workflow-project-data-card.live.available>b { color:var(--brand); }
.workflow-project-data-card.live.unavailable { background:#faf7f1; }
.workflow-project-data-card.live.unavailable>b { color:#9a6a19; }
.workflow-project-data-error { margin:0; color:var(--ink-2); font-size:12px; }
.workflow-project-data-secondary { display:grid; gap:8px; margin-top:2px; }
.workflow-project-data-secondary::before { content:"项目数据"; color:var(--ink-3); font-size:11px; font-weight:700; letter-spacing:.04em; }
.workflow-operator-project-head { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:16px; padding:4px 0; }
.workflow-operator-overview>.workflow-operator-project-head { grid-template-columns:minmax(0,1fr) auto; }
.workflow-role-project-notice { padding:11px 14px; border:1px solid #f0cf91; border-radius:12px; background:#fff8e9; color:#8a5b12; font-size:12px; line-height:1.55; }
.workflow-operator-project-head h2 { font-size:clamp(22px,2.5vw,32px); }
.workflow-operator-inline-actions { display:flex; align-items:center; gap:28px; min-height:30px; }
.workflow-operator-inline-actions button,.workflow-operator-inline-actions span { padding:2px 0; border:0; background:transparent; color:var(--ink-2); font-size:13px; font-weight:700; line-height:1.5; }
.workflow-operator-inline-actions button { cursor:pointer; }
.workflow-operator-inline-actions button:hover,.workflow-operator-inline-actions button.primary { color:var(--brand); }
.workflow-operator-inline-actions span[aria-disabled="true"] { color:var(--ink-3); }
.workflow-operator-plan-strip { display:grid; grid-template-columns:minmax(200px,1fr) auto; align-items:center; gap:18px; padding:16px 18px; border:1px solid var(--line); border-radius:14px; background:var(--surface); }
.workflow-operator-plan-strip>div { display:grid; gap:4px; }
.workflow-operator-plan-strip span { color:var(--ink-3); font-size:10.5px; }
.workflow-operator-plan-strip b { color:var(--ink); font-size:14px; }
.workflow-operator-plan-strip form { display:grid; grid-template-columns:auto 80px auto; gap:8px; }
.workflow-operator-progress { display:grid; gap:8px; padding:20px; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.workflow-operator-section-head { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:4px; }
.workflow-operator-section-head h3 { font-size:20px; }
.workflow-operator-section-head>small { max-width:520px; color:var(--ink-3); font-size:11px; line-height:1.55; text-align:right; }
.workflow-operator-progress-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:4px 12px; align-items:center; padding:12px 13px; border:1px solid var(--line-soft); border-radius:11px; background:var(--surface-sunk); color:var(--ink); text-align:left; }
.workflow-operator-progress-row:hover { border-color:var(--brand-line); }
.workflow-operator-progress-row b { overflow:hidden; font-size:12.5px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-progress-row em { color:var(--ink-3); font-size:10.5px; font-style:normal; }
.workflow-operator-progress-row code { grid-column:2/-1; color:var(--ink-3); font-size:9.5px; }
.workflow-operator-empty { display:grid; place-items:center; gap:5px; min-height:130px; padding:24px; border:1px dashed var(--line); border-radius:14px; color:var(--ink-3); text-align:center; }
.workflow-operator-empty b { color:var(--ink-2); font-size:13px; }
.workflow-operator-empty span { font-size:11px; }
.workflow-operator-project-blocked { display:grid; gap:8px; margin-top:24px; padding-top:18px; border-top:1px solid var(--line); }
.workflow-operator-project-blocked-row { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:rgba(248,250,253,.86); color:var(--ink-3); }
.workflow-operator-project-blocked-row b { color:var(--ink); }
.workflow-operator-match { display:grid; grid-template-columns:minmax(220px,1fr) minmax(180px,.8fr) minmax(180px,.8fr) auto; gap:10px; align-items:end; padding:16px; border:1px solid var(--brand-line); border-radius:14px; background:var(--brand-soft); }
.workflow-operator-match>div { display:grid; gap:4px; }
.workflow-operator-match>div span { color:var(--ink-2); font-size:10.5px; }
.workflow-operator-steps { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; padding:8px; border:1px solid var(--line); border-radius:15px; background:var(--surface); }
.workflow-operator-steps button { display:flex; align-items:center; gap:9px; padding:10px 12px; border:0; border-radius:10px; background:transparent; color:var(--ink-3); text-align:left; }
.workflow-operator-steps button.on { background:var(--brand); color:#fff; }
.workflow-operator-steps button.done { color:var(--brand); }
.workflow-operator-steps button span { display:grid; place-items:center; width:22px; height:22px; border:1px solid currentColor; border-radius:50%; font:750 9px/1 var(--fs-num); }
.workflow-operator-steps button b { font-size:11.5px; }
.workflow-operator-plan-needed { display:grid; grid-template-columns:minmax(220px,1fr) auto 80px auto; align-items:end; gap:9px; padding:14px; border:1px solid var(--warn-line); border-radius:13px; background:var(--warn-soft); }
.workflow-operator-plan-needed>div { display:grid; gap:4px; }
.workflow-operator-plan-needed span { color:var(--ink-2); font-size:10.5px; }
.workflow-operator-script-stage,.workflow-operator-reference-stage,.workflow-operator-rewrite-stage,.workflow-operator-content-review { display:grid; gap:16px; min-height:560px; padding:24px; border:1px solid var(--line); border-radius:20px; background:var(--surface); }
.workflow-operator-script-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.workflow-operator-script-card { display:grid; align-content:start; gap:7px; min-height:190px; padding:18px; border:1px solid var(--line-soft); border-radius:15px; background:var(--surface-sunk); color:var(--ink); text-align:left; }
.workflow-operator-script-card:hover { border-color:var(--brand-line); background:var(--brand-soft); }
.workflow-operator-script-card>span { color:var(--brand); font-size:10px; font-weight:750; }
.workflow-operator-script-card h3 { margin:8px 0 0; font-size:18px; }
.workflow-operator-script-card p { margin:0; color:var(--ink-3); font-size:11px; }
.workflow-operator-script-card strong { margin-top:auto; color:var(--ink-2); font-size:11px; }
.workflow-operator-script-metrics { display:grid; gap:3px; margin-top:auto; }
.workflow-operator-script-metrics strong { margin:0; }
.workflow-operator-script-card em { color:var(--brand); font-size:11px; font-style:normal; font-weight:700; }
.workflow-operator-variant-row { display:flex; flex-wrap:wrap; gap:8px; }
.workflow-operator-variant-row button,.workflow-operator-reference-toolbar button { padding:8px 13px; border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--ink-2); font-size:11px; font-weight:700; }
.workflow-operator-variant-row button.on,.workflow-operator-reference-toolbar button.on { border-color:var(--brand); background:var(--brand); color:#fff; }
.workflow-operator-reference-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.workflow-operator-reference-toolbar>div { display:flex; gap:7px; }
.workflow-operator-reference-toolbar>span { color:var(--ink-3); font-size:10.5px; }
.workflow-operator-reference-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; align-content:start; width:100%; max-width:960px; }
.workflow-operator-reference-card { width:100%; min-width:0; overflow:hidden; border:1px solid var(--line-soft); border-radius:14px; background:var(--surface-sunk); }
.workflow-operator-reference-card.selected { border-color:var(--brand); box-shadow:0 0 0 2px var(--brand-soft); }
.workflow-operator-reference-preview { position:relative; display:grid; align-content:space-between; width:100%; aspect-ratio:9/16; padding:10px; overflow:hidden; border:0; background:linear-gradient(160deg,#152443,#3378df); background-position:center; background-size:cover; color:#fff; text-align:left; }
.workflow-operator-reference-preview.platform-douyin { background-color:#2f6fff; }
.workflow-operator-reference-preview.platform-xhs { background:linear-gradient(160deg,#ff5d6c,#dc2f52); }
.workflow-operator-reference-preview.platform-channels { background:linear-gradient(160deg,#22a873,#087b57); }
.workflow-operator-reference-preview.platform-kuaishou { background:linear-gradient(160deg,#f4b52c,#d98313); }
.workflow-operator-reference-preview::after { position:absolute; inset:0; background:linear-gradient(180deg,rgba(4,14,35,.05),rgba(4,14,35,.7)); content:""; }
.workflow-operator-reference-preview>* { position:relative; z-index:1; }
.workflow-operator-reference-platform { justify-self:start; padding:4px 7px; border-radius:999px; background:rgba(4,14,35,.42); font-size:9px; font-weight:700; }
.workflow-operator-reference-play { align-self:center; justify-self:center; font-size:24px; }
.workflow-operator-reference-preview strong { font-size:10px; line-height:1.4; }
.workflow-operator-reference-card>div { display:grid; gap:4px; padding:10px; }
.workflow-operator-reference-card b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-reference-card small { overflow:hidden; color:var(--ink-3); font-size:9.5px; text-overflow:ellipsis; white-space:nowrap; }
.workflow-operator-reference-card label { display:flex; align-items:center; gap:5px; margin-top:4px; color:var(--ink-2); font-size:9.5px; }
.workflow-operator-reference-dialog-backdrop { position:fixed; z-index:120; inset:0; display:grid; place-items:center; padding:16px; background:rgba(8,18,39,.58); backdrop-filter:blur(3px); }
.workflow-operator-reference-dialog { position:relative; display:grid; grid-template-columns:minmax(220px,260px) minmax(0,1fr); gap:20px; width:min(760px,calc(100vw - 32px)); max-height:calc(100vh - 32px); padding:20px; overflow:auto; border:1px solid rgba(255,255,255,.28); border-radius:20px; background:var(--surface); box-shadow:0 24px 70px rgba(4,15,40,.34); }
.workflow-operator-reference-dialog-close { position:absolute; z-index:2; top:10px; right:10px; display:grid; place-items:center; width:30px; height:30px; border:1px solid var(--line); border-radius:50%; background:var(--surface); color:var(--ink-2); font-size:20px; line-height:1; }
.workflow-operator-reference-focus-media { width:100%; min-width:0; justify-self:center; overflow:hidden; border-radius:12px; background:#101d38; }
.workflow-operator-reference-focus-media video { display:block; width:100%; aspect-ratio:9/16; object-fit:contain; }
.workflow-operator-reference-focus-media>div { display:grid; place-items:center; align-content:center; gap:9px; aspect-ratio:9/16; padding:18px; color:#fff; text-align:center; }
.workflow-operator-reference-focus-media span { color:#a9c9ff; font-size:10px; }
.workflow-operator-reference-focus-media b { font-size:15px; line-height:1.5; }
.workflow-operator-reference-focus-media small { color:#aebbd1; font-size:10px; line-height:1.5; }
.workflow-operator-reference-dialog-copy { display:grid; align-content:start; gap:10px; min-width:0; padding:12px 8px 8px 0; }
.workflow-operator-reference-dialog-copy>span { color:var(--brand); font-size:10.5px; font-weight:750; }
.workflow-operator-reference-dialog-copy h3 { margin:0; padding-right:28px; font-size:21px; line-height:1.35; }
.workflow-operator-reference-dialog-copy p { margin:0; color:var(--ink-2); font-size:11px; line-height:1.6; }
.workflow-operator-reference-dialog-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.workflow-script-history-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)) auto; gap:9px; align-items:stretch; padding:12px; border:1px solid var(--line-soft); border-radius:13px; background:var(--surface-sunk); }
.workflow-script-history-summary>div { display:grid; gap:3px; min-width:0; padding:9px 10px; border-radius:9px; background:var(--surface); }
.workflow-script-history-summary>div span { color:var(--ink-3); font-size:9.5px; }
.workflow-script-history-summary>div b { color:var(--ink); font-size:11.5px; }
.workflow-script-history-summary>div small { color:var(--ink-3); font-size:9.5px; line-height:1.45; }
.workflow-script-history-summary>a { align-self:center; white-space:nowrap; }

.project-script-library { display:grid; gap:18px; padding:24px; border:1px solid var(--line); border-radius:20px; background:var(--surface); }
.project-script-library-head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.project-script-library-head span,.project-script-family-dialog-head span { color:var(--brand); font-size:11px; font-weight:780; letter-spacing:.06em; }
.project-script-library-head h2,.project-script-family-dialog-head h2 { margin:5px 0 0; font-size:24px; }
.project-script-library-head p,.project-script-family-dialog-head p { margin:7px 0 0; color:var(--ink-3); font-size:12px; line-height:1.6; }
.project-script-library-actions { display:flex; align-items:flex-start; gap:16px; }
.project-script-category-filter { display:grid; gap:5px; color:var(--ink-3); font-size:10px; font-weight:700; }
.project-script-category-filter select { min-width:132px; padding:9px 28px 9px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink); font:inherit; font-size:11px; outline:none; }
.project-script-category-filter select:focus { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-soft); }
.project-script-library-count { display:grid; justify-items:end; min-width:80px; }
.project-script-library-count b { color:var(--brand); font-family:var(--fs-num); font-size:30px; line-height:1; }
.project-script-library-count span { color:var(--ink-3); font-size:11px; font-weight:600; letter-spacing:0; }
.project-script-family-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.project-script-family-card { display:grid; align-content:start; gap:9px; min-height:185px; padding:18px; border:1px solid var(--brand); border-radius:15px; background:var(--brand); color:#fff; text-align:left; box-shadow:0 8px 18px rgba(45,91,214,.14); }
.project-script-family-card:hover { border-color:#234dbb; background:#234dbb; }
.project-script-family-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; min-width:0; }
.project-script-family-card-head h3 { min-width:0; margin:0; color:#fff; font-size:18px; line-height:1.35; overflow-wrap:anywhere; }
.project-script-family-card-head>span { flex:none; margin-left:auto; padding:5px 8px; border:1px solid rgba(255,255,255,.3); border-radius:999px; background:rgba(255,255,255,.14); color:#fff; font-size:10px; font-weight:750; white-space:nowrap; }
.project-script-family-card p { margin:0; color:rgba(255,255,255,.76); font-size:11px; }
.project-script-family-lineage { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.project-script-family-lineage span,.project-script-family-lineage small { padding:4px 7px; border:1px solid rgba(255,255,255,.26); border-radius:999px; background:rgba(255,255,255,.1); color:#fff; font-size:9.5px; }
.project-script-family-metrics { display:grid; gap:3px; margin-top:auto; }
.project-script-family-metrics strong { color:#fff; font-size:11px; font-weight:650; }
.project-script-open-button { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:6px; padding:8px 10px; border:1px solid rgba(255,255,255,.42); border-radius:8px; background:rgba(255,255,255,.12); color:#fff; font:inherit; font-size:11px; font-weight:750; text-align:left; }
.project-script-open-button:hover { background:#fff; color:var(--brand); }
.project-script-library-empty { display:grid; gap:6px; min-height:120px; place-items:center; align-content:center; padding:22px; border:1px dashed var(--line); border-radius:14px; color:var(--ink-3); text-align:center; }
.project-script-library-empty .btn { margin-top: 8px; }
.project-script-library-empty b { color:var(--ink); font-size:14px; }
.project-script-import-dialog { display:grid; gap:16px; width:min(620px,calc(100vw - 32px)); max-height:calc(100vh - 32px); padding:24px; overflow:auto; border:1px solid rgba(255,255,255,.28); border-radius:20px; background:var(--surface); box-shadow:0 24px 70px rgba(4,15,40,.34); }
.project-script-import-dialog-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.project-script-import-dialog-head span { color:var(--brand); font-size:10px; font-weight:780; letter-spacing:.06em; }
.project-script-import-dialog-head h2 { margin:5px 0 0; font-size:22px; }
.project-script-import-dialog-note { margin:0; color:var(--ink-2); font-size:12px; line-height:1.7; }
.project-script-import-sources { display:grid; gap:8px; padding:12px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.project-script-import-sources>b { color:var(--ink); font-size:12px; }
.project-script-import-sources article { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px; border-radius:9px; background:var(--surface); }
.project-script-import-sources article>div { display:grid; gap:3px; min-width:0; }
.project-script-import-sources article strong { overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-import-sources article span,.project-script-import-sources article small { color:var(--ink-3); font-size:10px; }
.project-script-import-sources article a { flex:none; color:var(--brand); font-size:10.5px; }
.project-script-import-empty { padding:14px; border:1px dashed var(--line); border-radius:10px; color:var(--ink-3); font-size:11px; text-align:center; }
.project-script-import-dialog-actions { display:flex; align-items:center; justify-content:flex-end; gap:9px; padding-top:4px; border-top:1px solid var(--line-soft); }
.project-script-import-dialog-actions>span { margin-right:auto; color:var(--ink-3); font-size:10.5px; }
.project-script-family-dialog { position:relative; display:grid; gap:18px; width:min(1080px,calc(100vw - 32px)); max-height:calc(100vh - 32px); padding:24px; overflow:auto; border:1px solid rgba(255,255,255,.28); border-radius:20px; background:var(--surface); box-shadow:0 24px 70px rgba(4,15,40,.34); }
.project-script-family-dialog-toolbar { position:sticky; z-index:4; top:-24px; display:flex; align-items:center; justify-content:space-between; gap:12px; margin:-24px -24px 0; padding:12px 24px 10px; border-bottom:1px solid var(--line-soft); background:var(--surface); }
.project-script-family-dialog-head { padding-right:36px; }
.project-script-lineage-identity { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.project-script-lineage-identity>div { display:grid; gap:4px; min-width:0; padding:12px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.project-script-lineage-identity span { color:var(--ink-3); font-size:9.5px; }
.project-script-lineage-identity b { color:var(--ink); font-size:12px; overflow-wrap:anywhere; }
.project-script-lineage-identity small { color:var(--ink-3); font-size:9.5px; line-height:1.45; overflow-wrap:anywhere; }
.project-script-family-dialog-body { display:grid; grid-template-columns:minmax(0,1fr) minmax(360px,1fr); gap:18px; min-height:0; }
.project-script-variants,.project-script-references,.project-script-reference-column { display:grid; align-content:start; gap:10px; min-width:0; }
.project-script-variants>b,.project-script-references-head b { font-size:13px; }
.project-script-revision-row { display:flex; flex-wrap:wrap; gap:6px; }
.project-script-revision-row span,.project-script-revision-row button { padding:5px 8px; border:1px solid var(--line-soft); border-radius:999px; background:var(--surface-sunk); color:var(--ink-2); font:inherit; font-size:9.5px; }
.project-script-revision-row button { cursor:pointer; }
.project-script-revision-row button.on { border-color:var(--brand); background:var(--brand-soft); color:var(--brand); }
.project-script-body { display:grid; gap:8px; min-width:0; }
.project-script-text { max-height:470px; margin:0; padding:16px; overflow:auto; white-space:pre-wrap; border:1px solid var(--line-soft); border-radius:13px; background:var(--surface-sunk); color:var(--ink-2); font-family:inherit; font-size:12px; line-height:1.75; }
.project-script-text-empty { margin:0; padding:12px 16px; border:1px dashed var(--line); border-radius:13px; color:var(--ink-3); font-size:12px; line-height:1.6; }
.project-script-promote-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.project-script-promote-actions small { color:var(--ink-3); font-size:10px; }
.project-script-performance { display:grid; gap:10px; padding:12px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.project-script-performance-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.project-script-performance-grid>div { display:grid; gap:6px; min-width:0; }
.project-script-performance-grid strong { color:var(--brand); font-size:11px; }
.project-script-performance-grid p { display:grid; gap:2px; margin:0; padding:7px 8px; border-radius:8px; background:var(--surface); }
.project-script-performance-grid p b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-performance-grid p span,.project-script-performance-grid small { color:var(--ink-3); font-size:9.5px; line-height:1.45; }
.project-script-references-head { display:flex; align-items:center; justify-content:space-between; }
.project-script-references-head span { color:var(--ink-3); font-size:11px; }
.project-script-reference-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; max-height:470px; overflow:auto; }
.project-script-reference-card { display:grid; gap:6px; min-width:0; padding:8px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.project-script-reference-card>b { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-reference-card>small { overflow:hidden; color:var(--ink-3); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-reference-cover { position:relative; display:grid; place-items:center; min-height:155px; overflow:hidden; border-radius:9px; background:linear-gradient(160deg,#152443,#3378df); color:#fff; }
.project-script-reference-card.platform-douyin .project-script-reference-cover { background:linear-gradient(160deg,#2f6fff,#2455c8); }
.project-script-reference-card.platform-xhs .project-script-reference-cover { background:linear-gradient(160deg,#ff5d6c,#d72f51); }
.project-script-reference-card.platform-channels .project-script-reference-cover { background:linear-gradient(160deg,#22a873,#087b57); }
.project-script-reference-card.platform-kuaishou .project-script-reference-cover { background:linear-gradient(160deg,#f4b52c,#d98313); }
.project-script-reference-cover>span { position:absolute; z-index:2; top:7px; left:7px; padding:4px 7px; border-radius:999px; background:rgba(4,14,35,.45); font-size:9px; font-weight:700; }
.project-script-reference-cover>video { display:block; width:100%; height:100%; min-height:155px; object-fit:cover; }
.project-script-reference-cover>b { font-size:11px; }
.project-script-history { display:grid; gap:11px; padding-top:16px; border-top:1px solid var(--line-soft); }
.project-script-history>header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.project-script-history>header>div { display:grid; gap:3px; }
.project-script-history>header span { color:var(--brand); font-size:9.5px; font-weight:780; }
.project-script-history>header b { color:var(--ink); font-size:14px; }
.project-script-history>header small { max-width:420px; color:var(--ink-3); font-size:10px; line-height:1.5; text-align:right; }
.project-script-history-state { display:grid; place-items:center; gap:4px; min-height:82px; padding:14px; border:1px dashed var(--line); border-radius:11px; color:var(--ink-3); text-align:center; }
.project-script-history-state b { color:var(--ink-2); font-size:11px; }
.project-script-history-state span { font-size:9.5px; line-height:1.5; }
.project-script-history-state.error { border-color:var(--danger-line); background:var(--danger-soft); }
.project-script-history-groups { display:grid; gap:8px; }
.project-script-history-groups details { border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); overflow:hidden; }
.project-script-history-groups summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px; cursor:pointer; list-style:none; }
.project-script-history-groups summary::-webkit-details-marker { display:none; }
.project-script-history-groups summary>div { display:grid; gap:3px; min-width:0; }
.project-script-history-groups summary b { color:var(--ink); font-size:11.5px; overflow-wrap:anywhere; }
.project-script-history-groups summary span { color:var(--ink-3); font-size:9.5px; }
.project-script-history-groups summary em { flex:none; padding:4px 7px; border-radius:999px; background:var(--brand-soft); color:var(--brand); font-size:9px; font-style:normal; }
.project-script-publication-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; padding:0 12px 12px; }
.project-script-publication-grid article { display:grid; gap:8px; min-width:0; padding:10px; border:1px solid var(--line-soft); border-radius:10px; background:var(--surface); }
.project-script-publication-grid article>div { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.project-script-publication-grid article>div b { color:var(--ink); font-size:10.5px; }
.project-script-publication-grid article>div span { min-width:0; overflow:hidden; color:var(--ink-3); font-size:9.5px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-publication-grid article>strong { display:flex; align-items:baseline; gap:5px; color:var(--brand); font:780 16px/1.2 var(--fs-num); }
.project-script-publication-grid article>strong small { color:var(--ink-3); font:500 9px/1.2 var(--fs-ui); }
.project-script-publication-grid dl { display:grid; gap:5px; margin:0; }
.project-script-publication-grid dl>div { display:grid; grid-template-columns:52px minmax(0,1fr); gap:6px; }
.project-script-publication-grid dt { color:var(--ink-3); font-size:9px; }
.project-script-publication-grid dd { margin:0; color:var(--ink-2); font-size:9px; line-height:1.4; overflow-wrap:anywhere; }
.project-script-history-groups details>p,.project-script-lineage-boundary { margin:0; padding:0 12px 12px; color:var(--ink-3); font-size:9px; line-height:1.5; }
.project-script-lineage-boundary { padding:0; }

/* 正式脚本库：V1 全量目录壳 + V2 时间线／父子关系工作区 */
.project-script-library { gap:14px; padding:0; border:0; border-radius:0; background:transparent; }
.project-script-library-head { min-width:0; padding:20px 22px; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.project-script-library-actions { flex:none; }
.project-script-library-layout { display:grid; grid-template-columns:minmax(240px,300px) minmax(0,1fr); gap:14px; min-width:0; align-items:start; }
.project-script-catalog,.project-script-workspace { min-width:0; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.project-script-catalog { position:sticky; top:12px; display:grid; gap:12px; max-height:calc(100vh - 32px); padding:15px; overflow:hidden; }
.project-script-catalog-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.project-script-catalog-head>div:first-child { display:grid; gap:3px; min-width:0; }
.project-script-catalog-head>div:first-child span { color:var(--brand); font-size:9.5px; font-weight:780; letter-spacing:.06em; }
.project-script-catalog-head>div:first-child b { color:var(--ink); font-size:13px; }
.project-script-catalog .project-script-library-count { min-width:58px; }
.project-script-catalog .project-script-library-count b { font-size:22px; }
.project-script-catalog .project-script-library-count span { font-size:9.5px; }
.project-script-search-field { display:grid; gap:5px; min-width:0; }
.project-script-search-field>span { color:var(--ink-3); font-size:9.5px; font-weight:700; }
.project-script-search-field input { width:100%; min-width:0; padding:9px 10px; border:1px solid var(--line); border-radius:9px; background:var(--surface); color:var(--ink); font:inherit; font-size:11px; outline:none; }
.project-script-search-field input:focus { border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-soft); }
.project-script-catalog-filters { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; min-width:0; }
.project-script-catalog .project-script-category-filter,.project-script-catalog .project-script-category-filter select { min-width:0; width:100%; }
.project-script-catalog .project-script-family-grid { grid-template-columns:1fr; gap:7px; min-height:0; overflow:auto; padding-right:2px; }
.project-script-catalog .project-script-family-card { gap:6px; min-height:0; padding:11px; border:1px solid var(--line-soft); border-radius:11px; background:var(--surface-sunk); color:var(--ink); box-shadow:none; }
.project-script-catalog .project-script-family-card:hover { border-color:var(--brand-line); background:var(--brand-soft); }
.project-script-catalog .project-script-family-card.on { border-color:var(--brand); background:var(--brand-soft); box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 10%,transparent); }
.project-script-catalog .project-script-family-card-head { gap:8px; }
.project-script-catalog .project-script-family-card-head h3 { color:var(--ink); font-size:12px; }
.project-script-catalog .project-script-family-card-head>span { padding:3px 6px; border-color:var(--line); background:var(--surface); color:var(--brand); font-size:8.5px; }
.project-script-catalog .project-script-family-card p,.project-script-catalog .project-script-family-card>small { margin:0; color:var(--ink-3); font-size:9.5px; line-height:1.45; }
.project-script-catalog .project-script-open-button { margin:2px 0 0; padding:6px 0 0; border:0; border-top:1px solid var(--line-soft); border-radius:0; background:transparent; color:var(--brand); font-size:9.5px; }
.project-script-catalog .project-script-open-button:hover { background:transparent; color:var(--brand-strong); }
.project-script-catalog-empty { display:grid; place-items:center; align-content:center; gap:5px; min-height:160px; padding:18px; border:1px dashed var(--line); border-radius:11px; color:var(--ink-3); font-size:10px; text-align:center; }
.project-script-catalog-empty b { color:var(--ink-2); font-size:12px; }
.project-script-workspace { display:grid; gap:15px; padding:20px; overflow:hidden; }
.project-script-workspace-empty { min-height:420px; place-items:center; align-content:center; padding:30px; color:var(--ink-3); text-align:center; }
.project-script-workspace-empty b { color:var(--ink); font-size:17px; }
.project-script-workspace-mobile-toolbar { display:none; }
.project-script-workspace-head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; min-width:0; }
.project-script-workspace-head .project-script-family-dialog-head { min-width:0; padding:0; }
.project-script-view-switch { display:flex; flex:none; gap:4px; padding:4px; border:1px solid var(--line-soft); border-radius:11px; background:var(--surface-sunk); }
.project-script-view-switch button { padding:7px 11px; border:0; border-radius:8px; background:transparent; color:var(--ink-3); font:inherit; font-size:10.5px; font-weight:720; }
.project-script-view-switch button.on { background:var(--surface); color:var(--brand); box-shadow:0 2px 7px rgba(25,52,100,.08); }
.project-script-graph-stage { min-width:0; padding:14px; border:1px solid var(--line-soft); border-radius:14px; background:var(--surface-sunk); }
.project-script-timeline,.project-script-lineage-view { display:grid; gap:11px; min-width:0; }
.project-script-timeline>header,.project-script-lineage-view>header { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.project-script-timeline>header>div,.project-script-lineage-view>header>div { display:grid; gap:3px; }
.project-script-timeline>header span,.project-script-lineage-view>header span { color:var(--brand); font-size:9px; font-weight:780; }
.project-script-timeline>header b,.project-script-lineage-view>header b { color:var(--ink); font-size:13px; }
.project-script-timeline>header small,.project-script-lineage-view>header small { max-width:430px; color:var(--ink-3); font-size:9.5px; line-height:1.5; text-align:right; }
.project-script-timeline-row { position:relative; display:grid; grid-template-columns:minmax(110px,.3fr) minmax(0,1fr); gap:14px; min-width:0; padding:12px 12px 12px 22px; border:1px solid var(--line-soft); border-radius:11px; background:var(--surface); }
.project-script-timeline-row::before { position:absolute; top:0; bottom:0; left:10px; width:1px; background:var(--brand-line); content:""; }
.project-script-timeline-row::after { position:absolute; top:18px; left:6px; width:7px; height:7px; border:2px solid var(--surface); border-radius:50%; background:var(--brand); content:""; }
.project-script-timeline-date { display:grid; align-content:start; gap:3px; min-width:0; }
.project-script-timeline-date b { color:var(--ink); font-size:11px; overflow-wrap:anywhere; }
.project-script-timeline-date span,.project-script-timeline-row>p { margin:0; color:var(--ink-3); font-size:9.5px; line-height:1.45; }
.project-script-timeline-items { display:grid; gap:6px; min-width:0; }
.project-script-timeline-items>div { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:3px 8px; min-width:0; padding:8px; border-radius:8px; background:var(--surface-sunk); }
.project-script-timeline-items b { min-width:0; overflow:hidden; color:var(--ink-2); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-timeline-items span { min-width:0; overflow:hidden; color:var(--ink-3); font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-timeline-items em { grid-column:2; grid-row:1/3; align-self:center; }
.project-script-truthful-empty { display:grid; place-items:center; align-content:center; gap:5px; min-height:100px; padding:16px; border:1px dashed var(--line); border-radius:11px; color:var(--ink-3); font-size:9.5px; line-height:1.5; text-align:center; }
.project-script-truthful-empty b { color:var(--ink-2); font-size:11px; }
.project-script-truthful-empty.error { border-color:var(--danger-line); background:var(--danger-soft); }
.project-script-lineage-flow { position:relative; display:grid; justify-items:center; gap:13px; min-width:0; padding:5px 0; }
.project-script-lineage-parent button,.project-script-lineage-parent>div,.project-script-lineage-current,.project-script-lineage-children button { display:grid; gap:3px; min-width:180px; max-width:280px; padding:11px 13px; border:1px solid var(--line); border-radius:11px; background:var(--surface); color:var(--ink); font:inherit; text-align:left; }
.project-script-lineage-parent button,.project-script-lineage-children button { cursor:pointer; }
.project-script-lineage-parent span,.project-script-lineage-current span,.project-script-lineage-children span { color:var(--brand); font-size:8.5px; font-weight:780; }
.project-script-lineage-parent b,.project-script-lineage-current b,.project-script-lineage-children b { font-size:11px; overflow-wrap:anywhere; }
.project-script-lineage-current small,.project-script-lineage-children small { color:var(--ink-3); font-size:9px; line-height:1.4; }
.project-script-lineage-current { border-color:var(--brand); background:var(--brand-soft); }
.project-script-lineage-children { position:relative; display:flex; justify-content:center; flex-wrap:wrap; gap:8px; width:100%; padding-top:13px; }
.project-script-lineage-children::before { position:absolute; top:0; left:14%; right:14%; border-top:1px solid var(--brand-line); content:""; }
.project-script-lineage-flow.edge-business_confirmed_unpersisted .project-script-lineage-current,.project-script-lineage-flow.edge-business_confirmed_unpersisted .project-script-lineage-children button { border-style:dashed; }
.project-script-lineage-flow.edge-business_confirmed_unpersisted .project-script-lineage-children::before { border-top-style:dashed; }
.project-script-lineage-no-children { padding:9px 12px; border:1px dashed var(--line); border-radius:9px; color:var(--ink-3); font-size:9.5px; }
.project-script-lineage-edge-note { margin:0; color:var(--ok); font-size:9.5px; text-align:center; }
.project-script-lineage-edge-note.pending { color:var(--brand); }
.project-script-lineage-edge-note.warning { color:var(--warn); }
.project-script-performance { padding:14px; }
.project-script-performance-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.project-script-performance-grid>div { align-content:start; padding:10px; border:1px solid var(--line-soft); border-radius:10px; background:var(--surface); }
.project-script-performance-grid article { display:grid; gap:2px; padding:7px 8px; border-radius:8px; background:var(--surface-sunk); }
.project-script-performance-grid article b { overflow:hidden; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.project-script-performance-grid article span { color:var(--ink-3); font-size:9px; line-height:1.45; }
.project-script-media-state { justify-self:start; padding:3px 6px; border-radius:999px; background:#eef1f5; color:var(--ink-3); font-size:8.5px; font-style:normal; font-weight:720; white-space:nowrap; }
.project-script-media-state.playable { background:var(--ok-soft); color:var(--ok); }
.project-script-media-state.external_only { background:var(--brand-soft); color:var(--brand); }
.project-script-media-state.unavailable { background:var(--danger-soft); color:var(--danger); }
.project-script-reference-card>em { margin-top:-2px; }
.project-script-reference-actions { display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; }
.project-script-reference-actions .btn { flex:1 1 auto; justify-content:center; min-width:0; }
.project-script-reference-audio { display:grid; gap:9px; padding:12px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.project-script-audio-empty { display:grid; place-items:center; gap:4px; min-height:88px; padding:12px; border:1px dashed var(--line); border-radius:10px; color:var(--ink-3); font-size:9.5px; line-height:1.5; text-align:center; }
.project-script-audio-empty b { color:var(--ink-2); font-size:11px; }
.project-script-audio-list { display:grid; gap:6px; }
.project-script-audio-list article { display:grid; gap:3px; padding:9px; border-radius:8px; background:var(--surface); }
.project-script-audio-list article b { font-size:10.5px; }
.project-script-audio-list article span { color:var(--ink-3); font-size:9.5px; }
.project-script-audio-list article audio { width:100%; }
.project-script-audio-upload { display:grid; gap:8px; padding-top:4px; }
.project-script-audio-upload label { display:grid; gap:4px; font-size:10px; color:var(--ink-3); }
.workflow-operator-reference-audio { display:grid; gap:8px; }
.workflow-operator-audio-list { display:grid; gap:8px; }
.workflow-operator-audio-list article { display:grid; gap:6px; padding:10px; border:1px solid var(--line-soft); border-radius:10px; background:var(--surface); }
.workflow-operator-audio-list article.selected { border-color:var(--line); }
.workflow-operator-audio-list article audio { width:100%; }
.workflow-reference-audio-snapshots { display:grid; gap:8px; }
.workflow-reference-audio-snapshots audio { width:100%; }
.project-script-media-dialog { width:min(820px,calc(100vw - 32px)); }
.project-script-media-dialog-body { display:grid; grid-template-columns:minmax(220px,.7fr) minmax(0,1fr); gap:16px; min-width:0; }
.project-script-media-dialog-body>div:first-child { display:grid; align-content:start; gap:7px; min-width:0; }
.project-script-media-dialog-body>div:first-child>span { color:var(--brand); font-size:9.5px; font-weight:780; }
.project-script-media-dialog-body h2 { margin:0; font-size:21px; overflow-wrap:anywhere; }
.project-script-media-dialog-body p { margin:0; color:var(--ink-3); font-size:10.5px; }
.project-script-media-dialog-body>video { display:block; width:100%; max-height:62vh; border-radius:13px; background:#071121; object-fit:contain; }
@media (max-width: 980px) {
  .project-script-library-layout { grid-template-columns:minmax(220px,270px) minmax(0,1fr); }
  .project-script-family-grid { grid-template-columns:1fr; }
  .project-script-family-dialog-body { grid-template-columns:1fr; }
  .project-script-performance-grid { grid-template-columns:1fr; }
  .project-script-publication-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 620px) {
  .project-script-library { padding:0; }
  .project-script-library-head { flex-direction:column; }
  .project-script-library-actions { align-items:stretch; justify-content:space-between; width:100%; }
  .project-script-library-count { justify-items:start; }
  .project-script-family-grid,.project-script-reference-grid,.project-script-lineage-identity,.project-script-publication-grid { grid-template-columns:1fr; }
  .project-script-history>header,.project-script-history-groups summary { align-items:stretch; flex-direction:column; }
  .project-script-history>header small { text-align:left; }
}
@media (max-width: 760px) {
  .project-script-library-head { align-items:stretch; flex-direction:column; padding:16px; }
  .project-script-library-actions,.project-script-library-actions .btn { width:100%; }
  .project-script-library-layout { grid-template-columns:1fr; }
  .project-script-catalog { position:static; max-height:none; }
  .project-script-library-layout.has-selection .project-script-catalog { display:none; }
  .project-script-library-layout:not(.has-selection) .project-script-workspace { display:none; }
  .project-script-workspace { gap:12px; padding:14px; border-radius:15px; }
  .project-script-workspace-mobile-toolbar { position:sticky; z-index:3; top:-14px; display:flex; margin:-14px -14px 0; padding:10px 14px 8px; }
  .project-script-workspace-head,.project-script-timeline>header,.project-script-lineage-view>header { align-items:stretch; flex-direction:column; }
  .project-script-timeline>header small,.project-script-lineage-view>header small { max-width:none; text-align:left; }
  .project-script-view-switch { width:100%; }
  .project-script-view-switch button { flex:1; }
  .project-script-lineage-identity,.project-script-performance-grid,.project-script-family-dialog-body,.project-script-reference-grid,.project-script-publication-grid,.project-script-media-dialog-body { grid-template-columns:1fr; }
  .project-script-timeline-row { grid-template-columns:1fr; }
  .project-script-timeline-items>div { grid-template-columns:minmax(0,1fr); }
  .project-script-timeline-items em { grid-column:auto; grid-row:auto; }
  .project-script-history>header,.project-script-history-groups summary { align-items:stretch; flex-direction:column; }
  .project-script-history>header small { text-align:left; }
  .project-script-media-dialog { width:calc(100vw - 16px); max-height:calc(100vh - 16px); padding:14px; border-radius:15px; }
  .project-script-media-dialog .project-script-family-dialog-toolbar { top:-14px; margin:-14px -14px 0; padding:10px 14px 8px; }
}
@media (max-width: 430px) {
  .project-script-catalog-filters { grid-template-columns:1fr; }
  .project-script-library-head h2,.project-script-family-dialog-head h2 { font-size:21px; }
  .project-script-workspace,.project-script-catalog { overflow-wrap:anywhere; }
  .project-script-lineage-parent button,.project-script-lineage-parent>div,.project-script-lineage-current,.project-script-lineage-children button { width:100%; min-width:0; max-width:none; }
  .project-script-lineage-children { display:grid; grid-template-columns:1fr; }
  .project-script-reference-actions { align-items:stretch; flex-direction:column; }
  .script-library-detail-drawer { width:100%; }
}

.script-library-four-piece { position:relative; }
.script-library-peak-pair { display:grid; gap:6px; margin-top:6px; }
.script-library-peak { display:flex; justify-content:space-between; gap:8px; color:var(--ink-2); font-size:10px; }
.script-library-peak b { color:var(--ink); font-family:var(--fs-num); }
.script-library-peak.empty b { color:var(--ink-3); font-weight:600; }
.script-library-peak-scope { color:var(--ink-3); font-size:9px; line-height:1.4; }
.script-library-queue-entry { display:grid; gap:3px; width:100%; margin-top:8px; padding:10px; border:1px dashed var(--line); border-radius:10px; background:var(--surface-sunk); color:var(--ink); font:inherit; text-align:left; }
.script-library-queue-entry small { color:var(--ink-3); font-size:9.5px; }
.script-library-lineage-canvas { position:relative; display:grid; gap:10px; min-height:360px; padding:8px 0 8px 0; }
.script-library-connectors { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.script-library-quarter-row { display:grid; grid-template-columns:88px minmax(0,1fr); gap:10px; min-width:0; }
.script-library-quarter-rail { display:grid; align-content:start; gap:2px; }
.script-library-quarter-rail b { color:var(--ink); font-size:11px; }
.script-library-quarter-rail span { color:var(--ink-3); font-size:9px; line-height:1.35; }
.script-library-quarter-band { display:flex; flex-wrap:wrap; gap:8px; min-height:52px; padding:8px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface); }
.script-library-quarter-row.empty .script-library-quarter-band { align-items:center; }
.script-library-band-empty { color:var(--ink-3); font-size:10px; }
.script-library-node { display:grid; gap:3px; min-width:150px; max-width:220px; padding:10px 12px; border:1px solid var(--line); border-radius:11px; background:var(--surface-sunk); color:var(--ink); font:inherit; text-align:left; }
.script-library-node.root { border-color:var(--brand); background:var(--brand-soft); }
.script-library-node.candidate { border-style:dashed; }
.script-library-node.on { box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 16%,transparent); }
.script-library-node span { color:var(--brand); font-size:8.5px; font-weight:780; }
.script-library-node b { font-size:12px; overflow-wrap:anywhere; }
.script-library-node small { color:var(--ink-3); font-size:9px; line-height:1.4; }
.script-library-node-flags { display:flex; flex-wrap:wrap; gap:4px; }
.script-library-node-flags em,.script-library-sole-draft { padding:2px 6px; border-radius:999px; background:var(--surface); color:var(--ink-2); font-size:8.5px; font-style:normal; }
.script-library-sole-draft { color:var(--brand); }
.script-library-legacy-views { margin-top:10px; color:var(--ink-3); font-size:11px; }
.script-library-detail-drawer { position:fixed; top:0; right:0; z-index:40; display:grid; align-content:start; gap:16px; width:66vw; max-width:1100px; height:100vh; padding:18px 20px 28px; overflow:auto; border-left:1px solid var(--line); background:var(--surface); box-shadow:-18px 0 40px rgba(20,28,45,.12); }
.script-library-detail-toolbar { display:flex; justify-content:space-between; gap:10px; }
.script-library-detail-section { display:grid; gap:8px; }
.script-library-window-note { margin:0; color:var(--ink-3); font-size:10px; line-height:1.5; }
.script-library-overview-grid,.script-library-store-usage { display:grid; gap:8px; }
.script-library-overview-grid article,.script-library-store-usage article { display:grid; gap:4px; padding:10px 12px; border:1px solid var(--line-soft); border-radius:10px; background:var(--surface-sunk); }
.script-library-overview-grid span,.script-library-store-usage span { color:var(--ink-3); font-size:10px; }
.script-library-overview-grid b,.script-library-store-usage b { font-size:13px; }
.script-library-classify { display:grid; gap:14px; min-width:0; padding:18px; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.script-library-classify-head { display:flex; align-items:flex-start; gap:12px; }
.script-library-classify-tabs { display:flex; flex-wrap:wrap; gap:6px; }
.script-library-classify-tabs button { padding:5px 10px; border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--ink-2); font:inherit; font-size:11px; }
.script-library-classify-tabs button.on { border-color:var(--brand); background:var(--brand-soft); color:var(--brand); }
.script-library-auto-result { margin:0; color:var(--ink-2); font-size:11px; }
.script-library-classify-list { display:grid; gap:8px; }
.script-library-classify-row { display:grid; gap:8px; padding:12px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.script-library-classify-row h3 { margin:0; font-size:14px; }
.script-library-classify-row-meta { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.script-library-machine-badge { padding:2px 6px; border-radius:999px; background:color-mix(in srgb,var(--brand) 16%,var(--surface)); color:var(--brand); font-size:8.5px; font-style:normal; }
.script-library-manual-only { display:inline-flex; align-items:center; gap:6px; margin-left:auto; color:var(--ink-2); font-size:11px; }
.script-library-classify-board { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(240px,.8fr); gap:14px; }
.script-library-classify-card,.script-library-classify-suggest { display:grid; align-content:start; gap:8px; padding:16px; border:1px solid var(--line-soft); border-radius:14px; background:var(--surface-sunk); }
.script-library-classify-actions { display:flex; flex-wrap:wrap; gap:8px; }
.script-library-picker-list { display:grid; gap:6px; max-height:360px; overflow:auto; }
.script-library-picker-item { display:grid; gap:3px; padding:10px; border:1px solid var(--line-soft); border-radius:10px; background:var(--surface); color:var(--ink); font:inherit; text-align:left; }
.script-library-manage-row { display:flex; flex-wrap:wrap; gap:8px; align-items:end; }
.script-library-external-form { display:flex; flex-wrap:wrap; gap:8px; }
.script-asset-type-panel { display:grid; gap:8px; min-width:0; padding:10px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.script-asset-type-chips { display:flex; flex-wrap:wrap; gap:6px; }
.script-asset-type-chips button { display:inline-flex; align-items:center; gap:5px; padding:4px 8px; border:1px solid var(--line); border-radius:999px; background:var(--surface); color:var(--ink-2); font:inherit; font-size:10px; }
.script-asset-type-chips button em { color:var(--ink-3); font-size:9px; font-style:normal; }
.script-asset-type-chips button.on { border-color:var(--brand); background:var(--brand-soft); color:var(--brand); }
.script-asset-type-create { display:flex; gap:6px; min-width:0; }
.script-asset-type-create .text-input { min-width:0; flex:1; }
.script-asset-type-empty { color:var(--ink-3); font-size:10px; line-height:1.45; }
.script-asset-quick-link { display:grid; gap:6px; min-width:0; }
.script-asset-quick-link label { display:grid; gap:4px; }
.script-asset-quick-link label span { color:var(--ink-2); font-size:10px; }
.script-asset-quick-link input { width:100%; }
.script-asset-quick-link>small { color:var(--ink-3); font-size:10px; }
.script-asset-quick-results { display:grid; gap:5px; max-height:220px; overflow:auto; }
.script-asset-quick-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:2px 8px; padding:8px 9px; border:1px solid var(--line-soft); border-radius:9px; background:var(--surface); color:var(--ink); font:inherit; text-align:left; }
.script-asset-quick-row b { font-size:11px; overflow-wrap:anywhere; }
.script-asset-quick-row span,.script-asset-quick-row small { color:var(--ink-3); font-size:9.5px; }
.script-asset-quick-row em { align-self:center; color:var(--brand); font-size:10px; font-style:normal; }
.script-asset-quick-row.linked { border-color:var(--brand); background:var(--brand-soft); }
.script-asset-type-delete { justify-self:start; padding:0; border:0; background:transparent; color:var(--ink-3); font:inherit; font-size:10px; }
.script-asset-type-tags { display:flex; flex-wrap:wrap; gap:4px; }
.script-asset-type-tags em { display:inline-flex; align-items:center; gap:3px; padding:2px 6px; border-radius:999px; background:var(--surface); color:var(--ink-2); font-size:8.5px; font-style:normal; }
.script-asset-type-tags button { padding:0; border:0; background:transparent; color:var(--ink-3); font:inherit; line-height:1; }
@media (max-width: 760px) {
  .script-library-classify-board { grid-template-columns:1fr; }
  .script-library-detail-drawer { width:100%; }
}
.workflow-operator-stage-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:auto; padding-top:14px; border-top:1px solid var(--line-soft); }
.workflow-operator-stage-footer>span { color:var(--ink-2); font-size:11px; }
.workflow-operator-content-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.workflow-operator-content-grid article,.workflow-operator-content-grid label { display:grid; align-content:start; gap:5px; min-width:0; padding:14px; border:1px solid var(--line-soft); border-radius:12px; background:var(--surface-sunk); }
.workflow-operator-content-grid article span,.workflow-operator-content-grid label>span { color:var(--ink-3); font-size:10px; }
.workflow-operator-content-grid article b { font-size:14px; }
.workflow-operator-content-grid article p { margin:0; color:var(--ink-2); font-size:10.5px; }
.workflow-operator-content-grid .wide { grid-column:1/-1; }
.workflow-operator-assign-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(340px,.72fr); gap:16px; }
.workflow-operator-draft-summary,.workflow-operator-assignment-form { display:grid; align-content:start; gap:14px; padding:22px; border:1px solid var(--line); border-radius:18px; background:var(--surface); }
.workflow-operator-draft-summary h3 { margin:0; font-size:22px; }
.workflow-operator-draft-summary dl { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin:0; }
.workflow-operator-draft-summary dl div { display:grid; gap:4px; padding:10px; border-radius:10px; background:var(--surface-sunk); }
.workflow-operator-draft-summary dt { color:var(--ink-3); font-size:9.5px; }
.workflow-operator-draft-summary dd { margin:0; color:var(--ink); font-size:11.5px; overflow-wrap:anywhere; }
.workflow-operator-draft-summary p { margin:0; color:var(--ink-2); font-size:12px; line-height:1.65; white-space:pre-wrap; }
.workflow-operator-assignment-form label { display:grid; gap:5px; }
.workflow-operator-assignment-form label>span { color:var(--ink-2); font-size:11px; }
.workflow-operator-assignment-form>small { color:var(--ink-3); font-size:10px; line-height:1.5; }
.workflow-task-detail { display: grid; gap: 10px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line-soft); }
.workflow-handoff-section p { margin: 0; color: var(--ink-2); font-size: 12px; line-height: 1.6; white-space: pre-wrap; }
.workflow-snapshot-meta { color: var(--ink-3); font-family: var(--fs-num); font-size: 10px; overflow-wrap: anywhere; }
.workflow-source-snapshot summary { cursor: pointer; color: var(--brand); font-size: 11px; font-weight: 700; }
.workflow-source-snapshot[open] summary { margin-bottom: 6px; }
.workflow-reference-snapshots { display: grid; gap: 7px; }
.workflow-reference-snapshots > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 10px;
  padding: 8px;
  border-radius: 8px;
  background: var(--surface);
}
.workflow-reference-snapshots b { color: var(--ink); font-size: 11.5px; }
.workflow-reference-snapshots small { grid-column: 1; color: var(--ink-3); font-size: 10px; overflow-wrap: anywhere; }
.workflow-reference-snapshots a { grid-column: 2; grid-row: 1 / span 2; align-self: center; color: var(--brand); font-size: 11px; }
.workflow-metrics-rows { display: grid; gap: 6px; }
.workflow-metric-row {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 12.5px;
  padding: 6px 8px;
  border-radius: 8px;
  background: var(--surface-sunk);
}
.workflow-publisher-daily {
  display: grid;
  gap: 14px;
}
.workflow-publisher-mode-switch {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.workflow-publisher-mode-card {
  min-width: 0;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 15px 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface);
  color: var(--ink-2);
  text-align: left;
  cursor: pointer;
}
.workflow-publisher-mode-card:hover { border-color: var(--brand-line); }
.workflow-publisher-mode-card.on { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 14px 30px -26px rgba(45, 91, 214, .75); }
.workflow-publisher-mode-number { color: var(--brand); font: 800 12px/1 var(--fs-num); }
.workflow-publisher-mode-card > span:nth-child(2) { display: grid; gap: 4px; }
.workflow-publisher-mode-card b { color: var(--ink); font-size: 15px; }
.workflow-publisher-mode-card small { color: var(--ink-3); font-size: 11px; line-height: 1.45; }
.workflow-publisher-mode-card em { min-width: 30px; padding: 5px 8px; border-radius: 999px; background: var(--surface-sunk); color: var(--brand); font: 800 12px/1 var(--fs-num); text-align: center; }
.workflow-publish-tabs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 7px;
  padding: 5px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface-sunk);
}
.workflow-publish-tabs button {
  min-width: 0;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: var(--ink-2);
  font: inherit;
  cursor: pointer;
}
.workflow-publish-tabs button b {
  min-width: 22px;
  padding: 2px 6px;
  border-radius: 999px;
  background: rgba(120, 137, 166, .12);
  color: var(--ink-3);
  font-size: 11px;
}
.workflow-publish-tabs button.on {
  border-color: var(--brand-line);
  background: var(--surface);
  color: var(--brand);
  box-shadow: 0 10px 24px -20px rgba(45, 91, 214, .7);
}
.workflow-publish-tabs button.on b { background: var(--brand-soft); color: var(--brand); }
.workflow-publisher-state-tabs { max-width: 620px; }
.workflow-publish-steps { display: grid; gap: 14px; }
.workflow-publish-step {
  display: grid;
  gap: 12px;
  min-width: 0;
  padding: 15px;
  border: 1px solid var(--line-soft);
  border-radius: 12px;
  background: var(--surface-sunk);
}
.workflow-publish-step > header { display: flex; align-items: flex-start; gap: 10px; }
.workflow-publish-step > header > div { display: grid; gap: 3px; }
.workflow-publish-step > header b { color: var(--ink); font-size: 14px; }
.workflow-publish-step > header small { color: var(--ink-3); font-size: 11px; line-height: 1.45; }
.workflow-publish-step-number {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: var(--brand);
  color: #fff;
  font: 800 12px/1 var(--fs-num);
}
.workflow-inventory-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.workflow-inventory-actions .muted { font-size: 10.5px; }
.workflow-publish-business-card {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(230px, .8fr);
  gap: 16px;
  align-items: start;
  padding: 15px;
  border: 1px solid var(--brand-line);
  border-radius: 13px;
  background: var(--surface);
}
.workflow-publish-business-copy { display: grid; gap: 11px; min-width: 0; }
.workflow-publish-business-kicker { display: flex; flex-wrap: wrap; gap: 6px; }
.workflow-publish-business-copy h3 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(17px, 2vw, 22px);
  line-height: 1.35;
  letter-spacing: -.015em;
  overflow-wrap: anywhere;
}
.workflow-publish-business-copy > p {
  margin: -4px 0 0;
  color: var(--ink-2);
  font-size: 11.5px;
  line-height: 1.55;
}
.workflow-publish-business-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}
.workflow-publish-business-summary > div {
  min-width: 0;
  padding: 9px 10px;
  border-radius: 9px;
  background: var(--surface-sunk);
}
.workflow-publish-business-summary > div.wide { grid-column: 1 / -1; }
.workflow-publish-business-summary dt { color: var(--ink-3); font-size: 9.5px; }
.workflow-publish-business-summary dd {
  margin: 4px 0 0;
  color: var(--ink);
  font-size: 11.5px;
  font-weight: 720;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.workflow-publish-primary-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.workflow-publish-primary-actions .btn { min-width: 112px; justify-content: center; }
.workflow-mobile-pickup-note { color: var(--ink-3) !important; font-size: 10.5px !important; }
.workflow-publish-approval-note {
  display: grid;
  gap: 5px;
  padding: 10px 11px;
  border-left: 3px solid var(--ok);
  border-radius: 0 9px 9px 0;
  background: var(--ok-soft);
}
.workflow-publish-approval-note b { color: var(--ink); font-size: 11.5px; }
.workflow-publish-approval-note p { margin: 0; color: var(--ink-2); font-size: 11px; line-height: 1.6; }
.workflow-publish-video-preview {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 9px;
  border-radius: 11px;
  background: #08111f;
}
.workflow-publish-video-preview video {
  width: 100%;
  height: min(300px, 42vh);
  border-radius: 8px;
  background: #08111f;
  object-fit: contain;
}
.workflow-publish-video-preview span { color: rgba(255,255,255,.72); font-size: 10px; text-align: center; }
.workflow-publish-target-status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 12px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-publish-target-status > div { display: grid; gap: 3px; }
.workflow-publish-target-status b { color: var(--ink); font-size: 11.5px; }
.workflow-publish-target-status span:not(.badge) { color: var(--ink-3); font-size: 10.5px; line-height: 1.5; }
.workflow-publish-roadmap {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.workflow-publish-roadmap article {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface);
}
.workflow-publish-roadmap article > span {
  color: var(--brand);
  font: 800 10px/1.5 var(--fs-num);
}
.workflow-publish-roadmap article > div { display: grid; gap: 3px; min-width: 0; }
.workflow-publish-roadmap b { color: var(--ink); font-size: 11px; line-height: 1.4; }
.workflow-publish-roadmap small { color: var(--ink-3); font-size: 9.5px; }
.workflow-publish-roadmap article.done { border-color: var(--ok-line); background: var(--ok-soft); }
.workflow-publish-roadmap article.done > span,
.workflow-publish-roadmap article.done small { color: var(--ok); }
.workflow-publish-roadmap article.locked { opacity: .72; }
.workflow-optional-fields,
.workflow-target-overrides {
  padding: 10px;
  border: 1px dashed var(--line);
  border-radius: 9px;
  background: var(--surface);
}
.workflow-optional-fields > summary,
.workflow-target-overrides > summary { cursor: pointer; color: var(--ink-2); font-size: 11px; font-weight: 750; }
.workflow-optional-fields[open] > summary,
.workflow-target-overrides[open] > summary { margin-bottom: 10px; }
.workflow-publish-rule { padding: 9px 11px; border-left: 3px solid var(--brand); border-radius: 0 8px 8px 0; background: var(--brand-soft); color: var(--ink-2); font-size: 11.5px; line-height: 1.5; }
.workflow-publish-library-boundary {
  display: grid;
  gap: 3px;
  padding: 10px 12px;
  border: 1px solid var(--brand-line);
  border-radius: 10px;
  background: var(--brand-soft);
}
.workflow-publish-library-boundary b { color: var(--ink); font-size: 11.5px; }
.workflow-publish-library-boundary span { color: var(--ink-3); font-size: 10.5px; line-height: 1.55; }
.workflow-publish-library-manager {
  padding: 11px 12px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: var(--surface);
}
.workflow-publish-library-manager > summary { cursor: pointer; color: var(--ink-2); font-size: 11.5px; font-weight: 750; }
.workflow-publish-library-manager[open] > summary { margin-bottom: 11px; }
.workflow-publish-library-manager > small { display: block; margin-top: 9px; color: var(--ink-3); font-size: 10px; line-height: 1.5; }
.workflow-publish-library-manager-grid {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto minmax(180px, 1fr) auto minmax(180px, .8fr);
  gap: 8px;
  align-items: end;
}
.workflow-publish-library-manager-grid label { display: grid; gap: 5px; min-width: 0; color: var(--ink-3); font-size: 10.5px; }
.workflow-cover-upload-button input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.workflow-cover-upload-button b {
  min-height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 7px 10px;
  border: 1px solid var(--brand-line);
  border-radius: 9px;
  color: var(--brand);
  background: var(--brand-soft);
  cursor: pointer;
  font-size: 11px;
}
.workflow-publish-library-section { display: grid; gap: 8px; }
.workflow-publish-title-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }
.workflow-publish-title-options button {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  min-height: 58px;
  padding: 11px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--ink-2);
  background: var(--surface);
  text-align: left;
  cursor: pointer;
}
.workflow-publish-title-options button span { font-size: 12px; line-height: 1.55; }
.workflow-publish-title-options button b { flex: 0 0 auto; color: var(--brand); font-size: 10px; }
.workflow-publish-title-options button.selected { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 12px 28px -24px rgba(45,91,214,.8); }
.workflow-publish-topic-options { display: flex; flex-wrap: wrap; gap: 7px; }
.workflow-publish-topic-options button {
  min-height: 32px;
  padding: 6px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--ink-2);
  background: var(--surface);
  font: inherit;
  font-size: 11px;
  cursor: pointer;
}
.workflow-publish-topic-options button.selected { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); font-weight: 750; }
.workflow-library-empty { padding: 13px; border: 1px dashed var(--line); border-radius: 10px; color: var(--ink-3); background: var(--surface); font-size: 11px; }
.workflow-publish-copy-editor { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--brand-line); border-radius: 11px; background: var(--surface); }
.workflow-publish-copy-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.workflow-publish-copy-head > div { display: grid; gap: 3px; }
.workflow-publish-copy-head b { color: var(--ink); font-size: 12px; }
.workflow-publish-copy-head span { color: var(--ink-3); font-size: 10px; }
.workflow-publish-cover-options { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 9px; }
.workflow-publish-cover-options button {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px 8px;
  padding: 7px;
  border: 1px solid var(--line);
  border-radius: 11px;
  color: var(--ink-2);
  background: var(--surface);
  text-align: left;
  cursor: pointer;
  overflow: hidden;
}
.workflow-publish-cover-options button.selected { border-color: var(--brand); background: var(--brand-soft); }
.workflow-publish-cover-options img { grid-column: 1 / -1; width: 100%; aspect-ratio: 3 / 4; border-radius: 8px; background: var(--surface-sunk); object-fit: cover; }
.workflow-publish-cover-options span { overflow: hidden; font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.workflow-publish-cover-options b { color: var(--brand); font-size: 10px; }
.workflow-publish-preparation-actions {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--brand-line);
  border-radius: 11px;
  background: var(--surface);
}
.workflow-publish-preparation-actions > div { display: grid; gap: 3px; }
.workflow-publish-preparation-actions > .probe-note,
.workflow-publish-preparation-actions > .workflow-optional-fields {
  grid-column: 1 / -1;
  min-width: 0;
}
.workflow-publish-preparation-actions b { color: var(--ink); font-size: 11.5px; }
.workflow-publish-preparation-actions span { color: var(--ink-3); font-size: 10.5px; line-height: 1.5; }
.workflow-pickup-qr {
  grid-column: 1 / -1;
  display: grid;
  justify-items: start;
  gap: 6px;
  padding-top: 8px;
  border-top: 1px dashed var(--line-soft);
}
.workflow-pickup-qr b { font-size: 11px; }
.workflow-pickup-qr span { color: var(--ink-3); font-size: 11px; line-height: 1.5; }
.workflow-pickup-qr-canvas {
  width: 168px;
  height: 168px;
  border-radius: 10px;
  background: #fff;
  image-rendering: pixelated;
}
.workflow-pickup-qr small {
  color: var(--ink-3);
  font-size: 10.5px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.workflow-publish-locked-step {
  display: grid;
  gap: 8px;
  padding: 14px;
  border: 1px dashed var(--line);
  border-radius: 10px;
  background: var(--surface);
}
.workflow-publish-locked-step b { color: var(--ink); font-size: 12px; }
.workflow-publish-locked-step span { color: var(--ink-3); font-size: 11px; line-height: 1.55; }
.workflow-publish-locked-step small { color: var(--ink-3); font-size: 10px; line-height: 1.5; }
.workflow-publish-locked-step .btn { justify-self: start; }
.workflow-publish-platforms { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; }
.workflow-publish-platforms button { display: grid; gap: 4px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); color: var(--ink-2); text-align: left; cursor: pointer; }
.workflow-publish-platforms button b { color: var(--ink); font-size: 12px; }
.workflow-publish-platforms button span { color: var(--ink-3); font-size: 10px; }
.workflow-publish-platforms button.on { border-color: var(--brand); background: var(--brand-soft); }
.workflow-publish-platforms button:disabled { cursor: default; opacity: .55; }
.workflow-publish-account-picker { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(220px, 1.4fr) auto; gap: 8px; align-items: center; }
.workflow-publish-target-summary { display: grid; gap: 4px; min-width: 0; }
.workflow-publish-target-summary b { color: var(--brand); font-size: 12px; }
.workflow-publish-target-summary span { overflow: hidden; color: var(--ink); font-size: 12px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.workflow-target-overrides { grid-column: 1 / -1; }
.workflow-confirm-published { justify-self: end; min-width: 160px; }
.workflow-publisher-status-list { display: grid; gap: 9px; }
.workflow-publisher-status-list > article { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 14px; padding: 12px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.workflow-publisher-status-list header { grid-column: 1 / -1; display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.workflow-publisher-status-list header > div { display: grid; gap: 3px; }
.workflow-publisher-status-list header span:not(.badge),
.workflow-publisher-status-list > article > div span { color: var(--ink-3); font-size: 10.5px; }
.workflow-publisher-status-list > article > div { display: grid; gap: 3px; }
.workflow-publisher-status-list > article > div b { color: var(--ink-2); font-size: 11.5px; overflow-wrap: anywhere; }
.workflow-publisher-status-list .workflow-technical-audit { grid-column: 1 / -1; }
.workflow-reconciliation-instruction { display: grid; gap: 3px; padding: 9px 10px; border-radius: 8px; background: var(--surface); }
.workflow-reconciliation-instruction b { color: var(--ink); font-size: 12px; }
.workflow-reconciliation-instruction span { color: var(--ink-3); font-size: 10.5px; }
.workflow-publisher-primary { box-shadow: 0 18px 44px -36px rgba(45, 91, 214, .48); }
.workflow-publisher-secondary {
  padding: 0;
  overflow: hidden;
}
.workflow-publisher-secondary > summary {
  padding: 12px 16px;
  cursor: pointer;
  list-style: none;
}
.workflow-publisher-secondary > summary::-webkit-details-marker { display: none; }
.workflow-publisher-secondary[open] > summary { border-bottom: 1px solid var(--line-soft); }
.workflow-secondary-body { display: grid; gap: 12px; padding: 14px 16px 16px; }
.workflow-account-search {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 220px;
  padding: 7px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 9px;
  background: var(--surface);
  color: var(--ink-3);
}
.workflow-account-search input {
  min-width: 0;
  width: 100%;
  border: 0;
  outline: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 11.5px;
}
.workflow-target-toolbar { flex-wrap: wrap; }
.workflow-target-toolbar > div:first-child { min-width: 220px; flex: 1 1 260px; }
.workflow-target-toolbar .publisher-account-search { flex: 1 1 260px; }
.workflow-publish-business-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.workflow-technical-audit {
  padding: 9px 10px;
  border: 1px dashed var(--line);
  border-radius: 9px;
  color: var(--ink-3);
}
.workflow-technical-audit > summary { cursor: pointer; font-size: 10.5px; font-weight: 700; }
.workflow-technical-audit[open] > summary { margin-bottom: 9px; }
.workflow-r6-manifest-panel {
  display: grid;
  gap: 10px;
  min-width: 0;
  margin-bottom: 14px;
  padding: 14px 16px;
  border: 1px solid var(--warn-line);
  border-radius: var(--r);
  background: var(--warn-soft);
}
.workflow-r6-manifest-panel p { margin: 0; color: var(--ink-2); font-size: 12px; line-height: 1.5; }
.workflow-r6-manifest-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.workflow-r6-manifest-actions input { min-width: min(420px, 100%); }
.workflow-r6-manifest-result { display: grid; gap: 9px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface); }
.workflow-r6-isolation-confirm { display: flex; align-items: center; gap: 7px; color: var(--ink-2); font-size: 11.5px; }
.workflow-publisher-profile,
.workflow-publisher-section {
  min-width: 0;
  padding: 14px 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--surface);
}
.workflow-publisher-profile {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 10px 16px;
  align-items: center;
  border-color: var(--warn-line);
  background: var(--warn-soft);
}
.workflow-publisher-profile > div:first-child { display: grid; gap: 4px; }
.workflow-publisher-profile b { color: var(--ink); }
.workflow-publisher-profile span { color: var(--ink-2); font-size: 11.5px; }
.workflow-profile-facts { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px 12px; }
.workflow-profile-facts b { margin-left: 3px; font-family: var(--fs-num); }
.workflow-publisher-section { display: grid; gap: 12px; }
.workflow-publisher-section .workflow-panel-head { margin: 0; }
.workflow-publisher-section .workflow-panel-head > div:first-child { display: inline-flex; align-items: center; gap: 8px; }
.workflow-section-letter {
  display: inline-grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 7px;
  background: var(--brand);
  color: #fff;
  font: 750 11px/1 var(--fs-num);
}
.workflow-account-summary-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}
.workflow-account-summary {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-account-summary > div:first-child { display: flex; justify-content: space-between; gap: 8px; align-items: center; }
.workflow-account-summary code { overflow: hidden; color: var(--ink-3); font-size: 9.5px; text-overflow: ellipsis; white-space: nowrap; }
.workflow-account-summary dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin: 0; }
.workflow-account-summary dl > div { display: grid; gap: 2px; }
.workflow-account-summary dt { color: var(--ink-3); font-size: 9.5px; }
.workflow-account-summary dd { margin: 0; color: var(--ink); font: 700 13px/1.3 var(--fs-num); }
.workflow-account-summary small { color: var(--ink-3); font-size: 10px; }
.workflow-scope-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.workflow-scope-summary article { display: grid; gap: 8px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.workflow-scope-summary header { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; }
.workflow-scope-summary header code { color: var(--ink-3); font-size: 9.5px; }
.workflow-scope-summary article > div { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.workflow-scope-summary span { display: grid; gap: 2px; color: var(--ink-3); font-size: 9.5px; }
.workflow-scope-summary span b { color: var(--ink); font: 700 13px/1.3 var(--fs-num); }
.workflow-publish-records,
.workflow-target-list,
.workflow-work-log-list { display: grid; gap: 9px; }
.workflow-publish-record {
  display: grid;
  gap: 10px;
  padding: 11px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-publish-record > summary { cursor: pointer; list-style: none; }
.workflow-publish-record > summary::-webkit-details-marker { display: none; }
.workflow-publish-record.state-conflict,
.workflow-publish-record.state-data_error { border-color: rgba(165,77,62,.28); }
.workflow-publish-record.state-confirmed { border-color: var(--ok-line); background: var(--ok-soft); }
.workflow-reconciliation-filters {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px 12px;
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}
.workflow-reconciliation-filters label { display: inline-flex; align-items: center; gap: 5px; color: var(--ink-2); font-size: 11px; }
.workflow-reconciliation-filters .text-input { width: auto; min-width: 120px; padding-block: 6px; }
.workflow-reconciliation-statuses { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.workflow-reconciliation-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.workflow-reconciliation-summary > span { display: grid; gap: 2px; min-width: 0; padding: 7px 8px; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface); color: var(--ink-3); font-size: 9.5px; }
.workflow-reconciliation-summary b { color: var(--ink-2); font-size: 11px; overflow-wrap: anywhere; }
.workflow-validation-candidate-notice { margin: 0; }
.workflow-publisher-candidates { display: grid; gap: 8px; }
.workflow-publisher-candidate { display: grid; gap: 8px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface); }
.workflow-publisher-candidate.confirmable { border-color: var(--brand-line); background: var(--brand-soft); }
.workflow-publisher-candidate > header { display: flex; justify-content: space-between; gap: 8px; }
.workflow-publisher-candidate > header span { color: var(--brand); font: 800 14px/1.2 var(--fs-num); white-space: nowrap; }
.workflow-candidate-facts { display: flex; flex-wrap: wrap; gap: 5px 12px; color: var(--ink-3); font-size: 10.5px; }
.workflow-candidate-facts code { overflow-wrap: anywhere; }
.workflow-candidate-evidence { display: flex; flex-wrap: wrap; gap: 6px; }
.workflow-candidate-evidence span { padding: 4px 7px; border: 1px solid var(--line-soft); border-radius: 999px; background: var(--surface-sunk); color: var(--ink-3); font-size: 10px; }
.workflow-candidate-evidence .matched { border-color: var(--ok-line); background: var(--ok-soft); color: var(--ok); }
.workflow-candidate-evidence .mismatch { border-color: rgba(165,77,62,.28); background: var(--bad-soft); color: var(--bad); }
.workflow-candidate-blocks { color: var(--bad); font-size: 10.5px; overflow-wrap: anywhere; }
.workflow-candidate-actions { display: flex; flex-wrap: wrap; gap: 7px; }
.workflow-confirmed-binding { display: grid; gap: 3px; padding: 10px; border: 1px solid var(--ok-line); border-radius: 10px; background: var(--ok-soft); color: var(--ink-2); font-size: 11px; overflow-wrap: anywhere; }
.workflow-dismissed-candidates { padding: 9px; border: 1px dashed var(--line); border-radius: 9px; color: var(--ink-3); font-size: 10.5px; }
.workflow-dismissed-candidates summary { cursor: pointer; font-weight: 750; }
.workflow-dismissed-candidates > div { display: grid; gap: 2px; padding-top: 7px; }
.workflow-binding-review-dialog { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 20px; background: rgba(20, 25, 36, .48); }
.workflow-binding-review-card { display: grid; gap: 11px; width: min(760px, 100%); max-height: calc(100vh - 40px); overflow: auto; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: var(--surface); box-shadow: var(--shadow-pop); }
.workflow-binding-review-card > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.workflow-binding-review-card p { margin: 0; color: var(--ink-2); overflow-wrap: anywhere; }
.workflow-binding-permission-note { padding: 8px 9px; border-radius: 8px; background: var(--surface-sunk); color: var(--ink-3); font-size: 10.5px; }
.workflow-record-head,
.workflow-inventory-toolbar,
.workflow-target-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 9px;
}
.workflow-record-head > div { display: inline-flex; align-items: center; gap: 7px; }
.workflow-detail-grid.compact { font-size: 11.5px; }
.workflow-record-log { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; color: var(--ink-3); font-size: 11px; }
.workflow-record-log b { color: var(--ink-2); overflow-wrap: anywhere; }
.workflow-supplement-form {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr)) auto;
  gap: 7px;
  padding-top: 9px;
  border-top: 1px solid var(--line-soft);
}
.workflow-inventory-toolbar .text-input { min-width: min(420px, 64vw); }
.workflow-inventory-approval-progress { flex:none; padding:5px 8px; border-radius:999px; background:var(--ok-soft); color:var(--ok); font-size:10px; font-weight:750; white-space:nowrap; }
.workflow-registration-form { display: grid; gap: 12px; padding-top: 12px; border-top: 1px solid var(--line-soft); }
.workflow-registration-fieldset { min-width: 0; display: grid; gap: 12px; margin: 0; padding: 0; border: 0; }
.workflow-draft-switch-confirm,
.workflow-registration-complete {
  display: grid;
  gap: 10px;
  padding: 11px 12px;
  border: 1px solid var(--warn-line);
  border-radius: 10px;
  background: var(--warn-soft);
}
.workflow-draft-switch-confirm > div:first-child,
.workflow-registration-complete { color: var(--ink-2); font-size: 11.5px; line-height: 1.5; }
.workflow-draft-switch-confirm > div:first-child { display: grid; gap: 3px; }
.workflow-draft-switch-confirm b,
.workflow-registration-complete b { color: var(--ink); }
.workflow-draft-switch-actions { display: flex; flex-wrap: wrap; gap: 7px; }
.workflow-master-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}
.workflow-master-grid .wide { grid-column: 1 / -1; }
.workflow-target-card {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--brand-line);
  border-radius: 10px;
  background: var(--brand-soft);
}
.workflow-target-number { grid-column: 1 / -1; color: var(--brand); font-size: 11px; font-weight: 750; }
.workflow-target-card > .btn { align-self: end; justify-self: start; }
.workflow-field-invalid small,
.workflow-target-errors { color: var(--bad); font-size: 10.5px; line-height: 1.4; }
.workflow-field-invalid small { display: block; margin-top: 4px; }
.workflow-target-errors { display: grid; grid-column: 1 / -1; gap: 2px; }
.workflow-final-review { display: grid; gap: 7px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.workflow-final-review-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 10px; padding-top: 7px; border-top: 1px solid var(--line-soft); font-size: 11px; }
.workflow-final-review-row > span:nth-last-child(-n + 2) { grid-column: 1 / -1; color: var(--ink-3); overflow-wrap: anywhere; }
.workflow-completeness-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.workflow-completeness-grid > div { display: grid; gap: 3px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.workflow-completeness-grid span { color: var(--ink-3); font-size: 10.5px; }
.workflow-completeness-grid b { font: 750 20px/1.2 var(--fs-num); }
.workflow-work-log-entry { display: grid; gap: 8px; padding: 9px 10px; border-radius: 8px; background: var(--surface-sunk); font-size: 11.5px; }
.workflow-work-log-entry header { display: flex; justify-content: space-between; gap: 8px; }
.workflow-work-log-entry span { color: var(--ink-3); overflow-wrap: anywhere; }
.workflow-log-business-facts { display: flex; flex-wrap: wrap; gap: 5px 14px; }
.workflow-log-business-facts b { color: var(--ink-2); }
.workflow-log-audit-details summary { cursor: pointer; color: var(--ink-3); font-size: 10.5px; font-weight: 700; }
.workflow-log-audit-details[open] summary { margin-bottom: 7px; }
.workflow-log-targets { display: grid; gap: 4px; padding-top: 7px; border-top: 1px solid var(--line-soft); font-family: var(--fs-num); font-size: 10px; }
.project-production-readout {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 12px;
  margin: 0 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--line-soft);
  border-radius: var(--r);
  background: var(--surface-sunk);
  font-size: 12.5px;
  line-height: 1.5;
}
.project-production-readout.disabled {
  border-style: dashed;
  color: var(--ink-2);
}
.project-production-readout-main {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
@media (max-width: 1100px) {
  .workflow-operator-reference-grid { grid-template-columns:repeat(5,minmax(0,1fr)); }
}
@media (max-width: 979px) {
  .workflow-operator-create-project-context { display:flex; align-items:center; gap:8px; min-width:0; color:var(--ink-3); font-size:11px; }
  .workflow-operator-create-project-context::after { width:4px; height:4px; border-radius:50%; background:var(--line); content:""; order:1; }
  .workflow-operator-create-project-context span { order:0; }
  .workflow-operator-create-project-context b { min-width:0; overflow:hidden; color:var(--ink-2); font-size:12px; text-overflow:ellipsis; white-space:nowrap; order:2; }
}
@media (max-width: 900px) {
  .workflow-layout { grid-template-columns: 1fr; }
  .workflow-project-data-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workflow-project-data-card:nth-child(2) { border-right:0; }
  .workflow-project-data-card:nth-child(-n+2) { border-bottom:1px solid var(--line-soft); }
  .workflow-operator-script-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workflow-operator-assign-grid { grid-template-columns:1fr; }
  .workflow-operator-reference-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .workflow-script-history-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workflow-script-history-summary>a { grid-column:1/-1; justify-self:start; }
  .workflow-operator-match { grid-template-columns:1fr 1fr; }
  .workflow-player-grid { grid-template-columns: 1fr; }
  .workflow-publish-business-card { grid-template-columns: 1fr; }
  .workflow-publish-roadmap { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .workflow-business-context { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .workflow-daily-plan-form { grid-template-columns: 1fr; }
  .workflow-daily-plan-form .sec-title { grid-column: auto; }
  .workflow-publisher-profile { grid-template-columns: 1fr; }
  .workflow-publish-account-picker { grid-template-columns: 1fr; }
  .workflow-publish-library-manager-grid { grid-template-columns: 1fr auto; }
  .workflow-publish-library-manager-grid .workflow-cover-upload-button { grid-column: 1 / -1; }
  .workflow-profile-facts { justify-content: flex-start; }
  .workflow-scope-summary { grid-template-columns: 1fr; }
  .workflow-account-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .workflow-supplement-form,
  .workflow-target-card,
  .workflow-reconciliation-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .workflow-deliverable-switcher>header { align-items:stretch; flex-direction:column; }
  .workflow-deliverable-switcher > .workflow-deliverable-options { flex-wrap:nowrap; overflow-x:auto; padding-bottom:2px; }
  .workflow-deliverable-switcher button { flex:0 0 104px; }
  .workflow-project-data { padding:15px; }
  .workflow-project-data-heading { align-items:stretch; flex-direction:column; }
  .workflow-project-data-grid { grid-template-columns:1fr; }
  .workflow-project-data-card,.workflow-project-data-card:nth-child(2) { border-right:0; border-bottom:1px solid var(--line-soft); }
  .workflow-project-data-card:last-child { border-bottom:0; }
  .workflow-operator-script-grid,.workflow-operator-content-grid { grid-template-columns:1fr; }
  .workflow-operator-inline-actions { flex-wrap:wrap; gap:12px 22px; }
  .workflow-operator-project-grid { grid-template-columns:1fr; }
  .workflow-operator-project-blocked-row { align-items:flex-start; flex-direction:column; gap:4px; }
  .workflow-operator-project-card { min-height:0; }
  .workflow-operator-project-head { grid-template-columns:1fr auto; }
  .workflow-operator-project-head>div { grid-column:1/-1; grid-row:1; }
  .workflow-operator-plan-strip,.workflow-operator-plan-needed,.workflow-operator-match { grid-template-columns:1fr; }
  .workflow-operator-plan-strip form { grid-template-columns:1fr; }
  .workflow-operator-steps { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workflow-operator-script-stage,.workflow-operator-reference-stage,.workflow-operator-rewrite-stage,.workflow-operator-content-review { min-height:0; padding:16px; }
  .workflow-operator-reference-toolbar,.workflow-operator-section-head,.workflow-operator-stage-footer { align-items:stretch; flex-direction:column; }
  .workflow-operator-section-head>small { text-align:left; }
  .workflow-operator-reference-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .workflow-script-history-summary { grid-template-columns:1fr; }
  .workflow-script-history-summary>a { grid-column:auto; }
  .workflow-operator-reference-dialog { grid-template-columns:1fr; width:min(420px,calc(100vw - 24px)); padding:14px; }
  .workflow-operator-reference-focus-media { width:min(100%,240px); }
  .workflow-operator-progress-row { grid-template-columns:auto minmax(0,1fr); }
  .workflow-operator-progress-row em { grid-column:2; }
  .workflow-operator-draft-summary dl { grid-template-columns:1fr; }
  .workflow-operator-content-grid .wide { grid-column:auto; }
  .workflow-r1-context,
  .workflow-business-context,
  .workflow-dispatch-grid { grid-template-columns: 1fr; }
  .workflow-dispatch-grid > label.wide { grid-column: auto; }
  .workflow-sentence-row { grid-template-columns: 1fr; }
  .workflow-sentence-number { display: none; }
  .workflow-dispatch-gate { align-items: stretch; flex-direction: column; }
  .workflow-dispatch-gate .btn { width: 100%; }
  .workflow-publish-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .workflow-publisher-mode-switch { grid-template-columns: 1fr; }
  .workflow-publisher-status-list > article { grid-template-columns: 1fr; }
  .workflow-publisher-status-list header,
  .workflow-publisher-status-list .workflow-technical-audit { grid-column: auto; }
  .workflow-version-facts { grid-template-columns: 1fr; }
  .workflow-reference-snapshots > div { grid-template-columns: 1fr; }
  .workflow-reference-snapshots a { grid-column: 1; grid-row: auto; }
  .workflow-account-summary-grid,
  .workflow-supplement-form,
  .workflow-master-grid,
  .workflow-target-card,
  .workflow-reconciliation-summary,
  .workflow-completeness-grid { grid-template-columns: 1fr; }
  .workflow-master-grid .wide,
  .workflow-target-number { grid-column: auto; }
  .workflow-inventory-toolbar,
  .workflow-target-toolbar,
  .workflow-record-head { align-items: stretch; flex-direction: column; }
  .workflow-draft-switch-actions { align-items: stretch; flex-direction: column; }
  .workflow-draft-switch-actions .btn { width: 100%; }
  .workflow-publish-business-summary,
  .workflow-publish-roadmap { grid-template-columns: 1fr; }
  .workflow-publish-business-summary > div.wide { grid-column: auto; }
  .workflow-publish-primary-actions,
  .workflow-publish-target-status { align-items: stretch; flex-direction: column; }
  .workflow-publish-library-manager-grid,
  .workflow-publish-preparation-actions { grid-template-columns: 1fr; }
  .workflow-publish-copy-head { align-items: stretch; flex-direction: column; }
  .workflow-publish-primary-actions .btn { width: 100%; }
  .workflow-inventory-toolbar .text-input { min-width: 0; width: 100%; }
  .workflow-inventory-approval-progress { align-self:flex-start; }
  .workflow-work-log-entry header { flex-direction: column; }
  .workflow-reconciliation-filters,
  .workflow-candidate-actions { align-items: stretch; flex-direction: column; }
  .workflow-reconciliation-filters .text-input,
  .workflow-candidate-actions .btn { width: 100%; }
}

/* —— D1 管理员数据管理 / Canonical 工作簿导入 —— */
.d1-import-page {
  display: grid;
  gap: 14px;
}

.d1-import-page code {
  color: var(--ink-2);
  font-family: var(--fs-num);
  font-size: 11px;
  overflow-wrap: anywhere;
}

.d1-import-boundary,
.d1-import-message {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 11px 13px;
  border: 1px solid var(--brand-line);
  border-radius: var(--r);
  background: var(--brand-soft);
  color: var(--ink-2);
  font-size: 12.5px;
  line-height: 1.55;
}

.d1-import-boundary svg,
.d1-import-message svg { flex: 0 0 auto; margin-top: 2px; color: var(--brand); }
.d1-import-boundary b { color: var(--ink); }
.d1-import-message.error { border-color: rgba(165,77,62,.28); background: var(--bad-soft); color: var(--bad); }
.d1-import-message.error svg { color: var(--bad); }
.d1-import-message.ok { border-color: var(--ok-line); background: var(--ok-soft); color: var(--ok); }
.d1-import-message.ok svg { color: var(--ok); }

.d1-script-library-handoff {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  border: 1px solid #c9d8ff;
  border-radius: 12px;
  background: #f2f6ff;
  color: #1e3a8a;
}

.d1-script-library-handoff > div {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}

.d1-script-library-handoff b { white-space: nowrap; }
.d1-script-library-handoff span,
.d1-script-library-handoff small { color: #53627f; }
.d1-script-library-handoff small { text-align: right; }

@media (max-width: 720px) {
  .d1-script-library-handoff {
    align-items: flex-start;
    flex-direction: column;
    gap: 6px;
  }
  .d1-script-library-handoff > div {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }
  .d1-script-library-handoff small { text-align: left; }
}

.d1-import-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(250px, 290px);
  gap: 14px;
  align-items: start;
}

.d1-import-main,
.d1-import-side {
  min-width: 0;
  display: grid;
  gap: 14px;
}

.d1-import-main {
  grid-template-columns: minmax(0, 1fr);
}

.d1-import-side {
  position: sticky;
  top: 14px;
}

.d1-import-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

.d1-import-section-head > div {
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 9px;
}

.d1-import-section-head b {
  color: var(--ink);
  font-size: 14px;
  font-weight: 760;
}

.d1-import-section-head span:not(.badge),
.d1-import-section-head em {
  flex-basis: 100%;
  color: var(--ink-3);
  font-size: 11.5px;
  font-style: normal;
  line-height: 1.45;
}

.d1-import-file-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: stretch;
}

.d1-import-file-picker {
  min-width: 0;
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px dashed var(--line-dashed);
  border-radius: 11px;
  background: var(--surface-sunk);
  color: var(--brand);
  cursor: pointer;
  transition: border-color .15s ease, background .15s ease;
}

.d1-import-file-picker:hover { border-color: var(--brand); background: var(--brand-soft); }
.d1-import-file-picker input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.d1-import-file-picker svg { flex: 0 0 auto; }
.d1-import-file-picker span { min-width: 0; display: grid; gap: 2px; color: var(--ink); }
.d1-import-file-picker b { overflow: hidden; font-size: 12.5px; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-file-picker em { overflow: hidden; color: var(--ink-3); font-size: 10.5px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-file-row > .btn { align-self: stretch; justify-content: center; min-width: 124px; }

.d1-import-queue {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}

.d1-import-queue-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding: 2px 2px 0;
}

.d1-import-queue-head > div:first-child { min-width: 0; display: grid; gap: 3px; }
.d1-import-queue-head b { font-size: 13px; }
.d1-import-queue-head span { color: var(--ink-3); font-size: 10.5px; line-height: 1.45; }
.d1-import-queue-head-actions { display: grid; justify-items: end; gap: 7px; }
.d1-import-queue-counts { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.d1-import-queue-counts span { padding: 5px 8px; border: 1px solid var(--line-soft); border-radius: 999px; background: var(--surface-sunk); color: var(--ink-2); font-size: 9.5px; font-weight: 700; }
.d1-import-queue-list { display: grid; gap: 8px; }
.d1-import-queue-row { display: grid; gap: 10px; padding: 12px; border: 1px solid var(--line-soft); border-radius: 12px; background: var(--surface-sunk); }
.d1-import-queue-row.active { border-color: var(--brand-line); box-shadow: 0 0 0 2px var(--brand-soft); background: var(--surface); }
.d1-import-queue-row.excluded { border-style: dashed; }
.d1-import-queue-file { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 9px; }
.d1-import-queue-order { width: 23px; height: 23px; display: grid; place-items: center; border-radius: 50%; background: var(--brand-soft); color: var(--brand); font: 750 10px/1 var(--fs-num); }
.d1-import-queue-file > span:nth-child(2) { min-width: 0; display: grid; gap: 2px; }
.d1-import-queue-file b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-queue-file em { color: var(--ink-4); font-size: 9.5px; font-style: normal; }
.d1-import-project-fields { display: grid; grid-template-columns: minmax(170px, 1.25fr) repeat(3, minmax(120px, 1fr)); gap: 8px; }
.d1-import-project-fields label { min-width: 0; display: grid; gap: 4px; }
.d1-import-project-fields label > span { color: var(--ink-3); font-size: 9.5px; }
.d1-import-project-fields .text-input { width: 100%; min-width: 0; }
.d1-import-queue-confirm { display: flex; align-items: flex-start; gap: 8px; padding: 9px 10px; border: 1px solid var(--line-soft); border-radius: 9px; background: var(--surface); color: var(--ink-2); font-size: 10.5px; line-height: 1.5; }
.d1-import-queue-confirm input { margin-top: 2px; accent-color: var(--brand); }
.d1-import-queue-note { margin: 0; padding: 7px 9px; border-radius: 8px; font-size: 10px; line-height: 1.45; }
.d1-import-queue-note.ok { border: 1px solid var(--ok-line); background: var(--ok-soft); color: var(--ok); }
.d1-import-queue-note.warn { border: 1px solid var(--warn-line); background: var(--warn-soft); color: var(--warn); }
.d1-import-queue-exclusion { display: grid; gap: 3px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 9px; background: var(--surface); }
.d1-import-queue-exclusion b { font-size: 11.5px; }
.d1-import-queue-exclusion span { color: var(--ink-3); font-size: 10.5px; line-height: 1.5; }
.d1-import-queue-exclusion.archive { border-color: var(--warn-line); background: var(--warn-soft); }
.d1-import-queue-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }

.d1-import-source-grid,
.d1-import-count-grid,
.d1-import-action-strip {
  display: grid;
  gap: 8px;
}

.d1-import-source-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.d1-import-count-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 8px; }
.d1-import-action-strip { grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 8px; }

.d1-import-source-grid > div,
.d1-import-count-grid > div,
.d1-import-action-strip > div {
  min-width: 0;
  display: grid;
  gap: 2px;
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}

.d1-import-source-grid span,
.d1-import-count-grid span,
.d1-import-action-strip span { color: var(--ink-3); font-size: 10.5px; }
.d1-import-source-grid b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-count-grid b { font-size: 22px; line-height: 1.2; }
.d1-import-count-grid em,
.d1-import-action-strip em { color: var(--ink-4); font-size: 9.5px; font-style: normal; }
.d1-import-action-strip b { font-size: 16px; line-height: 1.25; }
.d1-import-action-strip > div.warn { border-color: var(--warn-line); background: var(--warn-soft); }

.d1-import-sheet-audit {
  display: grid;
  gap: 8px;
  margin-top: 8px;
}

.d1-import-sheet-audit > div {
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
}

.d1-import-sheet-audit > div > span {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.d1-import-sheet-audit em,
.d1-import-sheet-audit p,
.d1-import-sheet-audit small {
  color: var(--ink-3);
  font-size: 10.5px;
  font-style: normal;
}

.d1-import-sheet-audit p {
  margin: 5px 0 0;
  line-height: 1.6;
  overflow-wrap: anywhere;
}

.d1-import-project-map {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  padding: 10px 12px;
  border: 1px solid var(--brand-line);
  border-radius: 10px;
  background: var(--brand-soft);
}

.d1-import-project-map input,
.d1-import-mapping-table input[type="checkbox"],
.d1-import-confirm-check input { accent-color: var(--brand); }
.d1-import-project-map span { min-width: 0; display: grid; gap: 1px; }
.d1-import-project-map b { font-size: 12.5px; }
.d1-import-project-map em { color: var(--ink-3); font-size: 10.5px; font-style: normal; }

.d1-import-mapping-table-wrap,
.d1-import-row-table-wrap {
  width: 100%;
  overflow-x: auto;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
}

.d1-import-mapping-table { min-width: 820px; }
.d1-import-mapping-table th,
.d1-import-row-audit th { background: var(--surface-sunk); }
.d1-import-mapping-table td:first-child,
.d1-import-row-audit td:first-child { display: grid; gap: 2px; }
.d1-import-mapping-table td span,
.d1-import-mapping-table td em,
.d1-import-row-audit td span { display: block; color: var(--ink-3); font-size: 10.5px; font-style: normal; }
.d1-import-mapping-table .text-input { min-width: 155px; padding: 7px 8px; font-size: 11.5px; }
.d1-import-mapping-table td:last-child { text-align: center; }

.d1-import-mapping-foot,
.d1-import-confirm-actions,
.d1-import-result-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.d1-import-mapping-foot { justify-content: space-between; margin-top: 10px; }
.d1-import-mapping-foot > span { color: var(--ink-3); font-size: 11.5px; }

.d1-import-confirm-check {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 11px 12px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
  color: var(--ink-2);
  font-size: 12px;
  line-height: 1.55;
}
.d1-import-confirm-check input { margin-top: 3px; }
.d1-import-confirm-actions { margin-top: 10px; }

.d1-import-result-links .btn { text-decoration: none; }
.d1-import-row-audit .tbl { min-width: 700px; }
.d1-import-row-audit .mono { max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.d1-import-batch-list { display: grid; gap: 6px; }
.d1-import-batch-list > button {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 3px 8px;
  padding: 9px 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface-sunk);
  color: var(--ink);
  text-align: left;
}
.d1-import-batch-list > button:hover,
.d1-import-batch-list > button.on { border-color: var(--brand-line); background: var(--brand-soft); }
.d1-import-batch-list > button > span { min-width: 0; display: grid; gap: 1px; }
.d1-import-batch-list > button b { overflow: hidden; font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-batch-list > button em { overflow: hidden; color: var(--ink-4); font-family: var(--fs-num); font-size: 9.5px; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.d1-import-batch-list > button i { align-self: start; font-style: normal; }
.d1-import-batch-list > button small { grid-column: 1 / -1; color: var(--ink-4); font-size: 9.5px; }
.d1-import-empty { padding: 10px 2px; color: var(--ink-3); font-size: 11.5px; line-height: 1.55; }

.d1-import-audit-note { display: grid; gap: 4px; }
.d1-import-audit-note b { font-size: 12px; }
.d1-import-audit-note span { color: var(--brand); font-size: 12px; font-weight: 700; }
.d1-import-audit-note em { color: var(--ink-3); font-size: 10.5px; font-style: normal; line-height: 1.5; }

.project-publish-library-import { display: grid; gap: 12px; margin-bottom: 14px; }
.project-publish-library-import-head strong { color: var(--brand); font-size: 13px; }
.project-publish-library-counts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--line-soft); border-radius: 12px; }
.project-publish-library-counts > div { display: grid; gap: 3px; padding: 12px 14px; background: var(--surface-sunk); }
.project-publish-library-counts > div + div { border-left: 1px solid var(--line-soft); }
.project-publish-library-counts span { color: var(--ink-3); font-size: 10px; }
.project-publish-library-counts b { color: var(--ink); font: 750 23px/1.1 var(--fs-num); }
.project-publish-library-tabs { display: flex; gap: 18px; border-bottom: 1px solid var(--line-soft); }
.project-publish-library-tabs button { padding: 8px 1px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--ink-3); font: 650 12px/1.2 inherit; cursor: pointer; }
.project-publish-library-tabs button.on { border-bottom-color: var(--brand); color: var(--brand); }
.project-publish-library-text-input { display: grid; gap: 7px; }
.project-publish-library-text-input > span { color: var(--ink-3); font-size: 10.5px; }
.project-publish-library-text-input textarea { width: 100%; resize: vertical; min-height: 132px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 11px; background: var(--surface); color: var(--ink); font: 12px/1.65 inherit; outline: none; }
.project-publish-library-text-input textarea:focus { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-soft); }
.project-publish-library-cover-picker { position: relative; display: flex; align-items: center; gap: 11px; min-height: 78px; padding: 14px; border: 1px dashed var(--line); border-radius: 12px; background: var(--surface-sunk); cursor: pointer; }
.project-publish-library-cover-picker:hover { border-color: var(--brand); background: var(--brand-soft); }
.project-publish-library-cover-picker input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.project-publish-library-cover-picker > span { display: grid; gap: 3px; }
.project-publish-library-cover-picker b { font-size: 12px; }
.project-publish-library-cover-picker em { color: var(--ink-3); font-size: 10.5px; font-style: normal; }
.project-publish-library-preview { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.project-publish-library-preview > div { display: grid; gap: 3px; padding: 10px 11px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.project-publish-library-preview span { color: var(--ink-3); font-size: 10px; }
.project-publish-library-preview b { font: 750 20px/1.1 var(--fs-num); }
.project-publish-library-preview .bad { border-color: var(--bad-line); background: var(--bad-soft); color: var(--bad); }
.project-publish-library-preview p { grid-column: 1 / -1; margin: 0; color: var(--bad); font-size: 10.5px; }
.project-publish-library-actions { display: flex; justify-content: flex-end; gap: 8px; }
.mobile-phone-activation { display: grid; gap: 12px; margin-bottom: 14px; }
.mobile-phone-activation-head strong { color: var(--brand); font-size: 13px; }
.mobile-phone-activation-body { display: grid; gap: 12px; }
.mobile-phone-activation-form { display: grid; grid-template-columns: minmax(180px, 1.35fr) minmax(180px, 1.1fr) minmax(110px, .55fr) auto; align-items: end; gap: 10px; }
.mobile-phone-activation-form label { display: grid; gap: 6px; }
.mobile-phone-activation-form label > span { color: var(--ink-3); font-size: 10.5px; }
.mobile-phone-activation-empty { display: grid; gap: 5px; padding: 14px; border: 1px dashed var(--line); border-radius: 12px; background: var(--surface-sunk); }
.mobile-phone-activation-empty b { font-size: 12px; }
.mobile-phone-activation-empty span { color: var(--ink-3); font-size: 10.5px; }
.mobile-phone-activation-result { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--brand-line); border-radius: 12px; background: var(--brand-soft); }
.mobile-phone-activation-result > div { display: grid; grid-template-columns: 140px minmax(0, 1fr) auto; align-items: center; gap: 9px; }
.mobile-phone-activation-result span { color: var(--ink-3); font-size: 10.5px; }
.mobile-phone-activation-result code { display: block; min-width: 0; padding: 8px 10px; overflow: auto; border: 1px solid var(--line-soft); border-radius: 8px; background: var(--surface); color: var(--ink); font: 10.5px/1.5 var(--fs-mono); white-space: nowrap; }
.mobile-phone-activation-result p { margin: 0; color: var(--ink-3); font-size: 10.5px; line-height: 1.6; }
.mobile-phone-activation-result > .btn { justify-self: end; }
.mobile-phone-activation-result > .mobile-phone-activation-qr { display: grid; grid-template-columns: 140px 156px minmax(0, 1fr); align-items: center; gap: 12px; }
.mobile-phone-activation-qr img { display: block; width: 156px; height: 156px; padding: 8px; border: 1px solid var(--line-soft); border-radius: 12px; background: #fff; object-fit: contain; }
.mobile-phone-activation-qr em { color: var(--ink-3); font-size: 10.5px; font-style: normal; line-height: 1.6; }

.d1-export-panel { display: grid; gap: 12px; margin-bottom: 14px; }
.d1-export-panel > summary { cursor: pointer; list-style: none; margin: 0; }
.d1-export-panel > summary::-webkit-details-marker { display: none; }
.d1-export-panel-body { display: grid; gap: 12px; padding-top: 12px; border-top: 1px solid var(--line-soft); }
.d1-export-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.d1-export-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: end;
}
.d1-export-controls > label { display: grid; gap: 4px; min-width: 140px; }
.d1-export-controls > label > span { color: var(--ink-4); font-size: 10px; }
.d1-export-controls .d1-import-confirm-check { min-width: 180px; align-self: center; }

.d1-wizard-steps {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 6px;
  margin: 0 0 14px;
}
.d1-wizard-steps button {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
  background: var(--surface);
  color: var(--ink-3);
  text-align: left;
}
.d1-wizard-steps button > span {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--surface-sunk);
  font: 700 11px/1 var(--fs-num);
}
.d1-wizard-steps button b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.d1-wizard-steps button.active { border-color: var(--brand-line); background: var(--brand-soft); color: var(--brand); }
.d1-wizard-steps button.active > span { background: var(--brand); color: #fff; }
.d1-wizard-steps button.done { color: var(--ok); }
.d1-wizard-steps button.done > span { background: var(--ok-soft); }
.d1-wizard-steps button:disabled { cursor: not-allowed; opacity: .55; }

.d1-import-dropzone {
  padding: 10px;
  border: 1px dashed var(--line);
  border-radius: 12px;
  transition: border-color .16s ease, background .16s ease;
}
.d1-import-dropzone.drag { border-color: var(--brand); background: var(--brand-soft); }
.d1-field-mapping-sheets { display: grid; gap: 10px; margin-top: 10px; }
.d1-field-mapping-sheets article { overflow: hidden; border: 1px solid var(--line-soft); border-radius: 10px; }
.d1-field-mapping-sheets article > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 11px; background: var(--surface-sunk); }
.d1-field-mapping-sheets article > header span { display: grid; gap: 2px; }
.d1-field-mapping-sheets article > header b { font-size: 12px; }
.d1-field-mapping-sheets article > header em { color: var(--ink-4); font-size: 9.5px; font-style: normal; }
.d1-field-mapping-sheets article > p { margin: 0; padding: 10px 11px; color: var(--ink-3); font-size: 10.5px; line-height: 1.6; }
.d1-field-mapping-table-wrap { overflow: auto; max-height: 360px; }
.d1-field-mapping-table { min-width: 660px; }
.d1-field-mapping-table th { position: sticky; top: 0; z-index: 1; background: var(--surface); }
.d1-field-mapping-table .text-input { min-width: 230px; padding: 7px 8px; font-size: 11.5px; }
.d1-account-relation-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.d1-account-relation-grid article { min-width: 0; overflow: hidden; border: 1px solid var(--line-soft); border-radius: 11px; background: var(--surface); }
.d1-account-relation-grid article > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 10px 11px; border-bottom: 1px solid var(--line-soft); background: var(--surface-sunk); }
.d1-account-relation-grid article > header > span { min-width: 0; display: grid; gap: 2px; }
.d1-account-relation-grid article > header b { font-size: 12.5px; }
.d1-account-relation-grid article > header em { color: var(--ink-3); font-size: 10px; font-style: normal; line-height: 1.4; }
.d1-account-master-card { grid-column: 1 / -1; }
.d1-relation-field-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 11px; }
.d1-relation-field-list > div { min-width: 0; display: grid; gap: 3px; padding: 8px 9px; border: 1px solid var(--line-soft); border-radius: 9px; background: var(--surface-sunk); }
.d1-relation-field-list span { color: var(--ink-3); font-size: 10px; }
.d1-relation-field-list b { overflow: hidden; font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.d1-access-field-note { display: grid; gap: 4px; margin: 0 11px 11px; padding: 9px 10px; border: 1px solid var(--brand-line); border-radius: 9px; background: var(--brand-soft); }
.d1-access-field-note b { color: var(--brand); font-size: 11px; }
.d1-access-field-note span { color: var(--ink-2); font-size: 10.5px; line-height: 1.55; }
.d1-access-field-note em { color: var(--ink-3); font-size: 9.5px; font-style: normal; }
.d1-account-reference-card { padding-bottom: 10px; }
.d1-reference-flow { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 7px; padding: 10px 11px 4px; color: var(--ink-3); font-size: 10px; }
.d1-reference-flow span,
.d1-reference-flow b { overflow-wrap: anywhere; }
.d1-reference-flow svg { color: var(--brand); }
.d1-account-reference-card > p { margin: 4px 11px 0; color: var(--ink-3); font-size: 10.5px; }
.d1-account-reference-card > p b { color: var(--ink); font-size: 16px; }
.d1-import-technical-details { margin-top: 12px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.d1-import-technical-details > summary { padding: 10px 12px; color: var(--ink-3); font-size: 11px; cursor: pointer; }
.d1-import-technical-details[open] > summary { border-bottom: 1px solid var(--line-soft); color: var(--ink); }
.d1-import-technical-details > .d1-field-mapping-sheets,
.d1-import-technical-details > .d1-import-action-strip,
.d1-import-technical-details > .d1-import-row-audit { margin: 10px; }
.d1-import-project-result { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; padding: 11px 12px; border: 1px solid var(--brand-line); border-radius: 10px; background: var(--brand-soft); }
.d1-import-project-result svg { flex: 0 0 auto; color: var(--brand); }
.d1-import-project-result span { min-width: 0; display: grid; gap: 2px; }
.d1-import-project-result b { font-size: 12.5px; }
.d1-import-project-result em { color: var(--ink-3); font-size: 10.5px; font-style: normal; }
.d1-account-result-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 10px; }
.d1-account-result-grid > div { min-width: 0; display: grid; gap: 2px; padding: 10px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface-sunk); }
.d1-account-result-grid > div.warn { border-color: var(--warn-line); background: var(--warn-soft); }
.d1-account-result-grid span { color: var(--ink-3); font-size: 10px; }
.d1-account-result-grid b { font-size: 22px; line-height: 1.2; }
.d1-account-result-grid em { color: var(--ink-4); font-size: 9.5px; font-style: normal; }
.d1-source-store-groups { display: grid; gap: 8px; margin-bottom: 10px; padding: 11px; border: 1px solid var(--warn-line); border-radius: 10px; background: var(--warn-soft); }
.d1-source-store-groups > div:first-child { display: grid; gap: 2px; }
.d1-source-store-groups > div:first-child b { font-size: 12px; }
.d1-source-store-groups > div:first-child span { color: var(--ink-2); font-size: 10.5px; line-height: 1.45; }
.d1-source-store-groups > div:last-child { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 7px; }
.d1-source-store-groups article { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 9px; border: 1px solid rgba(154,106,25,.2); border-radius: 9px; background: var(--surface); }
.d1-source-store-groups article > span { min-width: 0; display: grid; gap: 2px; }
.d1-source-store-groups article b { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.d1-source-store-groups article em { color: var(--ink-3); font-size: 9.5px; font-style: normal; }
.d1-no-action { color: var(--ink-3); font-size: 11px; }
.d1-write-flow { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 8px; margin-top: 10px; padding: 11px; border: 1px solid var(--brand-line); border-radius: 10px; background: var(--brand-soft); }
.d1-write-flow > div { min-width: 0; display: grid; gap: 2px; }
.d1-write-flow span { color: var(--ink-3); font-size: 9.5px; }
.d1-write-flow b { font-size: 11.5px; overflow-wrap: anywhere; }
.d1-write-flow svg { color: var(--brand); }
.d1-write-preview-grid { grid-template-columns: repeat(auto-fit, minmax(135px, 1fr)); }
.d1-wizard-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.d1-import-mapping-foot .d1-wizard-actions { margin-top: 0; }
.d1-account-state-legend { display: flex; flex-wrap: wrap; gap: 6px; }
.d1-account-state-legend span { padding: 4px 7px; border: 1px solid var(--line-soft); border-radius: 999px; background: var(--surface-sunk); color: var(--ink-3); font: 600 9.5px/1 var(--fs-num); }
.d1-import-conflict-gate { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 10px 12px; border: 1px solid var(--ok-line); border-radius: 10px; background: var(--ok-soft); color: var(--ok); font-size: 11.5px; }
.d1-import-conflict-gate.blocked { border-color: var(--warn-line); background: var(--warn-soft); color: var(--warn); }
.d1-import-row-audit { margin-top: 12px; }
.d1-import-result-summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px; border: 1px solid var(--ok-line); border-radius: 10px; background: var(--ok-soft); }
.d1-import-result-summary b { color: var(--ok); font-size: 13px; }
.d1-import-result-summary span { color: var(--ink-3); font: 10.5px/1.4 var(--fs-num); }

@media (max-width: 1360px) {
  .d1-import-workspace { grid-template-columns: 1fr; }
  .d1-import-side { position: static; grid-template-columns: minmax(0, 1fr) minmax(220px, .55fr); }
  .d1-import-project-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767px) {
  .project-publish-library-import-head { align-items: flex-start; flex-direction: column; }
  .project-publish-library-counts,
  .project-publish-library-preview { grid-template-columns: 1fr; }
  .project-publish-library-counts > div + div { border-top: 1px solid var(--line-soft); border-left: 0; }
  .project-publish-library-actions { align-items: stretch; flex-direction: column; }
  .project-publish-library-actions .btn { justify-content: center; width: 100%; }
  .mobile-phone-activation-head { align-items: flex-start; flex-direction: column; }
  .mobile-phone-activation-form { grid-template-columns: 1fr; }
  .mobile-phone-activation-form .btn { justify-content: center; width: 100%; }
  .mobile-phone-activation-result > div { grid-template-columns: 1fr; }
  .mobile-phone-activation-result > .mobile-phone-activation-qr { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .mobile-phone-activation-result > .btn { justify-self: stretch; }
  .d1-wizard-steps { grid-template-columns: 1fr; }
  .d1-wizard-steps button b { white-space: normal; }
  .d1-import-side { grid-template-columns: 1fr; }
  .d1-import-file-row,
  .d1-import-source-grid,
  .d1-import-count-grid { grid-template-columns: 1fr; }
  .d1-import-queue-head { align-items: stretch; flex-direction: column; }
  .d1-import-queue-head-actions { justify-items: start; }
  .d1-import-queue-counts { justify-content: flex-start; }
  .d1-import-project-fields { grid-template-columns: 1fr; }
  .d1-import-queue-actions { justify-content: flex-start; }
  .d1-account-relation-grid,
  .d1-relation-field-list,
  .d1-account-result-grid { grid-template-columns: 1fr; }
  .d1-write-flow { grid-template-columns: 1fr; }
  .d1-write-flow > svg { transform: rotate(90deg); }
  .d1-import-action-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .d1-import-file-row > .btn { min-height: 40px; }
  .d1-import-project-map { grid-template-columns: auto minmax(0, 1fr); }
  .d1-import-project-map code { grid-column: 2; }
  .d1-import-mapping-foot { align-items: stretch; flex-direction: column; }
  .d1-import-mapping-foot .btn,
  .d1-import-confirm-actions .btn,
  .d1-wizard-actions .btn { justify-content: center; width: 100%; }
}

.td-history-provenance {
  display: grid;
  gap: 8px;
  margin: 10px 12px 0;
  padding: 10px 12px;
  border: 1px solid var(--brand-line);
  border-radius: 10px;
  background: var(--brand-soft);
}

.td-history-provenance-head,
.td-history-provenance-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 10px;
}

.td-history-provenance-head b { font-size: 12px; }
.td-history-provenance-head em,
.td-history-provenance-foot span { color: var(--ink-3); font-size: 10.5px; font-style: normal; }
.td-history-provenance-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.td-history-provenance-grid > div { min-width: 0; display: grid; gap: 2px; }
.td-history-provenance-grid span { color: var(--ink-4); font-size: 9.5px; }
.td-history-provenance-grid b { overflow-wrap: anywhere; font-size: 10.5px; }

@media (max-width: 767px) {
  .td-history-provenance-grid { grid-template-columns: 1fr; }
}

/* 已批准作品详情：复用 operations-review-prototype 的业务优先右侧抽屉。 */
.video-review-drawer.layout-approved {
  top: 0;
  left: auto;
  right: 0;
  bottom: 0;
  width: min(900px, calc(100vw - 24px));
  max-width: 100vw;
  height: 100vh;
  max-height: 100vh;
  border: 0;
  border-left: 1px solid var(--line);
  border-radius: 0;
  opacity: 1;
  transform: translateX(105%);
  box-shadow: -24px 0 70px rgba(24, 35, 54, .2);
}

.video-review-drawer.layout-approved.open {
  transform: translateX(0);
}

.video-review-drawer.layout-approved .drawer-head {
  flex: 0 0 auto;
  min-height: 76px;
  padding: 18px 24px;
  align-items: center;
  background: rgba(255,255,255,.98);
}

.video-review-drawer.layout-approved .drawer-head > div { min-width: 0; }
.video-review-drawer.layout-approved .drawer-head .sec-title {
  overflow: hidden;
  color: var(--ink);
  font-size: 21px;
  font-weight: 850;
  line-height: 1.3;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-review-drawer.layout-approved .drawer-head .muted {
  overflow: hidden;
  color: var(--ink-3) !important;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-review-drawer.layout-approved .drawer-close {
  flex: 0 0 auto;
  width: 34px;
  height: 34px;
  border: 1px solid var(--line-soft);
  border-radius: 10px;
}

.video-review-drawer.layout-approved .drawer-body {
  flex: 1 1 auto;
  min-height: 0;
  padding: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

.video-review-drawer.layout-approved .td-drawer-workbench,
.video-review-drawer.layout-approved .td-drawer-workbench.video-landscape {
  display: block;
  min-height: 0;
  max-width: none;
  overflow: visible;
  background: var(--surface);
}

.video-review-drawer.layout-approved .td-approved-business { padding: 24px; }
.video-review-drawer.layout-approved .td-review-video-stage { display: none; }
.video-review-drawer.layout-approved .td-review-detail-scroll {
  display: block;
  min-height: 0;
  height: auto;
  padding: 0 24px 24px;
  overflow: visible;
  background: var(--surface);
}
.video-review-drawer.layout-approved .td-review-detail-scroll[hidden] { display: none !important; }
.video-review-drawer.layout-approved .td-panel-content,
.video-review-drawer.layout-approved .td-panel-content.panel-comments {
  display: grid;
  height: auto;
  min-height: 0;
  gap: 12px;
  grid-template-rows: none;
  align-content: start;
}
.video-review-drawer.layout-approved .td-panel-content.panel-comments .td-comments-section {
  height: auto;
  min-height: 0;
  overflow: visible;
  grid-template-rows: none;
}
.video-review-drawer.layout-approved .td-panel-content.panel-comments .comment-list { overflow: visible; }

.video-business-overview {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  align-items: start;
  gap: 18px;
}

.video-preview {
  position: relative;
  display: flex;
  justify-content: space-between;
  flex-direction: column;
  width: 100%;
  max-width: 200px;
  aspect-ratio: 9 / 16;
  justify-self: start;
  padding: 14px;
  overflow: hidden;
  color: #fff;
  border-radius: 18px;
  background: linear-gradient(145deg, #91adc8, #456786);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.14), 0 12px 28px rgba(26,38,58,.12);
}
.video-preview::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.02), rgba(0,0,0,.42));
}
.video-preview-image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.video-preview-badge,
.video-preview-play,
.video-preview > div { position: relative; z-index: 1; }
.video-preview-badge {
  align-self: flex-start;
  padding: 5px 8px;
  background: rgba(17,24,39,.32);
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 999px;
  font-size: 10px;
  font-weight: 750;
}
.video-preview-play {
  display: grid;
  place-items: center;
  align-self: center;
  width: 46px;
  height: 46px;
  padding-left: 3px;
  color: #25324a;
  background: rgba(255,255,255,.9);
  border-radius: 50%;
}
.video-preview > div strong,
.video-preview > div small { display: block; }
.video-preview > div strong { font-size: 14px; }
.video-preview > div small {
  margin-top: 5px;
  overflow: hidden;
  font-size: 10px;
  opacity: .8;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.video-business-main {
  min-width: 0;
  padding: 16px;
  background: #f8fafc;
  border-radius: 16px;
}
.video-business-main h3 { margin: 0; color: var(--ink); font-size: 18px; line-height: 1.4; }
.video-business-main > p { margin: 7px 0 0; color: var(--ink-3); font-size: 11px; line-height: 1.6; }
.video-business-main > .video-internal-material { color: #52627a; font-weight: 720; }
.content-topic-list { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 10px; }
.content-topic-list span {
  padding: 4px 7px;
  color: #365ca9;
  background: #edf3ff;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 650;
}
.video-business-facts {
  display: grid;
  grid-template-columns: 1.2fr .9fr .7fr 1.15fr;
  gap: 1px;
  margin: 13px 0 0;
  overflow: hidden;
  background: #e6eaf0;
  border-radius: 11px;
}
.video-business-facts > div { min-width: 0; padding: 10px 11px; background: #fff; }
.video-business-facts dt { color: #8a94a2; font-size: 9px; }
.video-business-facts dd {
  margin: 5px 0 0;
  overflow: hidden;
  color: #344054;
  font-size: 11px;
  font-weight: 750;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-business-facts dd small { display: block; margin-top: 3px; color: #909aa8; font-size: 9px; font-weight: 500; }
.video-primary-result { margin-top: 10px; padding: 10px 12px; background: #edf3ff; border-radius: 11px; }
.video-primary-result span,
.video-primary-result strong,
.video-primary-result small { display: block; }
.video-primary-result span { color: #6e82a6; font-size: 9px; }
.video-primary-result strong { margin-top: 4px; color: #2759c8; font-size: 22px; font-variant-numeric: tabular-nums; }
.video-primary-result small { margin-top: 2px; color: #8a96a8; font-size: 9px; }
.video-business-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
  margin-top: 10px;
}
.video-business-metrics > div { padding: 8px 9px; background: #fff; border: 1px solid #e7ebf1; border-radius: 9px; }
.video-business-metrics span,
.video-business-metrics b { display: block; }
.video-business-metrics span { color: #8a94a2; font-size: 9px; }
.video-business-metrics b { margin-top: 4px; color: #344054; font-size: 12px; }
.video-business-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }

.video-detail-workflow-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  gap: 14px;
  margin-top: 16px;
}
.video-script-panel,
.video-review-panel {
  min-width: 0;
  padding: 16px;
  background: #fff;
  border: 1px solid #e1e6ee;
  border-radius: 15px;
}
.video-detail-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 11px;
  border-bottom: 1px solid #edf0f4;
}
.video-detail-section-head h3 { margin: 0; color: #202b3e; font-size: 14px; }
.video-detail-section-head em { color: #9099a7; font-size: 9px; font-style: normal; white-space: nowrap; }
.video-script-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 11px; }
.video-script-meta > div { min-width: 0; padding: 9px 10px; background: #f6f8fb; border-radius: 10px; }
.video-script-meta span,
.video-script-meta strong { display: block; }
.video-script-meta span { color: #8893a3; font-size: 9px; }
.video-script-meta strong { margin-top: 4px; overflow: hidden; color: #344054; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.video-script-copy,
.video-transcript-preview { margin-top: 11px; }
.video-script-copy > strong,
.video-transcript-preview > strong { color: #5e6b7d; font-size: 10px; }
.video-script-copy > p,
.video-transcript-preview > p { margin: 6px 0 0; color: #344054; font-size: 11px; line-height: 1.75; }
.video-transcript-preview { padding: 10px 11px; background: #f7f9fc; border-left: 3px solid #a9bce2; border-radius: 0 10px 10px 0; }
.video-transcript-preview > p { color: #697588; }
.video-review-list { display: grid; gap: 7px; margin-top: 11px; }
.video-review-list article { padding: 10px 11px; background: #f7f9fc; border-radius: 10px; }
.video-review-list article:first-child { background: #edf3ff; }
.video-review-list span,
.video-review-list strong,
.video-review-list small { display: block; }
.video-review-list span { color: #7d8999; font-size: 9px; }
.video-review-list strong { margin-top: 4px; color: #32425f; font-size: 11px; line-height: 1.55; }
.video-review-list article:first-child strong { color: #2c5bc2; font-size: 12px; }
.video-review-list small { margin-top: 4px; color: #8e98a7; font-size: 9px; line-height: 1.5; }

.td-approved-more-tools,
.td-approved-provenance {
  margin: 16px 24px 0;
  border: 1px solid var(--line-soft);
  border-radius: 13px;
  background: var(--surface-sunk);
  overflow: hidden;
}
.td-approved-business .td-approved-more-tools { margin: 16px 0 0; }
.td-approved-more-tools > summary {
  min-height: 46px;
  padding: 11px 13px;
  display: flex;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  list-style: none;
}
.td-approved-more-tools > summary::-webkit-details-marker { display: none; }
.td-approved-more-tools > summary span { color: var(--ink); font-size: 12px; font-weight: 820; }
.td-approved-more-tools > summary em { margin-left: auto; color: var(--ink-4); font-size: 11px; font-style: normal; }
.td-approved-tool-tabs {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 5px;
  padding: 10px;
  border-top: 1px solid var(--line-soft);
  background: var(--surface);
}
.td-approved-tool-tabs button {
  min-width: 0;
  min-height: 48px;
  padding: 6px 4px;
  display: grid;
  justify-items: center;
  align-content: center;
  gap: 2px;
  border: 1px solid transparent;
  border-radius: 10px;
  color: var(--ink-3);
  background: transparent;
  cursor: pointer;
  font: inherit;
}
.td-approved-tool-tabs button:hover,
.td-approved-tool-tabs button.on { color: var(--brand); border-color: var(--brand-line); background: var(--brand-soft); }
.td-approved-tool-tabs span { font-size: 10.5px; font-weight: 820; }
.td-approved-tool-tabs em {
  max-width: 100%;
  overflow: hidden;
  color: var(--ink-4);
  font-size: 9px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.video-review-drawer.layout-approved .td-approved-provenance { margin-bottom: 24px; }
.video-review-drawer.layout-approved .td-approved-provenance > .td-history-provenance {
  margin: 12px;
  border-color: var(--line-soft);
  background: var(--surface);
}

@media (max-width: 760px) {
  .video-review-drawer.layout-approved {
    width: 100vw;
    max-width: 100vw;
  }
  .video-review-drawer.layout-approved .drawer-head { padding: 15px 16px; }
  .video-review-drawer.layout-approved .td-approved-business { padding: 16px; }
  .video-review-drawer.layout-approved .td-review-detail-scroll { padding: 0 16px 16px; }
  .video-business-overview,
  .video-detail-workflow-grid { grid-template-columns: 1fr; }
  .video-preview { width: min(200px, 56vw); justify-self: center; }
  .video-business-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .td-approved-tool-tabs { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .td-approved-provenance { margin-inline: 16px; }
}

/* 用户验收：低频项目设置折叠，参考详情始终落在可视窗口内。 */
.workflow-admin-settings { display:block; }
.workflow-admin-settings>summary { cursor:pointer; margin:0; }
.workflow-admin-settings[open]>summary { margin-bottom:12px; }
.workflow-admin-settings>summary::marker { color:var(--ink-3); }
.workflow-admin-settings>label { display:grid; gap:6px; margin:10px 0; }
.workflow-staffing-people { display:grid; gap:6px; margin:10px 0; }
.workflow-staffing-people p { margin:0; }
.workflow-staffing-matrix-wrap { overflow:auto; margin-top:12px; }
.workflow-staffing-matrix { width:100%; border-collapse:collapse; font-size:13px; }
.workflow-staffing-matrix th, .workflow-staffing-matrix td { padding:8px 10px; border-bottom:1px solid var(--line); text-align:left; }
.workflow-staffing-matrix th { color:var(--ink-3); font-weight:600; }
.workflow-operator-reference-dialog-backdrop { overflow:auto; overscroll-behavior:contain; }
.project-script-media-dialog { position:relative; max-height:calc(100dvh - 32px); overflow:auto; }
.pick-chip:disabled { cursor:not-allowed; opacity:.6; }

/* Publication observations and reviewer action navigation. */
.workflow-observation-form { display:grid; gap:12px; margin:16px 0; }
.workflow-observation-form label { display:grid; gap:6px; min-width:0; }
.workflow-observation-form input { max-width:100%; box-sizing:border-box; }
.workflow-observation-form .workflow-observation-confirm { display:flex; align-items:flex-start; gap:8px; line-height:1.6; }
.workflow-observation-confirm input { width:16px; height:16px; flex:0 0 16px; margin-top:3px; }
.workflow-observation-entry { display:grid; gap:8px; }
.workflow-observation-entry > div { min-width:0; line-height:1.7; }
.workflow-observation-entry b { display:inline; white-space:nowrap; }
.workflow-observation-entry button { justify-self:start; white-space:nowrap; }
.workflow-observation-preview { margin:16px 0 0; display:grid; gap:10px; }
.workflow-review-jumps { display:flex; flex-wrap:wrap; gap:8px; position:sticky; top:8px; z-index:3; padding:10px; background:var(--surface); border:1px solid var(--line); border-radius:10px; }
.session-expiry-notice { position:sticky; top:0; z-index:150; display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding:14px 24px; background:var(--warn-soft, #fff5df); border-bottom:1px solid var(--warn-line, #eed399); color:var(--ink); }
.session-expiry-notice > div { flex:1 1 240px; min-width:0; }
.session-expiry-notice p { margin:4px 0 0; line-height:1.6; font-size:13px; }
.session-expiry-notice button { flex:0 0 auto; }
.script-library-node { position:relative; z-index:1; isolation:isolate; }
.script-library-node::before { content:""; position:absolute; inset:0; background:var(--surface); border-radius:inherit; z-index:-1; }
.script-library-connectors { z-index:0; pointer-events:none; }

/* Phase 1: keep summary statistics inside the available project card width. */
@media (max-width: 1400px) {
  .project-brief { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .project-stats { border-left: 0; }
}
.project-total-line { flex-wrap: wrap; }
.project-scope-picker { min-width: 260px; display: grid; gap: 8px; }
.project-scope-picker .project-scope-selected { font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.project-scope-picker input[type="search"], .project-switch-search { box-sizing: border-box; width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); }
.project-scope-picker .project-check-list.staff-scope-list { grid-template-columns: 1fr; max-height: 280px; }
.project-scope-picker .project-check span { white-space: normal; }
.billing-ai-preview { margin-top: 24px; }
.billing-ai-preview > summary { cursor: pointer; padding: 12px; color: var(--ink-3); }

/* Project-scoped reporting setup keeps labels and actions readable at small widths. */
.workflow-screenshot-panel { display: grid; gap: 14px; padding: 20px; margin-block: 16px; border: 1px solid var(--line-soft); border-radius: var(--r); background: var(--surface); min-width: 0; }
.workflow-screenshot-panel .workflow-section-heading, .workflow-screenshot-intake-heading, .workflow-screenshot-group-heading { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.workflow-screenshot-panel h3, .workflow-screenshot-panel h4, .workflow-screenshot-panel h5, .workflow-screenshot-panel p { margin: 0; }
.workflow-screenshot-panel h3 { font-size: 17px; }
.workflow-screenshot-panel h4 { font-size: 15px; }
.workflow-screenshot-panel h5 { font-size: 14px; }
.workflow-screenshot-panel p { line-height: 1.65; overflow-wrap: anywhere; }
.workflow-screenshot-panel .workflow-section-heading p { margin-top: 6px; color: var(--ink-3); font-size: 13px; }
.workflow-screenshot-intro, .workflow-screenshot-worker { font-size: 13px; color: var(--ink-3); }
.workflow-screenshot-worker { padding: 10px 12px; border-radius: 8px; background: var(--surface-2, #f5f7f6); }
.workflow-screenshot-worker.is-warning, .workflow-screenshot-reason { color: #96642b; }
.workflow-screenshot-intakes, .workflow-screenshot-groups { display: grid; gap: 14px; min-width: 0; }
.workflow-screenshot-intake { display: grid; gap: 12px; padding: 16px; min-width: 0; border: 1px solid var(--line-soft); border-radius: 10px; }
.workflow-screenshot-intake-heading > div, .workflow-screenshot-group-heading > h5 { min-width: 0; overflow-wrap: anywhere; }
.workflow-screenshot-intake-heading p { margin-top: 5px; color: var(--ink-3); font-size: 12px; }
.workflow-screenshot-state { flex-shrink: 0; padding: 5px 9px; font-size: 12px; font-weight: 650; color: var(--ink-2); background: var(--surface-2, #f5f7f6); border-radius: 20px; }
.workflow-screenshot-state.is-complete, .workflow-screenshot-metric .is-admitted { color: #297353; }
.workflow-screenshot-state.is-pending, .workflow-screenshot-metric .is-pending { color: #96642b; }
.workflow-screenshot-image-links { display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; }
.workflow-screenshot-image-links a { display: inline-flex; align-items: center; min-height: 32px; padding: 4px 8px; border: 1px solid var(--line-soft); border-radius: 6px; color: var(--ink-2); font-size: 12px; text-decoration: none; }
.workflow-screenshot-image-links a:hover { background: var(--surface-2, #f5f7f6); }
.workflow-screenshot-group { display: grid; gap: 10px; min-width: 0; border-top: 1px solid var(--line-soft); padding-top: 14px; }
.workflow-screenshot-group-heading > span, .workflow-screenshot-group-identity, .workflow-screenshot-content, .workflow-screenshot-reason { color: var(--ink-3); font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
.workflow-screenshot-content b { color: var(--ink); font-weight: 600; }
.workflow-screenshot-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; min-width: 0; }
.workflow-screenshot-metric { display: grid; gap: 7px; min-width: 0; padding: 11px; border: 1px solid var(--line-soft); border-radius: 8px; }
.workflow-screenshot-metric > div:first-child { display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 8px; font-size: 13px; }
.workflow-screenshot-metric > div:first-child span, .workflow-screenshot-metric strong { overflow-wrap: anywhere; min-width: 0; }
.workflow-screenshot-metric strong { font-variant-numeric: tabular-nums; }
.workflow-screenshot-metric p { font-size: 12px; color: var(--ink-3); }
.workflow-feedback-history { margin-block: 16px; padding: 14px 18px; border: 1px solid var(--line-soft); border-radius: var(--r); min-width: 0; }
.workflow-feedback-history > summary { cursor: pointer; font-size: 14px; font-weight: 600; }
.workflow-feedback-history > p { margin: 12px 0 0; color: var(--ink-3); line-height: 1.65; font-size: 13px; }
@media(max-width:600px) { .workflow-screenshot-panel, .workflow-screenshot-intake { padding: 12px; } .workflow-screenshot-metrics { grid-template-columns: minmax(0,1fr); } .workflow-screenshot-panel .workflow-section-heading > button { min-height: 42px; } .workflow-screenshot-image-links a { min-height: 40px; } }
.workflow-feedback-admin-panel { display: grid; gap: 14px; padding: 18px; margin-block: 16px; border: 1px solid var(--line-soft); border-radius: var(--r); background: var(--surface); min-width: 0; }
.workflow-feedback-admin-panel .workflow-section-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.workflow-feedback-admin-panel h3, .workflow-feedback-admin-panel p { margin: 0; }
.workflow-feedback-admin-panel p { line-height: 1.6; overflow-wrap: anywhere; }
.workflow-feedback-admin-panel details { padding: 12px; border: 1px solid var(--line-soft); border-radius: var(--r); min-width: 0; }
.workflow-feedback-admin-panel summary { cursor: pointer; font-weight: 600; margin-bottom: 10px; }
.workflow-feedback-admin-panel label { display: grid; gap: 6px; margin-block: 10px; font-size: 13px; min-width: 0; }
.workflow-feedback-admin-panel label:has(input[type="checkbox"]) { display: flex; align-items: center; gap: 8px; }
.workflow-feedback-admin-panel input:not([type="checkbox"]), .workflow-feedback-admin-panel select { width: 100%; box-sizing: border-box; min-width: 0; min-height: 38px; padding: 8px 10px; border: 1px solid var(--line-soft); border-radius: 8px; color: var(--ink); background: var(--surface); font: inherit; }
.workflow-feedback-admin-panel fieldset { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 4px 14px; border: 1px solid var(--line-soft); border-radius: 8px; margin-block: 12px; min-width: 0; }
.workflow-feedback-admin-panel legend { padding-inline: 6px; }
.workflow-feedback-admin-panel small { color: var(--ink-3); line-height: 1.5; }
@media(max-width:600px) { .workflow-feedback-admin-panel { padding: 12px; } .workflow-feedback-admin-panel fieldset { grid-template-columns: minmax(0,1fr); } }
/* Content daily use stays inside the existing project workspace. */
.content-intake, .content-daily-reader { display: grid; gap: 16px; min-width: 0; }
.content-intake label, .content-daily-reference-input label { display: grid; gap: 7px; margin: 12px 0; }
.content-intake-preview { padding: 16px; border: 1px solid var(--border, #dce3ee); border-radius: 10px; background: #f8faff; }
.content-daily-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.content-text-library-list { display: grid; gap: 8px; max-height: 340px; overflow: auto; }
.content-text-library-list article { display: flex; align-items: center; gap: 8px; padding: 10px; background: #f5f7fa; border-radius: 8px; }
.content-text-library-list article > span { flex: 1; overflow-wrap: anywhere; }
.content-daily-reader .content-daily-body { white-space: pre-wrap; overflow-wrap: anywhere; max-height: none; font-family: inherit; font-size: 15px; line-height: 1.9; padding: 22px; color: #24334b; }
.content-daily-reference-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; }
.content-daily-reference-grid article { padding: 14px; border: 1px solid #e0e5ed; border-radius: 10px; display: grid; gap: 12px; }
.content-daily-reference-grid video { width: 100%; max-height: 320px; background: #101722; border-radius: 8px; }
.content-daily-reference-input, .content-daily-history { padding: 14px 0; }
.content-daily-reader small, .content-intake small { color: #637087; line-height: 1.6; }
.content-daily-history > summary, .content-daily-reference-input > summary { cursor: pointer; color: #4b5f81; }
@media (max-width: 760px) { .content-daily-reference-grid { grid-template-columns: 1fr; } .content-daily-reader .content-daily-body { padding: 14px; } }
