/* 配色变量：要改主题颜色改这里。品牌色取自 logo 的蓝紫渐变 */
:root { --bg:#0b0e14; --panel:#131720; --panel2:#181d28; --line:#232a37; --fg:#e8ebf2; --dim:#8a93a7; --up:#f04848; --down:#1fa971;
  --acc:#4d8dff; --brand:linear-gradient(135deg,#3b82f6,#6d4aff); --warn:#e8a33d; --radius:12px; }
* { box-sizing:border-box; }
[hidden] { display:none !important; }   /* hidden 属性优先于各元素自己的 display */
body { margin:0; font:14px/1.6 -apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--fg); -webkit-font-smoothing:antialiased; -webkit-tap-highlight-color:transparent; }
a { color:var(--acc); text-decoration:none; } a:hover { text-decoration:underline; }
::selection { background:rgba(77,141,255,.35); }
/* 顶部栏：品牌 + 导航 + 搜索，电脑上一行并固定在顶部 */
header { position:sticky; top:0; z-index:20; height:58px; padding:0 24px; display:flex; align-items:center; gap:28px;
  background:rgba(11,14,20,.86); backdrop-filter:saturate(1.4) blur(14px); -webkit-backdrop-filter:saturate(1.4) blur(14px); border-bottom:1px solid var(--line); }
.brand { display:flex; align-items:center; gap:10px; color:var(--fg); flex-shrink:0; }
.brand:hover { text-decoration:none; }
.brand img { width:32px; height:32px; border-radius:9px; box-shadow:0 2px 10px rgba(77,110,255,.35); }
.brand span { display:flex; flex-direction:column; line-height:1.15; }
.brand b { font-size:17px; font-weight:700; letter-spacing:.5px; }
.brand small { font-size:11px; color:var(--dim); letter-spacing:1px; }
header nav { display:flex; gap:2px; align-self:stretch; }
header nav a { display:flex; align-items:center; padding:0 14px; color:#a9b1c2; font-size:14px; border-bottom:2px solid transparent; margin-bottom:-1px; white-space:nowrap; transition:color .15s; }
header nav a:hover { color:var(--fg); text-decoration:none; }
header nav a.on { color:#fff; font-weight:600; border-bottom-color:var(--acc); }
/* 股票搜索框：放在异动检索页的榜单上方 */
.search { position:relative; padding:12px 12px 4px; }
#q { width:100%; height:36px; padding:0 14px 0 34px; font-size:13px; color:var(--fg); background:var(--panel) no-repeat 12px center / 15px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a93a7' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E");
  border:1px solid var(--line); border-radius:18px; outline:none; transition:border-color .15s, box-shadow .15s; -webkit-appearance:none; }
#q:focus { border-color:var(--acc); box-shadow:0 0 0 3px rgba(77,141,255,.18); }
#q::placeholder { color:#6b7387; }
#sr { position:absolute; left:12px; right:12px; top:calc(100% + 2px); min-width:240px; max-height:60vh; overflow:auto; background:var(--panel2); border:1px solid var(--line);
  border-radius:10px; box-shadow:0 12px 32px rgba(0,0,0,.45); z-index:30; display:none; padding:4px 0; }
#sr a { display:block; padding:8px 14px; color:var(--fg); } #sr a:hover { background:#222937; text-decoration:none; }
/* 连接断开的提示：浮在页面底部，正常时不显示 */
#st { position:fixed; left:50%; bottom:20px; transform:translateX(-50%); z-index:40; padding:6px 14px; font-size:12px; color:#fff; background:rgba(232,163,61,.92); border-radius:16px; }
#st:empty { display:none; }
.site-foot { max-width:1100px; margin:8px auto 0; padding:18px 16px 28px; text-align:center; font-size:12px; color:#5f6779; }
.site-foot a { color:#7d869a; }
/* 中等宽度：先去掉品牌副标题，导航收紧 */
@media (max-width:1000px) { header { gap:16px; padding:0 16px; } .brand small { display:none; } header nav a { padding:0 10px; } }
/* 手机：品牌和搜索一行，导航单独一行、等宽排开，宽度不够时左右滑动；顶部栏不固定，给内容留空间 */
@media (max-width:760px) {
  header { position:relative; height:auto; flex-wrap:wrap; gap:0 12px; padding:10px 12px 0; }
  .brand img { width:28px; height:28px; border-radius:8px; } .brand b { font-size:16px; }
  #q { height:34px; }
  header nav { order:3; flex:0 0 100%; height:42px; margin-top:6px; justify-content:space-between; overflow-x:auto; scrollbar-width:none; }
  header nav::-webkit-scrollbar { display:none; }
  header nav a { padding:0 6px; font-size:15px; }
}
/* 主体布局和卡片 */
main { padding:16px; max-width:1100px; margin:0 auto; display:grid; gap:14px; }
section { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; box-shadow:0 1px 2px rgba(0,0,0,.25); }
h3 { margin:0; padding:12px 14px; font-size:13px; font-weight:600; color:var(--dim); border-bottom:1px solid var(--line); display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
@media (max-width:760px) { main { padding:10px; gap:10px; } }
/* 榜单的行 */
.row { display:block; padding:12px 14px; border-bottom:1px solid var(--line); color:var(--fg); transition:background .12s; }
.row:last-child { border-bottom:0; }
.row:hover { background:#1a1f2b; text-decoration:none; }
.top { display:flex; gap:8px; align-items:baseline; } .top .pct { margin-left:auto; font-weight:600; }
.up { color:var(--up); } .down { color:var(--down); } .dim { color:var(--dim); font-size:12px; }
.row .top b { font-size:16px; color:#fff; } .row .top .pct { font-size:18px; font-weight:700; }
/* 异动榜：左边的色条和类型标记同色，滑动时一眼能分出拉升、下跌和放量 */
.row.dir-up { border-left:4px solid var(--up); } .row.dir-down { border-left:4px solid var(--down); } .row.dir-vol { border-left:4px solid var(--warn); }
.row .meta { margin:3px 0 4px; }
.ktag { display:inline-block; font-size:12px; font-weight:700; line-height:1.5; padding:0 8px; border-radius:4px; margin-right:8px; }
.k-up { background:rgba(240,72,72,.18); color:#ff7b7b; } .k-down { background:rgba(31,169,113,.2); color:#3fd39a; } .k-vol { background:rgba(232,163,61,.18); color:var(--warn); }
.k-up.solid { background:var(--up); color:#fff; } .k-down.solid { background:var(--down); color:#fff; }
/* 小标签（盘后、相关程度等） */
.badge { display:inline-block; font-size:11px; padding:0 6px; border-radius:4px; background:#232838; color:var(--dim); margin-right:6px; }
.b-explained { background:#3a2326; color:#ff8f8f; } .b-partial { background:#3a3123; color:var(--warn); } .b-unexplained { background:#232838; color:var(--dim); }
.title .badge { vertical-align:2px; }
.b-single { background:#2a2d36; color:#9aa3b5; } .b-multi { background:#1d2c4a; color:#7fb0ff; }
.card { padding:12px; border-bottom:1px solid var(--line); }
.summary { font-size:15px; margin:6px 0 2px; }
/* 新闻来源卡片 */
.src { margin:10px 12px; padding:10px; border:1px solid var(--line); border-radius:6px; }
.src-head { margin-bottom:2px; } .src .open { font-weight:600; }
/* 所有标签和选项都做成按钮的样子：有边框、有间距，选中的填充蓝色 */
.tabs { display:inline-flex; gap:8px; flex-wrap:wrap; margin-left:8px; }
.tabs span, .tabbar a, .subnav a, .opts button {
  cursor:pointer; display:inline-block; padding:5px 16px; font-size:13px; line-height:1.5; color:#b8c0d0;
  background:var(--panel2); border:1px solid #2c3442; border-radius:999px; transition:background .15s, border-color .15s, color .15s; }
.tabs span:hover, .tabbar a:hover, .subnav a:hover, .opts button:hover { border-color:#4b5670; color:var(--fg); text-decoration:none; }
.tabs span.on, .tabbar a.on, .subnav a.on, .opts button.on { color:#fff; background:var(--acc); border-color:var(--acc); font-weight:600; text-decoration:none;
  box-shadow:0 2px 8px rgba(77,141,255,.3); }
button { background:var(--acc); color:#fff; border:0; border-radius:8px; padding:8px 16px; cursor:pointer; font-size:14px; font-weight:500; transition:filter .15s; }
button:hover:not(:disabled) { filter:brightness(1.1); } button:disabled { opacity:.5; cursor:default; }
button.primary { background:var(--brand); }
/* 个股页头部 */
.hero { padding:16px; display:flex; gap:16px; align-items:center; flex-wrap:wrap; }
.hero .name { font-size:22px; font-weight:700; } .hero .price { font-size:20px; } .hero button { margin-left:auto; }
.empty { padding:14px 12px; color:var(--dim); }
/* 选项按钮：K 线周期、小作文状态、看板分类 */
.opts { display:flex; gap:8px; flex-wrap:wrap; padding:10px 12px; }
button.ghost:hover { border-color:#566079; }
button.ghost { background:transparent; border:1px solid var(--line); color:var(--fg); }
/* K 线图 */
#chart { display:block; width:100%; height:320px; touch-action:none; cursor:crosshair; }
/* 看板表格 */
.tablewrap { overflow-x:auto; } table { width:100%; border-collapse:collapse; font-size:13px; }
th, td { padding:8px 12px; border-bottom:1px solid var(--line); text-align:left; white-space:nowrap; }
th { color:var(--dim); font-weight:500; } tbody tr { cursor:pointer; } tbody tr:hover { background:#1d212b; }
/* 二级标签：读新闻、读市场下的页面，放在顶部栏下面，和页面内容对齐 */
.subnav { max-width:1100px; margin:0 auto; padding:14px 16px 0; display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
@media (max-width:760px) { .subnav { padding:10px 10px 0; } }
/* 二级标签最右边的搜索：平时是放大镜图标，点开后展开输入框（窄屏时输入框占满一行） */
.nav-search { display:flex; align-items:center; gap:6px; margin-left:auto; }
.nav-search input { width:220px; height:30px; padding:0 12px; font-size:13px; color:var(--fg); background:var(--bg);
  border:1px solid var(--line); border-radius:15px; outline:none; -webkit-appearance:none; }
.nav-search input:focus { border-color:var(--acc); }
.nav-search-btn { width:32px; height:32px; padding:0; display:inline-flex; align-items:center; justify-content:center; font-size:20px; line-height:1;
  color:#b8c0d0; background:var(--panel2); border:1px solid #2c3442; border-radius:50%; }
.nav-search-btn:hover { border-color:#4b5670; color:var(--fg); }
.nav-search-btn svg { width:16px; height:16px; }
@media (max-width:760px) { .nav-search.open { flex:1 1 100%; } .nav-search.open input { flex:1; width:auto; min-width:0; } }
/* 本机测试服务器的标记（.env 的 SITE_ENV=dev），正式网站不显示 */
.env-tag { flex:0 0 auto; padding:2px 8px; font-size:12px; font-weight:700; color:#1b1300; background:var(--warn); border-radius:6px; }
/* 热议个股下的资讯摘要：几件不同的事，各一句话 */
ul.heads { margin:4px 0 6px; padding-left:18px; font-size:13.5px; line-height:1.6; color:#c3c9d6; }
ul.heads li { margin:2px 0; } ul.heads li .dim { font-size:12px; margin-left:6px; white-space:nowrap; }
/* 标签栏：个股页 */
.tabbar { display:flex; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.tabbar.sub { background:#141720; }
.tabbar.sub a { padding:4px 12px; }
/* 个股页的新闻来源：相似内容合并成一条。左边的颜色条区分 Agent */
.post { --c:var(--dim); margin:12px; padding:12px 14px; background:#1b1f28; border:1px solid var(--line); border-left:4px solid var(--c); border-radius:8px; }
.post.announcement { --c:#4c8dff; } .post.news { --c:#e8a33d; } .post.social { --c:#c678dd; } .post.analyst { --c:#2fb8a6; } .post.rumor { --c:#f04848; }
.post-head { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:8px; }
.post-head .agent { font-size:12px; font-weight:600; color:var(--c); }
.post-head .tag { font-size:11px; padding:1px 7px; border-radius:10px; background:#2a2f3c; color:#c3c9d6; }
/* 报道基调：蓝色正面、橙色负面、灰色中性，不用红绿（红绿在 A 股代表涨跌） */
.tone { font-size:12px; padding:1px 7px; border-radius:10px; background:#2a2f3c; color:#c3c9d6; white-space:nowrap; }
.tone.pos { background:rgba(77,141,255,.16); color:#7fb0ff; } .tone.neg { background:rgba(232,163,61,.16); color:#f0b45a; }
.tip { width:16px; height:16px; padding:0; margin-left:3px; border-radius:50%; border:1px solid #4a5263; background:transparent;
  color:var(--dim); font-size:11px; line-height:14px; cursor:pointer; vertical-align:1px; }
.tip-pop { position:fixed; z-index:50; width:240px; padding:8px 10px; font-size:12px; color:var(--fg); background:var(--panel2);
  border:1px solid var(--line); border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.45); }
/* 来源链接排成一行：同一来源只写一次名称，多条原文用 1 2 3 表示 */
.src-chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.src-group { display:inline-flex; align-items:center; gap:4px; font-size:12px; padding:2px 8px; border:1px solid var(--line); border-radius:12px; white-space:nowrap; }
.src-group .src-name { color:var(--dim); } .src-group a.src-name { color:var(--acc); }
.src-group .src-n { min-width:18px; height:18px; line-height:18px; text-align:center; border-radius:9px; color:var(--acc); background:rgba(77,141,255,.12); }
.src-group a:hover { text-decoration:none; background:rgba(77,141,255,.25); }
/* 自选（心形）和分享按钮 */
button.watch.on { color:#ff6b81; border-color:rgba(255,107,129,.45); }
button.icon-btn { display:inline-flex; align-items:center; gap:5px; }
button.icon-btn svg { width:15px; height:15px; }
/* 热点新闻页的新闻搜索：放在二级标签后面，同一行 */
.news-search { display:flex; align-items:center; gap:6px; margin-left:auto; flex:0 1 240px; min-width:150px; }
.news-search input { flex:1; min-width:0; height:30px; padding:0 12px; font-size:13px; color:var(--fg); background:var(--bg);
  border:1px solid var(--line); border-radius:15px; outline:none; -webkit-appearance:none; }
.news-search input:focus { border-color:var(--acc); }
.news-search button { padding:3px 10px; font-size:12px; }
/* 异动检索页的股票搜索：放在筛选项后面，同一行 */
.search.inline { padding:0; margin-left:auto; flex:0 1 240px; min-width:150px; }
.search.inline #q { height:30px; font-size:13px; }
.search.inline #sr { left:0; right:0; }
h3.filter-row { flex-wrap:wrap; }
/* 个股页头部"查询"展开的搜索框；数据来源的一条记录 */
.search.stock-find { padding:0 16px 14px; }
.data-row > div + div { margin-top:4px; }
@media (max-width:760px) { .news-search, .search.inline { flex:1 1 100%; margin-left:0; } }
.post-head .when { margin-left:auto; font-size:12px; color:var(--dim); }
.post .lead { font-size:15px; line-height:1.65; font-weight:500; margin-bottom:10px; }
.post .lead.none { font-size:14px; font-weight:400; color:var(--dim); }
.post .warn { display:block; margin-top:4px; font-size:12px; font-weight:400; color:var(--warn); }
.post .sources { background:#141720; border-radius:6px; padding:2px 10px; }
.post .m { display:flex; gap:12px; align-items:baseline; padding:7px 0; border-top:1px solid #232835; font-size:13px; color:#c3c9d6; }
.post .sources > .m:first-child { border-top:0; }
.post a.m:hover { text-decoration:none; color:var(--fg); }
.post .m .who { flex:0 0 auto; font-size:12px; color:var(--dim); white-space:nowrap; }
.post .m .text { flex:1 1 auto; min-width:0; }
.post .m .open { flex:0 0 auto; margin-left:auto; font-size:12px; color:var(--acc); white-space:nowrap; }
.post summary { cursor:pointer; color:var(--acc); font-size:13px; padding:7px 0; border-top:1px solid #232835; }
@media (max-width:600px) { .post .m { flex-wrap:wrap; gap:2px 10px; } .post .m .text { flex-basis:100%; order:3; } }
/* 异动板块：一个板块一张卡片，下面是异动股和相关新闻 */
.sector-move { padding:14px; } .sector-move .top { flex-wrap:wrap; gap:6px 8px; } .sector-move .top b { font-size:16px; }
.sector-move .chips { margin:8px 0; }
.sector-move .top b.move-when { font-size:13px; font-weight:600; font-variant-numeric:tabular-nums; }
.sector-news { background:#141720; border-radius:6px; padding:2px 10px; }
.sector-news .sn { padding:8px 0; border-top:1px solid #232835; } .sector-news .sn:first-child { border-top:0; }
/* 标题大而亮，正文小而淡，一眼分开 */
.sector-news .sn-title { font-size:15px; font-weight:600; color:var(--fg); margin-bottom:3px; }
.sector-news .sn-body { font-size:13px; line-height:1.6; color:#98a1b3; }
.sector-move .more-chips { padding:1px 10px; font-size:12px; border-radius:12px; color:var(--acc); }
/* 热点新闻、热议板块、热议个股的列表：左边是名次，前三名橙色 */
/* 名次列宽 30px：最多 200 条，三位数（100 以上）也在一行里，不会换行 */
.item { padding:14px 12px; border-bottom:1px solid var(--line); display:grid; grid-template-columns:30px minmax(0,1fr); gap:8px; }
.rank { font-size:13px; font-weight:700; line-height:24px; color:var(--dim); text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.item:nth-child(-n+3) .rank { color:var(--warn); }
.item .title { font-size:16px; font-weight:600; margin-bottom:4px; }
/* 新闻列表的正文：比标题小一号、颜色淡一些，一眼和标题分开 */
.item .body, .row .body, .card .body { font-size:13.5px; line-height:1.65; color:#98a1b3; text-align:justify; }
/* 列表上方的一行：左边排序或筛选下拉框，右边靠右的窄搜索框 */
.list-bar { display:flex; align-items:center; gap:10px; padding:10px 12px; border-bottom:1px solid var(--line); }
.list-bar .news-search, .list-bar .search.inline { flex:0 1 200px; min-width:120px; margin-left:auto; }
@media (max-width:760px) { .list-bar .news-search, .list-bar .search.inline { flex:0 1 170px; margin-left:auto; } }
select.pick { height:30px; padding:0 10px; font-size:13px; color:var(--fg); background:var(--panel2); border:1px solid #2c3442;
  border-radius:15px; outline:none; cursor:pointer; color-scheme:dark; }
select.pick:focus { border-color:var(--acc); }
.list-bar #sr { left:auto; right:0; min-width:260px; }
/* 热点新闻的排序：热度 | 时间 排序，选中的那个是蓝色粗体 */
.sort-links { display:inline-flex; align-items:center; gap:6px; font-size:13px; white-space:nowrap; }
.sort-links a { color:var(--dim); cursor:pointer; } .sort-links a:hover { color:var(--fg); text-decoration:none; }
.sort-links a.on { color:var(--acc); font-weight:700; } .sort-links i { font-style:normal; color:#3a4252; }
/* 传闻：合并在一起的相似说法，折叠显示 */
details.similar { margin-top:6px; } details.similar summary { cursor:pointer; color:var(--acc); font-size:12.5px; }
details.similar .sim { margin:6px 0 0 4px; padding-left:10px; border-left:2px solid var(--line); }
/* 回到顶部：页面往下滚动较多后出现在右下角 */
.to-top { position:fixed; right:20px; bottom:28px; z-index:35; width:42px; height:42px; padding:0; border-radius:50%; font-size:20px;
  line-height:42px; color:#fff; background:rgba(77,141,255,.88); box-shadow:0 6px 18px rgba(0,0,0,.45); }
.to-top[hidden] { display:none; }
@media (max-width:760px) { .to-top { right:14px; bottom:20px; } }
/* 个股页头部所在的卡片不裁切，"查询"的提示列表才能伸到卡片外面 */
section.hero-box { overflow:visible; }
.item .meta { margin:6px 0; }
.chips a { display:inline-block; margin:2px 6px 2px 0; padding:1px 8px; border:1px solid var(--line); border-radius:12px; color:var(--fg); font-size:12px; }
.chips a:hover { text-decoration:none; background:#1d212b; }
.stars { color:var(--warn); letter-spacing:1px; }
/* 热议板块热力图：格子的位置和大小由脚本计算 */
.heat { position:relative; margin:8px; }
.heat .heat-tip { position:absolute; top:4px; right:4px; z-index:2; width:20px; height:20px; margin:0; line-height:18px; font-size:12px;
  color:#fff; background:rgba(11,14,20,.6); border-color:rgba(255,255,255,.45); }
.tip-pop { max-width:calc(100vw - 16px); }
.tile.on { border-color:#fff; }
.tile { position:absolute; color:#fff; border:2px solid var(--panel); border-radius:6px; padding:2px; display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; overflow:hidden; cursor:pointer; }
.tile:hover { filter:brightness(1.15); text-decoration:none; }
.tile b { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .tile span { font-size:11px; line-height:1.3; opacity:.9; white-space:nowrap; }
/* 每周数据 */
#kinds button { touch-action:none; user-select:none; cursor:grab; }
#kinds button.dragging { opacity:.5; }
.board-date { display:flex; gap:6px; align-items:center; padding:8px 12px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.board-date input { background:var(--bg); border:1px solid var(--line); color:var(--fg); border-radius:6px; padding:4px 8px; color-scheme:dark; }
.board-date button { padding:4px 10px; font-size:13px; }
td.wrap { white-space:normal; min-width:260px; line-height:1.5; } td.wrap div + div { margin-top:4px; }
td.links a { display:block; } #board tbody tr { cursor:default; }
/* 每周数据的统计表格：滚动时固定在页面最上方。section 默认的 overflow:hidden 会让 sticky 失效，这里放开 */
.week-box { overflow:visible; min-width:0; } /* min-width:0：否则下方的宽表格会把整页撑宽 */
.week-stat { position:sticky; top:58px; z-index:3; /* 58px：电脑上固定的顶部栏高度；手机上顶部栏不固定，见下方 */ background:var(--panel); border-bottom:2px solid var(--line); }
.week-stat table { table-layout:fixed; }
.week-stat th, .week-stat td { padding:3px 2px; text-align:center; font-size:12px; line-height:1.3; }
.week-stat tbody th, .week-stat tbody td { height:30px; }
.week-stat th.kind { width:84px; padding-left:12px; text-align:left; color:var(--fg); white-space:normal; }
.week-stat tbody th.kind { cursor:grab; touch-action:none; user-select:none; font-weight:500; }
.week-stat tbody tr { cursor:default; } .week-stat tr.dragging { background:#2a3040; }
.week-stat .today { background:rgba(76,141,255,.1); } .week-stat .zero { color:#4a5266; }
.week-stat button.n { width:100%; max-width:56px; padding:2px 0; background:none; color:var(--acc); font-size:13px; font-weight:600; border-radius:4px; }
.week-stat button.n:hover { background:#232838; } .week-stat button.n.on { background:var(--acc); color:#fff; }
@media (max-width:760px) { .week-stat { top:0; } }
@media (max-width:480px) { .week-stat th.kind { width:62px; padding-left:8px; } .week-stat th, .week-stat td { font-size:11px; } }
/* 手机上新闻表格放不下四列，改成一只股票一张卡片，不用左右滑动 */
@media (max-width:480px) {
  #board table, #board tbody, #board tr, #board td { display:block; width:auto; } #board thead { display:none; }
  #board tr { padding:6px 0; border-bottom:1px solid var(--line); }
  #board td { padding:3px 12px; border:0; white-space:normal; } #board td.wrap { min-width:0; }
  #board td br { display:none; } #board td .dim, #board td .up, #board td .down { margin-left:6px; }
  #board td.links a { display:inline-block; margin-right:12px; }
}
/* 窗口太矮时不固定，否则看不到下面的新闻 */
@media (max-height:560px) { .week-stat { position:static; } }
/* 登录表单 */
main.narrow { max-width:440px; padding-top:32px; }
.tier { font-size:12px; font-weight:700; padding:1px 8px; border-radius:6px; background:var(--panel2); color:var(--dim); }
.tier.pro { background:linear-gradient(90deg,#f5c35b,#e59a2f); color:#1a1405; }
.brand-hero { display:flex; flex-direction:column; align-items:center; gap:4px; padding:28px 16px 4px; }
.brand-hero img { width:64px; height:64px; border-radius:16px; box-shadow:0 6px 24px rgba(77,110,255,.4); margin-bottom:8px; }
.brand-hero b { font-size:22px; letter-spacing:1px; } .brand-hero span { font-size:13px; color:var(--dim); letter-spacing:2px; }
.form { padding:16px; display:grid; gap:12px; max-width:420px; }
main.narrow .form { padding:20px 24px 28px; margin:0 auto; }
.form button { height:44px; }
.form input[type=tel], .form input[type=text] { width:100%; background:var(--bg); border:1px solid var(--line); color:var(--fg); border-radius:8px; padding:10px 12px; font-size:15px; outline:none; }
.form input:focus { border-color:var(--acc); box-shadow:0 0 0 3px rgba(77,141,255,.18); }
.form .line { display:flex; gap:8px; } .form .line input { flex:1; min-width:0; } .form .line button { flex-shrink:0; }
.form label { display:flex; gap:8px; align-items:flex-start; font-size:13px; color:var(--dim); }
.doc { padding:16px; max-width:760px; } .doc h2 { font-size:15px; margin:18px 0 6px; }
/* AI 风险提示：顶部栏最右边，两行小字靠右对齐 */
.ai-note { margin-left:auto; font-size:11px; line-height:1.4; text-align:right; color:#e9b25e; letter-spacing:.3px; white-space:nowrap; }
/* 手机上提示和品牌在同一行，宽度不够时允许换行 */
@media (max-width:760px) { .ai-note { font-size:10px; white-space:normal; flex:1 1 0; min-width:0; } }
/* 顶部栏右边的账户按钮和菜单（所有页面） */
.acct { position:relative; flex:0 0 auto; }
.acct-btn { display:inline-flex; align-items:center; gap:6px; padding:5px 12px; font-size:13px; border-radius:999px; white-space:nowrap; }
.acct-btn svg { width:16px; height:16px; } .acct-btn .tier { font-style:normal; font-size:10.5px; padding:0 6px; }
.acct-menu { position:absolute; right:0; top:calc(100% + 8px); z-index:40; width:260px; display:grid; gap:6px; padding:14px;
  background:var(--panel2); border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 32px rgba(0,0,0,.45); }
.acct-menu .acct-head { display:flex; align-items:center; gap:8px; } .acct-menu .acct-head b { font-size:15px; }
.acct-menu .dim:empty { display:none; } .acct-menu a { font-size:13px; } .acct-menu button { margin-top:4px; }
@media (max-width:760px) { .acct-btn { padding:4px 10px; font-size:12px; } .acct-btn span { display:none; } }
/* 自选股：一行一只股票。网格列：名称代码 / 最新价 / 涨跌幅 / 成交额；编辑时左边多把手、右边多删除 */
.wl-head, .wl-row { display:grid; grid-template-columns:minmax(0,1.6fr) 1fr 1fr 1fr; align-items:center; gap:8px; padding:0 14px; }
#mine.editing .wl-head, #mine.editing .wl-row { grid-template-columns:28px minmax(0,1.6fr) 1fr 1fr 1fr 36px; padding:0 12px; }
.wl-head .ed, .wl-row .ed { display:none; } #mine.editing .ed { display:block; }
.wl-head { height:36px; font-size:12.5px; color:var(--dim); border-bottom:1px solid var(--line); }
.wl-head a { color:var(--dim); cursor:pointer; user-select:none; white-space:nowrap; }
.wl-head a:nth-of-type(n+2) { text-align:right; }
.wl-head a:hover { color:var(--fg); text-decoration:none; } .wl-head a.on { color:var(--acc); font-weight:700; }
.wl-head a::after { content:attr(data-arrow); margin-left:3px; }
#mine.editing .wl-head a { cursor:default; color:var(--dim); }
.wl-set { display:inline-flex; align-items:center; gap:6px; padding:5px 12px; font-size:13px; border-radius:999px; }
.wl-set svg { width:16px; height:16px; } .wl-set.on { color:#fff; background:var(--acc); border-color:var(--acc); }
.wl-row { min-height:54px; border-bottom:1px solid var(--line); background:var(--panel); transition:background .12s; }
.wl-row:hover { background:#1a1f2b; }
.wl-row .grip { color:var(--dim); font-size:14px; letter-spacing:-2px; text-align:center; user-select:none; touch-action:none; cursor:grab; }
.wl-row.dragging { opacity:.6; background:#1d2433; } .wl-row.flash { background:rgba(77,141,255,.18); }
.wl-row .nm { display:flex; flex-direction:column; color:var(--fg); line-height:1.35; min-width:0; }
.wl-row .nm b { font-size:15px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .wl-row .nm:hover { text-decoration:none; }
.wl-row .num { text-align:right; font-size:15px; font-weight:600; font-variant-numeric:tabular-nums; }
.wl-row .num.dim { font-size:13px; font-weight:400; } .wl-row .chg { font-weight:700; }
.wl-row .del { width:28px; height:28px; padding:0; font-size:18px; line-height:26px; color:var(--dim); background:transparent; border:1px solid transparent; border-radius:50%; }
.wl-row .del:hover { color:#ff7b7b; border-color:rgba(240,72,72,.4); }
#foot, #newsFoot { padding:10px 12px; } #foot:empty, #newsFoot:empty { display:none; }
/* 自选：行情/资讯切换、组合标签、市场和类型筛选 */
.wl-top { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 12px 0; }
.wl-groups { display:flex; gap:6px; flex-wrap:nowrap; overflow-x:auto; padding:10px 12px; border-bottom:1px solid var(--line);
  scrollbar-width:thin; }
.wl-groups button { flex:none; padding:4px 14px; font-size:13px; color:#b8c0d0; background:var(--panel2); border:1px solid #2c3442;
  border-radius:999px; white-space:nowrap; }
.wl-groups button.on { color:#fff; background:var(--acc); border-color:var(--acc); font-weight:600; }
.wl-groups button.add { color:var(--acc); background:transparent; border-style:dashed; }
.wl-groups .gtools { display:none; flex:none; gap:6px; } #mine.editing .wl-groups .gtools { display:flex; }
.wl-groups .gtools button { color:var(--dim); background:transparent; }
.wl-filters { display:flex; gap:6px; flex-wrap:wrap; padding:8px 12px; border-bottom:1px solid var(--line); }
.wl-filters button { padding:3px 12px; font-size:12.5px; color:#b8c0d0; background:transparent; border:1px solid #2c3442; border-radius:999px; }
.wl-filters button.on { color:var(--acc); border-color:var(--acc); font-weight:600; }
.wl-note { padding:6px 12px; font-size:12px; } .wl-note:empty { display:none; }
.wl-set, #count { white-space:nowrap; flex:none; }
.wl-tag { display:inline-block; margin-left:4px; padding:0 4px; font-size:10.5px; line-height:15px; color:#9fb4ff;
  border:1px solid rgba(120,150,255,.45); border-radius:3px; vertical-align:1px; font-weight:400; }
.wn-item { padding:10px 12px; border-bottom:1px solid var(--line); background:var(--panel); }
.wn-item .wn-head { font-size:12.5px; margin-bottom:3px; } .wn-item .wn-body { font-size:14.5px; line-height:1.55; }
.wn-item .chips { margin-top:4px; }
.stale-bar { padding:6px 12px; font-size:13px; color:#ffd479; background:rgba(255,180,0,.1); border-bottom:1px solid rgba(255,180,0,.3); text-align:center; }
/* 手机：去掉成交额一列 */
@media (max-width:600px) {
  .wl-head, .wl-row { grid-template-columns:minmax(0,1.4fr) 1fr 1fr; gap:6px; padding:0 10px; }
  #mine.editing .wl-head, #mine.editing .wl-row { grid-template-columns:22px minmax(0,1.4fr) 1fr 1fr 30px; padding:0 8px; }
  .wl-head a[data-k=amount], .wl-row .amt { display:none; }
  .wl-row .num { font-size:14px; }
}
