:root, [data-bs-theme="light"] {
    --bs-font-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --bs-body-bg: #ffffff;
    --bs-body-color: #263532;
    --bs-secondary-color: #61706c;
    --bs-secondary-rgb: 97, 112, 108;
    --bs-tertiary-bg: #f2f5f4;
    --bs-secondary-bg: #e9efed;
    --bs-border-color: #dce4e0;
    --bs-link-color: #167260;
    --bs-link-color-rgb: 22, 114, 96;
    --bs-link-hover-color: #105748;
    --bs-success: #167260;
    --bs-success-rgb: 22, 114, 96;
    --bs-warning-rgb: 143, 94, 12;
    --bs-border-radius: 6px;
    --bs-border-radius-lg: 8px;
    --lb-accent: #167260;
    --lb-accent-soft: #eaf4ef;
    --lb-heading: #172c26;
    --lb-chart-grid: #dce4e0;
    color-scheme: light;
}
[data-bs-theme="dark"] {
    --bs-body-bg: #1c201f;
    --bs-body-color: #e2e8e5;
    --bs-secondary-color: #a6b3ad;
    --bs-secondary-rgb: 166, 179, 173;
    --bs-tertiary-bg: #252c29;
    --bs-secondary-bg: #303a35;
    --bs-border-color: #3b4741;
    --bs-link-color: #8bd3b8;
    --bs-link-color-rgb: 139, 211, 184;
    --bs-link-hover-color: #b6e5d3;
    --bs-success-rgb: 139, 211, 184;
    --bs-warning-rgb: 234, 191, 103;
    --lb-accent: #8bd3b8;
    --lb-accent-soft: #263e32;
    --lb-heading: #f0f5f2;
    --lb-chart-grid: #3b4741;
    color-scheme: dark;
}
body { font-size: 15px; line-height: 1.6; letter-spacing: 0; }
h1, h2, h3, h4, h5, h6 { color: var(--lb-heading); font-weight: 650; line-height: 1.3; overflow-wrap: anywhere; }
h1, h1.h3 { font-size: 28px; }
h2.h5, h3.h5 { font-size: 18px; }
a { text-underline-offset: 3px; }
main a:not(.btn):not(.nav-link):not(.dropdown-item) { text-decoration: none; }
main a:not(.btn):hover { text-decoration: underline; }
:focus-visible { outline: 3px solid var(--lb-accent); outline-offset: 3px; }
::selection { background: var(--lb-accent-soft); color: var(--lb-heading); }
main.container { max-width: 1380px; padding: 28px 32px 48px; }
.page-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 28px; }
.page-heading h1 { margin-bottom: 6px; }
.page-heading p { margin: 0; color: var(--bs-secondary-color); }
.section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 14px; border-bottom: 1px solid var(--bs-border-color); }
.section-heading h2 { margin: 0; }
.skip-link { position: fixed; top: -100px; left: 16px; z-index: 2000; padding: 10px 18px; background: var(--bs-body-bg); color: var(--lb-accent); border: 2px solid var(--lb-accent); }
.skip-link:focus { top: 10px; }
.navbar { background: var(--bs-body-bg); border-bottom: 1px solid var(--bs-border-color); min-height: 78px; margin-bottom: 0 !important; padding: 12px 24px; }
.navbar > .container-fluid { max-width: 1440px; gap: 24px; }
.navbar-brand { display: inline-flex; align-items: center; gap: 10px; color: var(--lb-heading); font-weight: 700; font-size: 20px; margin: 0; }
.navbar-brand img { width: 40px; height: 40px; object-fit: contain; }
.navbar-nav { gap: 4px; }
.navbar .nav-link { color: var(--bs-secondary-color); font-size: 14px; font-weight: 550; padding: 9px 12px !important; border-radius: 6px; }
.navbar .nav-link:hover, .navbar .nav-link:focus-visible { color: var(--lb-heading); background: var(--bs-tertiary-bg); }
.navbar .nav-link.active { color: var(--lb-accent); background: var(--lb-accent-soft); }
.navbar .nav-link i { margin-right: 6px; }
.navbar-tools { display: flex; align-items: center; gap: 8px; }
.icon-button { display: inline-grid; place-items: center; width: 40px; height: 40px; padding: 0; flex: 0 0 auto; }
.dropdown-menu { --bs-dropdown-bg: var(--bs-body-bg); --bs-dropdown-link-color: var(--bs-body-color); --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); background: var(--bs-body-bg); padding: 6px; border-color: var(--bs-border-color); border-radius: 8px; box-shadow: 0 8px 24px #00000012; }
.dropdown-item { padding: 9px 12px; border-radius: 4px; font-size: 14px; }
.dropdown-item i { width: 22px; color: var(--bs-secondary-color); }
.dropdown-item.active { background: var(--lb-accent-soft); color: var(--lb-accent); }
.btn { --bs-btn-font-size: 14px; --bs-btn-font-weight: 550; --bs-btn-padding-x: 14px; --bs-btn-padding-y: 9px; --bs-btn-border-radius: 6px; line-height: 1.4; }
.btn-sm { --bs-btn-font-size: 13px; --bs-btn-padding-x: 10px; --bs-btn-padding-y: 7px; }
.btn-success, .btn-primary { --bs-btn-bg: #167260; --bs-btn-border-color: #167260; --bs-btn-color: #fff; --bs-btn-hover-bg: #105748; --bs-btn-hover-border-color: #105748; --bs-btn-active-bg: #105748; --bs-btn-active-border-color: #105748; --bs-btn-disabled-bg: #167260; --bs-btn-disabled-border-color: #167260; }
.btn-outline-success, .btn-outline-primary { --bs-btn-color: var(--lb-accent); --bs-btn-border-color: var(--lb-accent); --bs-btn-hover-bg: #167260; --bs-btn-hover-border-color: #167260; --bs-btn-hover-color: #fff; --bs-btn-active-bg: #105748; --bs-btn-active-border-color: #105748; --bs-btn-disabled-color: var(--lb-accent); --bs-btn-disabled-border-color: var(--bs-border-color); }
.btn-outline-secondary { --bs-btn-color: var(--bs-body-color); --bs-btn-border-color: var(--bs-border-color); --bs-btn-hover-bg: var(--bs-tertiary-bg); --bs-btn-hover-color: var(--lb-heading); --bs-btn-hover-border-color: var(--bs-secondary-color); --bs-btn-active-bg: var(--bs-secondary-bg); --bs-btn-active-color: var(--lb-heading); }
.btn:disabled, .btn.disabled { opacity: .55; }
.form-label, legend.h6 { font-size: 13px; font-weight: 600; margin-bottom: 7px; }
.form-control, .form-select { font-size: 14px; padding: 10px 12px; border-color: var(--bs-border-color); border-radius: 6px; min-width: 0; }
.form-select { padding-right: 36px; }
.form-control:focus, .form-select:focus { border-color: var(--lb-accent); box-shadow: 0 0 0 3px var(--lb-accent-soft); }
.form-check-input:checked { background-color: #167260; border-color: #167260; }
.form-check-input:focus { border-color: var(--lb-accent); box-shadow: 0 0 0 3px var(--lb-accent-soft); }
textarea.form-control { line-height: 1.65; }
.form-text, .small, small { font-size: 13px; }
.table { --bs-table-bg: transparent; --bs-table-color: var(--bs-body-color); --bs-table-striped-bg: var(--bs-tertiary-bg); --bs-table-striped-color: var(--bs-body-color); --bs-table-border-color: var(--bs-border-color); font-size: 14px; }
.table > :not(caption) > * > * { padding: 14px 12px; }
.table thead, .table-dark { --bs-table-bg: var(--bs-tertiary-bg); --bs-table-color: var(--bs-secondary-color); color: var(--bs-secondary-color); font-size: 12px; font-weight: 600; }
.table tbody tr:hover { background: var(--bs-tertiary-bg); }
.table td, .table th { overflow-wrap: anywhere; }
.badge { border-radius: 4px; font-weight: 600; line-height: 1.4; }
.badge.text-bg-secondary { background: var(--bs-secondary-bg) !important; color: var(--bs-secondary-color) !important; }
.nav-tabs { gap: 24px; }
.nav-tabs .nav-link { color: var(--bs-secondary-color); border: 0; border-bottom: 2px solid transparent; padding: 12px 0; border-radius: 0; font-weight: 600; }
.nav-tabs .nav-link.active { color: var(--lb-accent); border-bottom-color: var(--lb-accent); background: transparent; }
summary { cursor: pointer; padding-block: 5px; }
.alert { border-radius: 6px; }
.page-error { color: var(--bs-danger-text-emphasis); }
.main > h1.text-center { text-align: left !important; margin-bottom: 24px; }
.main > #working_area.p-5 { padding: 24px 0 !important; border: 0 !important; border-top: 1px solid var(--bs-border-color) !important; border-radius: 0 !important; }
.main > #working_area { min-height: 0 !important; }
.workspace-links { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px 0 36px; }
.workspace-links a { display: inline-flex; align-items: center; gap: 8px; }
.tutor-list { margin: 0; }
.tutor-list li { padding-block: 20px !important; }
.tutor-list li > span { font-weight: 600; }
.tutor-workspace aside { border-left: 1px solid var(--bs-border-color); padding-left: 28px; }
.tutor-workspace aside section + section { padding-top: 12px; }
.tutor-workspace .draft-actions { border-top: 1px solid var(--bs-border-color); padding-top: 20px; margin-top: 24px; }
.tutor-workspace section > h2, .tutor-workspace aside h2 { margin-bottom: 20px; }
.chat-page { max-width: 1100px !important; }
.chat-heading { margin-bottom: 8px; padding-bottom: 18px; border-bottom: 1px solid var(--bs-border-color); }
.chat-heading h1 { font-size: 22px; }
.chat_history_area { height: clamp(240px, calc(100dvh - 430px), 680px); overflow: auto; padding: 12px 12px 24px 0; scrollbar-gutter: stable; overscroll-behavior: contain; }
.assistant-record { background: transparent; border-left: 3px solid var(--lb-accent); border-radius: 0 !important; line-height: 1.75; margin: 20px 0 28px; overflow-wrap: anywhere; }
.assistant-record > strong, .assistant-record > span { display: inline-block; font-size: 13px; font-weight: 650; color: var(--lb-accent); margin-bottom: 10px; }
.user-record { max-width: 85%; margin: 16px 0 24px auto; background: var(--bs-tertiary-bg); border-radius: 8px; color: var(--bs-body-color); text-align: left; }
.user-record strong { display: inline-block; margin-bottom: 8px; font-size: 13px; color: var(--bs-secondary-color); }
#chat_input_area { border-top: 1px solid var(--bs-border-color); padding-top: 16px; }
.chat-compose { display: flex; align-items: stretch; gap: 10px; }
.chat-compose textarea { resize: vertical; min-height: 88px; max-height: 220px; }
.chat-compose .btn { width: 48px; flex-shrink: 0; }
.chat-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; font-size: 12px; color: var(--bs-secondary-color); margin-top: 8px; }
.chat-disclosure { font-size: 12px; color: var(--bs-secondary-color); margin: 14px 0 0; }
#chat_status:empty { display: none; }
.answer-translation { font-size: 13px; }
.auth-page { min-height: 100dvh; display: grid; place-items: center; padding: 32px 20px; background: var(--bs-tertiary-bg); }
.auth-form { width: min(100%, 390px); }
.auth-brand { text-align: center; margin-bottom: 32px; }
.auth-brand img { width: 96px; height: 96px; margin-bottom: 16px; }
.auth-brand h1 { font-size: 30px; margin: 0; }
.auth-form h2 { font-size: 20px; margin-bottom: 24px; }
.auth-form .form-control { background: var(--bs-body-bg); }
@media (min-width: 1200px) { .navbar .dropdown-menu { margin-top: 12px; } }
@media (max-width: 1199px) {
    .navbar { padding: 10px 12px; }
    .navbar > .container-fluid { gap: 12px; }
    .navbar-collapse { padding-top: 12px; }
    .navbar-tools { border-top: 1px solid var(--bs-border-color); margin-top: 12px; padding-top: 12px; }
    .tutor-workspace aside { border-left: 0; border-top: 1px solid var(--bs-border-color); padding: 24px 12px 0; }
}
@media (max-width: 575px) {
    main.container { padding: 22px 16px 32px; }
    h1, h1.h3 { font-size: 24px; }
    .navbar-brand { font-size: 18px; }
    .navbar-brand img { width: 34px; height: 34px; }
    .page-heading { margin-bottom: 22px; }
    .chat-heading h1 { font-size: 20px; }
    .chat_history_area { padding-right: 4px; }
    .user-record { max-width: 94%; }
    .chat-compose { gap: 8px; }
    .table > :not(caption) > * > * { padding: 12px 10px; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}
