/* Daily operations: quiet surfaces, readable type, one clear primary action. */
.operations-ui { --canvas:#f5f7f6; --line:#e5eae7; --ink:#20362f; --ink-soft:#718078; --brand:#236958; --brand-dark:#185441; --brand-soft:#eaf3ee; font-size:15px; }
.operations-ui .app-shell { grid-template-columns:220px minmax(0,1fr); }
.operations-ui .sidebar { padding:26px 14px; background:#fff; }
.operations-ui .brand-lockup { padding-bottom:26px; }
.operations-ui .nav-group small { padding:12px 14px; color:#94a098; font-size:11px; }
.operations-ui .nav-item { min-height:46px; border-radius:9px; margin:4px 0; font-weight:500; }
.operations-ui .nav-item b { font-weight:550; }
.operations-ui .nav-item.active { background:var(--brand-soft); color:var(--brand); border-color:transparent; box-shadow:none; }
.operations-nav-more { margin-top:20px; border-top:1px solid var(--line); padding-top:12px; }
.operations-nav-more > summary { padding:12px 14px; color:var(--ink-soft); cursor:pointer; font-size:13px; }
.operations-ui .topbar { background:rgba(255,255,255,.96); border-bottom:1px solid var(--line); }
.operations-ui .page-heading h1 { font-size:23px; font-weight:650; }
.operations-ui .teacher-date-control { display:none; }
.operations-ui .primary, .operations-ui .secondary { min-height:43px; border-radius:9px; font-weight:600; }
.operations-ui input, .operations-ui select, .operations-ui textarea { border-radius:9px; border-color:#dce3df; font-size:14px; }
.operations-ui .eyebrow { font-size:11px; font-weight:600; letter-spacing:.08em; }
.operations-ui #main-content { padding:28px; max-width:1500px; margin:0 auto; width:100%; }
.operations-home-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:24px; }
.operations-home-heading h2 { font-size:27px; font-weight:650; margin:8px 0; }
.operations-home-heading p { margin:0; font-size:14px; }
.operations-date-picker { display:flex; align-items:center; gap:7px; }
.operations-date-picker input { width:155px; }
.operations-entry-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:28px; }
.operations-entry-card { display:block; padding:24px; margin:0; text-align:left; background:#fff; border:1px solid var(--line); border-radius:14px; color:var(--ink); box-shadow:0 3px 14px rgba(35,60,46,.025); }
button.operations-entry-card { transition:border-color .16s,background .16s; }
button.operations-entry-card:hover { background:#fcfefd; border-color:#a9c6b7; }
.operations-entry-number { display:block; color:#95aa9d; font-size:12px; margin-bottom:18px; }
.operations-entry-card > strong { display:block; font-size:22px; font-weight:650; margin-bottom:9px; }
.operations-entry-card > p { font-size:14px; color:var(--ink-soft); margin-bottom:20px; }
.operations-entry-link { display:block; font-size:14px; font-weight:600; color:var(--brand); padding:11px 0; }
.operations-student-search { display:flex; gap:8px; }
.operations-student-search input { min-width:0; }
.operations-day-courses { padding:23px; border:1px solid var(--line); border-radius:14px; background:#fff; }
.operations-ui .section-heading { margin-bottom:15px; }
.operations-ui .section-heading h3 { font-size:17px; font-weight:650; }
.operations-ui .section-heading p { color:var(--ink-soft); font-size:12px; margin:7px 0 0; }
.operations-ui .lesson-attendance-card { padding:16px; border:1px solid var(--line); border-radius:10px; background:#fff; gap:16px; }
.operations-ui .lesson-attendance-time strong { font-size:21px; font-weight:600; }
.operations-ui .lesson-attendance-main strong { font-size:16px; font-weight:600; }
.operations-ui .lesson-attendance-main span { font-size:12px; }
.operations-ui .lesson-attendance-main small { font-size:11px; color:#8a968e; }
.operations-ui .lesson-attendance-counts { display:none; }
.operations-ui .lesson-attendance-card > button { color:var(--brand); background:var(--brand-soft); border-color:transparent; font-size:12px; }
.operations-other-work { margin-top:24px; }
.operations-other-work > summary { cursor:pointer; color:var(--ink-soft); font-size:13px; padding:12px 0; }
.operations-other-work[open] > summary { margin-bottom:15px; }
.operations-ui .student-filter-panel { display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:16px; border:1px solid var(--line); border-radius:12px; background:#fff; margin-bottom:16px; }
.operations-ui .student-filter-panel .search-field { flex:1; min-width:220px; }
.operations-ui #student-grade-filter { width:130px; }
.student-extra-filters { position:relative; }
.student-extra-filters > summary { color:var(--ink-soft); padding:10px; font-size:13px; cursor:pointer; white-space:nowrap; }
.student-extra-filter-fields { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:15px; }
.operations-ui .student-extra-filters[open] { flex-basis:100%; order:3; border-top:1px solid var(--line); padding-top:8px; }
.operations-ui .table-wrap { border:1px solid var(--line); border-radius:12px; background:#fff; }
.operations-ui #students-body td { padding:19px 17px; font-size:14px; }
.operations-ui #students-body .student-cell strong { font-size:15px; font-weight:600; }
.operations-ui #students-body .student-cell small { font-size:10px; color:#9ba69f; margin-top:5px; }
.student-lesson-count { font-size:21px; font-weight:650; }
.account-review-filters { display:flex; align-items:center; flex-wrap:wrap; gap:16px; margin:18px 0; }
.account-review-filters .search-field { flex:1; min-width:200px; }
/* 账户页搜索框是独立输入框，不再复用带图标的网格布局，否则输入框只剩 22px */
.operations-ui .account-review-filters .search-field { display:block; width:auto; font-size:14px; color:var(--ink); }
.operations-ui .account-review-filters .search-field input {
  width:100%; min-height:40px; padding:0 14px;
  border:1px solid var(--line-strong); border-radius:12px; background:#fff;
}
.operations-ui .account-review-filters .search-field input::placeholder { color:#8d9a95; }
.account-pending-filter { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:500; }
.account-pending-filter input { width:18px; height:18px; min-height:18px; accent-color:var(--brand); }
.account-review-filters > span { font-size:12px; }
.account-batch-actions { display:flex; align-items:center; gap:10px; margin-left:auto; }
.account-batch-actions .small { font-size:13px; padding:8px 14px; }
.account-batch-actions .primary.small:disabled { opacity:.45; cursor:not-allowed; }
.opening-hint { margin:0 0 16px; padding:14px 16px; border:1px solid #f0c9a8; border-radius:12px; background:#fff6ee; color:#8a4a13; font-size:13.5px; line-height:1.7; }
.opening-hint strong { color:#b4530d; }
.account-select-col { width:44px; text-align:center; }
.account-select-col input { width:18px; height:18px; min-height:18px; accent-color:var(--brand); cursor:pointer; }
.account-row-opening td { background:linear-gradient(90deg,rgba(238,122,60,.05),rgba(238,122,60,0)); }
.account-row-actions { white-space:nowrap; }
.account-row-actions .row-action + .row-action { margin-left:8px; }
.opening-dialog-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:12px; }
.opening-dialog-actions .small { font-size:13px; padding:9px 16px; }
#opening-verify-form .form-grid label.full { grid-column:1/-1; }
#opening-verify-summary { margin:0 0 18px; font-size:13.5px; line-height:1.7; }
.operations-ui #course-account-summary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); border:1px solid var(--line); border-radius:12px; }
.operations-ui #course-account-summary > div { min-width:0; }
.operations-ui .row-action { font-size:13px; border-radius:8px; }
.operations-ui dialog { border-radius:16px; box-shadow:0 24px 80px rgba(15,38,27,.16); }
.operations-ui .dialog-form { padding:26px; }
.operations-ui .dialog-head h2 { font-size:21px; font-weight:650; line-height:1.5; }
.operations-ui .lesson-register-dialog { width:min(1050px,calc(100vw - 32px)); }
.lesson-registration-meta { display:flex; gap:15px; flex-wrap:wrap; color:var(--ink-soft); font-size:13px; margin-bottom:22px; }
.lesson-registration-meta > span:last-child { color:var(--brand); margin-left:auto; font-size:12px; }
.lesson-registration-layout { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:28px; }
.operations-ui .lesson-teaching-column .class-teaching-form { padding:0; border:0; margin:0; }
.operations-ui .lesson-teaching-column label { font-size:12px; color:var(--ink-soft); font-weight:500; margin-bottom:14px; }
.operations-ui #session-teaching-content { min-height:140px; font-size:15px; line-height:1.7; }
.lesson-optional-fields { margin:15px 0 4px; }
.lesson-optional-fields > summary { cursor:pointer; color:var(--ink-soft); font-size:12px; padding:8px 0; }
.lesson-optional-fields[open] > summary { margin-bottom:8px; }
.operations-ui .teaching-save-row { flex-wrap:wrap; }
.operations-ui .teaching-save-row small { font-size:11px; }
.operations-ui .teaching-save-row .text-button { font-size:12px; padding:5px 0; }
.operations-ui .consumption-select-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; padding:0 0 10px; font-size:12px; }
.consumption-student-wrap > .text-button { padding:3px 12px 10px; font-size:12px; }
.session-student-kind { display:inline-block; font-style:normal; font-size:10px; color:var(--brand); background:#edf5f1; border-radius:4px; padding:2px 5px; margin-left:6px; }
.session-student-dialog { width:min(520px,calc(100vw - 24px)); max-height:calc(100dvh - 24px); }
.session-student-dialog .dialog-form { padding:24px; }
.session-student-dialog .dialog-actions { position:sticky; bottom:0; z-index:2; background:#fff; padding:14px 0 8px; }
.session-student-types { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:12px 0; }
.session-student-types label { display:flex; align-items:center; gap:9px; padding:13px 11px; border:1px solid var(--line); border-radius:9px; cursor:pointer; }
.session-student-types label:has(input:checked) { background:#edf6f1; border-color:var(--brand); }
.session-student-types label span { display:grid; gap:4px; }
.session-student-types small { font-size:11px; color:var(--ink-soft); font-weight:400; }
.session-student-types input, .session-student-option input { width:17px; height:17px; flex-shrink:0; }
.session-student-search { display:flex; gap:8px; align-items:center; }
.session-student-search input { min-width:0; flex:1; }
#session-student-results { max-height:210px; overflow:auto; margin:10px 0; }
.session-student-option { display:flex; align-items:center; gap:10px; border:1px solid var(--line); border-radius:8px; padding:11px; margin:7px 0; cursor:pointer; }
.session-student-option span { display:grid; gap:3px; }
.session-student-option small { font-size:11px; color:var(--ink-soft); }
.session-addition-preview { margin-top:12px; padding:14px; background:#f2f7f4; border-radius:9px; font-size:13px; line-height:1.6; }
.session-addition-preview p { margin:7px 0 0; }
.session-registration-fields { border-top:1px solid var(--line); margin-top:14px; padding-top:14px; }
.session-registration-context { padding:11px 13px; background:#f4f7f5; border-radius:8px; font-size:12px; line-height:1.6; margin-bottom:12px; }
.session-registration-context strong,.session-registration-context small { display:block; }
.session-registration-summary { display:grid; gap:7px; margin:13px 0; padding:13px; background:#f3f7f4; border-radius:8px; font-size:13px; line-height:1.6; }
.session-registration-summary p { margin:0; }
.schedule-cleanup-notice { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:0 0 12px; font-size:12px; color:#8a6525; }
.schedule-cleanup-card { padding:16px; margin:14px 0; border:1px solid var(--line); border-radius:10px; font-size:13px; line-height:1.6; }
.schedule-cleanup-select { display:flex; gap:9px; align-items:flex-start; }
.schedule-cleanup-select input { width:18px; height:18px; flex-shrink:0; margin-top:3px; }
.schedule-cleanup-comparison { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin:12px 0; padding:12px; background:#f4f7f5; border-radius:8px; }
.schedule-cleanup-comparison p { margin:0; }
.schedule-cleanup-comparison span,.schedule-cleanup-comparison small { display:block; }
.schedule-cleanup-attention { color:#8a6525; }
.schedule-cleanup-path { overflow-wrap:anywhere; font-size:12px; }
.schedule-cleanup-dialog details summary { cursor:pointer; }
.consumption-summary { margin:18px 0; border:1px solid var(--line); border-radius:10px; padding:16px; background:var(--surface); }
.consumption-summary-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:12px; }
.consumption-summary-head h3 { margin:0; font-size:14px; }
.consumption-summary-head label { font-size:12px; display:flex; align-items:center; gap:8px; }
.consumption-summary-head input[type=month] { padding:5px 8px; border:1px solid var(--line-strong); border-radius:6px; font-size:12px; color:inherit; background:var(--surface); }
.consumption-summary .summary-strip { border:1px solid var(--line); border-radius:8px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.consumption-columns { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:14px; }
.consumption-panel h4 { margin:0 0 8px; font-size:12px; color:var(--ink-soft); font-weight:600; }
.consumption-line { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:7px 0; border-bottom:1px dashed var(--line); font-size:12.5px; }
.consumption-line:last-child { border-bottom:0; }
.consumption-line .danger { color:var(--danger); }
.consumption-line .trend-bar { flex:1; height:8px; border-radius:4px; background:#eef1ee; overflow:hidden; margin:0 8px; }
.consumption-line .trend-bar i { display:block; height:100%; background:var(--accent); border-radius:4px; }
.student-low-balance { color:var(--danger); }
.operations-todos { margin:18px 0; }
.operations-todo-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:10px; }
.operations-todo-item { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--line); border-radius:10px; background:var(--surface); cursor:pointer; text-align:left; font:inherit; color:inherit; }
.operations-todo-item:hover { border-color:var(--accent); }
.operations-todo-count { flex-shrink:0; min-width:32px; height:32px; display:flex; align-items:center; justify-content:center; border-radius:8px; background:var(--accent-soft); color:var(--accent); font-weight:700; font-size:15px; }
.operations-todo-copy { flex:1; min-width:0; }
.operations-todo-copy strong { display:block; font-size:13px; }
.operations-todo-copy small { color:var(--ink-soft); font-size:11px; }
.operations-todo-item em { flex-shrink:0; font-style:normal; font-size:12px; color:var(--accent); }
.audit-toolbar { display:flex; align-items:center; gap:12px; }
.audit-toolbar label { font-size:12px; display:flex; align-items:center; gap:8px; }
.audit-toolbar select { padding:5px 8px; border:1px solid var(--line-strong); border-radius:6px; font-size:12px; color:inherit; background:var(--surface); }
@media(max-width:600px) { .schedule-cleanup-comparison { grid-template-columns:1fr; } .schedule-cleanup-dialog .dialog-actions { flex-wrap:wrap; } .consumption-summary .summary-strip { grid-template-columns:repeat(2,minmax(0,1fr)); } .consumption-columns { grid-template-columns:1fr; } }
.operations-ui .consumption-select-toolbar label { font-size:12px; font-weight:500; }
.operations-ui .consumption-student-list { max-height:340px; overflow:auto; padding:1px 3px 1px 1px; }
.operations-ui .consumption-student { padding:13px 12px; border-radius:10px; min-height:65px; }
.operations-ui .consumption-student-copy strong { font-size:14px; font-weight:600; }
.operations-ui .consumption-student-copy small { font-size:11px; }
.operations-ui .consumption-student-units { font-size:11px; font-weight:500; color:var(--ink-soft); }
.operations-ui #consumption-selected-count { font-size:12px; color:var(--brand); }
.lesson-more-actions { font-size:12px; margin-top:8px; font-weight:500; }
.operations-ui .lesson-primary-action { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--line); padding-top:18px; margin-top:16px; }
.lesson-primary-action > span { color:var(--ink-soft); font-size:12px; }
.operations-ui .lesson-register-dialog > .dialog-form > .dialog-actions { display:none; }
.is-reviewing .lesson-registration-layout, .is-reviewing .lesson-primary-action { display:none; }
.operations-ui .consumption-review { border:0; padding:6px 0 0; margin:0; }
.operations-ui .consumption-review h3 { font-size:23px; font-weight:650; }
.consumption-review-content { background:#f5f8f6; padding:16px; border-radius:10px; margin:16px 0; }
.consumption-review-content p { white-space:pre-wrap; margin:8px 0 0; line-height:1.65; }
.consumption-review-warnings { background:#fff9ed; border-radius:9px; padding:13px; margin:16px 0; color:#876321; font-size:13px; }
.consumption-review-warnings summary { cursor:pointer; }
.consumption-review-warnings p { margin:9px 0 0; }
.consumption-review-actions { display:flex; justify-content:flex-end; gap:10px; border-top:1px solid var(--line); padding-top:18px; margin-top:20px; }
.operations-ui .detail-overview { gap:0; background:#f5f8f6; border-radius:10px; padding:16px 10px; }
.operations-ui .detail-overview div { border:0; padding:5px 12px; }
.operations-ui .detail-overview strong { font-size:16px; font-weight:600; }
.operations-ui #student-class-history { border:0; padding:0; }
.operations-ui .student-class-record { padding:18px; border-radius:11px; margin-top:3px; }
.operations-ui .student-class-record header strong { font-size:15px; font-weight:600; }
.operations-ui .student-class-record p { font-size:14px; color:#41594c; }
.student-more-records { border-top:1px solid var(--line); margin-top:22px; padding-top:12px; }
.student-more-records > summary { color:var(--ink-soft); cursor:pointer; padding:10px 0; font-size:13px; }
.student-more-records[open] > summary { margin-bottom:15px; }
@media(max-width:1050px) { .operations-ui .app-shell { grid-template-columns:200px minmax(0,1fr); } .operations-home-heading { align-items:flex-start; flex-direction:column; } }
@media(max-width:760px) {
  .operations-ui .app-shell { display:block; }
  .operations-ui #main-content { padding:18px 15px 100px; }
  .operations-ui #menu-button { display:grid; }
  .operations-ui .topbar { padding:12px 15px; gap:10px; }
  .operations-ui .topbar { display:grid; grid-template-columns:38px minmax(0,1fr); }
  .operations-ui .topbar-controls { display:grid; grid-column:1 / -1; width:100%; grid-template-columns:minmax(0,1fr) minmax(0,1fr) 32px; gap:8px; }
  .operations-ui:not(.role-teacher) .topbar-controls { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .operations-ui .topbar-controls .compact-select { width:100%; min-width:0; grid-column:auto; }
  .operations-ui .topbar-controls .compact-select > span { display:none; }
  .operations-ui .topbar-controls select { width:100%; font-size:12px; min-width:0; }
  .operations-ui .topbar-controls .user-chip { display:none; }
  .operations-ui .page-heading h1 { font-size:19px; }
  .operations-home-heading { gap:18px; margin-bottom:18px; }
  .operations-home-heading h2 { font-size:25px; }
  .operations-date-picker { width:100%; }
  .operations-date-picker input { flex:1; min-width:0; }
  .operations-entry-grid { grid-template-columns:1fr; gap:12px; margin-bottom:20px; }
  .operations-entry-card { padding:18px; }
  .operations-entry-number { margin-bottom:10px; }
  .operations-entry-card > strong { font-size:20px; }
  .operations-entry-card > p { margin-bottom:12px; }
  .operations-entry-link { padding:6px 0; }
  .operations-day-courses { padding:17px; }
  .operations-ui .lesson-attendance-card { grid-template-columns:60px minmax(0,1fr); gap:12px; padding:13px; }
  .operations-ui .lesson-attendance-card > button { grid-column:1 / -1; }
  .operations-ui .student-filter-panel { padding:13px; gap:9px; }
  .operations-ui .student-filter-panel .search-field { flex-basis:100%; min-width:0; }
  .operations-ui #student-grade-filter { width:auto; flex:1; }
  .operations-ui .mobile-bottom-nav { grid-template-columns:repeat(4,minmax(0,1fr)); height:72px; box-shadow:none; }
  .operations-ui.role-hq_admin .mobile-bottom-nav, .operations-ui.role-store_admin .mobile-bottom-nav { grid-template-columns:repeat(5,minmax(0,1fr)); }
  .operations-ui .mobile-bottom-nav button { font-size:11px; gap:5px; }
  .operations-ui .mobile-bottom-nav button span { font-size:12px; }
  .operations-ui .toast-region { bottom:calc(84px + env(safe-area-inset-bottom)); }
  .operations-ui .dialog-form { padding:18px; }
  .operations-ui .lesson-register-dialog { width:calc(100vw - 16px); }
  .operations-ui .dialog-head h2 { font-size:18px; }
  .lesson-registration-layout { grid-template-columns:1fr; gap:24px; }
  .lesson-registration-meta { gap:9px; font-size:12px; }
  .lesson-registration-meta > span:last-child { margin-left:0; }
  .operations-ui #session-teaching-content { min-height:100px; }
  .operations-ui .consumption-student-list { max-height:310px; }
  .lesson-primary-action > span { max-width:40%; }
  .operations-ui .lesson-primary-action .primary { min-width:150px; }
  .operations-ui .detail-overview { grid-template-columns:1fr 1fr; }
  .operations-ui #course-account-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .operations-ui .student-class-record { padding:14px; }
}
@media(prefers-reduced-motion:reduce) { .operations-ui * { transition:none !important; scroll-behavior:auto !important; } }

/* 录播派课 */
.operations-ui .assign-layout { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:16px; align-items:start; }
.operations-ui .assign-pane { background:#fff; border:1px solid var(--line-soft,#e4e6eb); border-radius:12px; padding:16px; min-width:0; }
.operations-ui .assign-pane-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:12px; }
.operations-ui .assign-pane-head h3 { margin:0; font-size:15px; }
.operations-ui .assign-pane-head small { display:block; margin-top:4px; color:#6b7280; font-size:12px; }
.operations-ui .assign-stages { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:9px; }
.operations-ui .assign-stage { display:inline-flex; align-items:center; gap:6px; padding:5px 12px; border:1px solid #e2e8e5; border-radius:999px; background:#fff; color:#374151; font-size:13px; line-height:1.5; cursor:pointer; }
.operations-ui .assign-stage small { font-size:11px; color:#9ca3af; font-weight:600; }
.operations-ui .assign-stage:hover { border-color:#bfe0d5; background:#f7fbf9; }
.operations-ui .assign-stage.active { border-color:#0f8a72; background:#eaf6f1; color:#0b5f4d; font-weight:600; }
.operations-ui .assign-stage.active small { color:#0f8a72; }
/* 逐层下钻：一级一屏的入口行（学段 / 课程 / 章节） */
.operations-ui .assign-entry { flex:0 0 auto; display:flex; align-items:center; gap:10px; width:100%; box-sizing:border-box; padding:11px 12px; border:1px solid #e6eae8; border-radius:10px; background:#fff; text-align:left; font:inherit; color:inherit; cursor:pointer; }
.operations-ui .assign-entry:hover { border-color:#bfe0d5; background:#f7fbf9; }
.operations-ui .assign-entry:active { background:#eef7f3; }
.operations-ui .assign-entry-label { display:flex; flex-direction:column; gap:2px; flex:1 1 auto; min-width:0; }
.operations-ui .assign-entry-title { font-size:13.5px; font-weight:600; color:#1f2f2a; line-height:1.4; word-break:break-word; }
.operations-ui .assign-entry-meta { font-size:12px; color:#6b7280; }
.operations-ui .assign-entry-chevron { flex:0 0 auto; color:#8d9a96; font-size:18px; line-height:1; }
/* 文件夹小图标（纯 CSS，无字体依赖） */
.operations-ui .assign-entry-icon { flex:0 0 auto; position:relative; width:17px; height:13px; margin:4px 2px 0 1px; border:1.5px solid #b6c7c0; border-radius:2px; background:#f2f8f5; }
.operations-ui .assign-entry-icon::before { content:''; position:absolute; left:-1.5px; top:-5px; width:9px; height:5px; border:1.5px solid #b6c7c0; border-bottom:0; border-radius:2px 2px 0 0; background:#f2f8f5; }
.operations-ui .assign-entry-icon-file { border-radius:2px; height:15px; margin-top:3px; background:#f7f8f8; border-color:#cdd6d2; }
.operations-ui .assign-entry-icon-file::before { display:none; }
.operations-ui .assign-entry-flat { background:#fbfcfd; }
.operations-ui .assign-entry-flat .assign-entry-title { font-weight:500; color:#4b5563; }
.operations-ui .assign-entry-check { flex:0 0 17px; display:flex; align-items:center; }
.operations-ui .assign-entry-check input { width:17px; height:17px; min-width:17px; max-width:17px; margin:0; accent-color:#0f8a72; cursor:pointer; }
.operations-ui .assign-crumb-link { border:0; background:#eef6f3; cursor:pointer; font:inherit; }
.operations-ui .assign-crumb-link:hover { background:#dcefe8; }
/* 本章课时关卡头（滚到哪都在） */
.operations-ui .assign-lesson-bar { position:sticky; top:0; z-index:1; display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:8px 10px; margin-bottom:2px; border-radius:8px; background:#f1f8f5; border:1px solid #e0efe8; }
.operations-ui .assign-lesson-bar-title { font-size:13px; font-weight:600; color:#12564a; }
.operations-ui .assign-lesson-bar-count { font-size:12px; color:#0f7a64; }
.operations-ui .assign-lesson-bar .text-button { margin-left:0; flex:0 0 auto; }
.operations-ui .assign-lesson-bar .text-button:first-of-type { margin-left:auto; }
.operations-ui .assign-filters { display:flex; gap:8px; margin-bottom:10px; }
.operations-ui .assign-filters select, .operations-ui .assign-filters input { min-width:0; }
.operations-ui .assign-filters select { flex:0 0 44%; }
.operations-ui .assign-filters input { flex:1 1 auto; }
.operations-ui .assign-list { max-height:520px; overflow:auto; display:flex; flex-direction:column; gap:6px; padding-right:4px; }
.operations-ui .assign-row { flex:0 0 auto; display:flex; gap:10px; align-items:center; padding:8px 10px; border:1px solid #eceef2; border-radius:8px; background:#fbfcfd; }
.operations-ui .assign-row:hover { border-color:#c9d4e5; background:#f5f8fc; }
.operations-ui .assign-row.checked { border-color:#2f6fd0; background:#eef4fd; }
.operations-ui .assign-row-main { flex:1 1 auto; min-width:0; display:flex; gap:10px; align-items:flex-start; cursor:pointer; }
.operations-ui .assign-row input { margin-top:3px; flex:0 0 auto; }
.operations-ui .assign-row-body { min-width:0; flex:1 1 auto; }
.operations-ui .assign-row-title { font-size:13px; line-height:1.45; color:#111827; word-break:break-word; }
.operations-ui .assign-row-meta { font-size:12px; color:#6b7280; margin-top:2px; }
/* 课时行右端的「观看」：布置前先预览一遍再决定 */
.operations-ui .assign-preview-btn { flex:0 0 auto; align-self:center; padding:5px 12px; border:1px solid #cfdbe8; border-radius:999px; background:#fff; color:#1f5aa6; font-size:12.5px; font-weight:600; cursor:pointer; white-space:nowrap; }
.operations-ui .assign-preview-btn:hover { border-color:#1f5aa6; background:#eff5fc; }
.operations-ui .assign-preview-btn:active { background:#e2edfa; }
/* 课堂预览浮层 */
.lesson-preview-backdrop { position:fixed; inset:0; z-index:1200; display:flex; align-items:center; justify-content:center; padding:24px; background:rgba(12,20,33,.62); }
.lesson-preview-panel { width:min(980px,100%); min-height:min(540px,calc(100vh - 48px)); max-height:calc(100vh - 48px); display:flex; flex-direction:column; border-radius:14px; overflow:hidden; background:#0f1724; box-shadow:0 24px 70px rgba(0,0,0,.45); }
.lesson-preview-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; background:#16202f; color:#e8eef7; }
.lesson-preview-title { display:flex; flex-direction:column; gap:2px; min-width:0; }
.lesson-preview-title strong { font-size:14px; line-height:1.4; font-weight:600; word-break:break-word; }
.lesson-preview-meta { font-size:12px; color:#93a4bb; }
/* 主题的 body[class][class] .secondary 同样是三个类，靠 body.preview-open 再加一层特异性压过去，
   否则浮层头部会变成一块白色实心按钮 */
body.preview-open .lesson-preview-panel .lesson-preview-head button.secondary { flex:0 0 auto; min-height:38px; padding:7px 16px; border:1px solid #3a4a60; border-radius:999px; background:#1e2a3c; color:#dbe6f4; font-size:13px; box-shadow:none; }
body.preview-open .lesson-preview-panel .lesson-preview-head button.secondary:hover { border-color:#5d7a9c; background:#26354b; color:#ffffff; }
.lesson-preview-stage { flex:1 1 auto; min-height:0; display:flex; align-items:center; justify-content:center; background:#000; padding:0; position:relative; }
.lesson-preview-buffering { position:absolute; top:14px; left:50%; transform:translateX(-50%); padding:7px 15px; border-radius:999px; background:rgba(11,20,33,.86); color:#e6eefb; font-size:12.5px; white-space:nowrap; pointer-events:none; box-shadow:0 4px 14px rgba(0,0,0,.35); }
.lesson-preview-stage video { width:100%; height:100%; max-height:calc(100vh - 48px - 60px); display:block; background:#000; }
.lesson-preview-status { padding:60px 24px; color:#9fb0c6; font-size:13px; text-align:center; }
.lesson-preview-failed { display:flex; flex-direction:column; align-items:center; gap:10px; padding:56px 28px; text-align:center; }
.lesson-preview-failed strong { color:#f3f6fb; font-size:14.5px; }
.lesson-preview-failed span { max-width:420px; color:#9fb0c6; font-size:13px; line-height:1.7; }
.lesson-preview-failed button.secondary { min-height:36px; padding:7px 18px; border:1px solid #3a4a60; border-radius:999px; background:#1e2a3c; color:#dbe6f4; font-size:13px; }
.lesson-preview-failed button.secondary:hover { border-color:#5d7a9c; background:#26354b; color:#ffffff; }
/* 同关闭按钮：主题的 .secondary 是三个类，这里用四类特异性把它压回去 */
body.preview-open .lesson-preview-panel .lesson-preview-failed button.secondary { background:#1e2a3c; color:#dbe6f4; border:1px solid #3a4a60; box-shadow:none; }
body.preview-open .lesson-preview-panel .lesson-preview-failed button.secondary:hover { background:#26354b; color:#ffffff; border-color:#5d7a9c; }
body.preview-open { overflow:hidden; }
.operations-ui .assign-pager { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:10px; font-size:12px; color:#6b7280; }
/* 学段 → 课程 → 章节 → 课时 层级 */
.operations-ui .assign-crumbs { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:0 0 8px; font-size:12.5px; color:#6b7280; }
.operations-ui .assign-crumbs:empty { display:none; }
.operations-ui .assign-crumb { padding:2px 8px; border-radius:999px; background:#eef6f3; color:#0f7a64; font-weight:600; }
.operations-ui .assign-crumb-sep { color:#c4cdc9; }
.operations-ui .assign-crumb-query { color:#6b7280; }
.operations-ui .assign-chapter { flex:0 0 auto; border:1px solid #e6eae8; border-radius:10px; background:#fff; overflow:hidden; }
.operations-ui .assign-chapter + .assign-chapter { margin-top:8px; }
.operations-ui .assign-chapter-head { display:flex; align-items:center; gap:10px; padding:9px 12px; background:#f7faf9; cursor:pointer; }
.operations-ui .assign-chapter-head:hover { background:#f1f7f4; }
.operations-ui .assign-chapter.open { border-color:#cfe6dd; box-shadow:0 2px 10px rgba(15,138,114,.07); }
.operations-ui .assign-chapter.open .assign-chapter-head { background:#f1f8f5; border-bottom:1px solid #e6eae8; }
.operations-ui .assign-chapter-chevron { flex:0 0 auto; width:12px; color:#0f8a72; font-size:11px; }
.operations-ui .assign-chapter-label { display:flex; align-items:center; gap:9px; flex:1 1 auto; min-width:0; cursor:pointer; font-weight:600; color:#1f2f2a; }
.operations-ui .assign-chapter-label input { flex:0 0 17px; width:17px; height:17px; min-width:17px; max-width:17px; margin:0; accent-color:#0f8a72; cursor:pointer; }
.operations-ui .assign-chapter-title { font-size:13.5px; line-height:1.4; word-break:break-word; }
.operations-ui .assign-chapter-meta { flex:0 0 auto; font-size:12px; color:#6b7280; }
.operations-ui .assign-chapter-toggle { flex:0 0 auto; color:#0f7a64; font-size:12.5px; padding:4px 6px; border-radius:6px; user-select:none; }
.operations-ui .assign-chapter-toggle:hover { background:#e7f4ef; }
.operations-ui .assign-chapter-body { display:flex; flex-direction:column; gap:6px; padding:8px 10px 10px 14px; }
.operations-ui .assign-chapter-body.hidden { display:none; }
.operations-ui .assign-tabs { display:flex; gap:8px; margin-bottom:10px; }
.operations-ui .assign-tabs button { flex:1 1 0; padding:7px 10px; border:1px solid #dfe3ea; border-radius:8px; background:#fff; font-size:13px; cursor:pointer; }
.operations-ui .assign-tabs button.active { border-color:#2f6fd0; background:#eef4fd; color:#1d4ed8; font-weight:600; }
.operations-ui .assign-form { margin-top:14px; display:flex; flex-direction:column; gap:10px; border-top:1px solid #eceef2; padding-top:12px; }
.operations-ui .assign-form label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:#4b5563; }
.operations-ui .assign-result { margin:0; font-size:13px; min-height:18px; }
.operations-ui .assign-result.ok { color:#166534; }
.operations-ui .assign-result.err { color:#b91c1c; }
.operations-ui .assign-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:10px; }
.operations-ui .assign-summary div { background:#f7f9fc; border-radius:8px; padding:8px; text-align:center; }
.operations-ui .assign-summary b { display:block; font-size:16px; }
.operations-ui .assign-summary small { color:#6b7280; font-size:11px; }
@media(max-width:900px) { .operations-ui .assign-layout { grid-template-columns:1fr; } }
@media(max-width:640px) {
  .operations-ui .assign-filters { flex-wrap:wrap; }
  .operations-ui .assign-filters select,
  .operations-ui .assign-filters input { flex:1 1 100%; }
  .operations-ui .assign-chapter-head { flex-wrap:wrap; gap:6px 10px; }
  .operations-ui .assign-chapter-meta { margin-left:26px; }
  .operations-ui .assign-lesson-bar { gap:6px 8px; }
  .operations-ui .assign-lesson-bar-title { flex:1 1 100%; }
  .operations-ui .assign-lesson-bar .text-button:first-of-type { margin-left:0; }
  .operations-ui .assign-lesson-bar .text-button:last-of-type { margin-left:0; }
  .operations-ui .assign-lesson-bar-count { margin-right:auto; }
  .operations-ui .assign-crumbs { gap:4px; font-size:12px; }
  .operations-ui .assign-crumb { padding:2px 7px; }
  .operations-ui .assign-list { max-height:400px; }
}

/* 家长周报台：按周汇总，改完直接复制发家长 */
.operations-ui .weekly-report { margin-top:18px; border:1px solid #e5e8ef; border-radius:12px; background:#fff; padding:14px 16px 16px; }
.operations-ui .weekly-toolbar { display:flex; flex-wrap:wrap; align-items:flex-end; gap:10px 14px; padding-bottom:12px; border-bottom:1px solid #eceef2; }
.operations-ui .weekly-toolbar label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:#4b5563; }
.operations-ui .weekly-toolbar input[type="date"], .operations-ui .weekly-toolbar input[type="search"], .operations-ui .weekly-toolbar select { padding:6px 8px; border:1px solid #dfe3ea; border-radius:8px; font-size:13px; background:#fff; min-width:150px; }
.operations-ui .weekly-toolbar .weekly-check { flex-direction:row; align-items:center; gap:6px; padding-bottom:7px; white-space:nowrap; }
.operations-ui .weekly-count { margin-left:auto; font-size:12px; color:#6b7280; padding-bottom:7px; }
.operations-ui .weekly-list { display:flex; flex-direction:column; gap:12px; margin-top:14px; }
.operations-ui .weekly-card { border:1px solid #e5e8ef; border-radius:10px; padding:12px 14px; background:#fcfdff; }
.operations-ui .weekly-card.sent { background:#f6fbf7; border-color:#cfe8d6; }
.operations-ui .weekly-card > header { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; }
.operations-ui .weekly-card > header strong { font-size:15px; color:#111827; }
.operations-ui .weekly-card > header small { display:block; font-size:12px; color:#6b7280; margin-top:2px; }
.operations-ui .weekly-sent { font-size:12px; color:#166534; background:#e7f6ec; border-radius:999px; padding:3px 10px; }
.operations-ui .weekly-draft { font-size:12px; color:#92400e; background:#fef3c7; border-radius:999px; padding:3px 10px; }
.operations-ui .weekly-chips { display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; }
.operations-ui .weekly-chip { font-size:12px; color:#374151; background:#f1f4f9; border:1px solid #e3e8f0; border-radius:999px; padding:3px 10px; }
.operations-ui .weekly-chip strong { color:#111827; }
.operations-ui .weekly-chip.warn { color:#b91c1c; background:#fef2f2; border-color:#fbd5d5; }
.operations-ui .weekly-text { width:100%; box-sizing:border-box; border:1px solid #dfe3ea; border-radius:8px; padding:10px 12px; font-size:13px; line-height:1.7; color:#1f2937; background:#fff; resize:vertical; font-family:inherit; }
.operations-ui .weekly-card > footer { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.operations-ui .weekly-card > footer .row-action { font-size:12px; }
@media(max-width:900px) { .operations-ui .weekly-toolbar { flex-direction:column; align-items:stretch; } .operations-ui .weekly-count { margin-left:0; } }
@media(max-width:900px) {
  .operations-ui .weekly-toolbar label, .operations-ui .weekly-toolbar input[type="date"],
  .operations-ui .weekly-toolbar input[type="search"], .operations-ui .weekly-toolbar select,
  .operations-ui .weekly-toolbar button { width:100%; box-sizing:border-box; min-width:0; }
  .operations-ui .weekly-toolbar button { padding:9px 12px; }
  .operations-ui .weekly-card > footer .row-action { flex:1 1 auto; text-align:center; }
  .operations-ui .weekly-text { font-size:13px; }
}

/* 家长端周报：打开就能看，不需要再等微信 */
.parent-weekly-childbar { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.parent-child-chip { display:flex; flex-direction:column; gap:2px; align-items:flex-start; padding:8px 14px; border:1px solid #e3e8f0; border-radius:10px; background:#fff; cursor:pointer; font-size:14px; color:#111827; }
.parent-child-chip small { font-size:11px; color:#6b7280; }
.parent-child-chip.active { border-color:#2563eb; background:#eff4ff; }
.parent-weekly-latest { border:1px solid #e5e8ef; border-radius:12px; background:#fff; padding:16px 18px; }
.parent-weekly-latest > header { display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:8px; padding-bottom:10px; border-bottom:1px solid #eceef2; }
.parent-weekly-latest > header h3 { margin:4px 0 0; font-size:17px; color:#111827; }
.parent-weekly-latest > header small { font-size:12px; color:#6b7280; }
.parent-weekly-week { font-size:12px; color:#2563eb; background:#eff4ff; border-radius:999px; padding:3px 10px; }
.parent-weekly-chips { display:flex; flex-wrap:wrap; gap:6px; margin:12px 0; }
.parent-weekly-chip { font-size:12px; color:#374151; background:#f1f4f9; border:1px solid #e3e8f0; border-radius:999px; padding:3px 10px; }
.parent-weekly-text { font-size:14px; line-height:1.85; color:#1f2937; }
.parent-weekly-text p { margin:0 0 8px; }
.parent-weekly-text p:last-child { margin-bottom:0; }
.parent-weekly-latest blockquote, .parent-weekly-item blockquote { margin:12px 0 0; padding:10px 12px; background:#fffdf5; border-left:3px solid #f0c36d; font-size:13px; line-height:1.7; color:#4b5563; }
.parent-weekly-pending { margin:12px 0 0; padding:10px 12px; background:#f8fafc; border:1px dashed #d5dbe5; border-radius:8px; font-size:13px; color:#4b5563; }
.parent-weekly-history { margin-top:18px; }
.parent-weekly-history h4 { margin:0 0 10px; font-size:14px; color:#374151; }
.parent-weekly-item { border:1px solid #e5e8ef; border-radius:10px; background:#fcfdff; padding:10px 14px; margin-bottom:8px; }
.parent-weekly-item summary { display:flex; flex-wrap:wrap; align-items:baseline; gap:8px; cursor:pointer; font-size:13px; color:#111827; }
.parent-weekly-item summary small { color:#6b7280; font-size:12px; }
.parent-weekly-item[open] { background:#fff; }
@media(max-width:900px) {
  .parent-weekly-latest { padding:14px; }
  .parent-weekly-latest > header { flex-direction:column; }
  .parent-weekly-text { font-size:14px; line-height:1.8; }
}

/* 学生列表里的动作按钮（上课记录 / 家长账号） */
.student-row-actions { display:flex; flex-wrap:wrap; gap:6px; }

/* 预览浮层与「观看」按钮：手机端全屏铺满，避免小屏挤压 */
@media(max-width:640px) {
  .operations-ui .assign-row { padding:8px; gap:8px; }
  .operations-ui .assign-preview-btn { padding:5px 10px; font-size:12px; }
  .lesson-preview-backdrop { padding:0; align-items:stretch; }
  .lesson-preview-panel { width:100%; max-height:100vh; height:100%; border-radius:0; }
  .lesson-preview-head { padding:10px 12px; }
  .lesson-preview-title strong { font-size:13.5px; }
  .lesson-preview-stage { flex:1 1 auto; }
  .lesson-preview-stage video { max-height:none; height:100%; object-fit:contain; }
  .lesson-preview-status { padding:40px 18px; }
}
