/*
 * entity 入口链接（EntityLink.razor）的样式。
 * 全站统一 —— 主题、板块、通知、私信会话、用户名片共用这一份。
 *
 * ---------------------------------------------------------------------------
 * 为什么这个 <a> 不能直接用 BscButton 的 Url 参数
 * ---------------------------------------------------------------------------
 * BscButton 确实有 `Url`：给了就渲染成真 <a>（中键、右键复制链接都正常）。
 * 但它的 `@onclick:preventDefault="IsInactive"` 是**写死**的 ——
 * 链接处于可用态时压根不 preventDefault，于是点一下会"既开对话框又跳转"。
 * 而"按修饰键决定要不要劫持"这个条件它表达不了（见 entity-link.js 开头）。
 * 同一个行为要两种模式并存，只能自己在宿主里写这个 <a>。
 *
 * ---------------------------------------------------------------------------
 * 为什么颜色要自己定义 --aio-link-fg，不能 var(--bsc-accent)
 * ---------------------------------------------------------------------------
 * BSC 的主题令牌挂在 `body.theme_light .bsc-button` / `body.theme_dark .bsc-button`
 * 这样的选择器上 —— 也就是**只在库自己的组件元素内部**才有值。
 * 宿主自己的元素（如本文件的 .aio-entity-link）从 body 继承，body 上没有这些令牌，
 * 所以 var(--bsc-accent) 在这里永远解析不出来、只会掉进兜底值。
 * （dlg-panel.css 里的 var(--bsc-bg, #fff) 是同一个问题。）
 *
 * 所以这里照着 bsc-theme.css 的取值自己声明一份：亮色 #2b6cb0、暗色 #7dbcf7，
 * 与 BSC 的 --bsc-btn-link-fg 逐字一致。BSC 改色时这里要跟着改 ——
 * EntityLinkModesTests 有一条守卫就是比对这两个值。
 */

/* 主题令牌。入口是 body 的 theme_light / theme_dark，与 bsc-theme.css 同一套约定：
   两个都不写时用下面的兜底值（= 亮色），视觉上与 theme_light 一致。 */
body.theme_light {
    --aio-link-fg: #2b6cb0;
}

body.theme_dark {
    --aio-link-fg: #7dbcf7;
}

.aio-entity-link {
    /* inline-block 而不是 inline：text-overflow: ellipsis 只对块容器生效，
       行内元素截不了断，标题一长就直接撑出格子。 */
    display: inline-block;
    box-sizing: border-box;
    max-width: 100%;
    vertical-align: middle;

    margin: 0;
    /* 内边距是为了和同一行里别的 PlainLink 档 BscButton 对齐：
       那边是 calc(0.6rem * 1.5) 再加回被去掉的 1px 边框。 */
    padding: 0 calc(0.6rem * 1.5 + 1px);

    /* 字号 / 字重取 BscButton 的 Medium 档（0.875rem / 500）——
       换掉 BscButton 之后视觉要保持一致。 */
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.5;
    color: var(--aio-link-fg, #2b6cb0);
    text-decoration: none;

    /* 标题列本来就带 text-nowrap；这里再写一遍是因为这个类也可能被用到别处。 */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;

    cursor: pointer;
}

/* 悬停只加下划线，底色和文字色都不动 —— 与 BSC 的 --plain-link 档一致：
   文字型按钮没有底色可加深，下划线是"可以点"的唯一提示。 */
.aio-entity-link:hover {
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

/* 键盘焦点环。不能用 outline: none —— 那样键盘用户就完全看不到自己在哪了。 */
.aio-entity-link:focus-visible {
    outline: 2px solid var(--aio-link-fg, #2b6cb0);
    outline-offset: 2px;
    border-radius: 2px;
}

/* 尊重"减少动态效果"：那条下划线是突现的，动画不了，
   所以这里能关的只有颜色过渡（本文件没加过渡，留着这条是为了
   以后有人加的时候不必重新想一遍）。 */
@media (prefers-reduced-motion: reduce) {
    .aio-entity-link {
        transition: none !important;
    }
}
