/* Stage 2.0：在 Stage 1 视觉基线上增加工作台、钻取与响应式布局。 */

.s2-page,
.s2-detail-page {
  display: grid;
  min-height: calc(100vh - var(--topbar-height) - 22px);
  gap: 10px;
}

.s2-detail-page {
  height: calc(100vh - var(--topbar-height) - 22px);
  min-height: 660px;
}

.s2-page > *,
.s2-detail-page > * { min-width: 0; }

.s2-page .page-toolbar {
  min-height: 32px;
  margin: 0;
  gap: 10px;
}

.s2-toolbar-note {
  margin-right: auto;
  color: var(--muted);
  font-size: 12px;
}

.s2-metric-grid--eight { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.s2-metric-grid--eight .metric-card { min-height: 74px; padding-right: 8px; }
.s2-metric-grid--eight .metric-card__value strong { font-size: 24px; }
.s2-metric-grid--eight .metric-card__trend { display: none; }

.s2-detail-header {
  display: flex;
  min-height: 66px;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 9px 12px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 9px;
  box-shadow: var(--shadow-card);
}

.s2-breadcrumb { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; color: var(--muted); font-size: 10px; }
.s2-breadcrumb a { color: var(--primary); text-decoration: none; }
.s2-breadcrumb strong { color: var(--muted); font-weight: 400; }
.s2-detail-title { display: flex; align-items: center; gap: 9px; }
.s2-detail-title h2 { margin: 0; font-size: 22px; font-weight: 600; line-height: 1.2; }
.s2-detail-header p { margin: 2px 0 0; color: var(--muted); font-size: 12px; }
.s2-detail-actions { display: flex; align-items: center; gap: 8px; }
.s2-updated { color: var(--muted); font-size: 11px; white-space: nowrap; }
.s2-updated strong { color: var(--text); font-weight: 600; }
.s2-back-button { display: inline-flex; align-items: center; gap: 4px; }
.s2-back-button .line-icon { width: 15px; height: 15px; }

/* 全校网格治理 */
.s2-page--grid-overview { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-page--grid-overview .metric-grid { margin: 0; }
.s2-grid-overview-layout { display: grid; min-height: 0; grid-template-columns: minmax(0, 1fr) minmax(250px, 286px); gap: 10px; }
.s2-college-matrix-panel { display: flex; min-height: 0; flex-direction: column; overflow: hidden; }
.s2-college-matrix { display: grid; min-height: 0; flex: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 9px; padding: 10px; overflow-y: auto; }
.s2-college-card {
  display: flex;
  min-height: 170px;
  flex-direction: column;
  padding: 13px;
  background: #fbfcfd;
  border: 1px solid #dfe6ed;
  border-radius: 8px;
  cursor: pointer;
  text-align: left;
  transition: transform var(--transition), border-color var(--transition), background var(--transition);
}
.s2-college-card:hover, .s2-college-card:focus-visible { transform: translateY(-2px); background: #f6fafd; border-color: #a9c2da; outline: none; }
.s2-college-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.s2-college-card__head strong { font-size: 15px; font-weight: 600; line-height: 1.35; }
.s2-college-card__focus { display: grid; align-content: center; flex: 1; gap: 6px; margin: 10px 0; }
.s2-college-card__focus > i { display: grid; grid-template-columns: 58px minmax(0, 1fr) auto; align-items: center; gap: 7px; padding: 7px 8px; background: #fff; border: 1px solid #e6ebf0; border-radius: 6px; font-style: normal; }
.s2-college-card__focus small { color: var(--muted); font-size: 9px; }
.s2-college-card__focus strong { overflow: hidden; font-size: 10px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.s2-college-card__focus time { color: var(--muted); font-size: 9px; }
.s2-college-card__metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; margin: 0 0 12px; }
.s2-college-card__metrics i { display: flex; flex-direction: column; padding: 7px 4px; background: #f2f6f9; border-radius: 6px; font-style: normal; text-align: center; }
.s2-college-card__metrics b { font-size: 18px; font-weight: 600; }
.s2-college-card__metrics small { color: var(--muted); font-size: 9px; }
.s2-college-card__foot { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; color: var(--muted); font-size: 10px; }
.s2-college-card__foot b { color: var(--primary); font-size: 12px; font-weight: 600; }
.s2-grid-overview-side { display: grid; min-height: 0; grid-template-rows: minmax(0, .7fr) minmax(0, 1.3fr); gap: 10px; }
.s2-status-summary, .s2-grid-tasks { min-height: 0; overflow: hidden; }
.s2-status-summary > div { display: grid; height: calc(100% - 41px); grid-template-columns: 1fr 1fr; gap: 6px; padding: 8px; }
.s2-status-summary button { display: flex; align-items: center; justify-content: space-between; padding: 7px 8px; background: #f8fafc; border: 1px solid #e5eaf0; border-radius: 6px; cursor: pointer; }
.s2-status-summary button strong { font-size: 18px; font-weight: 600; }
.s2-grid-tasks > div { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(4, minmax(0, 1fr)); padding: 5px 10px; }
.s2-grid-tasks button { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 2px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-grid-tasks button:last-child { border-bottom: 0; }
.s2-grid-tasks button span { min-width: 0; }
.s2-grid-tasks strong, .s2-grid-tasks small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s2-grid-tasks strong { font-size: 12px; font-weight: 600; }
.s2-grid-tasks small, .s2-grid-tasks time { color: var(--muted); font-size: 10px; }

/* 学院网格详情 */
.s2-college-detail { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-college-detail .metric-grid { margin: 0; }
.s2-college-detail-grid { display: grid; min-height: 0; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(150px, .82fr) minmax(190px, 1.18fr) minmax(108px, .58fr); gap: 10px; }
.s2-hierarchy-panel { grid-column: span 8; overflow: hidden; }
.s2-college-trend-panel { grid-column: span 4; display: flex; min-height: 0; flex-direction: column; overflow: hidden; }
.s2-college-cases-panel { grid-column: span 8; min-height: 0; overflow: hidden; }
.s2-college-tasks-panel { grid-column: span 4; min-height: 0; overflow: hidden; }
.s2-college-sources-panel { grid-column: 1 / -1; min-height: 0; overflow: hidden; }
.s2-hierarchy { display: grid; height: calc(100% - 41px); grid-template-columns: minmax(110px, 1fr) 18px minmax(110px, 1fr) 18px minmax(110px, 1fr) 18px minmax(110px, 1fr) 18px minmax(110px, 1fr); align-items: stretch; gap: 3px; padding: 9px; }
.s2-hierarchy-layer { display: flex; min-width: 0; flex-direction: column; padding: 7px; background: #f7f9fb; border: 1px solid #e3e9ef; border-radius: 7px; }
.s2-hierarchy-level { color: var(--primary); font-size: 10px; font-weight: 600; }
.s2-hierarchy-layer > div { display: grid; align-content: center; flex: 1; gap: 4px; }
.s2-hierarchy-layer button { min-height: 26px; padding: 3px 5px; overflow: hidden; color: var(--text); background: #fff; border: 1px solid #dbe4ed; border-radius: 5px; cursor: pointer; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.s2-hierarchy-arrow { align-self: center; color: #89a4bf; font-size: 18px; font-style: normal; text-align: center; }
.s2-multi-trend { display: grid; min-height: 0; flex: 1; grid-template-rows: auto minmax(80px, 1fr) auto; padding: 8px 10px; }
.s2-trend-legend { display: flex; justify-content: flex-end; gap: 10px; color: var(--muted); font-size: 9px; }
.s2-trend-legend span { display: flex; align-items: center; gap: 4px; }
.s2-trend-legend i { width: 12px; height: 2px; background: currentColor; }
.series-a { color: var(--primary); }.series-b { color: #4f829f; }.series-c { color: var(--success); }
.s2-multi-trend svg { width: 100%; height: 100%; }
.s2-trend-line { fill: none; stroke: currentColor; stroke-width: 2.1; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 420; animation: draw-line 850ms ease forwards; }
.s2-table-scroll { max-height: calc(100% - 41px); overflow: auto; }
.s2-college-case-table { min-width: 910px; }
.s2-college-case-table th { position: sticky; top: 0; z-index: 1; height: 31px; padding: 0 8px; }
.s2-college-case-table td { height: 39px; padding: 5px 8px; font-size: 10px; }
.s2-college-case-table th:nth-child(n) { width: auto; }
.s2-mini-task-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: 3px; padding: 7px 8px; border-bottom: 1px solid #edf1f4; }
.s2-mini-task-stats span { display: flex; flex-direction: column; text-align: center; }
.s2-mini-task-stats b { font-size: 15px; font-weight: 600; }
.s2-mini-task-stats small { color: var(--muted); font-size: 8px; }
.s2-compact-task-list { display: grid; height: calc(100% - 102px); grid-template-rows: repeat(5, minmax(0, 1fr)); padding: 3px 9px; }
.s2-compact-task-list button { display: grid; min-height: 0; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 6px; padding: 3px 1px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-compact-task-list span { min-width: 0; }
.s2-compact-task-list strong, .s2-compact-task-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s2-compact-task-list strong { font-size: 10px; font-weight: 600; }
.s2-compact-task-list small, .s2-compact-task-list time { color: var(--muted); font-size: 9px; }
.s2-source-strip { display: grid; height: calc(100% - 41px); grid-template-columns: repeat(7, 1fr); gap: 7px; padding: 8px; }
.s2-source-strip button { display: flex; min-width: 0; flex-direction: column; justify-content: center; gap: 4px; padding: 6px 7px; background: #f8fafc; border: 1px solid #e1e7ed; border-radius: 6px; cursor: pointer; text-align: left; }
.s2-source-strip strong { overflow: hidden; font-size: 10px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.s2-source-strip small { color: var(--muted); font-size: 8px; }

/* 帮扶事项 */
.s2-page--cases { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-page--cases .filter-bar { margin: 0; }
.s2-cases-layout { display: grid; min-height: 0; grid-template-columns: minmax(0, 1fr) minmax(230px, 276px); gap: 10px; }
.s2-case-table-panel { display: flex; min-height: 0; flex-direction: column; overflow: auto; }
.s2-case-table-panel .data-table { min-width: 840px; }
.s2-case-table-panel .data-table tbody { overflow-y: auto; }
.s2-case-table-panel .table-footer { margin-top: auto; padding: 0 11px; border-top: 1px solid var(--border); }
.s2-cases-side { display: grid; min-height: 0; grid-template-rows: minmax(190px, .78fr) minmax(260px, 1.22fr); gap: 10px; }
.s2-cases-side > .panel { min-height: 0; overflow: hidden; }
.s2-status-count-list { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(5, 1fr); padding: 5px 10px; }
.s2-status-count-list button { display: flex; align-items: center; justify-content: space-between; padding: 4px 2px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; }
.s2-status-count-list strong { font-size: 17px; font-weight: 600; }
.s2-case-update-list { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(5, 1fr); padding: 5px 10px; }
.s2-case-update-list button { display: grid; grid-template-columns: 37px minmax(0, 1fr); align-items: center; gap: 7px; padding: 5px 2px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-case-update-list time, .s2-case-update-list small { color: var(--muted); font-size: 9px; }
.s2-case-update-list strong, .s2-case-update-list small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s2-case-update-list strong { font-size: 11px; font-weight: 600; }

.s2-modal { position: fixed; inset: 0; z-index: 80; display: none; place-items: center; }
.s2-modal.is-open { display: grid; }
.s2-modal__scrim { position: absolute; inset: 0; background: rgba(7, 27, 50, .46); }
.s2-modal__dialog { position: relative; z-index: 1; display: grid; width: min(440px, calc(100vw - 32px)); gap: 12px; padding: 18px; background: #fff; border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-float); }
.s2-modal__dialog header { display: flex; align-items: flex-start; justify-content: space-between; }
.s2-modal__dialog h3 { margin: 0; font-size: 18px; font-weight: 600; }
.s2-modal__dialog p { margin: 3px 0 0; color: var(--muted); font-size: 11px; }
.s2-modal__dialog label { display: grid; gap: 5px; color: var(--muted); font-size: 11px; }
.s2-modal__dialog input, .s2-modal__dialog select { width: 100%; height: 36px; padding: 0 10px; color: var(--text); background: #fff; border: 1px solid #dbe3eb; border-radius: 6px; outline: none; }
.s2-modal__dialog input:focus, .s2-modal__dialog select:focus { border-color: #8fb4d6; box-shadow: 0 0 0 3px rgba(0, 64, 144, .08); }
.s2-modal__dialog footer { display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px; }
.s2-icon-button { width: 30px; height: 30px; color: var(--muted); background: transparent; border: 0; border-radius: 5px; cursor: pointer; font-size: 20px; }

/* 事项详情 */
.s2-case-detail { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-case-summary { padding: 9px; }
.s2-case-info-grid { display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 7px; }
.s2-case-info-grid > div { min-width: 0; padding: 7px 8px; background: #f7f9fb; border-radius: 6px; }
.s2-case-info-grid span, .s2-definition-grid span { display: block; color: var(--muted); font-size: 9px; }
.s2-case-info-grid strong, .s2-definition-grid strong { display: block; margin-top: 3px; overflow: hidden; font-size: 11px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.s2-case-detail-layout { display: grid; min-height: 0; grid-template-columns: minmax(0, 1.55fr) minmax(320px, .85fr); gap: 10px; }
.s2-case-timeline-panel { min-height: 0; overflow: hidden; }
.s2-case-timeline { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(8, minmax(0, 1fr)); margin: 0; padding: 8px 14px; list-style: none; }
.s2-case-timeline li { position: relative; display: grid; grid-template-columns: 24px 60px minmax(0, 1fr); align-items: center; gap: 8px; min-height: 0; }
.s2-case-timeline li::after { position: absolute; top: 50%; bottom: -50%; left: 11px; width: 1px; content: ""; background: #dbe4ed; }
.s2-case-timeline li:last-child::after { display: none; }
.s2-case-timeline li > i { display: grid; z-index: 1; width: 24px; height: 24px; place-items: center; color: var(--muted); background: #f1f4f7; border: 1px solid #dce4eb; border-radius: 50%; font-size: 9px; font-style: normal; }
.s2-case-timeline li.is-done > i { color: #fff; background: var(--primary); border-color: var(--primary); }
.s2-case-timeline time { color: var(--muted); font-size: 10px; }
.s2-case-timeline strong, .s2-case-timeline small { display: block; }
.s2-case-timeline strong { font-size: 12px; font-weight: 600; }
.s2-case-timeline small { color: var(--muted); font-size: 10px; }
.s2-case-detail-side { display: grid; min-height: 0; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; gap: 10px; }
.s2-case-detail-side > article { min-height: 0; overflow: hidden; }
.s2-next-action, .s2-ai-entry { padding-bottom: 12px; }
.s2-next-action > strong, .s2-next-action > p, .s2-next-action > button, .s2-ai-entry > p, .s2-ai-entry > button { margin-left: 12px; margin-right: 12px; }
.s2-next-action > strong { display: block; margin-top: 12px; font-size: 14px; font-weight: 600; }
.s2-next-action > p, .s2-ai-entry > p { color: var(--muted); font-size: 10px; }
.s2-linked-task-list { display: grid; padding: 6px 10px; }
.s2-linked-task-list button { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 7px 2px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-linked-task-list strong, .s2-linked-task-list small { display: block; }
.s2-linked-task-list strong { font-size: 10px; font-weight: 600; }
.s2-linked-task-list small { color: var(--muted); font-size: 9px; }
.s2-record-list { display: grid; padding: 6px 10px; }
.s2-record-list span { padding: 6px 2px; border-bottom: 1px solid #edf1f4; font-size: 10px; }

/* 跟踪任务 */
.s2-page--tracking { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-page--tracking .metric-grid { margin: 0; }
.s2-task-workbench { display: grid; min-height: 0; grid-template-columns: minmax(0, 1fr) minmax(230px, 270px); gap: 10px; }
.s2-task-columns { display: grid; min-height: 0; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.s2-task-column { min-height: 0; overflow: hidden; }
.s2-task-list { display: grid; max-height: calc(100% - 41px); gap: 7px; padding: 8px; overflow-y: auto; }
.s2-task-list .task-card { min-height: 82px; }
.s2-tracking-rhythm { min-height: 0; overflow: hidden; }
.s2-rhythm-timeline { display: grid; height: calc(100% - 142px); grid-template-rows: repeat(6, minmax(0, 1fr)); padding: 4px 10px; }
.s2-rhythm-timeline button { display: grid; grid-template-columns: 70px minmax(0, 1fr) auto; align-items: center; gap: 6px; padding: 4px 2px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-rhythm-timeline time { color: var(--muted); font-size: 9px; }
.s2-rhythm-timeline span { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }

.s2-task-detail { grid-template-rows: auto minmax(0, 1fr) auto; }
.s2-task-detail-grid { display: grid; min-height: 0; grid-template-columns: 1.15fr .85fr; grid-template-rows: minmax(210px, .8fr) minmax(250px, 1.2fr); gap: 10px; }
.s2-task-detail-grid > article { min-height: 0; overflow: hidden; }
.s2-definition-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; padding: 12px; }
.s2-definition-grid > div { padding: 12px; background: #f7f9fb; border-radius: 7px; }
.s2-definition-grid strong { font-size: 13px; }
.s2-task-action-state { display: grid; grid-template-columns: 120px 1fr; gap: 9px; padding: 14px; }
.s2-task-action-state span { color: var(--muted); font-size: 11px; }
.s2-task-action-state strong { font-size: 12px; font-weight: 600; }
.s2-task-actions { display: flex; flex-wrap: wrap; gap: 7px; padding: 0 14px 14px; }
.s2-task-actions button:disabled { cursor: not-allowed; opacity: .5; transform: none; }
.s2-simple-timeline { display: grid; gap: 0; margin: 0; padding: 14px 18px; list-style: none; }
.s2-simple-timeline li { display: grid; grid-template-columns: 130px 1fr; gap: 10px; padding: 12px; border-left: 2px solid #dbe4ed; }
.s2-simple-timeline li.is-current { background: #f2f7fb; border-left-color: var(--primary); }
.s2-simple-timeline time { color: var(--muted); font-size: 10px; }
.s2-simple-timeline span { font-size: 12px; }
.s2-task-context-panel { padding-bottom: 14px; }
.s2-task-context-panel > h3, .s2-task-context-panel > p, .s2-task-context-panel > dl { margin-left: 14px; margin-right: 14px; }
.s2-task-context-panel > h3 { margin-top: 16px; margin-bottom: 4px; font-size: 18px; font-weight: 600; }
.s2-task-context-panel > p { color: var(--muted); font-size: 12px; }
.s2-task-context-panel dl { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.s2-task-context-panel dl div { padding: 10px; background: #f7f9fb; border-radius: 6px; }
.s2-task-context-panel dt { color: var(--muted); font-size: 9px; }.s2-task-context-panel dd { margin: 3px 0 0; font-size: 11px; font-weight: 600; }

/* 辅导员助手 */
.s2-page--assistant { grid-template-rows: auto minmax(0, 1fr) auto; }
.s2-assistant-workbench { display: grid; min-height: 0; grid-template-columns: minmax(240px, .72fr) minmax(390px, 1.28fr) minmax(320px, .92fr); gap: 10px; }
.s2-assistant-workbench > * { min-height: 0; overflow: hidden; }
.s2-assistant-cases > div { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(6, minmax(0, 1fr)); padding: 5px 9px; }
.s2-assistant-cases button { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 6px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; border-radius: 5px; cursor: pointer; text-align: left; }
.s2-assistant-cases button.is-selected { background: #edf5fb; box-shadow: inset 3px 0 var(--primary); }
.s2-assistant-cases button span { min-width: 0; }
.s2-assistant-cases strong, .s2-assistant-cases small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.s2-assistant-cases strong { font-size: 11px; font-weight: 600; }
.s2-assistant-cases small { color: var(--muted); font-size: 9px; }
.s2-assistant-chat { display: grid; grid-template-rows: auto minmax(0, 1fr) auto auto; }
.s2-assistant-chat .conversation-list { height: auto; min-height: 0; padding: 14px; }
.s2-context-chip { margin: 0 12px 8px; padding: 8px 10px; background: #f7f9fb; border: 1px solid #e4eaf0; border-radius: 7px; }
.s2-context-chip span { color: var(--primary); font-size: 9px; font-weight: 600; }
.s2-context-chip p { margin: 3px 0 0; color: var(--muted); font-size: 10px; }
.s2-assistant-result { display: grid; grid-template-rows: auto repeat(4, minmax(0, 1fr)) auto; padding: 0; }
.s2-result-block { min-height: 0; padding: 10px 13px; border-bottom: 1px solid #edf1f4; }
.s2-result-block > span { color: var(--primary); font-size: 10px; font-weight: 600; }
.s2-result-block ul { display: grid; gap: 3px; margin: 5px 0 0; padding-left: 17px; }
.s2-result-block li, .s2-result-block p { color: var(--text); font-size: 11px; }
.s2-result-block p { margin: 5px 0 0; }
.s2-result-block--warning > span { color: var(--warning); }
.s2-assistant-result footer { display: flex; justify-content: flex-end; gap: 7px; padding: 10px 12px; }

/* 数据联动 */
.s2-page--data { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-page--data .connection-summary { margin: 0; }
.s2-data-workbench { display: grid; min-height: 0; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(270px, 1.15fr) minmax(190px, .85fr); gap: 10px; }
.s2-data-workbench > article { min-height: 0; overflow: hidden; }
.s2-data-sources { grid-column: span 8; }
.s2-data-flow { grid-column: span 4; }
.s2-data-updates { grid-column: span 8; }
.s2-data-status-guide { grid-column: span 4; }
.s2-source-card-grid { display: grid; height: calc(100% - 41px); grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 9px; }
.s2-source-card-grid .source-card { min-height: 0; }
.s2-source-card__preview { display: flex; flex-wrap: wrap; align-content: center; gap: 4px; flex: 1; margin: 8px 0; }
.s2-source-card__preview i { padding: 3px 6px; color: #536579; background: #f2f5f8; border-radius: 4px; font-size: 8px; font-style: normal; }
.s2-source-card__owner { display: block; margin-bottom: 7px; overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.s2-flow-map { display: grid; height: calc(100% - 41px); grid-template-columns: 1fr 20px 1.1fr 20px 1fr; align-items: center; gap: 5px; padding: 12px; }
.s2-flow-map > i { color: #8aa5be; font-size: 17px; font-style: normal; text-align: center; }
.s2-flow-sources, .s2-flow-targets { display: grid; gap: 5px; }
.s2-flow-sources span, .s2-flow-targets span, .s2-flow-map > strong { display: flex; flex-direction: column; padding: 7px; background: #f7f9fb; border: 1px solid #e1e8ef; border-radius: 6px; font-size: 10px; font-weight: 600; text-align: center; }
.s2-flow-sources small, .s2-flow-map > strong small { color: var(--muted); font-size: 8px; font-weight: 400; }
.s2-flow-map > strong { color: #fff; background: var(--primary); border-color: var(--primary); }
.s2-flow-map > strong small { color: rgba(255, 255, 255, .68); }
.s2-data-updates > div { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(5, minmax(0, 1fr)); padding: 5px 11px; }
.s2-data-updates > div > span { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 7px; border-bottom: 1px solid #edf1f4; }
.s2-data-updates time { color: var(--muted); font-size: 10px; }
.s2-data-updates strong { overflow: hidden; font-size: 11px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.s2-data-status-guide > div { display: grid; height: calc(100% - 41px); grid-template-columns: 1fr 1fr; gap: 7px; padding: 10px; }
.s2-data-status-guide > div > span { display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 8px; background: #f7f9fb; border: 1px solid #e3e9ef; border-radius: 7px; }
.s2-data-status-guide small { color: var(--muted); font-size: 9px; }

.s2-data-detail-page { grid-template-rows: auto minmax(0, 1fr) auto; }
.s2-data-detail-grid { display: grid; min-height: 0; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(220px, .9fr) minmax(220px, .9fr) minmax(110px, .45fr); gap: 10px; }
.s2-source-profile { grid-column: 1 / 6; grid-row: 1 / 3; }
.s2-future-fields { grid-column: 6 / 9; grid-row: 1; }
.s2-demo-fields { grid-column: 9 / -1; grid-row: 1; }
.s2-source-updates { grid-column: 6 / -1; grid-row: 2; }
.s2-source-flow-detail { grid-column: 1 / -1; grid-row: 3; }
.s2-source-state { padding: 17px; border-bottom: 1px solid #edf1f4; }
.s2-source-state > strong { display: block; margin-top: 13px; font-size: 18px; font-weight: 600; }
.s2-source-state p { margin: 6px 0 0; color: var(--muted); font-size: 11px; }
.s2-source-profile dl { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 14px; }
.s2-source-profile dl div { padding: 11px; background: #f7f9fb; border-radius: 7px; }
.s2-source-profile dt { color: var(--muted); font-size: 9px; }.s2-source-profile dd { margin: 4px 0 0; font-size: 18px; font-weight: 600; }
.s2-future-fields > div { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(4, 1fr); padding: 8px 11px; }
.s2-future-fields span { display: flex; align-items: center; gap: 8px; border-bottom: 1px solid #edf1f4; }
.s2-future-fields .line-icon { width: 15px; height: 15px; color: var(--primary); }
.s2-future-fields strong { font-size: 11px; font-weight: 600; }
.s2-field-table { width: 100%; border-collapse: collapse; }
.s2-field-table th, .s2-field-table td { height: 41px; padding: 0 10px; border-bottom: 1px solid #edf1f4; font-size: 10px; text-align: left; }
.s2-field-table th { color: var(--muted); background: #f8fafc; font-weight: 500; }
.s2-source-updates > div { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(5, 1fr); padding: 6px 11px; }
.s2-source-updates > div > span { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 7px; border-bottom: 1px solid #edf1f4; }
.s2-source-updates time { color: var(--muted); font-size: 9px; }.s2-source-updates strong { font-size: 10px; font-weight: 600; }
.s2-source-flow-detail > div { display: flex; height: calc(100% - 41px); align-items: center; justify-content: center; gap: 9px; padding: 10px; }
.s2-source-flow-detail > div span { padding: 8px 10px; background: #f5f8fa; border: 1px solid #e0e7ee; border-radius: 6px; font-size: 10px; }
.s2-source-flow-detail > div i { color: #8aa5be; font-style: normal; }

/* 案例知识库 */
.s2-page--knowledge { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.s2-page--knowledge .knowledge-toolbar { margin: 0; }
.s2-tag-filter { display: flex; gap: 6px; }
.s2-tag-filter button { padding: 5px 9px; color: var(--muted); background: #fff; border: 1px solid var(--border); border-radius: 999px; cursor: pointer; font-size: 10px; }
.s2-tag-filter button.is-active { color: var(--primary); background: var(--primary-light); border-color: #a9c3dc; }
.s2-knowledge-workbench { display: grid; min-height: 0; grid-template-columns: 188px minmax(0, 1fr) 248px; gap: 10px; }
.s2-knowledge-workbench > * { min-height: 0; }
.s2-knowledge-workbench .category-panel { min-height: 0; overflow: hidden; }
.s2-source-legend { display: grid; gap: 6px; margin: 7px 10px; padding-top: 10px; border-top: 1px solid #edf1f4; }
.s2-source-legend span { color: var(--muted); font-size: 9px; }
.s2-source-legend small { padding: 5px 7px; background: #f6f8fa; border-radius: 5px; font-size: 9px; }
.s2-knowledge-workbench .knowledge-grid { min-height: 0; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(3, minmax(0, 1fr)); overflow: auto; }
.s2-knowledge-workbench .knowledge-card { min-height: 0; }
.s2-knowledge-card__insight { display: flex; flex-wrap: wrap; align-content: center; gap: 5px; flex: 1; margin: 7px 0; padding: 8px; background: #f7f9fb; border-radius: 6px; }
.s2-knowledge-card__insight small { width: 100%; color: var(--muted); font-size: 8px; }
.s2-knowledge-card__insight i { padding: 3px 6px; color: var(--primary-dark); background: #eaf2f9; border-radius: 4px; font-size: 8px; font-style: normal; }
.s2-knowledge-side { display: grid; min-height: 0; grid-template-rows: 1fr .8fr; gap: 10px; }
.s2-knowledge-side > article { min-height: 0; overflow: hidden; }
.s2-popular-list { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(4, 1fr); padding: 5px 10px; }
.s2-popular-list button { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 6px; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-popular-list b { color: var(--primary); font-size: 11px; font-weight: 600; }
.s2-popular-list span { font-size: 11px; }.s2-popular-list small { color: var(--muted); font-size: 9px; }
.s2-recent-list { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(3, 1fr); padding: 5px 10px; }
.s2-recent-list button { display: flex; flex-direction: column; justify-content: center; background: transparent; border: 0; border-bottom: 1px solid #edf1f4; cursor: pointer; text-align: left; }
.s2-recent-list strong { font-size: 10px; font-weight: 600; }.s2-recent-list small { color: var(--muted); font-size: 9px; }

.s2-knowledge-detail { grid-template-rows: auto minmax(0, 1fr) auto; }
.s2-knowledge-detail-grid { display: grid; min-height: 0; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(180px, .8fr) minmax(210px, 1fr); gap: 10px; }
.s2-knowledge-detail-grid > article { min-height: 0; overflow: hidden; }
.s2-case-background { grid-column: span 4; }.s2-knowledge-process { grid-column: span 5; }.s2-knowledge-detail-grid > article:nth-child(3) { grid-column: span 3; }
.s2-experience-panel { grid-column: span 4; }.s2-knowledge-detail-grid > article:nth-child(5) { grid-column: span 3; }.s2-scripts-panel { grid-column: span 5; }
.s2-case-background > p { margin: 15px; color: var(--muted); font-size: 12px; }.s2-case-background .tag-row { margin: 0 15px; }
.s2-knowledge-process > div { display: flex; height: calc(100% - 41px); align-items: center; justify-content: space-around; gap: 6px; padding: 12px; }
.s2-knowledge-process > div span { display: flex; align-items: center; gap: 7px; }
.s2-knowledge-process b { display: grid; width: 25px; height: 25px; place-items: center; color: #fff; background: var(--primary); border-radius: 50%; font-size: 9px; }
.s2-knowledge-process strong { font-size: 10px; font-weight: 600; }.s2-knowledge-process i { color: #8aa5be; font-style: normal; }
.s2-key-node-list { display: grid; height: calc(100% - 41px); align-content: center; gap: 8px; padding: 12px; }
.s2-key-node-list span { display: flex; align-items: center; gap: 7px; padding: 8px; background: #f7f9fb; border-radius: 6px; }
.s2-key-node-list .line-icon { width: 15px; height: 15px; color: var(--success); }.s2-key-node-list strong { font-size: 10px; font-weight: 600; }
.s2-experience-panel blockquote { margin: 24px; padding: 17px; color: var(--primary-dark); background: #f1f6fa; border-left: 3px solid var(--primary); border-radius: 0 7px 7px 0; font-size: 13px; line-height: 1.8; }
.s2-method-list { display: grid; gap: 8px; padding: 16px; }
.s2-method-list span { display: flex; align-items: center; gap: 8px; padding: 9px; background: #f7f9fb; border-radius: 6px; font-size: 11px; }
.s2-method-list b { color: var(--primary); font-size: 10px; font-weight: 600; }
.s2-scripts-panel > div { display: grid; gap: 9px; padding: 16px; }.s2-scripts-panel p { margin: 0; padding: 12px; color: var(--text); background: #f7f9fb; border: 1px solid #e3e9ef; border-radius: 7px; font-size: 12px; }

/* 系统演示 */
.s2-page--demo { grid-template-rows: auto minmax(142px, .34fr) minmax(0, 1fr) auto; }
.s2-demo-console { min-height: 0; overflow: hidden; }
.s2-demo-steps { display: grid; height: calc(100% - 41px); grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 10px; }
.s2-demo-steps button { position: relative; display: grid; grid-template-columns: 29px minmax(0, 1fr); grid-template-rows: auto auto auto; align-content: center; gap: 2px 8px; padding: 9px; color: var(--muted); background: #f8fafc; border: 1px solid #e1e7ed; border-radius: 7px; cursor: pointer; text-align: left; }
.s2-demo-steps button > span { display: grid; grid-row: 1 / 4; width: 27px; height: 27px; place-items: center; background: #e9eef3; border-radius: 50%; font-size: 10px; font-weight: 600; }
.s2-demo-steps strong { color: var(--text); font-size: 12px; font-weight: 600; }.s2-demo-steps small { font-size: 9px; }.s2-demo-steps b { color: var(--primary); font-size: 10px; font-weight: 600; }
.s2-demo-steps button.is-active { background: #f0f6fb; border-color: #a9c4dd; }.s2-demo-steps button.is-active > span { color: #fff; background: var(--primary); }
.s2-demo-steps button.is-current { box-shadow: inset 3px 0 var(--primary); }
.s2-demo-workbench { display: grid; min-height: 0; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-template-rows: minmax(230px, 1.1fr) minmax(180px, .9fr); gap: 10px; }
.s2-demo-workbench > article { min-height: 0; overflow: hidden; }
.s2-demo-live { grid-column: span 5; }.s2-demo-deltas { grid-column: span 7; }.s2-demo-activity { grid-column: span 7; }.s2-demo-guide { grid-column: span 5; }
.s2-demo-case-state { padding: 15px; }.s2-demo-case-state h3 { margin: 13px 0 4px; font-size: 18px; font-weight: 600; }.s2-demo-case-state p { margin: 0; color: var(--muted); font-size: 11px; }
.s2-demo-case-state dl { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 14px 0; }.s2-demo-case-state dl div { padding: 9px; background: #f7f9fb; border-radius: 6px; }.s2-demo-case-state dt { color: var(--muted); font-size: 9px; }.s2-demo-case-state dd { margin: 3px 0 0; font-size: 10px; font-weight: 600; }
.s2-demo-empty { display: grid; min-height: 160px; place-content: center; color: var(--muted); text-align: center; }.s2-demo-empty strong { color: var(--text); font-size: 15px; }
.s2-demo-deltas > div { display: grid; height: calc(100% - 76px); grid-template-columns: repeat(4, 1fr); align-items: center; gap: 8px; padding: 14px; }
.s2-demo-deltas > div span { display: flex; min-height: 90px; flex-direction: column; justify-content: center; padding: 12px; background: #f7f9fb; border: 1px solid #e2e8ee; border-radius: 7px; }
.s2-demo-deltas small { color: var(--muted); font-size: 10px; }.s2-demo-deltas strong { font-size: 29px; font-weight: 600; }.s2-demo-deltas i { color: var(--muted); font-size: 9px; font-style: normal; }
.s2-demo-deltas footer { padding: 8px 14px; color: var(--muted); border-top: 1px solid #edf1f4; font-size: 10px; }
.s2-demo-activity ol { display: grid; height: calc(100% - 41px); grid-template-rows: repeat(6, 1fr); margin: 0; padding: 5px 11px; list-style: none; }
.s2-demo-activity li { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 7px; border-bottom: 1px solid #edf1f4; font-size: 10px; }.s2-demo-activity time { color: var(--muted); }
.s2-demo-guide > div { display: grid; height: calc(100% - 41px); grid-template-columns: 1fr 1fr; gap: 8px; padding: 12px; }.s2-demo-guide span { display: flex; align-items: center; gap: 8px; padding: 10px; background: #f7f9fb; border-radius: 7px; font-size: 10px; }.s2-demo-guide b { display: grid; width: 23px; height: 23px; place-items: center; color: #fff; background: var(--primary); border-radius: 50%; font-size: 9px; }

.s2-not-found { display: grid; min-height: 360px; place-content: center; justify-items: center; padding: 30px; text-align: center; }
.s2-not-found strong { font-size: 20px; font-weight: 600; }.s2-not-found p { color: var(--muted); font-size: 12px; }

@media (max-width: 1500px) {
  .s2-metric-grid--eight { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .s2-page--grid-overview, .s2-page--cases, .s2-page--tracking, .s2-page--data, .s2-page--knowledge { height: calc(100vh - var(--topbar-height) - 22px); min-height: 620px; }
  .s2-college-matrix { grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(2, minmax(0, 1fr)); }
  .s2-college-card { min-height: 0; }
  .s2-college-card__metrics { margin-top: 12px; }
  .s2-case-info-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .s2-source-card-grid { overflow-y: auto; }
}

@media (max-width: 1260px) {
  .s2-grid-overview-layout, .s2-task-workbench { grid-template-columns: minmax(0, 1fr) 230px; }
  .s2-college-card__head { align-items: flex-start; flex-direction: column; }
  .s2-college-card__metrics b { font-size: 16px; }
  .s2-hierarchy-panel { grid-column: 1 / -1; }
  .s2-college-trend-panel { grid-column: span 5; }
  .s2-college-cases-panel { grid-column: span 7; }
  .s2-college-tasks-panel { grid-column: 8 / -1; }
  .s2-college-detail-grid { grid-template-rows: minmax(165px, auto) minmax(170px, auto) minmax(210px, auto) minmax(105px, auto); }
  .s2-hierarchy-panel { grid-row: 1; }.s2-college-trend-panel { grid-row: 2; }.s2-college-cases-panel { grid-row: 2 / 4; }.s2-college-tasks-panel { grid-row: 3; }.s2-college-sources-panel { grid-row: 4; }
  .s2-case-detail-layout { grid-template-columns: minmax(0, 1.2fr) minmax(300px, .8fr); }
  .s2-assistant-workbench { grid-template-columns: 230px minmax(360px, 1fr) 300px; }
  .s2-data-sources, .s2-data-updates { grid-column: span 7; }.s2-data-flow, .s2-data-status-guide { grid-column: span 5; }
  .s2-knowledge-workbench { grid-template-columns: 170px minmax(0, 1fr) 220px; }
}

@media (max-width: 1020px) {
  .s2-page, .s2-detail-page { height: auto; min-height: calc(100vh - var(--topbar-height) - 24px); }
  .s2-detail-header { align-items: flex-start; flex-direction: column; }
  .s2-detail-actions { width: 100%; justify-content: flex-end; }
  .s2-grid-overview-layout, .s2-cases-layout, .s2-task-workbench, .s2-case-detail-layout, .s2-assistant-workbench, .s2-knowledge-workbench { grid-template-columns: 1fr; }
  .s2-college-matrix { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .s2-grid-overview-side, .s2-cases-side { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .s2-college-detail-grid, .s2-data-workbench, .s2-data-detail-grid, .s2-knowledge-detail-grid, .s2-demo-workbench { display: flex; flex-direction: column; }
  .s2-college-detail-grid > article, .s2-data-workbench > article, .s2-data-detail-grid > article, .s2-knowledge-detail-grid > article, .s2-demo-workbench > article { min-height: 220px; }
  .s2-hierarchy { overflow-x: auto; }
  .s2-source-strip { grid-template-columns: repeat(4, 1fr); }
  .s2-case-info-grid { grid-template-columns: repeat(3, 1fr); }
  .s2-case-detail-side { grid-template-columns: 1fr 1fr; }
  .s2-assistant-workbench > * { min-height: 420px; }
  .s2-knowledge-workbench .knowledge-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 720px) {
  .s2-metric-grid--eight, .s2-college-matrix, .s2-task-columns, .s2-grid-overview-side, .s2-cases-side, .s2-case-detail-side, .s2-knowledge-workbench .knowledge-grid, .s2-demo-steps { grid-template-columns: 1fr; }
  .s2-case-info-grid, .s2-definition-grid { grid-template-columns: repeat(2, 1fr); }
  .s2-detail-actions { align-items: flex-start; flex-wrap: wrap; justify-content: flex-start; }
  .s2-hierarchy { grid-template-columns: 1fr; }
  .s2-hierarchy-arrow { transform: rotate(90deg); }
  .s2-source-strip, .s2-source-card-grid { grid-template-columns: repeat(2, 1fr); }
  .s2-assistant-workbench { display: flex; flex-direction: column; }
  .s2-tag-filter { flex-wrap: wrap; }
  .s2-demo-steps { height: auto; }
}
