:root {
    --primary: #4F46E5;
    --primary-hover: #4338CA;
    --bg-color: #F9FAFB;
    --card-bg: #FFFFFF;
    --text-main: #111827;
    --text-muted: #6B7280;
    --border-color: #E5E7EB;
    --success: #10B981;
}

@media (prefers-color-scheme: dark) {
    :root {
        --primary: #6366F1;
        --primary-hover: #818CF8;
        --bg-color: #111827;
        --card-bg: #1F2937;
        --text-main: #F9FAFB;
        --text-muted: #9CA3AF;
        --border-color: #374151;
    }
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    background-color: var(--bg-color);
    color: var(--text-main);
    line-height: 1.6;
    width: 100%;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    transition: background-color 0.3s ease;
}

body.page-home {
    --page-content-width: 1180px;
}

body.page-course-home {
    --page-content-width: 1180px;
}

body.page-course,
body.page-keywords {
    --page-content-width: 1180px;
}

body.guest-access-locked {
    overflow: hidden;
}

body.guest-access-locked > :not(nav):not(#studentLoginModal):not(.student-login-modal) {
    filter: blur(8px);
    opacity: 0.22;
    pointer-events: none;
    user-select: none;
    -webkit-user-select: none;
    transition: filter 0.2s ease, opacity 0.2s ease;
}

body.guest-access-locked .student-login-modal {
    background: transparent;
    pointer-events: none;
}

body.guest-access-locked .student-login-dialog {
    pointer-events: auto;
}

body.guest-access-locked #studentLoginClose,
body.guest-access-locked #studentLoginCancel {
    display: none !important;
}

/* 导航栏 */
nav {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem 1rem;
    flex-wrap: wrap;
    width: 100%;
    padding: 1rem 2rem;
    background-color: var(--card-bg);
    border-bottom: 1px solid var(--border-color);
    position: sticky;
    top: 0;
    z-index: 100;
}

.site-nav-inner {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem 1rem;
    flex-wrap: wrap;
}

body:not(.admin-page) nav {
    justify-content: center;
    padding: 0 1rem;
}

body:not(.admin-page) .site-nav-inner {
    max-width: var(--page-content-width, 1180px);
    padding: 1rem 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        "brand identity"
        "links links";
    align-items: center;
    gap: 0.55rem 1rem;
}

body:not(.admin-page) .site-nav-inner > h1 {
    grid-area: brand;
    flex: 0 1 auto;
    width: auto;
}

body:not(.admin-page) .site-nav-inner > .top-nav-links {
    grid-area: links;
    width: 100%;
    justify-content: flex-end;
}

body:not(.admin-page) .site-nav-inner > .student-identity-bar {
    grid-area: identity;
}

nav h1 {
    font-size: 1.25rem;
    font-weight: 600;
    min-width: 0;
    flex: 1 1 320px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

nav a {
    color: var(--text-main);
    text-decoration: none;
    font-weight: 500;
}

.top-nav-links {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
    justify-content: flex-end;
    min-width: 0;
}

.top-nav-links a {
    padding: 0.45rem 0.7rem;
    border-radius: 0.5rem;
    border: 1px solid transparent;
    font-size: 0.92rem;
    white-space: nowrap;
}

.top-nav-links a[hidden] {
    display: none !important;
}

.top-nav-links a:hover,
.top-nav-links a.active {
    color: var(--primary);
    border-color: rgba(79, 70, 229, 0.25);
    background: rgba(79, 70, 229, 0.06);
}

/* 主容器 */
.container {
    width: 100%;
    max-width: var(--page-content-width, 800px);
    margin: 3rem auto;
    padding: 0 1rem;
}

.course-container {
    max-width: var(--page-content-width, 1180px);
}

.site-footer {
    margin-top: auto;
    padding: 1rem 1.5rem 1.25rem;
    border-top: 1px solid var(--border-color);
    color: var(--text-muted);
    text-align: center;
    font-size: 0.82rem;
}

.site-footer a {
    color: inherit;
    text-decoration: none;
}

.site-footer a:hover {
    color: var(--primary);
}

.admin-table-scroll {
    width: 100%;
    overflow-x: auto;
}

.vector-health-box {
    margin: 1rem 0;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    background: rgba(79, 70, 229, 0.04);
}

.vector-health-box h3 {
    margin: 0 0 0.5rem;
    font-size: 1rem;
}

.vector-health-row {
    margin: 0.25rem 0;
}

.vector-health-level {
    display: inline-flex;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    background: #E5E7EB;
    color: #374151;
    font-weight: 700;
}

.vector-health-level.ok {
    background: #D1FAE5;
    color: #047857;
}

.vector-health-level.warning {
    background: #FEF3C7;
    color: #B45309;
}

.vector-health-level.error {
    background: #FEE2E2;
    color: #B91C1C;
}

.admin-stats-panel {
    display: grid;
    gap: 1rem;
}

.admin-panel-intro {
    margin: 0.35rem 0 1rem;
    color: var(--text-muted);
    line-height: 1.65;
}

.usage-stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 0.85rem;
}

.usage-stat-card {
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 1rem;
    background: linear-gradient(135deg, rgba(79, 70, 229, 0.08), rgba(16, 185, 129, 0.06));
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
}

.usage-stat-card span {
    display: block;
    color: var(--text-muted);
    font-size: 0.86rem;
    margin-bottom: 0.35rem;
}

.usage-stat-card strong {
    display: block;
    color: var(--primary);
    font-size: 1.45rem;
    line-height: 1.15;
    font-variant-numeric: tabular-nums;
}

.usage-stat-card small {
    display: block;
    margin-top: 0.35rem;
    color: var(--text-muted);
    font-size: 0.76rem;
    line-height: 1.35;
}

.usage-stat-status.ok {
    color: #047857;
}

.usage-stat-status.warning {
    color: #B45309;
}

.usage-stat-status.error {
    color: #B91C1C;
}

.admin-stats-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}

.admin-stats-card {
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 1rem;
    background: var(--card-bg);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
}

.admin-stats-card.vector-health-box {
    margin: 0;
    background: rgba(79, 70, 229, 0.04);
}

.model-health-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 0.85rem;
}

.model-health-service {
    min-width: 0;
    padding: 0.85rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: rgba(79, 70, 229, 0.035);
}

.model-health-service h4 {
    margin: 0;
    font-size: 0.96rem;
    color: var(--text-main);
}

.model-health-heading,
.model-health-metrics {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.model-health-metrics {
    flex-wrap: wrap;
    justify-content: flex-start;
    margin: 0.75rem 0 0;
    color: var(--text-muted);
    font-size: 0.84rem;
}

.model-health-detail,
.model-health-message,
.model-health-error {
    margin: 0.55rem 0 0;
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: 1.55;
    overflow-wrap: anywhere;
}

.model-health-error {
    color: #B91C1C;
}

.model-health-level.unknown {
    background: #E5E7EB;
    color: #374151;
}

.admin-stats-card-wide {
    grid-column: 1 / -1;
}

.admin-card-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 0.85rem;
}

.admin-card-heading h3 {
    margin: 0;
    color: var(--primary);
    font-size: 1rem;
}

.admin-card-heading .hint-text {
    margin: 0.25rem 0 0;
    line-height: 1.55;
}

.personal-plan-notice span {
    display: block;
}

.personal-plan-notice span + span {
    margin-top: 0.2rem;
}

.personal-report-admin-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.personal-report-select-column,
.personal-report-select-cell {
    width: 2.8rem;
    min-width: 2.8rem;
    text-align: center;
}

.personal-report-select {
    width: 1rem;
    height: 1rem;
    accent-color: var(--primary);
}

.admin-table-card,
.admin-file-upload-card,
.process-status-card {
    margin-bottom: 1rem;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 1rem;
    background: var(--card-bg);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
}

.admin-table-card .admin-card-heading,
.admin-file-upload-card .admin-card-heading {
    margin-bottom: 0.75rem;
}

.admin-table-card table,
.raw-files-card table {
    margin: 0;
    box-shadow: none;
}

.login-logs-summary {
    margin: 0 0 0.85rem;
    padding: 0.62rem 0.8rem;
    border: 1px solid rgba(79, 70, 229, 0.16);
    border-radius: 0.75rem;
    background: rgba(79, 70, 229, 0.05);
    color: var(--text-muted);
    font-size: 0.86rem;
}

.operation-log-details-cell {
    min-width: 260px;
    max-width: 560px;
    white-space: normal;
    overflow-wrap: anywhere;
    color: var(--text-muted);
    line-height: 1.5;
}

.operation-log-status-cell {
    font-weight: 700;
    white-space: nowrap;
}

.operation-log-status-cell.success {
    color: #047857;
}

.operation-log-status-cell.failure {
    color: #B91C1C;
}

.login-log-list {
    display: grid;
    gap: 0.55rem;
}

.login-log-card {
    position: relative;
    padding: 0.62rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    background: var(--card-bg);
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.035);
}

.login-log-card.success {
    border-left: 4px solid #10B981;
}

.login-log-card.failure {
    border-left: 4px solid #EF4444;
}

.login-log-card.locked {
    border-left: 4px solid #F59E0B;
}

.login-log-card-header {
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    align-items: center;
    margin-bottom: 0.38rem;
}

.login-log-card-main,
.login-log-card-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.38rem;
    align-items: center;
}

.login-log-card-meta {
    justify-content: flex-end;
    color: var(--text-muted);
    font-size: 0.82rem;
    text-align: right;
    white-space: nowrap;
}

.login-log-type {
    font-weight: 700;
    color: var(--text-main);
    font-size: 0.9rem;
}

.login-log-status {
    display: inline-flex;
    align-items: center;
    padding: 0.12rem 0.48rem;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
}

.login-log-status.success {
    background: #D1FAE5;
    color: #047857;
}

.login-log-status.failure {
    background: #FEE2E2;
    color: #B91C1C;
}

.login-log-status.locked {
    background: #FEF3C7;
    color: #92400E;
}

.login-log-subject {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    padding: 0.18rem 0.55rem;
    border: 1px solid transparent;
    border-radius: 0.45rem;
    font-size: 0.82rem;
    line-height: 1.4;
    font-weight: 600;
    overflow-wrap: anywhere;
    word-break: break-word;
    min-width: 0;
    color: var(--text-main);
}

.login-log-subject-success {
    border-color: rgba(16, 185, 129, 0.24);
    background: rgba(209, 250, 229, 0.72);
    color: #047857;
}

.login-log-subject-danger {
    border-color: rgba(239, 68, 68, 0.25);
    background: rgba(254, 226, 226, 0.78);
    color: #991B1B;
}

.login-log-subject-warning {
    border-color: rgba(245, 158, 11, 0.28);
    background: rgba(254, 243, 199, 0.84);
    color: #92400E;
}

.login-log-detail-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.32rem 0.45rem;
    align-items: center;
}

.login-log-chip {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    padding: 0.1rem 0.42rem;
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 999px;
    background: rgba(248, 250, 252, 0.9);
    color: var(--text-muted);
    font-size: 0.78rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.login-log-chip-success {
    border-color: rgba(16, 185, 129, 0.18);
    background: rgba(209, 250, 229, 0.65);
    color: #047857;
}

.login-log-chip-danger {
    border-color: rgba(239, 68, 68, 0.18);
    background: rgba(254, 226, 226, 0.62);
    color: #991B1B;
}

.login-log-chip-warning {
    border-color: rgba(245, 158, 11, 0.22);
    background: rgba(254, 243, 199, 0.68);
    color: #92400E;
}

.login-log-chip-muted {
    color: #64748B;
}

.log-identity-row {
    display: flex;
    gap: 0.4rem;
    margin: 0.12rem 0;
    color: var(--text-muted);
    line-height: 1.5;
}

.log-identity-row strong {
    flex: 0 0 auto;
    color: var(--text-main);
    font-weight: 700;
}

.login-log-empty-card {
    padding: 1rem;
    border: 1px dashed var(--border-color);
    border-radius: 0.95rem;
    background: rgba(248, 250, 252, 0.7);
    color: var(--text-muted);
    text-align: center;
}

.log-identity-cell {
    min-width: 190px;
    line-height: 1.55;
    white-space: normal;
}

.admin-file-upload-card {
    border-color: rgba(79, 70, 229, 0.24);
    background: linear-gradient(135deg, rgba(79, 70, 229, 0.05), rgba(16, 185, 129, 0.04));
}

.admin-upload-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.admin-upload-row input[type="file"] {
    flex: 1 1 260px;
    min-width: 0;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.55rem;
    background: var(--bg-color);
    color: var(--text-main);
}

.admin-upload-row button {
    flex: 0 0 auto;
    white-space: nowrap;
}

.hint-text code {
    padding: 0.08rem 0.28rem;
    border-radius: 0.3rem;
    background: rgba(15, 23, 42, 0.06);
    color: #374151;
}

.low-spec-warning {
    margin-bottom: 1rem;
    padding: 1rem 1.2rem;
    border: 2px solid #EF4444;
    border-radius: 0.75rem;
    background: #FEF2F2;
    color: #B91C1C;
    font-weight: 700;
    font-size: 1.02rem;
    line-height: 1.55;
}

.raw-files-scroll {
    max-height: none;
    min-height: 0;
    overflow-x: auto;
    overflow-y: visible;
    border: 1px solid var(--border-color);
    border-radius: 0.8rem;
}

.raw-files-scroll thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--bg-color);
}

.raw-file-status {
    font-weight: 650;
    white-space: nowrap;
}

.raw-file-status.new {
    color: #B45309;
}

.raw-file-status.modified {
    color: #2563EB;
}

.raw-file-status.ready {
    color: #047857;
    font-weight: 600;
}

.pending-deletions-card {
    border-color: rgba(217, 119, 6, 0.35);
    background: rgba(255, 251, 235, 0.62);
}

.pending-delete-status {
    font-weight: 650;
    line-height: 1.45;
}

.pending-delete-status.quarantined,
.pending-delete-status.source_present {
    color: #92400E;
}

.pending-delete-status.source_missing {
    color: #B91C1C;
}

.pending-delete-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.pending-delete-action {
    min-height: 2rem;
    white-space: nowrap;
}

.table-danger-btn {
    padding: 0.28rem 0.55rem;
    font-size: 0.78rem;
}

.preprocess-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1rem;
}

.process-status-card {
    margin-top: 1rem;
}

.process-status-card h3 {
    margin: 0 0 0.9rem;
}

.process-status-card #procStatus,
.process-current-file #procFilename {
    color: var(--primary);
    font-weight: 700;
}

.process-current-file {
    margin: 0.85rem 0;
    font-size: 0.98rem;
}

.process-detail-text {
    margin: 0.8rem 0 0;
    padding: 0.65rem 0.75rem;
    border-radius: 0.55rem;
    background: #F3F4F6;
    color: #4B5563;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: 0.84rem;
    line-height: 1.55;
}

.danger-small-btn {
    flex: 0 0 auto;
    background: #EF4444;
    padding: 0.35rem 0.7rem;
    font-size: 0.85rem;
}

.top-query-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.top-query-list li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    padding: 0.55rem 0.7rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: rgba(248, 250, 252, 0.78);
    color: var(--text-main);
    font-size: 0.9rem;
    line-height: 1.45;
}

.top-query-list li span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.top-query-list li strong {
    flex: 0 0 auto;
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    background: rgba(79, 70, 229, 0.1);
    color: var(--primary);
    font-size: 0.78rem;
}

.top-query-list .top-query-empty {
    grid-column: 1 / -1;
}

.model-config-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1.2rem;
    row-gap: 0.9rem;
    align-items: stretch;
}

.model-config-card {
    position: relative;
    overflow: hidden;
    display: flex;
    min-width: 0;
    flex-direction: column;
    border-top: 2px solid var(--primary);
    background: var(--card-bg);
}

.model-config-card[data-config-kind="system"] {
    border-top-color: #2563eb;
}

.model-config-card[data-config-kind="password"] {
    border-top-color: #c2410c;
}

.model-config-card[data-config-kind="llm"] {
    border-top-color: #0f766e;
}

.model-config-card[data-config-kind="embedding"] {
    border-top-color: #7c3aed;
}

.model-config-card .admin-card-heading {
    align-items: flex-start;
    min-height: 0;
    margin-bottom: 0.65rem;
}

.model-config-kicker {
    display: inline-block;
    margin-bottom: 0.12rem;
    color: var(--text-muted);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.model-config-card .admin-card-heading h3 {
    margin-top: 0;
}

.model-config-card .admin-card-heading .hint-text {
    max-width: 46rem;
    font-size: 0.8rem;
    line-height: 1.4;
}

.model-config-inline-note {
    margin: 0.55rem 0 0;
    padding: 0.15rem 0 0.15rem 0.6rem;
    border-left: 2px solid rgba(37, 99, 235, 0.45);
    color: var(--text-muted);
    font-size: 0.78rem;
    line-height: 1.4;
}

.model-config-card-wide {
    grid-column: 1 / -1;
}

.model-config-style-card {
    grid-column: 1 / -1;
    margin-top: 1.25rem;
    border-top-color: #0891b2;
}

.general-qa-style-layout {
    display: grid;
    gap: 0.95rem;
}

.general-qa-style-controls {
    display: grid;
    grid-template-columns: max-content auto minmax(0, 1fr);
    align-items: end;
    gap: 0.75rem;
    padding-bottom: 0.8rem;
    border-bottom: 1px solid var(--border-color);
}

.general-qa-control-field {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
}

.general-qa-control-field label {
    flex: 0 0 auto;
    margin: 0;
    white-space: nowrap;
}

.general-qa-control-field select {
    width: 12rem;
    flex: 0 1 12rem;
    min-height: 2.45rem;
    padding: 0.55rem 2.2rem 0.55rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    appearance: none;
    background-color: var(--bg-color);
    background-image: linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);
    background-position: calc(100% - 15px) 50%, calc(100% - 10px) 50%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    color: var(--text-main);
    font-size: 0.9rem;
    line-height: 1.2;
}

.general-qa-control-field select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
}

.general-qa-control-field select:disabled,
.general-qa-edit-grid textarea:disabled,
.general-qa-style-controls .admin-checkbox-label input:disabled {
    cursor: not-allowed;
}

.general-qa-control-field select:disabled,
.general-qa-edit-grid textarea:disabled {
    background: var(--surface-muted, #f8fafc);
    color: var(--text-muted);
    opacity: 0.78;
}

.general-qa-preview-block label,
.general-qa-block-heading label {
    display: block;
    margin-bottom: 0.28rem;
    color: var(--text-main);
    font-size: 0.82rem;
    font-weight: 700;
}

.general-qa-style-controls .general-qa-enabled-row {
    min-height: 2.45rem;
    margin: 0;
    padding: 0 0.25rem;
    white-space: nowrap;
}

.general-qa-style-controls .general-qa-saved-state {
    align-self: center;
    justify-self: end;
    margin-left: 0;
}

.general-qa-edit-grid,
.general-qa-preview-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.2rem;
}

.general-qa-edit-block,
.general-qa-preview-block {
    min-width: 0;
}

.general-qa-edit-block {
    display: flex;
    flex-direction: column;
}

.general-qa-style-layout.is-disabled .general-qa-edit-block,
.general-qa-style-layout.is-disabled .general-qa-control-field {
    opacity: 0.72;
}

.general-qa-extract-progress {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    max-width: 20rem;
    margin: 0;
    padding: 0;
    color: var(--text-main);
    font-size: 0.76rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

.general-qa-extract-progress[hidden] {
    display: none !important;
}

.general-qa-extract-progress .general-qa-block-kicker {
    display: inline;
    flex: 0 0 auto;
    margin: 0;
    color: var(--primary);
}

.general-qa-extract-progress.is-complete {
    color: #047857;
}

.general-qa-extract-progress.is-complete .general-qa-block-kicker {
    color: #047857;
}

.general-qa-extract-progress.is-error {
    color: #B91C1C;
}

.general-qa-extract-progress.is-error .general-qa-block-kicker {
    color: #B91C1C;
}

.general-qa-block-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    min-height: 2.35rem;
    margin-bottom: 0.35rem;
}

.general-qa-block-heading > div:first-child {
    min-width: 0;
}

.general-qa-block-heading label {
    margin-bottom: 0;
}

.general-qa-block-kicker {
    display: block;
    margin-bottom: 0.12rem;
    color: var(--text-muted);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.general-qa-edit-grid textarea,
.general-qa-preview-grid textarea {
    width: 100%;
    box-sizing: border-box;
    resize: vertical;
}

.general-qa-edit-grid textarea {
    min-height: 11.5rem;
}

.general-qa-preview-grid {
    padding-top: 0.85rem;
    border-top: 1px solid var(--border-color);
}

.general-qa-preview-block textarea[readonly] {
    min-height: 8.3rem;
    background: var(--surface-muted, #f8fafc);
    color: var(--text-muted);
}

.general-qa-field-note,
.general-qa-privacy-note {
    display: flex;
    justify-content: space-between;
    gap: 0.65rem;
    flex-wrap: wrap;
    margin: 0.28rem 0 0;
    line-height: 1.35;
}

.general-qa-field-note span,
.general-qa-privacy-note span {
    color: var(--text-muted);
    white-space: nowrap;
}

.general-qa-example-actions {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.55rem;
    min-width: 0;
}

.general-qa-example-actions button {
    flex: 0 0 auto;
    white-space: nowrap;
}

.general-qa-example-actions .inline-status-text {
    max-width: 15rem;
    overflow-wrap: anywhere;
    text-align: right;
}

.general-qa-style-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--border-color);
}

.general-qa-style-actions .inline-status-text {
    min-height: 1.35rem;
}

.model-config-form {
    display: grid;
    flex: 1 1 auto;
    gap: 0.55rem;
}

.model-config-card[data-config-kind="system"] .model-config-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.model-config-card[data-config-kind="llm"] .model-config-form,
.model-config-card[data-config-kind="embedding"] .model-config-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1.2rem;
}

.model-config-card[data-config-kind="password"] .model-config-form {
    grid-template-columns: 1fr;
}

.model-config-card[data-config-kind="llm"] .model-config-form .form-group:first-child,
.model-config-card[data-config-kind="embedding"] .model-config-form > .form-group:first-child,
.model-config-card[data-config-kind="embedding"] .model-config-subpanel {
    grid-column: 1 / -1;
}

.model-config-card[data-config-kind="embedding"] #apiEmbConfig {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1.2rem;
}

.model-config-card[data-config-kind="embedding"] #apiEmbConfig .model-config-test-actions {
    grid-column: 1 / -1;
}

.model-config-form .form-group {
    margin: 0;
    padding: 0;
    border: 0;
    background: transparent;
}

.model-config-form .form-group label {
    margin-bottom: 0.22rem;
    font-size: 0.82rem;
}

.model-config-form .form-group .hint-text {
    margin: 0.22rem 0 0;
    font-size: 0.76rem;
    line-height: 1.35;
}

.model-config-subpanel .form-group {
    padding: 0;
    border: 0;
    background: transparent;
}

.model-config-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-top: 0.7rem;
    padding-top: 0.6rem;
    border-top: 0;
}

.model-config-card > .model-config-actions {
    margin-top: auto;
}

.model-config-subpanel {
    display: grid;
    gap: 0.55rem;
    padding: 0.35rem 0 0.1rem 0.75rem;
    border: 0;
    border-left: 2px solid rgba(79, 70, 229, 0.45);
    border-radius: 0;
    background: transparent;
}

.model-config-subpanel .hint-text {
    margin: 0;
}

.inline-status-text {
    color: var(--text-muted);
    font-size: 0.9rem;
}

.general-qa-saved-state {
    display: inline-flex;
    align-items: center;
    margin-left: 0.45rem;
    padding: 0.12rem 0.42rem;
    border: 1px solid #A7F3D0;
    border-radius: 999px;
    background: #ECFDF5;
    color: #047857;
    font-size: 0.72rem;
    font-weight: 700;
    white-space: nowrap;
}

.general-qa-saved-state.is-dirty {
    border-color: #FDE68A;
    background: #FFFBEB;
    color: #B45309;
}

#generalQaCustomCount,
#generalQaExampleCount {
    color: var(--text-muted);
    white-space: nowrap;
}

.general-qa-enabled-label,
.admin-checkbox-label {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    gap: 0.45rem;
    color: var(--text-main);
    font-size: 0.82rem;
}

.general-qa-enabled-label input,
.admin-checkbox-label input {
    order: -1;
    width: auto;
    min-height: 0;
}

.model-password-form input {
    min-height: 2.4rem;
}

.model-password-status {
    min-height: 1.35rem;
    overflow-wrap: anywhere;
}

.model-health-section {
    margin-top: 1.25rem;
    padding-top: 1.1rem;
    border-top: 1px solid var(--border-color);
}

.danger-action-btn {
    background: #DC2626;
}

@media (max-width: 900px) {
    .admin-stats-layout {
        grid-template-columns: 1fr;
    }

    .personal-report-admin-actions {
        width: 100%;
        justify-content: flex-start;
    }

    .model-config-layout {
        grid-template-columns: 1fr;
    }

    .model-config-card[data-config-kind="system"] .model-config-form {
        grid-template-columns: 1fr;
    }

    .model-config-card[data-config-kind="llm"] .model-config-form,
    .model-config-card[data-config-kind="embedding"] .model-config-form,
    .model-config-card[data-config-kind="embedding"] #apiEmbConfig {
        grid-template-columns: 1fr;
    }

    .general-qa-edit-grid,
    .general-qa-preview-grid {
        grid-template-columns: 1fr;
    }

    .general-qa-style-controls {
        display: flex;
        align-items: center;
        flex-wrap: wrap;
    }

    .general-qa-control-field {
        flex: 1 1 16rem;
    }

    .general-qa-example-actions {
        flex-wrap: wrap;
        justify-content: flex-start;
    }

    .general-qa-example-actions .inline-status-text {
        text-align: left;
    }

    .model-config-card[data-config-kind="llm"] .model-config-form .form-group:first-child,
    .model-config-card[data-config-kind="embedding"] .model-config-form > .form-group:first-child,
    .model-config-card[data-config-kind="embedding"] .model-config-subpanel,
    .model-config-card[data-config-kind="embedding"] #apiEmbConfig .model-config-test-actions {
        grid-column: auto;
    }

    .admin-card-heading {
        flex-direction: column;
    }

    .admin-upload-row {
        align-items: stretch;
        flex-direction: column;
    }

    .admin-upload-row button {
        width: 100%;
    }
}

@media (max-width: 700px) {
    .general-qa-block-heading {
        flex-wrap: wrap;
    }

    .general-qa-example-actions {
        width: 100%;
        justify-content: space-between;
    }

    .top-query-list {
        grid-template-columns: 1fr;
    }
}

.keyword-pagination,
.my-plans-list {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    flex-wrap: wrap;
}

.keyword-pagination {
    justify-content: center;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px dashed var(--border-color);
}

.my-plans-list {
    flex-direction: column;
    align-items: stretch;
    margin-top: 1rem;
}

.my-plan-card {
    margin: 0;
    box-shadow: none;
}

.my-plan-card h3 {
    margin: 0;
}

.aspect-audit-toolbar {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(170px, 220px) minmax(190px, 240px) auto;
    gap: 0.75rem;
    align-items: center;
    margin-bottom: 1rem;
}

.aspect-audit-toolbar-sticky {
    position: sticky;
    top: 0;
    z-index: 20;
    padding: 0.85rem 0 0.75rem;
    background: linear-gradient(180deg, var(--card-bg) 78%, rgba(255, 255, 255, 0.88));
    backdrop-filter: blur(8px);
}

.aspect-audit-toolbar input,
.aspect-audit-toolbar select {
    width: 100%;
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: var(--card-bg);
    color: var(--text-main);
}

.aspect-audit-toolbar-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.aspect-audit-summary {
    margin: 0.5rem 0 1rem;
    padding: 0.7rem 0.85rem;
    border-radius: 0.65rem;
    background: rgba(15, 118, 110, 0.08);
}

.aspect-audit-list {
    display: grid;
    gap: 1rem;
}

.aspect-audit-group {
    border: 1px solid var(--border-color);
    border-radius: 1rem;
    background: var(--card-bg);
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.05);
    overflow: hidden;
    scroll-margin-top: 6.5rem;
}

.aspect-audit-group-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    padding: 0.95rem 1rem;
    background: linear-gradient(135deg, rgba(15, 118, 110, 0.08), rgba(79, 70, 229, 0.06));
    border-bottom: 1px solid rgba(148, 163, 184, 0.28);
}

.aspect-audit-group.collapsed .aspect-audit-group-header {
    border-bottom: 0;
}

.aspect-audit-group-header h3 {
    margin: 0;
    color: var(--primary);
    font-size: 1.02rem;
}

.aspect-audit-group-header p {
    margin: 0.28rem 0 0;
    color: var(--text-muted);
    font-size: 0.86rem;
    line-height: 1.55;
}

.aspect-audit-group-toggle {
    flex: 0 0 auto;
    padding: 0.42rem 0.75rem;
    font-size: 0.84rem;
}

.aspect-audit-group-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.55rem;
}

.aspect-audit-group-stats span {
    display: inline-flex;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.78);
    color: var(--text-main);
    font-size: 0.78rem;
    font-weight: 700;
}

.aspect-audit-group-body {
    display: grid;
    gap: 0.75rem;
    padding: 0.85rem 1rem 1rem;
    background: rgba(248, 250, 252, 0.62);
}

.aspect-audit-card {
    border: 1px solid var(--border-color);
    border-radius: 0.9rem;
    padding: 0.9rem 1rem;
    background: var(--card-bg);
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
    scroll-margin-top: 7rem;
}

.aspect-audit-card.focused {
    border-color: rgba(79, 70, 229, 0.55);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.14), 0 8px 18px rgba(15, 23, 42, 0.06);
}

.aspect-audit-card-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 0.75rem;
}

.aspect-audit-card-header h3 {
    margin: 0;
    font-size: 1rem;
    line-height: 1.35;
}

.aspect-audit-card-header p,
.aspect-audit-topline {
    margin: 0.25rem 0 0;
    color: var(--text-muted);
    font-size: 0.86rem;
}

.aspect-audit-card-actions {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.aspect-audit-toggle {
    flex: 0 0 auto;
    padding: 0.38rem 0.7rem;
    font-size: 0.84rem;
}

.aspect-audit-override-badge {
    display: inline-flex;
    width: fit-content;
    margin-top: 0.45rem;
    padding: 0.14rem 0.5rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 700;
}

.aspect-audit-override-badge.override {
    background: #DCFCE7;
    color: #047857;
}

.aspect-audit-override-badge.auto {
    background: rgba(107, 114, 128, 0.12);
    color: var(--text-muted);
}

.aspect-audit-card-summary-line {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.55rem;
    color: var(--text-muted);
    font-size: 0.86rem;
}

.aspect-audit-card-summary-line strong {
    color: var(--text-main);
    font-size: 0.84rem;
}

.aspect-audit-summary-chip,
.aspect-audit-summary-empty {
    display: inline-flex;
    align-items: center;
    max-width: 14rem;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
}

.aspect-audit-summary-chip.high {
    background: rgba(16, 185, 129, 0.14);
    color: #047857;
}

.aspect-audit-summary-chip.medium {
    background: rgba(245, 158, 11, 0.16);
    color: #92400E;
}

.aspect-audit-summary-chip.low {
    background: rgba(99, 102, 241, 0.12);
    color: #4338CA;
}

.aspect-audit-summary-chip.zero,
.aspect-audit-summary-empty {
    background: rgba(107, 114, 128, 0.12);
    color: var(--text-muted);
}

.aspect-audit-metric-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 0.6rem;
    margin-top: 0.8rem;
}

.aspect-audit-metric {
    min-width: 0;
    padding: 0.6rem;
    border: 1px solid var(--border-color);
    border-radius: 0.7rem;
    background: rgba(107, 114, 128, 0.05);
}

.aspect-audit-metric.high {
    border-color: rgba(16, 185, 129, 0.35);
    background: rgba(16, 185, 129, 0.08);
}

.aspect-audit-metric.medium {
    border-color: rgba(245, 158, 11, 0.35);
    background: rgba(245, 158, 11, 0.08);
}

.aspect-audit-metric.low {
    border-color: rgba(99, 102, 241, 0.22);
    background: rgba(99, 102, 241, 0.06);
}

.aspect-audit-metric.zero {
    opacity: 0.68;
}

.aspect-audit-metric-head {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    align-items: baseline;
}

.aspect-audit-metric-head span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.86rem;
}

.aspect-audit-metric-head strong {
    color: var(--primary);
    font-size: 0.9rem;
}

.aspect-audit-bar-track {
    height: 6px;
    margin: 0.45rem 0;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(107, 114, 128, 0.18);
}

.aspect-audit-bar-track i {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--primary), #10B981);
}

.aspect-audit-metric small {
    display: block;
    min-height: 1.2em;
    color: var(--text-muted);
    font-size: 0.78rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.aspect-audit-detail {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px dashed var(--border-color);
}

.aspect-audit-editor {
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.85rem;
    background: rgba(79, 70, 229, 0.045);
}

.aspect-audit-edit-field {
    display: grid;
    gap: 0.35rem;
    margin-top: 0.75rem;
}

.aspect-audit-edit-field span {
    font-weight: 700;
    color: var(--text-main);
    font-size: 0.88rem;
}

.aspect-audit-editor textarea,
.aspect-audit-editor input[type="number"] {
    width: 100%;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: var(--card-bg);
    color: var(--text-main);
    font: inherit;
}

.aspect-audit-editor textarea {
    resize: vertical;
    line-height: 1.55;
}

.aspect-audit-edit-aspect-grid {
    display: grid;
    gap: 0.65rem;
    margin-top: 1rem;
}

.aspect-audit-edit-aspect-row {
    display: grid;
    grid-template-columns: minmax(140px, 190px) 86px 1fr;
    gap: 0.65rem;
    align-items: start;
    padding: 0.7rem;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    background: rgba(255, 255, 255, 0.55);
}

.aspect-audit-edit-aspect-row strong {
    padding-top: 0.55rem;
    font-size: 0.88rem;
}

.aspect-audit-edit-actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 1rem;
}

.danger-outline-btn {
    background: transparent;
    color: #B91C1C;
    border: 1px solid rgba(185, 28, 28, 0.35);
}

.danger-outline-btn:hover:not(:disabled) {
    background: #FEE2E2;
}

.danger-outline-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.aspect-audit-learning-summary {
    margin: 0 0 0.8rem;
    line-height: 1.65;
    color: var(--text-main);
}

.aspect-audit-chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin: 0.45rem 0 0.8rem;
}

.aspect-audit-chip-list span {
    display: inline-flex;
    max-width: 18rem;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: rgba(79, 70, 229, 0.08);
    color: var(--text-main);
    font-size: 0.78rem;
}

.aspect-audit-chip-list .muted-chip {
    background: rgba(107, 114, 128, 0.12);
    color: var(--text-muted);
}

.aspect-audit-detail-grid {
    display: grid;
    gap: 0.6rem;
    margin-top: 0.8rem;
}

.aspect-audit-detail-row {
    display: grid;
    grid-template-columns: minmax(170px, 240px) 1fr;
    gap: 0.75rem;
    align-items: start;
}

.aspect-audit-detail-row .aspect-audit-metric {
    margin: 0;
}

@media (max-width: 900px) {
    .aspect-audit-toolbar {
        grid-template-columns: 1fr;
    }

    .aspect-audit-toolbar-actions {
        justify-content: flex-start;
    }

    .aspect-audit-group-header {
        flex-direction: column;
    }

    .aspect-audit-card-header {
        flex-direction: column;
    }

    .aspect-audit-card-actions {
        justify-content: flex-start;
    }

    .aspect-audit-detail-row {
        grid-template-columns: 1fr;
    }

    .aspect-audit-edit-aspect-row {
        grid-template-columns: 1fr;
    }
}

.student-identity-bar {
    width: auto;
    min-width: 0;
    display: block;
    padding: 0;
    border-bottom: 0;
    background: transparent;
    justify-self: end;
}

.student-identity-inner {
    width: auto;
    max-width: none;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 0.65rem;
}

.student-identity-main {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.75rem;
    min-width: 0;
    max-width: min(34vw, 260px);
    color: var(--text-muted);
    font-size: 0.84rem;
    white-space: nowrap;
}

.student-identity-main strong {
    min-width: 0;
    color: var(--text-main);
    overflow: hidden;
    text-overflow: ellipsis;
}

.student-identity-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: var(--primary);
    color: white;
    font-size: 0.78rem;
    font-weight: 700;
}

.student-identity-badge.visitor {
    background: var(--bg-color);
    color: var(--primary);
    border: 1px solid rgba(79, 70, 229, 0.28);
}

.student-identity-bar button {
    min-height: 34px;
    padding: 0.38rem 0.7rem;
    font-size: 0.8rem;
    white-space: nowrap;
}

.student-login-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.55);
}

.student-login-modal[hidden] {
    display: none;
}

.student-login-dialog {
    position: relative;
    width: min(420px, 100%);
    display: grid;
    gap: 0.75rem;
    padding: 1.25rem;
    border: 1px solid var(--border-color);
    border-radius: 1rem;
    background: var(--card-bg);
    box-shadow: 0 18px 45px rgba(15, 23, 42, 0.22);
}

.student-login-dialog h2 {
    color: var(--primary);
    font-size: 1.25rem;
}

.student-login-dialog p,
.student-login-dialog label {
    color: var(--text-muted);
    font-size: 0.9rem;
}

.student-login-dialog label {
    display: grid;
    gap: 0.3rem;
}

.student-login-dialog input {
    width: 100%;
    padding: 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
    font: inherit;
}

.student-login-close {
    position: absolute;
    right: 0.75rem;
    top: 0.65rem;
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--text-muted);
    font-size: 1.4rem;
}

.student-login-error {
    min-height: 1.2rem;
    color: #EF4444;
    font-size: 0.86rem;
}

/* 搜索区 */
.search-box {
    background: var(--card-bg);
    padding: 2rem;
    border-radius: 1rem;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    margin-bottom: 2rem;
}

.search-box h2 {
    margin-bottom: 1rem;
    font-size: 1.5rem;
}

.draft-download-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    padding: 0.9rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.75rem;
    background: rgba(79, 70, 229, 0.06);
}

.draft-download-card strong {
    color: var(--primary);
}

.draft-download-card p {
    color: var(--text-muted);
    font-size: 0.88rem;
    margin-top: 0.2rem;
}

.draft-download-card a {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.55rem 0.85rem;
    border-radius: 0.5rem;
    background: var(--primary);
    color: white;
    text-decoration: none;
    font-size: 0.9rem;
    font-weight: 600;
}

.draft-download-card a:hover {
    background: var(--primary-hover);
}

.query-template-panel {
    margin-bottom: 1rem;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    background: var(--bg-color);
}

.query-template-heading {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    margin-bottom: 0.75rem;
}

.query-template-heading strong {
    color: var(--text-main);
}

.query-template-heading span {
    color: var(--text-muted);
    font-size: 0.86rem;
}

.query-template-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.query-template-group {
    min-width: 0;
}

.query-template-tabs {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0.45rem;
    min-width: 0;
}

@media (max-width: 700px) {
    .query-template-tabs {
        grid-template-columns: repeat(5, minmax(128px, 1fr));
        overflow-x: auto;
        padding: 0.15rem 0.15rem 0.35rem;
    }
}

.student-inline-fields {
    display: none !important;
    gap: 1rem;
    margin-top: 1rem;
}

.query-template-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.25rem;
    min-height: 74px;
    padding: 0.75rem;
    width: 100%;
    text-align: left;
    background: var(--card-bg);
    color: var(--text-main);
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    font: inherit;
    font-size: 0.9rem;
    cursor: pointer;
}

.query-template-tab {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 0.25rem;
    min-width: 0;
    min-height: 52px;
    padding: 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: var(--card-bg);
    color: var(--text-main);
    font: inherit;
    font-size: 0.9rem;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}

.query-template-tab:hover {
    background: rgba(79, 70, 229, 0.08);
    color: var(--primary);
    border-color: rgba(79, 70, 229, 0.35);
}

.query-template-tab[aria-selected="true"] {
    background: rgba(79, 70, 229, 0.08);
    border-color: rgba(79, 70, 229, 0.35);
    color: var(--primary);
    box-shadow: inset 0 -3px 0 var(--primary);
}

.query-template-tab:focus-visible,
.query-template-example:focus-visible,
.query-template-generic:focus-visible {
    outline: 3px solid rgba(79, 70, 229, 0.24);
    outline-offset: 2px;
}

.query-template-card:hover {
    background: rgba(79, 70, 229, 0.08);
    color: var(--primary);
    border-color: rgba(79, 70, 229, 0.35);
}

.query-template-card-heading {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 0.5rem;
}

.query-template-tab strong {
    color: inherit;
    font-size: 0.95rem;
}

.query-template-tab .query-template-count {
    margin-left: auto;
    color: var(--text-muted);
    font-size: 0.75rem;
    white-space: nowrap;
}

.query-template-tab .query-template-desc {
    width: 100%;
    color: var(--text-muted);
    font-size: 0.78rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.query-template-details {
    padding: 0.75rem 0.9rem 0.8rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: var(--bg-color);
}

.query-template-details > .query-template-logic {
    overflow-wrap: anywhere;
}

.query-template-details[hidden] {
    display: none;
}

.query-template-logic {
    margin: 0 0 0.75rem;
    color: var(--text-main);
    font-size: 0.86rem;
    line-height: 1.6;
}

.query-template-examples-heading {
    margin-bottom: 0.25rem;
    color: var(--text-main);
    font-size: 0.95rem;
    line-height: 1.5;
}

.query-template-examples {
    display: grid;
    grid-template-columns: 1fr;
}

.query-template-example {
    display: block;
    width: 100%;
    padding: 0.65rem 0;
    border: 0;
    border-top: 1px solid var(--border-color);
    border-radius: 0;
    background: transparent;
    color: var(--text-main);
    font: inherit;
    font-size: 0.86rem;
    font-weight: 400;
    line-height: 1.55;
    text-align: left;
    overflow-wrap: anywhere;
}

.query-template-example::before {
    content: '• ';
    color: var(--primary);
}

.query-template-example:hover {
    background: rgba(79, 70, 229, 0.06);
    color: var(--primary);
}

.query-template-generic {
    margin-top: 0.35rem;
    padding: 0.35rem 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--primary);
    font: inherit;
    font-size: 0.82rem;
    font-weight: 600;
}

.query-template-generic::before {
    content: '•';
    display: inline-block;
    margin-right: 0.35rem;
    color: var(--primary);
}

.query-template-generic:hover {
    background: transparent;
    color: var(--primary-hover);
}

textarea {
    width: 100%;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background-color: var(--bg-color);
    color: var(--text-main);
    font-size: 1rem;
    resize: vertical;
    min-height: 100px;
    font-family: inherit;
    transition: border-color 0.2s;
}

textarea:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
}

.tags-cloud {
    margin: 1rem 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.tag {
    padding: 0.25rem 0.75rem;
    background-color: var(--bg-color);
    border: 1px solid var(--border-color);
    border-radius: 9999px;
    font-size: 0.875rem;
    cursor: pointer;
    transition: all 0.2s;
    user-select: none;
}

.tag:hover {
    border-color: var(--primary);
    color: var(--primary);
}

.tag.selected {
    background-color: var(--primary);
    color: white;
    border-color: var(--primary);
}

button {
    background-color: var(--primary);
    color: white;
    border: none;
    padding: 0.75rem 1.5rem;
    border-radius: 0.5rem;
    font-size: 1rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.2s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

button:hover {
    background-color: var(--primary-hover);
}

button:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}

/* 加载动画 */
.loader {
    display: none;
    text-align: center;
    padding: 2rem;
}
.loader-spinner {
    border: 3px solid var(--border-color);
    border-top: 3px solid var(--primary);
    border-radius: 50%;
    width: 30px;
    height: 30px;
    animation: spin 1s linear infinite;
    margin: 0 auto 1rem auto;
}

.recommend-progress-card {
    max-width: 680px;
    margin: 0 auto;
    padding: 1.25rem;
    border: 1px solid rgba(37, 99, 235, 0.16);
    border-radius: 1rem;
    background: linear-gradient(135deg, rgba(37, 99, 235, 0.06), rgba(16, 185, 129, 0.06));
    text-align: left;
}

.recommend-progress-card strong {
    display: block;
    color: var(--primary);
    font-size: 1rem;
}

.recommend-progress-card p {
    margin: 0.45rem 0 0;
    color: var(--text-muted);
    font-size: 0.92rem;
    line-height: 1.6;
}

.recommend-progress-bar {
    height: 8px;
    margin-top: 0.8rem;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.28);
}

.recommend-progress-bar span {
    display: block;
    width: 8%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--primary), #10B981);
    transition: width 0.35s ease;
}

.recommend-progress-detail {
    min-height: 1.6em;
}

.recommend-progress-elapsed {
    font-weight: 650;
    color: #475569 !important;
}
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

/* 推荐结果卡片 */
.result-card {
    background: var(--card-bg);
    padding: 1.5rem;
    border-radius: 1rem;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
    margin-bottom: 1rem;
    border: 1px solid var(--border-color);
    animation: slideUp 0.3s ease-out;
}

@keyframes slideUp {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.result-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 0.5rem;
}

.result-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--primary);
    margin-right: 1rem;
}

.result-rank {
    background: var(--success);
    color: white;
    padding: 0.2rem 0.5rem;
    border-radius: 0.25rem;
    font-size: 0.75rem;
    font-weight: bold;
}

.result-rank-wrap {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    flex-shrink: 0;
}

.result-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: 50%;
    background: var(--card-bg);
    color: var(--primary);
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
    transition: background-color 0.2s, color 0.2s, transform 0.2s;
}

.result-toggle:hover,
.result-toggle:focus-visible {
    background: var(--primary);
    color: white;
}

.result-toggle span {
    transform: translateY(-0.08rem);
    transition: transform 0.2s;
}

.result-toggle[aria-expanded="true"] span {
    transform: rotate(180deg) translateY(0.08rem);
}

.result-extra-content[hidden] {
    display: none;
}

.result-reason {
    margin: 1rem 0;
    padding: 1rem;
    background-color: rgba(79, 70, 229, 0.05);
    border-left: 3px solid var(--primary);
    border-radius: 0 0.5rem 0.5rem 0;
    font-size: 0.95rem;
}

.result-summary {
    color: var(--text-muted);
    font-size: 0.9rem;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.result-tags {
    margin-top: 1rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.result-tags span {
    font-size: 0.75rem;
    color: var(--text-muted);
    background: var(--bg-color);
    padding: 0.1rem 0.5rem;
    border-radius: 99px;
    border: 1px solid var(--border-color);
}

/* 管理后台专用样式 */
.admin-page {
    font-size: 14px;
    line-height: 1.5;
    background: #f6f7fb;
}

#mainContent {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    width: 100%;
}

#mainContent.is-hidden {
    display: none;
}

.admin-auth-modal,
.admin-confirm-modal {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.56);
    backdrop-filter: blur(2px);
}

.admin-auth-modal.is-open,
.admin-confirm-modal.is-open {
    display: flex;
}

.admin-auth-dialog,
.admin-confirm-dialog {
    width: min(420px, 100%);
    padding: 1.5rem;
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 0.75rem;
    background: var(--card-bg);
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.24);
}

.admin-confirm-dialog {
    width: min(520px, 100%);
    border-top: 4px solid #DC2626;
}

.admin-confirm-dialog.is-primary,
.admin-confirm-dialog.is-info {
    border-top-color: var(--primary);
}

.admin-confirm-dialog.is-success {
    border-top-color: var(--success);
}

.admin-confirm-dialog.is-warning {
    border-top-color: #D97706;
}

.admin-auth-title,
.admin-confirm-dialog h2 {
    margin: 0 0 0.85rem;
    color: var(--text-main);
    font-size: 1.15rem;
    line-height: 1.35;
}

.admin-confirm-dialog.is-danger h2 {
    color: #B91C1C;
}

.admin-confirm-dialog.is-success h2 {
    color: #047857;
}

.admin-confirm-dialog.is-warning h2 {
    color: #B45309;
}

.admin-auth-desc,
.admin-confirm-dialog p {
    margin: 0 0 1rem;
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.55;
}

.admin-auth-input {
    width: 100%;
    margin-bottom: 0.85rem;
    padding: 0.68rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
}

.admin-auth-error {
    margin: 0 0 0.85rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid #FECACA;
    border-radius: 0.5rem;
    color: #B91C1C;
    background: #FEF2F2;
    font-size: 0.9rem;
    line-height: 1.5;
}

.admin-auth-error[hidden] {
    display: none;
}

.admin-auth-submit,
.admin-auth-cancel {
    width: 100%;
}

.admin-auth-submit {
    margin-bottom: 0.55rem;
}

.admin-auth-cancel,
.admin-confirm-cancel {
    color: var(--text-muted);
    border: 1px solid var(--border-color);
    background: transparent;
}

.admin-auth-cancel:hover,
.admin-confirm-cancel:hover {
    background: rgba(148, 163, 184, 0.12);
}

.admin-confirm-actions {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.1rem;
}

.admin-confirm-actions button {
    flex: 1;
    min-height: 40px;
}

.admin-confirm-actions button[hidden] {
    display: none;
}

.admin-confirm-danger {
    background: #DC2626;
}

.admin-confirm-danger:hover {
    background: #B91C1C;
}

.admin-confirm-success {
    background: var(--success);
}

.admin-confirm-success:hover {
    background: #059669;
}

.admin-confirm-warning {
    background: #D97706;
}

.admin-confirm-warning:hover {
    background: #B45309;
}

.admin-confirm-details {
    display: grid;
    gap: 0.5rem;
    margin: 0 0 1rem;
    padding: 0.8rem;
    border: 1px solid #FECACA;
    border-radius: 0.5rem;
    background: #FEF2F2;
}

.admin-confirm-details[hidden],
.admin-confirm-note[hidden] {
    display: none;
}

.admin-confirm-detail-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    color: var(--text-muted);
    font-size: 0.9rem;
}

.admin-confirm-detail-row strong {
    color: #991B1B;
    font-weight: 700;
    text-align: right;
    overflow-wrap: anywhere;
}

.admin-confirm-note {
    margin: 0 0 1rem;
    padding: 0.7rem 0.8rem;
    border-left: 3px solid #DC2626;
    border-radius: 0.35rem;
    color: #7F1D1D;
    background: #FFF7ED;
    font-size: 0.88rem;
    line-height: 1.5;
}

.admin-confirm-dialog.is-success .admin-confirm-details {
    border-color: #A7F3D0;
    background: #ECFDF5;
}

.admin-confirm-dialog.is-success .admin-confirm-detail-row strong {
    color: #047857;
}

.admin-confirm-dialog.is-warning .admin-confirm-details {
    border-color: #FDE68A;
    background: #FFFBEB;
}

.admin-confirm-dialog.is-warning .admin-confirm-detail-row strong {
    color: #92400E;
}

.admin-confirm-dialog.is-primary .admin-confirm-details,
.admin-confirm-dialog.is-info .admin-confirm-details {
    border-color: #C7D2FE;
    background: #EEF2FF;
}

.admin-confirm-dialog.is-primary .admin-confirm-detail-row strong,
.admin-confirm-dialog.is-info .admin-confirm-detail-row strong {
    color: var(--primary);
}

.admin-confirm-dialog.is-success .admin-confirm-note {
    border-left-color: var(--success);
    color: #065F46;
    background: #ECFDF5;
}

.admin-confirm-dialog.is-warning .admin-confirm-note {
    border-left-color: #D97706;
    color: #78350F;
    background: #FFFBEB;
}

.admin-confirm-dialog.is-primary .admin-confirm-note,
.admin-confirm-dialog.is-info .admin-confirm-note {
    border-left-color: var(--primary);
    color: var(--text-main);
    background: #EEF2FF;
}

.admin-confirm-primary {
    background: var(--primary);
}

.admin-confirm-primary:hover {
    background: var(--primary-hover);
}

@media (max-width: 560px) {
    .student-roster-class-clear {
        width: 100%;
        margin-left: 0;
        padding-left: 0;
        border-left: 0;
    }

    .student-roster-clear-select {
        flex: 1 1 150px;
        min-width: 0;
    }
}
@media (max-width: 560px) {
    .admin-confirm-actions {
        flex-direction: column;
    }
}

.admin-page nav {
    min-height: 56px;
    padding: 0.75rem 1.5rem;
}

.admin-page nav h1 {
    font-size: 1.05rem;
    font-weight: 650;
}

.admin-brand-title {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.admin-brand-logo {
    width: 72px;
    height: 72px;
    flex: 0 0 auto;
    object-fit: contain;
}

.admin-page nav a {
    font-size: 0.88rem;
}

.admin-nav-links .danger-link {
    color: #EF4444;
}

.admin-nav-links .danger-link:hover {
    color: #DC2626;
    border-color: rgba(239, 68, 68, 0.28);
    background: rgba(239, 68, 68, 0.08);
}

.admin-container {
    display: grid;
    grid-template-columns: 220px 1fr;
    min-height: calc(100vh - 60px);
}

.sidebar {
    background: #ffffff;
    border-right: 1px solid var(--border-color);
    padding: 1rem 0.85rem;
}

.sidebar-menu {
    list-style: none;
    display: grid;
    gap: 0.18rem;
}

.sidebar-menu li {
    position: relative;
    padding: 0.55rem 0.72rem 0.55rem 1.3rem;
    margin-bottom: 0;
    border-radius: 0.5rem;
    cursor: pointer;
    color: #475569;
    font-weight: 500;
    font-size: 0.88rem;
    line-height: 1.35;
    transition: background 0.16s ease, color 0.16s ease, box-shadow 0.16s ease;
}

.sidebar-menu .sidebar-menu-heading {
    margin: 0.9rem 0 0.25rem;
    padding: 0.34rem 0.72rem;
    border-radius: 0.45rem;
    background: #F1F5F9;
    cursor: default;
    color: #64748B;
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.sidebar-menu .sidebar-menu-heading:first-child {
    margin-top: 0;
}

.sidebar-menu li[data-target]:hover {
    background: #F1F5F9;
    color: #0F172A;
}

.sidebar-menu li[data-target].active {
    background: rgba(37, 99, 235, 0.09);
    color: var(--primary);
    font-weight: 650;
    box-shadow: inset 3px 0 0 var(--primary);
}

.sidebar-menu li.admin-home-nav-item {
    display: flex;
    align-items: center;
    gap: 0.58rem;
    margin-bottom: 0.8rem;
    padding: 0.72rem 0.8rem;
    border: 1px solid rgba(37, 99, 235, 0.22);
    border-radius: 0.65rem;
    background: rgba(37, 99, 235, 0.055);
    color: #1D4ED8;
    font-weight: 700;
    box-shadow: 0 3px 8px rgba(37, 99, 235, 0.08);
}

.sidebar-menu li.admin-home-nav-item::before {
    width: 0.46rem;
    height: 0.46rem;
    flex: 0 0 0.46rem;
    border-radius: 50%;
    background: currentColor;
    content: "";
}

.sidebar-menu li.admin-home-nav-item:hover,
.sidebar-menu li.admin-home-nav-item:focus-visible {
    background: rgba(37, 99, 235, 0.11);
    color: #1E40AF;
}

.sidebar-menu li.admin-home-nav-item.active {
    border-color: rgba(37, 99, 235, 0.38);
    background: #E8F0FF;
    color: #1D4ED8;
    box-shadow: inset 3px 0 0 #2563EB, 0 4px 10px rgba(37, 99, 235, 0.1);
}

.sidebar-menu li.admin-home-nav-item.active::before {
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}

.main-content {
    padding: 1.25rem 1.5rem 2rem;
    min-width: 0;
}

.admin-home-groups {
    display: grid;
    gap: 1rem;
    margin-top: 1.15rem;
}

.admin-home-group {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.55rem;
    background: var(--card-bg);
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
}

.admin-home-group-heading {
    padding: 1rem 1.1rem 0.9rem;
    border-bottom: 1px solid var(--border-color);
    background: rgba(79, 70, 229, 0.035);
}

.admin-home-group-heading h3 {
    margin: 0;
    color: var(--primary);
    font-size: 1rem;
}

.admin-home-group-heading p {
    margin: 0.3rem 0 0;
    color: var(--text-muted);
    font-size: 0.86rem;
    line-height: 1.55;
}

.admin-home-link-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.admin-home-link {
    min-width: 0;
    min-height: 82px;
    align-items: flex-start;
    justify-content: flex-start;
    flex-direction: column;
    gap: 0.28rem;
    padding: 0.85rem 1.1rem;
    border-right: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    border-radius: 0;
    background: transparent;
    color: var(--text-main);
    text-align: left;
}

.admin-home-link:nth-child(2n) {
    border-right: 0;
}

.admin-home-link:last-child,
.admin-home-link:nth-last-child(2):nth-child(odd) {
    border-bottom: 0;
}

.admin-home-link-list .admin-home-link:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    border-right: 0;
    border-bottom: 0;
}

.admin-home-link:hover,
.admin-home-link:focus-visible {
    background: rgba(79, 70, 229, 0.065);
    color: var(--primary);
}

.admin-home-link:focus-visible {
    position: relative;
    z-index: 1;
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.admin-home-link strong {
    font-size: 0.92rem;
    line-height: 1.4;
}

.admin-home-link span {
    color: var(--text-muted);
    font-size: 0.82rem;
    font-weight: 400;
    line-height: 1.55;
    overflow-wrap: anywhere;
}

.admin-footer {
    margin-top: auto;
}

@media (max-width: 760px) {
    .admin-home-link-list {
        grid-template-columns: 1fr;
    }

    .admin-home-link,
    .admin-home-link:nth-child(2n),
    .admin-home-link:last-child,
    .admin-home-link:nth-last-child(2):nth-child(odd) {
        grid-column: auto;
        border-right: 0;
        border-bottom: 1px solid var(--border-color);
    }

    .admin-home-link-list .admin-home-link:last-child {
        border-bottom: 0;
    }
}

.panel {
    display: none;
}
.panel.active {
    display: block;
    animation: fadeIn 0.3s;
}

.admin-page .panel > h2 {
    margin: 0 0 0.85rem;
    font-size: 1.15rem;
    line-height: 1.3;
    font-weight: 650;
}

.admin-page .panel > p,
.admin-page .search-box p {
    font-size: 0.88rem;
}

.admin-page .search-box {
    padding: 1rem;
    border-radius: 0.55rem;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.admin-panel-actions,
.admin-toolbar-row,
.admin-panel-heading-row,
.admin-inline-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}

.admin-inline-select {
    min-height: 34px;
    padding: 0.52rem 2rem 0.52rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    appearance: none;
    background-color: var(--bg-color);
    background-image: linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);
    background-position: calc(100% - 14px) 50%, calc(100% - 9px) 50%;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
    color: var(--text-main);
    font-size: 0.88rem;
    line-height: 1.2;
}

.admin-inline-select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
}

.student-roster-class-clear {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    margin-left: 0.45rem;
    padding-left: 0.9rem;
    border-left: 1px solid var(--border-color);
}

.student-roster-clear-select {
    min-width: 150px;
}
.admin-panel-actions,
.admin-toolbar-row {
    margin-bottom: 1rem;
}

.admin-panel-heading-row {
    justify-content: space-between;
    margin-bottom: 1rem;
}

.admin-panel-heading-row p {
    margin: 0;
    color: var(--text-muted);
}

.login-log-retention-label {
    color: var(--text-muted);
    font-size: 0.88rem;
    white-space: nowrap;
}

.login-log-retention-select {
    min-width: 86px;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 0.9rem;
}

.admin-muted {
    color: var(--text-muted);
}

.admin-no-top-margin {
    margin-top: 0;
}

.admin-no-bottom-margin {
    margin-bottom: 0;
}

.admin-danger-btn {
    background: #EF4444;
}

.admin-success-btn {
    background: #0F766E;
}

.admin-indigo-btn {
    background: #6366F1;
}

.admin-warning-btn {
    background: #F59E0B;
}

.admin-inline-status {
    color: var(--text-muted);
}

.admin-status-line {
    margin-bottom: 1rem;
}

.admin-section-spaced {
    margin-top: 1rem;
}

.admin-hint-spaced {
    margin-top: 0.75rem;
}

.admin-meta-spaced {
    margin-bottom: 0.75rem;
}

.admin-hidden {
    display: none;
}

.admin-select-wide {
    min-width: 220px;
}

.admin-flex-file {
    flex: 1;
    min-width: 260px;
}

.admin-preprocess-disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.admin-textarea {
    resize: vertical;
}

.admin-textarea-sm {
    min-height: 60px;
}

.admin-textarea-md {
    min-height: 80px;
}

.admin-textarea-lg {
    min-height: 100px;
}

.admin-textarea-xl {
    min-height: 120px;
}

.admin-page .search-box h3,
.admin-page .panel h3 {
    font-size: 0.98rem;
    line-height: 1.35;
    font-weight: 650;
}

.profile-review-group {
    margin-bottom: 1rem;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.8rem;
    background: rgba(248, 250, 252, 0.75);
    box-shadow: 0 6px 16px rgba(15, 23, 42, 0.04);
}

.profile-review-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.85rem 1rem;
    background: linear-gradient(135deg, rgba(37, 99, 235, 0.08), rgba(16, 185, 129, 0.08));
    border-bottom: 1px solid var(--border-color);
}

.profile-review-group.collapsed .profile-review-group-header {
    border-bottom: 0;
}

.profile-review-group-header h3 {
    margin: 0;
    color: var(--primary);
}

.profile-review-group-header p,
.profile-review-card-meta {
    margin: 0.25rem 0 0;
    color: var(--text-muted);
    font-size: 0.84rem;
}

.profile-review-toggle {
    flex: 0 0 auto;
    padding: 0.38rem 0.72rem;
    font-size: 0.84rem;
}

.profile-review-group-body {
    display: grid;
    gap: 0.85rem;
    padding: 1rem;
}

.profile-review-card {
    margin: 0;
}

.profile-review-card-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
}

.profile-review-card h3 {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem;
    min-width: 0;
    margin: 0;
    color: var(--primary);
}

.profile-review-card-stats {
    color: var(--text-muted);
    font-size: 0.84rem;
    font-weight: 500;
}

.profile-card-toggle {
    flex: 0 0 auto;
    padding: 0.38rem 0.72rem;
    font-size: 0.84rem;
}

.profile-review-card-details {
    margin-top: 0.85rem;
    padding-top: 0.9rem;
    border-top: 1px dashed var(--border-color);
}

.profile-review-card-details[hidden] {
    display: none;
}

.profile-review-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

@media (max-width: 720px) {
    .profile-review-group-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .profile-review-toggle,
    .profile-review-card-summary {
        width: 100%;
    }

    .profile-review-card-summary {
        align-items: stretch;
        flex-direction: column;
    }

    .profile-card-toggle {
        width: 100%;
    }
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

table {
    width: 100%;
    border-collapse: collapse;
    background: var(--card-bg);
    border-radius: 0.45rem;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
    font-size: 0.86rem;
}

th, td {
    padding: 0.55rem 0.65rem;
    text-align: left;
    border-bottom: 1px solid var(--border-color);
    vertical-align: top;
}

th {
    background: var(--bg-color);
    font-weight: 600;
    color: #374151;
    white-space: nowrap;
}

.status-badge {
    padding: 0.2rem 0.5rem;
    border-radius: 99px;
    font-size: 0.75rem;
}
.status-generated { background: #10B98120; color: #10B981; }
.status-pending { background: #F59E0B20; color: #F59E0B; }

.form-group {
    margin-bottom: 1rem;
}
.form-group label {
    display: block;
    margin-bottom: 0.35rem;
    font-weight: 500;
    font-size: 0.88rem;
    color: #374151;
}
.form-group input, .form-group select {
    width: 100%;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 0.9rem;
}

.admin-page textarea,
.admin-page input,
.admin-page select {
    font-size: 0.9rem;
}

.admin-page button {
    padding: 0.52rem 0.8rem;
    border-radius: 0.4rem;
    font-size: 0.88rem;
    line-height: 1.2;
}

.admin-keyword-source-list {
    display: grid;
    gap: 0.75rem;
}

.admin-keyword-source-card {
    margin: 0;
    padding: 0.85rem;
}

.admin-keyword-source-header {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 0.65rem;
}

.admin-keyword-source-header h3 {
    margin: 0;
    color: var(--primary);
    font-size: 0.95rem;
}

.admin-keyword-source-header p {
    margin-top: 0.25rem;
    color: var(--text-muted);
    font-size: 0.82rem;
}

.admin-keyword-source-meta {
    text-align: right;
    color: var(--text-muted);
    font-size: 0.78rem;
}

.admin-keyword-source-meta strong {
    display: block;
    color: var(--text-main);
    font-size: 0.9rem;
}

.admin-keyword-source-textarea {
    width: 100%;
    min-height: 220px;
    padding: 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-family: inherit;
    font-size: 0.86rem;
    line-height: 1.5;
    resize: vertical;
}

.admin-keyword-source-actions {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: center;
    margin-top: 0.65rem;
}

.admin-keyword-source-actions p {
    color: var(--text-muted);
    font-size: 0.8rem;
    margin: 0;
}

/* 进度条 */
.progress-bar-container {
    width: 100%;
    height: 8px;
    background: var(--border-color);
    border-radius: 4px;
    overflow: hidden;
    margin: 1rem 0;
}
.progress-bar {
    height: 100%;
    background: var(--primary);
    width: 0%;
    transition: width 0.3s;
}

.result-mindmap {
    margin: 15px 0;
    padding: 1rem;
    background: var(--bg-color);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    overflow-x: auto;
}

.course-overview h3,
.chapter-learning-card h4 {
    margin-bottom: 0.75rem;
    color: var(--primary);
}

.course-overview-summary,
.chapter-learning-card p {
    color: var(--text-muted);
    font-size: 0.95rem;
}

.course-aspect-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.75rem;
    margin-top: 1rem;
}

.course-aspect-item {
    border: 1px solid var(--border-color);
    border-radius: 8px;
    padding: 0.75rem;
    background: var(--bg-color);
}

.course-aspect-item strong {
    display: block;
    font-size: 0.95rem;
    margin-bottom: 0.25rem;
}

.course-aspect-item span {
    display: inline-block;
    color: var(--success);
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: 0.35rem;
}

.course-aspect-item p {
    color: var(--text-muted);
    font-size: 0.85rem;
}

.course-keyword-dictionary,
.chapter-mini-list,
.chapter-aspects {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    margin-top: 1rem;
}

.course-keyword-dictionary strong,
.chapter-mini-list strong {
    margin-right: 0.25rem;
}

.course-keyword-dictionary span,
.chapter-mini-list span,
.chapter-aspects span {
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    border: 1px solid var(--border-color);
    background: var(--bg-color);
    color: var(--text-muted);
    font-size: 0.8rem;
}

.chapter-aspects span {
    border-color: rgba(79, 70, 229, 0.35);
    color: var(--primary);
}

.chapter-learning-card {
    margin-top: 1rem;
    padding: 1rem;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: rgba(79, 70, 229, 0.04);
}

.chapter-related {
    margin-top: 1rem;
}

.chapter-related p {
    margin-top: 0.35rem;
    font-size: 0.88rem;
}

.section-heading {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.section-heading h2 {
    color: var(--primary);
    font-size: 1.25rem;
    margin-bottom: 0.35rem;
}

.section-heading p,
.hint-text {
    color: var(--text-muted);
    font-size: 0.92rem;
}

.secondary-btn {
    background: var(--bg-color);
    color: var(--text-main);
    border: 1px solid var(--border-color);
}

.secondary-btn:hover {
    color: var(--primary);
    border-color: var(--primary);
    background: var(--bg-color);
}

.secondary-link-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.65rem 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
}

.secondary-link-btn:hover {
    color: var(--primary);
    border-color: var(--primary);
}

.course-workbench {
    margin-bottom: 1.25rem;
}

.student-info-card {
    margin-top: 0;
}

.course-hero {
    position: relative;
    min-height: 520px;
    overflow: hidden;
    background: var(--card-bg);
}

.course-hero-center {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 210px;
    height: 210px;
    border-radius: 50%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    gap: 0.35rem;
    background: var(--card-bg);
    border: 1px solid var(--border-color);
    box-shadow: 0 10px 28px rgba(17, 24, 39, 0.12);
    z-index: 2;
}

.course-hero-logo {
    width: 92px;
    height: auto;
}

.course-hero-center strong {
    color: var(--primary);
    font-size: 1rem;
}

.course-hero-center span {
    width: 150px;
    color: var(--text-muted);
    font-size: 0.78rem;
}

.course-module-visual {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 4.8rem 5.8rem;
    min-height: 470px;
}

.module-orbit {
    min-height: 220px;
    border: none;
    color: white;
    padding: 2rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 0.45rem;
    text-align: center;
    box-shadow: inset 0 0 0 999px rgba(255, 255, 255, 0.04);
}

.module-orbit strong {
    max-width: 220px;
    font-size: 1.2rem;
    line-height: 1.2;
}

.module-orbit em {
    font-style: normal;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: rgba(17, 24, 39, 0.65);
    color: #67E8F9;
    font-size: 0.76rem;
    font-weight: 700;
}

.module-orbit small {
    color: rgba(255, 255, 255, 0.85);
}

.module-orbit-number {
    font-size: 2.3rem;
    font-weight: 800;
    line-height: 1;
}

.module-orbit-1 {
    background: #18A186;
    border-radius: 0 45% 45% 45%;
}

.module-orbit-2 {
    background: #2E86BD;
    border-radius: 45% 0 45% 45%;
}

.module-orbit-3 {
    background: #F59E0B;
    border-radius: 45% 45% 0 45%;
}

.module-orbit-4 {
    background: #C7362E;
    border-radius: 45% 45% 45% 0;
}

.course-module-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.course-module-card {
    border: 1px solid var(--border-color);
    border-radius: 0.85rem;
    padding: 1rem;
    background: var(--bg-color);
}

.course-module-card h3 {
    color: var(--primary);
    font-size: 1rem;
    margin-bottom: 0.45rem;
}

.course-module-card > p {
    color: var(--text-muted);
    font-size: 0.88rem;
    margin-bottom: 0.75rem;
}

.module-chapter-list {
    display: grid;
    gap: 0.45rem;
    max-height: 340px;
    overflow-y: auto;
    padding-right: 0.25rem;
}

.chapter-nav-btn {
    justify-content: flex-start;
    text-align: left;
    background: var(--card-bg);
    color: var(--text-main);
    border: 1px solid var(--border-color);
    padding: 0.5rem 0.65rem;
    font-size: 0.86rem;
    line-height: 1.35;
}

.chapter-nav-btn:hover {
    background: rgba(79, 70, 229, 0.08);
    color: var(--primary);
    border-color: rgba(79, 70, 229, 0.35);
}

.module-chapter-detail {
    margin-top: 0.75rem;
}

.aspect-selector {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
}

.aspect-choice,
.learning-chapter-item {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: 0.65rem;
    background: var(--bg-color);
    padding: 0.65rem;
    cursor: pointer;
    font-size: 0.88rem;
}

.aspect-choice:hover,
.learning-chapter-item:hover {
    border-color: rgba(79, 70, 229, 0.45);
}

.aspect-choice input,
.learning-chapter-item input {
    margin-top: 0.2rem;
    accent-color: var(--primary);
}

.rank-results,
.learning-profile-results {
    margin-top: 1rem;
}

.learning-profile-results:not(:empty) {
    padding: 1rem;
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.9rem;
    background: linear-gradient(180deg, rgba(79, 70, 229, 0.08), rgba(16, 185, 129, 0.05));
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.06);
}

.rank-result-card {
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.85rem;
    background: var(--bg-color);
    margin-top: 0.75rem;
}

.rank-result-card h4 {
    color: var(--primary);
    margin-bottom: 0.35rem;
}

.rank-result-card p {
    color: var(--text-muted);
    font-size: 0.9rem;
    margin-top: 0.25rem;
}

.aspect-bars {
    display: grid;
    gap: 0.45rem;
    margin-top: 1rem;
}

.aspect-bar-row {
    display: grid;
    grid-template-columns: minmax(120px, 1.2fr) 2fr 48px;
    gap: 0.6rem;
    align-items: center;
    font-size: 0.84rem;
}

.aspect-bar-label {
    color: var(--text-main);
}

.aspect-bar-track {
    height: 8px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--border-color);
}

.aspect-bar-fill {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--primary), var(--success));
}

.aspect-bar-number {
    color: var(--text-muted);
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.student-profile-controls {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.save-plan-button-wrap {
    display: flex;
    min-width: 0;
}

.save-plan-button-wrap button {
    width: 100%;
}

.learning-profile-notice {
    margin: -0.2rem 0 0.9rem;
    padding: 0.75rem 0.9rem;
    border: 1px solid rgba(245, 158, 11, 0.35);
    border-radius: 0.75rem;
    background: rgba(255, 251, 235, 0.9);
    color: #92400E;
    font-size: 0.92rem;
    line-height: 1.55;
}

.learning-profile-notice[hidden] {
    display: none;
}

.student-profile-controls input,
.student-profile-controls select {
    min-width: 0;
    padding: 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 1rem;
}

.student-roster-controls {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.student-roster-filter-row,
.student-roster-action-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.7rem;
}

.student-roster-filter-row input,
.student-roster-filter-row select {
    min-width: 0;
    min-height: 36px;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 0.92rem;
}

.student-roster-filter-row input:focus,
.student-roster-filter-row select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
}

.student-roster-filter-row select {
    cursor: pointer;
}

.student-roster-filter-row select:disabled {
    cursor: not-allowed;
}

.student-roster-course-select {
    flex: 1 1 180px;
    min-width: 180px !important;
}

.student-roster-course-filter {
    display: flex;
    flex: 1 1 180px;
    align-items: center;
    gap: 0.55rem;
    min-width: 180px;
    color: var(--text-muted);
    font-size: 0.9rem;
    white-space: nowrap;
}

.student-roster-course-filter .student-roster-course-select {
    min-width: 0 !important;
}

.student-roster-filter-row input {
    flex: 1 1 150px;
}

.student-roster-action-row {
    padding-top: 0.85rem;
    border-top: 1px solid var(--border-color);
}

.student-roster-action-row button {
    min-height: 36px;
}

.student-roster-summary,
.student-roster-action-status {
    min-width: 0;
    margin-left: 2ch;
    line-height: 1.55;
}

.student-roster-export-hint {
    margin: 1rem 0 1.1rem;
}

.student-roster-plan-status {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    min-width: max-content;
    white-space: nowrap;
}

.student-roster-plan-badge {
    display: inline-flex;
    width: fit-content;
    align-items: center;
    padding: 0.24rem 0.55rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.student-roster-plan-badge::before {
    width: 0.42rem;
    height: 0.42rem;
    margin-right: 0.35rem;
    border-radius: 50%;
    background: currentColor;
    content: '';
    opacity: 0.72;
}

.student-roster-plan-badge.is-generated {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.student-roster-plan-badge.is-not-generated {
    border-color: #e2e8f0;
    background: #f8fafc;
    color: #64748b;
}

@media (max-width: 700px) {
    .student-roster-filter-row,
    .student-roster-action-row {
        align-items: stretch;
    }

    .student-roster-filter-row > *,
    .student-roster-action-row > * {
        flex: 1 1 100%;
        width: 100%;
    }

    .student-roster-course-filter {
        min-width: 0;
        flex: 1 1 100%;
    }

    .student-roster-course-select {
        min-width: 0 !important;
    }
}

.roster-pagination {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.9rem;
    padding-top: 0.9rem;
    border-top: 1px solid var(--border-color);
    color: var(--text-muted);
    font-size: 0.9rem;
    flex-wrap: wrap;
}

.roster-pagination-controls,
.table-actions,
.admin-modal-actions {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.roster-pagination-controls button,
.table-actions button {
    padding: 0.35rem 0.65rem;
    font-size: 0.82rem;
}

.roster-page-size {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.roster-page-size select,
.admin-form-grid select,
.admin-form-grid input {
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
}

.admin-modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.55);
}

.admin-modal-dialog {
    width: min(520px, 100%);
    padding: 1.25rem;
    border-radius: 1rem;
    border: 1px solid var(--border-color);
    background: var(--card-bg);
    box-shadow: 0 18px 45px rgba(15, 23, 42, 0.22);
}

.admin-modal-dialog h3 {
    margin-bottom: 1rem;
    color: var(--primary);
}

.admin-form-grid {
    display: grid;
    gap: 0.85rem;
}

.admin-modal-actions {
    justify-content: flex-end;
    margin-top: 1rem;
}

.learning-picker {
    display: grid;
    gap: 0.75rem;
    margin-top: 1rem;
}

.learning-module-group {
    border: 1px solid var(--border-color);
    border-radius: 0.85rem;
    background: var(--bg-color);
    overflow: hidden;
}

.learning-module-group summary {
    padding: 0.75rem 1rem;
    cursor: pointer;
    color: var(--primary);
    font-weight: 600;
}

.learning-chapter-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
    max-height: 260px;
    overflow-y: auto;
    padding: 0 1rem 1rem 1rem;
}

.learning-chapter-item {
    background: var(--card-bg);
}

.learning-profile-head {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.5rem 1rem;
    align-items: center;
    padding: 1rem;
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.85rem;
    background: rgba(79, 70, 229, 0.05);
}

.learning-profile-head h3 {
    color: var(--primary);
}

.learning-profile-head p {
    color: var(--text-muted);
}

.profile-score {
    grid-row: span 2;
    width: 66px;
    height: 66px;
    border-radius: 50%;
    display: inline-flex;
    justify-content: center;
    align-items: center;
    background: var(--primary);
    color: white;
    font-size: 1.35rem;
    font-weight: 700;
}

.profile-advice,
.selected-chapters-box,
.profile-suggestions,
.certificate-text {
    margin-top: 1rem;
    padding: 0.9rem;
    border-radius: 0.75rem;
    background: var(--bg-color);
    border: 1px solid var(--border-color);
    color: var(--text-muted);
    font-size: 0.92rem;
}

.profile-top-bottom {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.learning-profile-actions,
.my-plan-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-top: 1rem;
}

.class-analysis-result h4 {
    color: var(--primary);
}

.class-analysis-result .class-analysis-table {
    width: 100%;
    margin-top: 0.75rem;
}

.class-analysis-result .profile-suggestions {
    margin-top: 0.75rem;
}

.my-plan-detail {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px dashed var(--border-color);
}

.my-plan-detail ol {
    margin: 0.5rem 0 0;
    padding-left: 1.35rem;
}

.danger-btn {
    border-color: rgba(220, 38, 38, 0.35);
    color: #b91c1c;
}

.danger-btn:hover {
    border-color: #b91c1c;
    color: #991b1b;
    background: rgba(220, 38, 38, 0.06);
}

.selected-chapters-box p,
.profile-suggestions p,
.certificate-text p {
    margin-top: 0.35rem;
}

.keyword-search-input {
    width: 100%;
    min-width: 0;
    min-height: 3rem;
    box-sizing: border-box;
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
    background: var(--bg-color);
    color: var(--text-main);
    font-size: 0.98rem;
    line-height: 1.4;
}

.keyword-search-input::placeholder {
    color: var(--text-muted);
    opacity: 0.88;
}

.keyword-dictionary {
    max-height: 520px;
    overflow: auto;
    border: 1px solid var(--border-color);
    border-radius: 0.75rem;
}

.keyword-dictionary table {
    box-shadow: none;
    border-radius: 0;
}

.keyword-dictionary th {
    position: sticky;
    top: 0;
    z-index: 1;
}

.keyword-chapter-link {
    display: inline-flex;
    margin: 0.15rem 0.25rem 0.15rem 0;
    padding: 0.25rem 0.45rem;
    background: var(--bg-color);
    color: var(--primary);
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.45rem;
    font-size: 0.78rem;
}

.keyword-chapter-link:hover {
    color: white;
    background: var(--primary);
}

.keyword-chapter-link.semantic-match {
    border-style: dashed;
    border-color: rgba(245, 158, 11, 0.55);
    color: #92400e;
    background: rgba(245, 158, 11, 0.1);
}

.keyword-chapter-link.semantic-match:hover {
    color: white;
    background: #b45309;
}

.chapter-match-badge {
    margin-left: 0.35rem;
    padding: 0.08rem 0.32rem;
    border-radius: 999px;
    background: rgba(245, 158, 11, 0.18);
    font-size: 0.7rem;
    font-weight: 700;
}

.keyword-page {
    display: grid;
    gap: 1.25rem;
}

.keyword-hero {
    display: block;
    min-height: 0;
    padding: 0.75rem 0.9rem;
    margin-bottom: 0;
}

.keyword-stat-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    width: 100%;
}

.cache-status-grid {
    display: grid;
    grid-template-columns: repeat(30, minmax(0, 1fr));
    gap: 0.75rem;
    margin-top: 0.85rem;
}

.cache-status-card {
    grid-column: span 6;
    min-width: 0;
    background: rgba(248, 250, 252, 0.78);
    border: 1px solid var(--border-color);
    border-radius: 0.85rem;
    padding: 0.9rem 1rem;
}

.cache-status-card strong {
    display: block;
    color: var(--text-main);
    margin-bottom: 0.45rem;
    text-align: center;
}

.cache-status-card ul {
    margin: 0;
    padding-left: 1.1rem;
    color: var(--text-muted);
    font-size: 0.86rem;
    line-height: 1.65;
    overflow-wrap: anywhere;
}

.cache-status-card li + li {
    margin-top: 0.35rem;
}

.cache-line-main,
.cache-line-sub {
    display: block;
}

.cache-line-sub {
    margin-top: 0.05rem;
    color: #64748B;
    font-size: inherit;
    line-height: 1.45;
}

.cache-governance-card {
    grid-column: span 5;
    background: rgba(239, 246, 255, 0.72);
}

.cache-governance-card .admin-card-heading {
    flex-direction: row;
    align-items: center;
}

.cache-governance-card .compact-actions {
    flex: 0 0 auto;
    flex-wrap: nowrap;
    gap: 0.45rem;
    margin-bottom: 0;
}

@media (max-width: 900px) {
    .cache-status-card,
    .cache-governance-card {
        grid-column: span 15;
    }
}

@media (max-width: 700px) {
    .cache-status-card,
    .cache-governance-card {
        grid-column: 1 / -1;
    }
}

.admin-suggestion-list {
    margin: 0.35rem 0 0;
    padding-left: 1.2rem;
}

.log-results-list {
    margin: 0;
    padding-left: 1.2rem;
    color: var(--text-muted);
    font-size: 0.85rem;
}

.table-empty-cell {
    text-align: center;
    color: var(--text-muted);
}

.admin-error-text {
    color: #B91C1C;
}

.admin-status-success {
    color: var(--success);
}

.keyword-stat-card {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    background: var(--bg-color);
}

.keyword-stat-card strong {
    display: inline;
    color: var(--primary);
    font-size: 0.92rem;
}

.keyword-stat-card span {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.keyword-search-panel {
    padding: 1rem;
    margin-bottom: 0.85rem;
    border: 1px solid rgba(79, 70, 229, 0.25);
    border-radius: 0.85rem;
    background: rgba(79, 70, 229, 0.07);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35);
}

.keyword-search-panel .keyword-search-input {
    background: var(--card-bg);
}

.keyword-letter-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.keyword-letter-btn {
    min-width: 3rem;
    padding: 0.42rem 0.55rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--card-bg);
    color: var(--text-main);
    font: inherit;
    font-size: 0.82rem;
    cursor: pointer;
}

.keyword-letter-btn:hover,
.keyword-letter-btn.active {
    color: white;
    border-color: var(--primary);
    background: var(--primary);
}

.keyword-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(320px, 0.9fr);
    gap: 1rem;
    align-items: start;
}

.keyword-result-panel,
.keyword-card-panel {
    min-width: 0;
}

.keyword-card-panel {
    position: sticky;
    top: 6rem;
}

.compact-heading {
    margin-bottom: 0.75rem;
}

.keyword-index-results {
    display: grid;
    gap: 0.75rem;
}

.keyword-entry-card {
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--border-color);
    border-radius: 0.85rem;
    background: var(--bg-color);
}

.keyword-entry-card.expanded {
    background: rgba(79, 70, 229, 0.04);
    border-color: rgba(79, 70, 229, 0.25);
}

.keyword-entry-header {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: center;
}

.keyword-entry-header h3 {
    flex: 1 1 auto;
    color: var(--text-main);
    font-size: 1.05rem;
    line-height: 1.35;
}

.keyword-count-badge {
    flex: 0 0 auto;
    padding: 0.2rem 0.45rem;
    border-radius: 999px;
    background: rgba(16, 185, 129, 0.12);
    color: var(--success);
    font-size: 0.78rem;
    font-weight: 600;
}

.keyword-expand-btn {
    flex: 0 0 auto;
    padding: 0.35rem 0.65rem;
    border: 1px solid rgba(79, 70, 229, 0.3);
    border-radius: 0.5rem;
    background: var(--card-bg);
    color: var(--primary);
    font-size: 0.82rem;
    font-weight: 600;
}

.keyword-expand-btn:hover {
    color: white;
    border-color: var(--primary);
    background: var(--primary);
}

.keyword-entry-details {
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-color);
}

.keyword-entry-details[hidden] {
    display: none;
}

.keyword-source-list,
.keyword-entry-chapters {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-top: 0.65rem;
}

.keyword-match-note {
    margin-top: 0.45rem;
    color: #92400e;
    font-size: 0.82rem;
}

.keyword-source-badge {
    padding: 0.18rem 0.5rem;
    border-radius: 999px;
    border: 1px solid var(--border-color);
    background: var(--card-bg);
    color: var(--text-muted);
    font-size: 0.76rem;
}

.keyword-source-badge.source-primary {
    color: var(--primary);
    border-color: rgba(79, 70, 229, 0.35);
    background: rgba(79, 70, 229, 0.08);
}

.keyword-source-badge.source-secondary {
    color: #047857;
    border-color: rgba(16, 185, 129, 0.35);
    background: rgba(16, 185, 129, 0.1);
}

.keyword-source-badge.source-course {
    color: #92400e;
    border-color: rgba(245, 158, 11, 0.38);
    background: rgba(245, 158, 11, 0.12);
}

.keyword-chapter-card-placeholder {
    color: var(--text-muted);
    font-size: 0.92rem;
}

#panel-scoring textarea {
    width: 100%;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    font-family: inherit;
    resize: vertical;
}

#scoreSummaryBox p {
    margin: 0.45rem 0;
}

.score-chapter-maintenance {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(320px, 1.2fr);
    gap: 1rem;
    align-items: center;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(99, 102, 241, 0.22);
    border-radius: 0.55rem;
    background: #eef2ff;
}

.score-chapter-maintenance h3 {
    margin: 0 0 0.25rem;
    color: #3730a3;
    font-size: 0.95rem;
}

.score-chapter-maintenance p {
    margin: 0;
    color: #4f46e5;
    font-size: 0.84rem;
}

.score-chapter-maintenance-actions input {
    background: #fff;
}

.score-chapter-picker {
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    max-height: 58vh;
    overflow: auto;
    padding-right: 0.35rem;
}

.score-chapter-module {
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    padding: 0.75rem;
    background: var(--card-bg);
}

.score-chapter-module h3 {
    margin: 0 0 0.6rem;
    font-size: 0.94rem;
}

.score-chapter-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.45rem;
}

.score-chapter-option {
    display: grid;
    grid-template-columns: 18px 1fr auto;
    gap: 0.45rem;
    align-items: center;
    min-height: 38px;
    padding: 0.45rem 0.55rem;
    border: 1px solid var(--border-color);
    border-radius: 0.38rem;
    background: #fff;
    cursor: pointer;
    font-size: 0.84rem;
}

.score-chapter-option small {
    color: var(--text-muted);
    white-space: nowrap;
    font-size: 0.75rem;
}

#scoreResultBox,
#scoreIssueBox {
    overflow-x: auto;
}

#scoreIssuesTable td:nth-child(3) {
    min-width: 260px;
}

@media (max-width: 980px) {
    body:not(.admin-page) .site-nav-inner {
        grid-template-columns: minmax(0, 1fr) auto;
        align-items: center;
        gap: 0.75rem;
    }

    body:not(.admin-page) nav h1 {
        width: auto;
    }

    body:not(.admin-page) .top-nav-links {
        width: 100%;
        justify-content: flex-start;
    }

    .student-identity-inner {
        flex-direction: row;
        align-items: center;
    }
}

@media (max-width: 640px) {
    body:not(.admin-page) nav {
        padding: 0 1rem;
        width: 100%;
        box-sizing: border-box;
        box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
    }

    body:not(.admin-page) .site-nav-inner {
        gap: 0.55rem;
        padding: 0.65rem 0 0.75rem;
    }

    body:not(.admin-page) nav h1 {
        width: auto;
        justify-content: flex-start;
        gap: 0.55rem !important;
        font-size: 0.92rem;
        line-height: 1.2;
        text-align: left;
    }

    body:not(.admin-page) nav h1 img {
        height: 28px !important;
    }

    body:not(.admin-page) .top-nav-links {
        flex: 0 0 auto;
        width: 100%;
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.45rem;
        overflow: visible;
        padding: 0;
    }

    body:not(.admin-page) .top-nav-links a {
        width: 100%;
        min-width: 0;
        justify-content: center;
        padding: 0.48rem 0.45rem;
        border-radius: 0.85rem;
        border-color: rgba(79, 70, 229, 0.16);
        background: rgba(79, 70, 229, 0.06);
        font-size: 0.78rem;
        line-height: 1.18;
        text-align: center;
    }

    body:not(.admin-page) .top-nav-links a.active {
        color: white;
        border-color: var(--primary);
        background: var(--primary);
        box-shadow: 0 6px 14px rgba(79, 70, 229, 0.28);
    }

    .student-identity-inner {
        gap: 0.35rem;
    }

    .student-identity-main {
        max-width: 38vw;
        gap: 0.2rem 0.35rem;
        font-size: 0.76rem;
    }

    .student-identity-bar button {
        width: auto;
        min-height: 32px;
        padding: 0.32rem 0.5rem;
        font-size: 0.74rem;
    }

    .container {
        margin: 1.5rem auto;
    }

    .search-box,
    .result-card {
        padding: 1rem;
        border-radius: 0.75rem;
    }

    .draft-download-card {
        flex-direction: column;
        align-items: stretch;
    }

    .draft-download-card a {
        width: 100%;
    }

    .student-inline-fields {
        flex-direction: column !important;
        gap: 0.75rem !important;
    }

    .student-inline-fields input {
        width: 100% !important;
        flex: 1 1 auto !important;
        min-width: 0;
    }

    .result-header {
        gap: 0.75rem;
    }

    .course-aspect-grid {
        grid-template-columns: 1fr;
    }

    .section-heading,
    .student-profile-controls {
        grid-template-columns: 1fr;
        display: grid;
    }

    .course-module-grid,
    .aspect-selector,
    .learning-chapter-list,
    .profile-top-bottom,
    .keyword-hero,
    .keyword-layout,
    .keyword-stat-grid {
        grid-template-columns: 1fr;
    }

    .keyword-card-panel {
        position: static;
    }

    .keyword-entry-header {
        flex-direction: column;
    }

    .aspect-bar-row {
        grid-template-columns: 1fr 1.4fr 44px;
    }

    .login-log-card-header {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.35rem;
    }

    .login-log-card-meta {
        justify-content: flex-start;
        text-align: left;
        white-space: normal;
    }

    .login-log-detail-row {
        gap: 0.28rem;
    }

    .login-log-chip {
        border-radius: 0.65rem;
        max-width: 100%;
    }
}

/* 讨论组资料检索 */
.forum-data-container {
    display: grid;
    gap: 1.25rem;
}

.forum-data-container > .result-card {
    margin-bottom: 0;
    border-radius: 0.5rem;
}

.forum-data-hero {
    border-top: 4px solid #0F766E;
}

.forum-data-summary {
    align-items: center;
}

.forum-data-description {
    min-width: 0;
    margin: 0;
    color: var(--text-muted);
    font-size: 0.92rem;
    line-height: 1.6;
}

.forum-dataset-meta {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 0.35rem 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    color: var(--text-muted);
    background: var(--bg-color);
    font-size: 0.82rem;
    white-space: nowrap;
}

.forum-stat-grid,
.forum-admin-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
}

.forum-stat-grid > div,
.forum-admin-stat {
    min-width: 0;
    padding: 0.85rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
}

.forum-stat-grid strong,
.forum-admin-stat strong {
    display: block;
    color: #0F766E;
    font-size: 1.15rem;
    overflow-wrap: anywhere;
}

.forum-stat-grid span,
.forum-admin-stat span {
    display: block;
    margin-top: 0.15rem;
    color: var(--text-muted);
    font-size: 0.8rem;
}

.forum-search-panel,
.forum-results-panel,
.forum-package-panel,
.forum-workspace-panel {
    display: grid;
    gap: 1rem;
}

.forum-workspace-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.forum-workspace-heading h2,
.forum-workspace-section h2 {
    margin: 0;
}

.forum-workspace-heading p,
.forum-workspace-section .section-heading p {
    margin: 0.35rem 0 0;
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: 1.6;
}

.forum-workspace-grid {
    display: grid;
    grid-template-columns: minmax(300px, 0.9fr) minmax(0, 1.5fr);
    gap: 1rem;
    align-items: start;
}

.forum-package-column,
.forum-results-section {
    display: grid;
    gap: 1rem;
    min-width: 0;
}

.forum-workspace-section {
    display: grid;
    gap: 0.85rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
}

.forum-results-section {
    min-height: 100%;
}

.forum-field {
    display: grid;
    gap: 0.4rem;
    min-width: 0;
    color: var(--text-main);
    font-weight: 600;
    font-size: 0.88rem;
}

.forum-field input,
.forum-field select {
    width: 100%;
    min-width: 0;
    min-height: 44px;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    color: var(--text-main);
    background: var(--bg-color);
    font: inherit;
    font-weight: 400;
}

.forum-field textarea {
    min-height: 112px;
    font-weight: 400;
}

.forum-field input:focus,
.forum-field select:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
}

.forum-query-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem;
}

.forum-filter-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.85rem;
}

.forum-fieldset {
    padding: 0.8rem 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
}

.forum-fieldset legend {
    padding: 0 0.35rem;
    color: var(--text-main);
    font-size: 0.86rem;
    font-weight: 700;
}

.forum-checkbox-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem 1rem;
}

.forum-checkbox-grid label,
.forum-material-check {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-main);
    font-size: 0.86rem;
    cursor: pointer;
}

.forum-checkbox-grid input,
.forum-material-check input {
    width: 17px;
    height: 17px;
    accent-color: var(--primary);
}

.forum-example-row,
.forum-primary-actions,
.forum-selection-actions,
.forum-result-actions,
.forum-attachment-links {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.forum-example-row > span {
    color: var(--text-muted);
    font-size: 0.84rem;
    font-weight: 600;
}

.forum-example-row button,
.forum-selection-actions button,
.forum-result-actions button {
    padding: 0.5rem 0.75rem;
    font-size: 0.84rem;
}

.forum-status {
    min-height: 1.5rem;
    padding: 0.45rem 0;
    color: var(--text-muted);
    font-size: 0.86rem;
}

.forum-status.is-success,
.admin-status-line.is-success {
    color: #047857;
}

.forum-status.is-error,
.admin-status-line.is-error {
    color: #B91C1C;
}

.forum-status.is-warning,
.admin-status-line.is-warning {
    color: #B45309;
}

.forum-result-list,
.forum-source-list {
    display: grid;
    gap: 0.85rem;
}

.forum-result-item {
    display: grid;
    gap: 0.75rem;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-left: 4px solid #0F766E;
    border-radius: 0.5rem;
    background: var(--card-bg);
}

.forum-result-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.forum-result-title {
    min-width: 0;
}

.forum-result-title h3 {
    font-size: 1rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.forum-result-meta,
.forum-badge-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.7rem;
    margin-top: 0.35rem;
}

.forum-result-meta span {
    color: var(--text-muted);
    font-size: 0.78rem;
}

.forum-result-score {
    flex: 0 0 auto;
    min-width: 56px;
    padding: 0.25rem 0.45rem;
    border-radius: 0.4rem;
    background: #ECFDF5;
    color: #047857;
    font-size: 0.9rem;
    font-weight: 700;
    text-align: center;
}

.forum-badge {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0.2rem 0.5rem;
    border: 1px solid #BFDBFE;
    border-radius: 0.35rem;
    background: #EFF6FF;
    color: #1D4ED8;
    font-size: 0.75rem;
}

.forum-badge.is-type {
    border-color: #A7F3D0;
    background: #ECFDF5;
    color: #047857;
}

.forum-result-snippet,
.forum-full-content pre {
    color: var(--text-main);
    font-size: 0.88rem;
    line-height: 1.75;
    overflow-wrap: anywhere;
}

.forum-result-snippet mark {
    padding: 0 0.08rem;
    background: #FEF3C7;
    color: #92400E;
}

.forum-source-card {
    display: grid;
    gap: 0.3rem;
    padding: 0.75rem;
    border: 1px solid #CCFBF1;
    border-radius: 0.5rem;
    background: #F0FDFA;
    font-size: 0.82rem;
}

.forum-source-line {
    display: grid;
    grid-template-columns: minmax(64px, 86px) minmax(0, 1fr);
    gap: 0.55rem;
    overflow-wrap: anywhere;
}

.forum-source-line strong {
    color: #115E59;
}

.forum-source-line a,
.forum-attachment-links a {
    color: #1D4ED8;
    overflow-wrap: anywhere;
}

.forum-result-actions {
    justify-content: space-between;
}

.forum-full-content {
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-color);
}

.forum-full-content pre {
    margin: 0;
    white-space: pre-wrap;
    font-family: inherit;
}

.forum-attachments {
    display: grid;
    gap: 0.35rem;
    margin-top: 0.75rem;
}

.forum-attachment-links a,
.forum-link-text {
    font-size: 0.8rem;
}

.forum-tabs {
    display: flex;
    gap: 0;
    overflow-x: auto;
    border-bottom: 1px solid var(--border-color);
}

.forum-tab {
    flex: 0 0 auto;
    padding: 0.65rem 0.9rem;
    border: 0;
    border-bottom: 3px solid transparent;
    border-radius: 0;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.88rem;
}

.forum-tab:hover,
.forum-tab.active {
    border-bottom-color: var(--primary);
    background: rgba(79, 70, 229, 0.06);
    color: var(--primary);
}

.forum-tab-panel {
    display: none;
}

.forum-tab-panel.active {
    display: block;
}

.forum-results-tab-panel.active {
    display: grid;
    gap: 1rem;
}

.forum-outline {
    white-space: pre-wrap;
    line-height: 1.75;
    font-size: 0.9rem;
}

.forum-export-text {
    min-height: 420px;
    font-family: Consolas, "Microsoft YaHei", sans-serif;
    font-size: 0.84rem;
    line-height: 1.65;
}

.forum-empty {
    padding: 1.5rem;
    border: 1px dashed var(--border-color);
    border-radius: 0.5rem;
    color: var(--text-muted);
    text-align: center;
}

.forum-admin-stat-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-bottom: 1rem;
}

.forum-admin-import-card,
.forum-admin-source-info {
    border-radius: 0.5rem;
}

.forum-admin-file-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
    margin: 1rem 0;
}

.forum-admin-file-grid .form-group {
    display: grid;
    gap: 0.4rem;
}

.forum-admin-file-grid input[type="file"] {
    width: 100%;
    min-width: 0;
    padding: 0.6rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: var(--bg-color);
}

.forum-admin-source-row {
    display: grid;
    grid-template-columns: minmax(120px, 170px) minmax(0, 1fr);
    gap: 0.75rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid var(--border-color);
}

.forum-admin-source-row:last-child {
    border-bottom: 0;
}

.forum-admin-source-row span {
    overflow-wrap: anywhere;
}

.forum-admin-hash {
    font-family: Consolas, monospace;
    font-size: 0.78rem;
}

.forum-offline-page .site-nav-inner {
    max-width: 1180px;
    margin: 0 auto;
}

@media (prefers-color-scheme: dark) {
    .forum-result-score,
    .forum-badge,
    .forum-badge.is-type,
    .forum-source-card {
        border-color: var(--border-color);
        background: var(--bg-color);
        color: var(--text-main);
    }

    .forum-source-line strong,
    .forum-stat-grid strong,
    .forum-admin-stat strong {
        color: #5EEAD4;
    }
}

@media (max-width: 820px) {
    .forum-stat-grid,
    .forum-admin-stat-grid,
    .forum-filter-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .forum-query-grid,
    .forum-admin-file-grid {
        grid-template-columns: 1fr;
    }

    .forum-workspace-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .forum-stat-grid,
    .forum-admin-stat-grid,
    .forum-filter-grid {
        grid-template-columns: 1fr;
    }

    .forum-result-head,
    .forum-result-actions,
    .forum-primary-actions,
    .forum-selection-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .forum-result-score {
        align-self: flex-start;
    }

    .forum-primary-actions button,
    .forum-selection-actions button {
        width: 100%;
    }

    .forum-source-line,
    .forum-admin-source-row {
        grid-template-columns: 1fr;
        gap: 0.1rem;
    }
}

/* Personal learning admin panel */
.personal-admin-card {
    margin-top: 1rem;
}

.personal-admin-card .personal-form-control {
    box-sizing: border-box;
    width: 100%;
    min-height: 2.55rem;
    padding: 0.58rem 0.72rem;
    border: 1px solid #cbd5e1;
    border-radius: 0.45rem;
    background: #fff;
    color: #1f2937;
    font: inherit;
    line-height: 1.35;
    transition: border-color 0.16s ease, box-shadow 0.16s ease, background-color 0.16s ease;
}

.personal-admin-card .personal-form-control::placeholder {
    color: #94a3b8;
}

.personal-admin-card .personal-form-control:hover {
    border-color: #94a3b8;
}

.personal-admin-card .personal-form-control:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgb(37 99 235 / 14%);
}

.personal-admin-card input.personal-form-control:read-only,
.personal-admin-card textarea.personal-form-control:read-only {
    background: #f1f5f9;
    color: #475569;
    cursor: not-allowed;
}

.personal-admin-card .personal-form-control:disabled {
    opacity: 0.65;
    cursor: not-allowed;
}

.personal-admin-card .personal-select-control {
    cursor: pointer;
}

.personal-required-chapter-value {
    display: flex;
    min-height: 2.55rem;
    align-items: center;
    padding: 0.58rem 0.72rem;
    border: 1px solid #dbe4ee;
    border-left: 3px solid #64748b;
    border-radius: 0.45rem;
    background: #f8fafc;
    color: #334155;
    font-weight: 600;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.personal-required-chapter-value[hidden] {
    display: none;
}

.personal-admin-card .personal-file-input {
    padding: 0.42rem 0.5rem;
    background: #f8fafc;
    cursor: pointer;
}

.personal-admin-card .personal-file-input::file-selector-button {
    margin-right: 0.6rem;
    padding: 0.38rem 0.65rem;
    border: 1px solid #cbd5e1;
    border-radius: 0.35rem;
    background: #fff;
    color: #334155;
    cursor: pointer;
}

.personal-admin-required-form,
.personal-score-import-form {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.8rem;
    margin-top: 1rem;
}

.personal-score-policy {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: start;
    column-gap: 0.55rem;
    row-gap: 0.2rem;
    padding: 0.7rem 0.8rem;
    border: 1px solid #fed7aa;
    background: #fff7ed;
    color: #7c2d12;
    line-height: 1.45;
}

.personal-score-policy input {
    width: 1rem;
    height: 1rem;
    margin: 0.15rem 0 0;
    accent-color: #c2410c;
}

.personal-score-policy span {
    font-weight: 700;
}

.personal-score-policy small {
    grid-column: 2;
    color: #9a3412;
}

.personal-report-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
    margin-top: 1rem;
    padding: 0.75rem;
    border: 1px solid #dbe4ee;
    border-radius: 0.65rem;
    background: #f8fafc;
}

.personal-reports-card .admin-card-heading {
    align-items: center;
}

.personal-reports-card .admin-card-heading > div {
    min-width: 0;
}

.personal-reports-card .personal-report-admin-actions {
    flex: 0 0 auto;
}

.personal-reports-card .personal-report-admin-actions .admin-danger-btn {
    border: 1px solid #fecaca;
    background: #fff;
    color: #b91c1c;
    box-shadow: none;
}

.personal-reports-card .personal-report-admin-actions .admin-danger-btn:hover:not(:disabled) {
    border-color: #f87171;
    background: #fff1f2;
    color: #991b1b;
}

.personal-reports-card .personal-report-admin-actions .admin-danger-btn:disabled {
    border-color: #e2e8f0;
    background: #f8fafc;
    color: #94a3b8;
}

.personal-admin-toolbar,
.personal-score-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
    margin-top: 1rem;
}

.personal-admin-toolbar #regeneratePersonalWeightsBtn[hidden] {
    display: none !important;
}

.personal-admin-toolbar input,
.personal-report-filter-row input {
    box-sizing: border-box;
    min-width: 220px;
    flex: 1 1 280px;
}

.personal-report-filter-row .personal-form-control {
    min-width: 160px;
    flex: 1 1 180px;
}

.personal-report-search-btn {
    min-width: 88px;
    min-height: 42px;
    padding: 0.65rem 1.35rem;
    border-color: #2563eb;
    background: #eff6ff;
    color: #1d4ed8;
    font-size: 0.98rem;
    font-weight: 650;
}

.personal-report-search-btn:hover {
    border-color: #1d4ed8;
    background: #dbeafe;
    color: #1e40af;
}

.personal-report-search-btn:focus-visible {
    outline: 3px solid rgb(37 99 235 / 22%);
    outline-offset: 2px;
}

.personal-report-filter-row .hint-text {
    flex: 1 1 100%;
}

.personal-reports-card .personal-report-filter-row .hint-text {
    margin-top: 0.1rem;
}

.personal-report-queues {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.personal-ai-queue-summary {
    display: grid;
    gap: 0.8rem;
    margin: 0.9rem 0 1rem;
    padding: 0.9rem 1rem;
    border: 1px solid #dbe4ee;
    border-left: 4px solid #2563eb;
    border-radius: 0.55rem;
    background: #f8fafc;
}

.personal-ai-queue-summary[hidden] {
    display: none;
}

.personal-ai-queue-summary.is-complete {
    border-left-color: #15803d;
}

.personal-ai-queue-summary.is-failed {
    border-left-color: #dc2626;
}

.personal-ai-queue-heading,
.personal-ai-queue-title-group,
.personal-ai-queue-actions,
.personal-ai-queue-progress-copy {
    display: flex;
    align-items: center;
}

.personal-ai-queue-heading {
    justify-content: space-between;
    gap: 1rem;
}

.personal-ai-queue-title-group,
.personal-ai-queue-actions {
    flex-wrap: wrap;
    gap: 0.55rem;
}

.personal-ai-queue-actions {
    justify-content: flex-end;
}

.personal-ai-queue-title {
    color: #0f172a;
    font-size: 0.98rem;
    font-weight: 750;
}

.personal-ai-queue-state {
    display: inline-flex;
    align-items: center;
    min-height: 1.55rem;
    padding: 0.18rem 0.5rem;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    background: #fff;
    color: #475569;
    font-size: 0.76rem;
    font-weight: 700;
    white-space: nowrap;
}

.personal-ai-queue-state.is-active {
    border-color: #bfdbfe;
    background: #eff6ff;
    color: #1d4ed8;
}

.personal-ai-queue-state.is-complete {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.personal-ai-queue-state.is-failed {
    border-color: #fecaca;
    background: #fef2f2;
    color: #b91c1c;
}

.personal-ai-queue-updated {
    color: #64748b;
    font-size: 0.8rem;
    line-height: 1.4;
    white-space: nowrap;
}

.personal-ai-queue-actions .secondary-btn {
    min-height: 34px;
    padding: 0.45rem 0.75rem;
    white-space: nowrap;
}

.personal-ai-queue-progress-copy {
    justify-content: space-between;
    gap: 1rem;
    color: #334155;
    font-size: 0.84rem;
}

.personal-ai-queue-progress-copy strong {
    color: #1e3a8a;
    font-size: 0.88rem;
}

.personal-ai-queue-progress-copy span {
    color: #475569;
    font-variant-numeric: tabular-nums;
    font-weight: 750;
}

.personal-ai-queue-progress {
    position: relative;
    height: 0.48rem;
    overflow: hidden;
    border-radius: 999px;
    background: #e2e8f0;
}

.personal-ai-queue-progress > span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: #2563eb;
    transition: width 180ms ease;
}

.personal-ai-queue-summary.is-complete .personal-ai-queue-progress > span {
    background: #16a34a;
}

.personal-ai-queue-summary.is-failed .personal-ai-queue-progress > span {
    background: #dc2626;
}

.personal-ai-queue-stats {
    display: grid;
    grid-template-columns: repeat(6, minmax(88px, 1fr));
    overflow: hidden;
    border: 1px solid #e2e8f0;
    border-radius: 0.4rem;
    background: #fff;
}

.personal-ai-queue-stat {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: baseline;
    gap: 0.45rem;
    min-width: 0;
    padding: 0.55rem 0.65rem;
    border-left: 1px solid #e2e8f0;
}

.personal-ai-queue-stat:first-child {
    border-left: 0;
}

.personal-ai-queue-stat span {
    overflow: hidden;
    color: #64748b;
    font-size: 0.76rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.personal-ai-queue-stat strong {
    color: #334155;
    font-size: 1rem;
    font-variant-numeric: tabular-nums;
}

.personal-ai-queue-stat.is-running strong {
    color: #1d4ed8;
}

.personal-ai-queue-stat.is-completed strong {
    color: #15803d;
}

.personal-ai-queue-stat.is-failed strong {
    color: #b91c1c;
}

.personal-ai-queue-stat.is-muted strong {
    color: #64748b;
}

.personal-ai-queue-stat.is-concurrency {
    background: #f1f5f9;
}

.personal-report-queues .personal-ai-queue-summary {
    min-width: 0;
    gap: 0.55rem;
    margin: 0.75rem 0 0.9rem;
    padding: 0.72rem 0.8rem;
}

.personal-report-queues .personal-ai-queue-heading {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 0.45rem 0.65rem;
}

.personal-report-queues .personal-ai-queue-actions {
    gap: 0.4rem;
    margin-left: auto;
}

.personal-report-queues .personal-ai-queue-updated {
    font-size: 0.72rem;
}

.personal-report-queues .personal-ai-queue-actions .secondary-btn {
    min-height: 30px;
    padding: 0.34rem 0.58rem;
    font-size: 0.76rem;
}

.personal-report-queues .personal-ai-queue-stats {
    grid-template-columns: repeat(6, minmax(0, 1fr));
}

.personal-report-queues .personal-report-queue-summary .personal-ai-queue-stats {
    grid-template-columns: repeat(5, minmax(0, 1fr));
}

.personal-report-queues .personal-ai-queue-stat {
    padding: 0.45rem 0.52rem;
}

@media (max-width: 1100px) {
    .personal-report-queues {
        grid-template-columns: minmax(0, 1fr);
        gap: 0;
    }

    .personal-report-queues .personal-ai-queue-summary {
        margin-bottom: 0;
    }

    .personal-report-queues .personal-ai-queue-summary:last-child:not([hidden]) {
        margin-bottom: 0.9rem;
    }
}

@media (max-width: 900px) {
    .personal-ai-queue-stats {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .personal-ai-queue-stat:nth-child(4) {
        border-left: 0;
    }

    .personal-ai-queue-stat:nth-child(n + 4) {
        border-top: 1px solid #e2e8f0;
    }

    .personal-report-queues .personal-ai-queue-stats {
        grid-template-columns: repeat(6, minmax(0, 1fr));
    }

    .personal-report-queues .personal-report-queue-summary .personal-ai-queue-stats {
        grid-template-columns: repeat(5, minmax(0, 1fr));
    }

    .personal-report-queues .personal-ai-queue-stat:nth-child(n) {
        border-top: 0;
    }

    .personal-report-queues .personal-ai-queue-stat:nth-child(4) {
        border-left: 1px solid #e2e8f0;
    }
}

@media (max-width: 640px) {
    .personal-ai-queue-heading,
    .personal-ai-queue-actions {
        align-items: stretch;
        flex-direction: column;
    }

    .personal-ai-queue-actions {
        width: 100%;
    }

    .personal-ai-queue-updated {
        white-space: normal;
    }

    .personal-ai-queue-actions .secondary-btn {
        width: 100%;
    }

    .personal-ai-queue-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-report-queues .personal-ai-queue-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-report-queues .personal-report-queue-summary .personal-ai-queue-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-report-queues .personal-ai-queue-stat:nth-child(odd) {
        border-left: 0;
    }

    .personal-report-queues .personal-ai-queue-stat:nth-child(even) {
        border-left: 1px solid #e2e8f0;
    }

    .personal-report-queues .personal-ai-queue-stat:nth-child(n + 3) {
        border-top: 1px solid #e2e8f0;
    }

    .personal-ai-queue-stat:nth-child(odd) {
        border-left: 0;
    }

    .personal-ai-queue-stat:nth-child(n + 3) {
        border-top: 1px solid #e2e8f0;
    }
}

.personal-admin-toolbar .personal-chapter-search {
    flex: 1 1 280px;
}

.personal-plan-filter-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem;
    margin-top: 1rem;
    padding: 0.75rem;
    border: 1px solid #dbe4ee;
    border-radius: 0.65rem;
    background: #f8fafc;
}

.personal-plan-filter-row .personal-form-control {
    flex: 1 1 180px;
    min-width: 160px;
}

.personal-plan-filter-row .hint-text {
    flex: 1 1 100%;
}

.personal-plans-card .admin-card-heading {
    align-items: center;
}

.personal-plans-card .admin-card-heading > div {
    min-width: 0;
}

.personal-plans-card > .admin-table-scroll {
    margin-top: 0.75rem;
}

#clearPersonalPlansBtn {
    flex: 0 0 auto;
    border: 1px solid #fecaca;
    background: #fff;
    color: #b91c1c;
    box-shadow: none;
    white-space: nowrap;
}

#clearPersonalPlansBtn:hover {
    border-color: #f87171;
    background: #fff1f2;
    color: #991b1b;
}

.personal-plan-summary-cell {
    min-width: 0;
}

.personal-plan-summary-empty {
    color: #64748b;
}

.personal-plan-popover-trigger {
    display: block;
    width: 100%;
    min-width: 0;
    overflow: hidden;
    padding: 0.12rem 0.2rem;
    border: 0;
    border-bottom: 1px dashed #9fb3c8;
    border-radius: 0.2rem;
    background: transparent;
    color: #334155;
    font: inherit;
    line-height: 1.45;
    text-align: left;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}

.personal-plan-popover-trigger:hover,
.personal-plan-popover-trigger:focus-visible,
.personal-plan-popover-trigger.is-popover-open {
    border-bottom-color: var(--primary);
    background: #f1f6fb;
    color: var(--primary-dark, #1d4f7a);
    outline: none;
}

.personal-plan-identity-trigger {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    text-align: left;
}

.personal-plan-identity-id {
    flex: 0 0 auto;
    color: #64748b;
    font-size: 0.79rem;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
}

.personal-plan-identity-name {
    min-width: 0;
    overflow: hidden;
    color: #1e293b;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.personal-plan-status-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    padding: 0.25rem 0.55rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.personal-plan-status-badge::before {
    width: 0.42rem;
    height: 0.42rem;
    margin-right: 0.35rem;
    border-radius: 50%;
    background: currentColor;
    content: '';
    opacity: 0.72;
}

.personal-plan-status-badge.is-complete {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.personal-plan-status-badge.is-waiting {
    border-color: #cbd5e1;
    background: #f8fafc;
    color: #475569;
}

.personal-plan-status-badge.is-unreliable {
    border-color: #fed7aa;
    background: #fff7ed;
    color: #c2410c;
}

.personal-plan-status-badge.is-error {
    border-color: #fecaca;
    background: #fff1f2;
    color: #b91c1c;
}

.personal-plan-status-badge.is-neutral {
    border-color: #e2e8f0;
    background: #f8fafc;
    color: #64748b;
}

.personal-plan-time {
    display: inline-flex;
    align-items: baseline;
    gap: 0.3rem;
    color: #475569;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.personal-plan-time-clock {
    color: #94a3b8;
    font-size: 0.82rem;
}

.personal-plan-popover {
    position: fixed;
    z-index: 1400;
    box-sizing: border-box;
    width: min(31rem, calc(100vw - 1.5rem));
    max-height: min(24rem, calc(100vh - 1.5rem));
    overflow: auto;
    padding: 0.78rem 0.9rem;
    border: 1px solid #cbd8e5;
    border-radius: 0.5rem;
    background: #fff;
    box-shadow: 0 12px 30px rgba(15, 23, 42, 0.18);
    color: #1e293b;
}

.personal-plan-popover[hidden] {
    display: none;
}

.personal-plan-popover-title {
    margin: 0 0 0.6rem;
    color: var(--text-main);
    font-size: 0.9rem;
    line-height: 1.4;
}

.personal-plan-popover-content {
    display: grid;
    gap: 0.48rem;
    min-width: 0;
}

.personal-plan-popover-item {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: 0.45rem;
    min-width: 0;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.personal-plan-popover-label {
    color: #334155;
    white-space: nowrap;
}

.personal-plan-popover-value {
    min-width: 0;
    overflow-wrap: anywhere;
}

.personal-plan-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.8rem;
}

.personal-plan-pagination-actions {
    display: flex;
    gap: 0.55rem;
}

#personalPlansTable {
    width: 100%;
    min-width: 820px;
    max-width: 100%;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
}

#personalPlansTable th,
#personalPlansTable td {
    box-sizing: border-box;
    min-width: 0;
    padding: 0.68rem 0.72rem;
    overflow-wrap: anywhere;
    vertical-align: middle !important;
    white-space: normal;
    word-break: break-word;
}

#personalPlansTable th:nth-child(1),
#personalPlansTable td:nth-child(1) {
    width: 20%;
}

#personalPlansTable th:nth-child(2),
#personalPlansTable td:nth-child(2) {
    width: 18%;
}

#personalPlansTable th:nth-child(3),
#personalPlansTable td:nth-child(3) {
    width: 24%;
}

#personalPlansTable th:nth-child(4),
#personalPlansTable td:nth-child(4) {
    width: 14%;
}

#personalPlansTable th:nth-child(5),
#personalPlansTable td:nth-child(5) {
    width: 14%;
}

#personalPlansTable th:nth-child(6),
#personalPlansTable td:nth-child(6) {
    width: 10%;
}

#personalPlansTable thead th {
    background: #f1f5f9;
    color: #334155;
    font-size: 0.82rem;
    font-weight: 750;
    line-height: 1.35;
    text-align: center;
    vertical-align: middle;
}

#personalPlansTable tbody tr {
    border-bottom: 0;
    transition: background-color 0.15s ease;
}

#personalPlansTable tbody tr > td {
    border-bottom: 1px solid #e2e8f0;
}

#personalPlansTable tbody tr:nth-child(even) td {
    background: #fcfdff;
}

#personalPlansTable tbody tr:hover td {
    background: #f8fbff;
}

#personalPlansTable td.personal-plan-summary-cell {
    white-space: normal;
}

#personalPlansTable td.personal-plan-identity-cell {
    white-space: nowrap;
}

#personalPlansTable td.personal-plan-status-cell,
#personalPlansTable td.personal-plan-time-cell {
    text-align: center;
}

#personalPlansTable td.personal-plan-actions-cell {
    vertical-align: middle !important;
    white-space: nowrap;
}

#personalPlansTable td.personal-plan-actions-cell .table-actions {
    justify-content: center;
    align-items: center;
    flex-direction: column;
    gap: 0.35rem;
}

#personalPlansTable td.personal-plan-actions-cell button {
    min-width: 0;
    padding: 0.38rem 0.5rem;
    border: 1px solid #fecaca;
    background: #fff;
    color: #b91c1c;
    font-size: 0.8rem;
    line-height: 1.3;
    white-space: nowrap;
}

#personalPlansTable td.personal-plan-actions-cell button:hover {
    border-color: #f87171;
    background: #fff1f2;
    color: #991b1b;
}

.personal-plans-card .personal-plan-pagination {
    padding-top: 0.8rem;
    border-top: 1px solid #e2e8f0;
}

@media (max-width: 760px) {
    .personal-plans-card .admin-card-heading {
        align-items: stretch;
        flex-direction: column;
    }

    #clearPersonalPlansBtn {
        align-self: flex-start;
    }

    .personal-plan-time {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.1rem;
        white-space: normal;
    }

    .personal-plan-popover {
        width: min(31rem, calc(100vw - 1.5rem));
        max-height: calc(100vh - 1.5rem);
    }
}

.personal-dimension-editor {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.55rem;
    margin-top: 0.85rem;
    padding: 0.7rem;
    overflow: visible;
    border: 1px solid #dbe4ee;
    background: #f8fafc;
}

.personal-dimension-group {
    overflow: hidden;
    border: 1px solid #dbe4ee;
    border-radius: 0.55rem;
    background: #fff;
}

.personal-dimension-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    padding: 0.75rem 0.85rem;
    background: #f8fafc;
    border-bottom: 1px solid #dbe4ee;
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.personal-dimension-group-header:hover {
    background: #f1f5f9;
}

.personal-dimension-group.collapsed .personal-dimension-group-header {
    border-bottom: 0;
}

.personal-dimension-group-title {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-width: 0;
}

.personal-dimension-group-title h4 {
    margin: 0;
    color: #334155;
}

.personal-dimension-group-title span {
    color: #64748b;
    font-size: 0.84rem;
}

.personal-dimension-group-body {
    display: grid;
    gap: 0.55rem;
    padding: 0.7rem;
}

.personal-dimension-group-body .personal-dimension-editor-row {
    margin: 0;
}

.personal-dimension-editor-row {
    display: grid;
    grid-template-columns: minmax(210px, 1.15fr) minmax(300px, 1.45fr) minmax(250px, 1.15fr);
    align-items: center;
    gap: 0.7rem;
    min-width: 0;
    padding: 0.65rem;
    border: 1px solid #e2e8f0;
    background: #fff;
}

.personal-dimension-editor-row.is-invalid {
    border-color: #fca5a5;
    background: #fffafa;
}

.personal-dimension-editor-copy {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
}

.personal-dimension-editor-copy strong {
    overflow-wrap: anywhere;
}

.personal-dimension-editor-copy small {
    color: #64748b;
}

.personal-ecological-aspect-preview {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 0.45rem;
    margin-top: 0.2rem;
    padding: 0.45rem 0.55rem;
    border-left: 3px solid #0f766e;
    background: #f0fdfa;
    color: #115e59;
    font-size: 0.76rem;
    line-height: 1.45;
}

.personal-ecological-aspect-preview > span {
    flex: 0 0 auto;
    font-weight: 700;
}

.personal-ecological-aspect-preview strong {
    min-width: 0;
    color: #134e4a;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.personal-ecological-aspect-preview.is-empty {
    border-left-color: #cbd5e1;
    background: #f8fafc;
    color: #64748b;
}

.personal-weight-editor-legend {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(210px, 1.15fr) minmax(300px, 1.45fr) minmax(250px, 1.15fr);
    align-items: center;
    gap: 0.7rem;
    margin: -0.7rem -0.7rem 10px;
    padding: 0.65rem 1.35rem;
    border-bottom: 1px solid #cbd5e1;
    background: #eef4fb;
    color: #334155;
    font-size: 0.8rem;
    line-height: 1.45;
    font-weight: 700;
}

.personal-weight-editor-legend span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.personal-weight-fields {
    display: grid;
    grid-template-columns: repeat(4, 96px);
    gap: 0.45rem;
}

/* Keep each four-dimension and three-content percentage input visually consistent. */
.personal-weight-set-content .personal-weight-fields {
    grid-template-columns: repeat(3, 96px);
}

.personal-weight-set {
    display: grid;
    gap: 0.45rem;
    min-width: 0;
    padding: 0.55rem;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
}

.personal-weight-set-content {
    background: #f0fdf4;
    border-color: #bbf7d0;
}

.personal-weight-set-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    min-width: 0;
}

.personal-weight-set-title strong {
    color: #334155;
    font-size: 0.82rem;
}

.personal-weight-set-title span {
    color: #64748b;
    font-size: 0.72rem;
    line-height: 1.35;
}

.personal-weight-set-title .personal-weight-total {
    flex: 0 0 auto;
    margin-left: auto;
}

.personal-weight-field {
    position: relative;
    display: grid;
    gap: 0.2rem;
    width: 96px;
    min-width: 0;
}

.personal-weight-field > span {
    display: none;
    color: #64748b;
    font-size: 0.75rem;
}

.personal-weight-field input {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    padding-right: 1.5rem;
}

.personal-weight-field .personal-weight-input {
    min-height: 2.35rem;
    padding: 0.48rem 1.5rem 0.48rem 0.58rem;
}

.personal-weight-field .personal-weight-input-complement {
    border-style: dashed;
    background: #f8fafc;
    cursor: not-allowed;
}

.personal-weight-field small {
    position: absolute;
    right: 0.55rem;
    bottom: 0.7rem;
    color: #94a3b8;
    pointer-events: none;
}

.personal-weight-total {
    color: #b91c1c;
    font-size: 0.78rem;
    white-space: nowrap;
}

.personal-weight-total.is-valid {
    color: #166534;
}

.personal-score-preview {
    margin-top: 0.9rem;
    padding: 0.85rem 1rem;
    border: 1px solid #dbe4ee;
    background: #f8fafc;
    line-height: 1.6;
}

.personal-score-summary-line {
    font-weight: 700;
}

.personal-score-issue-list {
    max-height: 190px;
    margin: 0.45rem 0 0;
    padding-left: 1.2rem;
    overflow: auto;
    color: #9a3412;
}

.personal-score-ok {
    color: #166534;
}

.personal-score-policy-warning {
    color: #9a3412;
    font-weight: 700;
}

#personalReportsTable tbody > tr > td {
    vertical-align: middle !important;
}

#personalReportsTable {
    width: 100%;
    max-width: 100%;
    min-width: 980px;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
}

#personalReportsTable th,
#personalReportsTable td {
    box-sizing: border-box;
    vertical-align: middle !important;
    padding: 0.72rem 0.7rem;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}

#personalReportsTable th:nth-child(1),
#personalReportsTable td:nth-child(1) {
    width: 4%;
}

#personalReportsTable th:nth-child(2),
#personalReportsTable td:nth-child(2) {
    width: 17%;
}

#personalReportsTable th:nth-child(3),
#personalReportsTable td:nth-child(3) {
    width: 23%;
}

#personalReportsTable th:nth-child(4),
#personalReportsTable td:nth-child(4) {
    width: 14%;
}

#personalReportsTable th:nth-child(5),
#personalReportsTable td:nth-child(5) {
    width: 17%;
}

#personalReportsTable th:nth-child(6),
#personalReportsTable td:nth-child(6) {
    width: 11%;
}

#personalReportsTable th:nth-child(7),
#personalReportsTable td:nth-child(7) {
    width: 14%;
}

#personalReportsTable thead th {
    background: #f1f5f9;
    color: #334155;
    font-size: 0.82rem;
    font-weight: 750;
    text-align: center;
    vertical-align: middle;
    line-height: 1.35;
}

#personalReportsTable tbody tr {
    border-bottom: 0;
    transition: background-color 0.15s ease;
}

#personalReportsTable tbody tr > td {
    border-bottom: 1px solid #e2e8f0;
}

#personalReportsTable tbody tr:nth-child(even) td {
    background: #fcfdff;
}

#personalReportsTable tbody tr:hover td {
    background: #f8fbff;
}

#personalReportsTable td.personal-report-select-cell,
#personalReportsTable td.personal-report-status-bundle-cell,
#personalReportsTable td.personal-report-actions-cell {
    text-align: center;
}

#personalReportsTable td.personal-report-identity-cell {
    white-space: nowrap;
}

#personalReportsTable td.personal-report-score-diagnostic-cell,
#personalReportsTable td.personal-report-ai-cell,
#personalReportsTable td.personal-report-learning-cell {
    min-width: 0;
}

.personal-report-status-cell,
.personal-report-status-bundle-cell {
    text-align: center;
}

.personal-report-status-bundle {
    display: grid;
    align-content: center;
    gap: 0.5rem;
    min-width: 0;
}

.personal-report-status-row {
    display: grid;
    grid-template-columns: 2.4rem minmax(0, 1fr);
    align-items: center;
    gap: 0.35rem;
}

.personal-report-status-label {
    color: #64748b;
    font-size: 0.78rem;
}

.personal-report-status-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    max-width: 100%;
    min-height: 1.6rem;
    padding: 0.22rem 0.5rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
    line-height: 1.25;
    text-align: center;
    white-space: nowrap;
}

.personal-report-status-chip.is-success {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.personal-report-status-chip.is-warning {
    border-color: #fde68a;
    background: #fffbeb;
    color: #92400e;
}

.personal-report-status-chip.is-error {
    border-color: #fecaca;
    background: #fef2f2;
    color: #b91c1c;
}

.personal-report-status-chip.is-neutral {
    border-color: #cbd5e1;
    background: #f8fafc;
    color: #475569;
}

.personal-report-score-diagnostic-cell {
    min-width: 0;
}

.personal-report-ai-cell {
    min-width: 0;
}

.personal-report-ai-panel,
.personal-report-score-panel,
.personal-report-learning-panel {
    display: grid;
    gap: 0.45rem;
    min-width: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.personal-report-ai-panel {
    padding-left: 0.65rem;
    border-left: 3px solid #c7d2fe;
}

.personal-report-ai-popover-trigger {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    min-width: 0;
    gap: 0.45rem;
    padding: 0.12rem 0.2rem;
    border: 0;
    border-bottom: 1px dashed #a9b9d4;
    border-radius: 0.2rem;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.personal-report-ai-popover-trigger:hover,
.personal-report-ai-popover-trigger:focus-visible,
.personal-report-ai-popover-trigger.is-popover-open {
    border-bottom-color: #6366f1;
    background: #f5f7ff;
    outline: none;
}

.personal-report-ai-trigger-label {
    min-width: 0;
    overflow: hidden;
    color: var(--text-main);
    font-size: 0.82rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.personal-report-ai-popover-trigger .personal-report-status-chip {
    flex: 0 0 auto;
}

.personal-report-score-summary-trigger {
    display: flex;
    align-items: baseline;
    width: 100%;
    min-width: 0;
    gap: 0.28rem;
    overflow: hidden;
    padding: 0.16rem 0.2rem;
    border: 0;
    border-bottom: 1px dashed #a9b9d4;
    border-radius: 0.2rem;
    background: transparent;
    color: inherit;
    font: inherit;
    font-size: 0.74rem;
    line-height: 1.45;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
}

.personal-report-score-summary-trigger:hover,
.personal-report-score-summary-trigger:focus-visible,
.personal-report-score-summary-trigger.is-popover-open {
    border-bottom-color: #2563eb;
    background: #f1f6fb;
    outline: none;
}

.personal-report-score-summary-trigger > * {
    min-width: 0;
    white-space: nowrap;
}

.personal-report-score-completion,
.personal-report-score-average {
    flex: 0 0 auto;
}

.personal-report-score-completion {
    color: #1e3a8a;
    font-size: 0.82rem;
}

.personal-report-score-completion-rate,
.personal-report-score-average-label,
.personal-report-learning-label,
.personal-report-learning-date {
    color: #64748b;
    font-size: 0.74rem;
}

.personal-report-score-average {
    color: #334155;
    font-size: 0.82rem;
}

.personal-report-learning-panel {
    gap: 0.3rem;
    padding-left: 0.6rem;
    border-left: 3px solid #dbe4ee;
}

.personal-report-learning-heading {
    display: flex;
    align-items: baseline;
    gap: 0.65rem;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
}

.personal-report-learning-primary {
    flex: 0 0 auto;
    overflow: hidden;
    color: #334155;
    font-size: 0.82rem;
    line-height: 1.5;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.personal-report-learning-date:empty {
    display: none;
}

.personal-report-learning-date {
    flex: 0 0 auto;
    white-space: nowrap;
}

.personal-report-actions-cell {
    text-align: center;
}

.personal-report-actions-bar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.65rem;
    min-width: max-content;
    white-space: nowrap;
}

.personal-report-actions-bar > button {
    flex: 0 0 auto;
    min-width: 0;
    padding: 0.4rem 0.45rem;
    font-size: 0.78rem;
    white-space: nowrap;
    line-height: 1.25;
}

.personal-report-actions-bar .personal-report-detail-action {
    border: 1px solid #bfdbfe;
    background: #eff6ff;
    color: #1d4ed8;
}

.personal-report-actions-bar .personal-report-detail-action:hover {
    border-color: #93c5fd;
    background: #dbeafe;
    color: #1e40af;
}

.personal-report-actions-bar .personal-report-delete-action {
    border: 1px solid #fecaca;
    background: #fff;
    color: #b91c1c;
}

.personal-report-actions-bar .personal-report-delete-action:hover {
    border-color: #f87171;
    background: #fff1f2;
    color: #991b1b;
}

.personal-report-actions-bar .personal-report-retry-action {
    border: 1px solid #cbd5e1;
    background: #f8fafc;
    color: #475569;
}

.personal-report-actions-bar .personal-report-retry-action:hover {
    border-color: #94a3b8;
    background: #f1f5f9;
    color: #1e293b;
}

.personal-report-actions-cell {
    vertical-align: middle !important;
}

.personal-reports-card .personal-plan-pagination {
    padding-top: 0.8rem;
    border-top: 1px solid #e2e8f0;
}

@media (max-width: 760px) {
    .personal-reports-card .admin-card-heading {
        align-items: stretch;
        flex-direction: column;
    }

    .personal-reports-card .personal-report-admin-actions {
        align-items: stretch;
        flex: 1 1 auto;
        justify-content: flex-start;
    }

    .personal-reports-card .personal-report-admin-actions > button {
        flex: 1 1 auto;
    }

    .personal-admin-required-form,
    .personal-score-import-form,
    .personal-plan-filter-row,
    .personal-dimension-editor {
        grid-template-columns: 1fr;
    }

    .personal-score-policy {
        grid-column: auto;
    }

    .personal-dimension-editor-row {
        align-items: flex-start;
        grid-template-columns: 1fr;
    }

    .personal-dimension-group-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .personal-dimension-group-toggle {
        width: 100%;
    }

    .personal-weight-editor-legend {
        display: none;
    }

    .personal-weight-fields {
        display: grid;
        width: 100%;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.55rem;
    }

    .personal-weight-set-content .personal-weight-fields {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-weight-field {
        width: auto;
    }

    .personal-weight-set {
        width: 100%;
    }

    .personal-weight-field > span {
        display: block;
    }

}

/* 课程 AI 答疑 */
.course-qa-page {
    background: var(--bg-color);
}

.course-qa-container {
    display: grid;
    gap: 1.25rem;
}

.course-qa-intro {
    display: block;
    width: 100%;
    min-width: 0;
    margin: 0;
    color: var(--text-muted);
    font-size: 0.92rem;
    line-height: 1.75;
    overflow-wrap: anywhere;
}

.course-qa-answer-kicker {
    margin: 0;
    color: var(--primary);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.course-qa-workbench {
    display: grid;
    gap: 0.8rem;
}

.course-qa-char-count {
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
}

.course-qa-char-count.is-limit {
    color: #B91C1C;
    font-weight: 700;
}

.course-qa-question-label {
    color: var(--text-main);
    font-size: 0.88rem;
    font-weight: 700;
}

#courseQaQuestion {
    box-sizing: border-box;
    width: 100%;
    min-height: 148px;
    padding: 0.8rem 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-main);
    font: inherit;
    line-height: 1.7;
    resize: vertical;
}

#courseQaQuestion:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
}

.course-qa-submit-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.85rem;
}

.course-qa-submit-row button {
    min-width: 160px;
}

.course-qa-overall-status {
    min-height: 1.4rem;
    margin: 0;
    color: var(--text-muted);
    line-height: 1.5;
}

.course-qa-results {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.course-qa-answer-panel {
    display: grid;
    align-content: start;
    gap: 0.8rem;
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--border-color);
    border-top: 4px solid #2563EB;
    border-radius: 0.5rem;
    background: var(--card-bg);
}

.course-qa-answer-panel.is-general {
    border-top-color: #0F766E;
}

.course-qa-answer-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.course-qa-answer-header h3 {
    margin: 0.2rem 0 0;
    font-size: 1.06rem;
}

.course-qa-status,
.course-qa-admin-badge {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0.2rem 0.55rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 700;
    white-space: nowrap;
}

.course-qa-status.is-success,
.course-qa-admin-badge.is-completed {
    border-color: #A7F3D0;
    background: #ECFDF5;
    color: #047857;
}

.course-qa-status.is-running,
.course-qa-status.is-waiting,
.course-qa-admin-badge.is-running,
.course-qa-admin-badge.is-queued {
    border-color: #BFDBFE;
    background: #EFF6FF;
    color: #1D4ED8;
}

.course-qa-status.is-warning,
.course-qa-admin-badge.is-partial_failed,
.course-qa-admin-badge.is-interrupted {
    border-color: #FDE68A;
    background: #FFFBEB;
    color: #B45309;
}

.course-qa-status.is-error,
.course-qa-admin-badge.is-failed {
    border-color: #FECACA;
    background: #FEF2F2;
    color: #B91C1C;
}

.course-qa-source-note {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: 1.6;
}

.course-qa-source-note.is-warning {
    color: #B45309;
}

.course-qa-answer-text {
    min-height: 150px;
    padding: 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    background: var(--bg-color);
    color: var(--text-main);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    line-height: 1.8;
}

.course-qa-sources {
    display: grid;
    gap: 0.55rem;
}

.course-qa-sources-heading {
    margin: 0;
    font-size: 0.9rem;
}

.course-qa-source-list {
    display: grid;
    gap: 0.55rem;
}

.course-qa-source-row {
    border-left: 3px solid #93C5FD;
    background: #F8FAFC;
    color: var(--text-main);
    line-height: 1.6;
}

.course-qa-source-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    padding: 0.55rem 0.7rem;
    list-style: none;
    cursor: pointer;
}

.course-qa-source-heading::-webkit-details-marker {
    display: none;
}

.course-qa-source-heading strong {
    min-width: 0;
    overflow-wrap: anywhere;
    font-size: 0.84rem;
}

.course-qa-source-heading::after {
    content: "展开";
    flex: 0 0 auto;
    color: var(--primary);
    font-size: 0.76rem;
}

.course-qa-source-row[open] > .course-qa-source-heading::after {
    content: "收起";
}

.course-qa-source-heading:hover,
.course-qa-source-heading:focus-visible {
    background: #EFF6FF;
}

.course-qa-source-body {
    display: grid;
    gap: 0.35rem;
    padding: 0.1rem 0.7rem 0.7rem;
}

.course-qa-source-row:not([open]) > .course-qa-source-body {
    display: none;
}

.course-qa-source-channels {
    color: var(--text-muted);
    font-size: 0.75rem;
}

.course-qa-source-snippet {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.course-qa-general-boundary {
    padding: 0.75rem;
    border-left: 3px solid #5EEAD4;
    background: #F0FDFA;
    color: #115E59;
    font-size: 0.82rem;
    line-height: 1.65;
}

.course-qa-general-boundary p {
    margin: 0.25rem 0 0;
}

.course-qa-comparison {
    display: grid;
    gap: 0.8rem;
}

.course-qa-comparison-scroll {
    overflow-x: auto;
}

.course-qa-comparison table {
    width: 100%;
    min-width: 680px;
    border-collapse: collapse;
}

.course-qa-comparison th,
.course-qa-comparison td {
    padding: 0.7rem 0.75rem;
    border: 1px solid var(--border-color);
    text-align: left;
    vertical-align: top;
    line-height: 1.6;
}

.course-qa-comparison th {
    background: var(--bg-color);
}

/* 课程 AI 答疑后台 */
.course-qa-admin-card {
    margin-top: 1rem;
}

.course-qa-admin-actions,
.course-qa-admin-pagination-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.course-qa-admin-filter-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin-top: 1rem;
}

.course-qa-admin-filter-grid .form-group {
    display: grid;
    gap: 0.35rem;
}

.course-qa-admin-filter-grid .form-group > span {
    color: var(--text-main);
    font-size: 0.82rem;
    font-weight: 700;
}

.course-qa-admin-control {
    box-sizing: border-box;
    width: 100%;
    min-height: 40px;
    padding: 0.55rem 0.65rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: var(--bg-color);
    color: var(--text-main);
    font: inherit;
}

.course-qa-admin-actions .course-qa-admin-cleanup-days {
    width: auto;
    min-width: 9.5rem;
    flex: 0 0 auto;
}

.course-qa-admin-control:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
}

.course-qa-admin-identity {
    display: grid;
    gap: 0.15rem;
    min-width: 112px;
    line-height: 1.45;
}

.course-qa-admin-course {
    color: var(--primary);
    font-weight: 700;
}

.course-qa-admin-muted,
.course-qa-admin-model small {
    color: var(--text-muted);
    font-size: 0.76rem;
}

.course-qa-admin-question {
    min-width: 220px;
    max-width: 360px;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    line-height: 1.55;
}

.course-qa-admin-model {
    max-width: 180px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    overflow-wrap: anywhere;
}

#courseQaAdminTable td.course-qa-admin-actions-cell {
    vertical-align: middle;
    white-space: nowrap;
}

#courseQaAdminTable tbody td {
    vertical-align: middle;
}

.course-qa-admin-empty {
    padding: 1.5rem;
    color: var(--text-muted);
    text-align: center;
}

.course-qa-admin-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.8rem;
}

body.course-qa-detail-open {
    overflow: hidden;
}

.course-qa-detail-modal {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.6);
    backdrop-filter: blur(2px);
}

.course-qa-detail-dialog {
    width: min(1080px, 100%);
    max-height: calc(100vh - 2rem);
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.6rem;
    background: var(--card-bg);
    box-shadow: 0 28px 70px rgba(15, 23, 42, 0.3);
}

.course-qa-detail-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.15rem;
    border-bottom: 1px solid var(--border-color);
}

.course-qa-detail-header h2 {
    margin: 0;
    color: var(--text-main);
    font-size: 1.15rem;
}

.course-qa-detail-header p {
    margin: 0.25rem 0 0;
    color: var(--text-muted);
    font-size: 0.78rem;
    overflow-wrap: anywhere;
}

.course-qa-detail-close {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-muted);
    font-size: 1.45rem;
    line-height: 1;
}

.course-qa-detail-close:hover {
    background: var(--bg-color);
    color: var(--text-main);
}

.course-qa-detail-content {
    min-height: 0;
    display: grid;
    align-content: start;
    gap: 0.75rem;
    overflow-y: auto;
    padding: 1rem 1.15rem;
}

.course-qa-detail-info {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
}

.course-qa-detail-info.is-compact {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.course-qa-detail-info-item {
    min-width: 0;
    display: grid;
    gap: 0.2rem;
    padding: 0.65rem 0.7rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: var(--bg-color);
}

.course-qa-detail-info-item span {
    color: var(--text-muted);
    font-size: 0.75rem;
}

.course-qa-detail-info-item strong {
    color: var(--text-main);
    font-size: 0.86rem;
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.course-qa-detail-section {
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    background: var(--card-bg);
}

.course-qa-detail-section > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.72rem 0.85rem;
    background: var(--bg-color);
    color: var(--text-main);
    cursor: pointer;
    list-style-position: inside;
}

.course-qa-detail-section > summary span {
    color: var(--text-muted);
    font-size: 0.76rem;
    font-weight: 400;
    white-space: nowrap;
}

.course-qa-detail-section.is-error > summary {
    background: #FEF2F2;
    color: #B91C1C;
}

.course-qa-detail-section-body {
    display: grid;
    gap: 0.65rem;
    padding: 0.8rem;
    border-top: 1px solid var(--border-color);
}

.course-qa-detail-section:not([open]) > .course-qa-detail-section-body {
    display: none;
}

.course-qa-detail-text {
    color: var(--text-main);
    font-size: 0.88rem;
    line-height: 1.7;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.course-qa-detail-text.is-answer {
    max-height: min(38vh, 420px);
    overflow-y: auto;
    padding-right: 0.35rem;
}

.course-qa-detail-text.is-question {
    font-weight: 600;
}

.course-qa-detail-text.is-empty {
    color: var(--text-muted);
}

.course-qa-detail-text.is-error {
    color: #991B1B;
}

.course-qa-detail-text.is-code {
    max-height: min(34vh, 360px);
    overflow: auto;
    padding: 0.7rem;
    border: 1px solid var(--border-color);
    border-radius: 0.35rem;
    background: var(--surface-muted, #f8fafc);
    color: var(--text-muted);
    font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
    font-size: 0.76rem;
    line-height: 1.55;
}

.course-qa-style-rules {
    display: grid;
    gap: 0;
}

.course-qa-style-summary .course-qa-detail-info-item {
    padding: 0.2rem 0;
    border: 0;
    background: transparent;
}

.course-qa-style-rule {
    min-width: 0;
    padding: 0.65rem 0;
    border-top: 1px solid var(--border-color);
}

.course-qa-style-rule h3 {
    margin: 0 0 0.3rem;
    color: var(--text-main);
    font-size: 0.84rem;
}

.course-qa-style-rule p {
    margin: 0;
    color: var(--text-main);
    font-size: 0.85rem;
    line-height: 1.65;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.course-qa-style-rule p.is-empty {
    color: var(--text-muted);
}

.course-qa-style-raw {
    min-width: 0;
    border-top: 1px solid var(--border-color);
}

.course-qa-style-raw > summary {
    padding: 0.65rem 0;
    color: var(--primary);
    font-size: 0.82rem;
    cursor: pointer;
}

.course-qa-style-raw-content {
    min-width: 0;
    padding-bottom: 0.55rem;
}

.course-qa-detail-source {
    display: grid;
    gap: 0.45rem;
    padding: 0.7rem;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
}

.course-qa-detail-source-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.course-qa-detail-source-heading span {
    flex: 0 0 auto;
    color: var(--primary);
    font-size: 0.74rem;
}

.course-qa-detail-source p {
    margin: 0;
    color: var(--text-muted);
    font-size: 0.82rem;
    line-height: 1.6;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.course-qa-detail-footer {
    display: flex;
    justify-content: flex-end;
    padding: 0.75rem 1.15rem;
    border-top: 1px solid var(--border-color);
}

@media (max-width: 900px) {
    .course-qa-results,
    .course-qa-admin-filter-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .course-qa-detail-info {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 620px) {
    .course-qa-results,
    .course-qa-admin-filter-grid {
        grid-template-columns: 1fr;
    }

    .course-qa-answer-header,
    .course-qa-admin-pagination {
        align-items: flex-start;
        flex-direction: column;
    }

    .course-qa-submit-row button,
    .course-qa-admin-actions button {
        width: 100%;
    }

    .course-qa-detail-modal {
        padding: 0;
    }

    .course-qa-detail-dialog {
        width: 100%;
        max-height: 100vh;
        height: 100vh;
        border: 0;
        border-radius: 0;
    }

    .course-qa-detail-info,
    .course-qa-detail-info.is-compact {
        grid-template-columns: 1fr;
    }

    .course-qa-detail-section > summary {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* Personal learning and achievement page */
.personal-learning-page .course-container {
    max-width: 1180px;
}

.personal-learning-page [hidden] {
    display: none !important;
}

.personal-learning-page .is-plan-locked-hidden {
    display: none !important;
}

.personal-learning-steps {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.8rem;
    margin: 1rem 0 0;
    padding: 0;
    list-style: none;
}

.personal-learning-steps li {
    display: grid;
    gap: 0.25rem;
    min-height: 84px;
    padding: 0.85rem;
    border: 1px solid rgba(37, 99, 235, 0.14);
    border-radius: 0.55rem;
    background: rgba(255, 255, 255, 0.78);
}

.personal-learning-steps li span,
.personal-rule-item strong,
.personal-chapter-option small,
.personal-chapter-option em,
.personal-required-row small,
.personal-required-row em,
.personal-question-dimension,
.personal-report-subheading span {
    color: #64748b;
    font-size: 0.86rem;
    line-height: 1.5;
}

.personal-learning-rules {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.65rem;
}

.personal-rule-item {
    display: grid;
    gap: 0.3rem;
    min-width: 0;
    padding: 0.8rem;
    border-left: 3px solid #2563eb;
    background: #f8fafc;
}

.personal-rule-label {
    color: #475569;
    font-size: 0.8rem;
}

.personal-learning-message,
.personal-learning-validation,
.personal-report-waiting,
.personal-report-error,
.personal-report-empty,
.personal-ai-report {
    margin: 0.9rem 0;
    padding: 0.9rem 1rem;
    border: 1px solid #dbe4ee;
    border-radius: 0.5rem;
    background: #f8fafc;
    line-height: 1.6;
}

.personal-learning-validation.is-error,
.personal-report-error,
.personal-ai-report.is-error {
    border-color: #fecaca;
    background: #fff7f7;
}

.personal-learning-validation.is-success {
    border-color: #bbf7d0;
    background: #f0fdf4;
}

.personal-learning-validation p,
.personal-ai-report p,
.personal-report-waiting p {
    margin: 0.35rem 0 0;
}

.personal-learning-validation p.is-warning {
    color: #9a3412;
}

.personal-learning-required-block,
.personal-learning-elective-block,
.personal-learning-question-block {
    margin-top: 1.25rem;
}

.personal-learning-subheading,
.personal-question-heading,
.personal-report-subheading,
.personal-report-overview,
.personal-dimension-card-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
}

.personal-learning-subheading h3,
.personal-report-subheading h3 {
    margin: 0;
}

.personal-required-chapters,
.personal-chapter-list,
.personal-question-list {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.75rem;
}

.personal-required-row,
.personal-chapter-option,
.personal-question-row {
    min-width: 0;
    border: 1px solid #dbe4ee;
    border-radius: 0.45rem;
    background: #fff;
}

.personal-required-row {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.8rem;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.personal-required-row:hover,
.personal-required-row:focus-within {
    border-color: #93c5fd;
    background: #f8fbff;
}

.personal-required-row.is-selected {
    border-color: #60a5fa;
    background: #eff6ff;
}

.personal-required-row input {
    flex: 0 0 auto;
    width: 1.1rem;
    height: 1.1rem;
    margin-top: 0.15rem;
    accent-color: var(--primary);
}

.personal-chapter-code {
    flex: 0 0 auto;
    min-width: 3.4rem;
    color: #1d4ed8;
    font-weight: 700;
}

.personal-chapter-main,
.personal-chapter-option-copy {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
}

.personal-learning-filters {
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) repeat(2, minmax(160px, 1fr));
    gap: 0.65rem;
    margin-top: 0.75rem;
}

.personal-elective-heading {
    align-items: flex-start;
}

.personal-elective-heading-main,
.personal-chapter-group-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.personal-chapter-group-actions {
    justify-content: flex-end;
}

.personal-chapter-group-actions button,
.personal-chapter-group-toggle {
    padding: 0.42rem 0.75rem;
    font-size: 0.84rem;
    white-space: nowrap;
}

.personal-learning-page .personal-learning-filters input,
.personal-learning-page .personal-learning-filters select,
.personal-learning-page .personal-question-type,
.personal-learning-page .personal-question-text {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    border: 1px solid #cbd5e1;
    border-radius: 0.55rem;
    background-color: #fff;
    color: var(--text-main);
    font: inherit;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}

.personal-learning-page .personal-learning-filters input,
.personal-learning-page .personal-learning-filters select,
.personal-learning-page .personal-question-type {
    min-height: 44px;
    padding: 0.65rem 0.8rem;
}

.personal-learning-page .personal-learning-filters select,
.personal-learning-page .personal-question-type {
    appearance: none;
    padding-right: 2.25rem;
    background-image: linear-gradient(45deg, transparent 50%, #64748b 50%), linear-gradient(135deg, #64748b 50%, transparent 50%);
    background-position: calc(100% - 1rem) 50%, calc(100% - 0.65rem) 50%;
    background-size: 0.35rem 0.35rem, 0.35rem 0.35rem;
    background-repeat: no-repeat;
}

.personal-learning-page .personal-learning-filters input:focus,
.personal-learning-page .personal-learning-filters select:focus,
.personal-learning-page .personal-question-type:focus,
.personal-learning-page .personal-question-text:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12);
    background-color: #fff;
}

.personal-chapter-option {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    padding: 0.75rem 0.85rem;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease;
}

.personal-chapter-option:hover,
.personal-chapter-option:focus-within {
    border-color: #93c5fd;
    background: #f8fbff;
}

.personal-chapter-option.is-selected {
    border-color: #60a5fa;
    background: #eff6ff;
}

.personal-chapter-checkbox-control {
    position: relative;
    flex: 0 0 auto;
    width: 1.1rem;
    height: 1.1rem;
    margin-top: 0.15rem;
}

.personal-chapter-checkbox-control input {
    display: block;
    width: 1.1rem;
    height: 1.1rem;
    margin: 0;
}

.personal-chapter-checkbox-control.is-prerequisite-locked,
.personal-chapter-checkbox-control.is-prerequisite-locked input {
    cursor: not-allowed;
}

.personal-chapter-checkbox-control.is-prerequisite-locked input {
    pointer-events: none;
}

.personal-chapter-checkbox-control.is-prerequisite-locked:focus-visible {
    outline: 2px solid #d97706;
    outline-offset: 3px;
    border-radius: 0.2rem;
}

.personal-learning-prerequisite-tooltip {
    position: fixed;
    z-index: 10050;
    box-sizing: border-box;
    width: min(360px, calc(100vw - 24px));
    padding: 0.65rem 0.75rem;
    border: 1px solid #f59e0b;
    border-radius: 0.45rem;
    background: #78350f;
    color: #fff;
    font-size: 0.86rem;
    font-weight: 600;
    line-height: 1.55;
    text-align: left;
    box-shadow: 0 10px 24px rgba(120, 53, 15, 0.24);
    pointer-events: none;
}

.personal-learning-prerequisite-tooltip[hidden] {
    display: none !important;
}

.personal-chapter-option em {
    overflow-wrap: anywhere;
    font-style: normal;
}

.personal-chapter-insight {
    display: grid;
    gap: 0.55rem;
    margin-top: 0.55rem;
    padding: 0.65rem 0.7rem;
    border-top: 1px solid #dbeafe;
    border-radius: 0.35rem;
    background: rgba(248, 250, 252, 0.86);
}

.personal-chapter-insight-group {
    display: grid;
    grid-template-columns: 7.8rem minmax(0, 1fr);
    align-items: start;
    gap: 0.5rem;
    min-width: 0;
}

.personal-chapter-insight-group > strong {
    color: #334155;
    font-size: 0.82rem;
    line-height: 1.6;
}

.personal-chapter-insight-tags,
.personal-chapter-insight-aspects {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    min-width: 0;
}

.personal-chapter-insight-tag,
.personal-chapter-insight-aspect {
    display: inline-flex;
    align-items: center;
    min-height: 1.7rem;
    padding: 0.18rem 0.48rem;
    border: 1px solid #bfdbfe;
    border-radius: 0.3rem;
    background: #eff6ff;
    color: #1e40af;
    font-size: 0.78rem;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.personal-chapter-insight-ecological {
    padding-top: 0.45rem;
    border-top: 1px dashed #cbd5e1;
}

.personal-chapter-insight-aspect {
    border-color: #a7f3d0;
    background: #ecfdf5;
    color: #166534;
}

.personal-chapter-insight-aspect.is-empty {
    border-color: #cbd5e1;
    background: #f8fafc;
    color: #64748b;
}

.personal-saved-chapter-option {
    display: grid;
    gap: 0.65rem;
    min-width: 0;
    padding: 0.85rem;
    border: 1px solid #dbe4ee;
    border-radius: 0.45rem;
    background: #fff;
}

.personal-saved-chapter-heading {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
}

.personal-saved-chapter-title,
.personal-saved-question-text {
    overflow-wrap: anywhere;
}

.personal-saved-chapter-title {
    color: #1e3a8a;
    line-height: 1.5;
}

.personal-saved-chapter-meta {
    color: #64748b;
    font-size: 0.86rem;
    line-height: 1.5;
}

.personal-saved-chapter-summary {
    margin: 0;
    color: #475569;
    font-size: 0.9rem;
    line-height: 1.6;
    overflow-wrap: anywhere;
}

.personal-saved-chapter-option .personal-chapter-insight {
    margin-top: 0;
}

.personal-saved-question {
    display: grid;
    grid-template-columns: 5rem minmax(0, 1fr);
    gap: 0.65rem;
    align-items: start;
    padding: 0.65rem 0.75rem;
    border-top: 1px solid #e2e8f0;
    background: #f8fafc;
    font-family: inherit;
    line-height: 1.6;
}

.personal-saved-question-label {
    display: inline-flex;
    align-items: center;
    min-height: 1.7rem;
    color: #64748b;
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.5;
}

.personal-saved-question-type,
.personal-saved-question-text {
    min-width: 0;
    margin: 0;
    font-family: inherit;
    font-size: 0.92rem;
    font-weight: 600;
    line-height: 1.6;
    overflow-wrap: anywhere;
}

.personal-saved-question-type {
    color: #1d4ed8;
}

.personal-saved-question-text {
    color: #334155;
}

.personal-learning-prerequisite {
    margin: 0.85rem 0 0.15rem;
    padding: 0.85rem 1rem;
    border: 1px solid #fbbf24;
    border-left: 4px solid #d97706;
    border-radius: 0.5rem;
    background: #fffbeb;
    color: #92400e;
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1.65;
    box-shadow: 0 2px 8px rgba(146, 64, 14, 0.08);
}

.personal-learning-page .is-plan-locked .personal-required-row,
.personal-learning-page .is-plan-locked .personal-chapter-option {
    cursor: default;
}

.personal-chapter-group {
    overflow: hidden;
    border: 1px solid #dbe4ee;
    border-radius: 0.55rem;
    background: #fff;
}

.personal-chapter-group-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    padding: 0.75rem 0.85rem;
    background: #f8fafc;
    border-bottom: 1px solid #dbe4ee;
    cursor: pointer;
}

.personal-chapter-group-header:focus-visible {
    position: relative;
    z-index: 1;
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.personal-chapter-group.collapsed .personal-chapter-group-header {
    border-bottom: 0;
}

.personal-chapter-group-title {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-width: 0;
}

.personal-chapter-group-title h4 {
    margin: 0;
    color: var(--primary);
    font-size: 1rem;
}

.personal-chapter-group-title span {
    color: #64748b;
    font-size: 0.84rem;
}

.personal-chapter-group-body {
    display: grid;
    gap: 0.55rem;
    padding: 0.7rem;
}

.personal-question-row {
    padding: 0.85rem;
}

.personal-question-heading {
    align-items: flex-start;
}

.personal-question-heading strong {
    min-width: 0;
    overflow-wrap: anywhere;
}

.personal-question-dimension {
    flex: 0 0 auto;
}

.personal-question-fields {
    display: grid;
    grid-template-columns: minmax(150px, 0.3fr) minmax(0, 1fr);
    gap: 0.75rem;
    margin-top: 0.7rem;
}

.personal-question-type-label,
.personal-question-text-label {
    display: grid;
    align-content: start;
    gap: 0.35rem;
    color: #475569;
    font-size: 0.86rem;
}

.personal-question-text {
    min-height: 96px;
    padding: 0.75rem 0.85rem;
    line-height: 1.6;
    resize: vertical;
}

.personal-question-counter {
    color: #94a3b8;
    text-align: right;
}

.personal-question-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-top: 0.7rem;
}

.personal-question-count {
    padding: 0.25rem 0.55rem;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    color: #64748b;
    font-size: 0.8rem;
}

.personal-question-count.is-complete {
    border-color: #86efac;
    color: #166534;
    background: #f0fdf4;
}

.personal-learning-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 1rem;
}

.personal-section-heading-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 0.65rem;
    min-width: 0;
}

.personal-section-toggle-btn {
    white-space: nowrap;
}

.personal-submit-btn {
    background: var(--primary);
    color: #fff;
    border-color: var(--primary);
}

.personal-submit-btn:hover:not(:disabled) {
    background: var(--primary-hover);
    color: #fff;
    border-color: var(--primary-hover);
}

.personal-status-success {
    color: #15803d;
}

.personal-status-error {
    color: #b91c1c;
}

.personal-report-refresh-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.65rem;
    min-width: 0;
}

.personal-report-refresh-status {
    min-width: 0;
    color: var(--text-muted);
    font-size: 0.84rem;
    line-height: 1.5;
    text-align: right;
}

.personal-report-refresh-status.is-loading {
    color: #1d4ed8;
}

.personal-report-refresh-status.is-success {
    color: #15803d;
}

.personal-report-refresh-status.is-error {
    color: #b91c1c;
}

.personal-report-overview {
    align-items: stretch;
    margin-bottom: 0.85rem;
}

.personal-report-total {
    display: grid;
    gap: 0.15rem;
    padding: 0.9rem 1rem;
    border-left: 3px solid #2563eb;
    background: #eff6ff;
}

.personal-report-total strong {
    color: #1d4ed8;
    font-size: 1.5rem;
}

.personal-report-status {
    align-self: flex-start;
    padding: 0.4rem 0.65rem;
    border-radius: 999px;
    color: #475569;
    background: #f1f5f9;
    font-size: 0.82rem;
}

.personal-report-status.is-ready {
    color: #166534;
    background: #dcfce7;
}

.personal-dimension-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
}

.personal-dimension-grid-content {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.personal-report-dimension-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
    margin-top: 1rem;
    align-items: start;
}

.personal-report-dimension-group {
    min-width: 0;
    padding: 0.85rem;
    border: 1px solid #dbe4ee;
    background: #f8fafc;
}

.personal-report-dimension-heading {
    margin-bottom: 0.65rem;
}

.personal-report-dimension-heading h3 {
    margin: 0;
}

.personal-dimension-reliability-note {
    grid-column: 1 / -1;
    margin: 0;
    padding: 0.65rem 0.8rem;
    border-left: 3px solid #d97706;
    background: #fffbeb;
    color: #92400e;
    line-height: 1.55;
}

.personal-report-ecological-aspects {
    display: grid;
    gap: 0.4rem;
    margin: 0 0.85rem 0.7rem;
    padding: 0.65rem 0.75rem;
    border-left: 3px solid #0f766e;
    background: #f0fdfa;
    color: #115e59;
    font-size: 0.82rem;
}

.personal-report-ecological-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.personal-report-ecological-tag {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0.2rem 0.5rem;
    border: 1px solid #99f6e4;
    border-radius: 0.35rem;
    background: #ccfbf1;
    color: #115e59;
    line-height: 1.35;
}

.personal-dimension-card {
    min-width: 0;
    padding: 0.85rem;
    border: 1px solid #dbe4ee;
    border-radius: 0.45rem;
    background: #fff;
}

.personal-dimension-card-heading span {
    color: #64748b;
    font-size: 0.78rem;
}

.personal-dimension-score {
    display: block;
    margin: 0.65rem 0 0.25rem;
    color: #1d4ed8;
    font-size: 1.25rem;
}

.personal-dimension-card small,
.personal-dimension-card p,
.personal-system-summary {
    color: #64748b;
    line-height: 1.55;
}

.personal-dimension-card p {
    margin: 0.45rem 0 0;
    overflow-wrap: anywhere;
}

.personal-ai-report {
    margin-top: 0.85rem;
}

.personal-ai-report .secondary-btn {
    margin-top: 0.7rem;
}

.personal-system-summary {
    display: block;
    margin-top: 0.65rem;
}

/* 前台 AI 评语按后台同样的层次拆分，避免多段内容连成一团。 */
.personal-ai-report {
    display: grid;
    gap: 0.85rem;
    margin-top: 1rem;
    padding: 1rem;
    border-color: #c7d2fe;
    background: #f8faff;
}

.personal-ai-report.is-error {
    border-color: #fecaca;
    background: #fff8f8;
}

.personal-ai-report-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid #dbe4ee;
}

.personal-ai-report-title {
    display: grid;
    flex: 1 1 280px;
    gap: 0.25rem;
    min-width: 0;
}

.personal-ai-report-title h3 {
    margin: 0;
    color: #1e3a8a;
    font-size: 1rem;
}

.personal-ai-report-title span {
    color: #64748b;
    font-size: 0.8rem;
    line-height: 1.5;
}

.personal-ai-report-status {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    min-height: 1.8rem;
    padding: 0.25rem 0.65rem;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    background: #f8fafc;
    color: #475569;
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.25;
    white-space: nowrap;
}

.personal-ai-report-status.is-success {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.personal-ai-report-status.is-error {
    border-color: #fecaca;
    background: #fef2f2;
    color: #b91c1c;
}

.personal-ai-report-status.is-pending {
    border-color: #fde68a;
    background: #fffbeb;
    color: #92400e;
}

.personal-ai-report-body {
    display: grid;
    gap: 0.65rem;
}

.personal-ai-report-item {
    min-width: 0;
    padding: 0.75rem 0.85rem;
    border: 1px solid #dbe4ee;
    border-left: 3px solid #94a3b8;
    background: #fff;
}

.personal-ai-report-item.is-summary {
    border-left-color: #2563eb;
    background: #fff;
}

.personal-ai-report-item.is-system-summary {
    border-left-color: #64748b;
}

.personal-ai-report-item.is-interest {
    border-left-color: #0f766e;
}

.personal-ai-report-item.is-strengths {
    border-left-color: #16a34a;
}

.personal-ai-report-item.is-advice {
    border-left-color: #d97706;
}

.personal-ai-report-item h4 {
    margin: 0 0 0.35rem;
    color: #334155;
    font-size: 0.88rem;
    line-height: 1.45;
}

.personal-ai-report-item p,
.personal-ai-report-item li {
    color: #475569;
    font-size: 0.88rem;
    line-height: 1.75;
    overflow-wrap: anywhere;
}

.personal-ai-report-item p {
    margin: 0;
    white-space: pre-wrap;
}

.personal-ai-report-item ul {
    display: grid;
    gap: 0.35rem;
    margin: 0;
    padding-left: 1.25rem;
}

.personal-ai-report-item li::marker {
    color: #64748b;
}

.personal-ai-report-message {
    margin: 0;
    padding: 0.75rem 0.85rem;
    border: 1px dashed #cbd5e1;
    background: rgba(255, 255, 255, 0.72);
    color: #64748b;
    line-height: 1.65;
}

.personal-ai-report-actions {
    display: flex;
    justify-content: flex-start;
}

.personal-report-detail-modal {
    position: fixed;
    inset: 0;
    z-index: 10020;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.6);
}

.personal-report-detail-dialog {
    width: min(1180px, 100%);
    max-height: calc(100vh - 2rem);
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.6rem;
    background: var(--card-bg);
    box-shadow: 0 28px 70px rgba(15, 23, 42, 0.3);
}

.personal-report-detail-header,
.personal-report-detail-footer {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.15rem;
    border-bottom: 1px solid var(--border-color);
}

.personal-report-detail-header h2 {
    margin: 0;
    font-size: 1.15rem;
}

.personal-report-detail-header p {
    margin: 0.25rem 0 0;
    color: var(--text-muted);
    font-size: 0.82rem;
}

.personal-report-detail-close {
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: 0.4rem;
    background: transparent;
    color: var(--text-muted);
    font-size: 1.4rem;
    line-height: 1;
}

.personal-report-detail-content {
    min-height: 0;
    display: grid;
    align-content: start;
    gap: 0.8rem;
    overflow-y: auto;
    padding: 1rem 1.15rem;
}

.personal-report-detail-section {
    padding: 0.85rem;
    border: 1px solid var(--border-color);
    background: #fff;
}

.personal-report-detail-section h3 {
    margin: 0 0 0.7rem;
    font-size: 1rem;
}

.personal-report-detail-section-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    margin-bottom: 0.7rem;
}

.personal-report-detail-section-heading h3 {
    margin: 0;
}

.personal-report-detail-ai-section {
    border-left: 3px solid #2563eb;
    background: #f8fbff;
}

.personal-report-detail-ai-summary,
.personal-report-detail-ai-item {
    display: grid;
    gap: 0.3rem;
    padding: 0.7rem 0.8rem;
    border: 1px solid #dbeafe;
    background: #fff;
}

.personal-report-detail-ai-item {
    margin-top: 0.55rem;
    border-color: #e2e8f0;
}

.personal-report-detail-ai-summary strong,
.personal-report-detail-ai-item strong {
    color: #1e40af;
    font-size: 0.84rem;
}

.personal-report-detail-ai-summary p,
.personal-report-detail-ai-item p,
.personal-report-detail-ai-message,
.personal-report-detail-ai-error {
    margin: 0;
    color: #475569;
    line-height: 1.65;
    overflow-wrap: anywhere;
}

.personal-report-detail-ai-message {
    padding: 0.7rem 0.8rem;
    background: #fff;
}

.personal-report-detail-ai-message.is-error,
.personal-report-detail-ai-error {
    color: #b91c1c;
}

.personal-report-detail-ai-error {
    margin-top: 0.55rem;
    font-size: 0.8rem;
}

.personal-report-detail-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.55rem;
}

.personal-report-detail-field {
    min-width: 0;
    display: grid;
    gap: 0.2rem;
    padding: 0.55rem 0.65rem;
    background: #f8fafc;
}

.personal-report-detail-field span {
    color: #64748b;
    font-size: 0.76rem;
}

.personal-report-detail-field strong {
    overflow-wrap: anywhere;
    font-size: 0.84rem;
}

.personal-report-detail-chapter {
    border-top: 1px solid #eef2f7;
}

.personal-report-detail-chapter summary {
    padding: 0.6rem 0;
    cursor: pointer;
    font-weight: 700;
}

.personal-report-detail-ecological {
    display: grid;
    gap: 0.35rem;
    margin: 0 0 0.65rem;
    padding: 0.65rem 0.75rem;
    border-left: 3px solid #0f766e;
    background: #f0fdfa;
    color: #115e59;
    font-size: 0.8rem;
}

.personal-report-detail-ecological-list {
    display: grid;
    gap: 0.35rem;
}

.personal-report-detail-ecological-item {
    display: grid;
    grid-template-columns: minmax(190px, 0.8fr) minmax(0, 1.5fr);
    gap: 0.6rem;
    align-items: baseline;
    padding-top: 0.35rem;
    border-top: 1px solid rgba(15, 118, 110, 0.16);
}

.personal-report-detail-ecological-item:first-child {
    padding-top: 0;
    border-top: 0;
}

.personal-report-detail-ecological-item strong {
    color: #134e4a;
    overflow-wrap: anywhere;
}

.personal-report-detail-ecological-item span {
    color: #336b67;
    overflow-wrap: anywhere;
}

.personal-report-detail-dimension-groups {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.7rem;
}

.personal-report-detail-dimension-group {
    padding: 0.7rem;
    border: 1px solid #dbe4ee;
    background: #f8fafc;
}

.personal-report-detail-dimension-group-thought {
    grid-column: 1 / -1;
}

.personal-report-detail-dimension-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.8rem;
    margin-bottom: 0.5rem;
}

.personal-report-detail-dimension-heading span {
    color: #64748b;
    font-size: 0.78rem;
    white-space: nowrap;
}

.personal-report-detail-dimension-bar-list {
    display: grid;
    gap: 0.65rem;
}

.personal-report-detail-dimension-bar-row {
    display: grid;
    grid-template-columns: minmax(180px, 0.95fr) minmax(160px, 2fr) 76px;
    gap: 0.65rem;
    align-items: center;
    min-width: 0;
}

.personal-report-detail-dimension-bar-label {
    display: grid;
    gap: 0.15rem;
    min-width: 0;
}

.personal-report-detail-dimension-bar-label strong,
.personal-report-detail-dimension-bar-label span,
.personal-report-detail-dimension-bar-value {
    overflow-wrap: anywhere;
}

.personal-report-detail-dimension-bar-label strong {
    color: var(--text-main);
    font-size: 0.84rem;
}

.personal-report-detail-dimension-bar-label span {
    color: #64748b;
    font-size: 0.75rem;
}

.personal-report-detail-dimension-bar-track {
    height: 0.62rem;
    overflow: hidden;
    border: 1px solid #cbd5e1;
    border-radius: 0.35rem;
    background: #e2e8f0;
}

.personal-report-detail-dimension-bar-fill {
    display: block;
    width: 0;
    height: 100%;
    background: #2563eb;
}

.personal-report-detail-dimension-group-content .personal-report-detail-dimension-bar-fill {
    background: #0f766e;
}

.personal-report-detail-dimension-bar-row.is-empty .personal-report-detail-dimension-bar-track {
    background: #f1f5f9;
}

.personal-report-detail-dimension-bar-value {
    color: #1e3a8a;
    font-size: 0.84rem;
    text-align: right;
}

.personal-report-detail-dimension-group-content .personal-report-detail-dimension-bar-value {
    color: #115e59;
}

.personal-report-detail-chart-empty,
.personal-report-detail-chart-note {
    margin: 0;
    color: #64748b;
    font-size: 0.8rem;
    line-height: 1.6;
}

.personal-report-detail-thought-chart {
    display: grid;
    grid-template-columns: minmax(320px, 1.05fr) minmax(280px, 0.95fr);
    gap: 0.75rem;
    align-items: center;
}

.personal-report-detail-thought-radar {
    display: block;
    width: 100%;
    max-width: 520px;
    height: auto;
    overflow: visible;
    font-family: inherit;
}

.personal-report-detail-thought-grid {
    fill: none;
    stroke: #cbd5e1;
    stroke-width: 1;
}

.personal-report-detail-thought-axis {
    stroke: #dbe4ee;
    stroke-width: 1;
}

.personal-report-detail-thought-label {
    fill: #475569;
    font-size: 11px;
}

.personal-report-detail-thought-area {
    fill: rgba(15, 118, 110, 0.16);
    stroke: #0f766e;
    stroke-width: 2;
}

.personal-report-detail-thought-point {
    fill: #fff;
    stroke: #0f766e;
    stroke-width: 2;
}

.personal-report-detail-thought-legend {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.35rem 0.75rem;
    min-width: 0;
}

.personal-report-detail-thought-legend-item {
    display: grid;
    grid-template-columns: 0.55rem minmax(0, 1fr) auto;
    gap: 0.4rem;
    align-items: center;
    min-width: 0;
    padding: 0.35rem 0.4rem;
    background: #fff;
    color: #475569;
    font-size: 0.76rem;
}

.personal-report-detail-thought-legend-marker {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: #0f766e;
}

.personal-report-detail-thought-legend-name {
    min-width: 0;
    overflow-wrap: anywhere;
}

.personal-report-detail-thought-legend-item strong {
    color: #115e59;
    white-space: nowrap;
}

.personal-report-detail-thought-legend-item.is-empty .personal-report-detail-thought-legend-marker {
    background: #cbd5e1;
}

.personal-report-detail-thought-legend-item.is-empty strong {
    color: #94a3b8;
}

.personal-report-detail-dimension-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.45rem;
}

.personal-report-detail-dimension-item {
    display: grid;
    gap: 0.2rem;
    min-width: 0;
    padding: 0.5rem 0.6rem;
    background: #fff;
}

.personal-report-detail-dimension-item strong,
.personal-report-detail-dimension-item span {
    overflow-wrap: anywhere;
}

.personal-report-detail-dimension-item span {
    color: #475569;
    font-size: 0.8rem;
}

.personal-report-detail-task-list {
    display: grid;
    gap: 0.3rem;
}

.personal-report-detail-task {
    display: grid;
    grid-template-columns: minmax(180px, 1.5fr) 100px 80px minmax(140px, 0.8fr);
    gap: 0.5rem;
    align-items: center;
    padding: 0.45rem 0.55rem;
    border-top: 1px solid #f1f5f9;
    color: #475569;
    font-size: 0.8rem;
}

.personal-report-detail-task strong {
    color: var(--text-main);
    overflow-wrap: anywhere;
}

.personal-report-detail-footer {
    align-items: center;
    justify-content: flex-end;
    border-top: 1px solid var(--border-color);
    border-bottom: 0;
}

.personal-report-source-line,
.personal-report-learning-location,
.personal-report-chapter-meta {
    color: #64748b;
    line-height: 1.55;
}

.personal-report-source-line {
    margin: 0.2rem 0 0.75rem;
    font-size: 0.84rem;
}

.personal-report-progress-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.65rem;
    margin-bottom: 0.75rem;
}

.personal-report-progress-item {
    display: grid;
    gap: 0.25rem;
    min-width: 0;
    padding: 0.8rem;
    border: 1px solid #dbe4ee;
    background: #f8fafc;
}

.personal-report-progress-item span {
    color: #64748b;
    font-size: 0.8rem;
}

.personal-report-progress-item strong {
    color: #1e3a8a;
}

.personal-report-learning-location {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    margin-bottom: 0.85rem;
    padding: 0.75rem 0.9rem;
    border-left: 3px solid #0f766e;
    background: #f0fdfa;
}

.personal-report-section-title {
    margin: 1rem 0 0.55rem;
}

.personal-report-chapter-list {
    display: grid;
    gap: 0.55rem;
}

.personal-report-chapter-details {
    border: 1px solid #dbe4ee;
    background: #fff;
}

.personal-report-chapter-details summary {
    display: grid;
    grid-template-columns: minmax(180px, 1.5fr) auto auto auto;
    gap: 0.55rem;
    align-items: center;
    padding: 0.75rem 0.85rem;
    cursor: pointer;
    list-style-position: inside;
}

.personal-report-chapter-title {
    font-weight: 700;
}

.personal-report-chapter-role,
.personal-report-chapter-score {
    color: #64748b;
    font-size: 0.82rem;
}

.personal-report-chapter-status,
.personal-report-task-status {
    width: fit-content;
    padding: 0.18rem 0.42rem;
    border-radius: 0.3rem;
    font-size: 0.78rem;
    white-space: nowrap;
}

.personal-report-chapter-status.is-complete,
.personal-report-task-status.is-scored {
    color: #166534;
    background: #dcfce7;
}

.personal-report-chapter-status.is-pending_review,
.personal-report-task-status.is-pending_review {
    color: #92400e;
    background: #fef3c7;
}

.personal-report-chapter-status.is-uncompleted,
.personal-report-task-status.is-uncompleted {
    color: #9a3412;
    background: #ffedd5;
}

.personal-report-chapter-status.is-missing,
.personal-report-task-status.is-missing {
    color: #991b1b;
    background: #fee2e2;
}

.personal-report-task-status.is-zero_scored {
    color: #7c2d12;
    background: #ffedd5;
}

.personal-report-chapter-meta {
    padding: 0 0.85rem 0.65rem;
    font-size: 0.82rem;
}

.personal-report-task-list {
    display: grid;
    gap: 0.35rem;
    padding: 0 0.85rem 0.85rem;
}

.personal-report-task-row {
    display: grid;
    grid-template-columns: minmax(180px, 1.5fr) auto minmax(90px, 0.55fr) minmax(140px, 0.8fr);
    gap: 0.55rem;
    align-items: center;
    padding: 0.55rem 0.65rem;
    border-top: 1px solid #eef2f7;
}

.personal-report-task-name {
    overflow-wrap: anywhere;
}

.personal-report-task-score,
.personal-report-task-date {
    color: #64748b;
    font-size: 0.8rem;
}

@media (max-width: 820px) {
    .personal-learning-steps,
    .personal-learning-rules,
    .personal-dimension-grid,
    .personal-dimension-grid-content,
    .personal-report-dimension-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-learning-filters {
        grid-template-columns: 1fr 1fr;
    }

    .personal-learning-filters input {
        grid-column: 1 / -1;
    }
}

@media (max-width: 640px) {
    .personal-learning-steps,
    .personal-learning-rules,
    .personal-dimension-grid,
    .personal-dimension-grid-content,
    .personal-learning-filters,
    .personal-question-fields {
        grid-template-columns: 1fr;
    }

    .personal-question-heading,
    .personal-report-overview,
    .personal-saved-question {
        align-items: flex-start;
        flex-direction: column;
    }

    .personal-saved-question {
        grid-template-columns: 1fr;
        gap: 0.2rem;
    }

    .personal-elective-heading {
        align-items: stretch;
        flex-direction: column;
    }

    .personal-chapter-group-actions {
        justify-content: flex-start;
    }

    .personal-report-status {
        align-self: flex-start;
    }

    .personal-report-progress-summary {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .personal-report-chapter-details summary,
    .personal-report-task-row {
        grid-template-columns: 1fr;
        align-items: flex-start;
    }

    .personal-report-detail-grid,
    .personal-report-detail-task,
    .personal-report-detail-ecological-item,
    .personal-report-detail-dimension-list {
        grid-template-columns: 1fr;
    }

    .personal-report-detail-dimension-bar-row {
        grid-template-columns: minmax(0, 1fr) auto;
    }

    .personal-report-detail-dimension-bar-track {
        grid-column: 1 / -1;
        grid-row: 2;
    }

    .personal-report-detail-thought-chart {
        grid-template-columns: 1fr;
    }

    .personal-report-detail-dimension-groups {
        grid-template-columns: 1fr;
    }

    .personal-report-dimension-groups {
        grid-template-columns: 1fr;
    }

    .personal-report-detail-dimension-group-thought {
        grid-column: auto;
    }

    .personal-report-detail-thought-radar {
        max-width: 480px;
        margin: 0 auto;
    }

    .personal-report-detail-thought-legend {
        grid-template-columns: 1fr;
    }

    .personal-report-detail-dimension-heading {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.2rem;
    }
}

/* 课程首页 */
.course-home-container {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    min-width: 0;
    gap: 0.25rem;
    margin-top: 2rem;
}

.course-home-overview {
    display: grid;
    min-width: 0;
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, 0.95fr);
    gap: 2rem;
    align-items: center;
    padding: 2rem;
}

.course-home-eyebrow {
    margin-bottom: 0.35rem;
    color: #B45309;
    font-size: 0.86rem;
    font-weight: 700;
}

.course-home-overview h2 {
    color: var(--text-main);
    font-size: 2rem;
    line-height: 1.25;
}

.course-home-lead {
    max-width: 680px;
    margin-top: 0.8rem;
    color: var(--text-muted);
    font-size: 1.02rem;
    line-height: 1.85;
}

.course-home-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.7rem;
    margin-top: 1.2rem;
}

.primary-link-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.65rem 0.95rem;
    border: 1px solid var(--primary);
    border-radius: 0.5rem;
    background: var(--primary);
    color: #FFFFFF;
    font-size: 0.9rem;
    font-weight: 600;
    text-decoration: none;
}

.primary-link-btn:hover {
    border-color: var(--primary-hover);
    background: var(--primary-hover);
    color: #FFFFFF;
}

.course-home-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 1.5rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-color);
}

.course-home-stats > div {
    min-width: 0;
    padding: 0 0.85rem;
    border-left: 1px solid var(--border-color);
}

.course-home-stats > div:first-child {
    padding-left: 0;
    border-left: 0;
}

.course-home-stats dt {
    color: var(--text-muted);
    font-size: 0.8rem;
}

.course-home-stats dd {
    margin-top: 0.15rem;
    color: var(--text-main);
    font-size: 1.02rem;
    font-weight: 700;
    overflow-wrap: anywhere;
}

.course-home-cover-wrap {
    display: flex;
    min-width: 0;
    min-height: 260px;
    align-items: center;
    justify-content: center;
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: #FFFFFF;
}

.course-home-cover {
    display: block;
    width: 100%;
    height: auto;
    max-height: 330px;
    object-fit: contain;
}

.course-home-section {
    min-width: 0;
    padding: 1.65rem;
}

.course-home-theme-list,
.course-home-goals {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.25rem;
}

.course-home-theme {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.8rem;
    padding-top: 0.9rem;
    border-top: 2px solid var(--border-color);
}

.course-home-theme:nth-child(1) {
    border-top-color: #D97706;
}

.course-home-theme:nth-child(2) {
    border-top-color: #2563EB;
}

.course-home-theme:nth-child(3) {
    border-top-color: #059669;
}

.course-home-theme-number {
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 700;
}

.course-home-theme h3,
.course-home-goal-group h3,
.course-home-module-heading h3 {
    color: var(--text-main);
    font-size: 1rem;
}

.course-home-theme p,
.course-home-module-heading p {
    margin-top: 0.35rem;
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.65;
}

.course-home-prose {
    max-width: 960px;
}

.course-home-prose p + p {
    margin-top: 0.85rem;
}

.course-home-prose p {
    color: var(--text-main);
    line-height: 1.9;
    text-align: justify;
    text-indent: 2em;
}

.course-home-goal-group {
    min-width: 0;
    padding-left: 1rem;
    border-left: 3px solid var(--border-color);
}

.course-home-goal-group:nth-child(1) {
    border-left-color: #2563EB;
}

.course-home-goal-group:nth-child(2) {
    border-left-color: #059669;
}

.course-home-goal-group:nth-child(3) {
    border-left-color: #D97706;
}

.course-home-goal-group ol {
    margin: 0.65rem 0 0 1.2rem;
}

.course-home-goal-group li {
    padding-left: 0.2rem;
    color: var(--text-main);
    line-height: 1.75;
}

.course-home-goal-group li + li {
    margin-top: 0.45rem;
}

.course-material-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 1.15rem;
    border-bottom: 1px solid var(--border-color);
}

.course-material-tab {
    display: flex;
    min-width: 0;
    min-height: 58px;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    padding: 0.75rem 0.65rem;
    border: 0;
    border-bottom: 3px solid transparent;
    border-radius: 0;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.95rem;
    font-weight: 650;
}

.course-material-tab small {
    color: inherit;
    font-size: 0.75rem;
    font-weight: 600;
}

.course-material-tab:hover,
.course-material-tab:focus-visible {
    background: rgba(79, 70, 229, 0.05);
    color: var(--primary);
}

.course-material-tab:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.course-material-tab.is-active {
    border-bottom-color: var(--primary);
    color: var(--primary);
}

.course-material-status {
    margin-top: 1rem;
    padding: 0.8rem 0.9rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
    color: var(--text-muted);
    font-size: 0.9rem;
}

.course-material-status[hidden],
.course-material-panel[hidden] {
    display: none;
}

.course-material-status.is-error {
    border-color: rgba(185, 28, 28, 0.35);
    color: #B91C1C;
}

.course-material-panel {
    min-width: 0;
    padding-top: 1.2rem;
    outline: none;
}

.course-material-panel-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.course-material-panel-heading h3 {
    color: var(--text-main);
    font-size: 1.08rem;
}

.course-material-panel-heading p {
    margin-top: 0.25rem;
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.65;
}

.course-material-metrics {
    display: flex;
    align-items: stretch;
    margin-top: 1rem;
    padding: 0.8rem 0;
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

.course-material-metrics > div {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 0.45rem;
    padding: 0 1rem;
    border-left: 1px solid var(--border-color);
}

.course-material-metrics > div:first-child {
    padding-left: 0;
    border-left: 0;
}

.course-material-metrics strong {
    color: var(--primary);
    font-size: 1.05rem;
    font-variant-numeric: tabular-nums;
}

.course-material-metrics span {
    color: var(--text-muted);
    font-size: 0.82rem;
}

.course-material-toolbar,
.course-book-toolbar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1rem;
    padding: 0.8rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--bg-color);
}

.course-material-field {
    display: grid;
    gap: 0.3rem;
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 600;
}

.course-material-field select,
.course-material-field input {
    min-height: 40px;
    border: 1px solid var(--border-color);
    border-radius: 0.45rem;
    background: var(--card-bg);
    color: var(--text-main);
    font: inherit;
    font-size: 0.9rem;
    font-weight: 400;
}

.course-material-field select {
    min-width: 150px;
    padding: 0.45rem 2rem 0.45rem 0.65rem;
}

.course-material-field input {
    width: 100%;
    padding: 0.45rem 0.65rem;
}

.course-material-field select:focus,
.course-material-field input:focus {
    border-color: var(--primary);
    outline: 2px solid rgba(79, 70, 229, 0.16);
}

.course-material-result-summary {
    color: var(--text-muted);
    font-size: 0.84rem;
    font-variant-numeric: tabular-nums;
}

.course-effect-toolbar {
    align-items: center;
    gap: 1.25rem;
    padding: 0.95rem 1.05rem;
}

.course-effect-overview {
    display: flex;
    min-width: 0;
    flex: 1 1 auto;
    align-items: center;
    gap: 1.6rem;
}

.course-effect-overview-item {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 0.45rem;
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
}

.course-effect-overview-item + .course-effect-overview-item {
    padding-left: 1.6rem;
    border-left: 1px solid var(--border-color);
}

.course-effect-overview-item strong {
    color: var(--primary);
    font-size: 1.08rem;
    font-variant-numeric: tabular-nums;
}

.course-effect-controls {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 0.9rem;
}

.course-effect-controls .course-material-field {
    display: block;
}

.course-effect-controls .course-material-result-summary {
    margin: 0;
    white-space: nowrap;
}

.course-book-toolbar {
    align-items: center;
    gap: 1.25rem;
    padding: 0.95rem 1.05rem;
}

.course-book-overview {
    display: flex;
    min-width: 0;
    flex: 1 1 auto;
    align-items: center;
    gap: 1.6rem;
}

.course-book-overview-item {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 0.45rem;
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
}

.course-book-overview-item + .course-book-overview-item {
    padding-left: 1.6rem;
    border-left: 1px solid var(--border-color);
}

.course-book-overview-item strong {
    color: var(--primary);
    font-size: 1.08rem;
    font-variant-numeric: tabular-nums;
}

.course-book-controls {
    display: flex;
    flex: 1 1 auto;
    align-items: center;
    justify-content: flex-end;
    gap: 0.9rem;
    min-width: 0;
}

.course-book-controls .course-book-search {
    flex: 1 1 300px;
}

.course-effect-list {
    margin-top: 0.4rem;
}

.course-effect-item {
    display: grid;
    grid-template-columns: minmax(6.7rem, auto) minmax(0, 1fr);
    gap: 1.1rem;
    padding: 1rem 0;
    border-bottom: 1px solid var(--border-color);
}

.course-effect-date {
    color: #B45309;
    font-size: 0.84rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.course-effect-body {
    min-width: 0;
}

.course-effect-body h4 {
    color: var(--text-main);
    font-size: 0.98rem;
    line-height: 1.55;
}

.course-effect-body p {
    margin-top: 0.35rem;
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.78;
    overflow-wrap: anywhere;
}

.course-effect-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.9rem;
    margin-top: 0.55rem;
}

.course-effect-links a,
.course-featured-link {
    color: var(--primary);
    font-size: 0.84rem;
    font-weight: 600;
    text-underline-offset: 0.18rem;
}

.course-material-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    min-height: 40px;
    margin-top: 1rem;
    padding: 0;
    border-bottom: 0;
    background: transparent;
    position: static;
}

body:not(.admin-page) .course-material-pagination {
    padding: 0;
}

.course-material-pagination button {
    min-width: 78px;
    min-height: 36px;
    padding: 0.4rem 0.7rem;
}

.course-material-page-indicator {
    min-width: 4rem;
    color: var(--text-muted);
    font-size: 0.84rem;
    font-variant-numeric: tabular-nums;
    text-align: center;
}

.course-featured-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.course-featured-item {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--card-bg);
}

.course-featured-item > img {
    display: block;
    width: 100%;
    height: 190px;
    border-bottom: 1px solid var(--border-color);
    background: #FFFFFF;
    object-fit: contain;
}

.course-featured-copy {
    padding: 0.95rem;
}

.course-featured-copy h4 {
    color: var(--text-main);
    font-size: 1rem;
}

.course-featured-meta {
    margin-top: 0.3rem;
    color: var(--primary);
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.6;
}

.course-featured-description {
    margin-top: 0.55rem;
    color: var(--text-muted);
    font-size: 0.88rem;
    line-height: 1.72;
    text-align: justify;
}

.course-featured-link {
    display: inline-flex;
    margin-top: 0.65rem;
}

.course-related-map {
    display: grid;
    grid-template-columns: minmax(220px, 0.65fr) minmax(0, 1.35fr);
    gap: 1.2rem;
    align-items: center;
    margin-top: 1.15rem;
    padding: 1rem 0;
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
}

.course-related-map-copy h4 {
    color: var(--text-main);
    font-size: 1rem;
}

.course-related-map-copy p {
    margin-top: 0.35rem;
    color: var(--text-muted);
    font-size: 0.88rem;
    line-height: 1.7;
}

.course-map-preview {
    display: grid;
    min-width: 0;
    gap: 0.35rem;
    padding: 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: #FFFFFF;
    color: var(--primary);
    font-size: 0.8rem;
    font-weight: 600;
}

.course-map-preview:hover,
.course-map-preview:focus-visible {
    border-color: var(--primary);
}

.course-map-preview img {
    display: block;
    width: 100%;
    max-height: 270px;
    object-fit: contain;
}

.course-batch-list {
    margin-top: 1rem;
    border-top: 1px solid var(--border-color);
}

.course-batch-group {
    border-bottom: 1px solid var(--border-color);
}

.course-batch-group:last-child {
    border-bottom: 0;
}

.course-batch-group summary {
    display: flex;
    min-height: 52px;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.7rem 0.25rem;
    color: var(--text-main);
    cursor: pointer;
    font-size: 0.92rem;
    font-weight: 650;
    list-style-position: inside;
}

.course-batch-group summary:hover,
.course-batch-group summary:focus-visible {
    color: var(--primary);
}

.course-batch-group summary strong {
    flex: 0 0 auto;
    color: var(--text-muted);
    font-size: 0.78rem;
}

.course-batch-items {
    padding: 0 0 0.55rem;
}

.course-batch-item {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: 0.65rem;
    padding: 0.65rem 0.25rem;
    border-top: 1px dashed var(--border-color);
}

.course-batch-number {
    color: var(--text-muted);
    font-size: 0.76rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.course-batch-copy h5 {
    color: var(--text-main);
    font-size: 0.9rem;
    line-height: 1.5;
}

.course-batch-copy p {
    margin-top: 0.2rem;
    color: var(--text-muted);
    font-size: 0.8rem;
    line-height: 1.55;
}

.course-book-search {
    width: min(100%, 520px);
}

.course-book-filter {
    display: inline-flex;
    flex: 0 0 auto;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--card-bg);
}

.course-book-filter button {
    min-height: 40px;
    padding: 0.45rem 0.7rem;
    border: 0;
    border-left: 1px solid var(--border-color);
    border-radius: 0;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
}

.course-book-filter button:first-child {
    border-left: 0;
}

.course-book-filter button:hover,
.course-book-filter button:focus-visible,
.course-book-filter button.is-active {
    background: var(--primary);
    color: #FFFFFF;
}

#courseBookSummary {
    margin-top: 0.8rem;
}

.course-book-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.9rem;
    margin-top: 0.65rem;
}

.course-book-card {
    display: grid;
    min-width: 0;
    grid-template-rows: 190px minmax(0, 1fr);
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--card-bg);
}

.course-book-cover {
    display: flex;
    min-width: 0;
    align-items: center;
    justify-content: center;
    padding: 0.8rem;
    border-bottom: 1px solid var(--border-color);
    background: #FFFFFF;
}

.course-book-cover img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.course-book-copy {
    min-width: 0;
    padding: 0.8rem;
}

.course-book-kind {
    display: inline-block;
    margin-bottom: 0.4rem;
    color: #047857;
    font-size: 0.72rem;
    font-weight: 700;
}

.course-book-kind.is-core {
    color: #B45309;
}

.course-book-copy h4 {
    color: var(--text-main);
    font-size: 0.92rem;
    line-height: 1.48;
    overflow-wrap: anywhere;
}

.course-book-copy p {
    margin-top: 0.3rem;
    color: var(--text-muted);
    font-size: 0.78rem;
    line-height: 1.55;
    overflow-wrap: anywhere;
}

.course-book-authors {
    color: var(--text-main) !important;
}

.course-book-isbn {
    font-variant-numeric: tabular-nums;
}

.course-book-notes {
    padding-top: 0.35rem;
    border-top: 1px dashed var(--border-color);
}

.course-material-empty {
    grid-column: 1 / -1;
    padding: 2rem 1rem;
    color: var(--text-muted);
    text-align: center;
}

.course-material-image-dialog {
    width: min(960px, calc(100vw - 2rem));
    max-width: none;
    max-height: calc(100vh - 2rem);
    margin: auto;
    padding: 0;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
    background: var(--card-bg);
    color: var(--text-main);
}

.course-material-image-dialog::backdrop {
    background: rgba(17, 24, 39, 0.72);
}

.course-material-image-dialog-inner {
    display: grid;
    max-height: calc(100vh - 2rem);
    grid-template-rows: auto minmax(0, 1fr);
}

.course-material-image-dialog header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.8rem 1rem;
    border-bottom: 1px solid var(--border-color);
}

.course-material-image-dialog h2 {
    font-size: 1rem;
}

.course-material-image-dialog button {
    display: inline-flex;
    width: 36px;
    height: 36px;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 1px solid var(--border-color);
    border-radius: 50%;
    background: transparent;
    color: var(--text-main);
    font-size: 1.25rem;
}

.course-material-image-dialog > div > img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 0;
    padding: 1rem;
    overflow: auto;
    background: #FFFFFF;
    object-fit: contain;
}

.course-home-source {
    margin-top: 1.15rem;
    padding-top: 0.65rem;
    border-top: 1px solid var(--border-color);
    color: var(--text-muted);
    font-size: 0.84rem;
}

.course-home-source a {
    color: var(--primary);
}

.course-home-modules {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-top: 1rem;
}

.course-home-module {
    min-width: 0;
    overflow: hidden;
    border: 1px solid var(--border-color);
    border-radius: 0.5rem;
}

.course-home-module-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    border-bottom: 1px solid var(--border-color);
    background: rgba(79, 70, 229, 0.035);
}

.course-home-module-count {
    flex: 0 0 auto;
    padding: 0.18rem 0.5rem;
    border: 1px solid var(--border-color);
    border-radius: 999px;
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 700;
}

.course-home-chapter + .course-home-chapter {
    border-top: 1px solid var(--border-color);
}

.course-home-chapter-toggle {
    width: 100%;
    min-height: 48px;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 0.9rem;
    border-radius: 0;
    background: transparent;
    color: var(--text-main);
    text-align: left;
}

.course-home-chapter-toggle:hover,
.course-home-chapter-toggle:focus-visible,
.course-home-chapter.is-expanded .course-home-chapter-toggle {
    background: rgba(79, 70, 229, 0.06);
    color: var(--primary);
}

.course-home-chapter-toggle:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: -2px;
}

.course-home-chapter-label {
    display: grid;
    grid-template-columns: minmax(3.25rem, auto) minmax(0, 1fr);
    gap: 0.55rem;
    align-items: start;
    min-width: 0;
}

.course-home-chapter-label strong {
    color: var(--primary);
    font-variant-numeric: tabular-nums;
}

.course-home-chapter-label span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.course-home-chapter-marker {
    flex: 0 0 1.25rem;
    color: var(--text-muted);
    font-size: 1.15rem;
    line-height: 1;
    text-align: center;
}

.course-home-chapter-detail {
    padding: 0.9rem 1rem 1rem 4.7rem;
    border-top: 1px dashed var(--border-color);
    color: var(--text-muted);
    font-size: 0.9rem;
    line-height: 1.75;
}

.course-home-chapter-detail[hidden] {
    display: none;
}

.course-home-chapter-points {
    margin-top: 0.65rem;
}

.course-home-chapter-points strong {
    color: var(--text-main);
}

.course-home-chapter-points ul {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 1.2rem;
    margin: 0.35rem 0 0 1.1rem;
}

.hint-text.is-error {
    color: #B91C1C;
}

@media (max-width: 1100px) {
    .course-book-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .course-home-overview {
        grid-template-columns: 1fr;
    }

    .course-home-cover-wrap {
        min-height: 0;
    }

    .course-home-modules {
        grid-template-columns: 1fr;
    }

    .course-featured-list,
    .course-related-map {
        grid-template-columns: 1fr;
    }

    .course-book-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 720px) {
    .course-home-overview,
    .course-home-section {
        padding: 1.2rem;
    }

    .course-home-theme-list,
    .course-home-goals {
        grid-template-columns: 1fr;
    }

    .course-home-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.9rem 0;
    }

    .course-home-stats > div:nth-child(3) {
        padding-left: 0;
        border-left: 0;
    }

    .course-home-chapter-detail {
        padding-left: 1rem;
    }

    .course-material-panel-heading,
    .course-material-toolbar,
    .course-book-toolbar {
        align-items: stretch;
        flex-direction: column;
    }

    .course-material-metrics {
        display: grid;
        grid-template-columns: 1fr;
        gap: 0.55rem;
    }

    .course-material-metrics > div {
        padding: 0;
        border-left: 0;
    }

    .course-effect-toolbar {
        align-items: stretch;
    }

    .course-effect-overview {
        justify-content: space-between;
        gap: 0.8rem;
    }

    .course-effect-overview-item + .course-effect-overview-item {
        padding-left: 0.8rem;
    }

    .course-effect-controls {
        justify-content: space-between;
    }

    .course-book-toolbar {
        align-items: stretch;
    }

    .course-book-overview {
        justify-content: space-between;
        gap: 0.8rem;
    }

    .course-book-overview-item + .course-book-overview-item {
        padding-left: 0.8rem;
    }

    .course-book-controls {
        flex-direction: column;
        align-items: stretch;
    }

    .course-book-controls .course-book-search {
        flex-basis: auto;
    }

    .course-material-field,
    .course-material-field select,
    .course-book-search {
        width: 100%;
    }

    .course-effect-item {
        grid-template-columns: 1fr;
        gap: 0.35rem;
    }

    .course-book-filter {
        align-self: flex-start;
    }

    .course-book-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 480px) {
    .course-home-actions a {
        width: 100%;
    }

    .course-home-overview h2 {
        font-size: 1.65rem;
    }

    .course-home-stats {
        grid-template-columns: 1fr;
    }

    .course-home-stats > div {
        padding: 0.55rem 0 0;
        border-top: 1px solid var(--border-color);
        border-left: 0;
    }

    .course-home-stats > div:first-child {
        padding-top: 0;
        border-top: 0;
    }

    .course-home-chapter-label {
        grid-template-columns: 1fr;
        gap: 0.15rem;
    }

    .course-material-tab {
        min-height: 54px;
        flex-direction: column;
        gap: 0.05rem;
        padding: 0.55rem 0.25rem;
        font-size: 0.84rem;
    }

    .course-material-panel-heading h3 {
        font-size: 1rem;
    }

    .course-book-filter {
        display: grid;
        width: 100%;
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .course-book-filter button {
        min-width: 0;
        padding: 0.4rem 0.25rem;
        white-space: normal;
    }

    .course-material-image-dialog {
        width: calc(100vw - 1rem);
        max-height: calc(100vh - 1rem);
    }

    .course-material-image-dialog-inner {
        max-height: calc(100vh - 1rem);
    }
}
/* Personal-learning score calculation controls and auditable formulas. */
.personal-score-settings {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(190px, 240px) 130px 130px auto;
    gap: 12px;
    align-items: end;
    margin: 16px 0;
    padding: 14px 16px;
    border: 1px solid #cfdbea;
    border-radius: 8px;
    background: #f7f9fc;
}

.personal-score-settings-copy { display: grid; gap: 5px; align-self: center; }
.personal-score-settings-copy span { color: #53657a; font-size: 13px; line-height: 1.55; }
.personal-score-settings label { display: grid; gap: 6px; font-size: 13px; color: #415268; }
.personal-score-weight-input { display: flex; align-items: center; gap: 6px; }
.personal-score-weight-input input { min-width: 0; }
.personal-score-calculation-preview { margin: 8px 0; font-weight: 600; color: #234b75; }

#scoreResultBox { overflow-x: auto; }
#scoreResultsTable { min-width: 1120px; table-layout: fixed; }
#scoreResultsTable th,
#scoreResultsTable td { vertical-align: middle; }
#scoreResultsTable th:nth-child(8),
#scoreResultsTable td:nth-child(8) { width: 26%; white-space: normal; overflow-wrap: anywhere; line-height: 1.45; }

.personal-report-score-calculation,
.personal-report-calculation-section {
    margin-top: 16px;
}

.personal-report-score-calculation-grid,
.personal-report-calculation-summary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.personal-report-score-calculation-grid > div,
.personal-report-calculation-summary > div {
    min-width: 0;
    padding: 10px 12px;
    border-left: 3px solid #6f91b8;
    background: #f7f9fc;
}

.personal-report-score-calculation-grid > .is-formula,
.personal-report-calculation-summary > div:last-child { grid-column: 1 / -1; }
.personal-report-score-calculation-grid span { display: block; margin-bottom: 4px; color: #66778a; font-size: 12px; }
.personal-report-score-calculation-grid strong { overflow-wrap: anywhere; line-height: 1.55; }

.personal-report-chapter-calculation {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin: 10px 0 12px;
}

.personal-report-chapter-calculation > div {
    display: grid;
    gap: 4px;
    min-width: 0;
    padding: 9px 10px;
    border: 1px solid #d9e1eb;
    border-radius: 6px;
    background: #fff;
}

.personal-report-chapter-calculation > .is-final { border-color: #8fb2d8; background: #f1f6fb; }
.personal-report-chapter-calculation.is-legacy > .is-final {
    grid-column: 1 / -1;
    border-color: #d3ad68;
    background: #fff9ed;
}
.personal-report-chapter-calculation span { color: #173f69; font-weight: 700; }
.personal-report-chapter-calculation small { color: #65758a; line-height: 1.45; overflow-wrap: anywhere; }

@media (max-width: 980px) {
    .personal-score-settings { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .personal-score-settings-copy { grid-column: 1 / -1; }
}

@media (max-width: 680px) {
    .personal-score-settings,
    .personal-report-score-calculation-grid,
    .personal-report-calculation-summary,
    .personal-report-chapter-calculation { grid-template-columns: 1fr; }
    .personal-report-score-calculation-grid > .is-formula,
    .personal-report-calculation-summary > div:last-child { grid-column: auto; }
}
