@charset "utf-8";
/**
 * legacy-common.css — legacy 公开页公共样式（唯一真相）
 * ============================================================================
 * 背景：legacy 下除 modules/ 外的公开页（cust/*、bm、ground、main、meeting）
 *       以及 resources/views/training_records.php 各自内联了一整套 <style>，
 *       其中 :root 令牌 8 份、* / body 重置 8 份、.form-control 5 份（6 种写法）、
 *       --primary 主色 3 种取值、字体 Segoe UI 与 PingFang 并存 —— 重复且互相冲突。
 *
 * 约定（2026-09-10 统一）：
 *   1. 本文件只承载「跨页面共享」的样式：令牌 / 重置 / 链接 / 容器 / Bootstrap 主色
 *      统一层 / 表单控件 / 主按钮 / 提示条 / 报名卡片 / 入场动画。
 *   2. 页面私有、带作用域前缀的样式（.gc-wrap、.mtg-form、.bind-container、
 *      .login-container、.bm-panel 等）一律保留在原页面，不进本文件。
 *   3. 顺序要求：<link> 必须放在 Bootstrap CDN 之后、页面内联 <style> 之前。
 *      这样本文件可覆盖 Bootstrap 默认，而页面内联样式仍可覆盖本文件（用于微调）。
 *   4. 主色统一为源力品牌蓝 #1664ff / hover #0055ff；字体统一 PingFang SC 系列。
 */

/* ===== 1. 设计令牌（源力规范 + 旧页 --primary 系列别名） ==================== */
:root {
    /* —— 源力 --color-* 系列（主力） —— */
    --color-primary:#1664ff;
    --color-primary-hover:#0055ff;
    --color-primary-bg:#f3f7ff;
    --color-text-1:#0c0d0e;
    --color-text-2:#42464e;
    --color-text-3:#737a87;
    --color-text-4:#c7ccd6;
    --color-bg-page:#f6f8fa;
    --color-bg-white:#ffffff;
    --color-border:#dde2e9;
    --color-border-2:#eaedf1;
    --color-danger:#d7312a;
    --color-success:#2a814b;
    --color-warning:#bd7e00;

    /* —— 旧页 --primary 系列：统一映射到源力值，避免不同页主色不一致 —— */
    --primary:#1664ff;
    --primary-dark:#0055ff;
    --primary-light:#4B86F8;
    --secondary:#6c757d;
    --success:#2a814b;
    --info:#3182ce;
    --warning:#d69e2e;
    --danger:#d7312a;
    --light:#f7fafc;
    --dark:#1a202c;
    --card-bg:rgba(255,255,255,.95);
    --border-color:#e2e8f0;
    --wechat:#07C160;

    /* —— 字体 / 尺寸 / 间距 —— */
    --font-family:"PingFang SC","Microsoft YaHei","Roboto","Helvetica Neue",Arial,sans-serif;
    --font-size-xs:12px;
    --font-size-sm:13px;
    --font-size-md:14px;
    --font-size-lg:16px;
    --font-size-title:24px;
    --font-weight-medium:500;
    --font-weight-semibold:600;
    --line-height:1.5;
    --radius-sm:4px;
    --radius-md:8px;
    --radius-full:9999px;
    --space-2:8px;
    --space-3:12px;
    --space-4:16px;
    --space-5:20px;
    --space-6:24px;
    --space-8:32px;
    --space-12:48px;
    --space-16:64px;
    --maxw:1180px;
    --shadow-sm:0 1px 2px rgba(12,13,14,.05);
    --shadow-md:0 4px 12px rgba(12,13,14,.08);
}

/* ===== 2. 全局重置 ======================================================== */
* { margin:0; padding:0; box-sizing:border-box; }

/* ===== 3. body 基础（页面只需再写布局相关的 padding / flex / 背景） ======== */
body {
    font-family:var(--font-family);
    background:var(--color-bg-page);
    color:var(--color-text-1);
    line-height:var(--line-height);
    -webkit-font-smoothing:antialiased;
}

/* ===== 4. 链接：全站统一无下划线 ========================================== */
a { text-decoration:none; color:inherit; }

/* ===== 5. 容器 ============================================================ */
.container { width:100%; max-width:var(--maxw); margin:0 auto; padding:0 var(--space-6); }
@media (max-width:767px) {
    .container { padding:0 var(--space-4); }
}

/* ===== 6. 源力规范：统一 Bootstrap 主色 =================================== */
.btn-primary { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
.btn-primary:hover,
.btn-primary:focus { background:var(--color-primary-hover); border-color:var(--color-primary-hover); color:#fff; }
.btn-primary:disabled,
.btn-primary.disabled { background:var(--color-primary); border-color:var(--color-primary); opacity:.65; }
.btn-outline-primary { color:var(--color-primary); border-color:var(--color-primary); }
.btn-outline-primary:hover { background:var(--color-primary-bg); color:var(--color-primary); border-color:var(--color-primary); }
.text-primary { color:var(--color-primary)!important; }
.link-primary { color:var(--color-primary)!important; }
.form-check-input:checked { background-color:var(--color-primary); border-color:var(--color-primary); }

/* ===== 7. 表单控件 ======================================================== */
.form-group { position:relative; margin-bottom:var(--space-5); }
.form-label {
    display:block; margin-bottom:6px;
    font-size:var(--font-size-sm); font-weight:var(--font-weight-medium);
    color:var(--color-text-2);
}
.form-label.required::after { content:' *'; color:var(--color-danger); }

.form-control,
.form-select {
    width:100%; height:48px; padding:0 var(--space-4);
    border:1px solid var(--color-border); background:#fff; border-radius:var(--radius-sm);
    font-size:var(--font-size-md); color:var(--color-text-1); font-family:inherit;
    transition:border-color .15s, box-shadow .15s;
}
.form-control:focus,
.form-select:focus { outline:none; border-color:var(--color-primary); box-shadow:0 0 0 2px var(--color-primary-bg); }
textarea.form-control { height:auto; padding:var(--space-3) var(--space-4); resize:vertical; }
.form-control::placeholder { color:#a0aec0; }

/* 左侧图标：.input-icon 恒为输入框的前置兄弟节点，故用相邻选择器补左内边距 */
.input-icon {
    position:absolute; left:16px; top:50%; transform:translateY(-50%);
    color:var(--color-primary); opacity:.7; font-size:18px; z-index:10; line-height:1;
}
.input-icon + .form-control { padding-left:46px; }

/* 右侧密码显隐 */
.password-toggle {
    position:absolute; right:16px; top:50%; transform:translateY(-50%);
    color:var(--color-text-3); cursor:pointer; z-index:10; font-size:18px; line-height:1;
}
.password-toggle:hover { color:var(--color-primary); }

@media (max-width:576px) {
    .form-control,
    .form-select { padding:0 14px; }
    .input-icon + .form-control { padding-left:44px; }
    .password-toggle { right:14px; }
}

/* ===== 8. 主操作按钮（登录 / 注册 / 提交，各页命名统一覆盖） ============== */
.btn-login,
.btn-submit,
.btn-register {
    width:100%; height:48px; margin-top:var(--space-3);
    background:var(--color-primary); border:none; border-radius:var(--radius-sm);
    color:#fff; font-size:var(--font-size-lg); font-weight:var(--font-weight-medium);
    letter-spacing:1px; cursor:pointer;
    display:inline-flex; align-items:center; justify-content:center; gap:6px;
    transition:background .2s, box-shadow .2s;
}
.btn-login:hover,
.btn-submit:hover,
.btn-register:hover { background:var(--color-primary-hover); }
.btn-login:disabled,
.btn-submit:disabled,
.btn-register:disabled { opacity:.65; cursor:not-allowed; }

/* ===== 9. 提示条 ========================================================== */
.alert {
    border-radius:var(--radius-sm); padding:10px var(--space-4);
    font-size:var(--font-size-md); margin-bottom:var(--space-4);
    border:1px solid transparent;
}
.alert-success { background:#eef8f1; color:#1e6f3e; border-color:#c8e6c9; }
.alert-danger,
.alert-error  { background:#fdf5f5; color:var(--color-danger); border-color:#ffd6d4; }

/* 独立提示条（不带 .alert 语义，颜色由内联 style 指定） */
.alert-msg { border-radius:var(--radius-sm); padding:12px 16px; margin-bottom:16px; font-size:var(--font-size-md); }

/* 必填星号 */
.req { color:var(--color-danger); }

/* ===== 10. 报名卡片（bm / meeting 共用） ================================== */
/* 注：作用域限定 .reg-card，避免与 profile 页的 .card-header 冲突 */
.reg-card {
    background:#fff; border-radius:8px; box-shadow:0 25px 60px rgba(0,0,0,.2);
    max-width:720px; width:100%; overflow:hidden;
}
.reg-card .card-header {
    background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-hover) 100%);
    color:#fff; padding:36px; text-align:center;
}
.reg-card .card-header h1 { font-weight:700; margin-bottom:10px; font-size:1.9rem; }
.reg-card .card-header .lead { opacity:.95; font-weight:300; font-size:1.05rem; }
.reg-card .card-body { padding:40px; }

/* ===== 11. cust 登录 / 注册卡共用件 ==================================== */
.bm-logo {
    display:inline-flex; justify-content:center; align-items:center;
    width:64px; height:64px; border-radius:16px;
    background:var(--color-primary-bg); color:var(--color-primary);
    font-size:28px; margin-bottom:var(--space-4);
}
.bm-card h1 { font-size:1.5rem; font-weight:var(--font-weight-semibold); margin-bottom:6px; }
.bm-card .sub { color:var(--color-text-3); font-size:var(--font-size-md); margin-bottom:var(--space-5); }
.bm-foot,
.bm-footer {
    margin-top:var(--space-5); padding-top:var(--space-5);
    border-top:1px solid var(--color-border);
    text-align:center; font-size:var(--font-size-md); color:var(--color-text-3);
}
.bm-foot a,
.bm-footer a { color:var(--color-primary); text-decoration:none; font-weight:var(--font-weight-medium); }
.bm-foot a:hover,
.bm-footer a:hover { text-decoration:underline; }
.bm-sep { margin:0 var(--space-2); color:var(--color-border); }

/* ===== 12. 入场动画（各页 fadeInUp 定义统一为一份） ======================= */
@keyframes fadeInUp {
    from { opacity:0; transform:translateY(30px); }
    to   { opacity:1; transform:translateY(0); }
}
