/* ==========================================================================
   SUBMIT 板块（顶部 "SUBMIT" tab 跳转至此）
   由 4 个子板块组成，共用同一条 --color-section-bg 连续背景：
   Submission types / Choosing the right format / Conference format /
   Review and AI declaration
   ========================================================================== */

/* 2026-08 用户明确重申全站间距规范：跨tab的子标签区域之间统一72px，公式
   32(上一板块Conference theme的theme-bg padding-bottom) + 这里的gap div
   + submit-bg自己的padding-top:24 = 72，gap div = 72-32-24=16px（此前
   误写成40，实际总间距变成了32+40+24=96，不对，改回16px） */
.submit-section-gap {
  height: 16px;
}

.submit-bg {
  width: 100%;
  background: var(--color-section-bg);
  /* 2026-08 Visual Refinement：跨tab板块间距整体从72收紧到64 */
  padding-top: var(--space-section-top);
  padding-bottom: var(--space-section-bottom);
}

/* 2026-08 用户明确重申全站间距规范：同一个tab内部包含多个子标签区域时
   （Submit这个tab下的 Submission types / Choosing the right format /
   Conference format / Review and AI declaration 四个子板块），彼此之间
   统一都是40px——不再沿用此前分别用Figma量出的48/32/32这套不均匀数值，
   用户这次的口头规范以"统一40px"为准，覆盖旧的逐项测量结果 */
.submit-block {
  /* 2026-08 Visual Refinement：同tab内子模块间距从40收紧到32（--space-block-gap） */
  margin-bottom: var(--space-block-gap);
}

.submit-block:last-child {
  margin-bottom: 0;
}

/* ==========================================================================
   1. Submission types
   ========================================================================== */

/* 这一行（紫色说明框+橙色type框）按用户明确要求不做响应式自适应：始终按
   Figma原稿的精确像素宽度渲染（537/840），视口比较窄时不再压缩/换行/堆叠，
   而是让这一行整体保持原宽度、多出的部分交给外层.submit-intro-scroll用
   横向滚动查看——和 dates-section 里日期表格"放不下就横向滚动"是同一个
   已有的项目惯例，不是新发明一套模式 */
.submit-intro-scroll {
  /* 底部margin改为0：与下方.submit-type-panels之间的24px间距现在完全由
     .submit-type-panels的margin-top:24px单独控制（Figma Inspector精确值），
     避免这里的margin再叠加造成间距超出24px */
  /* 2026-08 用户明确指出：视口>1425px（页面设计宽度）时这里没有做自适应，
     内容会跟着视口一起无限变宽——根因是只写了固定的左右16px外边距，没有
     配套的max-width上限，16px是相对"真实视口边缘"量的，不是相对1425px
     这个设计画布量的。改成max-width+margin:auto后，视口<=1425+32=1457px
     时和原来完全一样（外边距实际生效值还是16px，因为撑不到上限）；超过
     1457px时，内容整体封顶在(1425-32)px宽、居中显示，和Hero/导航栏那套
     "视口>1425px时整体居中，不再继续变宽"的规则保持一致 */
  max-width: calc(var(--page-width) - 32px);
  /* 2026-09 用户反馈修复：上面改成max-width+margin:auto封顶之后，视口在
     500~1425px这个中间范围时，容器本身跟着100%收缩，auto外边距会被挤到
     0，导致内容贴到视口边缘、不再保留16px空白（这个16px是margin:auto
     生效之前、这条规则原本用固定margin实现时就有的间距，属于修复>1425px
     溢出问题时被连带丢掉的效果，不是新需求）。这里补一条width，让宽度
     变成"100%减去32px"，两侧至少各留16px，同时max-width继续负责
     >1425px时不再变宽 */
  width: calc(100% - 32px);
  margin: 0 auto;
  overflow-x: auto;
  /* 保留可以横向滑动查看的功能，但不显示滚动条这个UI组件本身——
     三个浏览器前缀分别对应 Firefox / 旧版Edge&IE / Chrome&Safari */
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.submit-intro-scroll::-webkit-scrollbar {
  display: none;
}

.submit-intro-row {
  display: flex;
  align-items: stretch;
  gap: 16px;
  width: max-content; /* 内容按子元素固定宽度撑开，不随外层容器收缩，配合上面的overflow-x:auto横向滚动 */
}

/* 左侧说明框：中紫底色。Figma Inspector 实测：文字框左/上留白均为16px，
   行高精确值34px（不是36），且文字是"顶对齐"而非垂直居中——容器固定高220，
   文字块本身只有136高，16(上留白)+136=152，220-152=68，容器底部特意留出
   68px空白，不能用flex居中去模拟，必须严格按"顶部16px内边距"实现 */
.submit-intro-left {
  flex: 0 0 537px; /* 不做响应式，直接用原稿精确像素宽度 */
  box-sizing: border-box;
  background: var(--color-tab-active-bg); /* #DCCDFB */
  box-shadow: 0px 0px 6px 0px rgba(128, 128, 128, 0.2); /* 2026-08 从0/2/6/0.25统一为全站主流值0/0/6/0.2（去掉Y轴偏移，改回纯环境光投影） */
  border-radius: 5px;
  /* 2026-08 用户明确要求：右侧橘色卡片改由内容自然撑高后，这张卡片的高度
     要跟着橘色卡片保持一致——不再写死220px，具体px值由submit-section.js
     的syncIntroCardHeights()在渲染后量出橘色卡片高度、同步写给这里 */
  height: auto;
  padding: 16px;
}

.submit-intro-left p {
  margin: 0;
  font-family: var(--font-nav);
  font-weight: 600; /* SemiBold */
  /* 2026-08 第二轮：H2档字号明显放大（24→26，token定义见base.css），
     这是Submit板块入口第一句话，值得比其余卡片说明句更有存在感 */
  font-size: var(--fs-h2);
  line-height: var(--lh-h2);
  letter-spacing: -0.2px;
  color: var(--color-ink);
}

.submit-intro-left p .hl-purple {
  color: var(--color-primary-purple);
}

/* 垫片容器：桌面端就是普通的840px定宽flex子项，真正承担"不做响应式"这条
   桌面端规则；.submit-intro-right（内容本体）现在改成width:100%填满它。
   手机端(<=500px)下这层垫片的角色改变，见文件末尾的媒体查询 */
.submit-intro-right-shim {
  flex: 0 0 840px; /* 不做响应式，直接用原稿精确像素宽度——这条规则本来
    写在.submit-intro-right自己身上，现在移到这层真正的flex子项上 */
}

/* 右侧 4 种 type 橙色色块——2026-08 修复：这层外面套了.submit-intro-right-shim
   垫片容器后，.submit-intro-right自己不再是.submit-intro-row的直接flex子项，
   flex-basis写在它身上不会再生效（flex属性只对"直接flex子项"有效），
   必须移到真正的直接子项.submit-intro-right-shim上（见下方该选择器的
   base规则），这里改成width:100%填满垫片——这是修复"橙色卡片桌面端意外
   变宽、4个type被空间撑得过散"这个回归问题的关键 */
.submit-intro-right {
  width: 100%;
  box-sizing: border-box;
  background: var(--color-accent-orange-lt); /* #FFE5BF */
  box-shadow: 0px 0px 6px 0px rgba(128, 128, 128, 0.2);
  border-radius: 5px;
  /* 2026-08 用户明确要求：不再写死220px，改由内容（4组type + 分割线 + 说明
     文字，按新的间距规则）自然撑出高度，左侧.submit-intro-left卡片的高度
     再跟随这个新高度对齐（见下方，两者由JS在渲染后同步为相同值） */
  height: auto;
  /* 实测：说明文字(caption)左右内边距≈16px，顶部内边距18px；下方padding
     从15px改为12px，与"分割线到说明文字"的12px间距保持一致 */
  padding: 18px 16px 12px 16px;
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}

/* 2026-08 用户在Figma里重新更新了橙色模块内容(node 4008:886)，用get_metadata
   拿到全新一套精确坐标，比旧版更干净——4个type现在都是"编号+文字+箭头"三个
   独立定位的文字块，不再需要旧版"手动敲空格模拟缩进"的hack：
   tab1 group x=15 w=183   编号"1."x=15 w=16   文字x=41 w=157   箭头x=15 w=179 top=88
   tab2 group x=210 w=232  编号"2."x=210 w=23  文字x=243 w=199  箭头x=210 w=228 top=88
   tab3 group x=454 w=162  编号"3."x=454 w=22  文字x=486 w=126  箭头x=454 w=162 top=88
   tab4 group x=628 w=196  编号"4."x=628 w=24  文字x=662 w=162  箭头x=628 w=192 top=116
   （框宽840，整个tabs容器x=15~824，左留白15、右留白16）
   规律：编号右边缘到文字左边缘恒为10px间隙；文字块最后一行底部到箭头顶部
   恒为14px间隙；每两个type之间的间隙恒为12px（分隔线落在间隙里）——
   用这几个恒定值搭一个"编号+文字用flex横排、箭头单独一行用text-align:right"
   的结构，就不用再逐字符敲空格了 */
/* 2026-08 用户明确要求的新规则，替换掉旧的"逐列Figma定宽+固定12px间隙"
   方案：每个type的"编号+文字"和"箭头"两行改成同一列内按内容自身宽度对齐
   （较宽的编号+文字撑开列宽，较窄的箭头贴住列的右边缘），4列之间改成等距
   分布（不再是固定12px），第1列左边缘、第4列右边缘分别贴住下方横向虚线
   分割线的左右边缘——分割线本身就是.submit-intro-right内容区（16px内边距）
   的整宽，所以tabs容器改为100%宽、justify-content:space-between即可让
   首尾两列自动贴住同样的左右边界，不需要再手工核对padding */
.submit-type-tabs {
  list-style: none;
  /* 上方tabs到下方虚线分割线的间距，与"分割线到说明文字"统一为12px
     （见.submit-intro-divider） */
  margin: 0 0 12px 0;
  padding: 0;
  display: flex;
  justify-content: space-between; /* 4组等距分布，替代旧的固定12px间隙 */
  width: 100%;
  flex-wrap: nowrap;
}

.submit-type-tab {
  flex: 0 0 auto;
  position: relative; /* 承载下面用绝对定位实现的分隔线伪元素 */
  box-sizing: border-box;
  /* 列自身不再写死宽度：display:flex+flex-direction:column让"编号+文字"
     (.tab-line1)和"箭头"(.tab-arrow-row)成为同一列内的两行，
     align-items:flex-end 让两者的右边缘自动对齐到列内较宽的那一行 */
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  border-radius: 5px;
  cursor: pointer;
  /* 箭头符号🡥(U+1F865)不在Red Hat Text的字形覆盖范围内，缺字形时browser会
     换用系统随便某个字体兜底、形状和原稿不一致；Noto Sans Symbols 2 是项目里
     已经验证过包含这个字形的字体（cfp-section.css 里同样的问题已经用这个
     fallback解决过），这里补上同样的fallback */
  font-family: var(--font-nav), var(--font-symbol);
  font-weight: 600; /* SemiBold */
  /* 2026-08 用户核对纠正：字号增大，让文字右边缘尽量靠近箭头右边缘（用户截图
     红线vs蓝线标注的对齐目标）。实测量过：4个type的文字自然宽度和固定列宽
     （157/199/126/162px）之间的"富余量"并不相等，无法找到一个字号让4个都
     刚好完全贴合——继续增大字号会让"PhD consortium participation"这一档从
     2行被挤成3行，破坏全站统一的两行换行结构。21px是能让4个type都仍保持
     两行的最大字号（21.5px时PhD那一档就会变3行），在这个约束下尽量贴近，
     比原来20px时的差距明显收窄 */
  font-size: 21px;
  line-height: 23px;
  color: var(--color-ink); /* get_design_context 确认4个type文字颜色一致，都是rgba(0,0,0,.75)，不是纯黑#000 */
  transition: color 0.12s ease;
}

/* 竖向分隔线：位置改由submit-section.js的positionSubmitTypeDividers()在
   渲染后按每一对相邻列之间的实际间隙宽度算出居中位置、写入
   --divider-offset（等距分布下3个间隙理论上完全相等，逐对测量是为了
   不依赖这个假设，任何四舍五入误差也能自动吸收）。线型统一改为与横向
   虚线分割线一致：dashed #484848（原来是dotted rgba(0,0,0,0.45)，
   肉眼看上去和下方横线不是同一套视觉） */
.submit-type-tab:not(:first-child)::before {
  content: "";
  position: absolute;
  left: var(--divider-offset, -6px);
  top: 0;
  bottom: 14px;
  border-left: 1px dashed #484848;
}

/* "编号+文字"横排一行，编号固定宽度不参与换行，文字在自己的固定列宽内
   正常自动换行（原稿这里就是普通的自动换行文本，不再是手动敲空格） */
.tab-line1 {
  display: flex;
  align-items: flex-start;
  column-gap: 10px; /* 编号右边缘到文字左边缘的间隙，4个type实测都是10px */
}

.tab-num,
.tab-label {
  flex: 0 0 auto;
}

/* 箭头单独一行，与文字块顶部间隙恒为14px；不再需要显式宽度/text-align，
   父级.submit-type-tab的align-items:flex-end已经让它贴住列的右边缘 */
.tab-arrow-row {
  margin-top: 14px;
}

/* 手机端2x2网格专用的分隔线占位元素，桌面端不参与布局（真正的样式在
   文件末尾的媒体查询里） */
.tab-row-divider {
  display: none;
}

/* 4列各自的文字列宽——只用来控制"小标题文字"在多宽内换行，直接沿用之前
   Figma实测值；列宽本身和箭头行宽不再需要单独指定，由上面的flex布局
   自动对齐 */
.submit-type-tab:nth-child(1) .tab-label { width: 157px; }
.submit-type-tab:nth-child(2) .tab-label { width: 199px; }
.submit-type-tab:nth-child(3) .tab-label { width: 126px; }
.submit-type-tab:nth-child(4) .tab-label { width: 162px; }

/* hover 高亮：仅悬停态生效，移开立即恢复黑色，与点击展开态互相独立。
   .tab-num/.tab-label/.tab-arrow 都不单独设置颜色，靠继承拿到.submit-type-tab
   的颜色，hover时一起变橙色 */
.submit-type-tab:hover,
.submit-type-tab.is-hover {
  color: var(--color-accent-orange); /* #FF9900 */
}

.submit-intro-divider {
  /* get_variable_defs 精确返回具名样式"展开标签框--段落分割线灰色"=#484848，
     纯色无额外透明度，此前的0.85透明度是没有数据支撑的视觉估测，改回实色 */
  border-top: 1px dashed #484848;
  margin-bottom: 12px;
}

.submit-intro-caption {
  margin: 0;
  font-family: var(--font-nav);
  font-weight: 400;
  /* 2026-08 用户核对纠正：改为"上方4个type文字字号(20px)-3px"=17px，
     不再固定绑定--fs-small这个通用token（这两个值目前刚好接近但含义不同：
     一个是"跟随type字号联动"，一个是全站小字token，未来type字号再调时
     这里要记得同步跟着减3，而不是自动跟--fs-small变化） */
  font-size: 17px;
  line-height: 20px;
  /* 2026-08 用户明确要求：全站黑色填色统一为单一机制——不要"实色+opacity
     图层叠加"这种双层还原Figma图层结构的写法（此前是rgba(0,0,0,0.95)
     文字色 × 0.75图层透明度、相乘后视觉上约0.71），改成和全站正文一致，
     直接引用--color-ink（单一色值80%透明度），不再分两层还原 */
  color: var(--color-ink);
}

/* ---- 4 条可展开/收起的 type 面板 ---- */
/* 2026-08 用户用Figma Inspector重新精确量取了"单条标签"（收起态）的数据：
   页面左右各24px（此前误写成左16右24的不对称值）；顶部距上方橙紫模块24px
   （此前只有.submit-intro-scroll自带的16px margin-bottom，现在改为显式的
   24px margin-top，两处margin不会合并——.submit-intro-scroll有overflow-x:auto
   会形成自己的BFC，与相邻元素margin互不合并，因此这里可以精确控制为24） */
.submit-type-panels {
  /* 同一处修复：视口>1425px时原来没有上限，配合上方.submit-intro-scroll
     统一封顶+居中 */
  max-width: calc(var(--page-width) - 48px);
  /* 2026-09 同一处修复：补width，两侧至少各留24px（与上方.submit-intro-scroll
     同一个问题、同一套修法，只是这里的设计间距是24px不是16px） */
  width: calc(100% - 48px);
  margin: 24px auto 0 auto;
  display: flex;
  flex-direction: column;
  gap: 16px; /* 收起态标签之间间距16px，Figma Inspector精确值——收起态卡片
    没有外置渐变描边（::before只在.is-expanded时才有），所以这16px就是
    两条收起标签之间实际看到的空白，不需要额外补偿 */
}

/* 2026-08 用户核对纠正：卡片之间（只要至少一张处于展开态）的可见空白间距
   应为38px，不是之前理解的"8+8的描边外扩正好抵消16px行间距=0"。展开态卡片
   自带渐变描边外扩，会"吃掉"一部分flex gap，所以要按具体的相邻组合分别
   补偿margin-top，让最终视觉间距都精确落在38px：
   2026-08 用户再次核对纠正：38px 显得偏大，缩减为原来的一半 = 19px。
   2026-09 描边粗细从8px改成6px（见下方.is-expanded::before）后，这里的
   补偿量跟着重算，保持19px这个已确认正确的可见间距不变：
   两张都展开：16(gap) - 6(上卡底部描边外扩) - 6(下卡顶部描边外扩) = 4，
     补偿 margin-top:15px → 16+15-6-6=19
   一张展开一张收起（不论顺序）：16 - 6(展开那张的描边外扩) - 0 = 10，
     补偿 margin-top:9px → 16+9-6-0=19
   两张都收起：不补偿，维持已确认正确的16px */
.submit-type-panel.is-expanded + .submit-type-panel.is-expanded {
  margin-top: 15px;
}

.submit-type-panel.is-expanded + .submit-type-panel:not(.is-expanded) {
  margin-top: 9px;
}

.submit-type-panel:not(.is-expanded) + .submit-type-panel.is-expanded {
  margin-top: 9px;
}

.submit-type-panel {
  background: var(--color-tag-bg); /* #EAE1FF */
  border-radius: 5px; /* Figma Inspector精确值 */
  /* 投影：X0 Y0 Blur6 Spread0 颜色808080 透明度20%——用户再次核对纠正：
     之前"2%"是错误读数，20%才是正确值，与本节最初的实现一致 */
  box-shadow: 0px 0px 6px 0px rgba(128, 128, 128, 0.2);
  overflow: hidden;
  transition: background-color 0.15s ease; /* 2026-08 配合新增的整条hover背景变化，做平滑过渡 */
}

.submit-type-panel.is-expanded {
  /* 2026-08 二次核对纠正：用 get_metadata 精确读到卡片本身(Rectangle 64)
     就是 1377×729，圆角5——Figma里描边是 Position:Outside/Weight 8，
     "outside"含义是这8px描边画在1377×729这个矩形的外面、完全不占用矩形
     内部空间（不是之前误以为的"1377已经把8px描边算在内、border-box内缩"）。
     证据链：get_metadata实测"信息组"内边距是上16/左16/右16/下58，若按
     之前的border-box假设还要再减8，会得到8/8/8/50，和用户截图给出的
     "正确内边距"标注（16/16/16/58）对不上；collapse icon同理，实测右16/
     下14.45，之前误减成8/6.45。所以这一版改为：卡片自身不再用CSS的border
     去撑描边（那样会真的把8px吃进内容区，且border-width8>border-radius5
     时内层白色内容框的内圆角会被挤成直角——这正是用户反馈"圆角也不对"的
     根因），改用绝对定位的::before伪元素在外侧单独画一圈渐变描边，
     inset:-8px向外扩散、不占用.submit-type-panel自身的盒子空间，圆角按
     "外扩偏移"规律取 5+8=13。这样.submit-type-panel本身的宽高/内边距坐标
     系统就能直接照抄Figma"信息组相对卡片边缘"的原始数值，不用再做任何
     减8的换算。（原本以为16px的行间距=相邻卡片各自8px描边外扩后恰好贴合、
     不重叠，但用户反馈这个"贴合"其实是错的——展开卡片之间需要38px可见间距，
     已在下方.submit-type-panels相邻组合选择器里用margin-top补偿，见那里的
     详细说明） */
  position: relative;
  isolation: isolate; /* 建立一个独立的层叠上下文，把下面 ::before 的负 z-index 限制在这个卡片内部，不受页面其它元素层叠顺序影响 */
  overflow: visible; /* 覆盖 .submit-type-panel 基础规则的 overflow:hidden——收起态需要裁切，展开态需要让外侧描边露出来 */
  background: none; /* 注意：不能在这里直接铺白色——层叠上下文"根元素自身背景"永远画在第一步，
    会比下面 ::before 的负z-index更早画（即负z-index子元素反而会盖在根背景上面，
    不是"沉在背景之下"），实测就是这个原因导致整张卡片被渐变整片盖住。
    白色内容改由下面新增的 .submit-type-card-face 这个真实元素来承担——它没有
    显式z-index（stack level 0），会晚于 ::before 的负z-index画，天然盖在
    描边圈内侧，同时它在DOM里排在header/body之前，header/body还会再叠在它上面 */
  border-radius: 5px;
  box-shadow: 0px 0px 6px 0px rgba(128, 128, 128, 0.2);
}

.submit-type-panel.is-expanded::before {
  content: "";
  position: absolute;
  /* 2026-09 用户明确要求：描边粗细减少2px，原8px改成6px（画在卡片矩形
     外侧的偏移量同步从-8px改成-6px） */
  inset: -6px;
  z-index: -1;
  border-radius: 11px; /* 圆角"外扩偏移"规律：原矩形圆角5 + 偏移距离6 = 11 */
  /* 2026-09 用户明确要求：渐变方向改成从上至下（180deg，原来是90deg左→右）；
     渐变颜色改成同一个颜色的深浅变化——B38FFF 100%不透明度渐变到 B38FFF
     10%不透明度（原来是B38FFF紫→FFE5BF橙的双色渐变），用rgba表达同一个
     色值B38FFF=rgb(179,143,255)的两档不透明度 */
  background-image: linear-gradient(180deg, rgba(179, 143, 255, 1) 0%, rgba(179, 143, 255, 0.1) 100%);
}

.submit-type-card-face {
  display: none;
}

.submit-type-panel.is-expanded .submit-type-card-face {
  display: block;
  position: absolute;
  inset: 0;
  border-radius: 5px;
  background: #FFFFFF;
}

.submit-type-header {
  width: 100%;
  height: 66px; /* Figma Inspector精确值："单条标签"整体高66px */
  box-sizing: border-box;
  /* position:relative（不设z-index）是为了让展开态下 header 和上面新增的
     .submit-type-card-face 处于同一个层叠"stack level 0"分组，按DOM顺序
     叠放——face 在前先画（垫底），header 在后再画（盖在白色底面上）；
     如果 header 保持完全不脱离文档流（非定位元素），按CSS层叠顺序它会
     比"z-index:auto的定位元素"更早画，反而会被后画的白色face盖住 */
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  /* 左右各16px固定内边距（左侧信息组/右侧按钮分别贴边），上下由 height+
     align-items:center 决定，不再用24px 32px的padding撑高度 */
  padding: 0 16px;
  cursor: pointer;
  text-align: left;
}

.submit-type-panel.is-expanded .submit-type-header {
  /* 展开态高度由内容撑开，不套用收起态的66px定高。
     2026-08 二次核对纠正：描边已改为外置（见上方.is-expanded注释），卡片
     自身就是1377×729的真实内容框，不再需要"减8"——序号"1."/标题、"Read more"
     按钮左右边缘相对卡片自身边缘就是Figma原始实测值：左右各16px */
  height: auto;
  padding: 16px 16px 0 16px;
  /* Figma里标题行和"Read more"按钮的顶边是同一个y(46)，即顶对齐，不是像
     收起态66px定高行那样居中对齐——两者盒高不同(标题34/按钮26)，center会让
     按钮的顶边比标题顶边低几px，实测和Figma对不上，改用flex-start */
  align-items: flex-start;
}

/* 左侧信息组："序号框(28x34)" + 5px间距 + "文本框"。用align-items:center会让"数字框"
   和"文字"分别按各自盒子高度居中对齐，但两者盒高不同（数字框固定34，文字行盒约39），
   实测center会导致文字明显比数字低；改用baseline——两个同字号(29px)同字体的文字
   天然共享同一条基线，用户截图反馈的"文字比序号低"问题即由此修正，实测顶部像素对齐 */
.submit-type-left {
  display: flex;
  align-items: baseline;
  /* 2026-08 用户核对纠正：序号与标题间距缩小4px（5→1） */
  gap: 1px;
}

.submit-type-num {
  flex: 0 0 28px;
  width: 28px;
  height: 34px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  font-family: var(--font-nav);
  /* 2026-08 用户核对纠正：收起态字重也改为Bold(700)，与展开态保持一致
     （原来收起SemiBold/展开Bold，现在两态统一） */
  font-weight: 700;
  /* 2026-08 Visual Refinement：卡片标题从29/34收紧到H3档22/28（--fs-h3/--lh-h3），
     和proceedings-col p的23px一起统一收敛为同一档 */
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  /* 2026-08 第二轮：与proceedings-col p同一档H3标题统一改为-0.2px收紧字距
     （原0），大字重标题收紧字距更有"标题感"，全站H3档卡片/列标题统一为
     同一套字距语言 */
  letter-spacing: -0.2px;
  color: var(--color-ink);
  transition: color 0.12s ease;
}

.submit-type-title {
  font-family: var(--font-nav);
  /* 2026-08 用户核对纠正：收起态字重也改为Bold(700)，与展开态保持一致 */
  font-weight: 700;
  font-size: var(--fs-h3);
  line-height: var(--lh-h3);
  letter-spacing: -0.2px;
  color: var(--color-ink);
  transition: color 0.12s ease;
}

/* 2026-08 用户明确要求：上方橙色卡片里4个type的字号增大后（20→21px），
   这里对应的4条收起态标签标题也要跟着变大保持一致——不直接改共用的
   --fs-h3 token（proceedings-col p等其它地方也在用这个token，不应该被
   连带影响），单独给这两个类一个局部覆盖 */
.submit-type-num,
.submit-type-title {
  font-size: 23px;
  line-height: 28px;
}

.submit-type-panel.is-expanded .submit-type-num,
.submit-type-panel.is-expanded .submit-type-title {
  color: var(--color-primary-purple);
  /* 展开态字重是Bold(700)，和收起态的SemiBold(600)不同——get_design_context
     精确核对了展开卡片(node 4007:525)的"1."和"Full research papers"图层，
     两者都是 font-['Red_Hat_Text:Bold'] font-bold */
  font-weight: 700;
}

/* 2026-08 第二轮：收起态卡片标题行此前完全没有hover反馈，点击展开前用户
   拿不到任何"这里可点"的预告——补一个克制的悬停态，颜色轻轻过渡向紫色
   （不到展开态的100%紫，用透明度做区分），呼应.submit-type-tab等全站其它
   可点元素hover变色的同一套交互语言。展开态本身不需要hover效果，用
   :not(.is-expanded)排除，避免和上面.is-expanded的强制紫色规则冲突 */
/* 收起态整条标签的hover：背景从默认的浅紫(--color-tag-bg #EAE1FF)变为
   稍深一档的中紫(--color-tab-active-bg #DCCDFB)，直接复用两个已有token，
   不新增颜色值。2026-08 用户核对纠正：不要文字变色，只要整条底色响应——
   替换掉上一轮加的文字hover规则。用:not(.is-expanded)排除展开态（展开态
   背景由.is-expanded规则接管，固定为透明+外置渐变描边，不受这条hover影响） */
.submit-type-panel:not(.is-expanded):hover {
  background: var(--color-tab-active-bg);
}

/* 2026-08：用户要求去掉"Read more"按钮（收起态标签行和展开态面板头部都要
   去掉），.submit-type-readmore这个元素已经从index.html的4个标签里删除，
   这条规则和下面的展开态覆盖规则不再被引用，一并删除 */

.submit-type-body {
  /* 2026-08 二次核对纠正：get_metadata精确坐标——"信息组"整体相对卡片自身
     边缘的内边距是 上16/右16/下58/左16（内容组x39,y46 vs 卡片x23,y30 →
     左/上各16；内容组右边缘1384 vs 卡片右边缘1400 → 右16；内容组底边701 vs
     卡片底边759 → 下58）。描边已改为外置（不占用卡片内部空间，见上方
     .is-expanded注释），所以这里不再需要"减8"，左右直接用16px；顶部
     22px = 标题行底边(y80)到正文段落顶边(y102)的实测间距，由
     .submit-type-header的padding-top(16)+标题自身高度(34)+这里的
     padding-top(22)三段相加得到（16+34+22=72，与y102-卡片顶y30=72精确
     吻合）。此前的14/8/50/8是"减8"假设下的错误推导。
     注：PhD Consortium(第4张卡)这个顶部间距实测是16而不是22，见下方
     #panel-phd-body 的单独覆盖。
     2026-08 用户明确要求：卡片内所有文本组的左右边缘要与卡片内的虚线分割
     线/箭头分隔线（宽度1333px）对齐——原来左右各16px内边距对应内容宽度
     1345px，比1333px宽12px（分割线原本比正文内容区左右各窄6px），现在把
     左右内边距改成22px，让内容区正好收窄到1333px，和分割线完全对齐，
     分割线自己也不再需要额外的负边距/窄宽度计算。
     2026-09 用户明确要求：全站所有"展开卡片右下角收起icon"统一规范为
     "距上方文字/距右侧卡片边缘/距下方卡片边缘均为16px"。右侧边缘本来就是
     16px(.submit-type-collapse-btn的right)不用动；下方边缘从14.45px改成
     16px(见下方.submit-type-collapse-btn)；这里的padding-bottom要跟着
     重新反推：icon本身高17.55px+新的bottom偏移16px=占用33.55px，要让
     "文字到icon顶边"也留16px，58px改成 16(留白)+33.55(icon自身)=49.55px */
  position: relative;
  padding: 22px 22px 49.55px 22px;
  font-family: var(--font-nav);
}

/* PhD Consortium participation（第4张卡）标题行到正文段落的间距实测16px，
   与其余3张卡片的22px不同——get_metadata核对：该卡标题底边(y80)到段落顶边
   (y96)只差16，不是22，是真实存在的差异，不是誊抄失误，故单独覆盖 */
#panel-phd-body {
  padding-top: 16px;
}

.submit-type-body[hidden] {
  display: none;
}

.submit-type-body p {
  /* 段落到下方h4标题的间距实测16px（get_metadata: 段落底边y198，h4顶边
     y214），此前误写成24px。2026-08 Visual Refinement：与全站"标题→正文"
     标准间距一起从16收紧到14（--space-heading-gap） */
  margin: 0 0 var(--space-heading-gap) 0;
  font-weight: 600; /* SemiBold */
  /* 正文字号从24/32收紧为18/27（--fs-body/--lh-body），字重维持600不变。
     2026-08 用户核对纠正：卡片内部行距比外部正文再紧一档，改用
     --lh-body-tight(24px) */
  font-size: var(--fs-body);
  line-height: var(--lh-body-tight);
  color: var(--color-ink);
}

.submit-type-body p .hl-purple {
  color: var(--color-primary-purple);
}

.submit-type-body p.hl-purple-full {
  color: var(--color-primary-purple);
}

.submit-type-body p.text-regular {
  font-weight: 400; /* Regular，用于展开面板末尾的补充说明段落 */
}

/* "Full research papers present original...through text." 这类板块开篇段落，
   实测（Figma Fill面板）不是纯色，而是一条从上到下的黑->紫垂直渐变文字：
   0%=#000000不透明度75%，100%=#7533FF不透明度100%——不是像其余板块那样
   用hl-purple把后半句整体涂成实色紫，而是整段文字按行位置连续渐变。
   2026-08 用get_design_context核对了4张卡片：这个黑紫渐变不只出现在卡片1，
   卡片2/3/4的"开篇段落"同样是这个渐变（卡片2有两处独立的渐变段落；
   卡片3/4则是紧挨着的两段文字共用同一条连续渐变，不是各自独立渐变），
   之前卡片2/3/4误用了hl-purple局部实色高亮去模拟，现在统一改回渐变 */
.submit-type-body p.intro-gradient {
  background-image: linear-gradient(to bottom, var(--color-ink) 0%, var(--color-primary-purple) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  /* 2026-08 用户核对纠正：这句开篇渐变段落到下方h4小标题的间距缩减为6px
     （原来跟其余普通段落共用.submit-type-body p的16px），单独覆盖 */
  margin-bottom: 6px;
}

/* 卡片3/4：开篇是紧挨着的两段文字，Figma里是同一条渐变连续贯穿这两段
   （不是各自重新渐变一次），所以渐变要画在包裹这两段<p>的外层容器上，
   内层<p>只需把颜色透明继承下去，不单独设背景 */
.submit-type-body div.intro-gradient-block {
  background-image: linear-gradient(to bottom, var(--color-ink) 0%, var(--color-primary-purple) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  /* 2026-08 用户核对纠正：这组开篇渐变段落到下方h4小标题的间距缩减为6px
     （原来是16px） */
  margin: 0 0 6px 0;
}

.submit-type-body div.intro-gradient-block p {
  margin: 0;
  color: inherit;
}

.submit-type-body h4 {
  /* h4到下方bullet列表的间距实测16px（get_metadata: h4底边y245，列表顶边
     y261），此前误写成12px。2026-08 Visual Refinement：与标准"标题→正文"
     间距一起收紧到14 */
  margin: 0 0 var(--space-heading-gap) 0;
  /* 2026-08 用户核对纠正：字重应为SemiBold(600)而非Bold(700)——适用于5个
     h4标题："Full papers should:" / "This category typically includes:" /
     "A practice-based contribution should explain:" /
     "Workshop proposals should specify:" /
     "PhD Consortium applications should specify:" */
  font-weight: 600;
  /* 2026-08 Visual Refinement：卡片内迷你小标题从24/32收紧为18/26（--fs-h4/--lh-h4） */
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  color: var(--color-primary-purple);
}

.submit-type-body ul.submit-bullet-list {
  /* 原稿列表文字左边缘相对正文左边缘再多缩进约86px（列表文字x=125，
     正文x=39），此前只留36px，明显不够。列表底部不再自带margin，改由下方
     虚线分隔线的margin-top统一控制间距，避免两个margin互相干扰。
     2026-08 用户明确要求：项目符号改为自定义的5px圆点+75%透明度+15px间距，
     不再用浏览器默认的disc圆点（默认圆点大小/间距不可控，且是100%不透明的
     纯黑实心圆，和用户要求的规格不一致） */
  margin: 0;
  padding-left: 86px;
  list-style: none;
}

.submit-type-body ul.submit-bullet-list li {
  /* 2026-08 用实测卡片总高度反查发现：Figma里这个列表是一整块连续文本
     （get_metadata量到的单个文本节点，5个条目共224高 = 32+64+32+64+32，
     刚好是各条目自身的行高之和，中间没有额外间隙），不是"每条之间再留8px"
     ——之前的margin-bottom:8px是没有数据支撑的估测值，会让4张卡片的
     整体高度都比Figma多出几十px，现在改为0 */
  position: relative;
  margin-bottom: 0;
  font-weight: 400; /* Regular */
  /* 2026-08 用户核对纠正：卡片内部行距比外部正文再紧一档，24px（--lh-body-tight） */
  font-size: var(--fs-body);
  line-height: var(--lh-body-tight);
  color: var(--color-ink);
}

/* 自定义圆点：直径5px，填色黑色75%透明度，与全站其它列表圆点标记
   （org-dot / submit-choose-list的圆点等）同一套规格。圆点右边缘到文本
   左边缘间距15px——文本左边缘就是padding-left:86px这条基线，圆点左边缘
   = 86 - 15(间距) - 5(直径) = 66，相对li自身（li的内容区本来就从x=86
   开始）即 left:-20px。垂直位置沿用全站同一套"圆点相对首行垂直居中"的
   规律。2026-08校准：--lh-body-tight从24收紧到22后，这条也跟着重算，
   (22行高-5圆点)/2=8.5，取整9（此前基于旧值24算出的10已过时） */
.submit-type-body ul.submit-bullet-list li::before {
  content: "";
  position: absolute;
  left: -20px;
  top: 9px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--color-ink);
}

.submit-type-body ul.submit-bullet-list li:last-child {
  margin-bottom: 0;
}

.submit-type-divider-dashed {
  /* 虚线上下间距实测都是28px（get_metadata: 列表底边y485到分割线y513=28；
     分割线y513到细则区块顶边y541=28），此前误写成8px/24px不对称的值。
     2026-08：改用用户导出的透明底虚线PNG素材（4x），不再用CSS border-top
     模拟——浏览器渲染的dashed线段长度/间隔比例和Figma原生虚线并不完全一致，
     换成真实素材能保证虚线本身的疏密观感和原稿一致。
     2026-08 用户进一步要求：卡片内文本区已经改成和这条线同宽(1333px)对齐，
     这条线不再需要额外收窄6px，直接100%铺满父级内容区即可 */
  display: block;
  width: 100%;
  height: auto;
  margin: 28px 0;
}

/* 2026-08 用户核对纠正：卡片2里"Practice-based submissions must also include
   a written paper and supporting material."这句独立段落，用<strong>整句加粗，
   而<strong>标签浏览器默认字重是700(Bold)，盖过了父级.submit-type-body p已经
   设置的600(SemiBold)——之前一直没发现是因为肉眼很难分辨600和700的区别。
   只精确覆盖这一句（用户只反馈了卡片2这一处，卡片3里结构相同的"Workshop
   organisers will be responsible for..."那句本轮未被提及，不一并改动，避免
   返工），改用单独的class而不是笼统覆盖.submit-type-body p strong */
.submit-note-semibold strong {
  font-weight: 600;
}

/* 细则区块（"- Suggested length:" 这类）左边缘和正文段落基本对齐，不额外
   缩进（原稿：细则文字x=45，正文x=39，几乎同一条基线），此前误加了45px
   缩进，导致这块内容比原稿整体偏右一大截 */
.submit-detail-block {
  margin: 0;
}

.submit-detail-block p {
  /* 2026-08 用get_design_context的参考代码核对：这几行"- Suggested length:"
     "- Review:" ... 在Figma里其实是同一个文本节点内的连续几行(<p class="mb-0">)，
     行与行之间没有额外margin——之前的margin-bottom:8px是没有数据支撑的
     估测值，会让卡片整体高度比Figma多出一截，现在改为0 */
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body-tight);
  color: var(--color-ink);
  margin-bottom: 0;
}

.submit-detail-block p strong {
  /* SemiBold(600)，此前误写成700 Bold——get_design_context精确核对
     "- Suggested length:  "这类前缀文字是 font-['Red_Hat_Text:SemiBold'] */
  font-weight: 600;
}

/* ---- Practice-based 面板内部：箭头分隔线 + 3 个子格式区块 ---- */
/* 2026-08 二次核对纠正：用户反馈上一版换成的箭头PNG素材因为被强制拉伸到固定
   28px高度（素材真实宽高比约74.5:1，实际显示宽度约1340px时自然高度只有约
   18px，被拉伸到28px导致箭头明显变形），弃用光栅图片方案。改为直接复用
   Conference theme 板块（References面板下方）"箭头分隔线"已经验证过没有变形
   问题的同一套技术——用JS按容器宽度动态生成"↓"文字字符铺满一行（见
   submit-section.js的initSubmitArrowDivider()，PITCH常量与theme-section.js的
   initArrowDivider()保持一致，同一套疏密密度），文字本身依赖字体渲染，不存在
   位图拉伸变形的问题。
   同时用户要求：网站里所有"箭头分割线"的填色统一改为黑到紫的纵向渐变（上黑
   下紫），黑/紫两个色值直接复用本文件其它"黑紫渐变"处（.intro-gradient-block）
   已经用过的同一组数值：0%=var(--color-ink)、100%=var(--color-primary-purple)，
   用background-clip:text技术把渐变裁到文字形状上（下面.theme-arrow-divider
   同步应用了同一渐变，见theme-section.css）。
   左右空白边距沿用上一版已核对过的规范：距离卡片自身左右内边缘各18.52px——
   .submit-type-body左/右各有16px padding，所以这里相对body内容区（已经内缩
   16px）只需再内缩18.52-16=2.52px：margin左右各2.52px、宽度calc(100% - 5.04px)
   精确抵消。上下间距保持32px不变。 */
.submit-practice-arrow-divider {
  display: flex;
  justify-content: space-between;
  align-items: center;
  /* 2026-08 用户要求卡片内文本区改成和虚线/箭头分隔线同宽(1333px)对齐后，
     这里不再需要calc(100% - 5.04px)+2.52px这套用来抵消旧16px内边距的
     补偿算法，直接100%铺满新的内容区即可 */
  width: 100%;
  margin: 32px 0;
  overflow: hidden;
  font-family: var(--font-nav);
  font-weight: 400;
  /* 2026-08 Visual Refinement：与Conference theme板块的箭头分隔线一起
     等比收紧（原24/28），继续保持两处视觉密度/大小一致 */
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  background-image: linear-gradient(180deg, var(--color-ink) 0%, var(--color-primary-purple) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.submit-practice-arrow-divider span {
  flex-shrink: 0;
}

.submit-subformat {
  /* 3个子格式区块之间的间距实测32px（get_metadata: 前一区块底边到下一区块
     标题顶边恒为32），此前误写成20px */
  margin: 0 0 32px 0;
}

/* 用 :last-of-type 而不是 :last-child——.submit-type-body 里真正的最后一个
   DOM子元素是收起图标按钮（position:absolute的.submit-type-collapse-btn），
   :last-child 永远匹配不到这里，导致最后一个子格式区块的32px底部margin
   一直没被清零，凭空多出32px高度 */
.submit-subformat:last-of-type {
  margin-bottom: 0;
}

/* 3个子格式标题（"Video articles ↘"等）用户导出的透明底橙色文字PNG
   素材（4x），不再用CSS文字+人工圆点模拟——用户特别说明这样做是为了避免
   文字/箭头字形还原出错。图片本身已经包含圆点+文字+箭头，箭头和文字是
   同一张图里的像素，缩放时天然保持等高，不需要单独处理箭头。
   2026-08 曾经改成69%宽度、2026-09一度改成100%宽度，让标题跟着卡片宽度
   一起等比缩放——但这三张图当初导出时用的是同一块很宽的画布(5380x128@4x)，
   文字本身只占画布左侧一小段（比如"Video articles"只占到875/5380≈16%），
   右边留了一大截透明空白，按"画布宽度的百分比"去缩放，缩放基准其实是
   "一大段空白+一小段文字"，导致视口越窄（尤其是手机端单栏卡片只有
   ~400px宽的时候），文字被这段空白一起压得极小，肉眼看起来"特别小"。
   2026-09 用户明确要求：无论视口>500px还是<=500px，标题字号都要统一
   等于"比下方正文(18px)大1个字号"，即22px（--fs-h3）。这次改成两步：
   1) 先把三张图片各自右侧的空白透明画布裁掉（顶部/底部/左侧不动，
      不影响原有的垂直位置和"圆点"起始对齐位置），只保留文字+箭头本身
      实际占用的那一小段宽度；2) 改用固定的CSS height（不再用width百分比）
      配合width:auto，让三张图统一按cap-height对齐到同一个目标大小，
      每张图各自的宽度按自身裁剪后的宽高比自动算出（类似真实文字：
      短标题窄、长标题宽），且这个高度是固定px，不随视口宽度或卡片宽度
      变化，天然在>500px和<=500px两种情况下都是同一个视觉大小，不需要
      分别写两条规则。
   换算依据：沿用之前留下的实测校准点——图片按"完整5380px画布"缩放到
   100%宽度(≈1333px)时墨迹高度约18.8px，相当于视觉26px字号（--fs-h2）；
   缩到69%宽度(≈920px)时墨迹高度约13px，相当于视觉18px字号（--fs-body，
   即正文）。这两个点换算成"墨迹高度/画布渲染高度"的比例后，两者高度
   分别对应画布渲染高度32px、22.1px，比例基本一致(≈0.5875)，说明这个
   比例只取决于画布本身的版式、和裁剪掉多少右侧空白无关（因为这次只裁了
   右边，没有裁上下）。按同一比例反推"22px字号"（比正文大1个字号）
   需要的画布渲染高度：32 × (22/26) ≈ 27px，即下面的height:27px */
.submit-subformat-label {
  display: block;
  height: 27px;
  width: auto;
  /* 标题底边到正文段落顶边的实测间距只有4px（3个子格式区块get_metadata核对
     一致），比其余"标题→正文"惯用的16px小得多，是真实存在的差异 */
  margin: 0 0 4px 0;
}

.submit-subformat p {
  /* 原稿"Video articles"/"Performance papers"两个子格式的正文相对标题
     再多缩进205px（正文x=244，标题x=39，244-39=205）；"Interactive demos"
     这个子格式实测缩进却小得多，只有约35px（正文x=74.16，74.16-39=35.16）
     ——这是真实存在的差异，不是誊抄失误，"Interactive demos"区块要用下面
     .submit-subformat.is-narrow-indent 覆盖 */
  /* 段落间距实测16px（Interactive demos区块4段文字的get_metadata坐标反推：
     每段之间恒为16，不是之前误写的12） */
  margin: 0 0 16px 0;
  margin-left: 205px;
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body-tight);
  color: var(--color-ink);
}

.submit-subformat.is-narrow-indent p {
  margin-left: 35.16px;
}

.submit-subformat p:last-child {
  margin-bottom: 0;
}

/* ---- 折叠角图标（右下角，收起已展开面板） ----
   2026-08 二次核对纠正：get_metadata对4张卡片的收起图标坐标全部核实
   一致——18x17.55px，右边缘距卡片自身右边缘16px。
   图标本身用用户直接从Figma导出的透明底PNG真实素材（灰色50%不透明度
   描边），4张卡片共用同一张图。
   2026-09 用户明确要求：全站所有展开卡片的收起icon统一为"距上方文字/
   距右侧卡片边缘/距下方卡片边缘均16px"——底边距原本是Figma实测的
   14.45px，这次改成16px；上方"距文字"的16px通过上面.submit-type-body
   的padding-bottom换算实现，这里不需要额外处理 */
.submit-type-collapse-btn {
  position: absolute;
  right: 16px;
  bottom: 16px;
  width: 18px;
  height: 17.55px;
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
}

.submit-type-collapse-btn img {
  width: 100%;
  height: 100%;
  display: block;
}

/* ==========================================================================
   2. Choosing the right format / 3. Conference format /
   4. Review and AI declaration —— 三者结构一致：标签 + 浅紫说明框
   ========================================================================== */

/* 2026-08：三个小节（Choosing the right format / Conference format / Review
   and AI declaration）分别用各自的Figma链接核对完毕，紫色卡片的内边距（20px
   上下/24px左右）和外边距（左右各16px）三者完全一致，统一收进这条共用规则里，
   不再需要每个小节各自覆盖一遍。此前的28px 32px是没有对照过Figma的估测值 */
.submit-simple-box {
  /* 视口>1425px时同一处修复：原来没有上限，改成封顶+居中 */
  max-width: calc(var(--page-width) - 32px);
  /* 2026-09 同一处修复：补width，两侧至少各留16px */
  width: calc(100% - 32px);
  margin: 0 auto;
  background: var(--color-tag-bg); /* #EAE1FF */
  border-radius: 5px;
  box-shadow: 0px 0px 6px 0px rgba(128, 128, 128, 0.2);
  padding: 20px 24px;
}

.submit-simple-lead {
  /* "一句话"到下方第一个小组的间距实测16px（Conference format: 121→137；
     Review: 123→139，两处核对一致），不是像列表内部条目间距那样是8px，
     也不是此前误写的20px。2026-08 用户核对纠正：这3个小节紫色卡片内的
     段落间距在现有基础上各再收紧2px（14→12） */
  margin: 0 0 calc(var(--space-heading-gap) - 2px) 0;
  font-family: var(--font-nav);
  /* 2026-08 用户核对纠正：字重从SemiBold(600)改为Bold(700)——"Conference
     format"/"Review and AI declaration"两个小节的引导句要求加重 */
  font-weight: 700;
  font-size: var(--fs-h4);
  line-height: var(--lh-h4);
  color: var(--color-ink);
}

.submit-simple-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  /* 三个小节的"小组"之间纵向间距实测都是8px（Choosing/Conference/Review三处
     核对一致），此前误写成16px。2026-08 用户核对纠正：再收紧2px（8→6） */
  gap: 6px;
}

.submit-simple-list li {
  display: flex;
  align-items: flex-start;
  /* 图标到文本框的水平间距三个小节各不相同（圆点15px/箭头16.15px/短线22px），
     下面按各自marker修饰类单独覆盖，这里不再设通用值，避免掩盖三者的真实差异 */
}

.submit-simple-list li p {
  margin: 0;
  font-family: var(--font-nav);
  font-weight: 400;
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--color-ink);
}

.submit-simple-list li p strong {
  color: var(--color-primary-purple);
  font-weight: 700;
}

/* Choosing the right format：小方点标记（这个通用规则实际只有"Choosing the
   right format"这一个小节在用，具体数值已被下方.submit-choose-*专属覆盖
   规则接管——保留这条规则本身只是为了提供content:""，不再依赖它的
   width/height/margin-top/background） */
.submit-simple-list.marker-dot li::before {
  content: "";
  flex-shrink: 0;
  width: 8px;
  height: 8px;
  /* 2026-08 Visual Refinement：正文行高从32收紧到27后按同一居中公式重算，
     (27-8)/2=9.5，取整10 */
  margin-top: 10px;
  background: var(--color-primary-purple);
}

/* Conference format：小箭头图标。2026-08 用户提供了这个小节单独的Figma链接
   （node 4008:1630），get_design_context精确核对：图标本身宽21.62/高17.184
   （此前估测成22x18）；图标顶边相对自身所在段落顶边的偏移量三处小组核对
   完全一致，恒为9.21px（146.21-137、219.21-210、323.21-314），不是简单的
   "行高居中"，此前的margin-top:8px是没有数据支撑的估测值；图标到文本框的
   水平间距实测16.15px（79-62.84≈16.16）；颜色实测是深灰黑色（与段落文字
   同色rgba(0,0,0,.75)），和"Choosing the right format"里的圆点、下面
   "Review and AI declaration"里的短线是同一套配色逻辑，不是强调色紫色 */
.submit-simple-list.marker-arrow li {
  gap: 16.15px;
}

/* 2026-08 二次替换：用户反馈这个箭头图标不对（截图里的三个箭头样式和实际
   Figma设计不符），改用户导出的透明底箭头PNG素材（4x导出，87x69，与
   20.72:17.18的目标宽高比几乎完全吻合，不需要额外裁切）原位替换，不再用
   CSS手绘的SVG path——element本身也从span+svg简化为直接一个img */
.submit-simple-list.marker-arrow li .icon-arrow {
  /* 2026-09 用户明确要求：全站同款箭头icon统一等比缩小，长宽各减2px
     （原18×14，这次改前的值） */
  flex-shrink: 0;
  width: 16px;
  height: 12px;
  margin-top: 9.21px;
  display: block;
}

/* Review and AI declaration：2026-08 用户明确要求，这里4组信息的"图标+间距"
   样式改为和"Choosing the right format"（.submit-choose-list.marker-dot）
   完全一致的规格——直径5px圆点、15px间距，不再是原来的16x4短横线+22px间距。
   继续复用HTML里已有的.icon-dash元素（不改动结构），只把它的外观从横线
   改画成圆点 */
.submit-simple-list.marker-dash li {
  gap: 15px; /* 原22px，改为与marker-dot同一套间距 */
}

.submit-simple-list.marker-dash li .icon-dash {
  flex-shrink: 0;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  /* 与.submit-choose-list.marker-dot li::before同一套居中公式：
     (--lh-body 25 - 5)/2 = 10 */
  margin-top: 10px;
  background: var(--color-ink);
}

/* ---- "Choosing the right format" 专属覆盖 ----
   紫色卡片的padding/margin、列表的组间距8px这两条现在已经并入上面三个小节
   共用的基础规则（.submit-simple-box / .submit-simple-list），这里不再需要
   重复覆盖，只保留这个小节真正独有的部分：圆点到文本的水平间距(15px)、加粗
   引导语的颜色/字重、圆点本身的形状颜色。这组规则特意放在上面
   .marker-dot/.marker-arrow/.marker-dash 三条共用规则之后——覆盖的
   .submit-choose-list.marker-dot li::before和被覆盖的
   .submit-simple-list.marker-dot li::before特异度相同（都是2个class+2个元素），
   CSS层叠在特异度相同时按源码顺序取后者，必须确保这组覆盖物理上写在后面才能
   生效，不能只依赖类名多寡 */
.submit-choose-list li {
  /* 圆点右边缘到文本框左边缘的间距实测15px（文本框x=60，圆点x=40+5=45，
     60-45=15），覆盖基础规则未设通用值时的默认间距 */
  gap: 15px;
}

.submit-choose-list li p strong {
  /* 颜色实测确实是纯黑色而不是紫色，和其余两个小节共用的
     .submit-simple-list li p strong规则强调语变紫色不是同一个视觉规范。
     2026-08 用户核对纠正：字重从SemiBold(600)改为Bold(700) */
  color: inherit;
  font-weight: 700;
}

.submit-choose-list.marker-dot li::before {
  /* 圆点实测直径5px正圆形（此前套用共用规则是8px正方形、直角），颜色实测
     是深灰黑色（与段落文字同色rgba(0,0,0,.75)），不是强调色紫色——放大截图
     直接比对确认，圆点和相邻文字色相完全一致 */
  width: 5px;
  height: 5px;
  border-radius: 50%;
  /* (--lh-body 25 - 5)/2 = 10——2026-08校准：--lh-body从27收紧到25后，
     这条手写的居中值之前漏跟着重算，一直停留在旧值11，这次一并修正 */
  margin-top: 10px;
  background: var(--color-ink);
}

@media (max-width: 700px) {
  .submit-subformat p {
    margin-left: 40px; /* 窄屏下 200px 缩进会挤占过多正文宽度，收窄为固定小缩进 */
  }
  .submit-type-body ul.submit-bullet-list {
    padding-left: 40px;
  }
  /* 紫色说明框+橙色type框这一行按用户要求不再响应式堆叠/压缩——原来这里的
     .submit-intro-row/.submit-type-tabs换成纵向排列、.submit-type-tab换成
     横线分隔的写法已经不需要了，窄屏下改为交给.submit-intro-scroll横向滚动 */
}

/* 2026-08 用户明确要求：视口<=500px时，"Submission types"这一行的紫色/
   橙色两张卡片改成上下堆叠（原来是并排+横向滚动查看）：
   - 紫色卡片：宽度和左右对齐都改成跟下方.submit-type-panels（淡紫色长条
     标签）一致的24px左右边距，卡片内文字正常换行（不再是537px定宽）。
   - 橙色卡片：不再用"整体等比缩小"（transform:scale）——用户反馈这样做
     出来效果不好，已经改成真正的响应式重排：卡片宽度和紫色卡片一样改成
     24px左右边距；内部"1/2/3/4"这4组元素（各自的内部间距——编号到标题
     的10px、标题到箭头的14px——保持不变，不重排/不缩放）从一行4个改成
     2x2网格（第一行1、2，第二行3、4，1和3左对齐，2和4左对齐），
     两行之间32px，中点(16px处)插入新的横向虚线分隔线；网格下方16px是
     原来"一行4个"下面就有的那条横向虚线分隔线，再下方16px是说明文字，
     说明文字的宽度也跟着卡片新宽度自适应换行。
   - 两卡片之间16px间距、橙色卡片到下方.submit-type-panels间距24px——
     后者本来就是.submit-type-panels自己的margin-top:24px，天然成立，
     不需要额外处理。
   这条规则必须放在文件最后——CSS按源码顺序层叠，选择器权重相同时写在
   后面的才会生效，前面.submit-intro-left等桌面端基础规则会盖掉写在
   它们之前的同名规则 */
@media (max-width: 500px) {
  .submit-intro-scroll {
    /* 2026-08 用户核对纠正：左边距改成16px——要对齐的是"Submission types"
       这个小标签本身的左边缘（.sub-label-tag的margin-left:16px），不是
       之前用的24px（那是标签文字左边缘=16+8px内边距，不是标签本身的
       左边缘）。注意：下方.submit-type-panels（淡紫色长条标签）目前仍是
       24px，没有一并跟着改——这里如实标注一下，如果也需要改成16px保持
       全部对齐，请另外告知 */
    margin-left: 16px;
    margin-right: 24px;
    overflow-x: visible;
  }
  .submit-intro-row {
    flex-direction: column;
    width: 100%;
  }
  .submit-intro-left {
    flex: 0 0 auto;
    width: 100%;
  }
  .submit-intro-right-shim {
    flex: 0 0 auto;
    width: 100%;
    overflow: visible; /* 不再有缩放，不需要裁切 */
  }
  .submit-intro-right {
    width: 100%; /* 覆盖桌面端垫片给的840px语境，这里靠垫片的width:100%传递 */
  }

  /* 4个type的"编号+标题+箭头"组：从一行4个（justify-content:space-between）
     改成2列x2行的网格，每组自身内部的间距/宽度规则（.tab-line1的10px
     column-gap、.tab-arrow-row的14px margin-top、每个type固定的
     .tab-label宽度）完全不变，只是重新分配到网格的哪个格子——网格自动按
     DOM顺序2列一行地放置，1、2在第一行，3、4在第二行，天然满足"1和3
     左对齐、2和4左对齐"（每列宽度由该列里最宽的那个元素决定，同列内所有
     元素都贴这一列的左边缘） */
  .submit-type-tabs {
    display: grid;
    grid-template-columns: max-content max-content;
    column-gap: 24px;
    row-gap: 0; /* 行间距改由.tab-row-divider这个占位元素撑出32px，不用grid自己的row-gap，
                   这样才能在32px正中间(16px处)插入横线，纯row-gap做不到"在间距中间画一条线" */
    justify-content: start;
    /* 2026-08 用户核对纠正：改回默认stretch（不再是start）——之前用start是
       为了让"1和3左对齐"，但代价是每个格子只占自己内容的自然宽度，导致
       箭头图标(靠align-items:flex-end贴在格子右边缘)也跟着各自的窄格子走，
       workshop的箭头因此比paper的箭头明显偏左，两者对不齐。改成stretch后，
       每个格子撑满所在列的完整宽度（列宽仍然=同列最宽的那个item决定，
       "1和3左对齐"不受影响），箭头贴右就能对齐到列的真正右边界；配合下面
       .tab-line1单独设align-self:flex-start，文字本身的位置完全不受这次
       拉伸影响，只有箭头会跟着挪——这正是用户要的"只移动箭头，不移动整组" */
    justify-items: stretch;
    align-items: start;
  }

  /* "编号+标题"这一行单独锚定在格子左边缘，不跟随.submit-type-tab自身的
     align-items:flex-end（那是给箭头用的）——格子拉伸变宽后，文字必须
     留在原地，只有箭头需要贴到新的、更靠右的格子边缘 */
  .submit-type-tab .tab-line1 {
    align-self: flex-start;
  }

  .submit-type-tab .tab-arrow-row {
    align-self: flex-end;
  }

  /* 新插入的"两行之间"横向虚线分隔线——在HTML里是.submit-type-tabs的最后
     一个子元素（排在4个type后面，不打乱它们的DOM顺序/nth-child编号，
     避免影响其它依赖nth-child的桌面端规则），靠下面的order属性把它在
     视觉上挪到第2/3组之间；order只影响渲染顺序，不影响nth-child匹配，
     两者互不干扰 */
  .tab-row-divider {
    display: block;
    grid-column: 1 / -1;
    justify-self: stretch; /* 父级.submit-type-tabs设了justify-items:start
      （为了让1/3、2/4两列不被拉伸变形），但这条分隔线本身是空内容的占位
      元素，跟着start的话会收缩成0宽——这里单独覆盖回stretch，让它撑满
      1/-1横跨的整个宽度，:before伪元素的left:0/right:0才有意义 */
    height: 32px;
    position: relative;
  }

  .tab-row-divider::before {
    content: "";
    position: absolute;
    top: 16px; /* 32px间距的正中间 */
    left: 0;
    right: 0;
    border-top: 1px dashed #484848; /* 与卡片内其它虚线分隔线同一套线型 */
  }

  .submit-type-tab[data-type="paper"] { order: 1; }
  .submit-type-tab[data-type="practice"] { order: 2; }
  .tab-row-divider { order: 3; }
  .submit-type-tab[data-type="workshop"] { order: 4; }
  .submit-type-tab[data-type="phd"] { order: 5; }

  /* workshop这一项在桌面端布局里前面有一条纵向虚线分隔线（因为它前面紧邻
     practice，横向相邻），但2x2网格下它是第二行的开头，左边不再挨着任何
     元素，这条纵向线留着会变成一条视觉上不知道在分隔什么的悬浮线，去掉 */
  .submit-type-tab[data-type="workshop"]::before {
    display: none;
  }

  /* 用户核对纠正：第2行(workshop/phd)之间的竖线分隔线要和第1行(paper/
     practice)之间的对齐、并且底部要延长到贴住箭头图标的底边缘——具体的
     x坐标改由submit-section.js里positionSubmitTypeDividers()的手机端
     分支处理（直接复用第1行算出来的--divider-offset，不让phd按自己和
     workshop的间隙单独计算——workshop内容比paper窄，按它自己算出来的
     间隙量的是"workshop文字末尾到列边界"之间多出来的空白，不是真正的
     列间距，这也是原来两条线对不齐的根本原因）。这里只负责"贴住箭头
     底边缘"这一半：bottom从桌面端的14px（停在箭头行开始之前）改成0
     （.submit-type-tab是flex-direction:column，箭头行是最后一个子元素，
     没有额外padding-bottom，0就是箭头本身的真实底边缘） */
  .submit-type-tab:not(:first-child)::before {
    bottom: 0;
  }

  /* 原来"一行4个"下方就有的横向虚线分隔线(.submit-intro-divider)，用户
     明确要求这里的间距改成16px（不是桌面端的12px）：网格下边到这条线
     16px，这条线到下方说明文字再16px */
  .submit-type-tabs {
    margin-bottom: 16px;
  }
  .submit-intro-divider {
    margin-bottom: 16px;
  }
  /* 说明文字.submit-intro-caption本身就是width:100%的普通换行文本，
     卡片宽度变窄后会自动跟着换行，不需要额外覆盖 */

  /* 用户明确要求：紫色说明卡片里的文字缩小1个字号——从H2档(26/31)降到
     H3档(22/27) */
  .submit-intro-left p {
    font-size: var(--fs-h3);
    line-height: var(--lh-h3);
  }
}
