:root {
  --bg1: #071836;
  --bg2: #123c7c;
  --bg3: #1d7ecb;
  --text: #102033;
  --muted: #68778b;
  --blue: #1d63ff;
  --blue2: #1147ca;
  --line: rgba(255,255,255,.26);
  --glass: rgba(255,255,255,.78);
  --danger: #d93025;
  --ok: #13955f;
  --warn: #e88400;
  --shadow: 0 24px 80px rgba(0, 32, 94, .20);
}
* { box-sizing: border-box; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
  color: var(--text);
  background:
    radial-gradient(circle at 18% 14%, rgba(91, 171, 255, .55), transparent 28%),
    radial-gradient(circle at 82% 6%, rgba(107, 90, 255, .28), transparent 26%),
    linear-gradient(135deg, #eef6ff 0%, #f6fbff 46%, #eef5ff 100%);
}
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; border: 0; }
.glass {
  background: var(--glass);
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: var(--shadow);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}
.hidden { display: none !important; }
.brand-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border-radius: 999px;
  color: #0c56d7;
  background: rgba(29,99,255,.10);
  border: 1px solid rgba(29,99,255,.15);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
}
.primary-btn, .secondary-btn, .logout-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 0 18px;
  border-radius: 14px;
  font-weight: 800;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.primary-btn {
  background: linear-gradient(135deg, var(--blue), var(--blue2));
  color: #fff;
  box-shadow: 0 12px 26px rgba(29, 99, 255, .22);
}
.secondary-btn {
  background: rgba(255,255,255,.92);
  color: #17417b;
  border: 1px solid rgba(23,65,123,.12);
}
.logout-btn {
  background: rgba(255,255,255,.54);
  color: #5d6c7c;
  border: 1px solid rgba(93,108,124,.14);
}
.primary-btn:hover, .secondary-btn:hover, .logout-btn:hover { transform: translateY(-1px); }
.primary-btn:disabled, .secondary-btn:disabled { opacity: .55; cursor: not-allowed; transform: none; }
.full-btn { width: 100%; }
.input {
  width: 100%;
  min-height: 44px;
  padding: 12px 14px;
  border-radius: 14px;
  border: 1px solid rgba(17, 48, 87, .12);
  background: rgba(255,255,255,.84);
  color: var(--text);
  outline: none;
  transition: border .12s ease, box-shadow .12s ease;
}
.input:focus {
  border-color: rgba(29,99,255,.45);
  box-shadow: 0 0 0 4px rgba(29,99,255,.10);
}
.textarea { min-height: 96px; resize: vertical; }
.field-label {
  display: grid;
  gap: 8px;
  font-size: 14px;
  font-weight: 800;
  color: #27384b;
}
.hint { color: var(--muted); font-size: 13px; line-height: 1.7; }
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(24px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 50;
  max-width: min(92vw, 520px);
  padding: 12px 16px;
  border-radius: 999px;
  background: rgba(16, 32, 51, .92);
  color: #fff;
  box-shadow: 0 18px 48px rgba(0,0,0,.18);
  font-size: 14px;
}
.home-page {
  background: linear-gradient(135deg, #061735, #0d4a9a 50%, #eaf5ff 50.1%, #f6fbff);
}
.hero-shell {
  width: min(1120px, calc(100% - 32px));
  margin: 0 auto;
  min-height: 100vh;
  display: grid;
  align-content: center;
  gap: 22px;
  padding: 42px 0;
}
.hero-card {
  border-radius: 34px;
  padding: clamp(28px, 6vw, 64px);
  overflow: hidden;
  position: relative;
}
.hero-card::after {
  content: '';
  position: absolute;
  inset: auto -80px -100px auto;
  width: 360px;
  height: 360px;
  background: radial-gradient(circle, rgba(29,99,255,.18), transparent 70%);
}
.hero-card h1 {
  margin: 18px 0 14px;
  font-size: clamp(38px, 7vw, 76px);
  line-height: .95;
  letter-spacing: -0.06em;
}
.hero-desc {
  max-width: 620px;
  font-size: 18px;
  color: #526275;
  line-height: 1.8;
}
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 26px; }
.feature-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.feature-card {
  border-radius: 22px;
  padding: 18px;
  display: grid;
  gap: 8px;
}
.feature-card b { color: #0d3979; }
.feature-card span { color: var(--muted); font-size: 13px; line-height: 1.7; }
.student-layout {
  width: min(820px, calc(100% - 28px));
  margin: 0 auto;
  padding: 30px 0 calc(34px + env(safe-area-inset-bottom));
  display: grid;
  gap: 18px;
}
.student-banner, .form-card, .success-card {
  border-radius: 28px;
  padding: clamp(20px, 4vw, 34px);
}
.student-banner h1, .login-panel h1 {
  margin: 16px 0 8px;
  font-size: clamp(30px, 8vw, 52px);
  letter-spacing: -0.04em;
}
.student-banner p { color: var(--muted); line-height: 1.8; margin: 0; }
.form-card h2, .success-card h2 { margin: 0 0 18px; }
.inline-form { display: grid; grid-template-columns: 1fr auto; gap: 12px; }
.course-confirm {
  display: grid;
  gap: 5px;
  margin-bottom: 20px;
  padding: 16px;
  border-radius: 18px;
  background: rgba(29,99,255,.10);
  border: 1px solid rgba(29,99,255,.16);
}
.course-confirm span { color: #41617d; font-size: 13px; font-weight: 700; }
.course-confirm strong { color: #0d4bd0; font-size: 18px; }
.profile-form { display: grid; gap: 16px; }
.address-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.success-card { text-align: center; }
.success-icon {
  width: 74px;
  height: 74px;
  margin: 0 auto 16px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(19,149,95,.12);
  color: var(--ok);
  font-size: 44px;
  font-weight: 900;
}
.admin-body { overflow: hidden; }
.login-screen {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 24px;
}
.login-panel {
  width: min(520px, 100%);
  border-radius: 30px;
  padding: clamp(22px, 5vw, 38px);
}
.login-panel p { color: var(--muted); line-height: 1.7; }
.region-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin: 18px 0;
}
.region-card {
  min-height: 54px;
  border-radius: 16px;
  background: rgba(255,255,255,.75);
  color: #21415f;
  font-weight: 900;
  border: 1px solid rgba(33,65,95,.10);
}
.region-card.active {
  color: #fff;
  background: linear-gradient(135deg, #1d63ff, #113fb1);
}
.login-form { display: grid; gap: 14px; }
.admin-app {
  height: 100vh;
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: 16px;
  padding: 16px;
}
.sidebar {
  border-radius: 26px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
.sidebar-brand { display: grid; gap: 6px; padding: 8px 6px 18px; }
.sidebar-brand b { font-size: 20px; }
.sidebar-brand span { color: #0d4bd0; font-size: 13px; font-weight: 800; }
.side-nav { display: grid; gap: 8px; }
.nav-btn {
  text-align: left;
  min-height: 46px;
  padding: 0 14px;
  border-radius: 14px;
  color: #40526a;
  background: transparent;
  font-weight: 800;
}
.nav-btn.active {
  color: #fff;
  background: linear-gradient(135deg, var(--blue), var(--blue2));
  box-shadow: 0 12px 28px rgba(29,99,255,.18);
}
.logout-btn { margin-top: auto; width: 100%; }
.admin-main {
  display: grid;
  grid-template-rows: auto 1fr;
  gap: 16px;
  min-width: 0;
  min-height: 0;
}
.admin-topbar {
  border-radius: 26px;
  padding: 18px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
}
.admin-topbar h1 { margin: 0; font-size: 28px; letter-spacing: -0.03em; }
.admin-topbar p { margin: 6px 0 0; color: var(--muted); }
.view-section { min-height: 0; overflow: auto; padding-right: 4px; }
.stat-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}
.stat-card {
  border-radius: 22px;
  padding: 18px;
  background: rgba(255,255,255,.84);
  border: 1px solid rgba(255,255,255,.76);
  box-shadow: 0 14px 42px rgba(21,70,132,.10);
}
.stat-card span { color: var(--muted); font-size: 13px; font-weight: 800; }
.stat-card b { display: block; margin-top: 8px; font-size: 30px; color: #0c397a; }
.panel {
  border-radius: 26px;
  padding: 18px;
  min-width: 0;
}
.panel-title {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-end;
  margin-bottom: 16px;
}
.panel-title h2 { margin: 0; }
.panel-title span { color: var(--muted); font-size: 13px; }
.toolbar-form, .table-toolbar {
  display: flex;
  gap: 10px;
  align-items: center;
  margin: 12px 0 16px;
}
.wrap-toolbar { flex-wrap: wrap; }
.search-input { max-width: 360px; }
.mini-select { max-width: 150px; }
.table-wrap {
  width: 100%;
  overflow: auto;
  border-radius: 18px;
  border: 1px solid rgba(16,32,51,.08);
  background: rgba(255,255,255,.64);
}
table { width: 100%; border-collapse: collapse; min-width: 760px; }
th, td {
  padding: 13px 12px;
  text-align: left;
  border-bottom: 1px solid rgba(16,32,51,.08);
  font-size: 14px;
  vertical-align: top;
}
th { color: #40526a; font-size: 12px; background: rgba(236,244,255,.86); }
tr:last-child td { border-bottom: 0; }
.badge {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 0 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 900;
}
.badge.ok { color: var(--ok); background: rgba(19,149,95,.10); }
.badge.warn { color: var(--warn); background: rgba(232,132,0,.12); }
.badge.danger { color: var(--danger); background: rgba(217,48,37,.10); }
.row-actions { display: flex; flex-wrap: wrap; gap: 8px; min-width: 220px; }
.small-btn {
  min-height: 34px;
  padding: 0 10px;
  border-radius: 10px;
  background: rgba(29,99,255,.10);
  color: #0d4bd0;
  font-weight: 900;
}
.small-btn.gray { background: rgba(16,32,51,.08); color: #435369; }
.small-btn.danger { background: rgba(217,48,37,.10); color: var(--danger); }
.ship-input {
  min-width: 118px;
  height: 34px;
  padding: 6px 8px;
  border-radius: 10px;
  border: 1px solid rgba(16,32,51,.12);
  background: rgba(255,255,255,.9);
}
.address-cell { min-width: 280px; line-height: 1.7; }
.recent-list { display: grid; gap: 10px; }
.recent-item {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  padding: 14px;
  border-radius: 16px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(16,32,51,.08);
}
.recent-item b { display: block; }
.recent-item span { color: var(--muted); font-size: 13px; }
.batch-hint { color: var(--muted); font-size: 13px; margin: -6px 0 12px; }
.modal {
  position: fixed;
  inset: 0;
  z-index: 30;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(7,24,54,.42);
}
.modal-card {
  width: min(720px, 100%);
  border-radius: 28px;
  padding: 22px;
}
.modal-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; }
.modal-head h2 { margin: 0; }
.icon-btn {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(16,32,51,.08);
  color: #40526a;
  font-size: 24px;
}
.csv-area { margin: 12px 0; min-height: 200px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
@media (max-width: 960px) {
  .feature-grid { grid-template-columns: repeat(2, 1fr); }
  .admin-body { overflow: auto; }
  .admin-app { height: auto; min-height: 100vh; grid-template-columns: 1fr; padding: 12px; }
  .sidebar { position: sticky; top: 12px; z-index: 5; }
  .side-nav { grid-template-columns: repeat(4, 1fr); }
  .nav-btn { text-align: center; padding: 0 8px; }
  .logout-btn { margin-top: 12px; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .toolbar-form { flex-direction: column; align-items: stretch; }
}
@media (max-width: 640px) {
  .home-page { background: linear-gradient(180deg, #061735, #0d4a9a 42%, #eef6ff 42.1%); }
  .hero-shell { width: min(100% - 22px, 1120px); padding: 18px 0; }
  .hero-card { border-radius: 26px; }
  .hero-actions { display: grid; }
  .feature-grid { grid-template-columns: 1fr; }
  .student-layout { width: min(100% - 18px, 820px); padding-top: 12px; }
  .inline-form { grid-template-columns: 1fr; }
  .address-grid { grid-template-columns: 1fr; }
  .region-cards { grid-template-columns: 1fr; }
  .login-screen { padding: 12px; align-items: start; }
  .side-nav { grid-template-columns: repeat(2, 1fr); }
  .admin-topbar { align-items: flex-start; flex-direction: column; }
  .stat-grid { grid-template-columns: 1fr; }
  .panel-title { align-items: flex-start; flex-direction: column; }
  .table-toolbar { align-items: stretch; flex-direction: column; }
  .search-input, .mini-select { max-width: 100%; }
  table { min-width: 880px; }
}

/* V1.1 additions */
.book-options {
  padding: 14px;
  border-radius: 18px;
  background: rgba(42, 123, 255, .07);
  border: 1px solid rgba(42, 123, 255, .14);
}
.book-options h3 { margin: 0 0 6px; color: #0c397a; }
.book-options-list { display: grid; gap: 10px; margin-top: 10px; }
.book-row {
  display: grid;
  grid-template-columns: minmax(82px, 1fr) auto auto;
  gap: 12px;
  align-items: center;
  padding: 12px;
  border-radius: 14px;
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(16,32,51,.08);
}
.book-row label { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; color: #314258; }
.book-tag {
  display: inline-flex;
  margin: 2px 4px 2px 0;
  padding: 5px 8px;
  border-radius: 999px;
  background: rgba(42,123,255,.10);
  color: #174b8d;
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}
.book-cell { min-width: 150px; }
.muted-text { color: var(--muted); font-size: 12px; }
.stat-card {
  text-align: left;
  border: 1px solid rgba(18,54,101,.08);
  font-family: inherit;
}
.stat-card em {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: var(--muted);
  font-style: normal;
  font-weight: 800;
}
.stat-clickable { cursor: pointer; }
.stat-clickable:hover { transform: translateY(-1px); box-shadow: 0 18px 40px rgba(15,70,140,.12); }
.compact-form { max-width: 760px; }
.add-order-form { display: grid; grid-template-columns: 1.2fr 1.4fr 1fr .8fr .9fr auto; }
.full-mobile-btn { margin-top: 12px; }
.wide-modal { width: min(980px, 100%); }
.wide-modal .table-wrap { max-height: 58vh; overflow: auto; }

@media (max-width: 1200px) {
  .add-order-form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .book-row { grid-template-columns: 1fr; align-items: start; }
  .add-order-form { grid-template-columns: 1fr; }
  .modal { padding: 10px; place-items: start center; overflow: auto; }
  .modal-card { border-radius: 22px; }
  table { min-width: 1080px; }
}

/* V1.2 additions: clean order page + separate add-order page */
.order-toolbar-clean {
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}
.order-toolbar-clean .search-input { max-width: 520px; }
.admin-add-body { overflow: auto; }
.add-page-shell {
  width: min(980px, calc(100% - 28px));
  margin: 0 auto;
  padding: 22px 0 calc(34px + env(safe-area-inset-bottom));
  display: grid;
  gap: 16px;
}
.add-page-topbar { position: sticky; top: 12px; z-index: 3; }
.add-page-panel { padding: clamp(18px, 3vw, 28px); }
.add-order-page-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.add-order-page-form .field-label:first-child,
.add-order-page-form .field-label:nth-child(2),
.add-form-actions {
  grid-column: 1 / -1;
}
.add-form-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  align-items: center;
  padding-top: 6px;
}
@media (max-width: 760px) {
  .order-toolbar-clean { flex-direction: column; align-items: stretch; }
  .order-toolbar-clean .search-input { max-width: 100%; }
  .add-page-topbar { position: static; }
  .add-order-page-form { grid-template-columns: 1fr; }
  .add-form-actions { display: grid; }
}

/* V2.1 additions */
.preview-box {
  margin-top: 16px;
  padding: 14px;
  border-radius: 18px;
  background: rgba(255,255,255,.62);
  border: 1px solid rgba(18,54,101,.10);
}
.panel-title.slim { margin-bottom: 8px; }
.check-line {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 8px 0 12px;
  font-weight: 900;
  color: #26415d;
}
.address-cell { min-width: 220px; line-height: 1.7; }
.row-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.field-label input:disabled,
.field-label textarea:disabled,
.book-row input:disabled {
  opacity: .72;
  cursor: not-allowed;
}
#studentEditForm { gap: 12px; }
#editBookOptions {
  padding: 12px;
  border-radius: 14px;
  background: rgba(29,99,255,.06);
}

/* V2.2 additions: 小鹅通预览订单课程筛选 */
.preview-filter-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin: 12px 0 8px;
}
.course-filter-card { position: relative; min-width: 260px; }
.filter-toggle {
  width: 100%;
  min-height: 46px;
  padding: 0 16px;
  border-radius: 16px;
  border: 1px solid rgba(16, 84, 190, .16);
  background: rgba(255,255,255,.86);
  color: #16355b;
  font-weight: 900;
  text-align: left;
  cursor: pointer;
}
.course-filter-panel {
  position: absolute;
  z-index: 20;
  left: 0;
  top: calc(100% + 8px);
  width: min(520px, 88vw);
  max-height: 360px;
  overflow: auto;
  padding: 12px;
  border-radius: 18px;
  border: 1px solid rgba(16, 84, 190, .18);
  background: rgba(255,255,255,.98);
  box-shadow: 0 16px 42px rgba(23, 50, 87, .18);
}
.filter-panel-actions {
  display: flex;
  gap: 12px;
  margin-bottom: 10px;
}
.text-btn {
  border: 0;
  background: transparent;
  color: #1f5bd8;
  font-weight: 900;
  cursor: pointer;
  padding: 4px 2px;
}
.course-filter-list {
  display: grid;
  gap: 8px;
}
.course-filter-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 12px;
  background: rgba(240, 246, 255, .76);
  color: #243a56;
  font-weight: 800;
  line-height: 1.35;
}
.course-filter-item input { margin-top: 3px; }
.preview-filter-hint {
  color: var(--muted);
  font-size: 12px;
  margin: 4px 0 4px;
}
@media (max-width: 760px) {
  .preview-filter-bar { align-items: stretch; }
  .course-filter-card, .preview-filter-bar .mini-select, .preview-filter-bar button { width: 100%; max-width: 100%; }
  .course-filter-panel { position: static; width: 100%; margin-top: 8px; max-height: 280px; }
}

/* V2.3: 简约后台 UI + 订单清理独立页面 */
:root {
  --simple-bg: #f4f7fb;
  --simple-panel: rgba(255,255,255,.94);
  --simple-line: rgba(30, 48, 78, .10);
}
.admin-body {
  background: var(--simple-bg);
}
.admin-app {
  gap: 18px;
  padding: 18px;
  background: linear-gradient(180deg, #f4f8ff 0%, #f7f9fc 100%);
}
.sidebar.glass,
.admin-topbar.glass,
.panel.glass,
.modal-card.glass,
.login-panel.glass,
.add-page-panel.glass,
.add-page-topbar.glass {
  background: var(--simple-panel);
  border: 1px solid var(--simple-line);
  box-shadow: 0 10px 34px rgba(30, 56, 92, .08);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.sidebar {
  border-radius: 24px;
}
.sidebar-brand {
  padding-bottom: 22px;
  border-bottom: 1px solid rgba(30,48,78,.08);
  margin-bottom: 10px;
}
.nav-btn {
  min-height: 44px;
  border-radius: 13px;
}
.nav-btn:hover {
  background: rgba(29,99,255,.08);
  color: #1147ca;
}
.nav-btn.active {
  box-shadow: 0 10px 22px rgba(29,99,255,.16);
}
.admin-topbar {
  border-radius: 24px;
  padding: 20px 22px;
}
.admin-topbar h1 {
  font-size: 30px;
}
.view-section {
  padding-right: 8px;
}
.panel {
  border-radius: 24px;
  padding: 22px;
}
.panel + .panel { margin-top: 16px; }
.panel-title {
  align-items: center;
  margin-bottom: 18px;
}
.panel-title h2 {
  letter-spacing: -0.02em;
  color: #102033;
}
.table-toolbar {
  padding: 12px;
  border-radius: 18px;
  background: rgba(245,248,252,.78);
  border: 1px solid rgba(30,48,78,.06);
}
.order-toolbar-clean {
  display: grid;
  grid-template-columns: minmax(260px, 520px) auto auto;
  justify-content: stretch;
}
.input {
  background: #fff;
  border-color: rgba(34, 58, 90, .12);
}
.table-wrap {
  border-radius: 20px;
  border: 1px solid rgba(30,48,78,.08);
  background: #fff;
}
table {
  min-width: 980px;
}
th {
  padding-top: 15px;
  padding-bottom: 15px;
  background: #f0f5fb;
  color: #53657c;
  letter-spacing: .02em;
}
td {
  padding-top: 15px;
  padding-bottom: 15px;
}
tbody tr:hover td {
  background: rgba(29,99,255,.035);
}
.primary-btn, .secondary-btn, .danger-btn, .logout-btn {
  min-height: 44px;
  border-radius: 14px;
}
.danger-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 18px;
  background: rgba(217,48,37,.10);
  color: #c5221f;
  border: 1px solid rgba(217,48,37,.16);
  font-weight: 900;
  transition: transform .12s ease, box-shadow .12s ease, background .12s ease;
}
.danger-btn:hover {
  transform: translateY(-1px);
  background: rgba(217,48,37,.14);
  box-shadow: 0 12px 26px rgba(217,48,37,.10);
}
.danger-btn:disabled {
  opacity: .55;
  cursor: not-allowed;
  transform: none;
}
.danger-strong {
  background: linear-gradient(135deg, #e1443a, #bd1f1a);
  color: #fff;
  border: 0;
  box-shadow: 0 12px 28px rgba(217,48,37,.16);
}
.delete-page-shell {
  width: min(1380px, calc(100% - 28px));
}
.minimal-admin-page {
  background: linear-gradient(180deg, #f6f9fd 0%, #f3f6fb 100%);
}
.minimal-topbar {
  position: sticky;
  top: 14px;
  z-index: 4;
}
.topbar-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
.minimal-panel {
  display: grid;
  gap: 12px;
}
.split-title {
  align-items: flex-start;
}
.clean-toolbar {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto auto auto;
  gap: 10px;
}
.danger-note {
  padding: 12px 14px;
  border-radius: 16px;
  background: rgba(232, 132, 0, .08);
  border: 1px solid rgba(232,132,0,.16);
  color: #75501d;
  font-size: 13px;
  line-height: 1.7;
}
.select-all-line {
  margin: 4px 0 8px;
}
.clean-table-wrap {
  max-height: calc(100vh - 330px);
}
@media (max-width: 980px) {
  .order-toolbar-clean,
  .clean-toolbar {
    grid-template-columns: 1fr;
  }
  .topbar-actions { width: 100%; display: grid; grid-template-columns: 1fr; }
  .minimal-topbar { position: static; }
  .clean-table-wrap { max-height: none; }
}
/* V2.4 简约同步页与操作日志 */
.sync-shell { display: block; padding: 18px; }
.sync-main { margin: 0 auto; width: min(1480px, 100%); }
.pager-bar { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 16px 0 4px; }
.log-detail { display: inline-block; max-width: 520px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: #526275; }
.row-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
@media (max-width: 760px) {
  .sync-shell { padding: 10px; }
  .pager-bar { flex-direction: column; align-items: stretch; }
  .pager-bar .secondary-btn { width: 100%; }
}


/* V2.6: 修复小鹅通同步页滚动 + 总览页卡片一行化 */
.sync-page-body {
  overflow: auto !important;
  min-height: 100vh;
}
.sync-page-body .admin-app.sync-shell {
  height: auto !important;
  min-height: 100vh;
  display: block !important;
  overflow: visible !important;
}
.sync-page-body .admin-main.sync-main {
  display: block !important;
  min-height: auto !important;
  overflow: visible !important;
  padding-bottom: calc(34px + env(safe-area-inset-bottom));
}
.sync-page-body .panel {
  overflow: visible;
}
.sync-page-body .table-wrap {
  max-height: none;
}

/* 总览统计卡：PC 尽量一行展示，减少无意义换行 */
#dashboardView .stat-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  align-items: stretch;
}
#dashboardView .stat-card {
  min-height: 150px;
}
#dashboardView .stat-card b {
  font-size: clamp(26px, 2.1vw, 36px);
}
#dashboardView .stat-card em {
  line-height: 1.55;
}

/* 小鹅通订单总数：输入框和按钮保持同一行 */
#dashboardView .compact-form {
  max-width: none;
  display: grid;
  grid-template-columns: minmax(220px, 1fr) auto;
  align-items: stretch;
  gap: 12px;
}
#dashboardView .compact-form .primary-btn {
  min-width: 124px;
  white-space: nowrap;
}

@media (max-width: 1380px) {
  #dashboardView .stat-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  #dashboardView .stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #dashboardView .stat-card { min-height: 132px; padding: 16px; }
  #dashboardView .compact-form { grid-template-columns: 1fr; }
  #dashboardView .compact-form .primary-btn { width: 100%; }
}
@media (max-width: 420px) {
  #dashboardView .stat-grid { grid-template-columns: 1fr; }
}


/* V2.7 学生信息表格：单行展示 + 横向滑动，避免姓名/课程/地址被挤成多行 */
.table-hint {
  margin: -6px 0 12px;
  color: #7a8aa0;
  font-size: 13px;
  line-height: 1.6;
}
.student-toolbar {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto auto;
  align-items: center;
}
.table-scroll-actions {
  display: inline-flex;
  gap: 8px;
  align-items: center;
  white-space: nowrap;
}
.compact-btn {
  min-height: 40px;
  padding: 0 14px;
}
.student-table-wrap {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-gutter: stable;
}
.student-info-table {
  min-width: 1680px;
  table-layout: auto;
}
.student-info-table th,
.student-info-table td {
  white-space: nowrap;
  vertical-align: middle;
}
.student-info-table th:nth-child(1),
.student-info-table td:nth-child(1) { min-width: 110px; }
.student-info-table th:nth-child(2),
.student-info-table td:nth-child(2) { min-width: 130px; }
.student-info-table th:nth-child(3),
.student-info-table td:nth-child(3) { min-width: 110px; }
.student-info-table th:nth-child(4),
.student-info-table td:nth-child(4) { min-width: 260px; }
.student-info-table th:nth-child(5),
.student-info-table td:nth-child(5) { min-width: 340px; }
.student-info-table th:nth-child(6),
.student-info-table td:nth-child(6) { min-width: 180px; }
.student-info-table th:nth-child(7),
.student-info-table td:nth-child(7) { min-width: 310px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.student-info-table th:nth-child(8),
.student-info-table td:nth-child(8) { min-width: 150px; }
.student-info-table th:nth-child(9),
.student-info-table td:nth-child(9) { min-width: 150px; }
.student-info-table .row-actions {
  flex-wrap: nowrap;
  min-width: 0;
}
.student-info-table .book-cell {
  min-width: 180px;
}
@media (max-width: 760px) {
  .student-toolbar {
    grid-template-columns: 1fr;
    align-items: stretch;
  }
  .table-scroll-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .student-info-table {
    min-width: 1500px;
  }
}


.account-summary {
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:0 16px;
  margin:8px 0 14px;
  border:1px solid #dce7f7;
  border-radius:16px;
  background:#f7fbff;
  color:#12345f;
  font-weight:800;
}
.account-form-grid {
  display:grid;
  grid-template-columns: 1.2fr 1.2fr 1fr 1fr auto;
  gap:12px;
  align-items:center;
}
.student-status-box {
  border:1px solid #dce7f7;
  background:#f8fbff;
  border-radius:18px;
  padding:14px;
  margin:14px 0;
  display:grid;
  gap:10px;
}
.status-row {
  display:flex;
  justify-content:space-between;
  gap:16px;
  align-items:flex-start;
  border-bottom:1px dashed #dbe6f5;
  padding-bottom:8px;
}
.status-row:last-child { border-bottom:0; padding-bottom:0; }
.status-row span { color:#68778b; font-weight:700; flex:0 0 auto; }
.status-row strong { color:#11284a; text-align:right; }
.status-ok { color:#10a56b; }
.status-warn { color:#e89018; }
.status-danger { color:#e85c5c; }
@media (max-width: 860px) {
  .account-form-grid { grid-template-columns: 1fr; }
  .status-row { display:block; }
  .status-row strong { display:block; text-align:left; margin-top:6px; }
}

/* V2.9 权限与后台财务字段 */
.topbar-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.permission-checklist{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;padding:12px;border:1px solid rgba(143,160,190,.24);border-radius:18px;background:rgba(246,249,255,.78)}
.permission-checklist.full-row,.field-label.full-row{grid-column:1/-1}
.perm-item{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:12px;background:#fff;color:#19365d;font-weight:700;box-shadow:0 8px 20px rgba(47,85,140,.05)}
.perm-item input{width:16px;height:16px;accent-color:#1f5bea}
.perm-summary{white-space:nowrap;color:#60708a;font-weight:700}
.remark-cell{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#52657f}
.student-info-table th,.student-info-table td{white-space:nowrap}
@media(max-width:720px){.topbar-actions{width:100%;justify-content:flex-start}.permission-checklist{grid-template-columns:1fr}.remark-cell{max-width:220px}}


/* V2.9.4 学生端验证码输入样式优化 */
.sms-verify-box{
  border:1px solid #dce7f7;
  background:linear-gradient(180deg,#f8fbff,#fff);
  border-radius:24px;
  padding:16px 18px;
  display:grid;
  gap:12px;
}
.sms-label-bar{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#15345c;font-weight:800}
.sms-label-bar span{font-size:13px;color:#e89018;background:#fff4df;border-radius:999px;padding:4px 10px;white-space:nowrap}
.sms-label-bar span.verified{color:#0f9f6e;background:#e8f7f1}
.sms-compact-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}
.sms-send-btn{min-width:160px;white-space:nowrap}
@media(max-width:720px){
  .sms-verify-box{padding:14px}
  .sms-compact-row{grid-template-columns:1fr}
  .sms-send-btn{width:100%;min-width:0}
}


/* XIAOLANSHU_V295_FINAL_START */
/* V2.9.7 主标题 logo：PC 左侧，移动端上方；只影响大标题区域 */
.hero-title-row{
  display:flex;
  align-items:center;
  gap:14px;
  margin:16px 0 8px;
}
.hero-title-row h1{
  margin:0 !important;
  min-width:0;
}
.hero-main-logo{
  width:1.05em;
  height:1.05em;
  min-width:1.05em;
  border-radius:.26em;
  object-fit:cover;
  object-position:center;
  flex:0 0 auto;
  box-shadow:0 8px 22px rgba(31,91,234,.16);
  border:2px solid rgba(255,255,255,.96);
  background:#eaf3ff;
}

/* 学生端表单：统一输入区高度、字体、圆角 */
.profile-form .field-label,
.sms-label-bar{
  font-size:14px !important;
  font-weight:800 !important;
  color:#27384b !important;
  line-height:1.35 !important;
}
.profile-form .input,
.profile-form select.input,
.profile-form textarea.input,
.sms-compact-row .input{
  width:100% !important;
  min-height:58px !important;
  height:58px !important;
  box-sizing:border-box !important;
  border:1px solid #dfe7f2 !important;
  border-radius:18px !important;
  background:#fff !important;
  color:#142840 !important;
  font-size:16px !important;
  font-weight:700 !important;
  line-height:1.4 !important;
  padding:0 22px !important;
  outline:none !important;
  box-shadow:none !important;
}
.profile-form .input::placeholder,
.sms-compact-row .input::placeholder{
  color:#7f8790 !important;
  font-size:16px !important;
  font-weight:700 !important;
}
.profile-form .input:focus,
.profile-form select.input:focus,
.profile-form textarea.input:focus,
.sms-compact-row .input:focus{
  border-color:#aac4f7 !important;
  box-shadow:0 0 0 3px rgba(31,91,234,.08) !important;
}
.profile-form textarea.input{
  height:auto !important;
  min-height:108px !important;
  padding:18px 22px !important;
  resize:vertical !important;
}
.sms-verify-box{
  border:0 !important;
  background:transparent !important;
  border-radius:0 !important;
  padding:0 !important;
  box-shadow:none !important;
  display:grid !important;
  gap:8px !important;
  margin:0 !important;
}
.sms-label-bar{
  display:flex !important;
  justify-content:flex-start !important;
  align-items:center !important;
  gap:10px !important;
}
.sms-label-bar b{
  font-size:14px !important;
  font-weight:800 !important;
  color:#27384b !important;
}
.sms-label-bar span{
  position:static !important;
  font-size:13px !important;
  font-weight:800 !important;
  color:#e89018 !important;
  background:#fff4df !important;
  border-radius:999px !important;
  padding:4px 10px !important;
  white-space:nowrap !important;
}
.sms-label-bar span.verified{
  color:#0f9f6e !important;
  background:#e8f7f1 !important;
}
.sms-compact-row{
  display:grid !important;
  grid-template-columns:minmax(0, 1fr) 240px !important;
  gap:16px !important;
  align-items:center !important;
}
.sms-send-btn{
  width:100% !important;
  height:58px !important;
  min-height:58px !important;
  box-sizing:border-box !important;
  border:1px solid #dfe7f2 !important;
  border-radius:18px !important;
  background:#fff !important;
  color:#0f3b78 !important;
  font-size:16px !important;
  font-weight:900 !important;
  padding:0 22px !important;
  line-height:1 !important;
  outline:none !important;
  box-shadow:none !important;
  white-space:nowrap !important;
}
.sms-send-btn:hover{
  border-color:#b9cef3 !important;
  background:#f8fbff !important;
}
.sms-send-btn:focus{
  border-color:#aac4f7 !important;
  box-shadow:0 0 0 3px rgba(31,91,234,.08) !important;
}
.sms-send-btn:disabled{
  color:#91a0b5 !important;
  background:#f4f7fb !important;
  border-color:#e3eaf5 !important;
  cursor:not-allowed !important;
}
.profile-form .hint,
.sms-verify-box .hint{
  margin-top:6px !important;
  color:#697b93 !important;
  font-size:14px !important;
  line-height:1.7 !important;
}
.profile-form{gap:20px !important;}

/* 后台学生信息表：统一字体，并将财务字段放到最后 */
.student-info-table{
  min-width:1900px !important;
  table-layout:auto !important;
}
.student-info-table th,
.student-info-table td,
.student-info-table td b{
  font-family:inherit !important;
  font-size:14px !important;
  line-height:1.45 !important;
  color:#1a2f4a !important;
  white-space:nowrap !important;
  vertical-align:middle !important;
}
.student-info-table th{font-weight:800 !important;}
.student-info-table td,
.student-info-table td b{font-weight:700 !important;}
.student-info-table th:nth-child(1),.student-info-table td:nth-child(1){min-width:110px !important;}
.student-info-table th:nth-child(2),.student-info-table td:nth-child(2){min-width:130px !important;}
.student-info-table th:nth-child(3),.student-info-table td:nth-child(3){min-width:110px !important;}
.student-info-table th:nth-child(4),.student-info-table td:nth-child(4){min-width:260px !important;}
.student-info-table th:nth-child(5),.student-info-table td:nth-child(5){min-width:360px !important;}
.student-info-table th:nth-child(6),.student-info-table td:nth-child(6){min-width:180px !important;}
.student-info-table th:nth-child(7),.student-info-table td:nth-child(7){
  min-width:310px !important;
  font-family:inherit !important;
}
.student-info-table th:nth-child(8),.student-info-table td:nth-child(8){min-width:150px !important;}
.student-info-table th:nth-child(9),.student-info-table td:nth-child(9){min-width:150px !important;}
.student-info-table th:nth-child(10),.student-info-table td:nth-child(10){min-width:120px !important;}
.student-info-table th:nth-child(11),.student-info-table td:nth-child(11){min-width:120px !important;}
.student-info-table th:nth-child(12),.student-info-table td:nth-child(12){min-width:240px !important;}
.student-info-table .remark-cell{
  max-width:260px !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

/* 移动端：主标题 logo 放在标题上方 */
@media(max-width:720px){
  .hero-title-row{
    flex-direction:column;
    align-items:flex-start;
    gap:10px;
  }
  .hero-main-logo{
    width:46px;
    height:46px;
    min-width:46px;
    border-radius:14px;
  }
  .sms-compact-row{
    grid-template-columns:1fr !important;
    gap:10px !important;
  }
  .sms-send-btn{
    width:100% !important;
  }
  .profile-form .input,
  .profile-form select.input,
  .sms-compact-row .input,
  .sms-send-btn{
    height:54px !important;
    min-height:54px !important;
    border-radius:16px !important;
    font-size:15px !important;
  }
  .profile-form .input::placeholder,
  .sms-compact-row .input::placeholder{
    font-size:15px !important;
  }
}
/* XIAOLANSHU_V295_FINAL_END */



/* XIAOLANSHU_V297_REFUND_FIX_START */
.badge.danger{
  color:#d92d20 !important;
  background:#ffe9e7 !important;
}
.badge.warn{
  color:#b25e00 !important;
  background:#fff3df !important;
}
/* XIAOLANSHU_V297_REFUND_FIX_END */


/* XIAOLANSHU_V2101_BOOK_IMAGES_START */
.book-image-admin{
  margin-top:20px;
  padding:16px;
  border-radius:22px;
  background:rgba(244,248,255,.86);
  border:1px solid rgba(42,123,255,.10);
}
.panel-title.small-title{
  align-items:flex-start;
  margin-bottom:12px;
}
.panel-title.small-title h2{
  font-size:20px;
}
.book-image-settings{
  display:grid;
  gap:18px;
}
.book-image-phase{
  display:grid;
  gap:12px;
}
.book-image-phase h3{
  margin:0;
  font-size:16px;
  color:#0c397a;
}
.book-image-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:12px;
}
.book-image-card{
  display:grid;
  grid-template-columns:92px 1fr;
  gap:12px;
  align-items:center;
  min-width:0;
  padding:12px;
  border-radius:18px;
  background:#fff;
  border:1px solid rgba(16,32,51,.08);
  box-shadow:0 10px 28px rgba(16,57,120,.06);
}
.book-cover-preview{
  width:92px;
  height:120px;
  border-radius:16px;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:linear-gradient(145deg,#eef5ff,#ffffff);
  border:1px solid rgba(42,123,255,.12);
  color:#8ba0bc;
  font-size:13px;
  font-weight:900;
}
.book-cover-preview img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
}
.book-image-info{
  min-width:0;
}
.book-image-info b{
  display:block;
  color:#142840;
  font-size:15px;
  margin-bottom:4px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.book-image-info p{
  margin:0 0 10px;
  color:#6c7b90;
  font-size:12px;
  line-height:1.5;
}
.book-image-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  align-items:center;
}
.upload-label{
  position:relative;
  overflow:hidden;
  cursor:pointer;
}
.upload-label input{
  position:absolute;
  inset:0;
  opacity:0;
  cursor:pointer;
}
.book-row-with-image{
  grid-template-columns:76px minmax(0,1fr) auto auto;
  min-height:98px;
}
.student-book-cover{
  width:76px;
  height:96px;
  border-radius:16px;
  overflow:hidden;
  display:grid;
  place-items:center;
  background:linear-gradient(145deg,#eef5ff,#fff);
  border:1px solid rgba(42,123,255,.12);
  flex:0 0 auto;
}
.student-book-cover img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  display:block;
}
.student-book-cover.empty span{
  font-size:12px;
  font-weight:900;
  color:#7b91ad;
}
.book-info{
  min-width:0;
}
.book-info b{
  display:block;
  font-size:16px;
  color:#142840;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.book-info p{
  margin:4px 0 0;
  color:#728097;
  font-size:12px;
  font-weight:700;
}
@media(max-width:720px){
  .book-image-card{
    grid-template-columns:82px 1fr;
  }
  .book-cover-preview{
    width:82px;
    height:108px;
  }
  .book-row-with-image{
    grid-template-columns:66px minmax(0,1fr);
    gap:10px;
  }
  .book-row-with-image label{
    grid-column:auto;
  }
  .student-book-cover{
    width:66px;
    height:86px;
  }
}
@media(max-width:520px){
  .book-image-grid{
    grid-template-columns:1fr;
  }
  .book-image-card{
    grid-template-columns:76px 1fr;
    padding:10px;
  }
  .book-cover-preview{
    width:76px;
    height:100px;
  }
  .book-row-with-image{
    grid-template-columns:58px 1fr;
  }
  .book-row-with-image label{
    justify-self:start;
    margin-left:68px;
  }
  .student-book-cover{
    width:58px;
    height:76px;
  }
}
/* XIAOLANSHU_V2101_BOOK_IMAGES_END */

/* BOOK_IMAGE_BUTTON_ALIGN_FIX_START */
.book-image-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  align-items:center;
}

.book-image-actions .small-btn,
.book-image-actions .upload-label{
  height:38px;
  min-width:116px;
  padding:0 16px;
  border-radius:13px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  line-height:1;
  font-size:15px;
  font-weight:900;
  white-space:nowrap;
  vertical-align:middle;
  text-align:center;
}

.book-image-actions .upload-label{
  margin:0;
}

.book-image-actions .upload-label input{
  position:absolute;
  inset:0;
  opacity:0;
  cursor:pointer;
}

.book-image-actions .clear-book-image-btn{
  min-width:96px;
}

@media(max-width:520px){
  .book-image-actions{
    gap:8px;
  }

  .book-image-actions .small-btn,
  .book-image-actions .upload-label{
    height:36px;
    min-width:104px;
    padding:0 13px;
    font-size:14px;
    border-radius:12px;
  }

  .book-image-actions .clear-book-image-btn{
    min-width:86px;
  }
}
/* BOOK_IMAGE_BUTTON_ALIGN_FIX_END */


/* LOGIN_LOGO_SIZE_FIX_START */
.hero-title-row{
  display:flex;
  align-items:center;
  gap:18px;
}

.hero-main-logo{
  width:48px !important;
  height:48px !important;
  min-width:48px;
  border-radius:14px;
  object-fit:cover;
  display:block;
  box-shadow:0 10px 24px rgba(37,99,235,.18);
}

@media(max-width:720px){
  .hero-title-row{
    gap:12px;
  }

  .hero-main-logo{
    width:42px !important;
    height:42px !important;
    min-width:42px;
    border-radius:12px;
  }
}

@media(max-width:520px){
  .hero-title-row{
    align-items:flex-start;
  }

  .hero-main-logo{
    width:38px !important;
    height:38px !important;
    min-width:38px;
    margin-top:6px;
  }
}
/* LOGIN_LOGO_SIZE_FIX_END */

