/* ============================================================
   xy-obsidian（黑曜终端）CMS 适配层 —— 装配产物 skin.css 之外的补充样式
   ------------------------------------------------------------
   为什么单独一个文件：skin.css 由 `内容cms主题/xingyuan-7/assemble.py` 从源工程原样装配，禁止手改（规范 §10.4）。
   链接顺序：kernel.css → skin.css → 本文件 → cms.css，故同特异性选择器可覆盖 skin.css。
   本文件只做两件事：
     1) 补齐静态/服务端渲染下缺失的交互（源 CSS 靠 React onMouseEnter 加 .is-open，规范 §10.5 第 3 条）；
     2) 定义本皮肤视图里新引入、源 CSS 没有的类（.ob-points / .ob-out-row.is-goods / .ob-hero-grid.is-solo / .ob-drawer-close）。
   风格约束：等宽、直角、无阴影——新增规则一律不写 border-radius / box-shadow。
   ============================================================ */

/* ---------- 1. 二级菜单：无 JS 也能用鼠标悬停或键盘 Tab 打开 ---------- */
/* 焦点落到导航项（含其内部链接）即展开：可见后子项才进入 Tab 序列，与内核 cms.css 同一手法 */
:root[data-theme="obsidian"] .ob-nav-item:hover .ob-mega,
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-mega,
:root[data-theme="obsidian"] .ob-nav-item:hover .ob-dd,
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-dd {
  opacity: 1;
  visibility: visible;
  transform: none;
}
/* 悬停/聚焦时补上源 CSS 只在 .is-open 上给的状态：方括号、左侧竖条、箭头翻转 */
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-brk { opacity: 1; }
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-nav-link { color: var(--ink-900); }
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-nav-link::before { height: 20px; }
:root[data-theme="obsidian"] .ob-nav-item:focus-within .ob-nav-caret { transform: rotate(180deg); color: var(--ob-accent); }

/* ---------- 2. 移动端抽屉：锚点 :target 兜底（菜单钮 href="#xy-drawer"，[×] 回 "#xyHeader"） ---------- */
@media (max-width: 999px) {
  /* 与 skin.css 的 .ob-drawer.is-open 同值：JS 缺失时也开得起来，且开完仍可滚动 */
  :root[data-theme="obsidian"] .ob-drawer:target { max-height: 76vh; overflow-y: auto; }
}
/* 关闭锚点：只在抽屉里有意义（抽屉本身 display:none），做成终端提示行 */
:root[data-theme="obsidian"] .ob-drawer-close {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 8px 2px;
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink-400);
}
:root[data-theme="obsidian"] .ob-drawer-close:hover { color: var(--ob-accent); }

/* ---------- 3. Hero 卖点行（hero_points 每行一条；源 Hero 无此槽位，本皮肤自造） ---------- */
:root[data-theme="obsidian"] .ob-points {
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 6px;
}
:root[data-theme="obsidian"] .ob-points li {
  position: relative;
  padding-left: 16px;
  font-size: 12.5px;
  line-height: 1.7;
  color: var(--ink-700);
}
:root[data-theme="obsidian"] .ob-points li::before {
  content: "›";
  position: absolute;
  left: 0;
  color: var(--ob-accent);
}

/* ---------- 4. 终端窗口装产品清单（拨测数据 CMS 拿不到，改列 # / product / price） ---------- */
:root[data-theme="obsidian"] .ob-out-row.is-goods {
  grid-template-columns: 26px minmax(0, 1fr) 104px;  /* skin.css 是 7 列拨测轨道，这里收窄成 3 列 */
  text-decoration: none;
  color: inherit;
}
:root[data-theme="obsidian"] a.ob-out-row.is-goods:hover { background: var(--ob-surface-2); }
:root[data-theme="obsidian"] a.ob-out-row.is-goods:hover .ob-out-node { color: var(--brand-600); }
@media (max-width: 1080px) {
  :root[data-theme="obsidian"] .ob-out-row.is-goods { grid-template-columns: 22px minmax(0, 1fr) 92px; }
}

/* ---------- 5. 无产品时（empty 数据集）终端窗口不渲染，左栏独占整幅 ---------- */
:root[data-theme="obsidian"] .ob-hero-grid.is-solo { grid-template-columns: minmax(0, 1fr); }
