:root {
  font-family: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", sans-serif;
  color: #182033;
  background: #f3f5f8;
  font-synthesis: none;
  text-rendering: optimizeLegibility;
  --ink: #182033;
  --muted: #6d7689;
  --indigo: #233876;
  --indigo-deep: #152550;
  --teal: #087f73;
  --amber: #c78724;
  --paper: #ffffff;
  --line: #dfe4eb;
  --soft: #f3f5f8;
  --el-color-primary: #233876;
  --el-color-success: #087f73;
  --el-border-radius-base: 7px;
}

* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; min-height: 100vh; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
#app { min-height: 100vh; }

.shell { min-height: 100vh; }
.app-header {
  position: sticky; top: 0; z-index: 20;
  box-shadow: 0 5px 18px rgba(19,34,73,.08);
}
.topbar {
  height: 70px; padding: 0 32px; display: flex; align-items: center; gap: 24px;
  color: white; background:
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(112deg, #152550 0%, #1d326c 72%, #176a70 130%);
  background-size: 28px 28px, auto;
}
.brand {
  height: 70px; display: flex; align-items: center; gap: 13px;
  white-space: nowrap;
}
.top-brand { min-width: 224px; padding-right: 28px; border-right: 1px solid rgba(255,255,255,.14); }
.brand strong { display: block; font-family: "STZhongsong", "Songti SC", serif; font-size: 21px; letter-spacing: .12em; color: white; }
.brand small { display: block; margin-top: 3px; font: 10px/1.2 "Microsoft YaHei", sans-serif; letter-spacing: .08em; color: #9faad1; }
.brand-mark { flex: 0 0 auto; width: 31px; height: 31px; display: grid; grid-template-columns: repeat(3,1fr); gap: 3px; }
.brand-mark span { border: 1px solid #9eabd8; }
.brand-mark span:nth-child(2), .brand-mark span:nth-child(5), .brand-mark span:nth-child(8) { background: #3ec1ae; border-color: #3ec1ae; }
.brand-mark.large { width: 42px; height: 42px; gap: 4px; }
.workspace-context { min-width: 180px; display: grid; gap: 4px; }
.workspace-context span { color: #aeb9d8; font-size: 10px; letter-spacing: .08em; }
.workspace-context b { font-size: 14px; font-weight: 550; letter-spacing: .04em; }
.user-block { margin-left: auto; display: flex; align-items: center; gap: 11px; }
.avatar { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; color: #123b3e; background: #59d3c1; font-weight: 750; }
.user-copy b, .user-copy span { display: block; }
.user-copy b { color: white; font-size: 13px; }
.user-copy span { margin-top: 3px; color: #aeb9d8; font-size: 10px; }
.topbar .user-block .el-button { color: #d4daf0; }
.topbar .user-block .el-button:hover { color: white; background: rgba(255,255,255,.08); }
.desktop-navigation {
  height: 51px; padding: 0 32px; display: flex; align-items: stretch;
  border-bottom: 1px solid var(--line); background: rgba(255,255,255,.98);
}
.horizontal-menu.el-menu {
  flex: 1; min-width: 0; height: 50px; border-bottom: none;
  background: transparent;
}
.horizontal-menu.el-menu--horizontal > .el-menu-item,
.horizontal-menu.el-menu--horizontal > .el-sub-menu .el-sub-menu__title {
  height: 50px; padding: 0 20px; border-bottom: 3px solid transparent;
  color: #333d50; font-size: 13px;
}
.horizontal-menu.el-menu--horizontal > .el-menu-item:hover,
.horizontal-menu.el-menu--horizontal > .el-sub-menu .el-sub-menu__title:hover {
  color: var(--indigo); background: #f6f8fb;
}
.horizontal-menu.el-menu--horizontal > .el-menu-item.is-active,
.horizontal-menu.el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title {
  color: var(--indigo); border-bottom-color: var(--teal);
  background: linear-gradient(180deg, #fff, #f5faf9);
  font-weight: 650;
}
.horizontal-menu .el-sub-menu__icon-arrow { display: none; }
.mobile-navigation {
  position: fixed; inset: 0 auto 0 0; z-index: 30; width: 286px;
  display: flex; flex-direction: column; overflow-y: auto;
  color: #eef2ff; background:
    linear-gradient(rgba(255,255,255,.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.025) 1px, transparent 1px),
    var(--indigo-deep);
  background-size: 26px 26px;
  transform: translateX(-100%); transition: transform .25s ease;
}
.mobile-navigation.is-mobile-open { transform: translateX(0); }
.mobile-navigation-head {
  min-height: 70px; padding: 0 18px 0 20px; display: flex; align-items: center;
  justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,.1);
}
.mobile-navigation-head button {
  width: 34px; height: 34px; border: 1px solid rgba(255,255,255,.17);
  border-radius: 6px; color: #cbd3ea; background: rgba(255,255,255,.05);
  font-size: 23px; line-height: 1;
}
.term-stamp { margin: 24px 20px 11px; padding: 13px 15px; border-left: 2px solid #d89b42; background: rgba(255,255,255,.06); }
.term-stamp span { display: block; font-size: 11px; color: #aab3d4; }
.term-stamp b { display: block; margin-top: 5px; font-size: 13px; font-weight: 500; color: white; }
.mobile-nav-menu.el-menu { border: none; background: transparent; padding: 8px 10px; }
.mobile-nav-menu .el-menu-item,
.mobile-nav-menu .el-sub-menu__title {
  height: 45px; margin: 2px 0; border-radius: 6px; color: #bbc4e2; background: transparent;
}
.mobile-nav-menu .el-menu-item:hover,
.mobile-nav-menu .el-sub-menu__title:hover { color: white; background: rgba(255,255,255,.07); }
.mobile-nav-menu .el-menu-item.is-active { color: white; background: #2d478d; box-shadow: inset 3px 0 #46c6b5; }
.mobile-nav-menu .el-sub-menu .el-menu { background: rgba(0,0,0,.1); }
.mobile-nav-menu .el-sub-menu .el-menu-item { min-width: 0; padding-left: 40px !important; font-size: 12px; }
.main-area { min-width: 0; }
.menu-toggle {
  width: 38px; height: 38px; border: 1px solid rgba(255,255,255,.18);
  border-radius: 7px; color: white; background: rgba(255,255,255,.07);
}
.content { padding: 28px 32px 48px; max-width: 1540px; margin: 0 auto; }
.mobile-only { display: none; }

.section-kicker { color: var(--teal); font: 700 11px/1.2 "Microsoft YaHei", sans-serif; letter-spacing: .1em; }
.term-hero { min-height: 178px; padding: 32px 36px; display: flex; align-items: end; color: white; background: linear-gradient(118deg, #233876, #192d67 65%, #116d70); position: relative; overflow: hidden; }
.term-hero::after { content: ""; position: absolute; right: -40px; top: -110px; width: 360px; height: 360px; border: 54px solid rgba(255,255,255,.055); border-radius: 50%; }
.term-hero h2 { margin: 12px 0 7px; font-family: "STZhongsong", "Songti SC", serif; font-size: clamp(25px, 3vw, 38px); letter-spacing: .05em; }
.term-hero p { margin: 0; color: #c8d1ed; font-size: 13px; }
.term-hero button { position: relative; z-index: 1; margin-left: auto; width: 226px; padding: 15px 17px; display: flex; justify-content: space-between; border: 1px solid rgba(255,255,255,.35); color: white; background: rgba(255,255,255,.08); }
.term-hero button:hover { background: rgba(255,255,255,.15); }
.metric-grid { margin-top: 18px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.metric-card { min-height: 108px; padding: 22px; display: flex; align-items: center; gap: 17px; border: 1px solid var(--line); background: white; }
.metric-card .el-icon { width: 41px; height: 41px; border-radius: 50%; color: var(--indigo); background: #edf0f8; font-size: 19px; }
.metric-card span { display: block; color: var(--muted); font-size: 12px; }
.metric-card strong { display: block; margin-top: 5px; font: 700 27px/1 Consolas, monospace; color: var(--ink); }
.metric-card small { margin-left: 4px; color: var(--muted); font: 400 11px/1 sans-serif; }
.dashboard-grid { margin-top: 18px; display: grid; grid-template-columns: 1.35fr 1fr; gap: 18px; }
.work-card { min-height: 270px; padding: 28px; border: 1px solid var(--line); background: white; }
.card-heading { display: flex; justify-content: space-between; align-items: flex-start; }
.work-card h3 { margin: 8px 0 0; font-size: 18px; }
.status-chip { padding: 5px 9px; border-radius: 20px; color: var(--teal); background: #e8f5f2; font-size: 11px; }
.foundation-list { margin-top: 24px; }
.foundation-list > div { display: grid; grid-template-columns: 82px 1fr auto; gap: 14px; align-items: center; padding: 14px 0; border-top: 1px solid #eaedf1; }
.foundation-list span { color: var(--muted); font-size: 12px; }
.foundation-list b { font-size: 13px; font-weight: 550; }
.foundation-list i { font-size: 11px; font-style: normal; color: var(--teal); }
.phase-card { background: #fbfaf6; border-color: #e9e2d2; }
.phase-card p { max-width: 420px; margin: 16px 0 31px; color: var(--muted); font-size: 13px; line-height: 1.8; }
.phase-line { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 2px solid #ded8c9; }
.phase-line span { position: relative; padding-top: 14px; color: #9b9588; font-size: 11px; }
.phase-line span::before { content: ""; position: absolute; top: -5px; left: 0; width: 8px; height: 8px; border-radius: 50%; background: #c7c0b0; }
.phase-line span.active { color: var(--amber); font-weight: 700; }
.phase-line span.active::before { background: var(--amber); box-shadow: 0 0 0 4px #f5ead6; }

.page-stack { display: grid; gap: 18px; }
.page-stack > * { min-width: 0; }
.page-intro { min-height: 106px; padding: 8px 4px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.page-intro h2 { margin: 7px 0 7px; font-family: "STZhongsong", "Songti SC", serif; font-size: 27px; }
.page-intro p { margin: 0; color: var(--muted); font-size: 13px; }
.page-actions { display: flex; align-items: center; gap: 8px; }
.data-card { border: 1px solid var(--line); background: white; overflow: hidden; }
.data-tabs { display: grid; grid-template-columns: repeat(var(--tab-count, 7), minmax(105px, 1fr)); border-bottom: 1px solid var(--line); overflow-x: auto; }
.data-tabs button { min-width: 110px; padding: 16px 15px 14px; text-align: left; border: none; border-right: 1px solid #eaedf1; border-bottom: 3px solid transparent; color: var(--ink); background: #fafbfc; }
.data-tabs button:hover { background: white; }
.data-tabs button.active { border-bottom-color: var(--teal); background: white; }
.data-tabs b, .data-tabs span { display: block; }
.data-tabs b { font-size: 13px; }
.data-tabs span { margin-top: 4px; color: #9299a7; font-size: 10px; white-space: nowrap; }
.table-toolbar { min-height: 69px; padding: 14px 18px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); }
.table-toolbar .el-input { width: min(340px, 60vw); }
.table-toolbar > span { margin-left: auto; color: var(--muted); font-size: 11px; }
.data-table { min-height: 360px; }

.el-select-dropdown__item.academic-term-option {
  transition: color 160ms ease, opacity 160ms ease, background-color 160ms ease;
}

.el-select-dropdown__item.academic-term-option--current {
  color: #17694b;
  font-weight: 700;
}

.el-select-dropdown__item.academic-term-option--historical {
  color: #6f7d8c;
  opacity: .76;
}

.el-select-dropdown__item.academic-term-option--archived {
  color: #98a2ad;
  opacity: .62;
}

.el-select-dropdown__item.academic-term-option--historical.is-hovering,
.el-select-dropdown__item.academic-term-option--archived.is-hovering {
  opacity: 1;
}

.academic-term-row--historical > .el-table__cell {
  color: #73808e;
  opacity: .78;
}

.academic-term-row--archived > .el-table__cell {
  color: #8e98a3;
  background: #f8fafc;
  opacity: .66;
}

.academic-term-row--historical:hover > .el-table__cell,
.academic-term-row--archived:hover > .el-table__cell {
  opacity: .94;
}

.historical-record {
  opacity: .68;
  filter: saturate(.72);
}

.historical-record:hover,
.historical-record.active {
  opacity: 1;
  filter: none;
}

.archived-record {
  opacity: .54;
  filter: grayscale(.18) saturate(.58);
}

.archived-record:hover,
.archived-record.active {
  opacity: .92;
}

.term-policy-note {
  margin: 0 0 14px;
}

.field-help {
  margin-left: 10px;
  color: #8994a1;
  font-size: 12px;
}

.term-mobile-list {
  display: none;
}

@media (max-width: 720px) {
  .term-desktop-table {
    display: none;
  }

  .term-mobile-list {
    display: grid;
    gap: 10px;
  }

  .term-mobile-list article {
    border: 1px solid #e5e9ef;
    border-radius: 12px;
    background: #fff;
    padding: 14px;
  }

  .term-mobile-list article.academic-term-row--historical {
    color: #73808e;
    opacity: .78;
  }

  .term-mobile-list article.academic-term-row--archived {
    color: #8e98a3;
    background: #f8fafc;
    opacity: .66;
  }

  .term-mobile-list article:focus-within,
  .term-mobile-list article:hover {
    opacity: 1;
  }

  .term-mobile-list header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
  }

  .term-mobile-list header span:first-child {
    color: #258779;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .06em;
  }

  .term-mobile-list h3 {
    margin: 5px 0 3px;
    color: inherit;
    font-size: 15px;
    line-height: 1.45;
  }

  .term-mobile-list p {
    margin: 0;
    font-size: 12px;
  }

  .term-history-label {
    white-space: nowrap;
    color: #7c8895;
    font-size: 12px;
  }

  .term-mobile-list footer {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid #edf0f4;
  }

  .term-mobile-list footer .el-button {
    margin-left: 0;
  }
}
.el-table th.el-table__cell { color: #596274; background: #fafbfc; font-size: 12px; font-weight: 650; }
.el-table .cell { font-size: 12px; }
.table-status { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--teal); }
.table-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.table-status.off { color: #a0a6b1; }
.role-tag { margin: 2px 4px 2px 0; }
.role-editor-summary {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px;
  margin: -4px 0 20px; padding: 14px 16px;
  border-left: 3px solid var(--teal); background: #f5f7fb;
}
.role-editor-summary strong { color: var(--ink); font-size: 17px; }
.role-editor-summary span { color: var(--muted); font-size: 13px; }
.entity-form .el-select, .entity-form .el-date-editor { width: 100%; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.form-grid.compact { align-items: center; }
.form-grid.three { grid-template-columns: repeat(3, 1fr); }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* 由遮罩层 flex 居中；MessageBox 默认的全屏 fixed 包装层会脱离该布局。 */
.el-overlay.is-message-box {
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.el-overlay.is-message-box .el-overlay-message-box {
  position: static !important;
  display: block !important;
  width: min(420px, calc(100vw - 32px));
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}
.el-overlay.is-message-box .el-overlay-message-box::after { display: none !important; }
.el-overlay.is-message-box .el-message-box {
  width: 100%;
  margin: 0 !important;
  color: var(--ink);
  background: #fff !important;
  box-shadow: 0 18px 48px rgba(18, 37, 63, .28);
}
.password-reset-form { margin-top: 18px; }

.registry-switch { display: grid; grid-template-columns: 1fr 1fr 180px; min-height: 112px; border: 1px solid var(--line); background: white; }
.registry-switch button { padding: 22px 26px; display: grid; gap: 4px; text-align: left; border: none; border-right: 1px solid var(--line); border-bottom: 3px solid transparent; background: white; }
.registry-switch button:hover { background: #fafbfc; }
.registry-switch button.active { border-bottom-color: var(--teal); background: #f7fbfa; }
.registry-switch button > span { color: #9ba3b1; font: 700 9px/1.2 Consolas, monospace; letter-spacing: .13em; }
.registry-switch button > b { font-family: "STZhongsong", "Songti SC", serif; font-size: 19px; }
.registry-switch button > small { color: var(--muted); font-size: 11px; }
.registry-total { padding: 20px; display: grid; place-content: center; text-align: center; background: var(--indigo-deep); color: white; }
.registry-total span, .registry-total small { color: #aeb8d6; font-size: 10px; }
.registry-total strong { margin: 3px 0; font: 700 30px/1 Consolas, monospace; color: #59d3c1; }
.registry-banner { min-height: 104px; display: grid; grid-template-columns: 1fr 180px; color: white; border: 1px solid #243d70; background: linear-gradient(105deg, #172858, #29417c 68%, #19736f); overflow: hidden; }
.registry-banner.student { background: linear-gradient(105deg, #172858, #344877 60%, #6d5b91); }
.registry-banner > div:first-child { padding: 22px 27px; display: grid; align-content: center; gap: 6px; position: relative; }
.registry-banner > div:first-child::after { content: ""; position: absolute; right: 26px; top: 18px; width: 70px; height: 70px; opacity: .16; background-image: linear-gradient(rgba(255,255,255,.8) 1px, transparent 1px), linear-gradient(90deg,rgba(255,255,255,.8) 1px,transparent 1px); background-size: 14px 14px; }
.registry-banner > div > span { color: #65dac8; font: 700 9px/1.2 Consolas, monospace; letter-spacing: .14em; }
.registry-banner > div > b { font-family: "STZhongsong", "Songti SC", serif; font-size: 18px; font-weight: 600; }
.registry-banner > div > small { color: #bdc8e1; font-size: 10px; }
.registry-banner .registry-total { border-left: 1px solid rgba(255,255,255,.14); }
.filter-bar { min-height: 72px; padding: 14px 18px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); background: #fbfcfd; }
.filter-bar > .el-input { width: 280px; }
.filter-bar > .el-select { width: 150px; }
.registry-number, .course-code { color: var(--indigo); font: 700 12px/1.2 Consolas, monospace; letter-spacing: .03em; }
.record-name, .course-name { display: grid; gap: 3px; }
.record-name b, .course-name b { color: var(--ink); font-size: 13px; }
.record-name span, .course-name span { color: #9299a7; font-size: 10px; }
.course-category { display: inline-flex; padding: 3px 8px; color: #335b75; background: #eaf2f5; border-radius: 12px; font-size: 10px; white-space: nowrap; }
.taxonomy-note { min-height: 56px; padding: 8px 12px; display: grid; align-content: center; gap: 4px; border-left: 3px solid var(--teal); background: #f4f8f8; }
.taxonomy-note b { color: var(--ink); font-size: 11px; }
.taxonomy-note span { color: var(--muted); font-size: 10px; line-height: 1.5; }
.form-help { margin-left: 10px; color: var(--muted); font-size: 10px; }
.course-rule-help { margin-top: 4px; padding: 12px 14px; display: grid; grid-template-columns: 74px 1fr; gap: 7px 12px; background: #f5f8fa; border-left: 3px solid var(--teal); }
.course-rule-help b { color: var(--ink); font-size: 11px; }
.course-rule-help span { color: var(--muted); font-size: 10px; line-height: 1.5; }
.pagination-bar { min-height: 62px; padding: 12px 18px; display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); }
.pagination-bar > span { color: var(--muted); font-size: 11px; }
.course-ledger { min-height: 92px; display: flex; align-items: stretch; color: white; background: linear-gradient(105deg, #1a2d61, #263f80); overflow: hidden; position: relative; }
.course-ledger::after { content: "CATALOGUE"; position: absolute; right: 22px; top: 8px; color: rgba(255,255,255,.045); font: 700 44px/1 Consolas, monospace; letter-spacing: .08em; }
.ledger-label { width: 220px; padding: 18px 26px; display: flex; align-items: baseline; gap: 7px; border-right: 1px solid rgba(255,255,255,.12); position: relative; z-index: 1; }
.ledger-label span { align-self: flex-start; color: #aeb8d6; font-size: 11px; }
.ledger-label b { margin-left: auto; font: 700 31px/1 Consolas, monospace; color: #58d0bf; }
.ledger-label small { color: #c4cce3; font-size: 10px; }
.ledger-rule { padding: 17px 28px; display: grid; align-content: center; gap: 4px; position: relative; z-index: 1; }
.ledger-rule span { color: #8fa0cb; font-size: 9px; letter-spacing: .13em; }
.ledger-rule b { color: #f5f7ff; font-size: 14px; font-weight: 650; }
.ledger-rule small { color: #b9c3dd; font-size: 10px; }

.maintenance-scope { min-height: 76px; display: grid; grid-template-columns: 170px 220px 1fr; align-items: stretch; color: white; background: linear-gradient(105deg, #17295a, #263f80 72%, #19736f); overflow: hidden; }
.maintenance-scope > div { padding: 15px 20px; display: grid; align-content: center; gap: 5px; border-right: 1px solid rgba(255,255,255,.13); }
.maintenance-scope span { color: #91a2cc; font-size: 9px; letter-spacing: .12em; }
.maintenance-scope b { color: #f7f9ff; font-size: 13px; font-weight: 650; }
.maintenance-scope p { margin: 0; padding: 0 24px; align-self: center; color: #cbd4e8; font-size: 11px; }
.curriculum-filter { padding: 14px 18px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; border: 1px solid var(--line); background: white; }
.curriculum-filter > .el-input { width: 260px; }
.curriculum-filter > .el-select { width: 170px; }
.curriculum-workspace { min-height: 620px; display: grid; grid-template-columns: 285px minmax(0, 1fr); border: 1px solid var(--line); background: white; }
.plan-list { min-width: 0; display: flex; flex-direction: column; border-right: 1px solid var(--line); background: #fafbfc; }
.plan-list > button { position: relative; padding: 19px 20px; display: grid; gap: 6px; text-align: left; border: none; border-bottom: 1px solid var(--line); background: transparent; }
.plan-list > button:hover { background: white; }
.plan-list > button.active { padding-left: 17px; border-left: 3px solid var(--teal); background: white; }
.plan-list > button span { padding-right: 55px; color: var(--muted); font-size: 10px; }
.plan-list > button b { font-size: 13px; line-height: 1.5; }
.plan-list > button small { color: #969eac; font-size: 10px; }
.plan-list > button i { position: absolute; right: 14px; top: 16px; padding: 3px 7px; border-radius: 10px; color: #777f8d; background: #eef0f3; font-size: 9px; font-style: normal; }
.plan-list > button i.published { color: var(--teal); background: #e5f4f1; }
.plan-list > button i.archived { color: #8d7760; background: #f2ece4; }
.plan-pagination { margin-top: auto; min-height: 58px; padding: 10px 14px; display: flex; align-items: center; justify-content: space-between; border-top: 1px solid var(--line); }
.plan-pagination > span { color: var(--muted); font-size: 10px; }
.plan-detail { min-width: 0; padding: 26px; }
.plan-detail-head { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 21px; border-bottom: 1px solid var(--line); }
.plan-detail-head > div:first-child > span { color: var(--teal); font-size: 10px; letter-spacing: .08em; }
.plan-detail-head h3 { margin: 7px 0 5px; font-family: "STZhongsong", "Songti SC", serif; font-size: 23px; }
.plan-detail-head p { margin: 0; color: var(--muted); font-size: 11px; }
.plan-actions { display: flex; flex-wrap: wrap; align-content: flex-start; justify-content: flex-end; gap: 7px; }
.plan-actions .el-button + .el-button { margin-left: 0; }
.published-edit-notice { margin-top: 16px; border-radius: 0; }
.plan-metrics { margin: 18px 0; display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--line); }
.plan-metrics > div { padding: 15px 17px; border-right: 1px solid var(--line); }
.plan-metrics > div:last-child { border-right: none; }
.plan-metrics span, .plan-metrics b { display: block; }
.plan-metrics span { color: var(--muted); font-size: 10px; }
.plan-metrics b { margin-top: 6px; font: 700 18px/1.2 Consolas, monospace; }
.plan-metrics b.warning { color: #b36f12; }
.module-toolbar { margin: 25px 0 12px; display: flex; align-items: center; justify-content: space-between; }
.module-toolbar b, .module-toolbar span { display: block; }
.module-toolbar b { font-size: 15px; }
.module-toolbar span { margin-top: 4px; color: var(--muted); font-size: 10px; }
.curriculum-view-actions { display: flex; align-items: center; gap: 10px; }
.curriculum-view-actions .el-button + .el-button { margin-left: 0; }
.page-intro-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.page-intro-actions .el-button + .el-button { margin-left: 0; }
.curriculum-module { margin-top: 12px; border: 1px solid var(--line); }
.curriculum-module > header { min-height: 72px; padding: 13px 16px; display: flex; align-items: center; gap: 18px; background: #f8fafb; border-bottom: 1px solid var(--line); }
.curriculum-module > header > div:first-child { min-width: 160px; }
.curriculum-module > header span { color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .12em; }
.curriculum-module h4 { margin: 6px 0 0; font-size: 14px; }
.curriculum-module > header p { margin: 0 auto 0 0; color: var(--muted); font-size: 11px; }
.curriculum-module > header > div:last-child { display: flex; align-items: center; white-space: nowrap; }
.curriculum-course-table { min-height: 80px; }
.semester-view { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.semester-card { min-width: 0; border: 1px solid var(--line); background: #fff; }
.semester-card > header { min-height: 70px; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; background: linear-gradient(135deg, #f4faf9, #f8fafb); border-bottom: 1px solid var(--line); }
.semester-card > header span { color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .12em; }
.semester-card h4 { margin: 7px 0 0; font-size: 15px; }
.semester-card > header > b { color: #1d6b68; font: 700 18px/1 Consolas, monospace; }
.semester-summary { display: flex; gap: 14px; padding: 9px 16px; color: var(--muted); font-size: 11px; border-bottom: 1px solid var(--line); }
.semester-summary span + span { padding-left: 14px; border-left: 1px solid var(--line); }
.semester-courses { margin: 0; padding: 0; list-style: none; }
.semester-courses li { min-height: 68px; padding: 11px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #edf0f2; }
.semester-courses li:last-child { border-bottom: none; }
.semester-courses li > div { min-width: 0; display: grid; gap: 3px; }
.semester-courses li span { color: var(--teal); font-size: 10px; }
.semester-courses li b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.semester-courses li small { color: var(--muted); font-size: 10px; }
.semester-courses li > strong { flex: none; font: 700 15px/1 Consolas, monospace; }
.semester-courses li > strong small { margin-left: 3px; font: 400 9px/1 inherit; }
.semester-empty { margin: 0; padding: 25px 16px; color: var(--muted); font-size: 11px; text-align: center; }
.course-group-manager { min-height: 420px; display: grid; grid-template-columns: 230px minmax(0, 1fr); border: 1px solid var(--line); }
.course-group-manager > aside { padding: 12px; display: grid; align-content: start; gap: 6px; border-right: 1px solid var(--line); background: #fafbfc; }
.course-group-manager > aside > button:not(.el-button) { padding: 11px; display: grid; gap: 4px; text-align: left; border: 1px solid transparent; background: transparent; }
.course-group-manager > aside > button.active { border-color: #b8d9d5; background: #edf8f6; }
.course-group-manager > aside span { color: var(--teal); font: 700 9px/1 Consolas, monospace; }
.course-group-manager > aside b { font-size: 13px; }
.course-group-manager > aside small { color: var(--muted); font-size: 10px; }
.course-group-manager > main { min-width: 0; padding: 16px; }
.course-group-actions { margin: 0 0 18px; }
.course-group-add { margin: 18px 0 10px; display: grid; grid-template-columns: auto minmax(200px, 1fr) auto; align-items: center; gap: 10px; }
.task-summary { min-height: 82px; padding: 15px 22px; display: flex; align-items: center; gap: 28px; color: white; background: linear-gradient(108deg, #17295a, #263f80); }
.task-summary > div { min-width: 170px; display: flex; align-items: baseline; gap: 8px; }
.task-summary span, .task-summary small { color: #b8c1de; font-size: 10px; }
.task-summary b { margin-left: auto; color: #58d1c0; font: 700 30px/1 Consolas, monospace; }
.task-summary p { margin: 0; padding-left: 28px; border-left: 1px solid rgba(255,255,255,.16); color: #d4daeb; font-size: 11px; letter-spacing: .03em; }
.batch-action-bar { min-height: 64px; padding: 11px 18px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-bottom: 1px solid #b9dcd7; background: #f1f9f7; }
.batch-action-bar > div:first-child { display: grid; gap: 4px; }
.batch-action-bar b { color: #244a49; font-size: 12px; }
.batch-action-bar span { color: #66807f; font-size: 10px; }
.batch-action-bar > div:last-child { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px; }
.batch-action-bar .el-button + .el-button { margin-left: 0; }
.muted-action { color: #9aa1ae; font-size: 11px; }
.schedule-toolbar { min-height: 86px; padding: 12px 16px; display: flex; align-items: stretch; gap: 14px; border: 1px solid var(--line); background: white; }
.schedule-toolbar > .el-select { width: 245px; align-self: center; }
.schedule-version-strip { min-width: 0; display: flex; align-items: stretch; gap: 8px; overflow-x: auto; }
.schedule-version-strip > button { min-width: 120px; padding: 10px 14px; display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; text-align: left; border: 1px solid var(--line); background: #fafbfc; }
.schedule-version-strip > button:hover { background: white; }
.schedule-version-strip > button.active { color: white; border-color: var(--indigo); background: var(--indigo); }
.schedule-version-strip b { font: 700 14px/1.2 Consolas, monospace; }
.schedule-version-strip span, .schedule-version-strip small { font-size: 9px; }
.schedule-version-strip small { grid-column: 1 / -1; color: #9199a8; }
.schedule-version-strip > button.active small { color: #cbd3eb; }
.schedule-version-strip > span { align-self: center; color: var(--muted); font-size: 11px; }
.schedule-sheet { min-width: 0; border: 1px solid var(--line); background: white; }
.schedule-sheet-head { padding: 21px 22px; display: flex; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line); }
.schedule-sheet-head > div:first-child > span { color: var(--teal); font-size: 10px; letter-spacing: .07em; }
.schedule-sheet-head h3 { margin: 6px 0 5px; font-family: "STZhongsong", "Songti SC", serif; font-size: 21px; }
.schedule-sheet-head p { margin: 0; color: var(--muted); font-size: 10px; }
.auto-schedule-progress { padding: 13px 18px; display: grid; grid-template-columns: minmax(260px, 1fr) minmax(220px, 38%); align-items: center; gap: 20px; border-bottom: 1px solid #c9d9dc; background: #f1f7f7; }
.auto-schedule-progress > div { display: grid; gap: 3px; }
.auto-schedule-progress b { color: #24484d; font-size: 12px; font-weight: 650; }
.auto-schedule-progress span { color: var(--muted); font-size: 10px; }
.auto-schedule-progress.is-succeeded { border-bottom-color: #bedac8; background: #f1f8f3; }
.auto-schedule-progress.is-failed { border-bottom-color: #e6c5c5; background: #fff5f4; }
.auto-schedule-progress.is-failed b { color: #9d3434; }
.auto-schedule-progress .auto-schedule-issues { grid-column: 1 / -1; padding: 11px 13px; gap: 8px; border: 1px solid #e3d3aa; background: #fffdf7; }
.auto-schedule-issues-head { display: flex !important; align-items: center; justify-content: space-between; gap: 12px; }
.auto-schedule-issues ol { max-height: 240px; margin: 0; padding: 0 8px 0 21px; display: grid; gap: 6px; overflow: auto; color: #715826; font-size: 11px; line-height: 1.55; }
.schedule-search { padding: 12px 16px; display: flex; align-items: center; gap: 10px; background: #fafbfc; border-bottom: 1px solid var(--line); }
.schedule-search .el-input { width: 320px; }
.schedule-search > span { margin-left: auto; color: var(--muted); font-size: 10px; }
.timetable-scroll { width: 100%; overflow: auto; }
.timetable-grid { min-width: 1120px; display: grid; grid-template-columns: 72px repeat(7, minmax(145px, 1fr)); }
.timetable-corner, .timetable-day { min-height: 45px; display: grid; place-items: center; color: #555f72; background: #f4f6f9; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); font-size: 11px; font-weight: 650; }
.timetable-period { min-height: 88px; padding: 14px 8px; display: grid; align-content: start; justify-items: center; gap: 5px; color: var(--indigo); background: #fafbfc; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.timetable-period b { font: 700 17px/1 Consolas, monospace; }
.timetable-period span { color: var(--muted); font-size: 9px; }
.timetable-cell { min-width: 0; min-height: 88px; padding: 5px; display: grid; align-content: start; gap: 5px; position: relative; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: white; }
.timetable-cell.editable:hover { background: #f7fbfa; }
.cell-add { margin: auto; color: transparent; font-size: 9px; }
.timetable-cell.editable:hover .cell-add { color: #a0a8b4; }
.schedule-card { min-width: 0; padding: 8px 9px; display: grid; gap: 4px; position: relative; border-left: 3px solid #45bcae; color: #eaf2ff; background: linear-gradient(130deg, #263f80, #1a2e64); box-shadow: 0 4px 10px rgba(24,40,83,.12); cursor: pointer; }
.schedule-card.experiment { border-left-color: #f2b84b; background: linear-gradient(130deg, #705022, #4d3518); }
.schedule-card.experiment span { color: #ffd88a; }
.schedule-card.readonly { cursor: default; }
.schedule-card span { padding-right: 16px; color: #74d5c8; font: 700 8px/1.2 Consolas, monospace; letter-spacing: .04em; }
.schedule-card b { overflow: hidden; font-size: 11px; white-space: nowrap; text-overflow: ellipsis; }
.schedule-card small, .schedule-card i { overflow: hidden; color: #c6cfe6; font-size: 8px; font-style: normal; white-space: nowrap; text-overflow: ellipsis; }
.schedule-card > button { position: absolute; right: 4px; top: 3px; border: none; color: #b9c4df; background: transparent; font-size: 14px; }
.schedule-card > button:hover { color: white; }
.schedule-settings-drawer .el-drawer__body { padding-top: 0; }
.settings-lead { margin: 4px 0 16px; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 18px; border-left: 3px solid var(--teal); background: #f4faf9; }
.settings-lead > div:first-child { display: grid; gap: 4px; }
.settings-lead b { color: #223052; font-family: "STZhongsong", "Songti SC", serif; font-size: 17px; }
.settings-lead span { color: var(--muted); font-size: 10px; line-height: 1.6; }
.settings-lead > div:last-child { display: flex; flex-shrink: 0; gap: 8px; }
.settings-table .el-input-number { width: 76px; }
.constraint-list { display: grid; gap: 8px; }
.constraint-filter-grid { display: grid; grid-template-columns: 1.4fr repeat(4, minmax(120px, 1fr)); gap: 8px; margin-bottom: 8px; }
.constraint-result-summary { margin-bottom: 10px; color: var(--muted); font-size: 10px; text-align: right; }
.constraint-batch-form { margin-top: 16px; display: grid; gap: 10px; }
.constraint-batch-form > .el-checkbox { padding: 8px 10px; background: #f7f9fb; border-left: 3px solid #ccd8e1; }
.batch-classroom-scope { padding: 12px 14px 2px; display: grid; gap: 12px; border: 1px solid #d8e2e8; background: #fbfcfd; }
.experiment-classroom-scope { margin-bottom: 18px; padding: 12px 14px 2px; border: 1px solid #d8e2e8; background: #fbfcfd; }
.experiment-classroom-scope__title { margin-bottom: 12px; color: #34435e; font-size: 13px; font-weight: 650; }
.constraint-list article { min-width: 0; padding: 13px 15px; display: grid; grid-template-columns: minmax(230px, 1fr) minmax(170px, auto) auto; align-items: center; gap: 14px; border: 1px solid var(--line); background: #fff; }
.constraint-list article > div:first-child { min-width: 0; display: grid; gap: 4px; }
.constraint-list article span { color: var(--teal); font: 700 9px/1.2 Consolas, monospace; }
.constraint-list article b { overflow: hidden; color: #263453; font-size: 12px; white-space: nowrap; text-overflow: ellipsis; }
.constraint-list article small { color: var(--muted); font-size: 9px; }
.constraint-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.constraint-title { margin-bottom: 16px; padding: 12px 14px; color: #eef4ff; background: linear-gradient(120deg, #243d7a, #182b5d); font-size: 13px; font-weight: 650; }
.eligibility-flow { padding: 14px 18px; display: grid; grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr; align-items: center; gap: 12px; border: 1px solid var(--line); background: #f8fafc; }
.eligibility-flow > div { min-width: 0; display: grid; gap: 4px; }
.eligibility-flow span { color: var(--teal); font: 700 9px/1 Consolas, monospace; }
.eligibility-flow b { color: #2b3854; font-size: 11px; }
.eligibility-flow i { color: #aeb7c6; font-style: normal; }
.generation-notice { margin-bottom: 16px; padding: 12px 14px; color: #526078; border-left: 3px solid var(--teal); background: #f3f9f8; font-size: 10px; line-height: 1.7; }
.generation-preview { padding: 14px 18px; display: flex; align-items: baseline; gap: 8px; color: #718096; background: #f6f8fb; border: 1px solid var(--line); }
.generation-preview b { color: var(--indigo); font: 700 25px/1 Consolas, monospace; }
.generation-preview span, .generation-preview small { font-size: 10px; }
.field-hint { display: block; margin-top: 5px; color: var(--muted); font-size: 9px; }
.hours-validation { margin: -5px 0 18px; padding: 10px 13px; display: flex; align-items: center; gap: 12px; border-left: 3px solid #27846f; background: #f1f8f6; color: #46645e; font-size: 11px; }
.hours-validation b { flex-shrink: 0; color: #196b59; }
.hours-validation.invalid { border-left-color: #c75252; background: #fff3f2; color: #835353; }
.hours-validation.invalid b { color: #a83f3f; }
.option-filter-panel { margin: -3px 0 18px; padding: 11px 13px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; border: 1px solid #dce4eb; border-left: 3px solid var(--teal); background: #f8fafb; }
.option-filter-title { color: #3f5367; font-size: 10px; font-weight: 650; white-space: nowrap; }
.option-filter-panel > small { color: var(--muted); font-size: 9px; white-space: nowrap; }
.option-filter-grid { min-width: 0; display: grid; gap: 8px; }
.option-filter-grid.course { grid-template-columns: minmax(150px, 1fr) minmax(145px, .8fr) minmax(130px, .65fr); }
.option-filter-grid.course.compact { grid-template-columns: minmax(180px, 1fr) minmax(180px, .8fr); }
.option-filter-grid.classes { grid-template-columns: minmax(190px, 1.25fr) repeat(3, minmax(115px, .75fr)); }
.class-picker { width: 100%; margin-bottom: 8px; padding: 11px 12px 8px; border: 1px solid #dce4eb; background: #f8fafb; }
.class-picker-actions { min-height: 32px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.class-picker-actions > span { color: var(--muted); font-size: 9px; }
.class-picker-actions > div { display: flex; align-items: center; }
.class-picker-actions .el-button + .el-button { margin-left: 4px; }

.selection-page { min-width: 0; }
.selection-round-strip {
  min-height: 104px; padding: 10px; display: flex; gap: 9px; overflow-x: auto;
  border: 1px solid var(--line); background: white;
}
.selection-round-strip > button {
  flex: 0 0 285px; min-height: 82px; padding: 13px 15px; display: grid;
  grid-template-columns: 1fr auto; gap: 5px 12px; text-align: left;
  border: 1px solid var(--line); border-left: 3px solid #bdc3ce;
  color: var(--ink); background: #fafbfc;
}
.selection-round-strip > button:hover { background: white; }
.selection-round-strip > button.active {
  border-color: var(--indigo); border-left-color: #48c8b7;
  color: white; background: linear-gradient(115deg, #1b3067, #294584);
}
.selection-round-strip span, .selection-round-strip small {
  overflow: hidden; color: #868f9e; font-size: 9px; white-space: nowrap; text-overflow: ellipsis;
}
.selection-round-strip b {
  grid-column: 1 / -1; overflow: hidden; font-family: "STZhongsong", "Songti SC", serif;
  font-size: 14px; white-space: nowrap; text-overflow: ellipsis;
}
.selection-round-strip i {
  align-self: start; padding: 3px 7px; border-radius: 10px;
  color: #6d7583; background: #edf0f3; font-size: 9px; font-style: normal;
}
.selection-round-strip i.open { color: var(--teal); background: #e5f4f1; }
.selection-round-strip > button.active span,
.selection-round-strip > button.active small { color: #c6d0e8; }
.selection-round-strip > button.active i { color: white; background: rgba(255,255,255,.14); }
.selection-window {
  min-height: 142px; display: grid; grid-template-columns: 105px minmax(300px, 1fr) auto;
  align-items: stretch; color: white;
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(112deg, #162858, #243d7d 70%, #176b70);
  background-size: 28px 28px, 28px 28px, auto;
  overflow: hidden;
}
.window-seal {
  padding: 20px 12px; display: grid; place-content: center; justify-items: center; gap: 9px;
  border-right: 1px solid rgba(255,255,255,.13); color: #57d4c2;
}
.window-seal .el-icon { font-size: 26px; }
.window-seal span { font-size: 10px; font-weight: 700; letter-spacing: .08em; }
.window-copy { padding: 24px 27px; align-self: center; min-width: 0; }
.window-copy > span { color: #5ed4c4; font: 700 9px/1 Consolas, monospace; letter-spacing: .15em; }
.window-copy h3 {
  margin: 9px 0 8px; overflow: hidden; font-family: "STZhongsong", "Songti SC", serif;
  font-size: 22px; font-weight: 500; letter-spacing: .03em; white-space: nowrap; text-overflow: ellipsis;
}
.window-copy p { margin: 0; color: #c4cee8; font-size: 10px; }
.window-copy em {
  margin-left: 13px; padding-left: 13px; border-left: 1px solid rgba(255,255,255,.2);
  color: #edcf9a; font-style: normal;
}
.credit-meter {
  width: 310px; padding: 22px 28px; align-self: center;
  border-left: 1px solid rgba(255,255,255,.13);
}
.credit-meter > div:first-child { display: flex; align-items: baseline; gap: 7px; }
.credit-meter span, .credit-meter small { color: #c2cce5; font-size: 10px; }
.credit-meter b { margin-left: auto; color: #5bd4c3; font: 700 34px/1 Consolas, monospace; }
.credit-track { height: 5px; margin-top: 12px; overflow: hidden; background: rgba(255,255,255,.15); }
.credit-track i { height: 100%; display: block; background: linear-gradient(90deg, #49c9b7, #e3ad54); }
.credit-meter p { margin: 9px 0 0; color: #aeb9d8; font-size: 9px; }
.round-actions {
  width: 285px; padding: 23px; display: flex; flex-wrap: wrap; align-content: center;
  justify-content: flex-end; gap: 8px; border-left: 1px solid rgba(255,255,255,.13);
}
.round-actions .el-button + .el-button { margin-left: 0; }
.selection-ledger-head {
  min-height: 95px; padding: 18px 21px; display: flex; align-items: center;
  justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line);
}
.selection-ledger-head span { color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .14em; }
.selection-ledger-head h3 { margin: 7px 0 4px; font-family: "STZhongsong", "Songti SC", serif; font-size: 19px; }
.selection-ledger-head p { margin: 0; color: var(--muted); font-size: 10px; }
.capacity-number { color: var(--indigo); font: 700 13px/1 Consolas, monospace; }
.selection-timetable-card { min-width: 0; overflow: hidden; }
.selection-timetable-head,
.selection-catalog-head {
  min-height: 92px; padding: 18px 21px; display: flex; align-items: center;
  justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line);
}
.selection-timetable-head > div,
.selection-catalog-head > div { min-width: 0; }
.selection-timetable-head span,
.selection-catalog-head span {
  color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .14em;
}
.selection-timetable-head h3,
.selection-catalog-head h3 {
  margin: 7px 0 4px; font-family: "STZhongsong", "Songti SC", serif; font-size: 19px;
}
.selection-timetable-head p,
.selection-catalog-head p { margin: 0; color: var(--muted); font-size: 10px; }
.selection-preview-alert { margin: 14px 16px 0; width: auto; }
.selection-timetable-scroll { min-width: 0; overflow-x: auto; background: #f7f9fb; }
.selection-timetable-grid {
  min-width: 970px; padding: 0 12px 14px; display: grid;
  grid-template-columns: 62px repeat(7, minmax(120px, 1fr));
  position: relative;
}
.timetable-corner,
.timetable-day {
  display: flex; align-items: center; justify-content: center;
  border-bottom: 1px solid #cfd8e2; color: #566277; background: #edf2f6;
  font-size: 10px; font-weight: 700; z-index: 3;
}
.timetable-corner { grid-column: 1; grid-row: 1; gap: 4px; color: var(--indigo); }
.timetable-day { border-left: 1px solid #d8e0e8; }
.timetable-period {
  padding-right: 9px; display: flex; align-items: center; justify-content: flex-end; gap: 5px;
  border-bottom: 1px solid #dfe5eb; color: #657084; background: #f2f5f8; z-index: 1;
}
.timetable-period b { color: var(--indigo); font: 700 15px/1 Consolas, monospace; }
.timetable-period span { font-size: 8px; }
.timetable-cell {
  border-left: 1px solid #e0e6ec; border-bottom: 1px solid #e0e6ec;
  background:
    linear-gradient(135deg, rgba(37,58,115,.018) 25%, transparent 25%) 0 0 / 8px 8px,
    white;
}
.timetable-course {
  min-width: 0; padding: 4px; display: flex; flex-direction: column; gap: 3px;
  z-index: 2; pointer-events: none;
}
.timetable-course.multiple { flex-direction: row; }
.timetable-course article {
  min-width: 0; min-height: 0; flex: 1; padding: 7px 8px; overflow: hidden;
  border-left: 3px solid #566fc1; color: #283554; background: #e8edfb;
  box-shadow: 0 2px 5px rgba(28,44,84,.08);
}
.timetable-course article.tone-1 { border-left-color: #2b988b; background: #e3f2ef; }
.timetable-course article.tone-2 { border-left-color: #c1812c; background: #f8eddc; }
.timetable-course article.tone-3 { border-left-color: #8a5aa8; background: #f0e8f4; }
.timetable-course article.tone-4 { border-left-color: #3982a3; background: #e4f0f5; }
.timetable-course article.preview {
  outline: 2px dashed #d29135; outline-offset: -2px; background: #fff6df;
}
.timetable-course article.conflict {
  border-left-color: #bd3e49; outline-color: #bd3e49; background: #fde8e9;
}
.timetable-course b,
.timetable-course span,
.timetable-course small {
  display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.timetable-course b { font-size: 10px; line-height: 1.3; }
.timetable-course span { margin-top: 4px; color: #5e6880; font-size: 8px; }
.timetable-course small { margin-top: 3px; color: #697486; font-size: 8px; }
.flexible-course-row {
  padding: 13px 18px; display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  border-top: 1px solid var(--line); background: white;
}
.flexible-course-row > b { margin-right: 4px; color: #4e596d; font-size: 10px; }
.flexible-course-row > span {
  padding: 5px 8px; border: 1px solid #cad7df; color: #48606c; background: #f4f8f9;
  font-size: 9px;
}
.flexible-course-row > span.preview { border-style: dashed; border-color: #d29135; background: #fff6df; }
.selection-catalog { overflow: hidden; }
.selection-catalog-head > b {
  flex: 0 0 auto; color: var(--indigo); font: 700 18px/1 Consolas, monospace;
}
.selection-catalog-filter {
  padding: 13px 16px; display: grid; grid-template-columns: minmax(260px, 1fr) auto;
  align-items: center; gap: 12px; background: #f8fafb;
}
.selection-catalog-filter .el-segmented { --el-segmented-item-selected-bg-color: var(--indigo); }
.offering-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
.offering-ticket {
  min-width: 0; min-height: 250px; display: flex; flex-direction: column;
  border: 1px solid var(--line); background: white; box-shadow: 0 6px 18px rgba(24,36,68,.045);
}
.offering-ticket.previewing { border-color: #d49a48; box-shadow: 0 0 0 2px rgba(212,154,72,.12); }
.offering-ticket.blocked:not(.selected) { background: #fbfcfd; }
.offering-ticket > header {
  min-height: 99px; padding: 19px 20px; display: flex; justify-content: space-between;
  gap: 16px; border-bottom: 1px dashed #d7dce4; position: relative;
}
.offering-ticket > header::before,
.offering-ticket > header::after {
  content: ""; position: absolute; bottom: -7px; width: 12px; height: 12px;
  border-radius: 50%; background: var(--soft);
}
.offering-ticket > header::before { left: -7px; }
.offering-ticket > header::after { right: -7px; }
.offering-ticket header span { color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .08em; }
.offering-ticket h3 {
  margin: 8px 0 6px; font-family: "STZhongsong", "Songti SC", serif;
  font-size: 20px; font-weight: 600;
}
.offering-ticket header p { margin: 0; color: var(--muted); font-size: 11px; }
.selected-mark {
  flex: 0 0 auto; height: fit-content; padding: 5px 9px; display: flex; align-items: center; gap: 4px;
  border-radius: 13px; color: var(--teal); background: #e8f5f2; font-size: 10px; font-style: normal;
}
.ticket-schedules { min-height: 85px; padding: 14px 20px; display: grid; align-content: center; gap: 8px; }
.ticket-schedules > div { display: flex; align-items: flex-start; gap: 7px; color: #4e596d; font-size: 10px; line-height: 1.5; }
.ticket-schedules .el-icon { flex: 0 0 auto; margin-top: 1px; color: var(--indigo); }
.schedule-missing { color: #a36d22; font-size: 10px; }
.selection-block-reason {
  margin: 0 20px 12px; padding: 8px 10px; border-left: 3px solid #bd3e49;
  color: #90343d; background: #fbedee; font-size: 9px; line-height: 1.5;
}
.offering-ticket > footer {
  margin-top: auto; min-height: 65px; padding: 13px 20px; display: flex; align-items: center;
  flex-wrap: wrap; gap: 10px; background: #fafbfc; border-top: 1px solid #edf0f4;
}
.seat-meter { flex: 1; min-width: 120px; }
.seat-meter > span { display: block; margin-bottom: 7px; color: var(--muted); font-size: 9px; }
.seat-meter > div { height: 4px; overflow: hidden; background: #e2e6ec; }
.seat-meter i { height: 100%; display: block; background: var(--teal); }
.roster-summary {
  margin: 0 0 18px; padding: 16px; display: flex; align-items: center; gap: 14px;
  color: white; background: linear-gradient(115deg, #1b3067, #294584);
}
.roster-summary > div { min-width: 0; flex: 1; }
.roster-summary > .el-button { flex: 0 0 auto; }
.roster-summary > .el-icon { font-size: 28px; color: #5bd4c3; }
.roster-summary span, .roster-summary b, .roster-summary small { display: block; }
.roster-summary span { color: #59d2c1; font: 700 9px Consolas, monospace; }
.roster-summary b { margin-top: 5px; font-size: 14px; }
.roster-summary small { margin-top: 4px; color: #bec8e2; font-size: 10px; }
.roster-notice { margin-bottom: 14px; }
.proxy-course-note {
  margin-bottom: 14px; padding: 13px 15px; display: flex; align-items: center;
  justify-content: space-between; gap: 16px; border-left: 3px solid var(--teal);
  background: #f5f8fa;
}
.proxy-course-note b { font-size: 13px; }
.proxy-course-note span { color: var(--muted); font-size: 10px; }
.proxy-search { margin-bottom: 12px; display: flex; gap: 9px; }
.proxy-search .el-input { flex: 1; }
.proxy-pagination { margin-top: 14px; justify-content: flex-end; }
.proxy-dialog-footer { display: flex; align-items: center; }
.proxy-selected-count { margin-right: auto; color: var(--muted); font-size: 11px; }

.grade-page { min-width: 0; }
.grade-toolbar {
  min-height: 68px; padding: 13px 16px; display: flex; align-items: center; gap: 10px;
  border: 1px solid var(--line); background: white;
}
.grade-toolbar .el-select { width: 210px; }
.grade-toolbar > span { margin-left: auto; color: var(--muted); font-size: 10px; }
.grade-workspace {
  min-height: 650px; display: grid; grid-template-columns: 285px minmax(0, 1fr);
  border: 1px solid var(--line); background: white;
}
.grade-sheet-list {
  min-width: 0; border-right: 1px solid var(--line); background: #fafbfc;
}
.grade-sheet-list > button {
  width: 100%; min-height: 100px; padding: 16px 17px; display: grid;
  grid-template-columns: 1fr auto; gap: 6px 10px; text-align: left;
  border: none; border-bottom: 1px solid var(--line); border-left: 3px solid transparent;
  color: var(--ink); background: transparent;
}
.grade-sheet-list > button:hover { background: white; }
.grade-sheet-list > button.active { border-left-color: var(--teal); background: white; }
.grade-sheet-list span, .grade-sheet-list small {
  overflow: hidden; color: var(--muted); font-size: 9px; white-space: nowrap; text-overflow: ellipsis;
}
.grade-sheet-list b {
  grid-column: 1 / -1; overflow: hidden; font-family: "STZhongsong", "Songti SC", serif;
  font-size: 14px; white-space: nowrap; text-overflow: ellipsis;
}
.grade-sheet-list i {
  padding: 3px 7px; border-radius: 10px; color: #777f8c;
  background: #eceff3; font-size: 9px; font-style: normal;
}
.grade-sheet-list i.submitted { color: #a66b16; background: #fbefd9; }
.grade-sheet-list i.approved, .grade-sheet-list i.published { color: var(--teal); background: #e4f4f0; }
.grade-sheet-list i.returned { color: #b05252; background: #f8e7e7; }
.grade-register { min-width: 0; }
.grade-create-empty {
  min-height: 620px; display: grid; place-content: center; justify-items: center;
  padding: 30px; text-align: center;
}
.grade-create-empty > .el-icon { font-size: 50px; color: #98a5be; }
.grade-create-empty h3 { margin: 18px 0 8px; font-family: "STZhongsong", "Songti SC", serif; font-size: 23px; }
.grade-create-empty p { max-width: 440px; margin: 0 0 20px; color: var(--muted); font-size: 11px; line-height: 1.7; }
.grade-register-head {
  min-height: 108px; padding: 21px 24px; display: flex; align-items: center;
  justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line);
}
.grade-register-head span { color: var(--teal); font: 700 9px/1 Consolas, monospace; letter-spacing: .1em; }
.grade-register-head h3 { margin: 8px 0 5px; font-family: "STZhongsong", "Songti SC", serif; font-size: 22px; }
.grade-register-head p { margin: 0; color: var(--muted); font-size: 10px; }
.grade-register-head > i {
  padding: 7px 12px; border-radius: 15px; color: #657083; background: #edf0f4;
  font-size: 10px; font-style: normal;
}
.grade-register-head > i.submitted { color: #a66b16; background: #fbefd9; }
.grade-register-head > i.approved, .grade-register-head > i.published { color: var(--teal); background: #e4f4f0; }
.grade-register-head > i.returned { color: #ad4e4e; background: #f7e5e5; }
.grade-register-ruler {
  min-height: 92px; display: grid; grid-template-columns: repeat(4, 120px) 1fr;
  color: white; background:
    repeating-linear-gradient(90deg, transparent 0, transparent 23px, rgba(255,255,255,.07) 24px),
    linear-gradient(105deg, #17295a, #263f80);
}
.grade-register-ruler > div { padding: 17px 19px; border-right: 1px solid rgba(255,255,255,.14); }
.grade-register-ruler span, .grade-register-ruler b { display: block; }
.grade-register-ruler span { color: #b6c0dc; font-size: 9px; }
.grade-register-ruler b { margin-top: 7px; color: #5bd4c3; font: 700 24px/1 Consolas, monospace; }
.grade-register-ruler p { margin: 0; padding: 20px 22px; align-self: center; color: #cbd3e8; font-size: 10px; text-align: right; }
.grade-register > .el-alert { border-radius: 0; }
.grade-table-scroll { max-width: 100%; overflow-x: auto; }
.grade-entry-table { min-width: 800px; }
.grade-entry-table .el-input-number { width: 92px; }
.grade-entry-table .el-input-number .el-input__inner { text-align: center; }
.total-score { color: var(--indigo); font: 700 15px/1 Consolas, monospace; }
.total-score.excellent { color: var(--teal); }
.total-score.failed { color: #b44c4c; }
.total-score.pending { color: #a0a6b0; }
.grade-actions {
  min-height: 78px; padding: 14px 20px; display: flex; align-items: center;
  justify-content: flex-end; gap: 8px; border-top: 1px solid var(--line); background: #fafbfc;
}
.grade-actions > div { margin-right: auto; }
.grade-actions span, .grade-actions b { display: block; }
.grade-actions span { color: var(--muted); font-size: 9px; }
.grade-actions b { margin-top: 4px; font-size: 13px; }
.grade-actions .el-button + .el-button { margin-left: 0; }
.grade-weight-form { margin-top: 18px; }
.transcript-identity {
  min-height: 135px; padding: 24px 28px; display: flex; align-items: center;
  justify-content: space-between; gap: 25px; color: white;
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(112deg, #162858, #243d7d 72%, #176b70);
  background-size: 28px 28px, 28px 28px, auto;
}
.transcript-identity span { color: #5bd4c3; font: 700 9px/1 Consolas, monospace; letter-spacing: .15em; }
.transcript-identity h3 { margin: 9px 0 6px; font-family: "STZhongsong", "Songti SC", serif; font-size: 25px; }
.transcript-identity p { margin: 0; color: #c2cce5; font-size: 10px; }
.transcript-identity label { width: 265px; }
.transcript-identity label > span { display: block; margin-bottom: 7px; }
.transcript-identity .el-select { width: 100%; }
.transcript-ribbon { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); background: white; }
.transcript-ribbon > div { min-height: 85px; padding: 17px 22px; display: flex; align-items: baseline; gap: 7px; border-right: 1px solid var(--line); }
.transcript-ribbon > div:last-child { border-right: none; }
.transcript-ribbon span { color: var(--muted); font-size: 10px; }
.transcript-ribbon b { margin-left: auto; color: var(--indigo); font: 700 27px/1 Consolas, monospace; }
.transcript-ribbon small { color: var(--muted); font-size: 9px; }
.transcript-list { display: grid; gap: 10px; }
.transcript-list > article {
  min-height: 114px; padding: 18px 21px; display: grid;
  grid-template-columns: minmax(230px, 1fr) minmax(200px, 1.4fr) 105px;
  align-items: center; gap: 28px; border: 1px solid var(--line); background: white;
}
.transcript-course span { color: var(--teal); font-size: 9px; }
.transcript-course h3 { margin: 7px 0 5px; font-family: "STZhongsong", "Songti SC", serif; font-size: 18px; }
.transcript-course p { margin: 0; color: var(--muted); font-size: 10px; }
.grade-scale { height: 22px; display: grid; grid-template-columns: repeat(11, 1fr); position: relative; border-bottom: 2px solid #cfd5de; }
.grade-scale > i { border-left: 1px solid #cfd5de; }
.grade-scale > span {
  position: absolute; bottom: -12px; transform: translateX(-50%); padding: 4px 6px;
  border-radius: 9px; color: white; background: var(--indigo); font: 700 10px Consolas, monospace;
}
.grade-scale > span.excellent { background: var(--teal); }
.grade-scale > span.failed { background: #b44c4c; }
.transcript-result { padding-left: 20px; border-left: 1px solid var(--line); text-align: right; }
.transcript-result span, .transcript-result b, .transcript-result small { display: block; }
.transcript-result span { color: var(--muted); font-size: 9px; }
.transcript-result b { margin: 5px 0 3px; color: var(--indigo); font: 700 25px/1 Consolas, monospace; }
.transcript-result small { color: var(--muted); font-size: 9px; }

.exam-plan-strip { padding: 10px; display: flex; gap: 9px; overflow-x: auto; border: 1px solid var(--line); background: white; }
.exam-plan-strip button { flex: 0 0 275px; padding: 14px; display: grid; grid-template-columns: 1fr auto; gap: 6px; text-align: left; border: 1px solid var(--line); background: #fafbfc; }
.exam-plan-strip button.active { color: white; border-color: var(--indigo); background: var(--indigo); }
.exam-plan-strip b { grid-column: 1/-1; font-family: "STZhongsong","Songti SC",serif; }
.exam-plan-strip span, .exam-plan-strip small, .exam-plan-strip i { color: #8c94a3; font-size: 9px; font-style: normal; }
.exam-plan-strip button.active span, .exam-plan-strip button.active small { color: #c5cee5; }
.exam-board { border: 1px solid var(--line); background: white; }
.exam-board > header { padding: 22px 24px; display: flex; align-items: center; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line); }
.exam-board header span { color: var(--teal); font: 700 9px Consolas,monospace; letter-spacing: .13em; }
.exam-board header h3 { margin: 7px 0 5px; font: 600 21px "STZhongsong","Songti SC",serif; }
.exam-board header p { margin: 0; color: var(--muted); font-size: 10px; }
.exam-timeline { padding: 10px 22px 24px 42px; }
.exam-timeline article { min-height: 108px; display: grid; grid-template-columns: 120px minmax(220px,1fr) 210px 120px; align-items: center; gap: 20px; position: relative; border-bottom: 1px solid var(--line); }
.exam-timeline article::before { content:""; position:absolute; left:-24px; width:9px; height:9px; border:3px solid white; border-radius:50%; background:var(--teal); box-shadow:0 0 0 1px var(--teal); }
.exam-timeline article::after { content:""; position:absolute; left:-20px; top:0; bottom:0; width:1px; background:#cdd4df; z-index:-1; }
.exam-timeline time b, .exam-timeline time span { display:block; }
.exam-timeline time b { color:var(--indigo); font:700 15px Consolas,monospace; }
.exam-timeline time span { margin-top:5px; color:var(--muted); font-size:9px; }
.exam-timeline article > div > span { color:var(--teal); font-size:9px; }
.exam-timeline h4 { margin:6px 0 4px; font-size:14px; }
.exam-timeline p { margin:0; color:var(--muted); font-size:9px; }
.exam-staff { padding-left:18px; border-left:1px solid var(--line); }
.exam-staff b,.exam-staff small { display:block; margin-top:5px; font-size:10px; }
.exam-staff small { color:var(--muted); }
.exam-row-actions { text-align:right; }
.exam-ticket-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.exam-ticket-grid article { min-height:180px; display:grid; grid-template-columns:105px 1fr; border:1px solid var(--line); background:white; overflow:hidden; }
.exam-ticket-date { padding:20px 14px; display:grid; place-content:center; text-align:center; color:white; background:linear-gradient(145deg,#182d64,#21706f); }
.exam-ticket-date b { font:700 17px Consolas,monospace; }
.exam-ticket-date span { margin-top:8px; color:#bfe0da; font-size:9px; }
.exam-ticket-grid article > div:nth-child(2) { padding:24px 20px; }
.exam-ticket-grid article > div:nth-child(2) span { color:var(--teal); font-size:9px; }
.exam-ticket-grid h3 { margin:9px 0 7px; font:600 19px "STZhongsong","Songti SC",serif; }
.exam-ticket-grid p { margin:0; color:var(--muted); font-size:10px; }
.exam-ticket-grid footer { grid-column:1/-1; padding:12px 17px; display:flex; align-items:center; gap:7px; border-top:1px dashed var(--line); color:#586275; font-size:10px; }

.status-identity {
  min-height: 130px; padding: 24px 28px; display: flex; align-items: center;
  justify-content: space-between; gap: 28px; color: white;
  background:
    linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px),
    linear-gradient(135deg, #172858, #263e7c 65%, #176d70);
  background-size: 35px 35px, auto;
}
.status-identity span { color: #70ded0; font: 700 9px Consolas, monospace; letter-spacing: .14em; }
.status-identity b { display: block; margin: 8px 0 6px; font: 600 27px "STZhongsong","Songti SC",serif; }
.status-identity p { margin: 0; color: #c4cee6; font-size: 10px; }
.status-available { min-width: 290px; padding: 17px 20px; border: 1px solid rgba(255,255,255,.15); }
.status-available > span { display: block; margin-bottom: 11px; }
.status-available strong { display: inline-block; margin-right: 7px; padding: 7px 12px; color: white; border: 1px solid rgba(112,222,208,.55); font-size: 11px; }
.status-available em { color: #c4cee6; font-size: 10px; font-style: normal; }
.status-review-summary { display: grid; grid-template-columns: repeat(3, 170px) 1fr; color: white; background: #182955; }
.status-review-summary > div { min-height: 104px; padding: 20px 24px; border-right: 1px solid rgba(255,255,255,.12); }
.status-review-summary span { display: block; color: #9eacd0; font-size: 9px; }
.status-review-summary b { display: inline-block; margin-top: 12px; color: #65d7c8; font: 700 28px/1 Consolas, monospace; }
.status-review-summary small { margin-left: 5px; color: #aeb9d6; font-size: 9px; }
.status-review-summary p { margin: 0; padding: 24px 28px; align-self: center; color: #bdc7e0; font-size: 10px; line-height: 1.7; }
.status-folio-list { display: grid; gap: 13px; min-height: 180px; }
.status-folio-list > article { border: 1px solid var(--line); background: white; box-shadow: 0 5px 18px rgba(30,44,77,.035); }
.status-folio-list > article.actionable { border-left: 3px solid var(--teal); }
.status-folio-list article > header { min-height: 100px; display: grid; grid-template-columns: 150px 1fr auto; align-items: center; gap: 24px; padding: 18px 22px; border-bottom: 1px solid var(--line); }
.folio-number { align-self: stretch; display: grid; place-content: center; padding-right: 22px; border-right: 1px dashed var(--line); }
.folio-number span { color: var(--teal); font: 700 8px Consolas,monospace; letter-spacing: .12em; }
.folio-number b { margin-top: 8px; color: var(--indigo); font: 700 16px Consolas,monospace; }
.folio-person > span { color: var(--teal); font-size: 9px; }
.folio-person h3 { margin: 7px 0 5px; font: 600 18px "STZhongsong","Songti SC",serif; }
.folio-person p { margin: 0; color: var(--muted); font-size: 9px; }
.folio-reason { padding: 17px 22px; display: grid; grid-template-columns: 125px 1fr; gap: 25px; border-bottom: 1px solid var(--line); }
.folio-reason span { color: var(--muted); font-size: 9px; }
.folio-reason p { margin: 0; color: #40495a; font-size: 11px; line-height: 1.7; }
.approval-track { padding: 20px 22px; display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--line); }
.approval-track > div { min-height: 55px; display: grid; grid-template-columns: 36px 1fr; align-content: center; position: relative; }
.approval-track > div:not(:last-child)::after { content:""; position:absolute; left:30px; right:8px; top:17px; height:1px; background:#d9dee7; }
.approval-track i { width: 34px; height: 34px; display: grid; place-items: center; z-index:1; color:#8d95a4; border:1px solid #cfd5df; border-radius:50%; background:white; font:normal 700 10px Consolas,monospace; }
.approval-track b, .approval-track small { grid-column: 2; padding-left: 8px; }
.approval-track b { margin-top: -31px; font-size: 11px; }
.approval-track small { margin-top: 4px; color: var(--muted); font-size: 8px; }
.approval-track .done i { color:white; border-color:var(--teal); background:var(--teal); }
.approval-track .done::after { background:var(--teal) !important; }
.approval-track .active i { color:white; border-color:var(--indigo); background:var(--indigo); box-shadow:0 0 0 4px #e9edf7; }
.approval-track .stopped i { color:white; border-color:#b44c4c; background:#b44c4c; }
.status-folio-list article > footer { min-height: 65px; padding: 12px 22px; display:flex; align-items:center; justify-content:space-between; gap:18px; background:#fafbfc; }
.review-comment span, .review-comment b { display:block; }
.review-comment span { color:var(--muted); font-size:8px; }
.review-comment b { margin-top:5px; color:#515a6c; font-size:10px; }
.folio-actions { display:flex; gap:8px; }
.folio-actions .el-button + .el-button { margin-left:0; }
.review-target { margin-bottom: 18px; padding: 16px 18px; border-left: 3px solid var(--teal); background:#f5f7fa; }
.review-target span { color:var(--teal); font:700 9px Consolas,monospace; }
.review-target b { display:block; margin:6px 0 4px; font-size:14px; }
.review-target p { margin:0; color:var(--muted); font-size:9px; }

.graduation-batch-strip { padding:10px; display:flex; gap:9px; overflow-x:auto; border:1px solid var(--line); background:white; }
.graduation-batch-strip button { flex:0 0 290px; padding:14px; display:grid; grid-template-columns:1fr auto; gap:6px; text-align:left; border:1px solid var(--line); background:#fafbfc; }
.graduation-batch-strip button.active { color:white; border-color:var(--indigo); background:var(--indigo); }
.graduation-batch-strip b { grid-column:1/-1; font:600 15px "STZhongsong","Songti SC",serif; }
.graduation-batch-strip span,.graduation-batch-strip small,.graduation-batch-strip i { color:#8b93a2; font-size:9px; font-style:normal; }
.graduation-batch-strip button.active span,.graduation-batch-strip button.active small { color:#c5cee5; }
.graduation-workbench { border:1px solid var(--line); background:white; }
.graduation-workbench > header { padding:21px 24px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.graduation-workbench header span { color:var(--teal); font:700 9px Consolas,monospace; letter-spacing:.13em; }
.graduation-workbench header h3 { margin:7px 0 5px; font:600 21px "STZhongsong","Songti SC",serif; }
.graduation-workbench header p { margin:0; color:var(--muted); font-size:9px; }
.graduation-summary { display:grid; grid-template-columns:repeat(4,1fr); color:white; background:linear-gradient(110deg,#172958,#273e7c 70%,#176c70); }
.graduation-summary > div { min-height:82px; padding:17px 21px; border-right:1px solid rgba(255,255,255,.12); }
.graduation-summary span { display:block; color:#aeb8d7; font-size:8px; }
.graduation-summary b { display:inline-block; margin-top:10px; color:#66d9ca; font:700 24px/1 Consolas,monospace; }
.graduation-summary small { margin-left:5px; color:#bfc8df; font-size:8px; }
.graduation-filter { padding:13px 18px; display:flex; align-items:center; gap:9px; border-bottom:1px solid var(--line); background:#fafbfc; }
.graduation-filter .el-input { width:300px; }
.graduation-filter .el-select { width:155px; }
.graduation-filter > span { margin-left:auto; color:var(--muted); font-size:9px; }
.graduation-result-list { padding:0 20px 18px; }
.graduation-result-list article { min-height:105px; display:grid; grid-template-columns:minmax(200px,1.2fr) 170px 185px 130px 70px; align-items:center; gap:20px; border-bottom:1px solid var(--line); }
.graduation-student span { color:var(--teal); font-size:8px; }
.graduation-student h4 { margin:6px 0 4px; font-size:14px; }
.graduation-student p { margin:0; color:var(--muted); font-size:8px; }
.credit-progress span,.course-clearance span { color:var(--muted); font-size:8px; }
.credit-progress b,.course-clearance b { display:block; margin:7px 0; color:var(--indigo); font:700 15px Consolas,monospace; }
.course-clearance { padding-left:17px; border-left:1px solid var(--line); }
.course-clearance small { display:block; max-width:180px; color:#8e5960; font-size:8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.graduation-conclusion { padding:12px; display:grid; grid-template-columns:24px 1fr; gap:2px 7px; color:#9a555b; border:1px solid #ead7d9; background:#fffafa; }
.graduation-conclusion.eligible { color:#21796d; border-color:#cbe4df; background:#f6fbfa; }
.graduation-conclusion .el-icon { grid-row:1/3; align-self:center; font-size:20px; }
.graduation-conclusion span { font-size:9px; font-weight:700; }
.graduation-conclusion small { font-size:7px; opacity:.7; }
.graduation-certificate { overflow:hidden; border:1px solid var(--line); background:white; box-shadow:0 12px 35px rgba(24,41,85,.07); }
.graduation-certificate > header { min-height:82px; padding:21px 28px; display:flex; align-items:center; justify-content:space-between; color:white; background:linear-gradient(110deg,#172958,#263e7c 70%,#176c70); }
.graduation-certificate > header span { color:#73dfd1; font:700 10px Consolas,monospace; letter-spacing:.18em; }
.graduation-certificate > header i { font:normal 700 28px "STZhongsong","Songti SC",serif; }
.certificate-person { display:grid; grid-template-columns:repeat(3,1fr); border-bottom:1px solid var(--line); }
.certificate-person > div { padding:20px 28px; border-right:1px solid var(--line); }
.certificate-person span,.certificate-person b { display:block; }
.certificate-person span { color:var(--muted); font-size:8px; }
.certificate-person b { margin-top:7px; font-size:14px; }
.certificate-conclusion { min-height:145px; padding:28px; display:flex; align-items:center; justify-content:center; gap:20px; color:#a14e55; background:#fffafa; border-bottom:1px solid var(--line); }
.certificate-conclusion.eligible { color:#19796b; background:#f5fbf9; }
.certificate-conclusion .el-icon { font-size:48px; }
.certificate-conclusion span { font-size:9px; letter-spacing:.08em; }
.certificate-conclusion h3 { margin:7px 0 5px; font:600 27px "STZhongsong","Songti SC",serif; }
.certificate-conclusion p { margin:0; color:var(--muted); font-size:9px; }
.certificate-metrics { display:grid; grid-template-columns:repeat(3,1fr); }
.certificate-metrics > div { min-height:115px; padding:23px 28px; border-right:1px solid var(--line); }
.certificate-metrics span { display:block; color:var(--muted); font-size:8px; }
.certificate-metrics b { display:block; margin:10px 0; color:var(--indigo); font:700 22px Consolas,monospace; }
.certificate-metrics p { margin:0; color:var(--muted); font-size:8px; }
.graduation-certificate > footer { padding:20px 28px; display:grid; gap:13px; background:#fafbfc; }
.graduation-certificate > footer span,.graduation-certificate > footer b { display:block; }
.graduation-certificate > footer span { color:var(--muted); font-size:8px; }
.graduation-certificate > footer b { margin-top:5px; font-size:10px; }

.degree-batch-strip { padding:10px; display:flex; gap:9px; overflow-x:auto; border:1px solid var(--line); background:white; }
.degree-batch-strip button { flex:0 0 290px; padding:14px; display:grid; grid-template-columns:1fr auto; gap:6px; text-align:left; border:1px solid var(--line); background:#fafbfc; }
.degree-batch-strip button.active { color:white; border-color:#8b692d; background:linear-gradient(120deg,#263968,#8b692d); }
.degree-batch-strip b { grid-column:1/-1; font:600 15px "STZhongsong","Songti SC",serif; }
.degree-batch-strip span,.degree-batch-strip small,.degree-batch-strip i { color:#8b93a2; font-size:9px; font-style:normal; }
.degree-batch-strip button.active span,.degree-batch-strip button.active small { color:#e3d8bd; }
.degree-workbench { border:1px solid var(--line); background:white; }
.degree-workbench > header { padding:21px 24px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.degree-workbench header span { color:#a27b36; font:700 9px Consolas,monospace; letter-spacing:.13em; }
.degree-workbench header h3 { margin:7px 0 5px; font:600 21px "STZhongsong","Songti SC",serif; }
.degree-workbench header p { margin:0; color:var(--muted); font-size:9px; }
.degree-summary { display:grid; grid-template-columns:repeat(4,1fr); color:white; background:linear-gradient(110deg,#182957,#2d4178 67%,#8b692d); }
.degree-summary > div { min-height:82px; padding:17px 21px; border-right:1px solid rgba(255,255,255,.12); }
.degree-summary span { display:block; color:#c3c9dc; font-size:8px; }
.degree-summary b { display:block; margin-top:10px; color:#e5c87f; font:700 24px Consolas,monospace; }
.degree-result-list { padding:0 20px 18px; }
.degree-result-list article { min-height:105px; display:grid; grid-template-columns:minmax(190px,1.2fr) 150px minmax(180px,1fr) 125px 70px; align-items:center; gap:20px; border-bottom:1px solid var(--line); }
.degree-result-list article > div:first-child span { color:#a27b36; font-size:8px; }
.degree-result-list h4 { margin:6px 0 4px; font-size:14px; }
.degree-result-list p { margin:0; color:var(--muted); font-size:8px; }
.degree-result-list article > div:nth-child(2) span,.degree-rule-note span { color:var(--muted); font-size:8px; }
.degree-result-list article > div:nth-child(2) b { display:block; margin:7px 0; color:var(--indigo); font:700 20px Consolas,monospace; }
.degree-result-list article > div:nth-child(2) small { color:var(--muted); font-size:8px; }
.degree-rule-note { padding-left:16px; border-left:1px solid var(--line); }
.degree-rule-note b { display:block; margin-top:7px; color:#5f6879; font-size:9px; line-height:1.5; }
.degree-result-chip { padding:11px; display:grid; grid-template-columns:22px 1fr; color:#9a555b; border:1px solid #ead7d9; background:#fffafa; }
.degree-result-chip.granted { color:#7b622d; border-color:#dfd1aa; background:#fdfbf5; }
.degree-result-chip .el-icon { grid-row:1/3; align-self:center; font-size:17px; }
.degree-result-chip b { font-size:9px; }
.degree-result-chip small { font-size:7px; opacity:.7; }
.degree-certificate { min-height:380px; display:grid; grid-template-columns:220px 1fr; border:1px solid var(--line); background:white; box-shadow:0 12px 35px rgba(24,41,85,.07); }
.degree-seal { display:grid; place-content:center; gap:16px; text-align:center; color:#c7a75d; background:linear-gradient(150deg,#172858,#2b3f76 70%,#80622b); }
.degree-seal .el-icon { margin:auto; font-size:70px; }
.degree-seal span { font:700 9px Consolas,monospace; letter-spacing:.17em; }
.degree-copy { padding:45px 48px; }
.degree-copy > span { color:#a27b36; font:700 9px Consolas,monospace; letter-spacing:.12em; }
.degree-copy h3 { margin:15px 0 10px; color:#9c555b; font:600 34px "STZhongsong","Songti SC",serif; }
.degree-certificate.granted .degree-copy h3 { color:#80652c; }
.degree-copy > p { margin:0; color:#596274; font-size:12px; }
.degree-copy dl { margin:32px 0; display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line); }
.degree-copy dl div { padding:17px 20px; border-right:1px solid var(--line); }
.degree-copy dt { color:var(--muted); font-size:8px; }
.degree-copy dd { margin:7px 0 0; color:var(--indigo); font:700 16px Consolas,monospace; }
.degree-copy footer { padding-top:18px; border-top:1px solid var(--line); }
.degree-copy footer span,.degree-copy footer b { display:block; }
.degree-copy footer span { color:var(--muted); font-size:8px; }
.degree-copy footer b { margin-top:7px; font-size:10px; }

.clearance-batch-strip { padding:10px; display:flex; gap:9px; overflow-x:auto; border:1px solid var(--line); background:white; }
.clearance-batch-strip button { flex:0 0 300px; padding:14px; display:grid; grid-template-columns:1fr auto; gap:6px; text-align:left; border:1px solid var(--line); background:#fafbfc; }
.clearance-batch-strip button.active { color:white; border-color:var(--indigo); background:linear-gradient(120deg,#182958,#234477 66%,#19736f); }
.clearance-batch-strip b { grid-column:1/-1; font:600 15px "STZhongsong","Songti SC",serif; }
.clearance-batch-strip span,.clearance-batch-strip small,.clearance-batch-strip i { color:#8b93a2; font-size:9px; font-style:normal; }
.clearance-batch-strip button.active span,.clearance-batch-strip button.active small { color:#c4d6dd; }
.clearance-workbench { border:1px solid var(--line); background:white; }
.clearance-workbench > header { padding:21px 24px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.clearance-workbench header span { color:var(--teal); font:700 9px Consolas,monospace; letter-spacing:.13em; }
.clearance-workbench header h3 { margin:7px 0 5px; font:600 21px "STZhongsong","Songti SC",serif; }
.clearance-workbench header p { margin:0; color:var(--muted); font-size:9px; }
.clearance-item-legend { display:flex; overflow-x:auto; color:white; background:linear-gradient(105deg,#182958,#29417c 70%,#19736f); }
.clearance-item-legend > div { flex:1 0 180px; min-height:80px; padding:16px 20px; border-right:1px solid rgba(255,255,255,.12); }
.clearance-item-legend span,.clearance-item-legend b,.clearance-item-legend small { display:block; }
.clearance-item-legend span { color:#64d7c8; font:700 8px Consolas,monospace; }
.clearance-item-legend b { margin:7px 0 5px; font-size:10px; }
.clearance-item-legend small { color:#bfc9e1; font-size:8px; }
.clearance-ledgers { padding:18px; display:grid; gap:14px; background:#f5f7fa; }
.clearance-ledgers > article { border:1px solid var(--line); background:white; }
.clearance-ledgers article > header { padding:16px 20px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); }
.clearance-ledgers header span { color:var(--teal); font-size:8px; }
.clearance-ledgers header h4 { margin:5px 0 3px; font-size:14px; }
.clearance-ledgers header p { margin:0; color:var(--muted); font-size:8px; }
.clearance-ledgers header > b { color:var(--indigo); font:700 22px Consolas,monospace; }
.clearance-record-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); }
.clearance-record-grid > div { min-height:125px; padding:18px; display:grid; grid-template-columns:24px 1fr; align-content:start; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.clearance-record-grid .el-icon { grid-row:1/4; color:#bbc1cc; font-size:18px; }
.clearance-record-grid > div.done .el-icon { color:var(--teal); }
.clearance-record-grid span { color:var(--muted); font-size:8px; }
.clearance-record-grid b { margin:6px 0 4px; font-size:10px; }
.clearance-record-grid small { color:#a06a6e; font-size:8px; }
.clearance-record-grid > div.done small { color:#318276; }
.clearance-record-grid > div > div { grid-column:1/-1; margin-top:13px; }
.clearance-record-grid .el-button + .el-button { margin-left:5px; }
.clearance-pass { border:1px solid var(--line); background:white; }
.clearance-pass > header { min-height:125px; padding:25px 28px; display:flex; align-items:center; justify-content:space-between; color:white; background:linear-gradient(115deg,#182958,#2a407c 68%,#19736f); }
.clearance-pass header span { color:#67d9ca; font:700 9px Consolas,monospace; letter-spacing:.14em; }
.clearance-pass header h3 { margin:9px 0 6px; font:600 24px "STZhongsong","Songti SC",serif; }
.clearance-pass header p { margin:0; color:#c1cce3; font-size:9px; }
.clearance-pass header > b { font:700 30px Consolas,monospace; }
.clearance-student-list { padding:12px 26px 25px; }
.clearance-student-list article { min-height:90px; display:grid; grid-template-columns:45px 1fr auto; align-items:center; gap:16px; position:relative; border-bottom:1px solid var(--line); }
.clearance-student-list article:not(:last-child)::after { content:""; position:absolute; left:17px; top:62px; bottom:-29px; width:1px; background:#d8dde6; }
.clearance-student-list i { width:35px; height:35px; display:grid; place-items:center; z-index:1; color:#8c94a3; border:1px solid #cfd5df; border-radius:50%; background:white; font:normal 700 10px Consolas,monospace; }
.clearance-student-list article.done i { color:white; border-color:var(--teal); background:var(--teal); }
.clearance-student-list article > div span { color:var(--teal); font-size:8px; }
.clearance-student-list h4 { margin:5px 0 3px; font-size:12px; }
.clearance-student-list p { margin:0; color:var(--muted); font-size:8px; }
.clearance-form-head { margin:10px 0; display:flex; align-items:center; justify-content:space-between; }
.clearance-form-list { display:grid; gap:8px; max-height:340px; overflow-y:auto; }
.clearance-form-list > div { display:grid; grid-template-columns:110px 1fr 1fr 130px 80px 45px; gap:8px; align-items:center; }

.login-page { min-height: 100vh; display: grid; grid-template-columns: minmax(440px, 1.2fr) minmax(420px, .8fr); background: white; }
.login-story { min-height: 100vh; padding: 54px clamp(45px, 6vw, 90px); display: flex; flex-direction: column; color: white; background: linear-gradient(142deg, #13224d, #243a77 62%, #176b71); overflow: hidden; position: relative; }
.login-story::before { content: ""; position: absolute; inset: 0; opacity: .28; background-image: linear-gradient(rgba(255,255,255,.06) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.06) 1px, transparent 1px); background-size: 46px 46px; }
.story-brand, .story-copy, .schedule-signature, .story-foot { position: relative; z-index: 1; }
.story-brand { display: flex; align-items: center; gap: 16px; }
.story-brand strong { display: block; font-family: "STZhongsong", "Songti SC", serif; font-size: 25px; letter-spacing: .15em; }
.story-brand small { display: block; margin-top: 5px; color: #b7c1e2; font: 9px Consolas, monospace; letter-spacing: .17em; }
.story-copy { margin: auto 0 35px; }
.eyebrow { color: #5bd2c1; font-size: 11px; font-weight: 700; letter-spacing: .18em; }
.story-copy h1 { margin: 17px 0 20px; font-family: "STZhongsong", "Songti SC", serif; font-size: clamp(34px, 4vw, 55px); line-height: 1.34; font-weight: 500; letter-spacing: .03em; }
.story-copy p { max-width: 600px; margin: 0; color: #c4cce5; font-size: 14px; line-height: 1.8; }
.schedule-signature { width: min(600px, 90%); display: grid; grid-template-columns: repeat(5, 1fr); border-top: 1px solid rgba(255,255,255,.18); border-left: 1px solid rgba(255,255,255,.18); }
.schedule-signature div { aspect-ratio: 2.05; border-right: 1px solid rgba(255,255,255,.18); border-bottom: 1px solid rgba(255,255,255,.18); }
.schedule-signature div.active { display: grid; place-items: center; color: white; background: rgba(50,193,173,.52); font-size: 10px; }
.story-foot { margin: 20px 0 0; color: #9da9cc; font-size: 11px; letter-spacing: .08em; }
.login-panel { display: grid; place-items: center; padding: 45px; }
.login-form { width: min(390px, 100%); }
.form-intro { margin-bottom: 36px; }
.form-intro span { color: var(--teal); font-size: 12px; font-weight: 700; }
.form-intro h2 { margin: 8px 0 8px; font-family: "STZhongsong", "Songti SC", serif; font-size: 29px; }
.form-intro p { margin: 0; color: var(--muted); font-size: 13px; }
.login-form label { display: block; margin-bottom: 20px; }
.login-form label > span { display: block; margin-bottom: 8px; color: #525b6d; font-size: 12px; font-weight: 650; }
.public-timetable-link { display: block; margin: 14px 0 18px; color: #176b87; font-size: 13px; font-weight: 650; text-align: center; text-decoration: none; }
.account-activation-link { display: block; margin: -8px 0 18px; color: #315b73; font-size: 13px; font-weight: 650; text-align: center; text-decoration: none; }
.login-submit { width: 100%; margin-top: 6px; height: 46px; }
.sso-login-submit { width: 100%; height: 46px; border-color: #176b87; color: #176b87; font-weight: 650; }
.login-divider { display: flex; align-items: center; gap: 12px; margin: 16px 0; color: #9aa4b2; font-size: 12px; }
.login-divider::before, .login-divider::after { content: ""; flex: 1; height: 1px; background: #e5e9ef; }
.sso-callback-page { min-height: 100vh; display: grid; place-content: center; justify-items: center; padding: 24px; background: #f4f7fa; color: #263445; text-align: center; }
.sso-callback-page h1 { margin: 18px 0 8px; font-size: 22px; }
.sso-callback-page p { margin: 0; color: var(--muted); }
.sso-binding-page { min-height: 100vh; display: grid; place-items: center; padding: 28px; background: radial-gradient(circle at top left, #e3f5f2, transparent 42%), #f4f7fa; }
.sso-binding-card { width: min(470px, 100%); padding: 38px; border: 1px solid #e3e8ee; border-radius: 18px; background: #fff; box-shadow: 0 20px 55px rgba(35, 57, 78, .12); }
.sso-binding-card .brand-mark { margin-bottom: 24px; }
.sso-binding-card h1 { margin: 8px 0 12px; font-family: "STZhongsong", "Songti SC", serif; font-size: 28px; }
.binding-description { margin: 0 0 26px; color: var(--muted); line-height: 1.75; }
.binding-description strong { color: #176b87; }
.sso-binding-card label { display: block; margin-bottom: 18px; }
.sso-binding-card label > span { display: block; margin-bottom: 8px; color: #525b6d; font-size: 12px; font-weight: 650; }
.binding-submit { width: 100%; height: 46px; }
.binding-security-note { margin: 18px 0 10px; color: #7b8794; font-size: 12px; line-height: 1.65; }
.sso-binding-card > a { color: #315b73; font-size: 13px; font-weight: 650; text-decoration: none; }

@media (max-width: 1100px) {
  .desktop-navigation { padding-inline: 20px; }
  .horizontal-menu.el-menu--horizontal > .el-menu-item,
  .horizontal-menu.el-menu--horizontal > .el-sub-menu .el-sub-menu__title { padding-inline: 12px; }
  .metric-grid { grid-template-columns: repeat(2, 1fr); }
  .dashboard-grid { grid-template-columns: 1fr; }
  .login-page { grid-template-columns: 1fr 430px; }
  .login-story { padding-inline: 42px; }
}

@media (max-width: 980px) {
  .app-header { box-shadow: 0 3px 14px rgba(19,34,73,.1); }
  .main-area { width: 100%; }
  .mobile-mask { position: fixed; inset: 0; z-index: 25; background: rgba(13,24,48,.52); }
  .desktop-only { display: none; }
  .mobile-only { display: inline-grid; place-items: center; }
  .topbar { height: 66px; padding: 0 16px; gap: 13px; }
  .top-brand { min-width: 0; padding-right: 0; border-right: none; }
  .top-brand .brand-mark { width: 27px; height: 27px; }
  .top-brand strong { font-size: 17px; }
  .top-brand small { display: none; }
  .workspace-context { display: none; }
  .user-copy { display: none; }
  .avatar { width: 32px; height: 32px; font-size: 12px; }
  .topbar .user-block { gap: 4px; }
  .content { padding: 18px 14px 35px; }
  .term-hero { min-height: 220px; padding: 25px; flex-direction: column; align-items: flex-start; justify-content: flex-end; }
  .term-hero button { margin: 22px 0 0; width: 100%; }
  .metric-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .metric-card { padding: 15px; min-height: 90px; }
  .metric-card .el-icon { display: none; }
  .dashboard-grid { gap: 10px; }
  .work-card { padding: 21px; }
  .foundation-list > div { grid-template-columns: 72px 1fr; }
  .foundation-list i { display: none; }
  .page-intro { align-items: flex-end; }
  .page-intro p { display: none; }
  .registry-switch { grid-template-columns: 1fr 1fr; }
  .registry-switch button { padding: 17px; }
  .registry-total { grid-column: 1 / -1; display: flex; align-items: center; gap: 8px; min-height: 54px; }
  .registry-total strong { margin-left: auto; font-size: 22px; }
  .registry-banner { grid-template-columns: 1fr; }
  .registry-banner > div:first-child { min-height: 98px; padding: 19px; }
  .registry-banner .registry-total { grid-column: auto; min-height: 54px; border-left: none; border-top: 1px solid rgba(255,255,255,.14); }
  .filter-bar > .el-input { width: 100%; }
  .filter-bar > .el-select { flex: 1 1 140px; width: auto; }
  .course-ledger { min-height: auto; display: block; }
  .maintenance-scope { grid-template-columns: 1fr 1fr; }
  .maintenance-scope p { grid-column: 1 / -1; padding: 12px 18px; border-top: 1px solid rgba(255,255,255,.13); }
  .ledger-label { width: 100%; }
  .ledger-rule { overflow: visible; }
  .ledger-rule span { padding: 0; white-space: nowrap; }
  .data-card { overflow: hidden; }
  .curriculum-filter > .el-input { width: 100%; }
  .curriculum-filter > .el-select { flex: 1 1 140px; width: auto; }
  .curriculum-workspace { display: block; }
  .plan-list { max-height: 310px; overflow-y: auto; border-right: none; border-bottom: 1px solid var(--line); }
  .plan-pagination { position: sticky; bottom: 0; background: #fafbfc; }
  .plan-detail { padding: 18px 14px; }
  .plan-detail-head { display: block; }
  .plan-actions { margin-top: 16px; justify-content: flex-start; }
  .plan-metrics { grid-template-columns: 1fr 1fr; }
  .plan-metrics > div:nth-child(2) { border-right: none; }
  .plan-metrics > div:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .curriculum-module > header { align-items: flex-start; flex-wrap: wrap; }
  .curriculum-module > header p { order: 3; width: 100%; }
  .module-toolbar { align-items: flex-start; flex-direction: column; gap: 12px; }
  .curriculum-view-actions { width: 100%; justify-content: space-between; }
  .semester-view { grid-template-columns: 1fr; }
  .course-group-manager { grid-template-columns: 1fr; }
  .course-group-manager > aside { max-height: 220px; overflow-y: auto; border-right: none; border-bottom: 1px solid var(--line); }
  .course-group-add { grid-template-columns: 1fr; align-items: stretch; }
  .task-summary { align-items: flex-start; flex-direction: column; gap: 12px; }
  .task-summary > div { width: 100%; }
  .task-summary p { padding: 12px 0 0; border-left: none; border-top: 1px solid rgba(255,255,255,.16); line-height: 1.6; }
  .batch-action-bar { align-items: flex-start; flex-direction: column; }
  .batch-action-bar > div:last-child { justify-content: flex-start; }
  .option-filter-panel { grid-template-columns: 1fr; }
  .option-filter-grid.course,
  .option-filter-grid.course.compact,
  .option-filter-grid.classes { grid-template-columns: 1fr 1fr; }
  .class-picker-actions { align-items: flex-start; flex-direction: column; gap: 2px; }
  .schedule-toolbar { display: block; }
  .schedule-toolbar > .el-select { width: 100%; }
  .schedule-version-strip { margin-top: 10px; }
  .schedule-sheet-head { display: block; }
  .schedule-sheet-head .plan-actions { margin-top: 15px; }
  .auto-schedule-progress { grid-template-columns: 1fr; gap: 10px; }
  .schedule-search { flex-wrap: wrap; }
  .schedule-search .el-input { width: 100%; }
  .schedule-search > span { width: 100%; margin-left: 0; }
  .settings-lead { align-items: stretch; flex-direction: column; }
  .settings-lead > div:last-child { flex-wrap: wrap; }
  .constraint-list article { grid-template-columns: 1fr; }
  .constraint-filter-grid { grid-template-columns: 1fr; }
  .constraint-badges { justify-content: flex-start; }
  .eligibility-flow { grid-template-columns: 1fr; }
  .eligibility-flow i { display: none; }
  .selection-window { grid-template-columns: 82px 1fr; }
  .credit-meter, .round-actions {
    grid-column: 1 / -1; width: auto; border-top: 1px solid rgba(255,255,255,.13);
    border-left: none;
  }
  .round-actions { justify-content: flex-start; }
  .selection-catalog-filter { grid-template-columns: 1fr; }
  .selection-catalog-filter .el-segmented { width: 100%; }
  .offering-grid { grid-template-columns: 1fr; }
  .grade-workspace { display: block; }
  .grade-sheet-list { max-height: 300px; overflow-y: auto; border-right: none; border-bottom: 1px solid var(--line); }
  .grade-register-ruler { grid-template-columns: repeat(4, 1fr); }
  .grade-register-ruler > div { padding: 14px; }
  .grade-register-ruler p { grid-column: 1 / -1; padding: 10px 14px; text-align: left; border-top: 1px solid rgba(255,255,255,.14); }
  .transcript-list > article { grid-template-columns: 1fr 120px; }
  .grade-scale { grid-column: 1 / -1; grid-row: 2; }
  .transcript-result { grid-column: 2; grid-row: 1; }
  .exam-timeline article { grid-template-columns:100px 1fr 180px; }
  .exam-row-actions { grid-column:2/-1; padding-bottom:10px; text-align:left; }
  .role-editor-summary { align-items: flex-start; flex-direction: column; gap: 4px; }
  .form-grid, .form-grid.three { grid-template-columns: 1fr; gap: 0; }
  .el-dialog { width: calc(100vw - 24px) !important; }
  .login-page { display: block; min-height: 100vh; background: #f4f6f9; }
  .login-story { min-height: 310px; padding: 30px 25px; }
  .story-copy { margin: auto 0 0; }
  .story-copy h1 { font-size: 30px; margin-bottom: 0; }
  .story-copy p, .schedule-signature, .story-foot { display: none; }
  .login-panel { padding: 32px 22px; background: white; }
}

@media (max-width: 600px) {
  .page-intro { align-items: flex-start; flex-direction: column; }
  .page-actions { width: 100%; flex-wrap: wrap; }
  .option-filter-grid.course,
  .option-filter-grid.course.compact,
  .option-filter-grid.classes { grid-template-columns: 1fr; }
  .batch-action-bar > div:last-child { width: 100%; }
  .batch-action-bar > div:last-child .el-button { flex: 1 1 auto; }
  .selection-round-strip > button { flex-basis: 240px; }
  .selection-window { display: block; }
  .window-seal { min-height: 54px; padding: 10px; display: flex; border-right: none; border-bottom: 1px solid rgba(255,255,255,.13); }
  .window-seal .el-icon { font-size: 18px; }
  .window-copy { padding: 20px 18px; }
  .window-copy h3 { white-space: normal; }
  .window-copy em { display: block; margin: 7px 0 0; padding: 0; border: none; }
  .credit-meter, .round-actions { padding: 18px; }
  .selection-ledger-head { align-items: flex-start; flex-direction: column; }
  .selection-timetable-head,
  .selection-catalog-head { align-items: flex-start; flex-direction: column; }
  .selection-timetable-head .el-button { width: 100%; }
  .selection-timetable-grid { min-width: 820px; }
  .selection-catalog-filter .el-segmented { overflow-x: auto; }
  .flexible-course-row { align-items: flex-start; flex-direction: column; }
  .offering-ticket > footer { align-items: stretch; flex-direction: column; }
  .offering-ticket > footer .el-button { width: 100%; }
  .grade-toolbar { flex-wrap: wrap; }
  .grade-toolbar .el-select { flex: 1 1 140px; width: auto; }
  .grade-toolbar > span { width: 100%; margin-left: 0; }
  .grade-register-head { align-items: flex-start; }
  .grade-register-ruler { grid-template-columns: 1fr 1fr; }
  .grade-register-ruler > div:nth-child(2) { border-right: none; }
  .grade-actions { align-items: stretch; flex-direction: column; }
  .grade-actions > div { margin: 0 0 5px; }
  .grade-actions .el-button { width: 100%; }
  .transcript-identity { align-items: stretch; flex-direction: column; }
  .transcript-identity label { width: 100%; }
  .transcript-ribbon { grid-template-columns: 1fr; }
  .transcript-ribbon > div { min-height: 65px; border-right: none; border-bottom: 1px solid var(--line); }
  .transcript-list > article { grid-template-columns: 1fr; gap: 17px; }
  .transcript-result { grid-column: auto; grid-row: auto; padding: 12px 0 0; border-left: none; border-top: 1px solid var(--line); text-align: left; }
  .grade-scale { grid-column: auto; grid-row: auto; }
  .exam-board > header { align-items:flex-start; flex-direction:column; }
  .exam-timeline { padding-left:28px; }
  .exam-timeline article { padding:16px 0; grid-template-columns:1fr; gap:9px; }
  .exam-staff { padding:10px 0 0; border-left:none; border-top:1px solid var(--line); }
  .exam-row-actions { grid-column:auto; padding:0; }
  .exam-ticket-grid { grid-template-columns:1fr; }
  .status-identity { align-items:flex-start; flex-direction:column; }
  .status-available { width:100%; min-width:0; }
  .status-review-summary { grid-template-columns:repeat(3,1fr); }
  .status-review-summary > div { min-height:86px; padding:16px; }
  .status-review-summary p { grid-column:1/-1; padding:16px; border-top:1px solid rgba(255,255,255,.12); }
  .status-folio-list article > header { grid-template-columns:1fr auto; gap:14px; }
  .folio-number { grid-column:1/-1; display:block; padding:0 0 12px; border-right:none; border-bottom:1px dashed var(--line); }
  .folio-number b { margin-left:10px; }
  .folio-reason { grid-template-columns:1fr; gap:7px; }
  .approval-track { grid-template-columns:1fr; gap:13px; }
  .approval-track > div:not(:last-child)::after { left:17px; right:auto; top:31px; bottom:-14px; width:1px; height:auto; }
  .status-folio-list article > footer { align-items:stretch; flex-direction:column; }
  .folio-actions, .folio-actions .el-button { width:100%; }
  .graduation-workbench > header { align-items:flex-start; flex-direction:column; }
  .graduation-summary { grid-template-columns:1fr 1fr; }
  .graduation-summary > div:nth-child(2) { border-right:none; }
  .graduation-filter { flex-wrap:wrap; }
  .graduation-filter .el-input { width:100%; }
  .graduation-filter .el-select { flex:1; width:auto; }
  .graduation-result-list article { padding:16px 0; grid-template-columns:1fr 1fr; gap:13px; }
  .graduation-student { grid-column:1/-1; }
  .graduation-result-list article > .el-button { justify-self:end; }
  .certificate-person,.certificate-metrics { grid-template-columns:1fr; }
  .certificate-person > div,.certificate-metrics > div { border-right:none; border-bottom:1px solid var(--line); }
  .certificate-conclusion { justify-content:flex-start; padding:24px 20px; }
  .degree-workbench > header { align-items:flex-start; flex-direction:column; }
  .degree-summary { grid-template-columns:1fr 1fr; }
  .degree-result-list article { padding:16px 0; grid-template-columns:1fr 1fr; gap:13px; }
  .degree-result-list article > div:first-child { grid-column:1/-1; }
  .degree-rule-note { padding-left:0; border-left:none; }
  .degree-result-list article > .el-button { justify-self:end; }
  .degree-certificate { grid-template-columns:1fr; }
  .degree-seal { min-height:150px; }
  .degree-seal .el-icon { font-size:48px; }
  .degree-copy { padding:28px 22px; }
  .degree-copy dl { grid-template-columns:1fr; }
  .degree-copy dl div { border-right:none; border-bottom:1px solid var(--line); }
  .clearance-workbench > header { align-items:flex-start; flex-direction:column; }
  .clearance-ledgers { padding:10px; }
  .clearance-record-grid { grid-template-columns:1fr; }
  .clearance-pass > header { align-items:flex-start; gap:18px; }
  .clearance-form-list > div { grid-template-columns:1fr 1fr; padding:10px; border:1px solid var(--line); }
  .el-drawer { width: 100% !important; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* Shared workspace surface: keeps independently-built modules visually aligned. */
:root {
  --surface: #ffffff;
  --surface-muted: #f8fafc;
  --surface-accent: #f0f7f6;
  --shadow-card: 0 8px 24px rgba(26, 47, 80, .055);
  --el-border-radius-base: 8px;
  --el-border-radius-small: 6px;
  --el-fill-color-blank: #ffffff;
  --el-bg-color-page: #f4f6fa;
  --el-border-color: #dfe5ee;
  --el-text-color-primary: #182033;
  --el-text-color-regular: #4f5b6c;
}

body {
  background:
    linear-gradient(180deg, rgba(35, 56, 118, .035), transparent 20rem),
    #f4f6fa;
}

::selection { color: #fff; background: var(--indigo); }

.content { max-width: 1480px; }
.page-stack { gap: 20px; }

.page-intro,
.page-heading {
  position: relative;
  min-height: 96px;
  padding: 20px 0 16px 18px;
  border-bottom: 1px solid #dfe5ee;
}

.page-intro::before,
.page-heading::before {
  position: absolute;
  top: 23px;
  bottom: 20px;
  left: 0;
  width: 3px;
  content: '';
  border-radius: 3px;
  background: linear-gradient(180deg, var(--teal), #55b9aa);
}

.page-intro h2,
.page-heading h2 {
  letter-spacing: .02em;
}

.page-intro p,
.page-heading > div > p {
  max-width: 720px;
  line-height: 1.7;
}

.data-card,
.page-stack > .el-card,
.page-stack .el-card,
.application-card,
.result-board,
.batch-panel,
.editor-panel {
  border-color: #dfe5ee;
  border-radius: 10px;
  box-shadow: var(--shadow-card);
}

.data-card:hover,
.page-stack > .el-card:hover,
.application-card:hover,
.result-board:hover,
.batch-panel:hover,
.editor-panel:hover {
  border-color: #cbd8e7;
}

.table-toolbar,
.filter-bar {
  min-height: 76px;
  padding: 16px 20px;
  border-color: #e1e7ef;
  background: var(--surface-muted);
}

.table-toolbar > span,
.filter-bar > span,
.pagination-bar > span { color: #768296; }

.el-button { font-weight: 600; letter-spacing: .01em; }
.el-button--primary { box-shadow: 0 4px 10px rgba(35, 56, 118, .14); }
.el-button--primary:hover { box-shadow: 0 6px 14px rgba(35, 56, 118, .2); }
.el-input__wrapper,
.el-textarea__inner,
.el-select__wrapper,
.el-date-editor.el-input__wrapper,
.el-date-editor.el-range-editor {
  box-shadow: 0 0 0 1px #d7dfe9 inset;
  background: #fff;
}
.el-input__wrapper:hover,
.el-select__wrapper:hover,
.el-date-editor.el-input__wrapper:hover,
.el-date-editor.el-range-editor:hover { box-shadow: 0 0 0 1px #afbfce inset; }

.el-card__header { padding: 18px 20px; border-bottom-color: #e5eaf1; }
.el-card__body { padding: 20px; }
.el-table { --el-table-border-color: #e4e9f0; --el-table-header-bg-color: #f7f9fc; }
.el-table th.el-table__cell { height: 46px; color: #536074; background: #f7f9fc; }
.el-table td.el-table__cell { padding: 12px 0; }
.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell { background: #f3f8f8; }
.el-pagination { padding: 14px 0 2px; justify-content: flex-end; }
.el-dialog { overflow: hidden; border-radius: 12px; box-shadow: 0 20px 60px rgba(18, 37, 63, .25); }
.el-dialog__header { margin-right: 0; padding: 20px 22px 16px; border-bottom: 1px solid #e6ebf1; }
.el-dialog__body { padding: 22px; }
.el-dialog__footer { padding: 14px 22px 20px; border-top: 1px solid #edf0f4; }
.el-tag { font-weight: 600; }

@media (max-width: 760px) {
  .page-intro,
  .page-heading { min-height: 0; padding: 12px 0 14px 14px; }
  .page-intro::before,
  .page-heading::before { top: 14px; bottom: 16px; }
  .page-intro h2,
  .page-heading h2 { font-size: 23px; }
  .table-toolbar,
  .filter-bar { min-height: 0; padding: 12px 14px; }
  .el-card__body { padding: 16px; }
  .el-dialog__header { padding: 18px 18px 14px; }
  .el-dialog__body { padding: 18px; }
  .el-dialog__footer { padding: 12px 18px 18px; }
}
