/* 数学基础与探索：在 fundamental.css 的版式上加梯队配色、关系图、路线、详解阅读器和卡片。只用 shared-nav.css 的颜色变量，深浅主题都生效。
   宽元素都要能在约 520 px 的排版宽度里放下（Tт 放大时），关系图在窄屏上横向滚动。 */
:root{--fm-t1:var(--gold);--fm-t2:var(--info);--fm-t3:var(--violet)}
[data-tier="1"]{--fm-c:var(--fm-t1)}
[data-tier="2"]{--fm-c:var(--fm-t2)}
[data-tier="3"]{--fm-c:var(--fm-t3)}
.fm-hero{max-width:100ch}
.fm-crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:12.5px;color:var(--muted);margin:0 0 14px}
.fm-crumbs a{color:var(--accent-text)}
.fm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:0 0 18px}
.fm-stats div{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.fm-stats dt{font:600 26px/1.1 var(--font-num);color:var(--fs-gold-text)}
.fm-stats dd{margin:4px 0 0;font-size:12.5px;color:var(--muted)}
.fm-glyph{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 4px;border-radius:50%;margin-right:8px;font:600 13px/1 var(--font-num);color:var(--fm-c,var(--accent-text));background:color-mix(in srgb,var(--fm-c,var(--accent)) 12%,transparent);border:1px solid color-mix(in srgb,var(--fm-c,var(--accent)) 45%,transparent);flex:none}

/* 梯队 */
.fm-tier-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.fm-tier{position:relative;padding:18px 18px 14px;border:1px solid var(--line);border-top:3px solid var(--fm-c);border-radius:8px;background:var(--surface)}
.fm-tier-n{margin:0;font-size:11px;letter-spacing:1.6px;font-weight:700;color:color-mix(in srgb,var(--fm-c) 75%,var(--ink));text-transform:uppercase}
.fm-tier h3{margin:4px 0 6px;font-size:18px;font-weight:600}
.fm-tier>p{margin:0 0 12px;font-size:13px;color:var(--ink-2);line-height:1.75}
.fm-tier ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fm-tier li{display:grid;gap:2px}
.fm-tier li a{display:flex;align-items:center;color:var(--ink);text-decoration:none;font-weight:600;font-size:14px}
.fm-tier li a:hover{color:var(--accent-text)}
.fm-tier li small{padding-left:34px;color:var(--muted);font-size:12px;line-height:1.55}

/* 关系图 */
.fm-map{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start}
.fm-graph-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface);-webkit-overflow-scrolling:touch}
.fm-graph{display:block;width:100%;min-width:720px;height:auto}
.fm-col-label{font:700 11px var(--font-sans);letter-spacing:.8px;fill:var(--muted)}
.fm-edge{fill:none;stroke:var(--line-strong);stroke-width:1.4;transition:stroke .15s,opacity .15s}
#fm-arrow path{fill:var(--line-strong)}
.fm-graph.focused .fm-edge.dim{opacity:.18}
.fm-edge.on{stroke:var(--gold);stroke-width:2.4}
.fm-node{cursor:pointer;outline:none}
.fm-node rect{fill:var(--surface);stroke:color-mix(in srgb,var(--fm-c,var(--accent)) 60%,var(--line));stroke-width:1.4;transition:fill .15s}
.fm-node circle{fill:color-mix(in srgb,var(--fm-c) 14%,var(--surface));stroke:color-mix(in srgb,var(--fm-c) 55%,transparent)}
.fm-node text{font:600 13.5px var(--font-sans);fill:var(--ink)}
.fm-node .fm-node-g{font:600 12px var(--font-num);fill:color-mix(in srgb,var(--fm-c) 80%,var(--ink))}
.fm-node:hover rect,.fm-node:focus-visible rect,.fm-node.on rect{fill:color-mix(in srgb,var(--fm-c,var(--accent)) 12%,var(--surface));stroke-width:2.2}
.fm-node:focus-visible rect{stroke:var(--gold)}
.fm-target rect{fill:var(--accent-soft);stroke:var(--accent-2);stroke-width:1.6}
.fm-target text{font-size:14px;fill:var(--accent-text)}
.fm-graph.focused .fm-node:not(.on){opacity:.82}
.fm-map-panel{position:sticky;top:calc(var(--cr-nav-height,64px) + 16px);padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:13px;max-height:calc(100vh - var(--cr-nav-height,64px) - 40px);overflow:auto}
.fm-map-panel h3{margin:4px 0 6px;font-size:17px}
.fm-map-panel h4{margin:14px 0 6px;font-size:12px;letter-spacing:1px;color:var(--muted);text-transform:uppercase}
.fm-map-panel p{margin:0 0 8px;color:var(--ink-2);line-height:1.7}
.fm-panel-k{margin:0;font-size:11px;letter-spacing:1.2px;font-weight:700;color:color-mix(in srgb,var(--fm-c,var(--muted)) 75%,var(--ink));text-transform:uppercase}
.fm-rel{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.fm-rel li{display:grid;gap:4px}
.fm-rel p{margin:0;font-size:12.5px}
.fm-rel-all{margin-top:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:10px 14px}
.fm-rel-all summary{cursor:pointer;font-weight:600;font-size:13.5px}
.fm-rel-list{list-style:none;margin:12px 0 4px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:10px 18px}
.fm-rel-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.fm-rel-list p{flex-basis:100%;margin:0;font-size:12.5px;color:var(--ink-2)}
.fm-arrow{color:var(--muted)}

/* 学科小标签 */
.fm-chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}
.fm-chip{display:inline-flex;align-items:center;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:600;line-height:1.5;text-decoration:none;color:color-mix(in srgb,var(--fm-c,var(--accent)) 78%,var(--ink));background:color-mix(in srgb,var(--fm-c,var(--accent)) 10%,transparent);border:1px solid color-mix(in srgb,var(--fm-c,var(--accent)) 40%,transparent);white-space:nowrap}
a.fm-chip:hover{background:color-mix(in srgb,var(--fm-c,var(--accent)) 18%,transparent)}
.fm-chip-target{--fm-c:var(--accent-2)}

/* 路线 */
.fm-track-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.fm-track-tab{padding:9px 14px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);cursor:pointer;font-size:13.5px;font-weight:600}
.fm-track-tab[aria-selected=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.fm-track-desc{margin:0 0 12px;font-size:14px;color:var(--ink-2);max-width:90ch}
.fm-bar{position:relative;height:30px;border-radius:6px;overflow:hidden;background:var(--surface-2);margin:0 0 14px}
.fm-bar span{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:600;color:var(--ink);border-right:2px solid var(--paper);overflow:hidden;white-space:nowrap}
.fm-bar span[data-k="0"]{background:color-mix(in srgb,var(--gold) 26%,var(--surface))}
.fm-bar span[data-k="1"]{background:color-mix(in srgb,var(--accent-2) 22%,var(--surface))}
.fm-phases{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;counter-reset:ph}
.fm-phases li{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.fm-phase-h{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.fm-phase-h b{font-size:14px}
.fm-weeks{font-size:12px;color:var(--fs-gold-text);font-weight:600;white-space:nowrap}
.fm-phases p{margin:6px 0 0;font-size:13px;color:var(--ink-2);line-height:1.7}

/* 详解阅读器 */
.fm-reader-grid{display:grid;grid-template-columns:250px minmax(0,1fr);gap:22px;align-items:start}
.fm-side{position:sticky;top:calc(var(--cr-nav-height,64px) + 16px);display:grid;gap:14px;max-height:calc(100vh - var(--cr-nav-height,64px) - 40px);overflow:auto;padding-right:2px}
.fm-side-g>p{margin:0 0 6px;font-size:11px;letter-spacing:1px;font-weight:700;color:color-mix(in srgb,var(--fm-c) 75%,var(--ink))}
.fm-side-b{position:relative;display:flex;align-items:center;width:100%;text-align:left;padding:8px 10px;margin:0 0 4px;border:1px solid transparent;border-radius:6px;background:none;cursor:pointer;font-size:13.5px;color:var(--ink-2);line-height:1.35}
.fm-side-b:hover{background:var(--surface-2)}
.fm-side-b[aria-current=true]{background:var(--surface);border-color:color-mix(in srgb,var(--fm-c) 55%,var(--line));color:var(--ink);font-weight:600;box-shadow:inset 3px 0 0 var(--fm-c)}
.fm-side-g .fm-side-b{--fm-c:inherit}
.fm-side-p{position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--fm-c) calc(var(--p,0)*100%),transparent 0);opacity:.7}
.fm-panel{border:1px solid var(--line);border-radius:10px;background:var(--surface);padding:22px 24px;border-top:3px solid var(--fm-c)}
.fm-panel:focus{outline:none}
.fm-sub-h{display:flex;gap:16px;align-items:flex-start;margin-bottom:6px}
.fm-big-glyph{flex:none;display:flex;align-items:center;justify-content:center;width:58px;height:58px;border-radius:14px;font:600 26px/1 var(--font-num);color:color-mix(in srgb,var(--fm-c) 80%,var(--ink));background:color-mix(in srgb,var(--fm-c) 12%,transparent);border:1px solid color-mix(in srgb,var(--fm-c) 45%,transparent)}
.fm-sub-h h3{margin:4px 0 4px;font-size:22px;font-weight:600;line-height:1.3}
.fm-tagline{margin:0;font:500 15px/1.6 var(--font-serif);color:var(--ink-2)}
.fm-study{margin:4px 0 16px}
.fm-panel h4{margin:22px 0 8px;font-size:13px;letter-spacing:1px;font-weight:700;color:var(--muted);text-transform:uppercase}
.fm-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:26px}
.fm-col-side{border-left:1px solid var(--line);padding-left:20px}
.fm-bul{margin:0;padding-left:20px;display:grid;gap:7px;font-size:14px;color:var(--ink-2);line-height:1.8}
.fm-pit li::marker{color:var(--warn)}
.fm-practice{padding:14px 16px;border:1px solid color-mix(in srgb,var(--accent-2) 45%,var(--line));border-radius:8px;background:var(--accent-soft)}
.fm-practice-t{margin:0 0 6px;font-weight:700;font-size:14.5px}
.fm-practice>p:not(.fm-practice-t){margin:0 0 10px;font-size:14px;line-height:1.85;color:var(--ink-2)}
.fm-code{position:relative}
.fm-code pre{margin:0;padding:12px 14px;border-radius:6px;background:var(--surface);border:1px solid var(--line);overflow-x:auto;font:12.5px/1.6 var(--font-mono);color:var(--ink)}
.fm-copy{position:absolute;top:6px;right:6px;min-height:28px;padding:3px 10px;font-size:12px}
.fm-outline{list-style:none;margin:0;padding:0;display:grid;gap:9px;font-size:13px;line-height:1.65;color:var(--ink-2)}
.fm-outline li{display:grid;gap:2px;padding-left:12px;border-left:2px solid color-mix(in srgb,var(--fm-c) 45%,var(--line))}
.fm-wk{font-size:11px;font-weight:700;color:var(--fs-gold-text);letter-spacing:.4px}
.fm-checks{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.fm-checks label{display:flex;gap:8px;align-items:flex-start;cursor:pointer}
.fm-checks input{margin-top:4px;accent-color:var(--accent);flex:none}
.fm-res{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:8px;border-top:1px solid var(--line);padding-top:4px}

/* 书和视频卡片 */
.fm-cards{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.fm-book,.fm-video{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.fm-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.fm-tag{font-size:11px;font-weight:600;padding:2px 7px;border-radius:4px;background:var(--surface-2);color:var(--ink-2);line-height:1.5}
.fm-tag[data-role=main]{background:color-mix(in srgb,var(--gold) 20%,transparent);color:color-mix(in srgb,var(--gold) 70%,var(--ink))}
.fm-tag[data-role=chem]{background:color-mix(in srgb,var(--ok) 15%,transparent);color:color-mix(in srgb,var(--ok) 75%,var(--ink))}
.fm-tag[data-role=paper]{background:color-mix(in srgb,var(--info) 15%,transparent);color:color-mix(in srgb,var(--info) 75%,var(--ink))}
.fm-free{background:color-mix(in srgb,var(--ok) 18%,transparent);color:color-mix(in srgb,var(--ok) 75%,var(--ink))}
.fm-re{background:color-mix(in srgb,var(--warn) 16%,transparent);color:color-mix(in srgb,var(--warn) 75%,var(--ink))}
.fm-plat[data-p=yt]{background:color-mix(in srgb,var(--danger) 14%,transparent);color:color-mix(in srgb,var(--danger) 75%,var(--ink))}
.fm-plat[data-p=bili]{background:color-mix(in srgb,var(--info) 15%,transparent);color:color-mix(in srgb,var(--info) 75%,var(--ink))}
.fm-cite{margin:0 0 6px;font-size:13px;line-height:1.6;color:var(--ink-2)}
.fm-title{font:600 14.5px/1.45 var(--font-num);color:var(--ink)}
a.fm-title{text-decoration:none}
a.fm-title:hover{text-decoration:underline}
.fm-ed{font-size:12px;color:var(--muted)}
.fm-au{color:var(--ink)}
.fm-note{margin:0 0 6px;font-size:13px;line-height:1.7;color:var(--ink-2)}
.fm-links{display:flex;flex-wrap:wrap;gap:12px;margin:0;font-size:12.5px}
.fm-links a{word-break:break-all}

/* Hall 导读 */
.fm-hall{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.fm-hall li{display:grid;grid-template-columns:90px minmax(0,1fr) minmax(0,260px);gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.fm-ch{font:600 15px var(--font-num);color:var(--fs-gold-text)}
.fm-hall-t{margin:0 0 2px;font-weight:600;font-size:14px}
.fm-hall .muted{margin:0;font-size:12.5px}

/* 从哪里开始 */
.fm-start{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.fm-next{padding:18px;border:1px solid color-mix(in srgb,var(--gold) 45%,var(--line));border-radius:10px;background:var(--gold-soft)}
.fm-next h3{margin:4px 0 6px;font-size:18px}
.fm-next p{margin:0 0 10px;font-size:13.5px;color:var(--ink-2)}
.fm-meters{list-style:none;margin:0;padding:14px 16px;display:grid;gap:9px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.fm-meters li{display:grid;grid-template-columns:150px minmax(0,1fr) 40px;gap:10px;align-items:center;font-size:13px}
.fm-meters a{color:var(--ink);text-decoration:none;font-weight:600}
.fm-meter{height:8px;border-radius:5px;background:var(--surface-2);overflow:hidden}
.fm-meter i{display:block;height:100%;background:var(--fm-c);border-radius:5px;transition:width .2s}
.fm-meter-n{font-size:12px;color:var(--muted);text-align:right}

/* 书目库 */
.fm-f-check{flex-direction:row!important;align-items:center;gap:8px}
.fm-lib{display:grid;gap:18px}
.fm-lib-g h3{margin:0 0 8px;font-size:15px}
.fm-lib-g .fm-cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}

@media (max-width:1100px){
  .fm-cols{grid-template-columns:minmax(0,1fr)}
  .fm-col-side{border-left:0;padding-left:0;border-top:1px solid var(--line)}
}
@media (max-width:980px){
  .fm-map{grid-template-columns:minmax(0,1fr)}
  .fm-map-panel{position:static;max-height:none}
  .fm-reader-grid{grid-template-columns:minmax(0,1fr)}
  .fm-side{position:static;max-height:none;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
  .fm-start{grid-template-columns:minmax(0,1fr)}
  .fm-hall li{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  main{padding:0 16px}
  .fm-panel{padding:16px}
  .fm-sub-h{gap:12px}
  .fm-big-glyph{width:46px;height:46px;font-size:21px}
  .fm-meters li{grid-template-columns:110px minmax(0,1fr) 36px}
  .fm-res,.fm-lib-g .fm-cards,.fm-rel-list{grid-template-columns:minmax(0,1fr)}
}
@media print{.fm-side,.fm-map-panel,.fm-copy,.fs-jump{display:none}.fm-panel[hidden]{display:block!important}}

/* 概率论详解里的交互演示（大数定律、中心极限定理）：版式用 fundamental.css 的 .fs-demo */
.fm-prob{margin-top:8px;border-top:1px solid var(--line);padding-top:2px}
.fm-prob-note{margin:0 0 12px;font-size:13px;color:var(--muted)}
.fm-prob .fs-demo{background:var(--paper)}
.fm-prob .fs-demo>header h3{font-size:16px}
@media (max-width:1280px){.fm-prob .fs-demo-body{grid-template-columns:minmax(0,1fr)}}
.fm-prob .fs-controls select{min-height:36px;padding:4px 8px;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface)}
