/* site.css —— 公开只读前台专属（导航 / 布局 / 侧栏 / hero / 搜索）。共用令牌与组件在 base.css。 */
/* 顶栏：**底色与分隔线通栏**（视觉色带），但**内容与内容区同容器对齐**。
   实现用 padding-inline 的最大值：视口比外壳宽时，左右内距 = (视口-外壳)/2 + 内容内距，
   这样宽屏上"顶栏文字"与"正文"落在同一条竖线上 —— 不需要额外的包裹元素。 */
header{padding:8px max(18px,calc((100vw - var(--shellw))/2 + 20px));border-bottom:1px solid var(--line);background:var(--panel);display:flex;
       gap:8px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:20}
header h1{margin:0;font-size:var(--fs-lg);font-weight:600;display:flex;align-items:center}
header a{color:var(--dim);text-decoration:none;font-size:var(--fs-sm);padding:5px 9px;border-radius:7px;
         display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
header a:hover{color:var(--fg);background:var(--hover)}
header a.on{color:var(--accent);font-weight:600;background:var(--accent-soft)}
/* 下拉：CSS 负责 hover 展开，/site.js 负责 click（触屏）/Esc/方向键 —— 无 JS 时仍然可用 */
.dd{position:relative}
/* 触发器是 <button>（可聚焦、aria-expanded），外观对齐导航链接 */
.ddbtn{background:none;border:0;font:inherit;font-size:var(--fs-sm);cursor:pointer;
       color:var(--dim);padding:5px 9px;border-radius:7px;
       display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.ddbtn:hover{color:var(--fg);background:var(--hover)}
.ddbtn.on{color:var(--accent);font-weight:600;background:var(--accent-soft)}
/* 菜单紧贴触发元素：早先留了 6px 的 margin-top，鼠标从文字移到菜单的空隙里，
   .dd:hover 当场就断了、菜单消失 —— 主人截图反馈的"点不中"就是这个。
   现在不留缝，并用 ::before 再补一条隐形桥（以后万一加间距也不会断）。 */
.ddmenu{display:none;position:absolute;left:0;top:100%;margin-top:0;min-width:200px;
        background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:6px;
        box-shadow:var(--shadow-2);z-index:40}
.ddmenu::before{content:"";position:absolute;left:0;right:0;top:-10px;height:10px}
.dd:hover .ddmenu,.dd:focus-within .ddmenu,.dd.open .ddmenu{display:block}
.ddmenu a{display:flex;width:100%;box-sizing:border-box}
.ddmenu .sep{height:1px;background:var(--line);margin:6px 4px}
.ddmenu .lab{padding:6px 9px 3px;color:var(--dim-strong);font-size:var(--fs-xs)}
.ddmenu a .cnt{margin-left:auto;color:var(--dim-strong);font-size:var(--fs-xs)}
/* TXT 条目：主文案要看得清（原先只有一枚右对齐小灰字，主人反馈"看不见"） */
.ddmenu a .txtlabel{display:flex;flex-direction:column;line-height:1.35}
.ddmenu a .txtlabel .file{color:var(--dim-strong);font-size:var(--fs-xs);font-family:var(--mono)}
.ddmenu a .txtbadge{margin-left:auto;font-size:var(--fs-xs);border:1px solid var(--line);border-radius:5px;
                    padding:1px 5px;color:var(--dim);letter-spacing:.04em}
.ddmenu a:hover .txtbadge{border-color:var(--accent);color:var(--accent)}
.hsearch{display:flex;align-items:center;gap:4px;background:var(--bg);border:1px solid var(--line);
         border-radius:var(--radius);padding:2px 8px;margin-left:auto}
.hsearch input{border:0;background:transparent;color:var(--fg);font-size:var(--fs-sm);outline:none;width:220px}
.hsearch button{border:0;background:transparent;color:var(--dim);cursor:pointer;padding:2px;display:flex}
.icbtn{color:var(--dim);padding:6px;border-radius:7px;display:inline-flex}
.icbtn:hover{color:var(--fg);background:var(--hover)}
@media(max-width:860px){.hsearch input{width:110px}.ddmenu{position:static;box-shadow:none}}

.layout{max-width:var(--shellw);margin:0 auto;padding:18px 20px 70px;display:flex;gap:24px;align-items:flex-start}
aside.tree{flex:0 0 196px;position:sticky;top:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
aside.tree .lbl{color:var(--dim);font-size:var(--fs-xs);margin:0 0 6px}
aside.tree a{display:flex;justify-content:space-between;gap:6px;color:var(--dim);text-decoration:none;font-size:var(--fs-sm);padding:4px 7px;border-radius:6px}
aside.tree a:hover{background:var(--hover);color:var(--fg)}
aside.tree a.on{color:var(--accent);font-weight:600}
aside.tree .sub{padding-left:16px}
main{flex:1;min-width:0}

.hero{padding:var(--s5) 0 var(--s2)}
.hero h1{font-size:var(--fs-2xl);margin:0 0 10px;letter-spacing:-.5px;line-height:1.3;max-width:22em}
.hero .lead{color:var(--dim);font-size:var(--fs-md);margin:0;max-width:640px}
.hero .cta{margin-top:var(--s4)}
/* 实时数据带：条目/板块/分身/被引用率（全站公开统计，只读） */
.livebar{display:flex;gap:var(--s5);flex-wrap:wrap;margin:var(--s4) 0 0;padding:var(--s3) 2px;
         border-top:1px solid var(--line);border-bottom:1px solid var(--line);
         color:var(--dim);font-size:var(--fs-sm)}
.livebar b{color:var(--fg);font-size:var(--fs-lg);font-variant-numeric:tabular-nums;margin-right:4px}

h2{font-size:var(--fs-md);margin:var(--s6) 0 10px;padding-bottom:6px;border-bottom:1px solid var(--line)}

form.search{display:flex;gap:8px;margin:0 0 6px}
form.search input{flex:1;padding:8px 11px;border:1px solid var(--line);border-radius:var(--r1);background:var(--bg);color:var(--fg);font-size:var(--fs-md)}
form.search button{padding:8px 14px;border:0;border-radius:var(--r1);background:var(--hover);color:var(--fg);font-size:var(--fs-md);cursor:pointer}

/* 页内回跳链接（条目/名片/错误页底部；与全局页脚区分开，不再叠第二个 .foot） */
.crumbs{margin-top:var(--s5);font-size:var(--fs-sm);color:var(--dim)}

/* 页面主标题（/d/ 名片等单对象页用 h1） */
.pagetitle{font-size:var(--fs-xl);margin:6px 0 var(--s3);line-height:1.4}

/* /agent 复制反馈：成功淡入，2 秒后由 /site.js 摘掉 class 淡出 */
.copyhint{color:var(--ok);font-size:var(--fs-sm);opacity:0;transition:opacity var(--dur) ease;align-self:center}
.copyhint.show{opacity:1}

@media(max-width:1100px){.layout{padding:14px 16px 56px;gap:18px}aside.tree{flex-basis:172px}}
@media(max-width:760px){.layout{display:block}aside.tree{position:static;margin-bottom:16px}}

/* G7 移动端（375px 实测定稿）：顶栏元素多，搜索框独占一行满宽；
   导航链接保持一行、不下坠不裁切 */
@media(max-width:760px){
  header{gap:6px}
  header .hsearch{margin-left:0;flex:1 1 100%;order:9}
  header .hsearch input{width:100%}
  .hero h1{letter-spacing:0}
  .livebar{gap:var(--s4)}
}


/* 品牌装置（2026-10-11 定稿）：V 与 Me 高亮，让人一眼看出 VirtualMe = VMe = vme。
   只用已有令牌（--accent / --dim）；span 之间不留空格（不拆坏词）。 */
.brand-h1{line-height:1.08}
.vm-strong{color:var(--accent);font-weight:650}
.vm-mute{color:var(--dim);font-weight:400}
.vm-caret{color:var(--accent);animation:vm-caret 1.2s steps(1) infinite}
@keyframes vm-caret{50%{opacity:0}}
.brand-roles{margin-top:var(--s2);font-size:var(--fs-md);color:var(--dim);display:flex;gap:var(--s3);flex-wrap:wrap;min-height:1.6em}
.brand-roles .r{opacity:.35;animation:vm-role 15.4s infinite}
.brand-roles .r:nth-child(1){animation-delay:0s}
.brand-roles .r:nth-child(2){animation-delay:2.2s}
.brand-roles .r:nth-child(3){animation-delay:4.4s}
.brand-roles .r:nth-child(4){animation-delay:6.6s}
.brand-roles .r:nth-child(5){animation-delay:8.8s}
.brand-roles .r:nth-child(6){animation-delay:11s}
.brand-roles .r:nth-child(7){animation-delay:13.2s}
@keyframes vm-role{0%,12%{opacity:1;color:var(--fg)}20%,100%{opacity:.35;color:var(--dim)}}
@media (prefers-reduced-motion: reduce){
  .vm-caret{animation:none}
  .brand-roles .r{animation:none;opacity:.75}
  .brand-roles .r:nth-child(1){opacity:1;color:var(--fg)}
}
