/* ============================================================
   NEUSNCP 全局主题层 · theme.css
   统一字号 / 配色 / 按钮 / 卡片 / 表单 / 表格 / 分页 / 弹窗
   兼容站点历史混淆类名：.qv=面板 .qw=面板体 .qx=面板头
   .qz=面板脚 .rc=默认面板 .b=列表项 .cg=按钮 .fm=次要按钮
   加载顺序：base.min.css → workspace.css → theme.css（本文件最后覆盖）
   ============================================================ */
:root{
  --nx-bg:#f4f6fb;
  --nx-surface:#ffffff;
  --nx-surface-2:#f8fafd;
  --nx-ink:#17233b;
  --nx-ink-soft:#33456a;
  --nx-muted:#6b7c96;
  --nx-faint:#93a2ba;
  --nx-line:#e6ecf5;
  --nx-line-strong:#d6e0ee;
  --nx-brand:#2862de;
  --nx-brand-600:#1e52c3;
  --nx-brand-700:#1a46a8;
  --nx-brand-soft:#eaf1ff;
  --nx-brand-softer:#f3f7ff;
  --nx-success:#1f9d57;
  --nx-warn:#d98324;
  --nx-danger:#d8485f;
  --nx-info:#3f97c9;
  --nx-radius:14px;
  --nx-radius-sm:10px;
  --nx-radius-xs:8px;
  --nx-shadow-sm:0 1px 2px rgba(23,42,80,.05);
  --nx-shadow:0 6px 20px -10px rgba(23,42,80,.18);
  --nx-shadow-lg:0 18px 44px -22px rgba(21,43,80,.42);
  --nx-ring:0 0 0 3.5px rgba(40,98,222,.14);
  --nx-font:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}

/* ===== 基础排版 ===== */
body{
  font-family:var(--nx-font);
  font-size:14.5px;
  line-height:1.7;
  color:var(--nx-ink);
  background:var(--nx-bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5,h6{color:var(--nx-ink);font-weight:650;line-height:1.35;letter-spacing:-.01em}
h1{font-size:28px}
h2{font-size:22px}
h3{font-size:18px}
h4{font-size:16px}
h5{font-size:14px}
h6{font-size:12.5px}
p{margin:0 0 1em}
small{font-size:82%;color:var(--nx-muted)}
.text-muted{color:var(--nx-muted)!important}
hr{border:0;border-top:1px solid var(--nx-line);margin:22px 0}

/* ===== 链接 ===== */
a{color:var(--nx-brand);text-decoration:none;transition:color .15s ease,opacity .15s ease}
a:hover,a:focus{color:var(--nx-brand-600);text-decoration:none}
a:focus-visible{outline:2px solid var(--nx-brand);outline-offset:2px;border-radius:4px}

/* ===== 按钮（标准 + 混淆类名） ===== */
.btn,.cg{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:8px 16px;border:1px solid transparent;border-radius:var(--nx-radius-xs);
  font-family:inherit;font-size:13.5px;font-weight:550;line-height:1.5;
  letter-spacing:.1px;cursor:pointer;background:transparent;color:var(--nx-ink-soft);
  transition:background-color .16s,border-color .16s,color .16s,box-shadow .16s,transform .12s;
  white-space:nowrap;-webkit-user-select:none;user-select:none;
}
.btn:focus,.cg:focus{outline:none}
.btn:focus-visible,.cg:focus-visible{outline:none;box-shadow:var(--nx-ring)}
.btn:active,.cg:active{transform:translateY(1px)}
.btn[disabled],.btn.disabled,.cg[disabled],.cg.disabled,fieldset[disabled] .cg{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
.btn i,.cg i{font-size:.92em;line-height:1}

/* 次要 / 默认按钮 */
.btn-default,.btn-secondary,.fm{background:var(--nx-surface);border-color:var(--nx-line-strong);color:var(--nx-ink-soft)}
.btn-default:hover,.btn-secondary:hover,.fm:hover{background:var(--nx-brand-softer);border-color:#bccff0;color:var(--nx-brand)}
.btn-default:active,.fm:active,.fm.active{background:var(--nx-brand-soft);border-color:#a9c4f2;color:var(--nx-brand-700)}

/* 主按钮 */
.btn-primary,.btn-info{background:var(--nx-brand);border-color:var(--nx-brand);color:#fff;box-shadow:0 4px 12px -4px rgba(40,98,222,.5)}
.btn-primary:hover,.btn-info:hover{background:var(--nx-brand-600);border-color:var(--nx-brand-600);color:#fff;box-shadow:0 7px 18px -6px rgba(40,98,222,.6)}
.btn-primary:active,.btn-info:active{background:var(--nx-brand-700);border-color:var(--nx-brand-700)}

/* 语义色按钮 */
.btn-success{background:var(--nx-success);border-color:var(--nx-success);color:#fff}
.btn-success:hover{background:#188249;border-color:#188249;color:#fff}
.btn-danger{background:var(--nx-danger);border-color:var(--nx-danger);color:#fff}
.btn-danger:hover{background:#c23a50;border-color:#c23a50;color:#fff}
.btn-warning{background:var(--nx-warn);border-color:var(--nx-warn);color:#fff}
.btn-warning:hover{background:#bd7019;border-color:#bd7019;color:#fff}
.btn-link{background:none;border-color:transparent;color:var(--nx-brand)}
.btn-link:hover{background:var(--nx-brand-softer);color:var(--nx-brand-600)}

/* 尺寸 */
.btn-lg{padding:11px 22px;font-size:15px;border-radius:var(--nx-radius-sm)}
.btn-sm{padding:5px 11px;font-size:12.5px;border-radius:7px}
.btn-xs{padding:3px 8px;font-size:11.5px;border-radius:6px}
.btn-block{display:flex;width:100%}

/* ===== 卡片 / 面板 ===== */
.qv,.panel,.card{
  background:var(--nx-surface);border:1px solid var(--nx-line);
  border-radius:var(--nx-radius);box-shadow:var(--nx-shadow-sm);
  margin-bottom:20px;overflow:hidden;transition:box-shadow .18s,border-color .18s;
}
.qw,.panel-body,.card-body{padding:18px 20px}
.qx,.panel-heading,.card-header{
  padding:13px 20px;border-bottom:1px solid var(--nx-line);
  background:var(--nx-surface-2);color:var(--nx-ink);
  font-weight:600;font-size:14px;border-radius:0;
}
.qz,.panel-footer,.card-footer{padding:12px 20px;background:var(--nx-surface-2);border-top:1px solid var(--nx-line);border-radius:0}
.qv>.qx:first-child{border-top-left-radius:var(--nx-radius);border-top-right-radius:var(--nx-radius)}
.qv>.qz:last-child,.qv>.qw:last-child{border-bottom-left-radius:var(--nx-radius);border-bottom-right-radius:var(--nx-radius)}
/* 面板配色变体统一为中性头 */
.rc>.qx,.rd>.qx,.re>.qx,.rf>.qx,.rg>.qx,.rh>.qx{background:var(--nx-surface-2);color:var(--nx-ink);border-color:var(--nx-line)}
.qv,.rc,.rd,.re,.rf,.rg,.rh{border-color:var(--nx-line)}

/* ===== 列表项 ===== */
.b,.list-group-item{
  position:relative;display:block;padding:13px 18px;margin-bottom:-1px;
  background:var(--nx-surface);border:1px solid var(--nx-line);
  color:var(--nx-ink-soft);word-break:break-word;white-space:normal;
  transition:background-color .15s;
}
.b:first-child,.list-group-item:first-child{border-top-left-radius:var(--nx-radius);border-top-right-radius:var(--nx-radius)}
.b:last-child,.list-group-item:last-child{margin-bottom:0;border-bottom-left-radius:var(--nx-radius);border-bottom-right-radius:var(--nx-radius)}
a.b,button.b,a.list-group-item{cursor:pointer}
a.b:hover,button.b:hover,a.list-group-item:hover{background:var(--nx-brand-softer);color:var(--nx-ink);text-decoration:none}
.list-group{padding-left:0;list-style:none}

/* ===== 表单控件 ===== */
.form-control,input[type="text"],input[type="password"],input[type="email"],
input[type="search"],input[type="number"],input[type="url"],input[type="tel"],
select,textarea{
  display:block;width:100%;height:40px;padding:8px 13px;
  font-family:inherit;font-size:13.5px;line-height:1.5;color:var(--nx-ink);
  background:var(--nx-surface-2);border:1px solid var(--nx-line-strong);
  border-radius:var(--nx-radius-xs);box-shadow:none;
  transition:border-color .16s,background-color .16s,box-shadow .16s;
}
textarea.form-control,textarea{height:auto;min-height:82px;resize:vertical;line-height:1.65}
select.form-control,select{padding-right:30px;appearance:auto}
.form-control:hover,input:hover,select:hover,textarea:hover{border-color:#bccff0}
.form-control:focus,input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--nx-brand);background:var(--nx-surface);box-shadow:var(--nx-ring);
}
.form-control::placeholder,textarea::placeholder,input::placeholder{color:var(--nx-faint)}
.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background:#eef2f8;color:var(--nx-muted);cursor:not-allowed}
.input-sm{height:34px;padding:5px 10px;font-size:12.5px;border-radius:7px}
.input-lg{height:46px;padding:11px 16px;font-size:15px;border-radius:var(--nx-radius-sm)}
.form-group{margin-bottom:16px}
.control-label,label{font-weight:550;color:var(--nx-ink-soft);font-size:13px}
.help-block{font-size:12px;color:var(--nx-muted);margin-top:5px}
.input-group-addon{background:var(--nx-surface-2);border:1px solid var(--nx-line-strong);color:var(--nx-muted);border-radius:var(--nx-radius-xs)}
.input-group .form-control{border-radius:var(--nx-radius-xs) 0 0 var(--nx-radius-xs)}
.input-group-btn:last-child>.btn,.input-group-btn:last-child>.cg{border-radius:0 var(--nx-radius-xs) var(--nx-radius-xs) 0}
input[type="checkbox"],input[type="radio"]{width:15px;height:15px;accent-color:var(--nx-brand);vertical-align:-2px;cursor:pointer}
.checkbox label,.radio label{font-weight:400;color:var(--nx-ink-soft)}

/* ===== 表格 ===== */
.table{width:100%;max-width:100%;margin-bottom:0;border-collapse:collapse;font-size:13px;color:var(--nx-ink-soft)}
.table>thead>tr>th,.table>thead>tr>td{
  background:var(--nx-surface-2);border:0;border-bottom:1px solid var(--nx-line);
  padding:13px 14px;font-size:12px;font-weight:600;color:var(--nx-muted);
  letter-spacing:.2px;white-space:nowrap;vertical-align:bottom;
}
.table>tbody>tr>td,.table>tbody>tr>th{border:0;border-bottom:1px solid var(--nx-line);padding:14px;vertical-align:middle;line-height:1.6}
.table>tbody>tr:last-child>td{border-bottom:0}
.table-hover>tbody>tr:hover,.table-striped>tbody>tr:nth-of-type(odd){background:var(--nx-brand-softer)}
.table>tbody>tr{transition:background-color .14s}
.table-bordered,.table>thead>tr>th,.table>tbody>tr>td{border-color:var(--nx-line)}

/* ===== 分页 ===== */
.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin:26px 0;padding:0;list-style:none}
.pagination>li{display:block}
.pagination>li>a,.pagination>li>span{
  display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;
  padding:0 11px;border:1px solid var(--nx-line);border-radius:var(--nx-radius-xs);
  background:var(--nx-surface);color:var(--nx-muted);font-size:13px;line-height:1;float:none;
  transition:background-color .15s,border-color .15s,color .15s;
}
.pagination>li>a:hover{background:var(--nx-brand-softer);border-color:#bccff0;color:var(--nx-brand);z-index:1}
.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover{
  background:var(--nx-brand);border-color:var(--nx-brand);color:#fff;cursor:default;
}
.pagination>.disabled>a,.pagination>.disabled>span,.pagination>.disabled>a:hover{background:var(--nx-surface);border-color:var(--nx-line);color:var(--nx-faint);cursor:not-allowed}

/* ===== 下拉菜单 ===== */
.dropdown-menu{
  min-width:180px;padding:8px;margin:8px 0 0;border:1px solid var(--nx-line);
  border-radius:var(--nx-radius-sm);background:var(--nx-surface);
  box-shadow:var(--nx-shadow-lg);font-size:13px;
}
.dropdown-menu>li>a,.dropdown-item{
  display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:var(--nx-radius-xs);
  color:var(--nx-ink-soft);font-size:13px;line-height:1.4;white-space:nowrap;transition:background-color .14s,color .14s;
}
.dropdown-menu>li>a:hover,.dropdown-item:hover{background:var(--nx-brand-softer);color:var(--nx-brand);text-decoration:none}
.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover{background:var(--nx-brand);color:#fff}
.dropdown-menu>.divider,.dropdown-divider{height:1px;margin:6px 4px;background:var(--nx-line)}
.dropdown-header{padding:6px 12px;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:var(--nx-faint)}

/* ===== 弹窗 ===== */
.modal-content{border:1px solid var(--nx-line);border-radius:16px;background:var(--nx-surface);box-shadow:var(--nx-shadow-lg);overflow:hidden}
.modal-header{padding:18px 22px;border-bottom:1px solid var(--nx-line);background:var(--nx-surface-2)}
.modal-title{font-size:16.5px;font-weight:650;color:var(--nx-ink)}
.modal-body{padding:22px}
.modal-footer{padding:14px 22px;border-top:1px solid var(--nx-line);background:var(--nx-surface-2)}
.modal-footer .btn,.modal-footer .cg{margin-left:6px}
.close{float:right;font-size:22px;font-weight:400;line-height:1;color:var(--nx-faint);text-shadow:none;opacity:1;background:none;border:0;cursor:pointer;transition:color .15s}
.close:hover{color:var(--nx-ink)}
.modal-header .close{margin-top:-2px}
.modal-backdrop.in{opacity:.42}

/* ===== 提示 / 徽章 ===== */
.alert{position:relative;padding:13px 16px;border:1px solid var(--nx-line);border-left:4px solid var(--nx-info);border-radius:var(--nx-radius-sm);background:var(--nx-surface-2);color:var(--nx-ink-soft);font-size:13.5px;margin-bottom:16px}
/* 可关闭提示：右侧留白 + 关闭按钮绝对定位，避免 relative+负 right 溢出容器 */
.alert-dismissible,.ps{padding-right:44px}
.alert-dismissible .close,.ps .close,.anq .alert-dismissible .close,.anq .ps .close{position:absolute;top:10px;right:12px;float:none}
.alert-success{border-left-color:var(--nx-success);background:#eefaf2;color:#1c6b40}
.alert-info{border-left-color:var(--nx-info);background:#eef6fb;color:#256a8f}
.alert-warning{border-left-color:var(--nx-warn);background:#fdf5ea;color:#8a5a1a}
.alert-danger,.alert-error{border-left-color:var(--nx-danger);background:#fdeef1;color:#9c3245}
.label,.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:600;line-height:1.6;letter-spacing:.2px}
.label-default,.badge-default{background:#eef2f8;color:var(--nx-muted)}
.label-primary,.badge-primary{background:var(--nx-brand-soft);color:var(--nx-brand)}
.label-success,.badge-success{background:#e3f6ec;color:#1c7a49}
.label-warning,.badge-warning{background:#fbf0dd;color:#96601c}
.label-danger,.badge-danger,.badge-pill{background:#fbe6ea;color:#b23a4d}
.label-info,.badge-info{background:#e4f1f9;color:#2b7196}

/* ===== 选项卡 ===== */
.nav-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 20px;padding:0;border-bottom:1px solid var(--nx-line);list-style:none}
.nav-tabs>li{float:none;margin-bottom:-1px}
.nav-tabs>li>a{
  display:block;padding:10px 16px;border:0;border-bottom:2px solid transparent;
  border-radius:0;background:none;color:var(--nx-muted);font-size:13.5px;font-weight:550;transition:color .15s,border-color .15s;
}
.nav-tabs>li>a:hover{background:none;color:var(--nx-brand);border-bottom-color:#c5d7f5}
.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{
  background:none;color:var(--nx-brand);border:0;border-bottom:2px solid var(--nx-brand);font-weight:650;cursor:default;
}
/* 首页动态选项卡：base.css 用 #status_tab{display:inline-block}（ID 特异性）覆盖通用 flex，
   而 .nav-tabs>li{float:none} 又取消了左浮动，导致 li 纵向堆叠。此处用同 ID 特异性恢复横向 flex。 */
#status_tab{display:flex;align-items:stretch;gap:2px;background:var(--nx-surface);border-color:var(--nx-line);border-radius:var(--nx-radius) var(--nx-radius) 0 0}
#status_tab li{float:none;margin:0!important}
#status_tab li a{display:flex;align-items:center;border:0!important;color:var(--nx-muted);font-size:13.5px;font-weight:550;max-width:150px}
#status_tab li a:hover{color:var(--nx-brand)}
#status_tab li.active a,#status_tab li.active a:hover,#status_tab li.active a:focus{color:var(--nx-brand);font-weight:650;background:none;box-shadow:inset 0 -2px 0 var(--nx-brand)}
.tab-content{padding-top:4px}

/* ===== 导航栏（未套 nx 的旧页） ===== */
.ck.app-navbar:not(.nx-navbar){background:var(--nx-surface);border:0;border-bottom:1px solid var(--nx-line);box-shadow:0 2px 14px rgba(24,52,92,.04)}
.ck.app-navbar:not(.nx-navbar) .e{color:var(--nx-ink);font-weight:700}
.ck.app-navbar:not(.nx-navbar) .navbar-nav>li>a{color:var(--nx-muted)}
.ck.app-navbar:not(.nx-navbar) .navbar-nav>li>a:hover{color:var(--nx-brand)}

/* ===== 回到顶部 ===== */
#goTopBtn{display:grid;place-items:center;width:40px;height:40px;color:var(--nx-muted);background:var(--nx-surface);border:1px solid var(--nx-line);border-radius:12px;box-shadow:var(--nx-shadow);cursor:pointer;transition:color .16s,border-color .16s,transform .16s}
#goTopBtn:hover{color:var(--nx-brand);border-color:#bccff0;transform:translateY(-2px)}

/* ===== 杂项 ===== */
.tag,.tags a{display:inline-block;background:var(--nx-brand-soft);color:var(--nx-brand);border-radius:6px;font-size:11.5px;padding:3px 9px;margin:2px;transition:background-color .15s}
.tag:hover,.tags a:hover{background:#dbe8ff;text-decoration:none}
.gray,.text-gray{color:var(--nx-muted)}
.blue{color:var(--nx-brand)}
.green{color:var(--nx-success)}
.orange{color:var(--nx-warn)}
.img-circle,.circle{border-radius:50%}
.well{padding:18px;background:var(--nx-surface-2);border:1px solid var(--nx-line);border-radius:var(--nx-radius)}
.breadcrumb{padding:9px 16px;margin-bottom:18px;background:var(--nx-surface-2);border:1px solid var(--nx-line);border-radius:var(--nx-radius-sm);font-size:12.5px}
.breadcrumb>li+li:before{content:"/";color:var(--nx-faint);margin:0 8px}
.breadcrumb>.active{color:var(--nx-muted)}
.page-header{padding-bottom:12px;margin:22px 0 20px;border-bottom:1px solid var(--nx-line)}
blockquote{padding:6px 0 6px 16px;margin:0 0 18px;border-left:3px solid #c5d7f5;color:var(--nx-muted)}
pre{padding:14px 16px;background:var(--nx-surface-2);border:1px solid var(--nx-line);border-radius:var(--nx-radius-sm);color:var(--nx-ink-soft);font-size:13px;overflow:auto}
code{padding:2px 6px;background:var(--nx-brand-soft);border-radius:5px;color:var(--nx-brand-700);font-size:88%}
kbd{padding:2px 6px;background:var(--nx-ink);border-radius:5px;color:#fff;font-size:85%}
::selection{background:rgba(40,98,222,.16);color:var(--nx-ink)}

/* 细滚动条 */
*{scrollbar-width:thin;scrollbar-color:#c6d3e6 transparent}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#cdd9ea;border:2px solid transparent;border-radius:9px;background-clip:content-box}
*::-webkit-scrollbar-thumb:hover{background:#b3c4dd;background-clip:content-box}
*::-webkit-scrollbar-track{background:transparent}

/* ===== 内容 / 文章详情页 ===== */
body.ang .hl>.b{
  background:var(--nx-surface);border:1px solid var(--nx-line);
  border-radius:var(--nx-radius);box-shadow:var(--nx-shadow-sm);
  padding:30px 34px;margin-bottom:22px;
}
body.ang .blog-title,body.ang .blog-title:hover{
  color:var(--nx-ink);font-size:26px;font-weight:700;line-height:1.45;
  text-align:center;letter-spacing:-.01em;margin:2px 0 16px;
}
body.ang .art-info{
  text-align:center;color:var(--nx-muted);font-size:13px;
  padding-bottom:18px;margin-bottom:24px;border-bottom:1px solid var(--nx-line);
}
body.ang .art-info a{color:var(--nx-brand)}
body.ang .blog-content{font-size:15.5px;line-height:1.95;color:var(--nx-ink-soft)}
body.ang .blog-content h1,body.ang .blog-content h2,body.ang .blog-content h3,body.ang .blog-content h4{
  color:var(--nx-ink);margin:1.6em 0 .7em;line-height:1.4;
}
body.ang .blog-content h1{font-size:23px}
body.ang .blog-content h2{font-size:20px;padding-bottom:.3em;border-bottom:1px solid var(--nx-line)}
body.ang .blog-content h3{font-size:17.5px}
body.ang .blog-content p{margin:0 0 1.1em}
body.ang .blog-content img{max-width:100%;height:auto;border-radius:10px;margin:.6em 0}
body.ang .blog-content a{color:var(--nx-brand);border-bottom:1px solid rgba(40,98,222,.3)}
body.ang .blog-content a:hover{border-bottom-color:var(--nx-brand)}
body.ang .blog-content ul,body.ang .blog-content ol{padding-left:1.6em;margin:0 0 1.1em}
body.ang .blog-content li{margin:.3em 0}
body.ang .blog-content blockquote{border-left:3px solid #c5d7f5;color:var(--nx-muted);margin:0 0 1.2em}
body.ang .blog-content pre{background:var(--nx-surface-2);border:1px solid var(--nx-line);border-radius:10px;padding:16px 18px;overflow:auto;margin:0 0 1.3em}
body.ang .blog-content table{width:100%;border-collapse:collapse;margin:0 0 1.3em;font-size:14px}
body.ang .blog-content th,body.ang .blog-content td{border:1px solid var(--nx-line);padding:9px 12px;text-align:left}
body.ang .blog-content th{background:var(--nx-surface-2);font-weight:600}
body.ang .view-times,body.ang .share-to{color:var(--nx-faint);font-size:12.5px}
body.ang .div-lrt{padding-top:14px;border-top:1px solid var(--nx-line);margin-top:8px}

/* 尊重减少动效偏好 */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
