/* ============================================================
   表单大师（FormReg）前台样式
   ============================================================ */
:root{
    /* ===== V2 设计系统 · 现代编辑部极简（2026 改版）=====
       主色=墨黑（按钮/强调），辅助色=朱砂（编号/状态/焦点），
       靠 1px 线与间距分组，不用渐变、不用阴影堆叠。 */
    --fr-primary:#111111; --fr-primary-deep:#000000; --fr-primary-soft:#f4f4f2;
    --fr-violet:#d4442e;
    --fr-accent:#d4442e; --fr-accent-soft:#fdf3f0;
    --fr-ok:#0f7a5a; --fr-ok-soft:#eef6f2; --fr-ok-deep:#0b5b43;
    --fr-warn:#96690f; --fr-warn-soft:#faf5e9; --fr-warn-deep:#784f0b;
    --fr-danger:#c0392b; --fr-danger-soft:#fbeff0; --fr-danger-deep:#992b20;
    --fr-ink:#111111; --fr-text:#1f1f1f; --fr-text2:#4d4d4d; --fr-muted:#8a8a8a;
    --fr-border:#e3e2dd; --fr-border2:#efeee9; --fr-card:#ffffff;
    --fr-bg:#ffffff;
    --fr-soft:#f7f7f5; --fr-rule:#111111;
    --fr-grad:#111111;            /* 兼容旧写法：实心墨黑（原为主渐变） */
    --fr-grad-hero:#ffffff;       /* 兼容旧写法：页头改白底（原为深色渐变） */
    --fr-radius:2px; --fr-radius-sm:2px;
    --fr-shadow:none;
    --fr-shadow-lg:0 16px 40px rgba(17,17,17,.10);
    --fr-tz:-.02em;               /* 标题字距 */
    --fr-mz:.18em;                /* 小标签字距 */
    --fr-font:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",Roboto,sans-serif;
    --fr-mono:"SF Mono",ui-monospace,Menlo,Consolas,monospace;
}
/* 兼容：旧版遗留的青色系浅底/描边，统一收敛到新中性色 */
:root{
    --fr-old-blue-1:#bae6fd; --fr-old-blue-2:#7dd3fc; --fr-old-blue-3:#f7fcff;
    --fr-old-blue-4:#0369a1; --fr-old-blue-5:#075985;
}
.fr-page *{ box-sizing:border-box; }
.fr-page{
    margin:0; padding:0 0 40px; background:var(--fr-bg); color:var(--fr-text);
    font:14px/1.7 var(--fr-font); -webkit-font-smoothing:antialiased; min-height:100vh;
    background-image:radial-gradient(1000px 460px at 12% -6%,rgba(14,165,233,.10),transparent 60%),
                     radial-gradient(900px 420px at 92% -10%,rgba(99,102,241,.08),transparent 55%);
}
.fr-page a{ color:var(--fr-primary); text-decoration:none; }
.fr-page img{ max-width:100%; }
.fr-wrap{ max-width:1000px; margin:0 auto; padding:0 16px; }

/* 顶部 */
.fr-head{ background:var(--fr-grad-hero); color:#fff; box-shadow:0 6px 22px rgba(15,23,42,.16); }
.fr-head-inner{ max-width:1000px; margin:0 auto; padding:0 16px; display:flex; align-items:center; gap:14px; height:64px; }
.fr-logo{ display:inline-flex; align-items:center; gap:10px; font-size:17px; font-weight:700; color:#fff; letter-spacing:.5px; }
.fr-logo i{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; border-radius:11px; background:var(--fr-grad); box-shadow:0 4px 12px rgba(14,165,233,.45); }
.fr-head-nav{ margin-left:auto; display:flex; align-items:center; gap:4px; }
.fr-head-nav a{ display:inline-flex; align-items:center; gap:6px; height:34px; padding:0 13px; border-radius:9px; color:#dbeafe; font-size:13.5px; transition:.16s; }
.fr-head-nav a:hover{ background:rgba(255,255,255,.14); color:#fff; }
.fr-head-nav a.on{ background:rgba(255,255,255,.20); color:#fff; }
.fr-avatar{ width:28px; height:28px; border-radius:50%; object-fit:cover; border:2px solid rgba(255,255,255,.6); }

/* Hero */
.fr-hero{ background:var(--fr-grad-hero); color:#fff; padding:0 0 42px; }
.fr-hero-inner{ max-width:1000px; margin:0 auto; padding:26px 16px 0; }
.fr-hero h1{ margin:0 0 10px; font-size:26px; letter-spacing:1px; color:#fff; }
.fr-hero p{ margin:0; color:#d7ecf7; max-width:720px; line-height:1.9; }
.fr-hero-tags{ margin-top:14px; display:flex; flex-wrap:wrap; gap:8px; }
.fr-hero-tag{ padding:3px 12px; border-radius:20px; font-size:12px; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); color:#eaf6ff; }

/* 卡片 */
.fr-card{ background:var(--fr-card); border:1px solid var(--fr-border); border-radius:var(--fr-radius); box-shadow:var(--fr-shadow); margin-bottom:16px; overflow:hidden; }
.fr-card-hd{ display:flex; align-items:center; gap:8px; padding:14px 18px; font-size:15px; font-weight:700; color:var(--fr-ink); border-bottom:1px solid var(--fr-border2); }
.fr-card-hd i{ color:var(--fr-primary); }
.fr-card-bd{ padding:18px; }
.fr-pull-up{ margin-top:-30px; }

/* 项目卡片网格 */
.fr-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.fr-item{ background:#fff; border:1px solid var(--fr-border); border-radius:var(--fr-radius); box-shadow:var(--fr-shadow); padding:18px; display:flex; flex-direction:column; transition:.18s; }
.fr-item:hover{ transform:translateY(-2px); box-shadow:var(--fr-shadow-lg); border-color:#bae6fd; }
.fr-item h3{ margin:0 0 6px; font-size:16px; color:var(--fr-ink); }
.fr-item p{ margin:0 0 14px; color:var(--fr-text2); font-size:13px; line-height:1.8; flex:1; }
.fr-item-meta{ display:flex; align-items:center; gap:10px; margin-bottom:12px; font-size:12.5px; color:var(--fr-muted); }
.fr-item-act{ display:flex; align-items:center; gap:10px; }
.fr-badge{ display:inline-block; padding:1px 10px; border-radius:20px; font-size:12px; line-height:20px; font-weight:500; }
.fr-b-wait{ background:var(--fr-warn-soft); color:var(--fr-warn-deep); }
.fr-b-ok{ background:var(--fr-ok-soft); color:var(--fr-ok-deep); }
.fr-b-danger{ background:var(--fr-danger-soft); color:var(--fr-danger-deep); }
.fr-b-done{ background:var(--fr-primary-soft); color:var(--fr-primary-deep); }
.fr-b-gray{ background:#f1f5f9; color:var(--fr-text2); }
.fr-b-fee{ background:#fff7ed; color:#c2410c; }
.fr-b-paid{ background:#ecfdf5; color:#047857; }

/* 按钮 */
.fr-btn{ display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:9px 20px; border:1px solid transparent; border-radius:var(--fr-radius-sm); font-size:14px; cursor:pointer; transition:.16s; white-space:nowrap; }
/* 说明：.fr-page a 的链接色会盖掉 .fr-btn-primary 的白字，这里提高选择器优先级，避免 a 版主按钮出现「蓝底蓝字」 */
.fr-btn-primary, .fr-page a.fr-btn-primary{ color:#fff; background:var(--fr-grad); box-shadow:0 4px 12px rgba(14,165,233,.30); }
.fr-btn-primary:hover, .fr-page a.fr-btn-primary:hover{ filter:brightness(1.06); color:#fff; }
.fr-btn-default{ color:var(--fr-text); background:#fff; border-color:var(--fr-border); }
.fr-btn-default:hover{ color:var(--fr-primary); border-color:#bae6fd; background:var(--fr-primary-soft); }
.fr-btn-sm{ padding:6px 14px; font-size:13px; border-radius:8px; }
.fr-btn-lg{ padding:12px 42px; font-size:15px; border-radius:11px; }
.fr-btn-block{ width:100%; }
.fr-btn[disabled]{ opacity:.6; cursor:not-allowed; }

/* 表单字段 */
.fr-field{ margin-bottom:18px; }
.fr-field-label{ display:block; margin-bottom:7px; font-size:13.5px; color:var(--fr-ink); font-weight:600; }
.fr-field-label em{ color:var(--fr-danger); font-style:normal; margin-left:2px; }
.fr-field-tip{ margin:6px 0 0; font-size:12.5px; color:var(--fr-muted); line-height:1.7; }
.fr-in,.fr-ta,.fr-sel{ width:100%; border:1px solid var(--fr-border); border-radius:var(--fr-radius-sm); padding:10px 13px; font-size:14px; color:var(--fr-text); background:#fff; transition:.15s; font-family:inherit; }
.fr-in:focus,.fr-ta:focus,.fr-sel:focus{ outline:none; border-color:var(--fr-primary); box-shadow:0 0 0 3px rgba(14,165,233,.13); }
.fr-ta{ min-height:96px; resize:vertical; }
.fr-choices{ display:flex; flex-wrap:wrap; gap:10px 18px; }
.fr-choice{ display:inline-flex; align-items:center; gap:6px; cursor:pointer; padding:7px 14px; border:1px solid var(--fr-border); border-radius:9px; transition:.15s; }
.fr-choice:hover{ border-color:#bae6fd; background:#f7fcff; }
.fr-choice input{ margin:0; }
.fr-switch{ display:inline-flex; align-items:center; gap:8px; cursor:pointer; }
.fr-field-html{ padding:12px 14px; background:var(--fr-primary-soft); border-radius:9px; color:#075985; font-size:13px; line-height:1.9; }

/* 模板可用的通用元素 */
.fr-submit-row{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:6px; }
.fr-form-tips{ font-size:13px; color:var(--fr-text2); line-height:2; }
.fr-form-tips b{ color:var(--fr-ink); }
.fr-tpl-h2{ margin:0 0 10px; font-size:22px; color:var(--fr-ink); letter-spacing:.5px; }
.fr-grid2{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 18px; }
.fr-grid2 .fr-field{ margin-bottom:18px; }
@media (max-width:820px){ .fr-grid2{ grid-template-columns:minmax(0,1fr); } }

/* 上传 */
.fr-up{ border:1px dashed var(--fr-border); border-radius:var(--fr-radius-sm); padding:12px; background:#fbfdff; }
.fr-up-list{ display:flex; flex-wrap:wrap; gap:10px; }
.fr-up-item{ position:relative; display:inline-flex; align-items:center; gap:8px; }
.fr-up-img{ width:84px; height:84px; }
.fr-up-img img{ width:84px; height:84px; object-fit:cover; border-radius:9px; border:1px solid var(--fr-border); }
.fr-up-file{ padding:8px 34px 8px 12px; background:#f1f7fd; border:1px solid var(--fr-border); border-radius:9px; color:var(--fr-text); font-size:13px; max-width:260px; overflow:hidden; }
.fr-up-file span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fr-up-del{ position:absolute; top:-7px; right:-7px; width:20px; height:20px; line-height:18px; text-align:center; border-radius:50%; background:var(--fr-danger); color:#fff; font-size:13px; cursor:pointer; font-weight:700; }
.fr-up-add{ display:inline-flex; align-items:center; gap:6px; margin-top:10px; padding:8px 16px; border:1px dashed #bae6fd; border-radius:9px; color:var(--fr-primary); background:#f7fcff; cursor:pointer; font-size:13px; }

/* 回执结果 */
.fr-receipt{ text-align:center; padding:22px 16px 8px; }
.fr-receipt-no{ display:inline-block; margin:12px 0 6px; padding:12px 26px; border-radius:12px; background:var(--fr-primary-soft); border:1px dashed #7dd3fc; color:#0369a1; font-family:Consolas,Monaco,monospace; font-size:24px; font-weight:700; letter-spacing:2px; word-break:break-all; }
.fr-receipt-tip{ color:var(--fr-text2); font-size:13px; line-height:1.9; }
.fr-alert{ padding:11px 15px; border-radius:10px; font-size:13px; line-height:1.8; margin-bottom:16px; }
.fr-alert-info{ background:var(--fr-primary-soft); color:#075985; }
.fr-alert-warn{ background:var(--fr-warn-soft); color:#92400e; }
.fr-alert-danger{ background:var(--fr-danger-soft); color:#991b1b; }
.fr-alert-ok{ background:var(--fr-ok-soft); color:#065f46; }

/* 详情 dl */
.fr-dl{ display:flex; margin:0 0 13px; font-size:14px; }
.fr-dl:last-child{ margin-bottom:0; }
.fr-dl dt{ width:130px; flex-shrink:0; color:var(--fr-text2); }
.fr-dl dd{ margin:0; flex:1; min-width:0; color:var(--fr-text); word-break:break-word; }
.fr-d-img{ display:inline-block; margin:0 8px 8px 0; }
.fr-d-img img{ width:96px; height:96px; object-fit:cover; border-radius:10px; border:1px solid var(--fr-border); }
.fr-d-file{ display:inline-block; margin:0 10px 6px 0; }

/* 时间线 */
.fr-tl{ display:flex; flex-direction:column; gap:12px; }
.fr-tl-item{ display:flex; gap:10px; }
.fr-tl-av{ flex:none; width:36px; height:36px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; background:var(--fr-primary); font-size:14px; }
.fr-tl-item.fr-admin .fr-tl-av{ background:var(--fr-grad); }
.fr-tl-main{ flex:1; min-width:0; background:#f8fafc; border:1px solid var(--fr-border2); border-radius:11px; padding:10px 14px; }
.fr-tl-item.fr-admin .fr-tl-main{ background:#f0f9ff; border-color:#dbeafe; }
.fr-tl-meta{ font-size:12px; color:var(--fr-muted); margin-bottom:4px; }
.fr-tl-txt{ font-size:13.5px; color:var(--fr-text); white-space:pre-wrap; word-break:break-word; }

/* 列表 */
.fr-list{ display:flex; flex-direction:column; gap:12px; }
.fr-list-item{ border:1px solid var(--fr-border); border-radius:12px; padding:14px 16px; background:#fff; transition:.16s; }
.fr-list-item:hover{ border-color:#bae6fd; box-shadow:var(--fr-shadow); }
.fr-list-top{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.fr-list-top b{ color:var(--fr-ink); }
.fr-list-meta{ font-size:12.5px; color:var(--fr-muted); display:flex; flex-wrap:wrap; gap:14px; }

/* 分页 */
.fr-pager{ margin-top:18px; text-align:center; }
.fr-pager .pagination{ display:inline-flex; flex-wrap:wrap; gap:6px; list-style:none; margin:0; padding:0; }
.fr-pager .pagination li a,.fr-pager .pagination li span{ display:inline-block; min-width:34px; padding:6px 11px; border:1px solid var(--fr-border); border-radius:9px; background:#fff; color:var(--fr-text); font-size:13px; }
.fr-pager .pagination li.active span{ background:var(--fr-grad); color:#fff; border-color:transparent; }
.fr-pager .pagination li.disabled span{ color:#cbd5e1; }

/* 空状态 */
.fr-none{ padding:46px 20px; text-align:center; color:var(--fr-muted); }
.fr-none i{ display:block; font-size:36px; margin-bottom:10px; color:#cbd5e1; }

/* 标签页 */
.fr-tabs{ display:flex; gap:6px; padding:6px; background:#f1f5f9; border-radius:11px; margin-bottom:16px; }
.fr-tabs a{ flex:1; text-align:center; padding:9px 12px; border-radius:9px; color:var(--fr-text2); font-size:13.5px; }
.fr-tabs a.on{ background:#fff; color:var(--fr-primary-deep); font-weight:600; box-shadow:0 2px 8px rgba(15,23,42,.06); }

/* 页脚 */
.fr-foot{ text-align:center; color:var(--fr-muted); font-size:12.5px; padding:16px; }

/* 登录页 */
.fr-login-wrap{ max-width:420px; margin:34px auto 0; }
.fr-login-card{ background:#fff; border:1px solid var(--fr-border); border-radius:16px; box-shadow:var(--fr-shadow-lg); padding:28px 26px; }
.fr-login-card h2{ margin:0 0 6px; font-size:20px; color:var(--fr-ink); text-align:center; }
.fr-login-card .fr-sub{ text-align:center; color:var(--fr-muted); font-size:13px; margin-bottom:20px; }
.fr-login-alt{ text-align:center; margin-top:14px; font-size:13px; color:var(--fr-text2); }
.fr-code-row{ display:flex; gap:10px; }
.fr-code-row .fr-in{ flex:1; }
.fr-code-img{ width:112px; height:42px; border-radius:9px; border:1px solid var(--fr-border); cursor:pointer; object-fit:cover; }

/* ---------------- 回执查询页 ---------------- */
.fr-q-panel{ position:relative; }
.fr-q-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
.fr-q-grid.fr-q-grid-1{ grid-template-columns:minmax(0,1fr); }
.fr-q-field{ margin-bottom:16px; }
.fr-q-ctrl{ position:relative; }
.fr-q-ctrl > i{ position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--fr-muted); font-size:14px; pointer-events:none; }
.fr-q-ctrl .fr-in{ padding-left:38px; height:46px; }
.fr-q-ctrl .fr-in.fr-mono{ font-family:Consolas,Monaco,monospace; letter-spacing:1.5px; font-weight:600; }
.fr-q-actions{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.fr-q-hint{ font-size:12.5px; color:var(--fr-muted); }
.fr-q-mini .fr-card-bd{ padding:12px; }
.fr-q-result{ position:relative; }
.fr-q-result::before{ content:""; position:absolute; left:0; top:0; right:0; height:4px; background:var(--fr-grad); }
.fr-q-result-hd{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; padding:20px 18px 0; }
.fr-q-result-no{ flex:1; min-width:0; }
.fr-q-result-label{ display:block; font-size:12.5px; color:var(--fr-muted); margin-bottom:3px; }
.fr-q-result-no b{ font-family:Consolas,Monaco,monospace; font-size:22px; letter-spacing:1.5px; color:#0369a1; word-break:break-all; }
.fr-q-copy{ margin-left:8px; padding:3px 10px; border:1px solid var(--fr-border); border-radius:8px; background:#fff; color:var(--fr-text2); font-size:12.5px; cursor:pointer; font-family:inherit; transition:.15s; vertical-align:2px; }
.fr-q-copy:hover{ color:var(--fr-primary); border-color:#bae6fd; background:var(--fr-primary-soft); }
.fr-q-status{ font-size:13px; padding:3px 14px; }
.fr-q-meta{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.fr-q-meta-i{ background:#f7fbff; border:1px solid var(--fr-border2); border-radius:11px; padding:11px 13px; }
.fr-q-meta-i > span{ display:block; font-size:12px; color:var(--fr-muted); margin-bottom:4px; }
.fr-q-meta-i > span i{ margin-right:4px; }
.fr-q-meta-i > b{ color:var(--fr-ink); font-size:13.5px; font-weight:600; word-break:break-word; }
.fr-q-memo{ display:flex; gap:11px; margin-top:14px; padding:12px 14px; background:var(--fr-warn-soft); border-radius:11px; color:#92400e; }
.fr-q-memo > i{ margin-top:3px; }
.fr-q-memo span{ display:block; font-size:12px; opacity:.85; margin-bottom:3px; }
.fr-q-memo p{ margin:0; font-size:13.5px; line-height:1.8; word-break:break-word; }
.fr-q-acc-box{ display:flex; align-items:center; gap:13px; padding:14px; border-radius:12px; background:linear-gradient(135deg,#f0f9ff,#f5f3ff); border:1px solid #dbeafe; }
.fr-q-acc-ok{ background:linear-gradient(135deg,#ecfdf5,#f0fdfa); border-color:#a7f3d0; }
.fr-q-acc-icon{ flex:none; width:42px; height:42px; border-radius:12px; display:flex; align-items:center; justify-content:center; color:#fff; font-size:18px; background:var(--fr-grad); box-shadow:0 4px 12px rgba(14,165,233,.28); }
.fr-q-acc-ok .fr-q-acc-icon{ background:linear-gradient(135deg,#10b981,#059669); box-shadow:0 4px 12px rgba(16,185,129,.28); }
.fr-q-acc-main{ flex:1; min-width:0; }
.fr-q-acc-title{ font-size:14px; font-weight:700; color:var(--fr-ink); }
.fr-q-acc-title .fr-badge{ margin-left:6px; vertical-align:1px; }
.fr-q-acc-tip{ font-size:12.5px; color:var(--fr-text2); margin-top:3px; line-height:1.7; }
.fr-q-acc-name{ font-family:Consolas,Monaco,monospace; font-size:15px; font-weight:700; color:#0369a1; margin-top:3px; word-break:break-all; }
.fr-q-cred{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:14px; }
.fr-q-cred-i{ background:#f8fafc; border:1px dashed #cbd5e1; border-radius:11px; padding:11px 14px; }
.fr-q-cred-i span{ display:block; font-size:12px; color:var(--fr-muted); margin-bottom:3px; }
.fr-q-cred-i b{ font-family:Consolas,Monaco,monospace; font-size:16px; letter-spacing:1px; color:#0369a1; word-break:break-all; }
.fr-q-rows{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.fr-q-row{ background:#fbfdff; border:1px solid var(--fr-border2); border-radius:11px; padding:11px 14px; }
.fr-q-row-l{ display:block; font-size:12px; color:var(--fr-muted); margin-bottom:5px; }
.fr-q-row-v{ font-size:13.5px; color:var(--fr-ink); line-height:1.8; word-break:break-word; }
.fr-q-empty{ color:var(--fr-muted); }
.fr-q-count{ margin-left:auto; font-size:12.5px; font-weight:400; color:var(--fr-text2); background:#f1f5f9; padding:2px 10px; border-radius:20px; }
.fr-q-login-tip{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:16px; padding:12px 14px; border-radius:11px; background:var(--fr-primary-soft); color:#075985; font-size:13px; }
.fr-q-login-tip > span{ flex:1; min-width:200px; }
.fr-q-foot{ display:flex; justify-content:center; gap:12px; flex-wrap:wrap; margin:4px 0 0; }

/* ---------------- 预约场次选择 ---------------- */
.fr-slots{ display:flex; flex-direction:column; gap:14px; }
.fr-slot-day{ display:flex; align-items:center; gap:6px; margin-bottom:8px; font-size:13px; font-weight:600; color:var(--fr-ink); }
.fr-slot-day i{ color:var(--fr-primary); }
.fr-slot-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:10px; }
.fr-slot{ position:relative; display:block; cursor:pointer; }
.fr-slot input{ position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.fr-slot-box{ display:flex; flex-direction:column; gap:3px; padding:11px 13px; border:1px solid var(--fr-border); border-radius:11px; background:#fff; transition:.15s; }
.fr-slot:hover .fr-slot-box{ border-color:#7dd3fc; background:#f7fcff; }
.fr-slot input:checked + .fr-slot-box{ border-color:var(--fr-primary); background:var(--fr-primary-soft); box-shadow:0 0 0 3px rgba(14,165,233,.13); }
.fr-slot input:checked + .fr-slot-box .fr-slot-name{ color:var(--fr-primary-deep); }
.fr-slot-name{ font-size:13.5px; color:var(--fr-ink); word-break:break-word; }
.fr-slot-time{ font-size:12.5px; color:var(--fr-text2); }
.fr-slot-left{ font-size:12px; color:var(--fr-ok-deep); }
.fr-slot-left b{ font-size:13px; }
.fr-slot-left.is-full{ color:var(--fr-danger-deep); }
.fr-slot.is-full{ cursor:not-allowed; }
.fr-slot.is-full .fr-slot-box{ background:#f8fafc; border-style:dashed; opacity:.8; }
.fr-slot.is-full .fr-slot-name{ color:var(--fr-muted); }
@media (max-width:820px){
    .fr-slot-list{ grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); }
}

/* ---------------- 投票候选项选择 ---------------- */
.fr-votes{ display:flex; flex-direction:column; gap:10px; }
.fr-vote{ position:relative; display:block; cursor:pointer; }
.fr-vote input{ position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.fr-vote-box{ position:relative; display:flex; flex-direction:column; gap:3px; padding:12px 46px 12px 15px; border:1px solid var(--fr-border); border-radius:11px; background:#fff; transition:.15s; }
.fr-vote:hover .fr-vote-box{ border-color:#7dd3fc; background:#f7fcff; }
.fr-vote input:checked + .fr-vote-box{ border-color:var(--fr-primary); background:var(--fr-primary-soft); box-shadow:0 0 0 3px rgba(14,165,233,.13); }
.fr-vote input:checked + .fr-vote-box .fr-vote-t{ color:var(--fr-primary-deep); }
.fr-vote-t{ font-size:14px; font-weight:600; color:var(--fr-ink); word-break:break-word; }
.fr-vote-i{ font-size:12.5px; color:var(--fr-text2); line-height:1.7; word-break:break-word; }
.fr-vote-n{ font-size:12px; color:var(--fr-muted); }
.fr-vote-n b{ font-size:13px; color:var(--fr-primary-deep); }
.fr-vote-pick{ position:absolute; right:14px; top:50%; transform:translateY(-50%); font-size:19px; color:#cbd5e1; transition:.15s; }
.fr-vote:hover .fr-vote-pick{ color:#94a3b8; }
.fr-vote input:checked + .fr-vote-box .fr-vote-pick{ color:var(--fr-primary); }

/* ---------------- 投票结果条形图 ---------------- */
.fr-vote-result{ display:flex; flex-direction:column; gap:14px; }
.fr-vote-row{ display:flex; flex-direction:column; gap:6px; }
.fr-vote-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; font-size:13.5px; color:var(--fr-ink); }
.fr-vote-head b{ font-weight:600; word-break:break-word; }
.fr-vote-head span{ flex:none; font-size:12.5px; color:var(--fr-muted); }
.fr-vote-bar{ position:relative; height:10px; border-radius:20px; background:#eef2f7; overflow:hidden; }
.fr-vote-bar > i{ display:block; height:100%; border-radius:20px; background:var(--fr-grad); transition:width .4s ease; }

/* ---------------- 问卷/测评 得分卡 ---------------- */
.fr-quiz{ margin-top:16px; padding:18px; border:1px solid var(--fr-border); border-radius:14px; background:linear-gradient(135deg,#f0f9ff,#f5f3ff); }
.fr-quiz-hd{ display:flex; align-items:baseline; gap:6px; justify-content:center; }
.fr-quiz-num{ font-size:40px; font-weight:800; line-height:1.1; color:var(--fr-primary-deep); font-family:Consolas,Monaco,monospace; }
.fr-quiz-unit{ font-size:15px; color:var(--fr-text2); }
.fr-quiz-max{ font-size:14px; color:var(--fr-muted); }
.fr-quiz-tags{ display:flex; justify-content:center; gap:8px; margin-top:10px; flex-wrap:wrap; }
.fr-quiz-list{ margin-top:14px; border-top:1px dashed #cbd5e1; padding-top:12px; display:flex; flex-direction:column; gap:9px; }
.fr-quiz-row{ display:flex; align-items:center; gap:10px; font-size:13px; padding:8px 11px; background:#fff; border:1px solid var(--fr-border2); border-radius:9px; }
.fr-quiz-q{ flex:none; width:120px; color:var(--fr-text2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fr-quiz-a{ flex:1; min-width:0; color:var(--fr-ink); font-weight:600; word-break:break-word; }
.fr-quiz-p{ flex:none; color:var(--fr-primary-deep); font-weight:700; }

/* ---------------- 星级评分 ---------------- */
.fr-rate{ display:flex; align-items:center; gap:3px; flex-wrap:wrap; }
.fr-rate > i{ font-size:24px; color:#d1d5db; cursor:pointer; transition:.12s; }
.fr-rate > i:hover{ transform:scale(1.12); }
.fr-rate > i.fa-star{ color:#f59e0b; }
.fr-rate-txt{ margin-left:8px; font-size:12.5px; color:var(--fr-muted); }
.fr-stars > i{ font-size:15px; color:#d1d5db; }
.fr-stars > i.fa-star{ color:#f59e0b; }
.fr-rate-show{ color:#f59e0b; }
.fr-rate-show b{ color:var(--fr-ink); margin-left:4px; }
.fr-qty{ max-width:150px; }

/* ---------------- 售后服务 / 满意度 ---------------- */
.fr-as-bar{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.fr-as-owner{ font-size:13px; color:var(--fr-text2); }
.fr-as-owner i{ color:var(--fr-primary); }
.fr-as-owner b{ color:var(--fr-ink); }
.fr-as-sat{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:14px; padding:12px 14px; background:var(--fr-ok-soft); border:1px solid #bbf7d0; border-radius:12px; }
.fr-as-sat-label{ font-size:13px; color:var(--fr-text2); }
.fr-as-sat-score{ font-weight:700; color:var(--fr-warn-deep); }
.fr-as-sat-time{ font-size:12px; color:var(--fr-muted); }
.fr-as-sat-form{ margin-top:14px; padding:14px; border:1px dashed var(--fr-border); border-radius:12px; background:#f8fafc; }
.fr-as-sat-tip{ margin:0 0 10px; font-size:13px; color:var(--fr-text2); }
.fr-as-sat-tip i{ color:var(--fr-warn); }
.fr-as-sat-act{ display:flex; align-items:center; gap:12px; margin-top:12px; flex-wrap:wrap; }
.fr-as-sat-msg{ font-size:13px; color:var(--fr-text2); }
.fr-as-wait{ margin-top:12px; padding:11px 14px; border-radius:12px; background:var(--fr-warn-soft); color:var(--fr-warn-deep); font-size:13px; }

/* ---------------- 表单布局 / 分步 / 条件显示 ---------------- */
.fr-fgrid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 16px; }
.fr-fgrid > .fr-field{ grid-column:span 2; }
.fr-fgrid > .fr-field.fr-half{ grid-column:span 1; }
.fr-fgrid > .fr-group-title{ grid-column:span 2; }
.fr-group-title{ margin:6px 0 10px; padding-left:10px; border-left:3px solid var(--fr-primary); font-size:14px; font-weight:700; color:var(--fr-ink); }
.fr-steps{ display:flex; gap:8px; flex-wrap:wrap; margin:4px 0 18px; }
.fr-step-i{ display:flex; align-items:center; gap:7px; padding:6px 14px; border-radius:20px; background:#f1f5f9; color:var(--fr-text2); font-size:13px; }
.fr-step-i b{ display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; border-radius:50%; background:#cbd5e1; color:#fff; font-size:12px; }
.fr-step-i.on{ background:var(--fr-primary-soft); color:var(--fr-primary-deep); font-weight:600; }
.fr-step-i.on b{ background:var(--fr-primary); }
.fr-field[hidden]{ display:none !important; }
.fr-slider{ display:flex; align-items:center; gap:12px; }
.fr-slider .fr-range{ flex:1; min-width:0; accent-color:var(--fr-primary); }
.fr-range-val{ flex:none; min-width:44px; text-align:center; font-weight:700; color:var(--fr-primary-deep); }
/* ---------------- P5：计算 / 定位 / 扫码 ---------------- */
.fr-calc{ background:#f8fafc; color:var(--fr-primary-deep); font-weight:700; cursor:default; }
.fr-loc, .fr-scan{ display:flex; align-items:center; gap:8px; }
.fr-loc .fr-in, .fr-scan .fr-in{ flex:1; min-width:0; }
.fr-loc .fr-btn, .fr-scan .fr-btn{ flex:none; white-space:nowrap; }
.fr-scan-ov{ position:fixed; inset:0; z-index:99999; background:rgba(15,23,42,.88); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; }
.fr-scan-ov video{ width:min(78vw,320px); max-height:60vh; border-radius:14px; background:#000; object-fit:cover; }
.fr-scan-ov p{ color:#e2e8f0; font-size:13.5px; margin:0; }
/* ---------------- P5：电子签名 / 子表格 ---------------- */
.fr-sign-canvas{ display:block; width:100%; max-width:560px; height:180px; border:1px dashed var(--fr-border); border-radius:10px; background:#fff; touch-action:none; cursor:crosshair; }
.fr-sign-bar{ display:flex; align-items:center; gap:10px; margin-top:8px; }
.fr-sign-tip{ font-size:12px; color:var(--fr-muted); }
.fr-sign-show{ display:block; max-width:280px; margin-top:10px; border:1px solid var(--fr-border); border-radius:8px; background:#fff; }
.fr-sub{ overflow-x:auto; }
.fr-sub-t{ width:100%; border-collapse:collapse; min-width:420px; }
.fr-sub-t th, .fr-sub-t td{ padding:6px 8px; border:1px solid var(--fr-border); font-size:13px; }
.fr-sub-t th{ background:#f8fafc; color:var(--fr-text2); font-weight:600; white-space:nowrap; }
.fr-sub-t td .fr-in{ width:100%; }
.fr-sub-op{ width:70px; white-space:nowrap; text-align:center; }
.fr-sub-add{ margin-top:10px; }
.fr-d-subwrap{ overflow-x:auto; }
.fr-d-sub{ width:100%; border-collapse:collapse; margin:4px 0; }
.fr-d-sub th, .fr-d-sub td{ padding:4px 8px; border:1px solid var(--fr-border); font-size:12.5px; text-align:left; }
.fr-d-sub th{ background:#f8fafc; color:var(--fr-muted); font-weight:600; }
.fr-d-sign img{ max-width:220px; }
.fr-agree{ margin:6px 0 16px; padding:12px 14px; border:1px solid var(--fr-border); border-radius:12px; background:#f8fafc; }
.fr-agree-txt{ max-height:150px; overflow:auto; font-size:12.5px; line-height:1.8; color:var(--fr-text2); white-space:pre-wrap; margin-bottom:10px; }
.fr-fee{ margin:6px 0 16px; padding:16px 18px; border:1px solid #fde68a; border-radius:14px; background:linear-gradient(135deg,#fffbeb,#fef3c7); }
.fr-fee-hd{ font-size:14px; font-weight:700; color:var(--fr-warn-deep); }
.fr-fee-amt{ font-size:16px; color:#b45309; margin-top:6px; }
.fr-fee-amt b{ font-size:28px; font-family:Consolas,Monaco,monospace; }
.fr-fee-tip{ font-size:12px; color:#a16207; margin-left:6px; }
.fr-fee-note{ margin:8px 0 0; font-size:12.5px; color:#92400e; line-height:1.8; }
.fr-fee-mode{ margin:6px 0 0; font-size:12.5px; color:#92400e; }
.fr-fee-qr{ margin-top:10px; }
.fr-fee-qr img{ width:170px; max-width:100%; border-radius:10px; border:1px solid #fde68a; background:#fff; padding:6px; }

/* ---------------- 收银台 / 支付页 ---------------- */
.fr-order-row{ display:flex; align-items:flex-start; gap:12px; padding:9px 0; border-bottom:1px dashed var(--fr-border-2); font-size:13.5px; }
.fr-order-row:last-child{ border-bottom:none; }
.fr-order-k{ flex:none; width:88px; color:var(--fr-muted); }
.fr-order-v{ flex:1; min-width:0; color:var(--fr-ink); word-break:break-all; }
.fr-order-amt .fr-order-v{ color:#b45309; }
.fr-order-amt .fr-order-v b{ font-size:26px; font-family:Consolas,Monaco,monospace; }
.fr-pay-tip{ padding:11px 14px; border-radius:12px; background:var(--fr-primary-soft); color:var(--fr-primary-deep); font-size:13px; }
.fr-pay-tip-warn{ background:var(--fr-warn-soft); color:var(--fr-warn-deep); }
.fr-pay-channels{ display:flex; flex-wrap:wrap; gap:12px; margin-top:6px; }
.fr-pay-channel{ display:flex; align-items:center; gap:8px; padding:12px 22px; border:1px solid var(--fr-border); border-radius:12px; background:#fff; font-size:14px; cursor:pointer; transition:.15s; }
.fr-pay-channel:hover{ border-color:var(--fr-primary); color:var(--fr-primary-deep); box-shadow:0 4px 14px rgba(14,165,233,.12); }
.fr-pay-channel i{ font-size:20px; }
.fr-pay-msg{ margin:12px 0 0; font-size:13px; color:var(--fr-text2); }
.fr-pay-msg-note{ margin:12px 0 0; font-size:12.5px; color:var(--fr-muted); line-height:1.8; }
.fr-pay-result{ margin-top:14px; }
.fr-pay-qr{ text-align:center; }
.fr-pay-qr img{ width:220px; max-width:100%; border:1px solid var(--fr-border); border-radius:12px; padding:8px; background:#fff; }
.fr-pay-qr p{ margin:8px 0 0; font-size:13px; color:var(--fr-text2); }
.fr-pay-foot{ display:flex; gap:10px; flex-wrap:wrap; margin-top:18px; padding-top:14px; border-top:1px solid var(--fr-border-2); }

/* 响应式 */
@media (max-width:820px){
    .fr-grid{ grid-template-columns:minmax(0,1fr); }
    .fr-fgrid{ grid-template-columns:minmax(0,1fr); }
    .fr-head-inner{ height:56px; gap:8px; }
    .fr-logo span{ display:none; }
    .fr-head-nav a{ padding:0 10px; font-size:12.5px; }
    .fr-head-nav a span{ display:none; }
    .fr-hero h1{ font-size:21px; }
    .fr-dl{ flex-direction:column; }
    .fr-dl dt{ width:auto; margin-bottom:2px; }
    .fr-receipt-no{ font-size:19px; padding:10px 16px; }
    .fr-q-grid,.fr-q-meta,.fr-q-cred,.fr-q-rows{ grid-template-columns:minmax(0,1fr); }
    .fr-q-result-no b{ font-size:18px; }
    .fr-q-acc-box{ flex-wrap:wrap; }
    .fr-quiz-q{ width:88px; }
}

/* ================= 结果公示 / 通用表格 ================= */
.fr-table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--fr-border2); border-radius:12px; }
.fr-table{ width:100%; border-collapse:collapse; font-size:13px; background:#fff; }
.fr-table th{ background:#f1f5f9; color:#475569; font-weight:600; text-align:left; padding:10px 12px; border-bottom:1px solid #e2e8f0; white-space:nowrap; }
.fr-table td{ padding:10px 12px; border-bottom:1px solid #eef2f7; color:#1e293b; vertical-align:top; word-break:break-word; }
.fr-table tbody tr:last-child td{ border-bottom:0; }
.fr-table tbody tr:nth-child(even){ background:#fafcff; }
.fr-table tbody tr:hover{ background:#f0f9ff; }
.fr-table img{ max-width:90px; border-radius:6px; display:block; }
.fr-table .tc{ text-align:center; }
.fr-pager{ margin-top:16px; text-align:center; }
.fr-pager a,.fr-pager span{ display:inline-block; min-width:30px; height:30px; line-height:28px; margin:0 3px; padding:0 8px; border:1px solid #e2e8f0; border-radius:8px; color:#334155; text-decoration:none; font-size:13px; }
.fr-pager .active{ background:var(--fr-primary,#0369a1); border-color:var(--fr-primary,#0369a1); color:#fff; }

.fr-stat-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(124px,1fr)); gap:10px; }
.fr-stat-card{ border:1px solid #eef2f7; border-radius:12px; padding:12px 14px; background:linear-gradient(135deg,#f8fbff,#eff6ff); text-align:center; }
.fr-stat-card .n{ font-size:22px; font-weight:800; color:#0369a1; font-family:Consolas,Monaco,monospace; }
.fr-stat-card .l{ font-size:12px; color:#64748b; margin-top:2px; }

.fr-bar-row{ margin-bottom:12px; }
.fr-bar-hd{ display:flex; justify-content:space-between; font-size:13px; color:#334155; gap:10px; }
.fr-bar-bg{ height:10px; background:#eef2f7; border-radius:6px; margin-top:5px; overflow:hidden; }
.fr-bar-fg{ height:10px; background:linear-gradient(90deg,#38bdf8,#0369a1); border-radius:6px; }

.fr-res-list{ display:flex; flex-direction:column; gap:12px; }
.fr-res-item{ border:1px solid #eef2f7; border-radius:12px; padding:13px 16px; background:#fff; }
.fr-res-item-hd{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.fr-res-name{ font-size:14px; font-weight:700; color:#0f172a; }
.fr-res-meta{ font-size:12px; color:#94a3b8; margin-left:auto; }
.fr-res-fields{ display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:8px 20px; margin-top:10px; padding-top:10px; border-top:1px dashed #eef2f7; }
.fr-res-field{ font-size:13px; color:#334155; line-height:1.7; word-break:break-word; }
.fr-res-field .k{ color:#94a3b8; margin-right:6px; }
.fr-res-foot{ margin-top:12px; }

/* P11 语言切换 */
.fr-lang{ position:relative; display:inline-block; }
.fr-lang-cur{ display:inline-flex; align-items:center; gap:5px; }
.fr-lang-box{ display:none; position:absolute; right:0; top:calc(100% + 6px); min-width:130px; background:#fff; border:1px solid #e2e8f0; border-radius:10px; box-shadow:0 10px 26px rgba(15,23,42,.12); padding:6px; z-index:50; }
.fr-lang-box a{ display:block; padding:7px 12px; border-radius:7px; font-size:13px; color:#334155; text-decoration:none; white-space:nowrap; }
.fr-lang-box a:hover{ background:#f1f5f9; }
.fr-lang-box a.on{ background:#eef6ff; color:#0369a1; font-weight:700; }

/* P12 AI 会话式填表 */
.fr-chat{ max-height:420px; overflow-y:auto; padding:12px; background:#f8fafc; border:1px solid #e2e8f0; border-radius:12px; }
.fr-chat-row{ display:flex; gap:10px; margin-bottom:14px; align-items:flex-start; }
.fr-chat-row.fr-chat-user{ flex-direction:row-reverse; }
.fr-chat-avatar{ flex:0 0 34px; width:34px; height:34px; border-radius:50%; background:#2563eb; color:#fff; font:700 12px/34px -apple-system,'Microsoft YaHei',sans-serif; text-align:center; }
.fr-chat-row.fr-chat-user .fr-chat-avatar{ background:#0ea5e9; }
.fr-chat-text{ max-width:76%; padding:10px 13px; border-radius:12px; background:#fff; border:1px solid #e2e8f0; color:#0f172a; font-size:14px; line-height:1.7; white-space:pre-wrap; word-break:break-word; }
.fr-chat-row.fr-chat-user .fr-chat-text{ background:#eef6ff; border-color:#dbeafe; }
/* P12 草稿续填提示 */
.fr-draft-tip{ display:none; margin-top:10px; padding:9px 12px; border-radius:9px; background:#fffbeb; border:1px solid #fde68a; color:#92400e; font-size:12.5px; }

/* ==================== P41 会员中心工作台 ==================== */
.fr-mkpi{ display:grid; grid-template-columns:repeat(auto-fit,minmax(142px,1fr)); gap:12px; margin:14px 0 16px; }
.fr-mkpi-i{ display:flex; align-items:center; gap:11px; padding:14px 16px; background:#fff; border:1px solid var(--fr-border); border-radius:var(--fr-radius-sm); box-shadow:var(--fr-shadow); text-decoration:none; transition:all .16s; }
.fr-mkpi-i:hover{ transform:translateY(-2px); box-shadow:var(--fr-shadow-lg); border-color:var(--fr-primary); }
.fr-mkpi-ic{ flex:none; width:38px; height:38px; border-radius:11px; display:flex; align-items:center; justify-content:center; font-size:16px; color:var(--fr-primary); background:var(--fr-primary-soft); }
.fr-mkpi-i.tone-warn .fr-mkpi-ic{ color:#b45309; background:#fffbeb; }
.fr-mkpi-i.tone-ok .fr-mkpi-ic{ color:#047857; background:#ecfdf5; }
.fr-mkpi-tx{ min-width:0; }
.fr-mkpi-v{ font-size:20px; font-weight:700; color:var(--fr-ink); line-height:1.3; }
.fr-mkpi-v em{ font-size:12px; font-weight:400; font-style:normal; color:var(--fr-muted); margin-left:2px; }
.fr-mkpi-n{ font-size:12.5px; color:var(--fr-text2); }
.fr-mquick{ display:flex; flex-wrap:wrap; gap:10px; margin:0 0 16px; }
.fr-mquick-i{ display:inline-flex; align-items:center; gap:7px; padding:9px 15px; border-radius:999px; background:#fff; border:1px solid var(--fr-border); color:var(--fr-text); font-size:13px; text-decoration:none; transition:all .16s; }
.fr-mquick-i:hover{ border-color:var(--fr-primary); color:var(--fr-primary-deep); background:var(--fr-primary-soft); text-decoration:none; }
.fr-mquick-i i{ color:var(--fr-primary); }
.fr-tnum{ display:inline-block; margin-left:5px; padding:0 6px; border-radius:20px; background:var(--fr-primary-soft); color:var(--fr-primary-deep); font-size:11px; font-weight:600; line-height:16px; vertical-align:1px; }
.fr-tabs a.on .fr-tnum{ background:rgba(255,255,255,.92); color:var(--fr-primary-deep); }
.fr-pbar{ height:8px; border-radius:99px; background:var(--fr-border2); overflow:hidden; margin:9px 0 5px; }
.fr-pbar > i{ display:block; height:100%; border-radius:99px; background:var(--fr-grad); }
.fr-mact{ margin-top:10px; display:flex; flex-wrap:wrap; gap:8px; }
.fr-mamt{ font-weight:700; color:#dc2626; }
.fr-mbox{ margin-top:10px; padding:10px 12px; border-radius:9px; background:#f8fafc; border:1px solid var(--fr-border2); font-size:12.5px; color:var(--fr-text2); line-height:1.8; }
@media (max-width:520px){ .fr-mkpi{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } .fr-mkpi-i{ padding:12px; } .fr-mkpi-v{ font-size:18px; } }

/* ==== B1 表单填写页 ==== */
/* 顶部封面：紧接收起头部，缩小下留白 */
.fr-hero-form{ padding-bottom:28px; }
.fr-form-wrap{ margin-top:18px; }
.fr-hero-tag{ text-decoration:none; }
.fr-hero-tag:hover{ background:rgba(255,255,255,.20); color:#fff; }

/* 报名须知：渲染富文本说明 */
.fr-intro{ font-size:13.5px; line-height:1.9; color:var(--fr-text); word-break:break-word; }
.fr-intro p{ margin:0 0 10px; }
.fr-intro p:last-child{ margin-bottom:0; }
.fr-intro ul,.fr-intro ol{ margin:0 0 10px; padding-left:22px; }
.fr-intro li{ margin:3px 0; }
.fr-intro strong{ color:var(--fr-ink); }
.fr-intro img{ border-radius:10px; }

/* 业务类型专属区：内嵌醒目区块 */
.fr-biz-card{ margin:0 0 16px; background:#fbfdff; border-style:dashed; box-shadow:none; }
.fr-biz-card .fr-card-hd{ padding:11px 14px; font-size:14px; background:#f4faff; }
.fr-biz-card .fr-card-bd{ padding:14px; }
.fr-biz-card .fr-stat-grid{ margin-bottom:10px; }
.fr-biz-card .fr-field-tip{ margin-top:4px; }
.fr-biz-card .fr-alert:last-child,.fr-biz-card .fr-field-tip:last-child{ margin-bottom:0; }

/* 投票 / 预约 字段区与其它字段的间距 */
.fr-vote-field,.fr-slot-field{ margin-bottom:18px; }

@media (max-width:820px){
    .fr-hero-form{ padding-bottom:22px; }
    .fr-biz-card .fr-card-bd{ padding:12px; }
    .fr-stat-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:520px){
    .fr-form-wrap{ margin-top:14px; }
    .fr-stat-card .n{ font-size:18px; }
}

/* ==== P43 领券中心 ==== */
.fr-cc-bar{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.fr-cc-bar .fr-in{ width:220px; max-width:100%; }
.fr-cc-bar-msg{ font-size:12.5px; color:var(--fr-muted); }
.fr-cps{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.fr-cp{ display:flex; gap:14px; padding:14px; border:1px solid var(--fr-border); border-radius:14px; background:#fff; }
.fr-cp-l{ flex:0 0 108px; width:108px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; border-radius:12px; background:var(--fr-grad); color:#fff; padding:14px 8px; }
.fr-cp-val{ font-size:22px; font-weight:800; line-height:1.1; word-break:break-all; }
.fr-cp-min{ margin-top:5px; font-size:11.5px; opacity:.94; }
.fr-cp-r{ flex:1; min-width:0; display:flex; flex-direction:column; }
.fr-cp-title{ font-size:14.5px; font-weight:700; color:var(--fr-ink); display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.fr-cp-meta{ margin-top:7px; display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12.5px; color:var(--fr-text2); }
.fr-cp-meta i{ color:var(--fr-primary); }
.fr-cp-notice{ margin-top:7px; font-size:12.5px; color:var(--fr-muted); line-height:1.7; }
.fr-cp-foot{ margin-top:auto; padding-top:10px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.fr-cp-foot .fr-btn{ margin-left:auto; }
.fr-cp-used .fr-cp-l{ background:linear-gradient(135deg,#94a3b8,#cbd5e1); }
.fr-cp-expired .fr-cp-l,.fr-cp-void .fr-cp-l{ background:linear-gradient(135deg,#cbd5e1,#e2e8f0); }
.fr-cp-expired,.fr-cp-void{ opacity:.82; }
.fr-subtabs{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.fr-subtab{ display:inline-flex; align-items:center; padding:7px 15px; border-radius:999px; background:#f1f5f9; border:1px solid var(--fr-border); color:var(--fr-text); font-size:13px; text-decoration:none; transition:all .16s; }
.fr-subtab:hover{ border-color:var(--fr-primary); color:var(--fr-primary-deep); text-decoration:none; }
.fr-subtab.on{ background:var(--fr-grad); border-color:transparent; color:#fff; }
.fr-subtab.on .fr-tnum{ background:rgba(255,255,255,.92); color:var(--fr-primary-deep); }
@media (max-width:820px){ .fr-cps{ grid-template-columns:1fr; } }
@media (max-width:520px){ .fr-cp{ gap:10px; padding:11px; } .fr-cp-l{ flex-basis:88px; width:88px; } .fr-cp-val{ font-size:19px; } }

/* ==== P44 积分中心 ==== */
/* 概览 */
.pn-ov{ display:flex; flex-wrap:wrap; gap:16px; align-items:stretch; }
.pn-ov-main{ flex:1; min-width:220px; padding:18px; border-radius:14px; background:var(--fr-grad); color:#fff; }
.pn-ov-label{ font-size:12.5px; color:var(--fr-muted); }
.pn-ov-main .pn-ov-label{ color:rgba(255,255,255,.85); }
.pn-ov-num{ font-size:36px; font-weight:800; line-height:1.15; margin:4px 0 2px; word-break:break-all; }
.pn-ov-sub{ font-size:12.5px; color:rgba(255,255,255,.88); }
.pn-ov-side{ flex:0 0 240px; display:flex; flex-direction:column; gap:12px; }
.pn-ov-side-i{ flex:1; padding:12px 14px; border:1px solid var(--fr-border); border-radius:12px; background:#fbfdff; }
.pn-ov-side-v{ display:block; margin-top:5px; font-size:16px; color:var(--fr-ink); }
.pn-ov-side-v i{ color:var(--fr-primary); }
.pn-dim{ color:var(--fr-muted); font-weight:400; }
/* 等级进度 */
.pn-level{ margin-top:16px; padding:14px 16px; border:1px solid var(--fr-border); border-radius:12px; background:#fbfdff; }
.pn-level-hd{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:13px; }
.pn-level-cur{ font-weight:700; color:var(--fr-ink); }
.pn-level-cur i{ color:var(--fr-primary); }
.pn-level-tip{ margin-left:auto; color:var(--fr-muted); font-size:12.5px; }
/* 每日签到 */
.pn-sign{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.pn-sign-info{ flex:1; min-width:200px; }
.pn-sign-t{ font-size:16px; font-weight:700; color:var(--fr-ink); }
.pn-sign-t b{ font-size:24px; color:var(--fr-primary-deep); margin-right:2px; }
.pn-sign-act{ display:flex; align-items:center; gap:10px; }
/* 任务 */
.pn-task .fr-pbar{ margin-bottom:0; }
.pn-task-done{ opacity:.78; }
/* 赚积分攻略 */
.pn-rules{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }
.pn-rule{ padding:14px; border:1px solid var(--fr-border); border-radius:12px; background:#fff; transition:.16s; }
.pn-rule:hover{ border-color:#bae6fd; box-shadow:var(--fr-shadow); }
.pn-rule-t{ font-size:12.5px; font-weight:600; color:var(--fr-primary-deep); }
.pn-rule-n{ margin-top:4px; font-size:14px; font-weight:600; color:var(--fr-ink); }
.pn-rule-meta{ margin-top:8px; display:flex; flex-wrap:wrap; gap:8px; }
.pn-reward{ display:inline-block; padding:1px 10px; border-radius:20px; font-size:12px; line-height:20px; font-weight:500; background:var(--fr-primary-soft); color:var(--fr-primary-deep); }
.pn-rule-tip{ margin-top:8px; font-size:12.5px; color:var(--fr-muted); line-height:1.7; }
/* 积分商城 */
.pn-goods{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:14px; }
.pn-good{ display:flex; flex-direction:column; border:1px solid var(--fr-border); border-radius:14px; background:#fff; overflow:hidden; transition:.16s; }
.pn-good:hover{ border-color:#bae6fd; box-shadow:var(--fr-shadow); }
.pn-good-cover{ height:130px; background:#f1f5f9; }
.pn-good-cover img{ width:100%; height:100%; object-fit:cover; display:block; }
.pn-good-bd{ flex:1; display:flex; flex-direction:column; padding:12px 14px; }
.pn-good-n{ font-size:14px; font-weight:600; color:var(--fr-ink); word-break:break-word; }
.pn-good-meta{ margin-top:6px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; font-size:12.5px; }
.pn-good-pts{ font-weight:700; color:#dc2626; }
.pn-good-stock{ color:var(--fr-muted); }
.pn-good-foot{ margin-top:auto; padding-top:12px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.pn-good-foot .fr-btn{ margin-left:auto; }
/* 兑换弹层 */
.pn-modal{ position:fixed; left:0; top:0; right:0; bottom:0; z-index:999; background:rgba(15,23,42,.45); overflow-y:auto; }
.pn-modal-box{ max-width:420px; margin:70px auto; padding:18px; border-radius:14px; background:#fff; box-shadow:var(--fr-shadow-lg); }
.pn-modal-hd{ margin:0 0 12px; font-size:16px; font-weight:700; color:var(--fr-ink); }
.pn-modal-hd i{ color:var(--fr-primary); }
.pn-modal-act{ margin-top:14px; display:flex; gap:8px; flex-wrap:wrap; }
/* 等级权益 */
.pn-levels{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:12px; }
.pn-levelcard{ padding:14px 16px; border:1px solid var(--fr-border); border-radius:12px; background:#fff; }
.pn-levelcard-hd{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.pn-levelcard-hd b{ font-size:15px; color:var(--fr-ink); }
.pn-levelcard-list{ margin:8px 0 0; padding:0; list-style:none; font-size:13px; color:var(--fr-text); line-height:2; }
.pn-levelcard-list i{ color:#059669; margin-right:6px; }
/* 排行榜 */
.pn-rank-no{ flex:none; display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:50%; background:#f1f5f9; color:var(--fr-text2); font-size:12.5px; font-weight:700; }
.pn-rank.on{ border-color:var(--fr-primary); background:var(--fr-primary-soft); box-shadow:var(--fr-shadow); }
.pn-rank.on .pn-rank-no{ background:var(--fr-grad); color:#fff; }
@media (max-width:820px){
    .pn-ov-side{ flex:1 1 100%; }
    .pn-goods{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:520px){
    .pn-ov-num{ font-size:30px; }
    .pn-rules{ grid-template-columns:1fr; }
    .pn-goods{ grid-template-columns:1fr; }
    .pn-modal-box{ margin:24px 12px; }
}

/* ==== P46 我的预约 / 我的候补 ==== */
/* 我的预约：提示与徽标 */
.fr-res-notice{ margin:0; align-self:center; }
.fr-res-soon{ background:#fee2e2; color:#b91c1c; }
/* 我的预约：核销码折叠块 */
.fr-ck{ margin-top:10px; padding-top:9px; border-top:1px dashed var(--fr-border2); }
.fr-ck-sum{ cursor:pointer; font-size:12.5px; color:var(--fr-primary-deep); list-style:none; outline:none; }
.fr-ck-sum::-webkit-details-marker{ display:none; }
.fr-ck-sum i{ margin-right:4px; }
.fr-ck-list{ display:flex; flex-wrap:wrap; gap:12px; margin-top:10px; }
.fr-ck-item{ display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--fr-border); border-radius:11px; background:#fbfdff; }
.fr-ck-qr{ flex:none; width:72px; height:72px; border-radius:8px; border:1px solid var(--fr-border); background:#fff; padding:3px; }
.fr-ck-code{ font-family:Consolas,Monaco,monospace; font-size:14px; font-weight:700; color:#0369a1; letter-spacing:1px; word-break:break-all; }
.fr-ck-st{ font-size:12px; color:var(--fr-muted); margin-top:3px; }
/* 我的候补 */
.fr-b-doing{ background:#eef6ff; color:var(--fr-primary-deep); }
.fr-wl-hot{ border-color:#fde68a; background:linear-gradient(135deg,#fffdf5,#fffbeb); }
.fr-wl-notice{ margin-top:10px; padding:9px 12px; border-radius:10px; background:var(--fr-warn-soft); color:var(--fr-warn-deep); font-size:12.5px; line-height:1.7; }
.fr-wl-notice b{ color:#b45309; }
/* 改期弹层 */
.fr-modal{ position:fixed; left:0; top:0; right:0; bottom:0; z-index:9999; background:rgba(15,23,42,.45); overflow-y:auto; }
.fr-modal-box{ max-width:460px; margin:70px auto; padding:18px; border-radius:14px; background:#fff; box-shadow:var(--fr-shadow-lg); }
.fr-modal-hd{ margin:0 0 12px; font-size:16px; font-weight:700; color:var(--fr-ink); }
.fr-modal-hd i{ color:var(--fr-primary); }
.fr-modal-tip{ margin-bottom:12px; padding:9px 12px; border-radius:10px; background:var(--fr-primary-soft); color:#075985; font-size:12.5px; line-height:1.7; }
.fr-res-slots{ display:flex; flex-direction:column; gap:10px; max-height:52vh; overflow-y:auto; }
.fr-res-loading, .fr-res-empty{ padding:24px 12px; text-align:center; color:var(--fr-muted); font-size:13px; }
.fr-res-slot{ display:flex; align-items:center; gap:12px; padding:11px 14px; border:1px solid var(--fr-border); border-radius:11px; background:#fff; cursor:pointer; transition:.15s; }
.fr-res-slot:hover{ border-color:#7dd3fc; background:#f7fcff; }
.fr-res-slot.on{ border-color:var(--fr-primary); background:var(--fr-primary-soft); box-shadow:0 0 0 3px rgba(14,165,233,.13); }
.fr-res-slot-main{ flex:1; min-width:0; }
.fr-res-slot-n{ font-size:13.5px; font-weight:600; color:var(--fr-ink); word-break:break-word; }
.fr-res-slot-t{ font-size:12.5px; color:var(--fr-text2); margin-top:2px; }
.fr-res-slot-r{ flex:none; text-align:right; font-size:12px; color:var(--fr-text2); }
.fr-res-slot-left{ display:block; color:var(--fr-ok-deep); }
.fr-res-slot-price{ display:block; margin-top:2px; color:#dc2626; font-weight:700; }
.fr-modal-act{ margin-top:14px; display:flex; gap:8px; flex-wrap:wrap; }
@media (max-width:520px){ .fr-modal-box{ margin:24px 12px; } }

/* ==== P47 表单分享与渠道二维码 ==== */
.fr-share-bar{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:0 0 14px; padding:11px 14px; border:1px solid var(--fr-border); border-radius:12px; background:linear-gradient(135deg,#f8fbff,#eef6ff); }
.fr-share-tt{ display:inline-flex; align-items:center; gap:6px; margin-right:2px; font-size:13px; font-weight:600; color:var(--fr-ink); }
.fr-share-tt i{ color:var(--fr-primary); }
.fr-share-bar .fr-btn{ padding:6px 13px; font-size:13px; }

/* ============================================================
   V2 设计系统 · 现代编辑部极简 —— 覆盖层
   说明：本层位于文件末尾，仅重定义「观感」（排版/留白/颜色/描边/圆角），
   不改变任何 DOM 结构与类名，因此 32 个页面一次性统一换肤。
   ============================================================ */

/* ---------------- 页面与栅格 ---------------- */
.fr-page{ background:#fff; padding:0 0 0; font-size:15px; line-height:1.7; }
.fr-wrap{ max-width:1120px; padding:0 28px; }
.fr-page a{ color:var(--fr-ink); }
.fr-page a:hover{ color:var(--fr-accent); }
.fr-muted{ font-size:12.5px; color:var(--fr-muted); }
.fr-tnum,.fr-receipt-no,.fr-q-result-no b,.fr-q-cred-i b,.fr-cp-val,.fr-fee-amt b{ font-family:var(--fr-mono); font-variant-numeric:tabular-nums; }

/* ---------------- 页头 / 导航 ---------------- */
.fr-head{ background:#fff; color:var(--fr-ink); box-shadow:none; border-bottom:1px solid var(--fr-rule); }
.fr-head-inner{ max-width:1120px; height:74px; padding:0 28px; gap:22px; }
.fr-logo{ color:var(--fr-ink); font-size:19px; font-weight:800; letter-spacing:var(--fr-tz); white-space:nowrap; }
.fr-logo i{ width:auto; height:auto; border-radius:0; background:none; box-shadow:none;
    color:var(--fr-accent); font-style:normal; font-size:19px; }
.fr-head-nav{ flex:1 1 auto; min-width:0; display:flex; align-items:center; gap:2px; }
.fr-head-nav a{ height:36px; padding:0 12px; border-radius:0; color:var(--fr-text2); font-size:14px;
    border-bottom:2px solid transparent; white-space:nowrap; }
.fr-head-nav a:hover{ background:none; color:var(--fr-ink); border-bottom-color:var(--fr-accent); }
.fr-head-nav a.on{ background:none; color:var(--fr-ink); font-weight:600; border-bottom-color:var(--fr-rule); }
.fr-head-cta{ flex:0 0 auto; display:flex; align-items:center; gap:16px; }
.fr-head-cta a{ font-size:14px; color:var(--fr-text2); white-space:nowrap; }
.fr-head-cta a:hover{ color:var(--fr-ink); }
.fr-head-cta a.fr-cta-primary, .fr-page .fr-head-cta a.fr-cta-primary{ border:1px solid var(--fr-ink);
    padding:8px 18px; color:var(--fr-ink); font-weight:600; }
.fr-head-cta a.fr-cta-primary:hover, .fr-page .fr-head-cta a.fr-cta-primary:hover{ background:var(--fr-ink); color:#fff; }
.fr-avatar{ border-radius:2px; border-width:1px; }

/* ---------------- 主视觉 ---------------- */
.fr-hero{ background:#fff; color:var(--fr-ink); padding:0 0 40px; border-bottom:1px solid var(--fr-border); }
.fr-hero-inner{ max-width:1120px; padding:64px 28px 0; }
.fr-hero h1{ color:var(--fr-ink); font-size:clamp(30px,3.6vw,50px); font-weight:800;
    line-height:1.14; letter-spacing:var(--fr-tz); margin:0 0 14px; }
.fr-hero p{ color:var(--fr-text2); font-size:15.5px; line-height:1.9; max-width:38em; }
.fr-hero-tags{ margin-top:20px; gap:8px; }
/* 表单页主视觉：用报名须知原文做两行导语（超出裁切） */
.fr-hero-lead{ margin:0 0 4px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
    overflow:hidden; }
.fr-hero-tag{ background:transparent; border:1px solid var(--fr-border); color:var(--fr-text2);
    border-radius:2px; padding:4px 11px; font-size:12px; letter-spacing:.06em; }

/* ---------------- 卡片 ---------------- */
.fr-card{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); box-shadow:none; margin-bottom:22px; }
.fr-card-hd{ padding:18px 24px 15px; font-size:16px; font-weight:700; letter-spacing:var(--fr-tz);
    color:var(--fr-ink); border-bottom:1px solid var(--fr-border); background:#fff; }
.fr-card-hd i{ color:var(--fr-accent); }
.fr-card-bd{ padding:24px; }
.fr-pull-up{ margin-top:-26px; position:relative; z-index:2; }

/* ---------------- 按钮 ---------------- */
.fr-btn{ border-radius:var(--fr-radius); padding:11px 22px; font-size:14px; font-weight:600;
    letter-spacing:.02em; transition:.15s; }
.fr-btn-primary, .fr-page a.fr-btn-primary{ color:#fff; background:var(--fr-ink); box-shadow:none; border-color:var(--fr-ink); }
.fr-btn-primary:hover, .fr-page a.fr-btn-primary:hover{ filter:none; background:var(--fr-accent); border-color:var(--fr-accent); color:#fff; }
.fr-btn-default{ background:#fff; border-color:var(--fr-border); color:var(--fr-ink); }
.fr-btn-default:hover{ background:var(--fr-ink); border-color:var(--fr-ink); color:#fff; }
.fr-btn-sm{ padding:7px 14px; font-size:13px; border-radius:var(--fr-radius); }
.fr-btn-lg{ padding:13px 40px; font-size:15px; border-radius:var(--fr-radius); }

/* ---------------- 表单控件 ---------------- */
.fr-field{ margin-bottom:22px; }
.fr-field-label{ font-size:12.5px; letter-spacing:.1em; color:var(--fr-muted); font-weight:500; margin-bottom:9px; }
.fr-field-label em{ color:var(--fr-accent); }
.fr-field-tip{ font-size:12.5px; color:var(--fr-muted); }
.fr-in,.fr-ta,.fr-sel{ border:1px solid var(--fr-border); border-bottom-color:var(--fr-ink);
    border-radius:var(--fr-radius); padding:11px 13px; font-size:15px; background:#fff; }
.fr-in:focus,.fr-ta:focus,.fr-sel:focus{ border-color:var(--fr-ink); border-bottom-color:var(--fr-accent);
    box-shadow:none; }
.fr-ta{ min-height:104px; }
.fr-choices{ gap:10px 14px; }
.fr-choice{ border-radius:var(--fr-radius); padding:9px 14px; font-size:14px; }
.fr-choice:hover{ border-color:var(--fr-ink); background:#fff; }
.fr-choice input{ accent-color:var(--fr-ink); }
.fr-field-html{ background:var(--fr-soft); border-left:2px solid var(--fr-accent); border-radius:0;
    color:var(--fr-text2); font-size:13.5px; }
.fr-agree{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); background:var(--fr-soft); }
.fr-calc{ background:var(--fr-soft); color:var(--fr-ink); }

/* ---------------- 项目网格 / 列表 ---------------- */
.fr-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; background:var(--fr-border);
    border:1px solid var(--fr-border); }
.fr-item{ border:0; border-radius:0; box-shadow:none; background:#fff; padding:26px 24px; }
.fr-item:hover{ transform:none; box-shadow:none; border-color:transparent; background:var(--fr-soft); }
.fr-item h3{ font-size:19px; font-weight:700; letter-spacing:var(--fr-tz); line-height:1.4; }
.fr-item p{ font-size:14px; color:var(--fr-text2); line-height:1.75; }
.fr-item-meta{ font-size:12.5px; color:var(--fr-muted); }
.fr-item-act{ gap:8px; }
.fr-list{ gap:0; border-top:1px solid var(--fr-border); }
.fr-list-item{ border:0; border-bottom:1px solid var(--fr-border); border-radius:0; padding:22px 4px; background:#fff; }
.fr-list-item:hover{ box-shadow:none; border-color:var(--fr-border); background:var(--fr-soft); }
.fr-list-top b{ font-size:16.5px; letter-spacing:var(--fr-tz); }
.fr-list-meta{ font-size:12.5px; }

/* ---------------- 徽标 ---------------- */
.fr-badge{ border-radius:2px; padding:2px 9px; font-size:11.5px; letter-spacing:.06em; line-height:18px; font-weight:600; }
.fr-b-wait{ background:var(--fr-warn-soft); color:var(--fr-warn-deep); }
.fr-b-ok{ background:var(--fr-ok-soft); color:var(--fr-ok-deep); }
.fr-b-danger{ background:var(--fr-danger-soft); color:var(--fr-danger-deep); }
.fr-b-done{ background:var(--fr-soft); color:var(--fr-ink); }
.fr-b-gray{ background:#f2f2f0; color:var(--fr-text2); }
.fr-b-fee{ background:var(--fr-warn-soft); color:var(--fr-warn-deep); }
.fr-b-paid{ background:var(--fr-ok-soft); color:var(--fr-ok-deep); }

/* ---------------- 标签页 / 分页 / 表格 ---------------- */
.fr-tabs{ gap:0; padding:0; background:transparent; border-radius:0; border-bottom:1px solid var(--fr-border); }
.fr-tabs a{ flex:0 0 auto; padding:11px 16px; border-radius:0; color:var(--fr-muted); font-size:14px;
    border-bottom:2px solid transparent; }
.fr-tabs a.on{ background:none; box-shadow:none; color:var(--fr-ink); font-weight:700; border-bottom-color:var(--fr-rule); }
.fr-pager{ text-align:left; }
.fr-pager .pagination{ gap:0; }
.fr-pager .pagination li a,.fr-pager .pagination li span{ min-width:36px; padding:8px 12px; border-radius:0;
    border-color:var(--fr-border); color:var(--fr-ink); font-variant-numeric:tabular-nums; }
.fr-pager .pagination li a:hover{ background:var(--fr-soft); }
.fr-pager .pagination li.active span{ background:var(--fr-ink); color:#fff; }
.fr-pager .pagination li.disabled span{ color:#c9c9c5; }
.fr-table{ background:#fff; }
.fr-table th{ background:var(--fr-soft); color:var(--fr-muted); font-size:11.5px; letter-spacing:.1em;
    font-weight:600; border-color:var(--fr-border); }
.fr-table td{ border-color:var(--fr-border2); }
.fr-table tbody tr:hover{ background:var(--fr-soft); }

/* ---------------- 提示 / 空状态 / 回执 ---------------- */
.fr-alert{ border-radius:var(--fr-radius); padding:12px 16px; font-size:13.5px; border-left:2px solid transparent; }
.fr-alert-info{ background:var(--fr-soft); color:var(--fr-text2); border-left-color:var(--fr-ink); }
.fr-alert-warn{ background:var(--fr-warn-soft); color:var(--fr-warn-deep); border-left-color:var(--fr-warn); }
.fr-alert-danger{ background:var(--fr-danger-soft); color:var(--fr-danger-deep); border-left-color:var(--fr-danger); }
.fr-alert-ok{ background:var(--fr-ok-soft); color:var(--fr-ok-deep); border-left-color:var(--fr-ok); }
.fr-none,.fr-empty{ color:var(--fr-muted); }
.fr-none i,.fr-empty i{ color:#d5d4cf; }
.fr-notic{ color:var(--fr-muted); }
.fr-receipt{ padding:34px 16px 10px; }
.fr-receipt-no{ background:#fff; border:1px solid var(--fr-ink); border-radius:var(--fr-radius);
    color:var(--fr-ink); font-size:26px; letter-spacing:.12em; }
.fr-receipt-tip{ color:var(--fr-text2); }
/* 提交成功页：方框对勾 + 大标题 */
.fr-done-ico{ width:56px; height:56px; margin:0 auto 16px; display:flex; align-items:center; justify-content:center;
    border:1px solid var(--fr-ink); color:var(--fr-ink); font-size:22px; }
.fr-done-t{ margin:0 0 8px; font-size:26px; font-weight:800; letter-spacing:var(--fr-tz); color:var(--fr-ink); }
.fr-dl dt{ color:var(--fr-muted); }
.fr-d-img img{ border-radius:var(--fr-radius); }
.fr-tpl-h2{ font-size:23px; letter-spacing:var(--fr-tz); }

/* ---------------- 登录 / 注册 ---------------- */
.fr-login-wrap{ max-width:440px; margin:56px auto 0; }
.fr-login-card{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); box-shadow:none; padding:34px 30px; }
.fr-login-card h2{ font-size:22px; letter-spacing:var(--fr-tz); }
.fr-login-card .fr-sub{ color:var(--fr-muted); }
.fr-login-alt{ border-top:1px solid var(--fr-border); padding-top:15px; color:var(--fr-muted); }
.fr-code-img{ border-radius:var(--fr-radius); border-color:var(--fr-border); }

/* ---------------- 回执查询 ---------------- */
.fr-q-result{ border-color:var(--fr-border); }
.fr-q-result::before{ background:var(--fr-ink); height:2px; }
.fr-q-result-no b{ color:var(--fr-ink); }
.fr-q-copy{ border-radius:var(--fr-radius); color:var(--fr-muted); }
.fr-q-copy:hover{ color:var(--fr-ink); border-color:var(--fr-ink); background:#fff; }
.fr-q-ctrl > i{ color:var(--fr-muted); }
.fr-q-ctrl .fr-in{ border-radius:var(--fr-radius); }
.fr-q-meta-i{ background:#fff; border:1px solid var(--fr-border); border-radius:var(--fr-radius); }
.fr-q-meta-i > b{ color:var(--fr-ink); }
.fr-q-memo{ background:var(--fr-warn-soft); border-radius:var(--fr-radius); color:var(--fr-warn-deep); }
.fr-q-acc-box{ background:var(--fr-soft); border:1px solid var(--fr-border); border-radius:var(--fr-radius); }
.fr-q-acc-ok{ background:var(--fr-ok-soft); border-color:var(--fr-ok-soft); }
.fr-q-acc-icon{ background:var(--fr-ink); border-radius:var(--fr-radius); box-shadow:none; }
.fr-q-acc-ok .fr-q-acc-icon{ background:var(--fr-ok); box-shadow:none; }
.fr-q-acc-name{ color:var(--fr-ink); }
.fr-q-cred-i{ background:#fff; border:1px dashed var(--fr-border); border-radius:var(--fr-radius); }
.fr-q-cred-i b{ color:var(--fr-ink); }
.fr-q-row{ background:#fff; border:1px solid var(--fr-border); border-radius:var(--fr-radius); }
.fr-q-row-v{ color:var(--fr-ink); }
.fr-q-login-tip{ background:var(--fr-soft); color:var(--fr-text2); border-radius:var(--fr-radius); }
.fr-q-count{ background:var(--fr-soft); color:var(--fr-muted); }
.fr-q-mini .fr-card-bd{ padding:16px; }

/* ---------------- 场次 / 投票 / 步骤 / 时间线 ---------------- */
.fr-slot-box{ border-radius:var(--fr-radius); }
.fr-slot:hover .fr-slot-box{ border-color:var(--fr-ink); background:#fff; }
.fr-slot input:checked + .fr-slot-box{ border-color:var(--fr-ink); background:var(--fr-soft); box-shadow:none; }
.fr-slot input:checked + .fr-slot-box .fr-slot-name{ color:var(--fr-ink); font-weight:700; }
.fr-vote-box{ border-radius:var(--fr-radius); }
.fr-vote:hover .fr-vote-box{ border-color:var(--fr-ink); background:#fff; }
.fr-vote input:checked + .fr-vote-box{ border-color:var(--fr-ink); background:var(--fr-soft); box-shadow:none; }
.fr-vote input:checked + .fr-vote-box .fr-vote-t{ color:var(--fr-ink); font-weight:700; }
.fr-vote input:checked + .fr-vote-box .fr-vote-pick{ color:var(--fr-accent); }
.fr-vote-bar{ height:8px; border-radius:0; background:#efeee9; }
.fr-vote-bar > i{ border-radius:0; }
.fr-vote-n b{ color:var(--fr-ink); }
.fr-steps{ gap:0; border-bottom:1px solid var(--fr-border); }
.fr-step-i{ border-radius:0; padding:9px 16px 9px 0; background:none; color:var(--fr-muted); }
.fr-step-i b{ border-radius:0; background:#e6e5e0; color:#fff; }
.fr-step-i.on{ background:none; color:var(--fr-ink); font-weight:700; }
.fr-step-i.on b{ background:var(--fr-accent); }
.fr-group-title{ border-left:0; border-bottom:1px solid var(--fr-border); padding:0 0 9px; margin:10px 0 18px;
    font-size:15px; letter-spacing:var(--fr-tz); }
.fr-tl-av{ border-radius:var(--fr-radius); background:var(--fr-muted); }
.fr-tl-item.fr-admin .fr-tl-av{ background:var(--fr-ink); }
.fr-tl-main{ background:#fff; border:1px solid var(--fr-border); border-radius:var(--fr-radius); }
.fr-tl-item.fr-admin .fr-tl-main{ background:var(--fr-soft); border-color:var(--fr-border); }
.fr-up{ border:1px dashed var(--fr-border); border-radius:var(--fr-radius); background:#fff; }
.fr-up-img img,.fr-up-file{ border-radius:var(--fr-radius); }
.fr-up-file{ background:var(--fr-soft); }
.fr-up-add{ border:1px dashed var(--fr-border); border-radius:var(--fr-radius); color:var(--fr-ink); background:#fff; }
.fr-up-add:hover{ border-color:var(--fr-ink); }
.fr-up-del{ border-radius:2px; }
.fr-sign-canvas{ border-radius:var(--fr-radius); background:#fff; }
.fr-cp,.fr-cp-notice,.fr-cp-min{ border-radius:var(--fr-radius); }
.fr-quiz{ border-radius:var(--fr-radius); background:var(--fr-soft); border-color:var(--fr-border); }
.fr-quiz-num{ color:var(--fr-ink); }
.fr-quiz-row{ background:#fff; border-radius:var(--fr-radius); }
.fr-quiz-p{ color:var(--fr-accent); }
.fr-quiz-list{ border-top-color:var(--fr-border); }
.fr-as-sat{ background:var(--fr-ok-soft); border-color:var(--fr-ok-soft); border-radius:var(--fr-radius); }
.fr-as-sat-form{ background:var(--fr-soft); border-radius:var(--fr-radius); }
.fr-fee{ border:1px solid #eadfc4; border-radius:var(--fr-radius); background:var(--fr-warn-soft); }
.fr-fee-qr img{ border-radius:var(--fr-radius); border-color:var(--fr-border); }
.fr-modal{ background:rgba(17,17,17,.5); }
.fr-modal-box{ border-radius:var(--fr-radius); box-shadow:var(--fr-shadow-lg); }
.fr-modal-tip{ border-radius:var(--fr-radius); background:var(--fr-soft); color:var(--fr-text2); }
.fr-res-slot{ border-radius:var(--fr-radius); }
.fr-res-slot:hover{ border-color:var(--fr-ink); background:#fff; }
.fr-res-slot.on{ border-color:var(--fr-ink); background:var(--fr-soft); box-shadow:none; }
.fr-res-slot-price{ color:var(--fr-accent); }
.fr-ck-item{ border-radius:var(--fr-radius); background:#fff; }
.fr-ck-code{ color:var(--fr-ink); }
.fr-ck-qr{ border-radius:var(--fr-radius); }
.fr-wl-notice{ border-radius:var(--fr-radius); background:var(--fr-warn-soft); }

/* ---------------- 分享（P47） ---------------- */
.fr-share-bar{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); background:#fff; padding:12px 16px; }
.fr-share-tt{ font-size:12.5px; letter-spacing:.06em; color:var(--fr-muted); font-weight:500; }
.fr-share-tt i{ color:var(--fr-accent); }

/* ---------------- 页脚 ---------------- */
.fr-foot{ text-align:left; color:var(--fr-muted); font-size:12.5px; padding:26px 0 40px;
    max-width:1120px; margin:0 auto; padding-left:28px; padding-right:28px;
    border-top:1px solid var(--fr-border); margin-top:56px; }

/* ---------------- P12-B 低代码 / 数据类组件 ---------------- */
.fr-code-box{ border-radius:var(--fr-radius); background:#111; }
.fr-stat-card,.fr-mkpi{ border-radius:var(--fr-radius); }
.fr-stat-card,.fr-mkpi-i{ border:1px solid var(--fr-border); background:#fff; box-shadow:none; }
.fr-mkpi-v{ font-variant-numeric:tabular-nums; }
.fr-bar-fg{ border-radius:0; }

/* ---------------- 清理旧版残留的蓝色 / 渐变（这些选择器优先级高于上面的基础覆盖） ---------------- */
.fr-biz-card .fr-card-hd{ background:#fff; border-bottom:1px solid var(--fr-border); }
.fr-stat-card .n{ color:var(--fr-ink); }
.fr-bar-fg{ background:var(--fr-ink); }
.fr-chat-row.fr-chat-user .fr-chat-avatar{ background:var(--fr-ink); }
.fr-chat-row.fr-chat-user .fr-chat-text{ background:var(--fr-soft); border-color:var(--fr-border); }
.fr-pay-channel:hover{ border-color:var(--fr-ink); color:var(--fr-ink); box-shadow:none; }
.fr-pay-channel.on{ border-color:var(--fr-ink); background:var(--fr-soft); box-shadow:none; }
.fr-pager .active{ background:var(--fr-ink); border-color:var(--fr-ink); color:#fff; }
.pn-rule:hover,.pn-good:hover{ border-color:var(--fr-ink); box-shadow:none; }
.fr-b-doing{ background:var(--fr-soft); color:var(--fr-ink); }
.fr-alert-ok,.fr-as-sat{ border-left-color:var(--fr-ok); }
.fr-tabs a.on,.fr-head-nav a.on{ box-shadow:none; }

/* ---------------- 语言切换 ---------------- */
.fr-lang{ position:relative; }
.fr-lang-cur{ gap:6px; }
.fr-lang-box{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); box-shadow:var(--fr-shadow-lg); padding:6px; }
.fr-lang-box a{ border-radius:var(--fr-radius); color:var(--fr-text2); }
.fr-lang-box a:hover{ background:var(--fr-soft); color:var(--fr-ink); }
.fr-lang-box a.on{ background:var(--fr-ink); color:#fff; font-weight:600; }

/* ---------------- V2 新增：主视觉提示词 / 区块标题 / 索引式列表 ---------------- */
.fr-hero-kicker{ display:inline-block; margin-bottom:16px; font-size:12px; letter-spacing:var(--fr-mz);
    color:var(--fr-accent); }
.fr-sec-head{ display:flex; align-items:baseline; gap:14px; margin:56px 0 0; padding-bottom:14px;
    border-bottom:2px solid var(--fr-rule); }
.fr-sec-head h2{ font-size:24px; font-weight:800; letter-spacing:var(--fr-tz); }
.fr-sec-head .fr-sec-micro{ font-size:11px; letter-spacing:var(--fr-mz); text-transform:uppercase; color:var(--fr-muted); }
.fr-sec-head .fr-sec-side{ margin-left:auto; font-size:13px; color:var(--fr-muted); }
/* 内页页头：作为整页第一屏标题使用 */
.fr-sec-head.is-page{ margin-top:38px; }
.fr-idx{ border-bottom:1px solid var(--fr-border); }
.fr-idx-row{ display:grid; grid-template-columns:72px minmax(0,1fr) 200px 150px; gap:28px;
    align-items:start; padding:26px 0; border-top:1px solid var(--fr-border); transition:.15s; }
.fr-idx-row:hover{ background:var(--fr-soft); }
.fr-idx-no{ font:600 15px/1 var(--fr-mono); color:var(--fr-muted); padding-top:7px; }
.fr-idx-t{ font-size:20px; font-weight:700; letter-spacing:var(--fr-tz); line-height:1.35; }
.fr-idx-row:hover .fr-idx-t{ color:var(--fr-accent); }
.fr-idx-d{ margin-top:8px; font-size:14px; color:var(--fr-text2); line-height:1.7; }
.fr-idx-badges{ display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }
.fr-idx-meta{ padding-top:6px; font-size:13px; color:var(--fr-text2); line-height:1.9; }
.fr-idx-meta em{ display:block; font-style:normal; font-size:11px; letter-spacing:.08em; color:var(--fr-muted); }
.fr-idx-meta b{ font-weight:700; color:var(--fr-ink); }
.fr-idx-act{ padding-top:4px; text-align:right; }
.fr-idx-empty{ padding:56px 0; text-align:center; color:var(--fr-muted); border-top:1px solid var(--fr-border); }
/* 通用内页分区 / 文档块 / 小卡片（电子签署等内页共用） */
.fr-sec{ margin-top:22px; }
.fr-sec-t{ margin:0 0 10px; font-size:14.5px; font-weight:700; color:var(--fr-ink); letter-spacing:var(--fr-tz); }
.fr-sec-t i{ color:var(--fr-accent); margin-right:5px; }
.fr-doc{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); padding:16px 18px;
    font-size:14px; line-height:1.9; color:var(--fr-text); background:var(--fr-soft); word-break:break-word; }
.fr-sign-box{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); padding:16px 18px; background:var(--fr-soft); }
.fr-sign-split{ margin-top:18px; padding-top:14px; border-top:1px dashed var(--fr-border); }
.fr-card-list{ display:flex; gap:12px; flex-wrap:wrap; }
.fr-card-mini{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); padding:12px 14px;
    min-width:180px; background:#fff; }
.fr-card-mini-t{ font-size:13px; font-weight:600; color:var(--fr-text); }
.fr-card-mini img{ display:block; max-width:220px; max-height:90px; margin-top:8px;
    border:1px solid var(--fr-border); border-radius:var(--fr-radius); background:#fff; }
.fr-card-mini-e{ font-size:12.5px; color:var(--fr-muted); margin-top:8px; }
.fr-card-mini-m{ font-size:11.5px; color:var(--fr-muted); margin-top:6px; }
.fr-btn-row{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-top:14px; }
.fr-fg-narrow{ max-width:420px; }
.fr-fg-wide{ max-width:520px; }
.fr-hint{ margin-top:8px; font-size:12.5px; color:var(--fr-muted); }
.fr-mono{ font-family:var(--fr-mono); }
/* 小工具 */
.fr-mt{ margin-top:14px; }
.fr-hd-right{ margin-left:auto; font-size:12.5px; color:var(--fr-muted); }
.fr-filter-row{ display:flex; gap:8px; flex-wrap:wrap; margin:14px 0; }
.fr-mb{ margin-bottom:16px; }
/* 文章页 */
.fr-crumb{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:30px 0 14px;
    font-size:13px; color:var(--fr-muted); }
.fr-crumb a{ color:var(--fr-ink); }
.fr-crumb a:hover{ color:var(--fr-accent); }
.fr-crumb-cur{ color:var(--fr-muted); }
.fr-article-t{ margin:0 0 12px; font-size:24px; font-weight:800; line-height:1.45;
    letter-spacing:var(--fr-tz); color:var(--fr-ink); }
.fr-prose{ font-size:14.5px; line-height:1.95; color:var(--fr-text); word-break:break-word; }
.fr-prose img{ max-width:100%; border-radius:var(--fr-radius); }
.fr-prose h1,.fr-prose h2,.fr-prose h3{ color:var(--fr-ink); letter-spacing:var(--fr-tz); }
.fr-prose a{ color:var(--fr-accent); }
.fr-article-foot{ display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:20px;
    padding-top:16px; border-top:1px solid var(--fr-border); }
.fr-act-row{ display:flex; gap:10px; flex-wrap:wrap; margin:18px 0; }
/* 分享页图表（数据动态，颜色统一走令牌） */
.fr-pie{ width:200px; height:200px; border-radius:50%; margin:14px auto; border:1px solid var(--fr-border); }
.fr-chart{ display:flex; align-items:flex-end; gap:10px; height:200px; padding:10px 0; overflow-x:auto; }
.fr-chart.is-line{ gap:6px; height:160px; border-bottom:1px solid var(--fr-border); }
.fr-chart-i{ flex:0 0 auto; text-align:center; min-width:52px; }
.fr-chart.is-line .fr-chart-i{ min-width:40px; }
.fr-chart-bar{ width:34px; margin:0 auto; background:var(--fr-ink); border-radius:2px 2px 0 0; }
.fr-chart-dot{ width:8px; margin:0 auto; background:var(--fr-ink); border-radius:2px; }
.fr-chart-lb{ margin-top:6px; font-size:11px; color:var(--fr-muted); max-width:64px;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fr-chart.is-line .fr-chart-lb{ max-width:56px; }
/* 选项行（同意目的 / Cookie 分类 / 退款订单等） */
.fr-opt{ border:1px solid var(--fr-border); border-radius:var(--fr-radius);
    padding:13px 15px; margin-bottom:10px; background:#fff; }
.fr-opt:last-child{ margin-bottom:0; }
.fr-opt-flat{ margin-top:12px; }
.fr-opt-row{ display:flex; align-items:flex-start; gap:14px; }
.fr-opt-main{ flex:1; min-width:0; }
.fr-opt-t{ font-size:14px; font-weight:600; color:var(--fr-ink); }
.fr-opt-d{ margin-top:6px; font-size:13px; color:var(--fr-muted); line-height:1.8; }
.fr-opt-sw{ flex:0 0 auto; }
.fr-opt-sw span{ font-size:13px; color:var(--fr-text2); }
.fr-opt-table{ margin-top:12px; }
/* 单选项行 */
.fr-radio-row{ display:flex; gap:20px; flex-wrap:wrap; padding-top:6px; }
.fr-radio-row label{ display:flex; align-items:center; gap:6px; font-size:14px; color:var(--fr-text); cursor:pointer; }
/* 折叠条款 */
.fr-details summary{ cursor:pointer; font-size:15px; font-weight:600; color:var(--fr-ink); }
.fr-details summary:hover{ color:var(--fr-accent); }
.fr-details-bd{ margin-top:12px; }

/* 在线客服：双栏会话 + 消息气泡 */
.fr-chat-wrap{ display:flex; gap:16px; flex-wrap:wrap; align-items:flex-start; margin-top:18px; }
.fr-chat-side{ flex:0 0 300px; min-width:260px; display:flex; flex-direction:column; gap:14px; }
.fr-chat-pane{ flex:1; min-width:300px; display:flex; flex-direction:column;
    border:1px solid var(--fr-border); border-radius:var(--fr-radius); background:#fff; }
.fr-chat-pane-hd{ display:flex; align-items:center; gap:8px; padding:12px 16px;
    border-bottom:1px solid var(--fr-border); }
.fr-chat-sid{ font-size:14px; font-weight:600; color:var(--fr-ink); }
.fr-chat-refresh{ margin-left:auto; }
.fr-chat-body{ flex:1; max-height:460px; overflow-y:auto; padding:16px; }
.fr-chat-foot{ padding:14px 16px; border-top:1px solid var(--fr-border); }
.fr-panel{ border:1px solid var(--fr-border); border-radius:var(--fr-radius); padding:14px 15px; background:#fff; }
.fr-panel-t{ margin:0 0 10px; font-size:13.5px; font-weight:700; color:var(--fr-ink); letter-spacing:var(--fr-tz); }
.fr-panel-t i{ color:var(--fr-accent); margin-right:5px; }
.fr-panel-act{ margin-top:12px; }
.fr-sess-list{ display:flex; flex-direction:column; gap:8px; }
.fr-sess{ display:block; border:1px solid var(--fr-border); border-radius:var(--fr-radius);
    padding:11px 13px; color:inherit; transition:.15s; }
.fr-sess:hover{ border-color:var(--fr-ink); color:inherit; }
.fr-sess.on{ border-color:var(--fr-ink); background:var(--fr-soft); }
.fr-sess-hd{ display:flex; align-items:center; gap:8px; }
.fr-sess-no{ font-size:13px; font-weight:600; color:var(--fr-ink); font-family:var(--fr-mono); }
.fr-sess-st{ margin-left:auto; font-size:12px; color:var(--fr-muted); }
.fr-sess-sub{ margin-top:6px; font-size:12.5px; color:var(--fr-muted); line-height:1.6; }
.fr-sess-time{ margin-top:4px; font-size:11.5px; color:var(--fr-muted); }
.fr-msg{ margin:10px 0; }
.fr-msg-b{ display:inline-block; max-width:78%; padding:9px 13px; font-size:13.5px; line-height:1.7;
    border:1px solid var(--fr-border); border-radius:var(--fr-radius); background:#fff;
    color:var(--fr-ink); word-break:break-word; text-align:left; }
.fr-msg-meta{ margin-top:4px; font-size:11.5px; color:var(--fr-muted); }
.fr-msg.is-me{ text-align:right; }
.fr-msg.is-me .fr-msg-b{ background:var(--fr-ink); border-color:var(--fr-ink); color:#fff; }
.fr-msg.is-other{ text-align:left; }
.fr-msg.is-sys{ text-align:center; font-size:12.5px; color:var(--fr-muted); }
.fr-msg-time{ color:#c9c9c5; }
.fr-rate-panel{ border:1px solid var(--fr-border); border-radius:var(--fr-radius);
    background:var(--fr-warn-soft); padding:14px 15px; }
.fr-rate-row{ display:flex; gap:18px; align-items:center; flex-wrap:wrap; margin-bottom:12px; }
.fr-rate-row label{ display:flex; align-items:center; gap:5px; font-size:13px; color:var(--fr-text); cursor:pointer; }

/* 会员中心：工作台头部（带状） */
.fr-wb-head{ display:flex; align-items:center; gap:20px; flex-wrap:wrap; margin-top:36px;
    padding-bottom:22px; border-bottom:2px solid var(--fr-rule); }
.fr-wb-main{ display:flex; align-items:center; gap:16px; flex:1; min-width:260px; }
.fr-wb-av{ flex:none; width:54px; height:54px; border-radius:var(--fr-radius); object-fit:cover;
    border:1px solid var(--fr-border); }
.fr-wb-av-i{ display:flex; align-items:center; justify-content:center; background:var(--fr-ink);
    color:#fff; font-size:20px; }
.fr-wb-info{ min-width:0; }
.fr-wb-name{ margin:0; font-size:23px; font-weight:800; letter-spacing:var(--fr-tz); color:var(--fr-ink); }
.fr-wb-meta{ display:flex; flex-wrap:wrap; gap:4px 20px; margin-top:7px; font-size:12.5px; color:var(--fr-muted); }
.fr-wb-meta b{ color:var(--fr-ink); font-weight:600; }
.fr-wb-act{ display:flex; gap:8px; flex-wrap:wrap; }
/* 回执查询：条件输入带（不再用浮在 hero 上的卡片） */
.fr-q-band{ padding:26px 0 6px; }
.fr-q-band .fr-q-actions{ margin-top:22px; }
/* 首页底部的「凭回执查询」引导条 */
.fr-cta-bar{ display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin:52px 0 0;
    padding:26px 28px; border:1px solid var(--fr-border); background:var(--fr-soft); }
.fr-cta-bar .fr-cta-t{ flex:1; min-width:220px; }
.fr-cta-bar .fr-cta-t b{ display:block; font-size:16px; letter-spacing:var(--fr-tz); color:var(--fr-ink); margin-bottom:5px; }
.fr-cta-bar .fr-cta-t span{ font-size:12.5px; color:var(--fr-muted); }

@media (max-width:820px){
    .fr-sec-head{ margin-top:36px; }
    .fr-sec-head h2{ font-size:19px; }
    .fr-sec-head .fr-sec-micro{ display:none; }
    .fr-idx-row{ grid-template-columns:minmax(0,1fr); gap:10px; padding:20px 0; }
    .fr-idx-no{ padding-top:0; }
    .fr-idx-act{ text-align:left; }
    .fr-idx-t{ font-size:17px; }
    .fr-cta-bar{ margin-top:32px; padding:20px; }
}

/* ---------------- 响应式 ---------------- */
@media (max-width:820px){
    .fr-page{ font-size:14.5px; }
    .fr-wrap{ padding:0 18px; }
    /* 头部改两行：第一行 logo + 账户入口；第二行整条导航（可横向滑动），避免导航被压成一条细缝 */
    .fr-head-inner{ height:auto; padding:10px 18px 0; flex-wrap:wrap; gap:0 12px; align-items:center; }
    .fr-logo{ font-size:16.5px; order:1; }
    .fr-head-cta{ order:2; margin-left:auto; gap:12px; }
    .fr-head-cta a{ font-size:13px; }
    .fr-head-cta a.fr-cta-primary{ padding:6px 13px; }
    .fr-head-nav{ order:3; flex:1 0 100%; width:100%; margin-top:9px; padding:0 0 7px; gap:2px;
        overflow-x:auto; flex-wrap:nowrap; -webkit-overflow-scrolling:touch; scrollbar-width:none;
        border-top:1px solid var(--fr-border2); }
    .fr-head-nav::-webkit-scrollbar{ display:none; }
    .fr-head-nav a{ height:34px; padding:0 8px; font-size:13.5px; }
    .fr-hero-inner{ padding:40px 18px 0; }
    .fr-wb-head{ margin-top:24px; gap:14px; padding-bottom:18px; }
    .fr-wb-name{ font-size:19px; }
    .fr-wb-act{ width:100%; }
    .fr-hero h1{ font-size:28px; }
    .fr-hero p{ font-size:14.5px; }
    .fr-card-hd{ padding:15px 18px 12px; }
    .fr-card-bd{ padding:18px; }
    .fr-grid{ grid-template-columns:minmax(0,1fr); }
    .fr-login-wrap{ margin:28px auto 0; }
    .fr-login-card{ padding:24px 20px; }
    .fr-foot{ padding-left:18px; padding-right:18px; margin-top:40px; }
    .fr-pull-up{ margin-top:0; }
    .fr-receipt-no{ font-size:20px; }
    .fr-tabs{ overflow-x:auto; }
}

/* ============================================================
   帮助中心（P51）：两栏布局 + 分类导航 + 相关文章 + 上/下一篇
   ============================================================ */
.fr-hp-cols{ display:flex; align-items:flex-start; gap:26px; }
.fr-hp-main{ flex:1; min-width:0; }
.fr-hp-side{ flex:0 0 286px; display:flex; flex-direction:column; gap:16px; }

/* 列表项摘要 */
.fr-hp-sum{ font-size:13px; line-height:1.8; color:var(--fr-text2); margin-bottom:8px; }

/* 侧栏：文章分类 */
.fr-hp-nav{ display:flex; flex-direction:column; }
.fr-hp-nav-i{ display:flex; align-items:center; gap:8px; padding:9px 12px; border-left:2px solid transparent;
    font-size:13.5px; color:var(--fr-text); transition:.15s; }
.fr-hp-nav-i:hover{ background:var(--fr-soft); color:var(--fr-ink); }
.fr-hp-nav-i.on{ border-left-color:var(--fr-accent); background:var(--fr-soft); color:var(--fr-ink); font-weight:700; }
.fr-hp-nav-i em{ margin-left:auto; font-style:normal; font-size:12px; color:var(--fr-muted); }

/* 侧栏：热门文章（前三名标号反白） */
.fr-hp-hot{ display:flex; flex-direction:column; gap:10px; }
.fr-hp-hot-i{ display:flex; gap:9px; font-size:13px; line-height:1.6; color:var(--fr-text); transition:.15s; }
.fr-hp-hot-i:hover{ color:var(--fr-ink); }
.fr-hp-hot-i em{ flex:none; width:18px; height:18px; margin-top:2px; font-style:normal; font-size:11px;
    line-height:18px; text-align:center; color:var(--fr-muted); border:1px solid var(--fr-border); border-radius:2px; }
.fr-hp-hot-i:nth-child(-n+3) em{ color:#fff; background:var(--fr-accent); border-color:var(--fr-accent); }

/* 相关文章（两列细线栅格） */
.fr-hp-rel{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 26px;
    border-top:1px solid var(--fr-border); }
.fr-hp-rel-i{ display:block; padding:15px 6px; border-bottom:1px solid var(--fr-border);
    color:var(--fr-text); transition:.15s; }
.fr-hp-rel-i:hover{ color:var(--fr-ink); background:var(--fr-soft); }
.fr-hp-rel-t{ font-size:14px; font-weight:600; color:var(--fr-ink); line-height:1.65;
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.fr-hp-rel-m{ display:block; margin-top:6px; font-size:12px; color:var(--fr-muted); }

/* 上一篇 / 下一篇 */
.fr-hp-pn{ display:flex; gap:14px; margin:0 0 22px; }
.fr-hp-pn-i{ flex:1; min-width:0; display:block; padding:15px 18px; border:1px solid var(--fr-border);
    border-radius:var(--fr-radius); background:var(--fr-card); color:var(--fr-text); transition:.15s; }
.fr-hp-pn-i.is-nex{ text-align:right; }
.fr-hp-pn-i.is-off{ color:var(--fr-muted); }
.fr-hp-pn-i:not(.is-off):hover{ border-color:var(--fr-ink); }
.fr-hp-pn-k{ display:block; font-size:11px; letter-spacing:.1em; color:var(--fr-muted); }
.fr-hp-pn-t{ display:block; margin-top:6px; font-size:13.5px; font-weight:600; color:var(--fr-ink);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.fr-hp-pn-i.is-off .fr-hp-pn-t{ color:var(--fr-muted); font-weight:400; }

/* 响应式：≤980px 单栏；列表页把「分类目录」提到列表之前 */
@media (max-width: 980px){
    .fr-hp-cols{ flex-direction:column; gap:18px; }
    .fr-hp-side{ flex:1 1 auto; width:100%; }
    .fr-hp-cols.is-list .fr-hp-side{ order:-1; }
    .fr-hp-rel{ grid-template-columns:1fr; gap:0; }
    .fr-hp-pn{ flex-direction:column; gap:10px; }
}

/* ============================================================
   嵌入模式（表单页 ?embed=1 或 ?frembed=key）：只输出「表单 + 表单说明」
   模板层已不输出顶部导航 / 页脚 / 底部相关入口，这里再收掉页面级留白，
   让 iframe 里的内容从表单本身开始、铺满可用宽度。
   ============================================================ */
.fr-hero-form.is-embed{ padding:0 0 20px; }
.fr-hero-form.is-embed .fr-hero-inner{ max-width:none; padding:0; }
.fr-wrap.is-embed{ max-width:none; padding:0; }
.fr-wrap.is-embed > .fr-card:last-child{ margin-bottom:0; }

/* 片段模式（?embed=2，模板标签 {:fr_form()} 直出到宿主页）：
   用 .fr-page.fr-frag 包住内容，保证 .fr-page 作用域的字体/字号/链接色仍然生效，
   同时把「页面级」的底色、纹理与留白去掉 —— 否则宿主页里会多出一块异色区域。 */
.fr-page.fr-frag{ background:transparent; background-image:none; padding:0; margin:0; min-height:0; }

/* ============================================================
   P85 分享本表单（移到页面最底部）：二维码直接展示，不再只藏在弹层里
   ============================================================ */
.fr-share-bar{ align-items:flex-start; }
.fr-share-qrbox{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; width:100%; }
.fr-share-qr{ width:152px; height:152px; flex:0 0 auto; padding:8px; box-sizing:content-box;
    border:1px solid var(--fr-border); border-radius:14px; background:#fff; }
.fr-share-qrinfo{ display:flex; flex-direction:column; gap:9px; flex:1; min-width:220px; }
.fr-share-qrtip{ margin:0; font-size:12.5px; line-height:1.7; color:var(--fr-muted); }
.fr-share-acts{ display:flex; gap:8px; flex-wrap:wrap; }
@media (max-width:520px){
    .fr-share-qrbox{ gap:12px; }
    .fr-share-qr{ width:118px; height:118px; }
}

/* 紧凑版：放在提交按钮之前；二维码居中，文案与按钮居中竖排 */
.fr-share-inline{ padding:12px 12px 14px; margin:0 0 14px; text-align:center; }
.fr-share-inline .fr-share-qrbox{ flex-direction:column; align-items:center; gap:10px; }
.fr-share-inline .fr-share-qr{ width:96px; height:96px; padding:5px; border-radius:10px; }
.fr-share-inline .fr-share-qrinfo{ align-items:center; gap:6px; min-width:0; }
.fr-share-inline .fr-share-tt{ font-size:12.5px; }
.fr-share-inline .fr-share-qrtip{ font-size:11.5px; }
.fr-share-inline .fr-share-acts{ justify-content:center; }
.fr-share-inline .fr-btn{ padding:5px 11px; font-size:12.5px; }
@media (max-width:520px){
    .fr-share-inline .fr-share-qr{ width:80px; height:80px; }
}

/* ============================================================
   P88 提交区：提交登记 + 查询已提交的回执 —— 同一行并排，永不换行
   主按钮占满剩余宽度（桌面封顶 340px），回执按钮保持完整文字；窄屏自动收紧内边距。
   注：选择器用 0,3,0 特异性写，才能盖住主题叠加层里
       .fr-submit-row .fr-btn-primary{ min-width:170px; letter-spacing:.1em } 这条写死的规则。
   ============================================================ */
.fr-submit-row.fr-submit-2{ flex-wrap:nowrap; align-items:stretch; gap:12px; }
.fr-submit-row.fr-submit-2 .fr-btn-primary{ flex:1 1 auto; min-width:0; max-width:340px; }
.fr-submit-row.fr-submit-2 .fr-btn-default{ flex:0 0 auto; white-space:nowrap; }
@media (max-width:520px){
    .fr-submit-row.fr-submit-2{ gap:10px; }
    .fr-submit-row.fr-submit-2 .fr-btn{ padding-left:12px; padding-right:12px; font-size:13.5px; }
    .fr-submit-row.fr-submit-2 .fr-btn-primary{ letter-spacing:0; }
}
/* 极窄屏（≤380px）：把次按钮压到最省（12px 字号 + 8px 内边距），让主按钮自动占满剩余宽度
   —— 主按钮不再被“长文案的次按钮”挤得比它还窄，且两按钮总宽不会超出容器 */
@media (max-width:380px){
    .fr-submit-row.fr-submit-2{ gap:8px; }
    .fr-submit-row.fr-submit-2 .fr-btn-default{ padding-left:8px; padding-right:8px; font-size:12px; }
}

/* ============================================================
   P89 提交成功页（极简版）：不带任何菜单，整屏居中呈现「提交结果 + 回执编号 + 回执查询」
   ============================================================ */
/* 注：内部规则统一用 .fr-done-bare 前缀（0,2,0），才能盖住主题叠加层里
   .fr-card / h1 等同名元素样式（叠加层在公共样式之后加载，同特异性会赢）。 */
.fr-done-bare{ min-height:100vh; display:flex; align-items:center; justify-content:center; padding:48px 18px 64px; }
.fr-done-bare .fr-done-inner{ width:100%; max-width:520px; }
.fr-done-bare .fr-done-card{ padding:38px 26px 32px; text-align:center; margin:0; }
.fr-done-bare .fr-done-ico{ width:64px; height:64px; margin:0 auto 18px; border-radius:50%; font-size:28px;
    display:flex; align-items:center; justify-content:center;
    background:var(--fr-primary-soft,#eef6ff); color:var(--fr-primary); }
.fr-done-bare .fr-done-ico.is-warn{ background:#fff7ed; color:#b45309; }
.fr-done-bare .fr-done-title{ margin:0 0 10px; font-size:22px; font-weight:600; color:var(--fr-ink); }
.fr-done-bare .fr-done-msg{ margin:0 0 20px; font-size:13.5px; line-height:1.9; color:var(--fr-text2); }
.fr-done-bare .fr-done-receipt{ border:1px dashed var(--fr-border); border-radius:var(--fr-radius); padding:16px; margin:0 0 20px; }
.fr-done-bare .fr-done-receipt-label{ display:block; font-size:12px; letter-spacing:.12em; color:var(--fr-muted); margin-bottom:8px; }
.fr-done-bare .fr-done-receipt-no{ margin:0 0 12px; font-family:Consolas,Monaco,monospace; font-size:21px; font-weight:600;
    line-height:1.5; color:var(--fr-ink); word-break:break-all; }
.fr-done-bare .fr-done-acts{ display:flex; justify-content:center; gap:10px; flex-wrap:wrap; }
.fr-done-bare .fr-done-tip{ margin:18px 0 0; font-size:12px; line-height:1.8; color:var(--fr-muted); }
@media (max-width:520px){
    .fr-done-bare{ padding:28px 14px 40px; }
    .fr-done-bare .fr-done-card{ padding:30px 18px 24px; }
    .fr-done-bare .fr-done-receipt-no{ font-size:18px; }
}

/* ============================================================
   P92 回执查询页（极简版）：不带导航/页脚，居中窄卡片
   沿用「提交后跳转页样式」——分享渠道（会话）优先，其次全局设置
   ============================================================ */
/* 注：用 .fr-wrap.fr-query-bare（0,2,0）压过 .fr-wrap 的通用宽度与主题叠加层 */
.fr-wrap.fr-query-bare{ max-width:660px; margin:0 auto; padding:30px 16px 56px; }
.fr-qb-hero{ text-align:center; padding:8px 6px 22px; }
.fr-qb-hero .fr-qb-kicker{ display:inline-block; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:var(--fr-muted); margin-bottom:8px; }
.fr-qb-hero h1{ margin:0 0 10px; font-size:23px; font-weight:600; color:var(--fr-ink); }
.fr-qb-hero p{ margin:0 auto; max-width:460px; font-size:13.5px; line-height:1.9; color:var(--fr-text2); }
@media (max-width:520px){
    .fr-wrap.fr-query-bare{ padding:20px 10px 40px; }
    .fr-qb-hero{ padding:4px 2px 16px; }
    .fr-qb-hero h1{ font-size:20px; }
}

/* ============================================================
   P94 移动端导航：菜单项过多 → 折叠为图标，点击展开下拉面板
   桌面端 .fr-nav-panel 用 display:contents：包裹层不产生盒子，
   子元素就是 .fr-head-inner 的 flex 项，桌面布局与改前完全一致。
   ⚠️ 断点取 900 而非 820：实测 821~880 时 6 个导航项放不下，
      末项会压到右侧「登录/注册」上（原 820 断点遗留的重叠）。
   ============================================================ */
.fr-nav-panel{ display:contents; }
.fr-nav-toggle{ display:none; }

@media (max-width:900px){
    /* —— 头部一行：logo + 汉堡按钮 —— */
    .fr-head{ position:relative; }
    .fr-head-inner{ position:relative; height:auto; min-height:56px; padding:10px 16px;
        flex-wrap:nowrap; align-items:center; gap:10px; }
    .fr-logo{ order:1; margin-right:auto; font-size:16.5px; }

    .fr-nav-toggle{ order:2; margin-left:auto; display:inline-flex; align-items:center; justify-content:center;
        width:42px; height:42px; padding:0; background:transparent; color:inherit; cursor:pointer;
        border:1px solid rgba(0,0,0,.14); border-radius:10px; font-size:18px; line-height:1; }
    .fr-head.is-open .fr-nav-toggle{ background:rgba(0,0,0,.06); }
    .fr-nav-ico-close{ display:none; }
    .fr-head.is-open .fr-nav-ico-open{ display:none; }
    .fr-head.is-open .fr-nav-ico-close{ display:inline-block; }

    /* —— 下拉面板：覆盖在内容之上 —— */
    .fr-nav-panel{ display:none; position:absolute; left:0; right:0; top:100%; z-index:80;
        flex-direction:column; padding:6px 10px 12px; background:#fff;
        border-top:1px solid var(--fr-border2); box-shadow:0 18px 34px rgba(15,23,42,.18);
        max-height:calc(100vh - 62px); overflow-y:auto; -webkit-overflow-scrolling:touch; }
    .fr-head.is-open .fr-nav-panel{ display:flex; }

    /* 导航链接：纵向整行（排在最前） */
    .fr-head-nav{ order:1; flex:0 0 auto; width:auto; margin:0; padding:0; gap:1px; flex-direction:column;
        align-items:stretch; flex-wrap:wrap; overflow:visible; border-top:0; }
    .fr-head-nav a{ height:44px; padding:0 12px; border-radius:8px; border-bottom:0; font-size:15px;
        justify-content:flex-start; }
    .fr-head-nav a:hover{ background:var(--fr-soft); color:var(--fr-ink); }
    .fr-head-nav a.on{ background:var(--fr-soft); border-bottom-color:transparent; }

    /* 账户入口：排在导航之后，虚线分隔 */
    .fr-head-cta{ order:2; flex-direction:column; align-items:stretch; gap:1px; margin:8px 0 0; padding:8px 0 0;
        border-top:1px dashed var(--fr-border2); }
    .fr-head-cta a{ height:44px; padding:0 12px; border-radius:8px; font-size:15px;
        display:flex; align-items:center; justify-content:flex-start; }
    .fr-page .fr-head-cta a.fr-cta-primary{ height:44px; padding:0 12px; justify-content:center; }

    /* 语言切换：面板内展开为整行 */
    .fr-lang{ margin:0; }
    .fr-lang-cur{ height:44px; padding:0 12px; display:flex; align-items:center; justify-content:space-between; }
    .fr-lang-box{ position:static; width:100%; margin:0 0 4px; box-shadow:none; }
}

/* ============================================================
   P96 教练预约：分类筛选 + 教练卡片（资料）+ 该教练可约时段
   同一时段可由多位教练提供服务（一位教练一个场次）
   ============================================================ */
.fr-coach-cats{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 10px; }
.fr-coach-cat{ display:inline-flex; align-items:center; height:32px; padding:0 14px; border-radius:999px;
    border:1px solid var(--fr-border,#e5e7eb); background:#fff; color:var(--fr-text2,#475569);
    font-size:13px; cursor:pointer; text-decoration:none; transition:all .15s; }
.fr-coach-cat:hover{ border-color:var(--fr-primary,#2563eb); color:var(--fr-primary,#2563eb); }
.fr-coach-cat.is-on{ background:var(--fr-primary,#2563eb); border-color:var(--fr-primary,#2563eb); color:#fff; }
.fr-coach-lead{ margin:0 0 12px; font-size:12.5px; line-height:1.8; color:var(--fr-muted,#94a3b8); }
.fr-coach-list{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px; }
.fr-coach-card{ border:1px solid var(--fr-border,#e5e7eb); border-radius:var(--fr-radius,12px);
    background:#fff; padding:14px; }
.fr-coach-head{ display:flex; gap:10px; align-items:flex-start; }
.fr-coach-av{ width:52px; height:52px; border-radius:50%; object-fit:cover; flex:0 0 auto;
    background:var(--fr-soft,#f1f5f9); }
.fr-coach-av-ph{ display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:600;
    color:var(--fr-muted,#94a3b8); }
.fr-coach-info{ min-width:0; }
.fr-coach-name{ display:block; font-size:15px; color:var(--fr-ink,#0f172a); }
.fr-coach-title{ display:inline-block; margin-left:6px; padding:1px 7px; border-radius:6px; font-size:11px;
    font-weight:400; background:var(--fr-primary-soft,#eef6ff); color:var(--fr-primary,#2563eb); vertical-align:1px; }
.fr-coach-meta{ display:block; margin-top:3px; font-size:12px; color:var(--fr-muted,#94a3b8); }
.fr-coach-skills{ display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; }
.fr-coach-skills em{ font-style:normal; font-size:11.5px; padding:1px 7px; border-radius:6px;
    background:var(--fr-soft,#f1f5f9); color:var(--fr-text2,#475569); }
.fr-coach-intro{ margin:9px 0 0; font-size:12.5px; line-height:1.8; color:var(--fr-text2,#475569); }
.fr-coach-slots{ display:flex; flex-wrap:wrap; gap:8px; margin-top:11px; }
.fr-cslot{ display:inline-flex; flex-direction:column; gap:2px; padding:7px 11px; cursor:pointer;
    border:1px solid var(--fr-border,#e5e7eb); border-radius:10px; background:#fbfdff;
    font-size:12.5px; line-height:1.5; transition:all .15s; }
.fr-cslot:hover{ border-color:var(--fr-primary,#2563eb); }
.fr-cslot input{ display:none; }
.fr-cslot b{ font-weight:600; color:var(--fr-ink,#0f172a); }
.fr-cslot-day{ font-size:11.5px; color:var(--fr-muted,#94a3b8); }
.fr-cslot-cap{ font-size:11px; color:var(--fr-muted,#94a3b8); }
.fr-cslot-cap.is-full{ color:#b91c1c; }
.fr-cslot.is-on{ border-color:var(--fr-primary,#2563eb); background:var(--fr-primary-soft,#eff6ff);
    box-shadow:0 0 0 2px rgba(37,99,235,.12); }
.fr-cslot.is-full{ opacity:.5; cursor:not-allowed; }
.fr-coach-empty{ margin-top:10px; font-size:12.5px; color:var(--fr-muted,#94a3b8); }
@media (max-width:520px){
    .fr-coach-list{ grid-template-columns:1fr; }
}

/* P96 教练预约：教练胶囊 / 已选教练资料（两种展示方式共用） */
.fr-ccoach{ display:inline-flex; align-items:center; gap:8px; padding:6px 12px 6px 6px; cursor:pointer;
    border:1px solid var(--fr-border,#e5e7eb); border-radius:999px; background:#fbfdff; transition:all .15s; }
.fr-ccoach:hover{ border-color:var(--fr-primary,#2563eb); }
.fr-ccoach input{ display:none; }
.fr-ccoach-av{ width:30px; height:30px; border-radius:50%; object-fit:cover; flex:0 0 auto;
    background:var(--fr-soft,#f1f5f9); }
.fr-ccoach-av-ph{ display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:600;
    color:var(--fr-muted,#94a3b8); }
.fr-ccoach-txt{ display:flex; flex-direction:column; line-height:1.3; }
.fr-ccoach-txt b{ font-size:13px; font-weight:600; color:var(--fr-ink,#0f172a); }
.fr-ccoach-txt em{ font-style:normal; font-size:11px; color:var(--fr-muted,#94a3b8); }
.fr-ccoach.is-on{ border-color:var(--fr-primary,#2563eb); background:var(--fr-primary-soft,#eff6ff);
    box-shadow:0 0 0 2px rgba(37,99,235,.12); }
.fr-ccoach.is-full{ opacity:.5; cursor:not-allowed; }
.fr-ctime-picked{ margin-top:14px; padding:12px 14px; border:1px dashed var(--fr-primary,#2563eb);
    border-radius:var(--fr-radius,10px); background:var(--fr-primary-soft,#f8fbff); }
.fr-ctime-picked-h{ font-size:13.5px; color:var(--fr-ink,#0f172a); }
.fr-ctime-picked-h em{ font-style:normal; font-size:11px; padding:1px 7px; border-radius:6px;
    background:#fff; color:var(--fr-primary,#2563eb); }
.fr-ctime-picked-m,.fr-ctime-picked-s{ margin-top:4px; font-size:12px; color:var(--fr-text2,#475569); }
.fr-ctime-picked-i{ margin-top:6px; font-size:12.5px; line-height:1.8; color:var(--fr-text2,#475569); }

/* P96 教练预约 · 时段优先（两行式）：第一行列全部时间，第二行显示所选时间的教练 */
.fr-ct2-times{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 14px; }
.fr-ct2-time{ display:inline-flex; flex-direction:column; gap:2px; padding:8px 13px; cursor:pointer;
    border:1px solid var(--fr-border,#e5e7eb); border-radius:10px; background:#fbfdff;
    font-size:12.5px; line-height:1.45; text-decoration:none; transition:all .15s; }
.fr-ct2-time:hover{ border-color:var(--fr-primary,#2563eb); }
.fr-ct2-time b{ font-size:13.5px; color:var(--fr-ink,#0f172a); }
.fr-ct2-time em{ font-style:normal; font-size:11px; color:var(--fr-muted,#94a3b8); }
.fr-ct2-time span{ font-size:11px; color:var(--fr-muted,#94a3b8); }
.fr-ct2-time.is-on{ border-color:var(--fr-primary,#2563eb); background:var(--fr-primary-soft,#eff6ff);
    box-shadow:0 0 0 2px rgba(37,99,235,.12); }
.fr-ct2-panel{ min-height:64px; }
.fr-ct2-empty{ padding:16px; text-align:center; font-size:12.5px; color:var(--fr-muted,#94a3b8);
    border:1px dashed var(--fr-border,#e5e7eb); border-radius:10px; }
.fr-ct2-group{ display:none; padding:12px 14px; border:1px solid var(--fr-border,#e5e7eb);
    border-radius:var(--fr-radius,10px); background:#fbfdff; }
.fr-ct2-head{ margin-bottom:9px; font-size:12.5px; color:var(--fr-text2,#475569); }
.fr-ct2-coaches{ display:flex; flex-wrap:wrap; gap:8px; }
@media (max-width:520px){
    .fr-ct2-time{ padding:7px 11px; }
}


