/* 这一场自己的内容样式。

   口播面板打开时幻灯片只剩 58% 高，这一场的示意图要跟着收一档。
   它原本写在引擎里，但 svg 是裸元素选择器，会波及所有场次——
   下半场那张 SKILLS MAP 就被压成了一小块，所以挪到这里。 */
.has-notes svg{max-height:24vh!important}

/* 这一场有几页连着放两个 kicker，第二个不能再留下边距。
   同样是只对这一场成立的排版，放在引擎里会把别的场次的版心顶偏。 */
#slide > .kicker ~ .kicker{margin-bottom:0}

/* 口播面板打开时幻灯片只剩 58% 高：行内放大过的代码块和密表跟着收一档 */
.has-notes .prompt{font-size:clamp(.5rem,.95vw,.8rem)!important;padding:.6rem .85rem!important}
.has-notes table.compact[style*="font-size"]{font-size:clamp(.55rem,.95vw,.82rem)!important}
.has-notes .mapfig{height:34vh!important}
.has-notes .bbgfig{height:34vh!important}

/* ③ 识别子域：随步骤给模块卡上色。
   一个 frag 只点亮一步，所以 frag 标记放在下方图例行上，
   再用 :has() 反过来给对应分类的卡片上色——一步点亮一整类。 */
.c3 .mod{transition:border-color .4s ease,background .4s ease,box-shadow .4s ease}
.c3 .mod b{transition:color .4s ease}
.c3 .lg{display:flex;gap:.5rem;align-items:center}
.c3 .sw{width:.85em;height:.85em;border-radius:3px;border:1px solid var(--rule);display:inline-block;flex:0 0 auto}
.c3 .sw.s-core{background:var(--accent);border-color:var(--accent)}
.c3 .sw.s-sup{background:var(--t-blue);border-color:var(--t-blue)}
.c3 .sw.s-gen{background:var(--t-green);border-color:var(--t-green)}
.c3 .sw.s-non{background:var(--c-bad);border-color:var(--c-bad)}

.c3:has(.f-non.on) .mod.m-non{border-color:var(--c-bad);background:#1d1416;box-shadow:inset 3px 0 0 var(--c-bad)}
.c3:has(.f-non.on) .mod.m-non b{color:var(--c-bad)}
.c3:has(.f-gen.on) .mod.m-gen{border-color:var(--t-green);background:#111c16;box-shadow:inset 3px 0 0 var(--t-green)}
.c3:has(.f-gen.on) .mod.m-gen b{color:var(--t-green)}
.c3:has(.f-sup.on) .mod.m-sup{border-color:var(--t-blue);background:#101722;box-shadow:inset 3px 0 0 var(--t-blue)}
.c3:has(.f-sup.on) .mod.m-sup b{color:var(--t-blue)}
.c3:has(.f-core.on) .mod.m-core{border-color:var(--accent);background:#1e1a10;box-shadow:inset 3px 0 0 var(--accent)}
.c3:has(.f-core.on) .mod.m-core b{color:var(--accent)}

/* 浅色主题下的底色换成淡彩 */
html[data-theme="wave"] .c3:has(.f-non.on) .mod.m-non,html[data-theme="editorial"] .c3:has(.f-non.on) .mod.m-non,
html[data-theme="1984"] .c3:has(.f-non.on) .mod.m-non{background:#fdeceb}
html[data-theme="wave"] .c3:has(.f-gen.on) .mod.m-gen,html[data-theme="editorial"] .c3:has(.f-gen.on) .mod.m-gen,
html[data-theme="1984"] .c3:has(.f-gen.on) .mod.m-gen{background:#eaf6ee}
html[data-theme="wave"] .c3:has(.f-sup.on) .mod.m-sup,html[data-theme="editorial"] .c3:has(.f-sup.on) .mod.m-sup,
html[data-theme="1984"] .c3:has(.f-sup.on) .mod.m-sup{background:#eaf0f8}
html[data-theme="wave"] .c3:has(.f-core.on) .mod.m-core,html[data-theme="editorial"] .c3:has(.f-core.on) .mod.m-core,
html[data-theme="1984"] .c3:has(.f-core.on) .mod.m-core{background:#fbf3df}

/* 开场 · 无效沟通：左边产品，右边研发，一句一句冒出来 */
.chat{display:flex;flex-direction:column;gap:.62rem;max-width:62rem;margin:0 auto}
.chat .row{display:flex;align-items:flex-end;gap:.7rem}
.chat .row.r{flex-direction:row-reverse}
.chat .who{flex:0 0 auto;width:2.6em;height:2.6em;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:clamp(.62rem,1.1vw,.86rem);font-weight:700;border:1.5px solid}
.chat .l .who{color:#f472b6;border-color:#f472b6;background:rgba(244,114,182,.10)}
.chat .r .who{color:var(--t-blue);border-color:var(--t-blue);background:rgba(108,182,255,.10)}
.chat .bub{max-width:70%;padding:.55em .95em;border-radius:14px;line-height:1.5;font-size:clamp(.82rem,1.62vw,1.24rem);border:1px solid var(--rule)}
.chat .l .bub{background:#1b1419;border-color:#4a2a3d;border-bottom-left-radius:4px}
.chat .r .bub{background:#111a24;border-color:#24405c;border-bottom-right-radius:4px}
.chat .bub.hot{border-color:var(--accent);background:#221e12;color:var(--fg);font-weight:600}
html[data-theme="wave"] .chat .l .bub,html[data-theme="editorial"] .chat .l .bub,html[data-theme="1984"] .chat .l .bub{background:#fcecf4;border-color:#f3c3da}
html[data-theme="wave"] .chat .r .bub,html[data-theme="editorial"] .chat .r .bub,html[data-theme="1984"] .chat .r .bub{background:#eaf1fb;border-color:#bcd3ee}
html[data-theme="wave"] .chat .bub.hot,html[data-theme="editorial"] .chat .bub.hot,html[data-theme="1984"] .chat .bub.hot{background:#fbf3df}

/* DDD 的两个作用：全场只出现两次（开场末尾、P9），样式必须一模一样 */
.role{display:flex;align-items:center;gap:1.1rem;margin-top:1rem;padding:.6em 1.2em;
  border:2px solid var(--accent);border-radius:12px;background:#1f1b10;font-size:clamp(.85rem,1.7vw,1.28rem)}
.role .no{font-size:.78em;color:var(--dim);letter-spacing:.12em;white-space:nowrap}
.role .nm{font-size:1.5em;font-weight:800;color:var(--accent);white-space:nowrap}
.role .df{color:var(--fg);line-height:1.45}
html[data-theme="wave"] .role,html[data-theme="editorial"] .role,html[data-theme="1984"] .role{background:#fbf3df}

/* .terr 里的说明行是块级 span；嵌在里面的 .mono 等行内 span 不能跟着换行 */
.terr span span{display:inline;margin-top:0;font-size:1em}
