/* 动画讲解视图。沿用逻辑地图的纸面配色：金色 = 真实世界，绿色虚线 = 数字孪生，深绿 = Agent 与本系统。 */
body[data-view=play] :is(.sidearea,#search,#overview,.rsi-chat-launch,.rsi-feedback-launch){display:none!important}
body:not(.rsi-floating)[data-view=play]:not([data-play-aside=true]) :is(#splitter,.rsi-side-panel),body[data-view=play]:not([data-play-aside=true]) .layout>#detail{display:none!important}
body.rsi-floating .av-opts [data-a=aside]{display:none}
body[data-view=play] .map{padding:20px 28px 36px}
body[data-view=play] header{padding:12px 32px}body[data-view=play] header h1{font-size:21px;margin:0}body[data-view=play] header p:not(#sync){display:none}
@media(min-width:851px){body[data-view=play] .layout{grid-template-columns:minmax(0,1fr)}body[data-view=play][data-play-aside=true] .layout{grid-template-columns:minmax(0,1fr) 8px var(--detail-width,400px)}}
@media(max-width:850px){body[data-view=play] .rsi-side-panel{order:2}body[data-view=play] .map{padding:16px 16px 32px}body[data-view=play] header{padding:12px 20px}}

.av{--av-green:#2d735c;--av-deep:#244d3e;--av-gold:#a37227;--av-red:#b0563c;--av-stage-w:calc((100vh - 366px)*16/9)}
.av-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:24px;align-items:start;max-width:1560px;margin:0 auto}
.av-main{min-width:0}
.av-stage{position:relative;width:min(100%,max(520px,var(--av-stage-w)));aspect-ratio:16/9;margin:0 auto;border:1px solid var(--line);border-radius:12px;overflow:hidden;
  background:#fffefa radial-gradient(circle,#e3e8df 1px,transparent 1.3px) 0 0/24px 24px}
.av-svg{position:absolute;inset:0;width:100%;height:100%;display:block;user-select:none}
.av-tags{position:absolute;left:14px;right:14px;top:12px;display:flex;justify-content:space-between;gap:10px;pointer-events:none}
.av-tag{font-size:11px;line-height:1.5;padding:3px 10px;border-radius:999px;background:#244d3e;color:#fff;letter-spacing:.02em}
.av-tag.av-note{background:#fffefae6;color:var(--muted);border:1px solid var(--line)}.av-tag:empty{display:none}

.av-poster{position:absolute;inset:0;display:grid;place-items:center;background:#f4f3eef2;text-align:center;padding:24px}
.av-poster-in{max-width:620px}.av-poster h2{font-size:clamp(20px,2.6vw,34px);line-height:1.35;margin:10px 0 12px;font-weight:600;letter-spacing:-.03em}
.av-poster p{margin:0;color:#59695c;font-size:14px}.av-poster .av-keys{margin-top:22px;font-size:12px;color:var(--muted)}
.av-start{display:inline-flex;align-items:center;gap:10px;margin-top:26px;padding:13px 30px;border:0;border-radius:999px;background:#244d3e;color:#fff;font-size:16px;box-shadow:0 8px 26px #244d3e33}
.av-start:hover{background:#1d4033}.av svg[viewBox="0 0 16 16"]{width:16px;height:16px;fill:currentColor;flex-shrink:0}
.av-focus{display:flex;align-items:center;justify-content:center;gap:10px;max-width:100%;margin:18px auto 0;padding:11px 15px;border:1px solid #a8c0a9;border-radius:8px;background:#eaf1e4;color:#244d3e;font-size:13px;text-align:left}
.av-focus>span:first-child{font-size:10px;white-space:nowrap;color:#8a5d17}.av-focus strong{font-weight:600}.av-focus:hover{border-color:var(--accent);background:#dce9d7}
.av[data-core=true] .av-stage{border-color:#8aa992}.av[data-core=true] .av-head h2{font-size:23px}.av[data-core=true] .av-head .eyebrow{color:#2d735c}

.av-controls{display:flex;align-items:center;gap:14px;margin:14px auto 0;width:min(100%,max(520px,var(--av-stage-w)))}
.av-btns,.av-opts{display:flex;align-items:center;gap:6px;flex-shrink:0}
.av-controls button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;min-width:36px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fffefa;color:var(--ink);font-size:12.5px;white-space:nowrap}
.av-controls button:hover:not(:disabled){border-color:var(--accent);background:#f1f5ed}.av-controls button:disabled{opacity:.35;cursor:default}
.av-controls .av-play{background:#244d3e;border-color:#244d3e;color:#fff;padding:7px 16px;min-width:112px}.av-controls .av-play:hover:not(:disabled){background:#1d4033}
.av-controls button[aria-pressed=true]{background:#dce7d9;border-color:#88a995;color:#244d3e}
.av-progress{flex:1;display:flex;gap:4px;min-width:60px}.av-progress i{flex:1;height:5px;border-radius:3px;background:#dfe5dc;overflow:hidden}.av-progress b{display:block;height:100%;width:0;background:var(--accent);border-radius:3px}

.av-legend{display:flex;flex-wrap:wrap;gap:6px 20px;margin:12px auto 0;width:min(100%,max(520px,var(--av-stage-w)));font-size:11.5px;color:var(--muted)}
.av-legend span{display:inline-flex;align-items:center;gap:7px}.av-legend i{display:inline-block;width:22px;height:0;border-top:2px solid}
.av-legend .k-real{border-color:var(--av-gold)}.av-legend .k-twin{border-color:var(--av-green);border-top-style:dashed}.av-legend .k-agent{height:10px;width:14px;border:0;border-radius:3px;background:#244d3e}.av-legend .k-hyp{border-color:var(--av-gold);border-top-style:dashed}

.av-chapters{display:flex;flex-wrap:wrap;gap:12px 22px;margin:18px auto 0;padding-top:16px;border-top:1px solid var(--line);width:min(100%,max(520px,var(--av-stage-w)))}
.av-chl{font-size:11px;color:var(--muted);margin-bottom:7px;display:flex;gap:8px;align-items:baseline}.av-chl strong{font-size:12px;color:var(--ink);font-weight:600}
.av-chr{display:flex;gap:5px;flex-wrap:wrap}
.av-ch{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:4px 9px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--muted);font-size:12px}
.av-ch .n{font:11px ui-monospace,monospace}.av-ch .t{display:none;max-width:16em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av-ch:hover{border-color:var(--accent);color:var(--accent)}.av-ch.past{background:#e6ede2;color:#48604b}
.av-ch[aria-current=true]{background:#244d3e;border-color:#244d3e;color:#fff}.av-ch[aria-current=true] .t{display:inline}
/* 核心技术一幕：平时只显示编号，用与顶部「核心技术」标签相同的金色并缓慢闪烁；悬停、聚焦或正在播放时显示标题 */
.av-ch[data-core=true]{border-color:#c8962f;background:#f8ead0;color:#6f541f;font-weight:600;animation:av-core-pulse 1.8s ease-in-out infinite}.av-ch[data-core=true]:hover,.av-ch[data-core=true]:focus-visible{background:#f3dfb4;color:#5c4416;border-color:#a37227}.av-ch[data-core=true]:hover .t,.av-ch[data-core=true]:focus-visible .t{display:inline}.av-ch[data-core=true][aria-current=true]{background:#8a5d17;border-color:#8a5d17;color:#fff;animation:none}
@keyframes av-core-pulse{0%,100%{box-shadow:0 0 0 0 rgba(200,150,47,.55);background:#f8ead0}50%{box-shadow:0 0 0 6px rgba(200,150,47,0);background:#fdf4e2}}
@media(prefers-reduced-motion:reduce){.av-ch[data-core=true]{animation:none}}

.av-script{background:#fffefa;border:1px solid var(--line);border-radius:12px;padding:20px 20px 16px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto;overscroll-behavior:contain}
.av-head h2{font-size:20px;line-height:1.45;margin:6px 0 8px;font-weight:600;letter-spacing:-.02em}
.av-claim{font-size:13.5px;line-height:1.8;color:#526456;margin:10px 0 0}.av-claim:empty{display:none}
.av .badge[data-tone=hyp]{background:#f5ecd6;color:#7a5417}
.av-beats{margin-top:16px;border-top:1px solid #e6e9e1;padding-top:8px}
.av-beat{display:block;width:100%;text-align:left;border:0;border-left:2px solid var(--line);background:transparent;padding:9px 0 9px 14px;color:var(--muted);font:inherit}
.av-beat:hover{color:var(--ink)}.av-beat.past{border-left-color:#b7cbbb}
.av-beat[aria-current=true]{border-left-color:var(--accent);color:var(--ink);background:linear-gradient(90deg,#f1f5ed,transparent)}
.av-beat-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.av-beat-head .n{font:11px ui-monospace,monospace;color:var(--accent)}
.av-beat-head strong{font-size:14px;line-height:1.55;font-weight:600;flex:1;min-width:8em}
.av-beat-body{display:none;font-size:13px;line-height:1.9;margin:7px 4px 3px 0}.av-beat[aria-current=true] .av-beat-body{display:block}
.av-beat-body .lead{color:var(--ink)}.av-beat-body .rest{color:#727c74}
.av-links{display:grid;gap:6px;margin-top:14px;padding-top:14px;border-top:1px solid #e6e9e1}.av-links .jump{margin:0;background:#edf3e9;font-size:12.5px}

/* 全屏：舞台与讲解并排铺满 */
.av:fullscreen{background:var(--paper);padding:22px 26px;overflow:auto;--av-stage-w:calc((100vh - 250px)*16/9)}
.av:fullscreen .av-wrap{max-width:none;height:100%}.av:fullscreen .av-script{max-height:calc(100vh - 44px)}
/* 单栏：讲解紧跟在控制条之后，图例与目录排到最后 */
@media(max-width:1180px){.av-wrap{display:flex;flex-direction:column;gap:0}.av-main{display:contents}.av-stage{order:1}.av-controls{order:2}.av-script{order:3;position:static;max-height:none;margin-top:18px}.av-legend{order:4;margin-top:16px}.av-chapters{order:5}.av{--av-stage-w:calc((100vh - 250px)*16/9)}}
@media(max-width:850px){.av-stage{width:100%}.av-controls{flex-wrap:wrap;width:100%}.av-progress{order:3;flex-basis:100%}.av-opts{margin-left:auto}.av-legend,.av-chapters{width:100%}.av-tags .av-note{display:none}.av-poster .av-keys{display:none}.av-start{margin-top:16px;padding:10px 22px;font-size:14px}.av-poster p{font-size:12px}}
@media(max-width:520px){.av-tags{display:none}.av-poster{padding:10px}.av-poster .eyebrow{display:none}.av-poster h2{font-size:16px;margin:0 0 6px}.av-poster p{font-size:11px;line-height:1.5}.av-start{margin-top:10px;padding:8px 18px;font-size:13px}.av-controls .av-play{min-width:0}.av-controls .av-play span{display:none}.av-controls button{padding:7px 8px}.av-script{padding:16px}}

/* ---------- 舞台内的图形 ---------- */
.av-svg{transition:opacity .3s ease}
.av-svg text{font-family:inherit;font-size:15px;fill:#263930}
.av-svg .mid{text-anchor:middle;dominant-baseline:central}
.av-svg .t-s{font-size:12.5px;fill:#657167}.av-svg .t-b{font-weight:600}.av-svg .t-l{font-size:20px;font-weight:600;letter-spacing:-.01em}.av-svg .t-xl{font-size:32px;font-weight:650;letter-spacing:-.02em}
.av-svg .t-k{font:10.5px ui-monospace,monospace;letter-spacing:.1em;fill:#2d735c}.av-svg .t-w{fill:#fff}.av-svg .t-g{fill:#2d735c}.av-svg .t-gold{fill:#8a5d17}.av-svg .t-m{fill:#727c74}
.av-svg .eq{font:italic 19px Georgia,"Times New Roman",serif;fill:#263930}
.av-svg .ln{fill:none;stroke:#8c9f91;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.av-svg .ln-g{stroke:#2d735c}.av-svg .ln-gold{stroke:#a37227}.av-svg .ln-red{stroke:#b0563c}.av-svg .ln-2{stroke-width:2.4}.av-svg .ln-f{stroke-width:1.1}.av-svg .dash{stroke-dasharray:5 6}
.av-svg .guide{fill:none;stroke:none}
.av-svg .box{fill:#fffefa;stroke:#cdd7ce;stroke-width:1.3}
.av-svg .box-soft{fill:#edf3e9;stroke:#c3d4c5}.av-svg .box-deep{fill:#244d3e;stroke:#244d3e}.av-svg .box-warm{fill:#faf4e4;stroke:#dcc695}
.av-svg .box-digital{fill:#f3f7f0;stroke:#c3d4c5}.av-svg .box-twin{fill:#f3f7f0cc;stroke:#2d735c;stroke-dasharray:5 6}
.av-svg .box-gold{fill:#fffaf0;stroke:#a37227;stroke-dasharray:5 6}.av-svg .box-ghost{fill:#fffefa;stroke:#b3c0b6;stroke-dasharray:4 5}.av-svg .box-future{stroke-dasharray:5 6;stroke:#9bb1a2}
.av-svg .mc-real .mc-b{fill:#f0e3c2;stroke:#a37227;stroke-width:1.5}.av-svg .mc-real .mc-l{fill:none;stroke:#a37227;stroke-width:1.8;stroke-linecap:round}
.av-svg .mc-twin .mc-b{fill:#edf3e9;stroke:#2d735c;stroke-width:1.4;stroke-dasharray:4 4}.av-svg .mc-twin .mc-l{fill:none;stroke:#2d735c;stroke-width:1.4;stroke-dasharray:4 4;stroke-linecap:round}
.av-svg .ic-chip .pins{fill:none;stroke:#5d7265;stroke-width:2.4;stroke-linecap:round}.av-svg .ic-chip .body{fill:#244d3e}.av-svg .ic-chip .core{fill:#fffefa;opacity:.9}
.av-svg .ic-chip.gold .pins{stroke:#a37227}.av-svg .ic-chip.gold .body{fill:#fffaf0;stroke:#a37227;stroke-width:2.2;stroke-dasharray:5 5}.av-svg .ic-chip.gold .core{fill:#a37227;opacity:.85}

/* 步骤显隐与描线 */
.av-svg [data-s]{opacity:0;transition:opacity .55s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.av-svg [data-s].on{opacity:1}
.av-svg .rise{transform:translateY(12px)}.av-svg .rise.on{transform:none}
.av-svg .pop{transform-box:fill-box;transform-origin:center;transform:scale(.82)}.av-svg .pop.on{transform:none}
.av-svg .af-base{transition:opacity .5s ease}.av-svg .af-base.dim{opacity:0}
.av-svg .draw{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.3s ease .1s,opacity .3s ease}.av-svg .draw.on{stroke-dashoffset:0}
.av-svg [data-hl]>.box{transition:stroke .3s,stroke-width .3s}.av-svg [data-hl].hl>.box{stroke:#2d735c;stroke-width:2.6;stroke-dasharray:none}
.av-svg .fx{opacity:0;transition:opacity .4s}.av-svg .fx.on{opacity:1}
.av-svg .p{fill:#2d735c}.av-svg .p-gold{fill:#a37227}.av-svg .p-m{fill:#9aa79d}.av-svg .p-t{opacity:.45}
.av-svg .st .box,.av-svg .st text{transition:none}.av-svg .st.lit .box{fill:#244d3e;stroke:#244d3e}.av-svg .st.lit text{fill:#fff}

/* 各幕的小部件 */
.av-svg .crowd circle{fill:#d5dcd3;transition:fill .3s}.av-svg .crowd circle.on{fill:#a37227}
.av-svg .tick{fill:#fffefa;stroke:#b9c6bb;stroke-width:1;transition:fill .2s}.av-svg .tick.on{fill:#2d735c;stroke:#2d735c}.av-svg .warm .tick{stroke:#d8c18e}.av-svg .warm .tick.on{fill:#a37227;stroke:#a37227}
.av-svg .cell{fill:#fffefa;stroke:#cdd7ce;stroke-width:1;transition:fill .4s}.av-svg .cell.on{fill:#dce7d9}
.av-svg .dots circle{fill:#727c74;opacity:0;transition:opacity .3s}.av-svg .dots circle.on{opacity:1}.av-svg .dots-g circle{fill:#2d735c}
.av-svg .part{fill:#f0e3c2;stroke:#a37227;stroke-width:1.3}.av-svg .part.ok{fill:#cfe3d4;stroke:#2d735c}.av-svg .part.flag{fill:#f3d9cf;stroke:#b0563c}
.av-svg .finger{fill:none;stroke:#5d7265;stroke-width:13;stroke-linecap:round}
.av-svg .row rect{fill:#f4f6ef;stroke:none}.av-svg .row .bar{fill:#cdd7ce;transition:fill .5s}.av-svg .row{opacity:0;transition:opacity .5s}.av-svg .on>.row,.av-svg .on>.legend{opacity:1}
.av-svg.tones .row.ok .bar{fill:#2d735c}.av-svg.tones .row.der .bar{fill:#8c9f91}.av-svg.tones .row.hyp .bar{fill:#a37227}.av-svg.tones .row.hyp:not(.legend) rect:first-child{fill:#fbf5e6}
.av-svg .legend.ok .bar{fill:#2d735c}.av-svg .legend.der .bar{fill:#8c9f91}.av-svg .legend.hyp .bar{fill:#a37227}
@media(max-width:520px){.view-switch button{padding:8px 6px;white-space:nowrap}}

/* 当前核心图示按原始尺寸阅读，窄屏在弹层内滚动。 */
.av-controls .av-zoom-trigger{border-color:#8aa992;background:#eaf1e4;color:#244d3e;font-weight:600}
.av-zoom{box-sizing:border-box;width:min(1100px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 24px);padding:0;border:1px solid #a8bba9;border-radius:12px;background:#fffefa;color:#263930;overflow:hidden;box-shadow:0 20px 80px #15291d45}
.av-zoom[open]{display:flex;flex-direction:column}.av-zoom::backdrop{background:#14251ccc;backdrop-filter:blur(3px)}
.av-zoom-head{display:flex;justify-content:space-between;align-items:start;gap:16px;padding:18px 20px 8px;flex-shrink:0}
.av-zoom-head>div{min-width:0}.av-zoom-head>div>span{font-size:12px;color:#657167}.av-zoom-head h2{margin:4px 0 0;font-size:18px;line-height:1.45;font-weight:600;overflow-wrap:anywhere}
.av-zoom-head button{display:flex;align-items:center;gap:10px;flex-shrink:0;min-height:40px;padding:8px 12px;border:1px solid #b8c7b9;border-radius:8px;background:#edf3e9;color:#244d3e;font-size:14px}.av-zoom-head button span{font-size:22px;line-height:1}
.av-zoom-help{flex-shrink:0;margin:0;padding:0 20px 14px;font-size:14px;line-height:1.7;color:#657167}
.av-zoom-scroll{width:100%;min-height:0;max-height:calc(100dvh - 210px);overflow:auto;overscroll-behavior:contain;border-top:1px solid #d5ded3;background:#fffefa radial-gradient(circle,#e3e8df 1px,transparent 1.3px) 0 0/24px 24px}
.av-zoom-scroll:focus-visible{outline:3px solid #2d735c;outline-offset:-3px}.av-zoom-scroll>div{width:960px;height:540px}
.av-zoom .av-svg{position:static;inset:auto;width:960px;min-width:960px;max-width:none;height:540px;transition:none}.av-zoom .av-svg *{animation:none!important;transition:none!important}
@media(max-width:520px){.av-zoom-head{padding:14px 14px 8px;gap:10px}.av-zoom-head h2{font-size:16px}.av-zoom-help{padding:0 14px 12px}.av-zoom-scroll{max-height:calc(100dvh - 240px)}}
.av-svg .gate>.card{transition:stroke .3s,stroke-width .3s}.av-svg .gate.lit>.card{stroke:#2d735c;stroke-width:2.6}
.av-svg .gate-badge{fill:#edf3e9;stroke:#2d735c;stroke-width:1.3}.av-svg .gate.lit .gate-badge{fill:#244d3e}.av-svg .gate .gate-n{fill:#2d735c}.av-svg .gate.lit .gate-n{fill:#fff}
.av-svg .box-reject{fill:#fbf0ea;stroke:#e3bfb1}.av-svg .t-red{fill:#9a4630}.av-svg .gate.lit .box-reject{stroke:#b0563c}
.av-svg .gate-end>.box{transition:stroke .3s,stroke-width .3s}.av-svg .gate-end.lit>.box{stroke:#a37227;stroke-width:3}
.av-svg .p-red{fill:#b0563c}
/* 打开问答侧栏时，讲解栏排到舞台下方，舞台保持足够宽 */
body[data-play-aside=true] .av-wrap{display:flex;flex-direction:column;gap:0}body[data-play-aside=true] .av-main{display:contents}body[data-play-aside=true] .av-stage{order:1}body[data-play-aside=true] .av-controls{order:2}body[data-play-aside=true] .av-script{order:3;position:static;max-height:none;margin-top:18px}body[data-play-aside=true] .av-legend{order:4;margin-top:16px}body[data-play-aside=true] .av-chapters{order:5}
/* 主线、主题与动画之间的双向入口（按钮由 index.html 在动画模块存在时生成） */
.play-link{display:inline-flex;align-items:center;gap:6px;margin:0 0 16px;padding:6px 14px;border:1px solid #244d3e;border-radius:999px;background:#fffefa;color:#244d3e;font-size:12.5px;font-weight:600}
.play-link:hover{background:#244d3e;color:#fff}.reference-actions .play-link{margin:0;font-weight:500}
.play-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 26px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#f6f8f1}
.play-strip-label{font-size:12px;color:var(--muted);margin-right:4px}
.play-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:1px solid #c3d4c5;border-radius:999px;background:#fffefa;color:var(--ink);font-size:12.5px}
.play-chip .n{font:11px ui-monospace,monospace;color:#2d735c}.play-chip:hover{border-color:#244d3e;background:#244d3e;color:#fff}.play-chip:hover .n{color:#c5dfcf}

/* ---------- Agent Infra 各幕的通用动效（2026-10-17 重绘） ---------- */
.av-svg [data-dim]{transition:opacity .6s ease}.av-svg [data-dim].dim{opacity:.3}
.av-svg .sh{filter:url(#av-sh)}
.av-svg .slab{fill:url(#av-deep);stroke:#1d4133;stroke-width:1.3}
.av-svg .box-in{fill:#ffffff14;stroke:#ffffff4d;stroke-width:1.2}
.av-svg .t-k.gold{fill:#8a5d17}.av-svg .t-k.t-w{fill:#cfe3d4}
.av-svg .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.av-svg .end{text-anchor:end}
.av-svg .bob{animation:av-bob 3.4s ease-in-out infinite}
.av-svg .spin{transform-box:fill-box;transform-origin:center;animation:av-spin 2.6s linear infinite}
.av-svg .pulse{animation:av-pulse 1.8s ease-in-out infinite}
.av-svg .breathe{animation:av-breathe 3.6s ease-in-out infinite}
.av-svg .blink{animation:av-blink 1s steps(1) infinite}
@keyframes av-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes av-spin{to{transform:rotate(360deg)}}
@keyframes av-pulse{0%,100%{stroke-opacity:.95;stroke-width:2}50%{stroke-opacity:.2;stroke-width:7}}
@keyframes av-breathe{0%,100%{opacity:.45}50%{opacity:1}}
@keyframes av-blink{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){.av-svg :is(.bob,.spin,.pulse,.breathe,.blink){animation:none}}
/* 逐个点亮的卡片：随帧切换 lit，浅底变深底、文字变白 */
.av-svg .lc>.box,.av-svg .lc text{transition:fill .35s,stroke .35s}
.av-svg .lc.lit>.box{fill:#244d3e;stroke:#244d3e}.av-svg .lc.lit text{fill:#fff}
.av-svg .lc.lit>.box.box-warm{fill:#8a5d17;stroke:#8a5d17}
/* 对接方式：当前方式的连线加粗，其余淡出 */
.av-svg .mode .ln{transition:opacity .35s,stroke-width .35s;opacity:.35}.av-svg .mode.lit .ln{opacity:1;stroke-width:2.6}
/* 状态点与随帧显隐的小标签 */
.av-svg .sd{fill:#cdd7ce;transition:fill .3s}.av-svg .sd.on{fill:#2d735c}.av-svg .sd.bad{fill:#b0563c}
.av-svg .tg{opacity:0;transition:opacity .35s}.av-svg .tg.on{opacity:1}
.av-svg .gate .ok{opacity:0;transition:opacity .3s}.av-svg .gate.done .ok{opacity:1}.av-svg .gate.done>.card{stroke:#2d735c}
.av-svg .crowd circle{transition:fill .25s}

/* ---------- 线条图标与图标动效（2026-10-17 第二轮：以图标为主） ---------- */
.av-svg .ic{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.av-svg .ic .f,.av .av-ic .f{fill:currentColor;stroke:none}.av-svg .ic .t,.av .av-ic .t{fill:currentColor;fill-opacity:.16}
.av-svg .ic-g{color:#2d735c}.av-svg .ic-gold{color:#a37227}.av-svg .ic-w{color:#fff}.av-svg .ic-red{color:#b0563c}.av-svg .ic-m{color:#8c9f91}.av-svg .ic-ink{color:#263930}
.av-svg .tile .tb{transition:fill .35s,stroke .35s}.av-svg .tile .ic{transition:color .35s}
.av-svg .tile.lit .tb,.av-svg .lit>.tile .tb{fill:#244d3e;stroke:#244d3e}.av-svg .tile.lit .ic,.av-svg .lit>.tile .ic,.av-svg .lc.lit .ic{color:#fff}
.av-svg :is(.beat,.beat-s,.wiggle,.swing){transform-box:fill-box;transform-origin:center}
.av-svg .spin.slow{animation-duration:8s}
.av-svg .beat{animation:av-beat 1.7s ease-in-out infinite}.av-svg .beat-s{animation:av-beat-s 2.6s ease-in-out infinite}
.av-svg .wiggle{animation:av-wiggle 2.4s ease-in-out infinite}.av-svg .swing{transform-origin:50% 0;animation:av-swing 2.8s ease-in-out infinite}
.av-svg .shake{animation:av-shake 1.6s ease-in-out infinite}
.av-svg .march{stroke-dasharray:5 6;animation:av-march 1s linear infinite}
@keyframes av-beat{0%,100%{transform:scale(1)}50%{transform:scale(1.13)}}
@keyframes av-beat-s{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
@keyframes av-wiggle{0%,62%,100%{transform:rotate(0)}70%{transform:rotate(-13deg)}80%{transform:rotate(11deg)}90%{transform:rotate(-6deg)}}
@keyframes av-swing{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}
@keyframes av-shake{0%,68%,100%{transform:translateX(0)}74%{transform:translateX(-3px)}82%{transform:translateX(3px)}90%{transform:translateX(-2px)}}
@keyframes av-march{to{stroke-dashoffset:-22}}
@media(prefers-reduced-motion:reduce){.av-svg :is(.beat,.beat-s,.wiggle,.swing,.shake,.march){animation:none}}
/* 分幕目录与封面上的节点图标 */
.av .av-ic{display:block;width:14px;height:14px;flex-shrink:0}
.av-ch .av-chi{display:inline-flex;color:#2d735c}.av-ch[aria-current=true] .av-chi{color:#fff}.av-ch[data-core=true] .av-chi{color:#8a5d17}.av-ch[data-core=true][aria-current=true] .av-chi{color:#fff}
.av-picons{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin:20px auto 0}
.av-picons span{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line);border-radius:11px;background:#fffefa;color:#2d735c;animation:av-pi 5.4s ease-in-out infinite;animation-delay:calc(var(--i)*.6s)}
.av-picons .av-ic{width:19px;height:19px}
@keyframes av-pi{0%,13%,100%{background:#fffefa;color:#2d735c;transform:none;border-color:var(--line)}5%,8%{background:#244d3e;color:#fff;transform:translateY(-4px);border-color:#244d3e}}
@media(prefers-reduced-motion:reduce){.av-picons span{animation:none}}
@media(max-width:850px){.av-picons{gap:6px;margin-top:12px}.av-picons span{width:28px;height:28px;border-radius:8px}.av-picons .av-ic{width:14px;height:14px}}
@media(max-width:520px){.av-picons{display:none}}
/* 收束页的 .row rect 规则不作用于行内图标 */
.av-svg .row .ic rect:not(.f){fill:none;stroke:currentColor}
/* 讲稿：每步默认只显示第一句，其余句子点「展开」再看 */
.av-beat-body .rest{display:none}.av-beat.open .av-beat-body .rest{display:inline}
.av-more{display:none;align-items:center;gap:4px;margin:0 0 8px 16px;padding:3px 12px;border:1px solid #c3d4c5;border-radius:999px;background:#fffefa;color:#2d735c;font-size:12px;line-height:1.5;cursor:pointer}
.av-more::after{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);margin-left:2px}
.av-more[aria-expanded=true]::after{transform:translateY(1px) rotate(-135deg)}
.av-beat[aria-current=true]+.av-more{display:inline-flex}.av-more:hover{border-color:var(--accent);background:#f1f5ed}
/* 右上角署名；原先的「示意动画」说明移到图例末尾 */
.av-tag.av-credit{background:#fffefae6;color:#244d3e;border:1px solid #c3d4c5;font-weight:600;letter-spacing:.01em}
.av-legend .av-legend-note{margin-left:auto;color:#8a948c}
@media(max-width:520px){.av-tags{display:flex;justify-content:flex-end;top:4px;right:4px;left:4px}.av-tags .av-tag:not(.av-credit){display:none}.av-tag.av-credit{font-size:9px;padding:1px 6px}.av-legend .av-legend-note{margin-left:0}}
/* 声音：默认关闭；音量滑杆在按钮左侧；未开启时按钮金色闪动并弹出提醒气泡（与硬件自进化逻辑图站点相同） */
.av-vol{position:relative;display:inline-flex;align-items:center;gap:8px}.av-vol[hidden]{display:none}
.av-vol-range{width:86px;height:4px;margin:0;appearance:none;-webkit-appearance:none;border-radius:4px;background:linear-gradient(90deg,#2d735c var(--v,80%),#d6ddd5 var(--v,80%));cursor:pointer}
.av-vol-range::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fffefa;border:2px solid #2d735c}
.av-vol-range::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#fffefa;border:2px solid #2d735c}
.av-vol:not(.av-vol-on) .av-vol-range{opacity:.45}
.av-vol-range:focus-visible{outline:3px solid #c88a32;outline-offset:4px}
.av-controls .av-vol.av-vol-hint .av-vol-btn{border-color:#a37227;background:#fff4dc;color:#8a5d17;animation:av-vol-pulse 1.6s ease-in-out infinite}
@keyframes av-vol-pulse{0%,100%{box-shadow:0 0 0 0 rgba(163,114,39,.5)}60%{box-shadow:0 0 0 8px rgba(163,114,39,0)}}
.av-vol-tip{position:absolute;right:-4px;bottom:calc(100% + 12px);z-index:6;display:flex;align-items:center;gap:6px;padding:8px 6px 8px 14px;border-radius:10px;background:#a37227;color:#fff;font-size:13px;font-weight:600;white-space:nowrap;box-shadow:0 8px 20px rgba(68,48,16,.28);animation:av-tip-bob 2.4s ease-in-out infinite}
.av-vol-tip[hidden]{display:none}
.av-vol-tip::after{content:"";position:absolute;top:100%;right:15px;border:7px solid transparent;border-top-color:#a37227}
.av-controls .av-vol-tip button{min-height:24px;min-width:24px;padding:0 6px;border:0;border-radius:6px;background:transparent;color:#fff;font-size:16px;line-height:1}
.av-controls .av-vol-tip button:hover:not(:disabled){background:rgba(255,255,255,.18);border:0}
@keyframes av-tip-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@media(max-width:850px){.av-vol-tip{bottom:auto;top:calc(100% + 12px)}.av-vol-tip::after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:#a37227}}
@media(max-width:520px){.av-vol-range{display:none}.av-vol-tip{font-size:12px}}
@media(prefers-reduced-motion:reduce){.av-controls .av-vol.av-vol-hint .av-vol-btn,.av-vol-tip{animation:none}}
