/* ============================================================
   家校社协同育人 · 专题频道样式
   挂在 www.zzhjkw.org.cn/family/ 下，与官网 style.css 共存。
   所有类名一律 fm- 前缀，不覆盖官网任何既有样式。
   ============================================================ */

/* 变量同时挂到 :root。
   原因：toast 与弹层（#fmToasts / #docMask / #enrollMask / #reportMask）挂在
   <main class="fm"> 之外，若变量只声明在 .fm 上，这些浮层里的 var(--fm-*) 会
   全部失效（表现为白字透明底、边框消失等），故此处补一份 :root 声明。 */
:root,
.fm{
  --fm-navy:#082941;
  --fm-deep:#0E3A5C;
  --fm-deep2:#175E8C;
  --fm-teal:#178C7A;
  --fm-tealbg:#E9F5F2;
  --fm-warm:#D9762F;
  --fm-gold:#C9A45C;
  --fm-gold2:#E3CB99;
  --fm-goldbg:#FBF7EE;
  --fm-line:#E4EAEE;
  --fm-bg:#F2F6F8;
  --fm-ink:#16232E;
  --fm-ink2:#5C7285;
  --fm-ink3:#93A5B3;
}
.fm{background:var(--fm-bg)}

/* ---------- 面包屑带：把频道"系"回官网 ---------- */
.fm-crumb{
  background:#fff;
  border-bottom:1px solid var(--line);
  border-top:3px solid var(--red-700);
}
.fm-crumb__in{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap;
  /* 只设纵向内边距：横向内边距沿用 .container，否则会把它的左右留白整个覆盖掉，
     手机端面包屑与标签会顶到屏幕边缘被视觉裁切 */
  padding-top:13px;padding-bottom:13px;
}
.fm-crumb__path{font-size:13px;color:var(--ink-500)}
.fm-crumb__path a{color:var(--ink-500);text-decoration:none}
.fm-crumb__path a:hover{color:var(--red-700)}
.fm-crumb__path i{font-style:normal;margin:0 8px;color:var(--ink-400)}
.fm-crumb__path b{color:var(--ink-800);font-weight:500}
.fm-crumb__tag{
  font-size:12px;color:var(--gold-700);background:var(--gold-100);
  border:1px solid var(--gold-300);border-radius:999px;padding:4px 12px;white-space:nowrap;
}

/* ---------- 主视觉 ---------- */
.fm-hero{
  position:relative;overflow:hidden;border-radius:20px;color:#fff;margin-top:26px;
  background:
    radial-gradient(circle at 79% 14%,rgba(201,164,92,.17),transparent 40%),
    radial-gradient(circle at 93% 80%,rgba(23,140,122,.20),transparent 44%),
    linear-gradient(158deg,#082941 0%,#0E3A5C 55%,#155279 100%);
  box-shadow:0 20px 46px -24px rgba(8,41,65,.7);
}
.fm-hero::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(rgba(255,255,255,.055) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.055) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:radial-gradient(ellipse 72% 74% at 74% 24%,#000 0%,transparent 78%);
  mask-image:radial-gradient(ellipse 72% 74% at 74% 24%,#000 0%,transparent 78%);
}
.fm-hero::after{
  content:'';position:absolute;left:52px;right:52px;bottom:0;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(201,164,92,.6),transparent);
}
.fm-hero__in{
  position:relative;z-index:2;display:grid;grid-template-columns:1.12fr .88fr;
  gap:34px;align-items:center;padding:52px 52px 46px;
}
.fm-eyebrow{display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.1em;color:rgba(255,255,255,.7)}
.fm-eyebrow i{width:26px;height:1px;background:var(--fm-gold);flex:0 0 26px}
/* 注意：主视觉是深蓝底，h1 必须显式写 color:#fff。
   官网 style.css 有一条全局 `h1,h2,h3,h4,h5{color:var(--ink-900)}`（#16181D 近黑），
   只要这里不写颜色就会被它接管，表现为「深蓝底 + 黑字」，几乎看不清。
   同组的 .fm-hero / .fm-page 容器虽然设了 color:#fff，但元素自身的 h1 规则
   在级联里优先级更高，所以必须在 .fm-h1 这一层直接指定。 */
.fm-h1{font-size:36px;line-height:1.26;font-weight:600;letter-spacing:-.6px;margin-top:18px;color:#fff}
.fm-h1 em{font-style:normal;display:block;font-size:18px;font-weight:400;letter-spacing:0;color:var(--fm-gold2);margin-top:14px;line-height:1.6}
.fm-lead{font-size:14px;line-height:1.95;color:rgba(255,255,255,.74);margin-top:16px;max-width:430px}
.fm-cta{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.fm-btn{
  border:0;border-radius:11px;padding:0 28px;height:48px;font-size:15px;font-weight:600;
  font-family:inherit;cursor:pointer;letter-spacing:.02em;text-decoration:none;
  display:inline-flex;align-items:center;justify-content:center;
  transition:transform .16s,background .16s,box-shadow .16s;
}
.fm-btn--gold{background:linear-gradient(180deg,#DCBB7B,#C9A45C);color:#2C1E06;box-shadow:0 12px 26px -14px rgba(201,164,92,.95)}
.fm-btn--gold:hover{transform:translateY(-1px)}
.fm-btn--line{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.34);color:#fff}
.fm-btn--line:hover{background:rgba(255,255,255,.13)}
.fm-btn--deep{background:var(--fm-deep);color:#fff}
.fm-btn--deep:hover{background:#0A2C46}
.fm-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:34px;padding-top:22px;
  border-top:1px solid rgba(255,255,255,.14);max-width:530px;
}
.fm-stats b{display:block;font-size:26px;font-weight:600;letter-spacing:-.6px;line-height:1.1}
.fm-stats b em{font-style:normal;font-size:13px;font-weight:400;letter-spacing:0;color:rgba(255,255,255,.66);margin-left:5px}
.fm-stats span{display:block;font-size:12px;color:rgba(255,255,255,.6);margin-top:6px}
.fm-hero__art{display:flex;justify-content:center;align-items:center}
.fm-hero__art svg{width:100%;max-width:368px;height:auto}

/* ---------- 权威信息条 ---------- */
.fm-cred{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--fm-line);
  border:1px solid var(--fm-line);border-radius:14px;overflow:hidden;margin-top:18px;
}
.fm-cred__cell{background:#fff;padding:17px 20px}
.fm-cred__cell .k{font-size:11.5px;color:var(--fm-ink3);letter-spacing:.08em}
.fm-cred__cell .v{font-size:13.5px;font-weight:600;color:var(--fm-ink);margin-top:6px;line-height:1.55}

/* ---------- 区块通用 ---------- */
.fm-sec{margin-top:48px}
.fm-head{text-align:center;margin-bottom:26px}
.fm-h2{font-size:22px;font-weight:600;letter-spacing:-.2px;display:inline-block;color:var(--fm-ink)}
.fm-head .fm-h2::after{content:'';display:block;width:34px;height:2px;border-radius:2px;background:var(--fm-gold);margin:12px auto 0}
.fm-sub{font-size:13px;color:var(--fm-ink3);margin-top:11px}

/* ---------- 四入口 ---------- */
.fm-entries{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.fm-e{
  position:relative;text-align:left;background:#fff;border:1px solid var(--fm-line);
  border-radius:15px;padding:22px 20px 20px;cursor:pointer;font-family:inherit;overflow:hidden;
  text-decoration:none;display:block;
  transition:border-color .18s,transform .18s,box-shadow .18s;
}
.fm-e:hover{border-color:#B9CDDC;transform:translateY(-2px);box-shadow:0 16px 32px -22px rgba(14,58,92,.55)}
.fm-e::after{
  content:'';position:absolute;left:0;top:0;width:100%;height:2px;background:var(--fm-gold);
  transform:scaleX(0);transform-origin:left;transition:transform .24s;
}
.fm-e:hover::after{transform:scaleX(1)}
.fm-e__ic{width:42px;height:42px;border-radius:11px;background:var(--fm-deep);color:#fff;display:flex;align-items:center;justify-content:center}
.fm-e__ic svg{width:22px;height:22px}
.fm-e__t{font-size:15px;font-weight:600;margin-top:15px;color:var(--fm-ink)}
.fm-e__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.7;margin-top:6px}
.fm-e__a{font-size:12.5px;color:var(--fm-deep2);font-weight:600;margin-top:14px}

/* ---------- 官方文件 ---------- */
.fm-files{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.fm-file{
  display:flex;align-items:center;gap:18px;width:100%;text-align:left;font-family:inherit;
  background:#fff;border:1px solid var(--fm-line);border-left:3px solid #B23A3A;
  border-radius:13px;padding:16px 20px;cursor:pointer;text-decoration:none;
  transition:box-shadow .18s,border-color .18s;
}
.fm-file:hover{box-shadow:0 14px 30px -22px rgba(14,58,92,.5);border-color:#CFDCE5;border-left-color:#B23A3A}
.fm-file__doc{
  width:44px;height:56px;border-radius:6px;background:#FDF1F1;border:1px solid #E8C4C4;
  color:#B23A3A;display:flex;align-items:center;justify-content:center;font-size:11px;
  font-weight:600;flex:0 0 44px;line-height:1.25;text-align:center;
}

/* ---------- 项目介绍 ---------- */
.fm-about{display:grid;grid-template-columns:1.25fr 1fr;gap:22px;align-items:start}
.fm-abt p{font-size:13.5px;color:var(--fm-ink2);line-height:2.05}
.fm-abt p+p{margin-top:12px}
.fm-abgrid{display:grid;gap:12px}
.fm-abcell{background:#fff;border:1px solid var(--fm-line);border-radius:13px;padding:16px 18px}
.fm-abcell .k{font-size:11.5px;color:var(--fm-ink3);letter-spacing:.08em}
.fm-abcell .v{font-size:16px;font-weight:600;color:var(--fm-deep);margin-top:5px}
.fm-abcell .s{font-size:12.5px;color:var(--fm-ink3);margin-top:6px;line-height:1.7}

/* ---------- 实践校 ---------- */
.fm-schools{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:14px}
.fm-school{
  background:#fff;border:1px solid var(--fm-line);border-radius:15px;overflow:hidden;
  display:flex;flex-direction:column;
}
.fm-school--lead{border-color:var(--fm-gold);box-shadow:0 18px 40px -28px rgba(201,164,92,.9)}
.fm-school__ph{
  height:132px;background:linear-gradient(158deg,#0E3A5C,#175E8C);
  display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.55);
  font-size:12px;letter-spacing:.1em;flex:0 0 132px;
}
.fm-school__bd{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.fm-school__nm{font-size:15px;font-weight:600;color:var(--fm-ink);line-height:1.45}
.fm-school__loc{font-size:12px;color:var(--fm-ink3);margin-top:5px}
.fm-school__meta{display:grid;grid-template-columns:1fr 1fr;gap:9px 14px;margin-top:14px;padding-top:13px;border-top:1px solid var(--fm-line)}
.fm-school__meta .k{font-size:11px;color:var(--fm-ink3)}
.fm-school__meta .v{font-size:13.5px;font-weight:600;color:var(--fm-deep);margin-top:2px}
.fm-school__tag{
  align-self:flex-start;margin-top:14px;font-size:11.5px;padding:4px 10px;border-radius:6px;
  background:var(--fm-tealbg);color:#0E5F52;
}
/* 公开名录（schools.html）：一排多张，卡片只保留学校实景照片 + 校名 */
.fm-school__ph{position:relative;overflow:hidden}
.fm-school__ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.fm-schools--grid .fm-school__ph{height:170px;flex:0 0 170px}
.fm-schools--grid .fm-school__bd{padding:14px 16px 16px;justify-content:center;text-align:center}
.fm-schools--grid .fm-school__nm{font-size:14.5px}
/* 「更多实践校陆续认定中」：名录下方整宽引导条 */
.fm-school-more{
  margin-top:14px;text-align:center;padding:36px 24px;
  background:var(--fm-bg);border:1px dashed var(--fm-line);border-radius:15px;
}
.fm-school-more__t{font-size:13.5px;font-weight:600;color:var(--fm-ink)}
.fm-school-more__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.85;margin-top:10px}
.fm-school-more .fm-btn{height:42px;padding:0 22px;font-size:14px;margin-top:18px}

/* ---------- 在线申报：左栏（须知 + 更多实践校） ---------- */
.fm-p-col{display:flex;flex-direction:column;gap:20px;min-width:0}
.fm-p-col .fm-school-more{margin-top:0;flex:1;display:flex;flex-direction:column;justify-content:center}

/* ---------- 可折叠卡片（提交申请信息） ---------- */
.fm-fold__hd{
  display:flex;align-items:center;gap:12px;width:100%;text-align:left;
  background:none;border:0;padding:0;cursor:pointer;font:inherit;
}
.fm-fold__hd:focus-visible{outline:2px solid var(--fm-teal);outline-offset:3px;border-radius:6px}
.fm-fold__hd .fm-p-card__t{flex:1;min-width:0}
.fm-fold__chev{
  flex:0 0 auto;width:26px;height:26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--fm-bg);border:1px solid var(--fm-line);
  color:var(--fm-ink2);transition:transform .22s ease;
}
.fm-fold__chev svg{width:14px;height:14px;display:block}
.fm-fold.is-open .fm-fold__chev{transform:rotate(180deg)}
.fm-fold__hint{font-size:12.5px;font-weight:500;color:var(--fm-ink3);flex:0 0 auto}
.fm-fold.is-open .fm-fold__hint{display:none}
.fm-fold__body{margin-top:0}
/* 折叠体收起时必须真正不可见——display 会压过 [hidden]，故用 !important 兜底 */
.fm-fold:not(.is-open) .fm-fold__body{display:none !important}
.fm-fold__body[hidden]{display:none !important}

/* ---------- 红头文件下载（实践校名录页 · 申报区左栏） ---------- */
/* 左栏宽度约为整页的 1/3，两张下载卡必须纵向堆叠，横向并排会被压成竖条 */
.fm-docs{
  background:#fff;border:1px solid var(--fm-line);border-radius:16px;
  padding:22px 22px 20px;
}
.fm-docs__hd{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.fm-docs__t{font-size:13.5px;font-weight:600;color:var(--fm-ink);line-height:1.55}
.fm-docs__s{font-size:12.5px;color:var(--fm-ink2);line-height:1.85;margin-top:9px}
.fm-docs__grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:16px}
.fm-docs__i{
  display:flex;gap:13px;align-items:center;text-decoration:none;
  padding:14px 15px;border:1px solid var(--fm-line);border-radius:12px;
  background:var(--fm-bg);transition:border-color .18s ease,box-shadow .18s ease;
}
.fm-docs__i:hover{border-color:var(--fm-deep2);box-shadow:0 4px 14px rgba(14,58,92,.09)}
.fm-docs__doc{
  flex:0 0 auto;width:42px;height:42px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;text-align:center;
  background:var(--fm-deep);color:#fff;font-size:10.5px;font-weight:600;line-height:1.26;
  letter-spacing:.02em;
}
.fm-docs__n{font-size:13px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-docs__m{font-size:11.5px;color:var(--fm-ink2);margin-top:5px}
.fm-docs__go{font-size:12.5px;font-weight:600;color:var(--fm-deep2);white-space:nowrap;margin-left:auto}

/* ---------- 课程时间轴 ---------- */
.fm-tl{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;padding-top:6px}
.fm-tl::before{
  content:'';position:absolute;left:12%;right:12%;top:32px;height:1px;
  background:linear-gradient(90deg,transparent,var(--fm-line) 10%,var(--fm-line) 90%,transparent);
}
.fm-tl__i{position:relative;text-align:center}
.fm-tl__dot{
  width:54px;height:54px;margin:0 auto;border-radius:50%;background:#fff;
  border:1px solid var(--fm-line);display:flex;align-items:center;justify-content:center;
  position:relative;z-index:1;color:var(--fm-deep);
}
.fm-tl__dot b{font-size:15px;font-weight:600;letter-spacing:-.3px}
.fm-tl__i.on .fm-tl__dot{border-color:var(--fm-gold);box-shadow:0 0 0 4px rgba(201,164,92,.13);color:#8A6A28}
.fm-tl__t{font-size:13.5px;font-weight:600;margin-top:16px;color:var(--fm-ink)}
.fm-tl__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.7;margin-top:6px}

/* ---------- 结业可获得 ---------- */
.fm-gain{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.fm-g{background:#fff;border:1px solid var(--fm-line);border-radius:15px;padding:22px 20px}
.fm-g__i{
  width:38px;height:38px;border-radius:10px;background:var(--fm-goldbg);color:#A8823A;
  display:flex;align-items:center;justify-content:center;
}
.fm-g__i svg{width:20px;height:20px}
.fm-g__t{font-size:14.5px;font-weight:600;margin-top:15px;line-height:1.5;color:var(--fm-ink)}
.fm-g__s{font-size:12.5px;color:var(--fm-ink3);margin-top:7px;line-height:1.75}

/* ---------- 讲师风采卡片 ---------- */
.fm-tutors{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.fm-tutor{
  background:#fff;border:1px solid var(--fm-line);border-radius:15px;
  padding:20px;text-align:center;display:flex;flex-direction:column;align-items:center;
}
.fm-tutor__ph{
  width:76px;height:76px;border-radius:50%;flex:0 0 76px;
  background:var(--fm-goldbg);color:#A8823A;border:1px solid var(--fm-gold2);
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.fm-tutor__ph svg{width:38px;height:38px}
.fm-tutor__ph img{width:100%;height:100%;object-fit:cover;display:block}
.fm-tutor__t{font-size:14.5px;font-weight:600;color:var(--fm-ink);margin-top:14px;line-height:1.5}
.fm-tutor__s{font-size:12.5px;color:var(--fm-ink2);line-height:1.8;margin-top:8px}
.fm-tutor__m{
  font-size:12px;color:var(--fm-ink2);margin-top:auto;padding-top:14px;
  border-top:1px solid var(--fm-line);width:100%;
}
.fm-tutor__m b{font-size:15px;color:var(--fm-deep2);font-weight:700;margin:0 2px}
.fm-tutors__note{
  font-size:12.5px;color:var(--fm-ink2);line-height:1.85;text-align:center;
  margin-top:16px;padding:14px 20px;background:var(--fm-bg);
  border:1px dashed var(--fm-line);border-radius:12px;
}

/* ---------- 实践校可获得（嵌入申报左栏） ---------- */
.fm-gain-box{
  background:#fff;border:1px solid var(--fm-line);border-radius:15px;
  padding:22px 22px 20px;
}
.fm-gain-box__hd{padding-bottom:15px;border-bottom:1px solid var(--fm-line)}
.fm-gain-box__t{font-size:13.5px;font-weight:600;color:var(--fm-ink)}
.fm-gain-box__s{font-size:12.5px;color:var(--fm-ink2);line-height:1.85;margin-top:9px}
.fm-glist{display:grid;gap:14px;margin-top:16px}
.fm-glist__i{display:flex;gap:13px;align-items:flex-start}
.fm-glist__ic{
  flex:0 0 34px;width:34px;height:34px;border-radius:9px;
  background:var(--fm-goldbg);color:#A8823A;
  display:flex;align-items:center;justify-content:center;
}
.fm-glist__ic svg{width:18px;height:18px}
.fm-glist__t{font-size:13.5px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-glist__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.75;margin-top:5px}

/* ---------- 学员证言 ---------- */
.fm-quotes{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fm-q{position:relative;background:#fff;border:1px solid var(--fm-line);border-radius:15px;padding:24px 22px}
.fm-q__mark{
  position:absolute;top:10px;right:20px;font-family:Georgia,serif;font-size:46px;line-height:1;
  color:#E7EDF2;user-select:none;
}
.fm-q__tx{font-size:13.5px;line-height:1.95;color:var(--fm-ink2);position:relative;z-index:1}
.fm-q__who{display:flex;align-items:center;gap:11px;margin-top:18px;padding-top:16px;border-top:1px solid var(--fm-line)}
.fm-q__av{
  width:34px;height:34px;border-radius:50%;background:var(--fm-deep);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:13px;flex:0 0 34px;
}
.fm-q__nm{font-size:12.5px;font-weight:600;color:var(--fm-ink)}
.fm-q__rl{font-size:11.5px;color:var(--fm-ink3);margin-top:1px}

/* ---------- 适合哪些人 ---------- */
.fm-who{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fm-w{display:flex;gap:12px;background:#fff;border:1px solid var(--fm-line);border-radius:13px;padding:16px 18px}
.fm-w__ck{
  width:22px;height:22px;border-radius:50%;background:var(--fm-tealbg);color:var(--fm-teal);
  display:flex;align-items:center;justify-content:center;flex:0 0 22px;margin-top:1px;
}
.fm-w__ck svg{width:12px;height:12px}
.fm-w__t{font-size:13.5px;font-weight:600;color:var(--fm-ink)}
.fm-w__s{font-size:12.5px;color:var(--fm-ink3);margin-top:4px;line-height:1.7}

/* ---------- 费用 ---------- */
.fm-price{display:grid;grid-template-columns:.9fr 1.1fr;border:1px solid var(--fm-line);border-radius:16px;overflow:hidden;background:#fff}
.fm-price__l{
  background:linear-gradient(158deg,#082941,#0E3A5C);color:#fff;padding:34px 30px;
  display:flex;flex-direction:column;justify-content:center;
}
.fm-price__lab{font-size:12px;letter-spacing:.1em;color:rgba(255,255,255,.6)}
.fm-price__amt{font-size:46px;font-weight:600;letter-spacing:-1.5px;line-height:1;margin-top:14px}
.fm-price__amt i{font-style:normal;font-size:16px;font-weight:400;letter-spacing:0;margin-left:6px;color:rgba(255,255,255,.7)}
.fm-price__note{font-size:12px;color:rgba(255,255,255,.6);margin-top:14px;line-height:1.8}
.fm-price__r{padding:26px 28px}
.fm-price__li{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--fm-ink2);line-height:1.75;padding:7px 0}
.fm-price__li .d{width:5px;height:5px;border-radius:50%;background:var(--fm-gold);flex:0 0 5px;margin-top:9px}

/* ---------- 边界说明 ---------- */
.fm-declare{
  margin-top:38px;background:#fff;border:1px solid var(--fm-line);border-left:3px solid var(--fm-gold);
  border-radius:13px;padding:20px 22px;
}
.fm-declare__t{font-size:13px;font-weight:600;margin-bottom:10px;color:var(--fm-ink)}
.fm-declare__l{font-size:12.5px;color:var(--fm-ink2);line-height:1.95;padding-left:14px;position:relative}
.fm-declare__l+.fm-declare__l{margin-top:7px}
.fm-declare__l::before{content:'';position:absolute;left:0;top:10px;width:5px;height:5px;border-radius:50%;background:var(--fm-line)}

/* ---------- 底部行动 ---------- */
.fm-end{
  position:relative;overflow:hidden;margin-top:52px;border-radius:20px;padding:44px 40px;
  text-align:center;color:#fff;
  background:radial-gradient(circle at 50% 130%,rgba(201,164,92,.26),transparent 62%),linear-gradient(158deg,#082941,#0E3A5C);
}
.fm-end h3{font-size:24px;font-weight:600;letter-spacing:-.3px;color:#fff}
.fm-end p{font-size:13.5px;color:rgba(255,255,255,.65);margin-top:12px}
.fm-end .fm-btn{margin-top:24px}



/* ---------- 响应式 ---------- */
@media (max-width:1080px){
  .fm-hero__in{grid-template-columns:1fr;padding:40px 32px 36px}
  .fm-hero__art{display:none}
  .fm-h1{font-size:30px}
  .fm-schools{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .fm-hero__in{padding:32px 24px 30px}
  .fm-h1{font-size:26px}
  .fm-entries,.fm-cred,.fm-gain,.fm-files{grid-template-columns:1fr 1fr}
  .fm-tl,.fm-schools{grid-template-columns:1fr 1fr}
  .fm-tl::before{display:none}
  .fm-about,.fm-quotes,.fm-who,.fm-price{grid-template-columns:1fr}
  .fm-stats{grid-template-columns:repeat(2,1fr);gap:14px}
  .fm-stats b{font-size:21px}
  .fm-hero__art{display:none}
}
@media (max-width:560px){
  .fm-entries,.fm-cred,.fm-gain,.fm-files,.fm-tl,.fm-schools{grid-template-columns:1fr}
}

/* ============================================================
   讲师风采 · 派遣机制（tutors.html）
   ============================================================ */
.fm-tutor__hd{display:flex;align-items:center;gap:13px}
.fm-tutor__act{margin-top:15px;font-size:12.5px;font-weight:600;color:var(--fm-deep2);text-decoration:none}
.fm-tutor__act:hover{text-decoration:underline}

.fm-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.fm-step{background:#fff;border:1px solid var(--fm-line);border-radius:14px;padding:20px}
.fm-step__n{
  width:26px;height:26px;border-radius:50%;background:var(--fm-deep);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:600;
}
.fm-step__t{font-size:14px;font-weight:600;margin-top:13px;color:var(--fm-ink)}
.fm-step__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.75;margin-top:7px}

@media (max-width:1080px){
  .fm-tutors{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .fm-tutors,.fm-steps{grid-template-columns:1fr}
}

/* ============================================================
   实时动态 · 排期滚动窗（index 首页）
   滚动实现：轨道内放一份内容，页面底部 JS 按需复制第二份，
   靠 translateY(-50%) 无缝循环。内容不足一屏时加 .is-static 静止。
   ============================================================ */
.fm-roll{
  background:#fff;border:1px solid var(--fm-line);border-radius:15px;overflow:hidden;
  margin-top:14px;
}
.fm-roll__hd{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:15px 20px;border-bottom:1px solid var(--fm-line);background:var(--fm-bg);
}
.fm-roll__hd .t{display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:600;color:var(--fm-ink)}
.fm-roll__hd .live{width:7px;height:7px;border-radius:50%;background:#2FA37F;position:relative;flex:0 0 7px}
.fm-roll__hd .live::after{
  content:'';position:absolute;inset:-3px;border-radius:50%;
  border:1px solid rgba(47,163,127,.55);animation:fm-live 1.9s ease-out infinite;
}
@keyframes fm-live{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.7);opacity:0}}
.fm-roll__hd .more{
  font-size:12.5px;font-weight:600;color:var(--fm-deep2);text-decoration:none;white-space:nowrap;
}
.fm-roll__hd .more:hover{text-decoration:underline}
.fm-roll__hd .hint{font-size:12px;color:var(--fm-ink3);white-space:nowrap}
.fm-roll__win{position:relative;height:320px;overflow:hidden}
.fm-roll__win::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:58px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,0),#fff 76%);
}
.fm-roll__track{animation:fm-roll 24s linear infinite;will-change:transform}
.fm-roll:hover .fm-roll__track,
.fm-roll:focus-within .fm-roll__track{animation-play-state:paused}
@keyframes fm-roll{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.fm-roll.is-static .fm-roll__track{animation:none}
.fm-roll.is-static .fm-roll__win{height:auto}
.fm-roll.is-static .fm-roll__win::after{display:none}

/* 单条排期 */
.fm-row{
  display:grid;grid-template-columns:104px 1.5fr 1.2fr 96px 108px;
  gap:16px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--fm-line);
}
.fm-row:hover{background:var(--fm-bg)}
.fm-row__d b{display:block;font-size:15px;font-weight:600;color:var(--fm-deep);letter-spacing:-.3px;line-height:1.2}
.fm-row__d span{display:block;font-size:11.5px;color:var(--fm-ink3);margin-top:3px}
.fm-row__nm{font-size:13.5px;font-weight:600;color:var(--fm-ink);line-height:1.45}
.fm-row__lo{font-size:11.5px;color:var(--fm-ink3);margin-top:3px}
.fm-row__v{font-size:12.5px;color:var(--fm-ink2);line-height:1.55}
.fm-row__n{font-size:14px;font-weight:600;color:var(--fm-ink);white-space:nowrap}
.fm-row__n i{font-style:normal;font-size:11.5px;font-weight:400;color:var(--fm-ink3);margin-left:2px}
.fm-row__st{justify-self:start;font-size:11.5px;padding:4px 10px;border-radius:6px;white-space:nowrap}
.fm-row__st--wait{background:var(--fm-goldbg);color:#8A4A16}
.fm-row__st--ok{background:var(--fm-tealbg);color:#0E5F52}
.fm-row__st--done{background:#EDF1F4;color:var(--fm-ink2)}

/* 报名条（师资研修班收口） */
.fm-enroll{
  display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;
  margin-top:22px;padding:24px 28px;border-radius:16px;color:#fff;
  background:radial-gradient(circle at 88% 120%,rgba(201,164,92,.24),transparent 58%),
             linear-gradient(158deg,#082941,#0E3A5C);
  box-shadow:0 18px 40px -26px rgba(8,41,65,.75);
}
/* 深蓝底横条：标题同样显式写白色，别依赖父级 color（父级设色挡不住 .fm-* 自身规则里的继承） */
.fm-enroll__t{font-size:16px;font-weight:600;letter-spacing:-.2px;color:#fff}
.fm-enroll__s{font-size:12.5px;color:rgba(255,255,255,.66);margin-top:8px;line-height:1.8;max-width:660px}

/* 二级页首页头（schools.html 等） */
.fm-page{
  position:relative;overflow:hidden;border-radius:18px;color:#fff;margin-top:26px;
  padding:34px 36px 32px;
  background:radial-gradient(circle at 84% 8%,rgba(201,164,92,.16),transparent 44%),
             linear-gradient(158deg,#082941,#0E3A5C);
}
.fm-page::after{
  content:'';position:absolute;left:36px;right:36px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(201,164,92,.6),transparent);
}
/* 同上：深蓝页头上的标题必须显式写白色，否则被官网全局 h1 颜色接管成黑字 */
.fm-page h1{font-size:26px;font-weight:600;letter-spacing:-.4px;line-height:1.4;color:#fff}
.fm-page p{font-size:13.5px;color:rgba(255,255,255,.72);line-height:1.95;margin-top:13px;max-width:780px}
.fm-page__tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.fm-page__tags span{
  font-size:12px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.2);
  border-radius:999px;padding:5px 14px;color:rgba(255,255,255,.84);
}

/* 实践校合集 · 三列 */
.fm-schools--grid{grid-template-columns:repeat(3,1fr)}

@media (max-width:1080px){
  .fm-schools--grid{grid-template-columns:1fr 1fr}
  .fm-row{grid-template-columns:96px 1.4fr 1fr 88px 100px;gap:12px}
}
@media (max-width:860px){
  .fm-roll__win{height:300px}
  .fm-row{grid-template-columns:92px 1fr;gap:8px 14px;align-items:start}
  .fm-row__v,.fm-row__n,.fm-row__st{grid-column:2}
  .fm-page{padding:28px 24px 26px}
  .fm-page h1{font-size:22px}
  .fm-schools--grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  .fm-row{grid-template-columns:1fr;gap:7px}
  .fm-row__d{display:flex;align-items:baseline;gap:9px}
  .fm-row__d b,.fm-row__d span{display:inline-block;margin-top:0}
  .fm-row__v,.fm-row__n,.fm-row__st{grid-column:1}
  .fm-roll__win{height:340px}
}

/* ============================================================
   门户（学校端 school.html / 讲师端 tutor.html）
   同样 fm- 前缀；登录态前后两块区域用 [hidden] 切换。
   ============================================================ */

/* ---------- 登录前 ---------- */
.fm-p-auth{display:grid;grid-template-columns:1.15fr .85fr;gap:20px;margin-top:22px;align-items:start}
.fm-p-card{background:#fff;border:1px solid var(--fm-line);border-radius:15px;padding:26px 26px 24px}
.fm-p-card--tight{padding:20px 22px}
.fm-p-card__t{font-size:16px;font-weight:600;color:var(--fm-ink);letter-spacing:-.2px}
.fm-p-card__s{font-size:13px;color:var(--fm-ink2);line-height:1.9;margin-top:10px}
.fm-p-cap{
  display:block;font-size:12px;font-weight:600;color:var(--fm-ink3);letter-spacing:.06em;
  margin:22px 0 10px;
}
.fm-p-cap:first-child{margin-top:0}

.fm-p-flow{display:grid;gap:10px;margin-top:14px}
.fm-p-flow__i{display:flex;gap:12px;align-items:flex-start}
.fm-p-flow__n{
  width:24px;height:24px;border-radius:50%;flex:0 0 24px;margin-top:1px;
  background:var(--fm-deep);color:#fff;font-size:12px;font-weight:600;
  display:flex;align-items:center;justify-content:center;
}
.fm-p-flow__i.on .fm-p-flow__n{background:linear-gradient(180deg,#DCBB7B,#C9A45C);color:#2C1E06}
.fm-p-flow__t{font-size:13.5px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-p-flow__s{font-size:12.5px;color:var(--fm-ink3);line-height:1.7;margin-top:3px}

.fm-p-form{display:grid;gap:14px}
/* [hidden] 兜底。
   坑：.fm-p-form 设了 display:grid、.fm-p-btn 设了 display:inline-flex，
   作者样式优先级高于浏览器默认的 [hidden]{display:none}，
   于是 JS 里 el.hidden = true 后元素仍然可见。
   已踩坑的具体位置：落地页报名表单（提交成功后不收）、schools.html 申报表单（申报后不收）。
   这里把 fm- 频道正文与各浮层（toast / 弹层 / 面板）内的 [hidden] 统一兜回 display:none。 */
.fm [hidden],
.fm-p-mask [hidden],
.fm-p-modal [hidden],
.fm-p-panel [hidden],
.fm-p-panel[hidden]{display:none !important}
.fm-p-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.fm-p-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}

/* 表单分节：对应《实践校申请表》的「一 / 三 / 四」各栏 */
.fm-p-sec{display:grid;gap:14px;border-top:1px dashed var(--fm-line);padding-top:20px;margin-top:2px}
.fm-p-sec:first-of-type{border-top:0;padding-top:0}
.fm-p-sec__hd{margin-bottom:-4px}
.fm-p-sec__t{font-size:13.5px;font-weight:600;color:var(--fm-deep);letter-spacing:-.1px}
.fm-p-sec__s{font-size:12px;color:var(--fm-ink3);line-height:1.7;margin-top:4px}
.fm-p-mini{font-size:11.5px;font-weight:400;color:var(--fm-ink3)}

/* 带单位后缀的输入（百分比） */
.fm-p-suf{position:relative;display:block}
.fm-p-suf .fm-p-inp{padding-right:42px}
.fm-p-suf__u{
  position:absolute;right:14px;top:50%;transform:translateY(-50%);
  font-size:12.5px;color:var(--fm-ink3);pointer-events:none;
}

/* 资源支持多选 */
.fm-p-opts{display:grid;gap:9px}
.fm-p-opt{
  display:flex;gap:10px;align-items:flex-start;cursor:pointer;
  border:1px solid var(--fm-line);border-radius:10px;background:#fff;
  padding:11px 13px;font-size:13px;color:var(--fm-ink2);line-height:1.7;
  transition:border-color .16s,background .16s;
}
.fm-p-opt:hover{border-color:#B9CDDC}
.fm-p-opt input{width:16px;height:16px;flex:0 0 16px;margin-top:3px;accent-color:#0E3A5C}
.fm-p-opt:has(input:checked){border-color:var(--fm-deep2);background:#F4F9FC}
.fm-p-opt__t{font-weight:600;color:var(--fm-ink)}
.fm-p-opt__s{display:block;font-size:11.5px;color:var(--fm-ink3);margin-top:2px;line-height:1.6}
.fm-p-fld{display:block}
.fm-p-fld > span{display:block;font-size:12.5px;font-weight:600;color:var(--fm-ink2);margin-bottom:7px}
.fm-p-fld > span i{font-style:normal;color:#B23A3A;margin-left:3px}
.fm-p-fld .hint{display:block;font-size:11.5px;color:var(--fm-ink3);margin-top:6px;line-height:1.6;font-weight:400}
.fm-p-inp{
  width:100%;border:1px solid var(--fm-line);border-radius:10px;padding:11px 14px;
  font-size:14px;font-family:inherit;color:var(--fm-ink);background:#fff;
  box-sizing:border-box;
}
.fm-p-inp:focus{outline:none;border-color:var(--fm-deep2);box-shadow:0 0 0 3px rgba(23,94,140,.1)}

/* ---------- 一寸证件照上传 ---------- */
.fm-p-photo__row{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}
.fm-p-photo__box{
  position:relative;width:82px;height:110px;flex:0 0 82px;overflow:hidden;
  border:1px dashed #C3D5E1;border-radius:10px;background:#F7FAFC;
  display:flex;align-items:center;justify-content:center;
}
.fm-p-photo__box img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.fm-p-photo__ph{
  font-size:11.5px;color:var(--fm-ink3);text-align:center;line-height:1.5;letter-spacing:.04em;
}
.fm-p-photo__ctl{display:flex;flex-wrap:wrap;gap:9px;align-items:center;padding-top:2px}
.fm-p-photo__ctl .fm-p-btn{height:40px;padding:0 18px;font-size:13.5px}
.fm-p-photo__hint{
  flex:1 0 100%;font-size:11.5px;color:var(--fm-ink3);line-height:1.8;margin-top:2px;
}
.fm-p-photo #photoErr{margin-top:10px}
.fm-p-inp[readonly]{background:var(--fm-bg);color:var(--fm-ink3)}
textarea.fm-p-inp{min-height:88px;resize:vertical;line-height:1.8}
select.fm-p-inp{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--fm-ink3) 50%),linear-gradient(135deg,var(--fm-ink3) 50%,transparent 50%);background-position:calc(100% - 18px) 20px,calc(100% - 13px) 20px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px}

.fm-p-check{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--fm-ink2);line-height:1.8}
.fm-p-check input{width:16px;height:16px;flex:0 0 16px;margin-top:3px;accent-color:#0E3A5C}
/* .hint 只在 .fm-p-fld 下定义过，勾选项里的补充说明需要单独兜一条，
   否则会跟正文连成一行。 */
.fm-p-check .hint{display:block;font-size:11.5px;color:var(--fm-ink3);margin-top:5px;line-height:1.6;font-weight:400}

.fm-p-btn{
  border:0;border-radius:10px;height:44px;padding:0 22px;font-size:14px;font-weight:600;
  font-family:inherit;cursor:pointer;text-decoration:none;
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  transition:background .16s,transform .16s,border-color .16s;
}
.fm-p-btn--gold{background:linear-gradient(180deg,#DCBB7B,#C9A45C);color:#2C1E06}
.fm-p-btn--gold:hover{transform:translateY(-1px)}
.fm-p-btn--deep{background:var(--fm-deep);color:#fff}
.fm-p-btn--deep:hover{background:#0A2C46}
.fm-p-btn--ghost{background:#fff;border:1px solid var(--fm-line);color:var(--fm-ink2)}
.fm-p-btn--ghost:hover{border-color:#B9CDDC;color:var(--fm-deep)}
.fm-p-btn--danger{background:#fff;border:1px solid #E8C4C4;color:#B23A3A}
.fm-p-btn--danger:hover{background:#FDF1F1}
.fm-p-btn--block{width:100%}
.fm-p-btn--sm{height:34px;padding:0 14px;font-size:12.5px;border-radius:8px}
.fm-p-btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}
.fm-p-btnrow{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* ---------- 提示条 ---------- */
.fm-p-alert{
  border-radius:10px;padding:12px 15px;font-size:12.5px;line-height:1.8;
  border:1px solid var(--fm-line);background:var(--fm-bg);color:var(--fm-ink2);
}
.fm-p-alert--ok{background:var(--fm-tealbg);border-color:#BFE1D8;color:#0E5F52}
.fm-p-alert--warn{background:var(--fm-goldbg);border-color:#EDDCBC;color:#8A4A16}
.fm-p-alert--err{background:#FDF1F1;border-color:#E8C4C4;color:#A33232}
.fm-p-alert b{font-weight:600}

/* ---------- 登录后 · 工作台 ---------- */
.fm-p-head{
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;
  margin-top:22px;background:#fff;border:1px solid var(--fm-line);border-radius:15px;padding:20px 24px;
}
.fm-p-head__l{display:flex;align-items:center;gap:15px;min-width:0}
.fm-p-head__av{
  width:46px;height:46px;border-radius:12px;flex:0 0 46px;
  background:linear-gradient(158deg,#0E3A5C,#175E8C);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:600;
}
.fm-p-head__nm{font-size:16.5px;font-weight:600;color:var(--fm-ink);letter-spacing:-.2px;line-height:1.4}
.fm-p-head__meta{font-size:12.5px;color:var(--fm-ink3);margin-top:5px}
.fm-p-head__meta b{color:var(--fm-ink2);font-weight:600}

.fm-p-tabs{display:flex;gap:4px;margin-top:20px;border-bottom:1px solid var(--fm-line);flex-wrap:wrap}
.fm-p-tab{
  border:0;background:none;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--fm-ink3);
  padding:11px 18px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;
  border-radius:8px 8px 0 0;transition:color .16s,background .16s,border-color .16s;
}
.fm-p-tab:hover{color:var(--fm-deep);background:var(--fm-bg)}
.fm-p-tab.is-on{color:var(--fm-deep);border-bottom-color:var(--fm-gold)}
.fm-p-panel{padding-top:22px}
.fm-p-panel[hidden]{display:none}

.fm-p-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.fm-p-stat{background:#fff;border:1px solid var(--fm-line);border-radius:13px;padding:17px 19px}
.fm-p-stat .k{font-size:11.5px;color:var(--fm-ink3);letter-spacing:.06em}
.fm-p-stat .v{font-size:25px;font-weight:600;color:var(--fm-deep);letter-spacing:-.6px;margin-top:7px;line-height:1.1}
.fm-p-stat .v em{font-style:normal;font-size:13px;font-weight:400;color:var(--fm-ink3);margin-left:4px;letter-spacing:0}
.fm-p-stat .s{font-size:12px;color:var(--fm-ink3);margin-top:7px}

.fm-p-split{display:grid;grid-template-columns:1.35fr .65fr;gap:18px;margin-top:18px;align-items:start}

/* ---------- 表格 ---------- */
.fm-p-tblwrap{background:#fff;border:1px solid var(--fm-line);border-radius:14px;overflow:hidden}
.fm-p-tblhd{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:15px 20px;border-bottom:1px solid var(--fm-line);background:var(--fm-bg);
}
.fm-p-tblhd .t{font-size:13.5px;font-weight:600;color:var(--fm-ink)}
.fm-p-tblhd .n{font-size:12px;color:var(--fm-ink3)}
.fm-p-scroll{overflow-x:auto}
table.fm-p-tbl{width:100%;border-collapse:collapse;min-width:720px}
table.fm-p-tbl th{
  text-align:left;font-size:12px;font-weight:600;color:var(--fm-ink3);letter-spacing:.05em;
  padding:12px 16px;border-bottom:1px solid var(--fm-line);background:#fff;white-space:nowrap;
}
table.fm-p-tbl td{
  padding:14px 16px;border-bottom:1px solid var(--fm-line);font-size:13px;
  color:var(--fm-ink2);line-height:1.65;vertical-align:middle;
}
table.fm-p-tbl tr:last-child td{border-bottom:0}
table.fm-p-tbl tbody tr:hover td{background:var(--fm-bg)}
table.fm-p-tbl td .nm{font-size:13.5px;font-weight:600;color:var(--fm-ink);line-height:1.45}
table.fm-p-tbl td .sub{font-size:11.5px;color:var(--fm-ink3);margin-top:4px;line-height:1.6}
table.fm-p-tbl td .ops{display:flex;gap:8px;flex-wrap:wrap}
table.fm-p-tbl td code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;color:var(--fm-ink2)}

.fm-p-tag{display:inline-block;font-size:11.5px;padding:4px 10px;border-radius:6px;white-space:nowrap;font-weight:600}
.fm-p-tag--wait{background:var(--fm-goldbg);color:#8A4A16}
.fm-p-tag--ok{background:var(--fm-tealbg);color:#0E5F52}
.fm-p-tag--done{background:#EDF1F4;color:var(--fm-ink2)}
.fm-p-tag--err{background:#FDF1F1;color:#A33232}
.fm-p-tag--info{background:#EAF2F8;color:#175E8C}

.fm-p-empty{text-align:center;padding:44px 24px;color:var(--fm-ink3)}
.fm-p-empty__ic{
  width:52px;height:52px;margin:0 auto 14px;border-radius:14px;background:var(--fm-bg);
  display:flex;align-items:center;justify-content:center;color:#B4C4D0;
}
.fm-p-empty__ic svg{width:26px;height:26px}
.fm-p-empty__t{font-size:14px;font-weight:600;color:var(--fm-ink2)}
.fm-p-empty__s{font-size:12.5px;margin-top:7px;line-height:1.75}

.fm-p-dl{display:grid;gap:1px;background:var(--fm-line);border:1px solid var(--fm-line);border-radius:13px;overflow:hidden}
.fm-p-dl__r{display:grid;grid-template-columns:132px 1fr;background:#fff}
.fm-p-dl__r .k{padding:13px 18px;font-size:12.5px;color:var(--fm-ink3);background:var(--fm-bg)}
.fm-p-dl__r .v{padding:13px 18px;font-size:13px;color:var(--fm-ink);font-weight:500;word-break:break-all}
.fm-p-dl__r .v em{font-style:normal;font-weight:400;color:var(--fm-ink3)}

.fm-p-note{font-size:12px;color:var(--fm-ink3);line-height:1.85;margin-top:14px}
.fm-p-note b{color:var(--fm-ink2);font-weight:600}

/* ---------- 讲座现场照片（讲师端授课反馈弹层） ---------- */
/* 每张 = 缩略图 + 说明输入 + 删除按钮。grid 两列，窄屏堆叠。 */
.fm-shots{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fm-shot{
  position:relative;border:1px solid var(--fm-line);border-radius:11px;
  overflow:hidden;background:var(--fm-bg);
}
.fm-shot img{width:100%;height:124px;object-fit:cover;display:block}
.fm-shot__cap{
  border:0;border-top:1px solid var(--fm-line);border-radius:0;
  padding:9px 32px 9px 11px;font-size:12px;background:#fff;
}
.fm-shot__cap:focus{outline:none;border-color:var(--fm-line);box-shadow:inset 0 0 0 2px rgba(23,94,140,.12)}
.fm-shot__x{
  position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;
  border:0;cursor:pointer;background:rgba(14,58,92,.72);color:#fff;
  font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;
  transition:background .18s ease;
}
.fm-shot__x:hover{background:rgba(163,24,36,.9)}

@media (max-width:1080px){
  .fm-p-auth,.fm-p-split{grid-template-columns:1fr}
  .fm-p-stats{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .fm-p-grid2{grid-template-columns:1fr}
  .fm-p-grid3{grid-template-columns:1fr}
  .fm-shots{grid-template-columns:1fr}
  .fm-p-head{padding:18px 20px}
  .fm-p-tab{padding:10px 13px;font-size:13px}
  .fm-p-dl__r{grid-template-columns:1fr}
  .fm-p-dl__r .k{padding-bottom:4px}
}
@media (max-width:560px){
  .fm-p-stats{grid-template-columns:1fr}
  .fm-p-card{padding:20px 18px}
}

/* 引导页右栏比列表页窄，四项统计挤一列会折行，统一改两列 */
.fm-p-stats--2{grid-template-columns:1fr 1fr}
.fm-p-stats--2 .fm-p-stat .v{font-size:17px}

/* ============================================================
   学校端 · 讲座信息登记（对齐原型「填写引导 / 讲座信息登记 /
   提交完成 / 签到二维码」四步）
   ============================================================ */

/* ---------- 引导页 hero ---------- */
.fm-p-hero{
  background:linear-gradient(150deg,#0E3A5C 0%,#134B72 55%,#175E8C 100%);
  border-radius:16px;padding:30px 32px;color:#fff;position:relative;overflow:hidden;
}
.fm-p-hero::after{
  content:"";position:absolute;right:-70px;top:-70px;width:230px;height:230px;border-radius:50%;
  background:radial-gradient(circle,rgba(201,164,92,.34),transparent 68%);
}
.fm-p-hero__badge{
  display:inline-block;font-size:11.5px;font-weight:600;letter-spacing:.3px;
  background:rgba(201,164,92,.22);border:1px solid rgba(201,164,92,.5);color:#F0DFBC;
  border-radius:999px;padding:4px 12px;
}
.fm-p-hero__t{font-size:23px;font-weight:600;line-height:1.5;margin-top:14px;letter-spacing:-.4px}
.fm-p-hero__s{font-size:13px;line-height:1.9;color:#C4D6E4;margin-top:12px;max-width:620px;position:relative}

/* ---------- 小节标题（跨卡片使用） ---------- */
.fm-p-sechd{
  font-size:13.5px;font-weight:600;color:var(--fm-deep);margin:26px 0 12px;
  display:flex;align-items:center;gap:9px;
}
.fm-p-sechd::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--fm-gold)}

/* ---------- 照片上传槽 ---------- */
.fm-p-upload{display:flex;flex-wrap:wrap;gap:10px}
.fm-p-up{
  position:relative;width:104px;height:104px;border-radius:11px;overflow:hidden;
  border:1px solid var(--fm-line);background:var(--fm-bg);flex:0 0 104px;
}
.fm-p-up img{width:100%;height:100%;object-fit:cover;display:block}
.fm-p-up__x{
  position:absolute;right:5px;top:5px;width:22px;height:22px;border-radius:50%;border:0;
  background:rgba(8,41,65,.72);color:#fff;font-size:14px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-family:inherit;padding:0;
}
.fm-p-up__x:hover{background:#A33232}
.fm-p-up--add{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  border:1px dashed #C3D5E1;background:#FBFDFE;color:var(--fm-ink3);cursor:pointer;
  font-size:11.5px;text-align:center;transition:border-color .16s,color .16s,background .16s;
}
.fm-p-up--add:hover{border-color:var(--fm-deep2);color:var(--fm-deep);background:#F4F9FC}
.fm-p-up--add svg{width:22px;height:22px}
.fm-p-up--add input{display:none}
.fm-p-up--busy{border-style:dashed;background:#F7FAFC}
.fm-p-up__busy{display:flex;align-items:center;justify-content:center;height:100%;font-size:11.5px;color:var(--fm-ink3)}

/* ---------- 讲座场次卡片 ---------- */
.fm-p-session{
  border:1px solid var(--fm-line);border-radius:14px;padding:18px 20px;background:#FCFDFE;
  margin-bottom:14px;
}
.fm-p-session__hd{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding-bottom:13px;margin-bottom:15px;border-bottom:1px dashed var(--fm-line);
}
.fm-p-session__n{font-size:13px;font-weight:600;color:var(--fm-deep);display:flex;align-items:center;gap:8px}
.fm-p-session__n em{
  font-style:normal;font-size:11px;font-weight:500;color:var(--fm-ink3);
  background:#EDF2F6;border-radius:5px;padding:2px 7px;
}
.fm-p-session__del{
  border:0;background:none;font-family:inherit;font-size:12px;color:#B23A3A;cursor:pointer;
  padding:5px 9px;border-radius:7px;
}
.fm-p-session__del:hover{background:#FDF1F1}
.fm-p-session__bd{display:grid;gap:14px}

/* ---------- 多选 / 单选 chips ---------- */
.fm-p-chips{display:flex;flex-wrap:wrap;gap:8px}
.fm-p-chip{
  display:inline-flex;align-items:center;gap:7px;border:1px solid var(--fm-line);background:#fff;
  border-radius:9px;padding:8px 14px;font-size:12.5px;color:var(--fm-ink2);cursor:pointer;
  transition:border-color .16s,background .16s,color .16s;user-select:none;
}
.fm-p-chip:hover{border-color:#B9CDDC}
.fm-p-chip input{width:0;height:0;position:absolute;opacity:0;pointer-events:none}
.fm-p-chip:has(input:checked){border-color:var(--fm-deep2);background:#F4F9FC;color:var(--fm-deep);font-weight:600}
.fm-p-chip:has(input:checked)::before{content:"✓";font-size:11px;color:var(--fm-teal);font-weight:700}

/* ---------- 提交完成 ---------- */
.fm-p-doneic{
  width:58px;height:58px;border-radius:50%;margin:0 auto 16px;
  background:var(--fm-tealbg);color:#0E5F52;font-size:27px;line-height:1;
  display:flex;align-items:center;justify-content:center;
}
.fm-p-donet{font-size:19px;font-weight:600;color:var(--fm-ink);letter-spacing:-.3px}
.fm-p-linkbox{
  font-size:12.5px;color:var(--fm-deep);background:var(--fm-bg);border:1px solid var(--fm-line);
  border-radius:10px;padding:12px 15px;margin-top:12px;word-break:break-all;font-family:ui-monospace,Menlo,Consolas,monospace;
}

/* 对外展示效果预览（原型 .plan） */
.fm-p-plan{
  border:1px solid var(--fm-line);border-radius:15px;overflow:hidden;background:#fff;
  box-shadow:0 14px 34px -26px rgba(8,41,65,.55);
}
.fm-p-plan__hd{position:relative;height:168px;background:linear-gradient(150deg,#134B72,#0E3A5C)}
.fm-p-plan__hd img{width:100%;height:100%;object-fit:cover;display:block}
.fm-p-plan__ph{
  height:100%;display:flex;align-items:center;justify-content:center;color:#8FA9BC;font-size:12.5px;
}
.fm-p-plan__tag{
  position:absolute;left:14px;top:14px;font-size:11.5px;font-weight:600;color:#fff;
  background:rgba(8,41,65,.6);border-radius:999px;padding:4px 11px;backdrop-filter:blur(4px);
}
.fm-p-plan__bd{padding:18px 20px 20px}
.fm-p-plan__nm{font-size:16.5px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-p-plan__sub{font-size:12.5px;color:var(--fm-ink3);margin-top:6px;line-height:1.7}
.fm-p-plan__intro{font-size:12.5px;color:var(--fm-ink2);line-height:1.8;margin-top:10px}
.fm-p-plan__meta{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--fm-line);
  border:1px solid var(--fm-line);border-radius:11px;overflow:hidden;margin-top:16px;
}
.fm-p-plan__meta > div{background:#fff;padding:12px 14px}
.fm-p-plan__meta .k{font-size:11.5px;color:var(--fm-ink3)}
.fm-p-plan__meta .v{font-size:13px;font-weight:600;color:var(--fm-ink);margin-top:5px;line-height:1.5;word-break:break-all}

/* ---------- 签到二维码 ---------- */
.fm-p-qrbox{
  width:232px;height:232px;margin:16px auto 12px;padding:6px;background:#fff;
  border:1px solid var(--fm-line);border-radius:14px;box-shadow:0 12px 30px -22px rgba(8,41,65,.6);
}
.fm-p-qrbox img{width:100%;height:100%;display:block}
.fm-p-qrname{font-size:14.5px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-p-qrsub{font-size:12.5px;color:var(--fm-ink3);margin-top:6px;line-height:1.7}

/* 家长端签到页预览 */
.fm-p-signprev{
  border:1px solid var(--fm-line);border-radius:14px;background:linear-gradient(170deg,#F6FAFC,#fff);
  padding:24px 20px;text-align:center;margin-top:14px;
}
.fm-p-signprev__n{font-size:15.5px;font-weight:600;color:var(--fm-ink);line-height:1.5}
.fm-p-signprev__s{font-size:12.5px;color:var(--fm-ink3);margin-top:7px;line-height:1.7}
.fm-p-signprev__t{font-size:11.5px;color:var(--fm-ink3);margin-top:14px;line-height:1.7}

@media (max-width:860px){
  .fm-p-hero{padding:24px 22px}
  .fm-p-hero__t{font-size:20px}
  .fm-p-plan__meta{grid-template-columns:1fr 1fr}
  .fm-p-session{padding:16px 15px}
}

/* ---------- 轻提示 ---------- */
.fm-p-toastwrap{
  position:fixed;left:50%;top:26px;transform:translateX(-50%);z-index:9999;
  display:grid;gap:10px;justify-items:center;pointer-events:none;width:max-content;max-width:92vw;
}
.fm-p-toast{
  background:#0E3A5C;color:#fff;font-size:13px;line-height:1.65;font-weight:500;
  border-radius:11px;padding:12px 20px;box-shadow:0 18px 40px -18px rgba(8,41,65,.7);
  animation:fm-toast .22s ease-out;max-width:92vw;
}
.fm-p-toast--ok{background:#0E5F52}
.fm-p-toast--err{background:#A33232}
@keyframes fm-toast{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}

/* ---------- 弹层 ---------- */
.fm-p-mask{
  position:fixed;inset:0;background:rgba(8,41,65,.5);z-index:9998;
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.fm-p-mask[hidden]{display:none}
.fm-p-modal{
  background:#fff;border-radius:16px;width:100%;max-width:580px;max-height:88vh;
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 30px 70px -24px rgba(8,41,65,.6);
}
.fm-p-modal__hd{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:18px 24px;border-bottom:1px solid var(--fm-line);
}
.fm-p-modal__hd h3{font-size:16px;font-weight:600;color:var(--fm-ink)}
.fm-p-modal__x{
  border:0;background:none;cursor:pointer;color:var(--fm-ink3);font-size:20px;line-height:1;
  width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;
}
.fm-p-modal__x:hover{background:var(--fm-bg);color:var(--fm-ink)}
.fm-p-modal__bd{padding:22px 24px;overflow:auto}
.fm-p-modal__ft{
  padding:16px 24px;border-top:1px solid var(--fm-line);background:var(--fm-bg);
  display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;
}

/* ============================================================
   落地页弹层：官方文件就地查看 + 师资研修班在线报名
   ============================================================ */
.fm-p-modal--doc{max-width:1000px;width:100%;height:88vh}
.fm-p-modal--enroll{max-width:720px;width:100%}
.fm-p-modal__hd > div{min-width:0}
.fm-doc__sub{font-size:12.5px;color:var(--fm-ink3);margin-top:6px;line-height:1.6}
.fm-doc__sub b{color:var(--fm-ink2);font-weight:600}

/* 工具条 */
.fm-doc__bar{
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:12px 24px;border-bottom:1px solid var(--fm-line);background:#fff;
}
.fm-doc__tabs{display:flex;gap:4px}
.fm-doc__tab{
  border:0;background:none;font-family:inherit;font-size:13px;font-weight:600;color:var(--fm-ink3);
  padding:7px 14px;border-radius:8px;cursor:pointer;transition:background .16s,color .16s;
}
.fm-doc__tab:hover{color:var(--fm-deep);background:var(--fm-bg)}
.fm-doc__tab.is-on{background:var(--fm-deep);color:#fff}
.fm-doc__acts{display:flex;gap:8px;flex-wrap:wrap}

/* 文件主体 */
.fm-doc__body{flex:1;min-height:0;overflow:auto;background:#E9EDF0;display:flex;flex-direction:column}
.fm-doc__frame{width:100%;flex:1 1 auto;min-height:0;border:0;background:#fff}
.fm-doc__pages{padding:18px;display:grid;gap:14px;justify-items:center}
.fm-doc__pages img{
  width:100%;max-width:880px;height:auto;display:block;background:#fff;
  border:1px solid #D8DEE3;box-shadow:0 10px 26px -18px rgba(8,41,65,.5);
}
.fm-doc__text{padding:26px 30px;background:#fff;font-size:14px;line-height:2.05;color:var(--fm-ink2);white-space:pre-wrap;word-break:break-word}
.fm-doc__key{padding:24px 26px;background:#fff}
.fm-doc__key h4{font-size:14.5px;font-weight:600;color:var(--fm-ink);margin-bottom:12px}
.fm-doc__key p{font-size:13.5px;color:var(--fm-ink2);line-height:2;text-align:justify}
.fm-doc__key ul{margin-top:18px;padding-top:16px;border-top:1px solid var(--fm-line);display:grid;gap:10px}
.fm-doc__key li{
  font-size:13px;color:var(--fm-ink2);line-height:1.9;padding-left:18px;position:relative;
}
.fm-doc__key li::before{
  content:'';position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;
  background:var(--fm-gold);
}
.fm-doc__load{padding:40px;text-align:center;font-size:13px;color:var(--fm-ink3);background:#fff}
.fm-doc__ft{
  justify-content:space-between;align-items:center;
}
.fm-doc__tip{font-size:12px;color:var(--fm-ink3);line-height:1.7;flex:1;min-width:200px}

/* 报名弹层内部 */
.fm-p-modal--enroll .fm-p-modal__bd{padding:22px 26px}
.fm-enroll-note{
  font-size:12px;color:var(--fm-ink3);line-height:1.85;background:var(--fm-bg);
  border-radius:10px;padding:12px 15px;margin-bottom:20px;
}
.fm-enroll-note b{color:var(--fm-ink2);font-weight:600}
.fm-enroll-ok{text-align:center;padding:26px 6px}
.fm-enroll-ok__ic{
  width:56px;height:56px;margin:0 auto 16px;border-radius:50%;
  background:var(--fm-tealbg);color:#0E5F52;display:flex;align-items:center;justify-content:center;
}
.fm-enroll-ok__ic svg{width:28px;height:28px}
.fm-enroll-ok__t{font-size:17px;font-weight:600;color:var(--fm-ink)}
.fm-enroll-ok__no{
  display:inline-block;margin-top:14px;font-size:15px;font-weight:600;color:var(--fm-deep);
  background:var(--fm-goldbg);border:1px dashed var(--fm-gold);border-radius:10px;padding:10px 20px;
  letter-spacing:.06em;
}
.fm-enroll-ok__s{font-size:13px;color:var(--fm-ink2);line-height:1.95;margin-top:16px;text-align:left}

@media (max-width:860px){
  .fm-doc__frame{min-height:360px}
  .fm-doc__bar{padding:10px 16px}
  .fm-doc__text,.fm-doc__key{padding:18px}
  .fm-p-modal--doc{max-height:92vh}
}



