/* ========================================================================
   ITA-OS 美洲大区 · P2 样式
   设计原则：
     - 原型里已有的视觉编码必须保留：
       · 收入 2×2 双 pill 并列（新增/持续=绿，存量/一次性=灰）
       · 持续维度 pill 前缀 ⟳ 图标
       · 3 级状态：planned（浅灰）/ preConfirmed（琥珀）/ confirmed（翠绿）
     - 不显示 P1-P4 优先级；排序顺序：新增·持续 > 新增·一次性 > 存量·持续 > 存量·一次性
   ======================================================================== */

:root {
  /* 灰阶（ink） */
  --ink-50:#f8fafc; --ink-100:#f1f5f9; --ink-200:#e2e8f0; --ink-300:#cbd5e1;
  --ink-400:#94a3b8; --ink-500:#64748b; --ink-600:#475569; --ink-700:#334155;
  --ink-800:#1e293b; --ink-900:#0f172a;

  /* 收入 2×2 */
  --new-recur:#047857;    /* 增·延 · 深绿 */
  --new-once:#6ee7b7;     /* 增·次 · 浅绿 */
  --exist-recur:#475569;  /* 存·延 · 深灰 */
  --exist-once:#94a3b8;   /* 存·次 · 浅灰 */

  --dim-green-bg:#ecfdf5; --dim-green-fg:#047857; --dim-green-border:#a7f3d0;
  --dim-gray-bg:#f1f5f9;  --dim-gray-fg:#475569;  --dim-gray-border:#cbd5e1;

  --target:#cbd5e1;
  --miss:#ef4444;

  --bg:#f7f8fa;
  --card-bg:#ffffff;
  --border:#e5e7eb;

  --state-planned-bg:#f8fafc; --state-planned-fg:#475569;
  --state-pre-bg:#fef3c7;     --state-pre-fg:#b45309;
  --state-confirmed-bg:#d1fae5; --state-confirmed-fg:#047857;

  --high:#ef4444; --watch:#f59e0b; --normal:#10b981; --done:#94a3b8;
}

* { box-sizing: border-box; }
html, body {
  margin:0; padding:0; height:100%;
  font-family: "PingFang SC","Microsoft YaHei","Source Han Sans CN",Inter,system-ui,-apple-system,sans-serif;
  background: var(--bg);
  color: var(--ink-800);
  font-size: 14px;
  line-height: 1.4;
}
img.emoji { height: 1em; width: auto; vertical-align: -0.12em; display: inline-block; }

/* ---- Login ---- */
.login-body {
  min-height:100%; display:grid; place-items:center;
  background: linear-gradient(135deg, #e0f2fe 0%, #f1f5f9 50%, #fef3c7 100%);
}
.login-card {
  width: min(420px, 94vw); background: #fff; border-radius:14px;
  padding: 28px 28px 22px; box-shadow: 0 20px 60px -20px rgba(15,23,42,.25);
  border: 1px solid var(--ink-200);
}
.login-brand { display:flex; gap:12px; align-items:center; margin-bottom: 20px; }
.login-logo { width:44px; height:44px; border-radius:10px; background:var(--ink-900); color:#fff; display:grid; place-items:center; font-weight:700; font-size:18px; }
.login-title { font-size:15px; font-weight:600; }
.login-sub { font-size:12px; color:var(--ink-500); }
.login-form { display:flex; flex-direction:column; gap:10px; margin-top:8px; }
.login-form.hidden { display:none; }
.login-label { font-size:12px; color:var(--ink-600); }
.login-input {
  width:100%; height:40px; padding:0 12px; font-size:14px;
  border:1px solid var(--ink-300); border-radius:8px; outline:none; background:#fff;
}
.login-input:focus { border-color: var(--ink-800); }
.login-btn {
  height:40px; border-radius:8px; background: var(--ink-900); color:#fff;
  font-size:14px; font-weight:600; border:none; cursor:pointer;
}
.login-btn:hover { background:#000; }
.login-btn.ghost { background:transparent; color:var(--ink-600); border:1px solid var(--ink-200); }
.login-hint { font-size:11.5px; color:var(--ink-500); line-height:1.5; }
.login-hint.dev { background:#fef3c7; color:#92400e; padding:8px 10px; border-radius:8px; font-family: ui-monospace, Menlo, monospace; }
.login-error { margin-top:12px; font-size:12.5px; color:#b91c1c; background:#fef2f2; padding:8px 10px; border-radius:8px; border:1px solid #fecaca; }
.login-foot { margin-top:18px; font-size:11px; color:var(--ink-400); text-align:center; }
.hidden { display:none !important; }

/* ---- App shell ---- */
.app-body { min-height:100vh; }
.app-shell { display:flex; min-height:100vh; }
.sidebar {
  width: 248px; flex-shrink:0; background:#fff; border-right: 1px solid var(--ink-200);
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh;
}
.sidebar-head { padding: 18px 20px 14px; border-bottom:1px solid var(--ink-100); }
.brand { display:flex; gap:10px; align-items:center; }
.brand-logo { width:32px; height:32px; border-radius:8px; background:var(--ink-900); color:#fff; display:grid; place-items:center; font-weight:700; }
.brand-title { font-size:13px; font-weight:600; }
.brand-sub { font-size:11px; color:var(--ink-500); }
.brand-meta { margin-top:12px; font-size:11px; color:var(--ink-500); display:flex; align-items:center; gap:6px; }
.brand-meta .dot { width:6px; height:6px; border-radius:99px; background:#10b981; display:inline-block; }

.nav { flex:1; padding: 10px 12px; display:flex; flex-direction:column; gap:2px; overflow:auto; }
.nav-item {
  display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:8px;
  color:var(--ink-700); font-size:13px; cursor:pointer; text-decoration:none;
}
.nav-item:hover { background: var(--ink-50); color: var(--ink-900); }
.nav-item.active { background: var(--ink-900); color:#fff; }
.nav-icon { width:18px; text-align:center; font-size:14px; }

.sidebar-foot { padding:12px 16px; border-top:1px solid var(--ink-100); }
.user-chip {
  display:flex; align-items:center; gap:8px; font-size:12px; color:var(--ink-600);
}
.user-chip .avatar { width:26px; height:26px; border-radius:999px; background:linear-gradient(135deg,#475569,#0f172a); color:#fff; display:grid; place-items:center; font-size:11px; font-weight:600; }

/* ---- Main area ---- */
.main { flex:1; min-width:0; }
.topbar {
  height:56px; padding:0 24px; background:#fff; border-bottom:1px solid var(--ink-200);
  display:flex; align-items:center; justify-content:space-between;
  position:sticky; top:0; z-index:8;
}
.topbar-left { display:flex; align-items:center; gap:12px; }
.page-title { font-size:15px; font-weight:600; margin:0; }
.page-sub { font-size:12px; color:var(--ink-500); }
.topbar-right { display:flex; align-items:center; gap:10px; }
.search { position:relative; }
.search input {
  width:240px; height:30px; padding:0 30px 0 10px; font-size:12.5px;
  border:1px solid var(--ink-200); background: var(--ink-50); border-radius:6px; outline:none;
}
.search input:focus { background:#fff; border-color: var(--ink-400); }
.kbd {
  position:absolute; right:8px; top:6px;
  font-family: ui-monospace, Menlo, monospace; font-size:11px;
  background: var(--ink-100); border:1px solid var(--ink-200); border-bottom-width:2px;
  border-radius:4px; padding:0 5px; color:var(--ink-700);
}
.save-status { font-size:11.5px; color:var(--ink-500); }
.save-status.ok { color:#047857; }

.view { padding: 24px; max-width: 1400px; }

/* ---- Buttons ---- */
.btn {
  display:inline-flex; align-items:center; gap:6px; height:30px; padding:0 12px;
  border-radius:6px; border:1px solid var(--ink-200); background:#fff; color: var(--ink-700);
  font-size:12.5px; cursor:pointer; text-decoration:none; white-space:nowrap;
}
.btn:hover { border-color: var(--ink-400); color: var(--ink-900); }
.btn-primary { background: var(--ink-900); color:#fff; border-color: var(--ink-900); }
.btn-primary:hover { background:#000; color:#fff; }
.btn-danger  { background:#fff; color:#b91c1c; border-color:#fca5a5; }
.btn-danger:hover { background:#fef2f2; }
.btn-sm { height:26px; padding:0 9px; font-size:12px; }
.btn-ghost { background:transparent; }

/* ---- Card / grid ---- */
.card { background: var(--card-bg); border:1px solid var(--border); border-radius:12px; padding:16px; }
.card h3 { margin:0 0 10px; font-size:13px; font-weight:600; color: var(--ink-700); }
.grid { display:grid; gap:14px; }
.grid-kpi { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.grid-2   { grid-template-columns: 1fr 1fr; }
.grid-3   { grid-template-columns: repeat(3, 1fr); }
.grid-4   { grid-template-columns: repeat(4, 1fr); }

/* ---- Pills (双维度) ---- */
.pill {
  display:inline-flex; align-items:center; gap:4px; padding:2px 8px;
  border-radius:99px; font-size:11px; font-weight:500; white-space:nowrap;
}
.pill.ok   { background: #ecfdf5; color:#047857; border:1px solid #a7f3d0; }
.pill.warn { background: #fef3c7; color:#92400e; border:1px solid #fde68a; }
.pill.bad  { background: #fef2f2; color:#b91c1c; border:1px solid #fecaca; }
.pill.info { background: #eef2ff; color:#3730a3; border:1px solid #c7d2fe; }
.pill.slate{ background: #f1f5f9; color:#475569; border:1px solid #cbd5e1; }

/* 双 Pill 并列（客户维 + 收入维） */
.dim-group { display:inline-flex; align-items:center; gap:3px; }
.dim-pill {
  display:inline-flex; align-items:center; padding:1.5px 7px;
  border-radius:5px; font-size:10.5px; font-weight:600; letter-spacing:.1px; line-height:1.3;
  white-space:nowrap;
}
.dim-pill-green { background: var(--dim-green-bg); color: var(--dim-green-fg); border:1px solid var(--dim-green-border); }
.dim-pill-gray  { background: var(--dim-gray-bg);  color: var(--dim-gray-fg);  border:1px solid var(--dim-gray-border); }
.dim-icon { display:inline-block; margin-right:3px; font-size:11.5px; font-weight:500; opacity:.75; transform: translateY(-.5px); }

/* 状态徽章 */
.state-planned   { background: var(--state-planned-bg);   color: var(--state-planned-fg); }
.state-pre       { background: var(--state-pre-bg);       color: var(--state-pre-fg); }
.state-confirmed { background: var(--state-confirmed-bg); color: var(--state-confirmed-fg); }

/* 项目 status */
.proj-high    { background:#fef2f2; color:#b91c1c; border:1px solid #fecaca; }
.proj-watch   { background:#fffbeb; color:#92400e; border:1px solid #fde68a; }
.proj-normal  { background:#ecfdf5; color:#047857; border:1px solid #a7f3d0; }
.proj-done    { background:#f1f5f9; color:#475569; border:1px solid #cbd5e1; }
.proj-blocked { background:#fef2f2; color:#7f1d1d; border:1px solid #fecaca; }

/* ---- Tab bar ---- */
.tabbar { display:inline-flex; gap:2px; padding:3px; background: var(--ink-100); border-radius:8px; margin-bottom:16px; }
.tabbar a { padding:6px 14px; border-radius:6px; font-size:12px; color: var(--ink-600); text-decoration:none; cursor:pointer; }
.tabbar a.active { background:#fff; color: var(--ink-900); box-shadow: 0 1px 3px -1px rgba(15,23,42,.2); font-weight:600; }

/* ---- KPI card ---- */
.kpi {
  background:#fff; border:1px solid var(--border); border-radius:12px; padding:16px;
  display:flex; flex-direction:column; gap:6px; transition: transform .15s, box-shadow .15s;
}
.kpi:hover { transform: translateY(-1px); box-shadow: 0 6px 16px -8px rgba(15,23,42,.12); }
.kpi-label { font-size:11.5px; color: var(--ink-500); }
.kpi-value { font-size:22px; font-weight:700; color: var(--ink-900); }
.kpi-sub { font-size:11px; color: var(--ink-500); }
.bar { height:6px; border-radius:99px; background:#eef2f7; overflow:hidden; }
.bar > span { display:block; height:100%; border-radius:99px; }

/* ---- Table ---- */
table.data {
  width:100%; border-collapse: collapse; font-size:12.5px; background:#fff;
  border:1px solid var(--border); border-radius:10px; overflow:hidden;
}
table.data th, table.data td {
  padding: 8px 10px; text-align:left; border-bottom:1px solid var(--ink-100); vertical-align:middle;
}
table.data tr:last-child td { border-bottom: 0; }
table.data th { font-size:11.5px; color:var(--ink-500); font-weight:600; background: var(--ink-50); }
table.data td.num { text-align:right; font-variant-numeric: tabular-nums; }
table.data tr:hover td { background: var(--ink-50); }

/* ---- Revenue grid ---- */
.grid-table { overflow-x:auto; background:#fff; border:1px solid var(--border); border-radius:10px; }
.grid-table table { border-collapse: collapse; width: 100%; font-size:12px; }
.grid-table th, .grid-table td {
  padding:6px 8px; border-bottom:1px solid var(--ink-100); border-right:1px solid var(--ink-100); text-align:center;
}
.grid-table th { position:sticky; top:0; background: var(--ink-50); z-index:1; font-weight:600; color: var(--ink-600); }
.grid-table th.sticky-col, .grid-table td.sticky-col { position:sticky; left:0; background:#fff; z-index:2; text-align:left; }
.grid-table th.sticky-col { background: var(--ink-50); z-index:3; }
.grid-table td.cell-confirmed { background: #ecfdf5; color:#065f46; font-weight:600; }
.grid-table td.cell-pre       { background: #fffbeb; color:#92400e; }
.grid-table td.cell-planned   { background:#f8fafc; color:#475569; }
.grid-table td.cell-empty     { color: var(--ink-300); }
.grid-table td.cell-editable  { cursor:pointer; transition: outline .1s; }
.grid-table td.cell-editable:hover { outline: 1.5px solid var(--ink-900); outline-offset: -1px; }
.grid-table td.cell-readonly  { cursor: not-allowed; opacity:.75; }
.grid-table td .cell-mini { font-size:10px; color:var(--ink-400); }

/* ---- Funnel / stepper ---- */
.stepper { display:flex; gap:2px; margin-top:6px; }
.stepper > span { flex:1; height:6px; border-radius:2px; background: var(--ink-200); }
.stepper > span.done { background:#10b981; }
.stepper > span.current { background: var(--ink-900); }

.funnel-grid { display:grid; grid-template-columns: repeat(6, minmax(160px, 1fr)); gap:10px; }
.funnel-col { background:#fff; border:1px solid var(--border); border-radius:10px; padding:10px; min-height:220px; display:flex; flex-direction:column; gap:8px; }
.funnel-col h4 { margin:0 0 4px; font-size:12px; color: var(--ink-600); }
.funnel-card { border:1px solid var(--border); border-radius:8px; padding:8px 10px; font-size:12px; cursor:pointer; background:#fff; }
.funnel-card:hover { border-color: var(--ink-400); box-shadow: 0 4px 10px -6px rgba(15,23,42,.12); }
.funnel-card .fcard-name { font-weight:600; color: var(--ink-800); }
.funnel-card .fcard-meta { display:flex; gap:6px; margin-top:4px; flex-wrap:wrap; font-size:11px; color: var(--ink-500); }

/* ---- Drawer ---- */
.drawer-backdrop { position:fixed; inset:0; background: rgba(15,23,42,.3); z-index:40; opacity:0; pointer-events:none; transition: opacity .2s; }
.drawer-backdrop.show { opacity:1; pointer-events:auto; }
.drawer {
  position:fixed; top:0; right:0; bottom:0; width: min(640px, 96vw); background:#fff;
  border-left:1px solid var(--border); box-shadow: -10px 0 40px -12px rgba(15,23,42,.2);
  z-index:50; transform: translateX(100%); transition: transform .25s ease; overflow-y:auto;
}
.drawer.show { transform: translateX(0); }
.drawer-head { padding: 16px 20px; border-bottom:1px solid var(--ink-100); display:flex; justify-content:space-between; align-items:center; }
.drawer-section { padding: 14px 20px; border-bottom:1px solid var(--ink-100); }
.drawer-section:last-child { border-bottom: 0; }
.drawer-x { background:transparent; border:0; font-size:22px; color:var(--ink-500); cursor:pointer; line-height:1; }

/* ---- Modal ---- */
.modal { position:fixed; inset:0; z-index:60; display:grid; place-items:center; }
.modal.hidden { display:none; }
.modal-backdrop { position:absolute; inset:0; background: rgba(15,23,42,.36); }
.modal-card { position:relative; background:#fff; border-radius:14px; width: min(540px, 95vw); max-height:85vh; overflow-y:auto; box-shadow: 0 30px 60px -20px rgba(15,23,42,.3); }
.modal-head { padding: 14px 18px; border-bottom: 1px solid var(--ink-100); display:flex; justify-content:space-between; align-items:center; }
.modal-head h3 { margin:0; font-size:14px; font-weight:600; }
.modal-x { background:transparent; border:0; font-size:22px; cursor:pointer; color: var(--ink-500); line-height:1; }
.modal-body { padding: 14px 18px; }
.modal-foot { padding: 12px 18px; border-top: 1px solid var(--ink-100); display:flex; justify-content:flex-end; gap:8px; }

/* ---- Form ---- */
.form-row { display:grid; grid-template-columns: 120px 1fr; gap:10px; align-items:center; margin-bottom:10px; }
.form-row label { font-size:12px; color: var(--ink-600); }
.form-row input, .form-row select, .form-row textarea {
  height: 32px; padding: 0 10px; border: 1px solid var(--ink-200); border-radius: 6px;
  font-size:13px; outline:none; background:#fff; width:100%;
}
.form-row textarea { min-height:64px; padding:6px 10px; resize: vertical; }
.form-row input:focus, .form-row select:focus, .form-row textarea:focus { border-color: var(--ink-500); }

/* ---- Toast ---- */
.toast-container { position: fixed; bottom: 20px; right: 20px; display:flex; flex-direction:column; gap:8px; z-index:100; }
.toast {
  background: var(--ink-900); color:#fff; padding: 10px 14px; border-radius:8px; font-size:12.5px;
  box-shadow: 0 10px 25px -12px rgba(15,23,42,.4); max-width: 380px;
  animation: fadeSlide .25s ease;
}
.toast.ok { background:#065f46; }
.toast.warn { background:#92400e; }
.toast.err { background:#7f1d1d; }
@keyframes fadeSlide { from { opacity:0; transform: translateY(10px);} to { opacity:1; transform: none;} }

/* ---- Misc ---- */
.muted { color: var(--ink-400); }
.num { font-variant-numeric: tabular-nums; }
.row { display:flex; flex-direction:row; gap:8px; }
.row.wrap { flex-wrap: wrap; }
.row.between { justify-content: space-between; }
.row.end { justify-content: flex-end; }
.stack { display:flex; flex-direction:column; gap:8px; }
.spacer { flex:1; }
.hr { height:1px; background: var(--ink-100); margin:12px 0; border:0; }
.small { font-size: 11.5px; color: var(--ink-500); }
.link { color: var(--ink-800); text-decoration: underline dotted; cursor: pointer; }
.section-title { font-size:13px; font-weight:600; margin: 0 0 8px; color: var(--ink-700); }
.legend-dot { display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:4px; vertical-align:middle; }

/* ---- Toolbar / inputs ---- */
.toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.input, .select, .textarea {
  height:32px; padding:0 10px; border:1px solid var(--ink-200); border-radius:6px;
  font-size:13px; background:#fff; color: var(--ink-800); outline:none;
}
.input:focus, .select:focus, .textarea:focus { border-color: var(--ink-500); }
.textarea { padding:8px 10px; min-height:72px; resize:vertical; line-height:1.45; }
.empty { padding:24px; text-align:center; color:var(--ink-400); font-size:13px; }
.mono { font-family: ui-monospace, Menlo, "Courier New", monospace; }

/* ---- Form grid (used in modals) ---- */
.form-grid { display:grid; grid-template-columns: 1fr 1fr; gap:10px 12px; }
.form-grid .field { display:flex; flex-direction:column; gap:4px; }
.form-grid .field > span { font-size:11.5px; color:var(--ink-500); font-weight:500; }
.form-grid .field.checkbox { flex-direction:row; align-items:center; gap:8px; }
.form-grid .field.checkbox span { font-size:12.5px; color: var(--ink-700); }
.form-grid .field input, .form-grid .field select, .form-grid .field textarea {
  height:32px; padding:0 10px; font-size:13px;
  border:1px solid var(--ink-200); border-radius:6px; outline:none; background:#fff;
}
.form-grid .field textarea { height:auto; padding:6px 10px; min-height:60px; resize:vertical; }
.form-grid .field input:focus, .form-grid .field select:focus { border-color: var(--ink-500); }
.field-title { display:block; font-size:11.5px; color:var(--ink-500); margin-bottom:4px; font-weight:500; }

/* ---- Chips ---- */
.chip {
  display:inline-flex; align-items:center; padding:1px 8px; margin:2px 2px 2px 0;
  font-size:11px; border-radius:99px; background: var(--ink-100); color: var(--ink-700);
  border:1px solid var(--ink-200);
}
.chip-picker { display:flex; flex-wrap:wrap; gap:4px 8px; padding:8px; background: var(--ink-50); border-radius:8px; border:1px solid var(--ink-200); }
.chip-opt { display:inline-flex; align-items:center; gap:4px; font-size:12px; color: var(--ink-700); cursor:pointer; }
.chip-opt input { accent-color: var(--ink-900); }

/* ---- Drawer (project detail) ---- */
.drawer { position:fixed; inset:0; z-index:50; }
.drawer.hidden { display:none; }
.drawer-mask { position:absolute; inset:0; background: rgba(15,23,42,.3); }
.drawer-panel {
  position:absolute; top:0; right:0; bottom:0; width: min(640px, 96vw);
  background:#fff; border-left:1px solid var(--border);
  box-shadow: -10px 0 40px -12px rgba(15,23,42,.25);
  display:flex; flex-direction:column;
}
.drawer-body { flex:1; overflow-y:auto; padding: 14px 20px; }

/* ---- Detail panel (project drawer) ---- */
.detail-head { padding-bottom: 10px; border-bottom:1px solid var(--ink-100); margin-bottom:12px; }
.detail-grid { display:grid; grid-template-columns: 1fr 1fr; gap:10px 16px; margin-bottom:12px; }
.detail-item { display:flex; flex-direction:column; gap:2px; }
.detail-label { font-size:11px; color: var(--ink-500); }
.detail-value { font-size:13px; color: var(--ink-800); }
.detail-sec { margin-top:16px; padding-top:10px; border-top:1px dashed var(--ink-200); }
.detail-sec h4 { margin:0 0 6px; font-size:12.5px; color: var(--ink-700); }
.detail-actions { margin-top:18px; display:flex; gap:8px; justify-content:flex-end; padding-top:10px; border-top:1px solid var(--ink-100); }

.bullet { margin:0 0 0 18px; padding:0; font-size:12.5px; color: var(--ink-700); }
.bullet li { margin:2px 0; }
.bullet li.muted { color: var(--ink-400); list-style:none; margin-left:-18px; }

.log-add { margin-bottom:8px; }
.log-list { list-style:none; padding:0; margin:0; }
.log-list li { padding:6px 0; border-bottom: 1px dashed var(--ink-100); font-size:12.5px; }
.log-list li:last-child { border-bottom: 0; }
.log-list li.muted { color: var(--ink-400); }

/* ---- Kanban ---- */
.kanban { display:grid; grid-template-columns: repeat(4, 1fr); gap:10px; }
.kanban-lane { background: var(--ink-50); border:1px solid var(--border); border-radius:10px; padding:10px; min-height:240px; }
.kanban-head { display:flex; align-items:center; gap:6px; margin-bottom:8px; }
.kanban-body { display:flex; flex-direction:column; gap:8px; }
.kanban-card {
  background:#fff; border:1px solid var(--ink-200); border-radius:8px;
  padding:8px 10px; font-size:12.5px; position:relative;
}
.kanban-card:hover { border-color: var(--ink-400); box-shadow: 0 4px 10px -6px rgba(15,23,42,.15); }
.kanban-actions { position:absolute; top:4px; right:4px; display:none; gap:2px; }
.kanban-card:hover .kanban-actions { display:flex; }
.prio-dot { width:8px; height:8px; border-radius:99px; display:inline-block; margin-top:5px; flex-shrink:0; }
.prio-high { background: #ef4444; }
.prio-mid  { background: #f59e0b; }
.prio-low  { background: #10b981; }

/* ---- Risk groups ---- */
.risk-group { margin-bottom:16px; }
.risk-group h4 { margin: 0 0 8px; font-size:12.5px; display:flex; align-items:center; gap:6px; }

/* ---- Meetings ---- */
.meeting-row { background:#fff; border:1px solid var(--border); border-radius:8px; padding:10px 12px; margin-bottom:8px; }
.meeting-row summary { display:flex; align-items:center; gap:6px; cursor:pointer; font-size:13px; list-style:none; }
.meeting-row summary::-webkit-details-marker { display:none; }
.meeting-row[open] summary { margin-bottom:8px; }
.meeting-body { font-size:12.5px; color: var(--ink-700); }
.meeting-body pre.tmpl {
  background: var(--ink-50); border:1px solid var(--ink-200); border-radius:6px;
  padding:8px 10px; font-size:12px; white-space:pre-wrap; word-break:break-word;
  margin-top:6px; font-family: ui-monospace, Menlo, monospace;
}

/* ---- Theme panels ---- */
.theme-panel { background: var(--ink-50); }
.theme-panel h4 { margin:0 0 8px; font-size:12.5px; color: var(--ink-700); }

/* ---- Quarter / revenue sub-views ---- */
.quarter-card { background:#fff; border:1px solid var(--border); border-radius:10px; padding:12px; }
.quarter-card h4 { margin:0 0 6px; font-size:12.5px; }

/* ---- Responsive (小屏) ---- */
@media (max-width: 960px) {
  .sidebar { width: 64px; }
  .brand-text, .brand-meta, .nav-item > span:not(.nav-icon), .user-chip > :not(.avatar) { display:none; }
  .grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
  .funnel-grid { grid-template-columns: repeat(2, 1fr); }
  .form-grid { grid-template-columns: 1fr; }
  .detail-grid { grid-template-columns: 1fr; }
  .kanban { grid-template-columns: 1fr 1fr; }
}
