/* 前台唯一样式入口：先引入模块，再定义低优先级的全局基础样式。 */
@import url("../../js/layui/css/layui.css");
@import url("font-icon/iconfont.css");
@import url("layout.css?v=20261015-home-3");
@import url("index.css?v=20261015-home-3");
@import url("footer.css");
@import url("auth.css?v=20261015-wechat-2");
@import url("article.css");
@import url("product.css");
@import url("cases.css");
@import url("course.css");
@import url("goods.css");
@import url("pages.css");
@import url("user.css");
@import url("vip.css");
@import url("error.css");

/* 全局主题、字体与文档基础设置。 */
:root {
    --site-blue: #1769d2;
    --site-ink: #182235;
    --site-muted: #637083;
    --site-surface: #fff;
    --site-background: #f5f8fc;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
main, section, article, aside, nav, header, footer { display: block; }
img { max-width: 100%; border: 0; vertical-align: middle; }
button, input, select, textarea { margin: 0; font: inherit; }
button, input[type="button"], input[type="submit"] { cursor: pointer; }
button:disabled, input:disabled { cursor: not-allowed; }
button { text-transform: none; }
textarea { resize: vertical; }
[hidden] { display: none !important; }
h1, h2, h3, h4 { margin: 20px 0 10px; font-weight: 500; line-height: 1.25; }
h1 { font-size: 36px; }
h2 { font-size: 30px; }
h3 { font-size: 24px; }
h4 { font-size: 18px; }
p { margin: 0 0 10px; }
ul, ol { margin: 0 0 10px; padding-left: 24px; }
label { display: inline-block; margin-bottom: 5px; }
body {
    margin: 0;
    padding: 0;
    color: #333;
    background: transparent;
    font-family: "Helvetica Neue", "Microsoft YaHei", Arial, sans-serif;
    font-size: 16px;
    line-height: 1.5;
}
/* 带固定导航的页面预留顶部空间；登录 iframe 中没有导航。 */
body:has(> .site-header) { padding-top: 72px; }
:where(a) { color: #333; text-decoration: none; }
:where(a:hover) { color: #1769d2; }
a:focus-visible { outline: 3px solid #78aef5; outline-offset: 3px; }

/* 共享控件使用 :where，便于各业务模块覆盖，而不受 @import 顺序影响。 */
/* 公共登录及旧表单仍使用这些类名。 */
:where(.form-group) { margin-bottom: 15px; }
:where(.form-control) { display: block; width: 100%; height: 36px; padding: 6px 12px; border: 1px solid #c9d4e3; border-radius: 4px; background: #fff; color: #34435a; font-size: 14px; line-height: 1.5; transition: border-color .15s, box-shadow .15s; }
:where(.form-control:focus) { border-color: #1769d2; outline: 0; box-shadow: 0 0 0 3px rgba(23, 105, 210, .12); }
:where(.form-control:disabled, .form-control[readonly]) { background: #f2f4f7; color: #738096; }
:where(textarea.form-control) { height: auto; }
:where(.input-lg, .input-group-lg > .form-control) { height: 46px; padding: 10px 16px; font-size: 18px; }
:where(.input-group) { display: flex; align-items: stretch; width: 100%; }
:where(.input-group > .form-control) { flex: 1; width: 0; min-width: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }
:where(.input-group-addon) { display: flex; align-items: center; justify-content: center; padding: 6px 12px; border: 1px solid #c9d4e3; border-left: 0; border-radius: 0 4px 4px 0; background: #f2f4f7; color: #536278; font-size: 14px; white-space: nowrap; }
:where(.input-group-lg > .input-group-addon) { font-size: 18px; }
:where(.btn) { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; border: 1px solid transparent; border-radius: 4px; font-size: 14px; font-weight: 500; line-height: 1.5; text-align: center; vertical-align: middle; cursor: pointer; }
:where(.btn-primary) { border-color: #1769d2; background: #1769d2; color: #fff; }
:where(.btn-primary:hover, .btn-primary:focus-visible) { border-color: #1255aa; background: #1255aa; color: #fff; }
:where(.btn-lg) { padding: 10px 20px; font-size: 18px; }
:where(.btn-block) { display: flex; width: 100%; }
:where(.btn:disabled, .btn.disabled) { opacity: .6; cursor: not-allowed; }
:where(.btn.disabled) { pointer-events: none; }
:where(.panel-body) { padding: 15px; }
:where(.page-header) { margin: 32px 0 20px; padding-bottom: 12px; border-bottom: 1px solid #e5eaf1; }

/* 会员与积分数据表。 */
:where(.table) { width: 100%; margin-bottom: 20px; border-collapse: collapse; border-spacing: 0; font-size: 14px; }
:where(.table > thead > tr > th, .table > tbody > tr > th, .table > tbody > tr > td, .table > tfoot > tr > td) { padding: 10px 12px; border-bottom: 1px solid #e5eaf1; text-align: left; vertical-align: top; }
:where(.table > thead > tr > th) { background: #f7f9fc; font-weight: 600; }
:where(.table-bordered) { border: 1px solid #e5eaf1; }
:where(.table-bordered > thead > tr > th, .table-bordered > tbody > tr > th, .table-bordered > tbody > tr > td, .table-bordered > tfoot > tr > td) { border: 1px solid #e5eaf1; }
:where(.table-hover > tbody > tr:hover) { background: #f7f9fc; }
:where(.table-responsive) { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
:where(.table-responsive > .table) { margin-bottom: 0; }
:where(.table .text-center) { text-align: center; }

/* ThinkPHP 输出的分页标记。 */
:where(.pagination) { display: flex; flex-wrap: wrap; gap: 5px; margin: 24px 0; padding: 0; list-style: none; }
:where(.pagination > li) { list-style: none; }
:where(.pagination > li > a, .pagination > li > span) { display: flex; min-width: 36px; min-height: 36px; align-items: center; justify-content: center; padding: 6px 10px; border: 1px solid #d8e0eb; border-radius: 4px; background: #fff; color: #1769d2; }
:where(.pagination > li > a:hover) { border-color: #1769d2; background: #edf4ff; }
:where(.pagination > .active > span, .pagination > .active > a) { border-color: #1769d2; background: #1769d2; color: #fff; }
:where(.pagination > .disabled > span) { background: #f7f9fc; color: #99a4b5; cursor: not-allowed; }

:where(.text-center) { text-align: center; }
:where(.img-responsive) { display: block; max-width: 100%; height: auto; }
:where(.center-block) { display: block; margin-right: auto; margin-left: auto; }
:where(.clearfix)::after { display: block; clear: both; content: ""; }

/* 通用空状态、校验提示和富文本展示。 */
.empty-state { margin: 0; padding: 24px; border: 1px dashed #c9d4e3; border-radius: 8px; color: var(--site-muted); background: #fff; }
.error { color: #f00; }
.form-control.error { border-color: #f00; }
.article-content { overflow-wrap: anywhere; line-height: 1.85; }
.article-content img, .article-content video { max-width: 100%; height: auto; }
.article-content iframe { max-width: 100%; }
.article-content table { max-width: 100%; }



