/* An issue group is one selectable object; only one visual container is used. */
.v5-modal[hidden] { display: none; }
.v5-modal { position: fixed; inset: 0; z-index: 1500; display: flex; align-items: center; justify-content: center; padding: var(--space-6); }
.v5-backdrop { position: absolute; inset: 0; background: rgb(17 24 39 / 40%); }
.v5-dialog { position: relative; width: min(100%, 1080px); max-height: calc(100dvh - var(--space-8) - var(--space-4)); overflow: auto; min-width: 0; border-radius: var(--radius-overlay); background: var(--color-surface); color: var(--color-text-primary); padding: var(--space-6); box-shadow: var(--shadow-overlay); }
.v5-modal-open { overflow: hidden; }
.v5-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); flex-wrap: wrap; }
.v5-dialog h2, .v5-admin h1 { font-size: 24px; margin: 0 0 var(--space-4); }
.v5-dialog h3, .v5-admin h3 { font-size: 18px; margin: var(--space-2) 0; line-height: 1.6; }
.v5-dialog h4, .v5-admin h4 { font-size: 16px; margin: var(--space-3) 0 var(--space-2); }
.v5-dialog p, .v5-admin p { margin: var(--space-2) 0; line-height: 1.7; overflow-wrap: anywhere; }
.v5-dialog li, .v5-admin li { line-height: 1.8; overflow-wrap: anywhere; }
.v5-meta { color: var(--color-text-secondary); font-size: 13px; }
.v5-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2); }
.v5-filter-row { display: flex; flex-wrap: wrap; align-items: end; gap: var(--space-4); padding: var(--space-3) 0; border-bottom: 1px solid var(--color-border); }
.v5-filter-row > label { display: flex; flex-direction: column; gap: var(--space-2); font-size: 13px; color: var(--color-text-secondary); min-width: 0; flex: 1 1 160px; }
.v5-filter-row select, .v5-filter-row input, .v5-editor input { min-height: 36px; min-width: 0; width: 100%; border: 1px solid var(--color-border-strong); border-radius: var(--radius-control); color: var(--color-text-primary); background: var(--color-surface); padding: var(--space-2); font: inherit; }
.v5-filter-row > .v5-check { flex-direction: row; align-items: center; flex: 0 1 auto; min-height: 36px; white-space: nowrap; }
.v5-filter-row .v5-check input { width: auto; }
.v5-check input { accent-color: var(--color-primary); }
.v5-list { display: grid; gap: var(--space-4); margin: var(--space-4) 0; }
.v5-entry { border: 1px solid var(--color-border); border-radius: var(--radius-control); padding: var(--space-4); min-width: 0; }
.v5-entry.is-selected { border-color: var(--color-primary); }
.v5-radio { display: flex; gap: var(--space-3); align-items: flex-start; font-size: 18px; line-height: 1.6; font-weight: 600; cursor: pointer; }
.v5-radio input { margin-top: var(--space-2); flex-shrink: 0; accent-color: var(--color-primary); }
.v5-dialog .v5-radio { display: flex; flex: 1 1 auto; width: 100%; min-width: 0; max-width: 100%; gap: var(--space-3); color: var(--color-text-primary); }
.v5-dialog .v5-radio input[type="radio"] { width: 16px; min-width: 16px; height: 16px; min-height: 16px; padding: 0; flex: 0 0 16px; }
.v5-dialog .v5-radio > span { flex: 1 1 auto; min-width: 0; width: auto; white-space: normal; overflow-wrap: anywhere; color: var(--color-text-primary); }
.v5-dialog .v5-check input[type="checkbox"], .v5-dialog .v5-checks input[type="checkbox"] { width: 16px; min-width: 16px; height: 16px; min-height: 16px; padding: 0; flex: 0 0 16px; }
.v5-footer { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-3); position: sticky; bottom: calc(-1 * var(--space-6)); background: var(--color-surface); border-top: 1px solid var(--color-border); padding: var(--space-4) 0; margin-top: var(--space-4); }
.v5-tabs { display: flex; flex-wrap: wrap; gap: var(--space-4); border-bottom: 1px solid var(--color-border); margin: var(--space-4) 0; }
.v5-tabs button { border: 0; border-bottom: 2px solid transparent; border-radius: var(--radius-flat); padding: var(--space-2) 0; background: transparent; font: inherit; color: var(--color-text-secondary); cursor: pointer; white-space: nowrap; flex-shrink: 0; }
.v5-tabs button.on { color: var(--color-primary); border-bottom-color: var(--color-primary); font-weight: 600; }
.v5-source { padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border); }
.v5-source summary, .v5-detail summary, .v5-editor summary, .v5-entry summary { cursor: pointer; font-size: 14px; line-height: 1.8; }
.v5-checks { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-4); padding: var(--space-3) 0; }
.v5-checks label { display: flex; align-items: center; gap: var(--space-2); white-space: nowrap; font-size: 14px; }
.v5-checks input { accent-color: var(--color-primary); }
.v5-section { padding: var(--space-4) 0; border-top: 1px solid var(--color-border); margin-top: var(--space-4); }
.v5-definition { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: var(--space-2) var(--space-4); font-size: 16px; line-height: 1.8; }
.v5-definition dt { color: var(--color-text-secondary); }
.v5-definition dd { margin: 0; overflow-wrap: anywhere; }
.v5-field { display: flex; flex-direction: column; gap: var(--space-2); font-size: 14px; margin: var(--space-3) 0; }
.v5-field textarea { width: 100%; box-sizing: border-box; min-height: 72px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-control); padding: var(--space-2); font: inherit; line-height: 1.7; color: var(--color-text-primary); background: var(--color-surface); resize: vertical; }
.v5-field select { width: 100%; box-sizing: border-box; min-width: 0; border: 1px solid var(--color-border-strong); border-radius: var(--radius-control); padding: var(--space-2); font: inherit; color: var(--color-text-primary); background: var(--color-surface); }
.v5-field select option { white-space: normal; overflow-wrap: anywhere; }
.v5-field select option:checked { background: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface)); color: var(--color-text-primary); }
.v5-edit-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4); }
.v5-error { color: var(--color-error); border-left: 2px solid var(--color-error); padding-left: var(--space-3); }
.v5-empty { padding: var(--space-6) 0; }
.v5-code { overflow: auto; max-width: 100%; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 13px; border-left: 1px solid var(--color-border); padding-left: var(--space-3); }
.v5-context-summary { padding: var(--space-4) 0; min-width: 0; }
.v5-admin { max-width: var(--width-content); margin: 0 auto; padding: var(--space-6); }
.v5-admin-layout { display: grid; grid-template-columns: minmax(240px, 1fr) minmax(0, 2fr); gap: var(--space-6); align-items: start; }
.v5-admin-list { border-top: 1px solid var(--color-border); max-height: calc(100dvh - var(--space-8) * 4); overflow-y: auto; min-width: 0; }
.v5-admin-layout > section { min-width: 0; }
.v5-admin .v5-check { display: flex; align-items: center; gap: var(--space-2); margin: var(--space-3) 0; }
.v5-admin .v5-check input { width: 16px; min-width: 16px; height: 16px; min-height: 16px; padding: 0; flex: 0 0 16px; }
.v5-admin-row { display: block; width: 100%; text-align: left; border: 0; border-bottom: 1px solid var(--color-border); border-radius: var(--radius-flat); padding: var(--space-3) 0; background: transparent; color: var(--color-text-primary); cursor: pointer; font: inherit; }
.v5-admin-row.is-selected { color: var(--color-primary); }
.v5-admin-row small { display: block; color: var(--color-text-secondary); font-size: 12px; margin-top: var(--space-2); }
.v5-admin textarea.v5-json { min-height: 320px; width: 100%; box-sizing: border-box; font: 13px/1.7 ui-monospace, monospace; border: 1px solid var(--color-border-strong); border-radius: var(--radius-control); padding: var(--space-3); }
.v5-dialog :focus-visible, .v5-admin :focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
@media (max-width: 720px) {
  .v5-modal { padding: var(--space-2); }
  .v5-dialog { padding: var(--space-4); max-height: calc(100dvh - var(--space-4)); }
  .v5-footer { bottom: calc(-1 * var(--space-4)); }
  .v5-edit-grid, .v5-admin-layout { grid-template-columns: minmax(0, 1fr); }
  .v5-definition { grid-template-columns: minmax(0, 1fr); gap: var(--space-1); }
  .v5-definition dd { margin-bottom: var(--space-3); }
  .v5-admin { padding: var(--space-4); }
  .v5-admin-list { max-height: 40dvh; }
}

/* ===== A7 推进关系教师编辑 ===== */
.v5-progression{display:flex;flex-direction:column;gap:8px;border-top:1px dashed var(--color-border);padding-top:8px;margin-top:4px}
.v5-progression .v5-filter-row{align-items:end}
.v5-progression select,.v5-progression input[type=text]{height:32px;padding:0 8px;border:1px solid var(--color-border);border-radius:8px;font-size:13px;font-family:inherit;background:var(--color-surface);color:var(--color-text-primary)}
.v5-progression input[type=text]:focus,.v5-progression select:focus{outline:none;border-color:var(--color-primary)}
.v5-progression .v5-bases{border:0;padding:0;margin:0}
.v5-progression .v5-bases legend{font-size:12px;color:var(--color-text-tertiary);padding:0}
.v5-progression .v5-checks{display:flex;flex-wrap:wrap;gap:4px 16px}
.v5-progression .v5-checks label{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-secondary)}
.v5-parked{background:var(--color-surface-hover);border-radius:8px;padding:12px}
.v5-parked .v5-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px dashed var(--color-border)}
.v5-parked .v5-heading p{margin:0;font-size:13px;color:var(--color-text-secondary);min-width:0;overflow-wrap:anywhere}
