/* Latentide 运营面：沿用客户站的暖白、松绿和深青，但保留清晰的 Owner 边界。 */
body[data-audience="owner"] {
  --ink: #faf9f4;
  --panel: #fffefa;
  --panel-solid: #fffefa;
  --line: #d9e7df;
  --text: #11282a;
  --muted: #607573;
  --aqua: #0d5552;
  --cyan: #3c9e88;
  --good: #188067;
  --ink-soft: #e6eee8;
  background: #faf9f4;
  color: var(--text);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", sans-serif;
}
body[data-audience="owner"] .aurora { display: none; }
body[data-audience="owner"] .sidebar {
  background: #f5f8f1;
  border-right: 1px solid var(--line);
  backdrop-filter: none;
}
body[data-audience="owner"] .brand { color: var(--text); gap: 11px; }
body[data-audience="owner"] .brand-mark { display: none; }
body[data-audience="owner"] .brand-wave { display: block; width: 45px; height: 34px; object-fit: contain; }
body[data-audience="owner"] .brand strong {
  font: 700 21px/1.1 Georgia, "Songti SC", serif;
  letter-spacing: -.04em;
  white-space: nowrap;
}
body[data-audience="owner"] .brand small { color: #4f8a7d; font-size: 9px; letter-spacing: .13em; margin-top: 5px; }
body[data-audience="owner"] .environment { color: #0d5552; margin-top: 38px; }
body[data-audience="owner"] .pulse { background: #3c9e88; }
body[data-audience="owner"] .nav-group-label { color: #6b817b; }
body[data-audience="owner"] .nav-item { color: #5d7470; }
body[data-audience="owner"] .nav-item:hover,
body[data-audience="owner"] .nav-item.active { color: #0d5552; background: #e4f2e8; }
body[data-audience="owner"] .nav-icon { color: #0d5552; }
body[data-audience="owner"] .side-note { border-color: var(--line); color: var(--muted); }
body[data-audience="owner"] .workspace {
  max-width: 1580px;
  background-image: linear-gradient(90deg, rgba(13,85,82,.025) 1px, transparent 1px),
                    linear-gradient(rgba(13,85,82,.025) 1px, transparent 1px);
  background-size: 82px 82px;
}
body[data-audience="owner"] .topbar {
  align-items: center;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--line);
}
body[data-audience="owner"] .topbar h1 {
  font: 700 clamp(30px, 3.2vw, 44px)/1.1 Georgia, "Noto Serif SC", "Songti SC", serif;
  color: var(--text);
  letter-spacing: -.04em;
}
body[data-audience="owner"] .eyebrow { color: #0d5552; font-weight: 750; letter-spacing: .15em; }
body[data-audience="owner"] .top-actions { gap: 12px; }
body[data-audience="owner"] .operator>span { background: #e0f3e8; color: #0d5552; }
body[data-audience="owner"] .operator small { color: var(--muted); }
body[data-audience="owner"] .status-strip { margin: 20px 0 28px; border-color: var(--line); }
body[data-audience="owner"] .status-strip div { border-color: var(--line); }
body[data-audience="owner"] .status-strip .muted { color: #9a6d32; }
body[data-audience="owner"] .section-heading h2,
body[data-audience="owner"] .card-title { font-family: Georgia, "Noto Serif SC", "Songti SC", serif; color: var(--text); }
body[data-audience="owner"] .section-heading h2 { font-size: clamp(23px, 2.4vw, 32px); }
body[data-audience="owner"] .card-title { font-size: 21px !important; }
body[data-audience="owner"] .console-card,
body[data-audience="owner"] .metric-card,
body[data-audience="owner"] .test-card,
body[data-audience="owner"] .migration-card {
  background: #fffefa;
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(13,85,82,.045);
  color: var(--text);
  backdrop-filter: none;
}
body[data-audience="owner"] .metric-card.featured { background: linear-gradient(140deg, #e6f3e9, #f8fbf5); }
body[data-audience="owner"] .metric strong { color: var(--text); }
body[data-audience="owner"] .quiet-button,
body[data-audience="owner"] .text-button,
body[data-audience="owner"] .operation-button {
  background: #fffefa;
  color: #0d5552;
  border: 1px solid #c5dbce;
  border-radius: 9px;
}
body[data-audience="owner"] .quiet-button:hover,
body[data-audience="owner"] .text-button:hover,
body[data-audience="owner"] .operation-button:hover { background: #ecf6ef; }
body[data-audience="owner"] .operation-button.is-danger { color: #a34437; border-color: #e4b8aa; }
body[data-audience="owner"] input,
body[data-audience="owner"] select,
body[data-audience="owner"] textarea {
  background: #fffefa;
  color: var(--text);
  border-color: #c5dbce;
}
body[data-audience="owner"] :is(input, select, textarea, button, a):focus-visible {
  outline: 2px solid #0d5552;
  outline-offset: 3px;
}
body[data-audience="owner"] .data-table thead th { background: #edf5ee; color: #607573; }
body[data-audience="owner"] .data-table tbody tr { border-color: #e3ece5; }
body[data-audience="owner"] .data-table tbody tr:hover { background: #f4faf4; }
body[data-audience="owner"] .data-table td { color: #243c3d; }
body[data-audience="owner"] .live-chip { color: #0d5552; border-color: #afd4c4; }
body[data-audience="owner"] .section-note,
body[data-audience="owner"] .card-hint,
body[data-audience="owner"] .card-foot,
body[data-audience="owner"] .muted { color: #607573; }
/* 边界栏与来源行原本是深色主题的组件：暖白底上必须整块重新上色。
   只改 border/color 会留下深色渐变底 + 浅色正文，实测对比度只有 1.3–1.5:1，等于看不见。 */
body[data-audience="owner"] .boundary-bar {
  background: #f1f7f0;
  border: 1px solid var(--line);
  border-left: 3px solid #3c9e88;
  color: var(--text);
}
body[data-audience="owner"] .boundary-pill { color: #0d5552; border-color: #afd4c4; }
body[data-audience="owner"] .boundary-pill .pulse { background: #3c9e88; }
body[data-audience="owner"] .boundary-env { color: #607573; }
body[data-audience="owner"] .boundary-detail,
body[data-audience="owner"] .boundary-detail.muted { color: #46595a; }
body[data-audience="owner"] .source-bar { border-color: var(--line); color: #607573; }
body[data-audience="owner"] .source-row { border-bottom-color: var(--line); }
body[data-audience="owner"] .source-tag { color: #243c3d; }
body[data-audience="owner"] .source-tag b { color: #607573; }
body[data-audience="owner"] dialog { background: #fffefa; color: var(--text); border-color: var(--line); }
body[data-audience="owner"] dialog::backdrop { background: rgba(12, 33, 34, .5); }
body[data-audience="owner"] .operation-detail { color: #607573; }
body[data-audience="owner"] .operation-field input,
body[data-audience="owner"] .operation-field select { background: #fffefa; color: var(--text); border-color: #c5dbce; }
body[data-audience="owner"] .key-disclosure { background: #edf6ee; color: #0d5552; border-color: #aad0be; }
body[data-audience="owner"] .operation-result { color: #9a6d32; }
/* 详情抽屉同样是深色主题组件：不改的话，暖白页面上点开任何一行都会弹出一块近黑板，
   而且 .drawer-title 继承暖白主题的深色正文色 → 深底深字，标题等于看不见。 */
body[data-audience="owner"] .drawer {
  background: #fffefa;
  border-left: 1px solid var(--line);
  box-shadow: -24px 0 60px rgba(13, 85, 82, .12);
  color: var(--text);
}
body[data-audience="owner"] .drawer-title { color: var(--text); }
body[data-audience="owner"] .drawer-section { border-top-color: #e3ece5; }
body[data-audience="owner"] .drawer-section-intro { color: #46595a; }
body[data-audience="owner"] .drawer-close { color: #0d5552; border-color: #c5dbce; }
body[data-audience="owner"] .drawer-backdrop { background: rgba(12, 33, 34, .38); backdrop-filter: none; }
/* 这些组件把深色主题的浅色字面量写死在 console.css 里（不跟随变量），
   在暖白底上对比度只有 1.2–1.5:1，实测等于看不见。逐个换成 Owner 配色。 */
body[data-audience="owner"] .kv-val { color: var(--text); }
body[data-audience="owner"] .chart-value,
body[data-audience="owner"] .bar-label { color: #243c3d; }
body[data-audience="owner"] .note-list { color: #46595a; }
/* 占比条的槽底同样是深色字面量（#16323a）：暖白底上整条像一块黑板，
   而且填充色是透明底上的渐变，槽底太深时"0% 却有满格"的错觉就是这么来的。 */
body[data-audience="owner"] .bar-track { background: #e3ece5; }
body[data-audience="owner"] .source-control select { color: var(--text); }
body[data-audience="owner"] .form-note.tone-bad { color: #a34437; }
/* 额度百分比：warn/bad 语义色同样是深底配色。这两个值按对比度推算换色（本地无额度数据，
   未做视觉复核）。 */
body[data-audience="owner"] .quota-bar-row .q-pct.warn { color: #8a6a1f; }
body[data-audience="owner"] .quota-bar-row .q-pct.bad { color: #a34437; }
body[data-audience="owner"] .lower-grid { grid-template-columns: 1fr; }
body[data-audience="owner"][data-owner-source="live"] .owner-demo,
body[data-audience="owner"][data-owner-source="live"] .source-control { display: none !important; }

/* ≤760px 时表格会把每行折成卡片，卡片底色沿用深色主题的 rgba(11,32,37,.45)。
   在暖白页面上它合成成灰块：正文 4.1:1、字段名（td::before，用 --muted）1.7:1。
   这里只把卡片底色换回暖白，字段名就会自动回到 4.9:1。 */
@media (max-width: 760px) {
  body[data-audience="owner"] .data-table tr {
    background: #fffefa;
    border-color: var(--line);
  }
  body[data-audience="owner"] .data-table td { border-bottom-color: #e3ece5; }
  body[data-audience="owner"] .drawer { border-top: 1px solid var(--line); border-left: 0; }
}

.owner-dashboard-head { display: flex; align-items: end; justify-content: space-between; gap: 20px; margin: 6px 0 22px; }
.owner-dashboard-head h2 { font: 700 clamp(26px, 3vw, 38px)/1.15 Georgia, "Noto Serif SC", "Songti SC", serif; margin: 0 0 9px; }
.owner-dashboard-head p:last-child { color: var(--muted); font-size: 13px; line-height: 1.6; margin: 0; }
.owner-shortcuts { display: flex; flex-wrap: wrap; gap: 8px; }
.owner-shortcuts a { color: #0d5552; border: 1px solid #c5dbce; background: #fffefa; border-radius: 999px; padding: 9px 13px; text-decoration: none; font-size: 12px; white-space: nowrap; }
.owner-shortcuts a:hover { background: #e4f2e8; }
.owner-alert-card { margin: 0 0 18px; }
.owner-alert-card .section-heading { align-items: center; }
.owner-all-clear { color: #188067; background: #edf6ee; padding: 16px; border-radius: 11px; margin: 17px 0 0; font-size: 13px; }
.owner-alert-list { display: grid; gap: 8px; margin-top: 17px; }
.owner-alert-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 14px; background: #fff9ed; border: 1px solid #e9dcc6; border-radius: 10px; }
.owner-alert-row.severity-critical { background: #fff3f0; border-color: #ebc6bc; }
.owner-alert-row b { display: block; font-size: 13px; }
.owner-alert-row code { display: block; color: #607573; font-size: 10px; margin-top: 3px; }
.owner-alert-row>span { color: #8c5b33; font-size: 12px; }
.owner-route-scope { align-self: end; color: #607573; font-size: 12px; padding: 9px 0; }

@media (max-width: 1000px) {
  body[data-audience="owner"] .sidebar { border-right: 0; border-bottom: 1px solid var(--line); }
  .owner-dashboard-head { display: block; }
  .owner-shortcuts { margin-top: 15px; }
}
@media (max-width: 600px) {
  body[data-audience="owner"] .workspace { padding: 22px 15px 44px; }
  body[data-audience="owner"] .top-actions { display: flex; flex-wrap: wrap; margin-top: 15px; }
  body[data-audience="owner"] .operator { display: flex; }
  body[data-audience="owner"] .status-strip { margin: 18px 0 24px; }
  body[data-audience="owner"] .brand strong { font-size: 18px; }
  .owner-alert-row { align-items: flex-start; flex-direction: column; }
}
