@charset "utf-8";
/* ==========================================================================
   LongPT · Nebula · theme.css
   ----------------------------------------------------------------------------
   页面级覆盖层。加载顺序在 tokens/base/components 之后，因此这里的规则
   优先级最高，专门处理「设计系统没覆盖到的历史页面细节」。

   分层职责：
     tokens.css     设计令牌（颜色/间距/字号/圆角/阴影）—— 唯一配色的来源
     base.css       全局重置 + 版式骨架（header/nav/info/footer）
     components.css 通用组件（表格/表单/按钮/徽章/提示/分页）
     theme.css      本文件：页面级补丁与特例

   维护约定：优先在 components.css 里做通用规则；
   只有「只影响某个页面」的才写在这里，并标明页面名。
   ========================================================================== */

/* ==========================================================================
   1. 首页（index.php）
   ========================================================================== */

/* 最近 5 条种子表格 */
table.last-five-torrents { margin-bottom: var(--nx-space-5); }
table.last-five-torrents > tbody > tr > td:first-child { font-weight: var(--nx-weight-medium); }
table.last-five-torrents b { color: var(--nx-text); font-weight: var(--nx-weight-semibold); }

/* 首页统计区块 */
#outer table.main > tbody > tr > td.embedded { padding: var(--nx-space-5); }

/* ==========================================================================
   2. 种子列表（torrents.php）
   ========================================================================== */

/* 列表主体：让标题列更突出，数字列紧凑 */
table.torrents > tbody > tr > td:nth-child(2) { min-width: 280px; }

/* ---- 关键修复：老代码把 td 的 padding 内联清零了 ----
 * 真实写法：
 *   <td class="rowfollow" width="100%" align="left" style='padding: 0px'>
 *     <table class="torrentname" width="100%">
 *       <tr style="background-color: #89c9e6">   <-- 硬编码的深青底色
 * 结果：标题贴边、置顶行底色与主题冲突。这里把内联值压回去。
 */
table.torrents td.rowfollow[style*="padding: 0"] { padding: 0 !important; }

/* 内嵌的 .torrentname 表：由它接管内边距 */
table.torrentname {
    width: 100%;
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    margin: 0;
}
table.torrentname > tbody > tr > td {
    padding: var(--nx-space-3) var(--nx-space-2);
    border: 0;
    vertical-align: middle;
}
/* 第一格是缩略图，给右侧留点间隔 */
table.torrentname > tbody > tr > td:first-child { padding-right: var(--nx-space-3); }
/* 标题格 */
table.torrentname > tbody > tr > td.embedded:not(:first-child) { padding-left: var(--nx-space-1); }

/* 置顶 / 促销行的硬编码底色 -> 令牌化（保持「置顶」语义但融入主题） */
table.torrents > tbody > tr[style*="background-color"] {
    background-color: var(--nx-primary-soft) !important;
}
/* 二级置顶（更浅一档） */
table.torrents > tbody > tr[style*="#aadbf3"] {
    background-color: var(--nx-surface-sunken) !important;
}

/* ⚠️ 内层的 table.torrentname 也带同样一行内联底色，但**不能再让它铺色**：
   它位于标题列内部、层叠在外层 td 之上，会把外层的隔行换色整块盖住 ——
   后果就是标题区（分类图标 / 封面图 / 种子名）每行都显示成同一个促销色，
   看起来「每行都带颜色，而不是各行换色」。
   行背景统一交给最外层（table.torrents 的 tr / td）表达，内层保持透明。 */
table.torrentname > tbody > tr[style*="background-color"],
table.torrentname > tbody > tr[style*="#aadbf3"] {
    background-color: transparent !important;
}

/* 标题与副标题（分类/分辨率/编码那一行）之间的呼吸 */
table.torrentname a[href^="details.php"] {
    display: inline-block;
    margin-bottom: var(--nx-space-1);
    line-height: var(--nx-leading-snug);
}
/* 促销标签行（热门/免费/剩余时间）—— 与标题同排但不挤 */
table.torrentname b,
table.torrentname font {
    font-size: var(--nx-font-sm);
}

/* 种子标题链接 */
table.torrents a[href^="details.php"] { font-weight: var(--nx-weight-medium); }
table.torrents a[href^="details.php"]:hover { color: var(--nx-primary-strong); text-decoration: underline; }

/* 分类/促销标签行 */
table.torrents .rowfollow img { vertical-align: middle; }

/* 操作列（下载/收藏/致谢等图标）—— 老站是一排裸 img，这里排齐 */
table.torrents td.nx-actions,
table.torrents > tbody > tr > td:last-child { white-space: nowrap; }
table.torrents > tbody > tr > td:last-child img { vertical-align: middle; margin: 0 1px; }

/* ---- 统计列不再被压窄（2026-09-18）----
 * 老代码给标题列写了 width="100%"，而统计列没有任何宽度约束，
 * 浏览器就把它们压到「最小内容宽度」；中文可以逐字断行，
 * 于是「3天18时」被拆成 4 行竖排、「3.54 GB」拆成 2 行，
 * 整行行高被撑高、表头图标与数据对不上，观感错乱。
 * 加 nowrap 后最小宽度 = 完整内容宽度，列宽与行高都回归稳定。
 * 注意不能整表 nowrap —— 标题列的副标题需要自动折行，故从第 3 列起。 */
table.torrents > tbody > tr > td:nth-child(n+3) { white-space: nowrap; }

/* 统计列（评论 / 存活时间 / 大小 / 种子 / 下载 / 完成 / 发布者）统一居中并给保底宽度。
 * 表头是图标、数据是文字，两者宽度不同会让列宽忽大忽小；
 * 定宽 + 居中后整列视觉稳定，也避免窄视口下把内容压到逐字换行。
 * 最后一列（操作）保留其内联的右对齐。 */
table.torrents > tbody > tr > td:nth-child(n+3):not(:last-child) {
    text-align: center;
    min-width: 44px;
}

/* 类型列：分类图标别贴左边缘（老代码把 padding 内联清零了） */
table.torrents > tbody > tr > td.colhead:first-child,
table.torrents > tbody > tr > td.rowfollow:first-child {
    padding-left: var(--nx-space-3) !important;
    padding-right: var(--nx-space-2) !important;
}

/* ==========================================================================
   3. 种子详情（details.php）
   ========================================================================== */

/* 详情页信息表：标签列定宽、内容列自适应 */
#outer table.nx-detail-table > tbody > tr > td:first-child,
#outer table.main > tbody > tr > td.rowhead {
    width: 150px;
    white-space: nowrap;
}

/* 下载/收藏操作区 */
.nx-detail-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--nx-space-3);
    padding: var(--nx-space-4) 0;
}

/* ==========================================================================
   4. 用户中心（usercp.php）
   ========================================================================== */
#outer table.usercp-layout,
#outer table.main > tbody > tr > td[width] { vertical-align: top; }

/* ==========================================================================
   5. 论坛（forums.php / comment.php）
   ========================================================================== */

/* 帖子楼层 */
.nx-post {
    background: var(--nx-surface);
    border: var(--nx-border-thin) solid var(--nx-border);
    border-radius: var(--nx-radius-lg);
    margin-bottom: var(--nx-space-4);
    overflow: hidden;
    box-shadow: var(--nx-shadow-xs);
}
.nx-post-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--nx-space-4);
    padding: var(--nx-space-3) var(--nx-space-5);
    background: var(--nx-surface-sunken);
    border-bottom: var(--nx-border-thin) solid var(--nx-border);
    font-size: var(--nx-font-sm);
    color: var(--nx-text-secondary);
}
.nx-post-body { padding: var(--nx-space-5); line-height: var(--nx-leading-loose); }

/* ==========================================================================
   6. 管理页（settings.php / catmanage.php 等）
   ========================================================================== */

/* 设置页表单行：这是全站最大页面（971 行 / 209 个输入框），单独优化密度 */
#outer form table td input[type="text"],
#outer form table td input[type="password"],
#outer form table td select,
#outer form table td textarea {
    max-width: 100%;
    padding: var(--nx-space-3) var(--nx-space-4);
    color: var(--nx-text);
    background: var(--nx-surface);
    border: var(--nx-border-thin) solid var(--nx-border-strong);
    border-radius: var(--nx-radius-md);
    box-shadow: var(--nx-shadow-inset);
    transition: border-color var(--nx-dur-fast) var(--nx-ease-out),
                box-shadow var(--nx-dur-fast) var(--nx-ease-out);
}
#outer form table td input[type="text"]:focus,
#outer form table td input[type="password"]:focus,
#outer form table td select:focus,
#outer form table td textarea:focus {
    outline: none;
    border-color: var(--nx-primary);
    box-shadow: var(--nx-shadow-focus);
}
#outer form table td input[type="radio"],
#outer form table td input[type="checkbox"] { accent-color: var(--nx-primary); }

/* ==========================================================================
   7. 登录 / 注册（login.php / signup.php）
   ========================================================================== */
.nx-auth-wrap {
    max-width: 480px;
    margin: var(--nx-space-8) auto;
    padding: var(--nx-space-8) var(--nx-space-7);
    background: var(--nx-surface);
    border: var(--nx-border-thin) solid var(--nx-border);
    border-radius: var(--nx-radius-2xl);
    box-shadow: var(--nx-shadow-lg);
}
.nx-auth-wrap h1,
.nx-auth-wrap h2 { text-align: center; border-left: 0; padding-left: 0; justify-content: center; }
.nx-auth-wrap input[type="text"],
.nx-auth-wrap input[type="password"],
.nx-auth-wrap input[type="email"] { width: 100%; }

/* 登录页的居中卡片（老写法：<table align="center" class="main" width="500">）
 * 现在 PHP 里还没加 class，先用属性选择器兜底，视觉上等同 .nx-auth-wrap */
#outer table.main[align="center"][width="500"],
#outer table.main[align="center"][width="480"],
#outer table.main[align="center"][width="400"],
#outer table.main[align="center"][width="450"] {
    max-width: 520px;
    margin: var(--nx-space-8) auto;
    border-radius: var(--nx-radius-2xl);
    box-shadow: var(--nx-shadow-lg);
    overflow: hidden;
}
#outer table.main[align="center"][width="500"] > tbody > tr > td.embedded,
#outer table.main[align="center"][width="400"] > tbody > tr > td.embedded {
    padding: var(--nx-space-6);
}

/* ---- 关键修复：border="1" 的上古默认边框 ----
 * 老页面大量使用 <table border="1">，浏览器会画出 1px 立体边框（上浅下深），
 * 在现代设计里非常刺眼。统一去掉，改用令牌化的细边框。
 */
#outer table[border="1"],
#outer table[border="2"],
#outer table[border="3"] {
    border: var(--nx-border-thin) solid var(--nx-border) !important;
    border-radius: var(--nx-radius-lg);
    border-collapse: separate !important;
    border-spacing: 0;
    overflow: hidden;
}
#outer table[border="1"] > tbody > tr > td,
#outer table[border="2"] > tbody > tr > td,
#outer table[border="3"] > tbody > tr > td {
    border: 0;
    border-bottom: var(--nx-border-thin) solid var(--nx-divider);
}
#outer table[border="1"] > tbody > tr:last-child > td,
#outer table[border="2"] > tbody > tr:last-child > td,
#outer table[border="3"] > tbody > tr:last-child > td { border-bottom: 0; }

/* ---- 关键修复：cellpadding="10" 这类属性在现代浏览器已失效但仍在源码里 ----
 * 实际影响：所有裸 td 都挤在一起。这里给一个合理的默认内边距。
 */
#outer table:not([class]) > tbody > tr > td { padding: var(--nx-space-4); }

/* ---- "你没有该权限！" 这类空态页 ----
 * 老结构：<table class="main"><tr><td class="embedded"><table width="100%"><tr><td class="text">说明
 * 收成柔和的信息卡。
 *
 * ⚠ 必须加 :first-child —— 原选择器只写了 [width="100%"]:not([class])，
 * 条件太宽，把「最近消息 / 趣味盒 / 群聊区」等区块的正文容器也命中了
 * （那些容器同样是 <table width="100%"> 且无 class），
 * 于是每个区块左侧都被画上一条琥珀色竖线，
 * 与 h2 的中性竖线叠成「两条颜色不同的线」。用户一眼就看出来了。
 *
 * 区别在于：空态页的 table 是 td.embedded 的第一个子元素；
 * 而内容区块的 table 前面还有一个 <h2> 标题。用 :first-child 精确切开。
 */
#outer table.main > tbody > tr > td.embedded > table[width="100%"]:not([class]):first-child {
    border: 0 !important;
    border-left: 3px solid var(--nx-warning) !important;
    background: var(--nx-surface-sunken);
    border-radius: var(--nx-radius-md);
    overflow: hidden;
}
#outer table.main > tbody > tr > td.embedded > table[width="100%"]:not([class]):first-child > tbody > tr > td.text {
    padding: var(--nx-space-4) var(--nx-space-5);
    color: var(--nx-text-secondary);
    font-size: var(--nx-font-base);
}

/* ==========================================================================
   8. 兼容性补丁：旧主题下的历史类名兜底
   ========================================================================== */

/* 去掉旧主题残留的行内表格边框视觉噪音 */
table.main:not(.nx-table) > tbody > tr > td[bgcolor],
table.main:not(.nx-table) > tbody > tr[bgcolor] > td {
    background: var(--nx-surface-alt) !important;
}

/* 裸 table（无 class）在内容区里也应有卡片感，避免贴边。
   ⚠ 必须带上 `> form > table` 这一支：控制面板的个人/网站/论坛/安全四个标签页，
     表格被 usercp.php 的 <form> 包了一层（td#outer > form > table[width=1200]），
     只写 `#outer > table` 这个直接子选择器就落不到它身上 —— 于是设定首页有 14px
     圆角、白底、描边、投影，切到「个人设定」全没了，灰色 rowhead 直接顶成方角。 */
#outer > table:not([class]),
#outer > form > table:not([class]) {
    width: 100%;
    background: var(--nx-surface);
    border: var(--nx-border-thin) solid var(--nx-border);
    border-radius: var(--nx-radius-lg);
    box-shadow: var(--nx-shadow-sm);
    margin-bottom: var(--nx-space-5);
}
#outer > table:not([class]) > tbody > tr > td,
#outer > form > table:not([class]) > tbody > tr > td { padding: var(--nx-space-4); }

/* 表单内表格不要卡片阴影（表单需要更平面） */
form table { box-shadow: none; }

/* 图片资源类（sprites 用背景图，这里保证尺寸不被压变形） */
img.inbox, img.inboxnew, img.sentbox, img.buddylist, img.rss,
img.cheaterbox, img.reportbox, img.staffbox, img.arrowup, img.arrowdown {
    display: inline-block;
    vertical-align: middle;
    background-repeat: no-repeat;
}

/* ==========================================================================
   9. 科技风层（本主题的灵魂）
   --------------------------------------------------------------------------
   base.css / components.css 是与 Nebula、Kawaii 共享的骨架，不能改，
   因此所有「科技风」的观感都写在这层：网格光斑底、玻璃拟态、发光、
   以及按钮 / 表格 / 菜单 / 输入框的深色精修。

   全部走 var(--nx-*)，故切换器切到「浅色」时会自动退化成干净的浅色版，
   不会残留深色硬编码。
   ========================================================================== */

/* — 页面底：近黑深蓝 + 两处蓝色光斑 + 细网格 — */
body {
    background-color: var(--nx-canvas);
    background-image:
        radial-gradient(1200px 600px at 14% -12%, rgba(59, 130, 246, 0.15), transparent 60%),
        radial-gradient(900px 520px at 88% 108%, rgba(37, 99, 235, 0.12), transparent 62%),
        linear-gradient(rgba(148, 163, 184, 0.055) 1px, transparent 1px),
        linear-gradient(90deg, rgba(148, 163, 184, 0.055) 1px, transparent 1px);
    background-size: auto, auto, 44px 44px, 44px 44px;
    background-attachment: fixed;
}

/* — 玻璃拟态：卡片、表格、容器 — */
table.main:not(.nx-raw),
.nx-card,
fieldset,
.toolbox {
    background: var(--nx-glass-bg);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    /* 2026-09-20：描边从 --nx-glass-border 换成 --nx-card-border。
       浅色下 glass-border 是 rgba(15,23,42,.10)，摆在 canvas(#f4f7fb) 上算出来约
       #e5e7eb，和 --nx-border(#e2e8f0) 同一档——几乎读不出边界，于是内容卡比
       同页的公告块 / 信息条（已提到 border-strong）淡一圈，四块对不齐。
       玻璃质感靠 background + backdrop-filter 已经够了，边框不必再省这一档。 */
    border: var(--nx-border-thin) solid var(--nx-card-border);
    box-shadow: var(--nx-shadow-lg), var(--nx-glass-inset);
}

/* — 表格：表头渐变 + 分隔线收细 + hover 提亮 — */
table.nx-table > thead > tr > th,
table.torrents > tbody > tr:first-child > td.colhead,
td.colhead,
th.colhead {
    background-image: linear-gradient(180deg, var(--nx-thead-from) 0%, var(--nx-thead-to) 100%);
    border-bottom: 1px solid var(--nx-border-strong);
    color: var(--nx-text);
}
table.nx-table > tbody > tr > td,
table.torrents > tbody > tr > td {
    border-bottom: 1px solid var(--nx-divider);
}
table.nx-table > tbody > tr:hover > td,
table.torrents > tbody > tr:hover > td {
    background: var(--nx-surface-hover);
}

/* — 按钮：深色底 + 描边，hover 发光并轻抬 — */
button,
input[type="submit"],
input[type="button"],
input[type="reset"],
.nx-btn {
    border-radius: var(--nx-radius-md);
    background: var(--nx-btn-bg);
    border-color: var(--nx-border-strong);
    transition: background-color var(--nx-dur-fast) var(--nx-ease-out),
                border-color var(--nx-dur-fast) var(--nx-ease-out),
                color var(--nx-dur-fast) var(--nx-ease-out),
                box-shadow var(--nx-dur-base) var(--nx-ease-out),
                transform var(--nx-dur-base) var(--nx-ease-out);
}
button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,
input[type="reset"]:hover,
.nx-btn:hover {
    border-color: var(--nx-primary);
    color: var(--nx-primary-strong);
    box-shadow: var(--nx-glow);
    transform: translateY(-1px);
}

/* 主按钮：品牌渐变 + 发光 */
.nx-btn-primary,
input[type="submit"].nx-btn-primary {
    background-image: var(--nx-gradient-brand);
    border-color: transparent;
    color: var(--nx-on-primary);
    box-shadow: var(--nx-glow);
}
.nx-btn-primary:hover,
input[type="submit"].nx-btn-primary:hover {
    background-image: var(--nx-gradient-brand);
    filter: brightness(1.1);
    box-shadow: var(--nx-glow-strong);
}

/* — 输入框：更深的内凹底 + 聚焦蓝晕 — */
input[type="text"],
input[type="password"],
input[type="number"],
input[type="search"],
input[type="email"],
textarea,
select {
    /* ⚠️ 不能写死 rgba(18,26,42,.78)：这是全站裸 input 的默认底色，
       写死深色后，浅色模式下所有页面（如 user-ban-log 查询框）都会变成
       「浅色页面上的深黑输入框」。走 --nx-input-bg 令牌，明暗各给一份。 */
    background: var(--nx-input-bg);
    border-color: var(--nx-border-strong);
    color: var(--nx-text);
}
input[type="text"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="email"]:focus,
textarea:focus,
select:focus {
    border-color: var(--nx-primary);
    box-shadow: var(--nx-shadow-focus), 0 0 20px rgba(59, 130, 246, 0.2);
}

/* — 导航 / 菜单：半透明吸顶 + 激活态发光下边线 — */
/* 导航区底色同样必须走令牌。
   原先这里写死 rgba(18,26,42,.86)，浅色模式下导航条区域仍是深色，
   而内部的白色导航卡片只占一部分，露出的部分就是用户看到的「很突兀的深色横条」。
   复用 --nx-header-bg：语义就是「顶部框架区底色」，深浅两套值已在 tokens 里备好。 */
#nav_block,
.nav_block {
    background: var(--nx-header-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--nx-border);
}
nav#nav ul.menu > li.selected > a,
nav#nav ul.menu > li.active > a {
    background: var(--nx-primary-soft);
    color: var(--nx-primary-strong);
    /* 2026-09-18：原先这里用 inset box-shadow 画了一条 2px 下划线
       （box-shadow: inset 0 -2px 0 var(--nx-primary)）。
       但悬浮/选中本身已有 primary-soft 胶囊底，这条线紧贴胶囊下边缘、
       又同为品牌色 → 视觉上是「两条横线」叠在一起，显得啰嗦。
       故移除，状态仅由胶囊底表达（base.css 里也已去掉新增的 ::after）。 */
}
/* 下拉抽屉同样玻璃化，否则在深色底上是亮色方块 */
.ddsubmenustyle,
.ddsubmenustyle ul {
    background: var(--nx-drawer-bg);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1px solid var(--nx-border-strong);
    box-shadow: var(--nx-shadow-xl);
}
.ddsubmenustyle ul li a {
    color: var(--nx-text-secondary);
}
.ddsubmenustyle ul li a:hover {
    background: var(--nx-primary-soft);
    color: var(--nx-primary-strong);
}

/* — 页头 / 页脚 —
   底色走 --nx-header-bg 令牌（深色模式深底、浅色模式浅底），
   不要在这里写死色值：写死会让浅色模式下的 header 保持深色，
   而浅色模式的 logo 是品牌蓝，于是又变成「深底蓝字」看不清。 */
table.head,
#footer {
    background: var(--nx-header-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}
/* 2026-09-20：这里原来对两者统一写 border-color: var(--nx-border)，theme.css 最后加载，
   把 base.css 刚提到的 --nx-card-border 又按回淡档。拆开：#footer 是浮在 canvas 上的
   独立卡（外沿要够），table.head 只画一条下分隔线（base.css:95），继续用 --nx-border。 */
#footer { border-color: var(--nx-card-border); }

/* — 细节点缀：选中文字、滚动条、分割线 — */
::selection {
    background: rgba(59, 130, 246, 0.35);
    color: var(--nx-text);
}
*::-webkit-scrollbar-track { background: var(--nx-canvas); }
*::-webkit-scrollbar-thumb {
    background: var(--nx-scrollbar);
    border-radius: var(--nx-radius-full);
}
*::-webkit-scrollbar-thumb:hover { background: var(--nx-scrollbar-hover); }

/* ==========================================================================
   10. 打印样式
   ========================================================================== */
@media print {
    body { background: #fff; color: #000; }
    #nav_block, #info_block, #footer, .recruitment, .ddsubmenustyle { display: none !important; }
    table.nx-table, table.torrents, .nx-card { box-shadow: none; border-color: #999; }
    a { color: #000; text-decoration: underline; }
}
