
/* ===== v97-theme-and-stability.css merged into theme-system.css ===== */
/* V9.7 theme + modal stability fixes */
.dark .v95-modal,
.dark .v94-modal,
.dark #marks-entry-modal .bg-card,
.dark .modal-content {
  background: var(--dash-surface) !important;
  color: var(--dash-text) !important;
  border-color: var(--dash-border) !important;
}

.dark .v95-modal-head,
.dark .v95-modal-foot,
.dark .v95-section-card,
.dark .v95-info-side,
.dark .v95-selectbox,
.dark .v95-summary-card,
.dark .v95-marks-panel,
.dark .v95-alert-list-card,
.dark .v95-alert-side-card,
.dark .v95-preview-card,
.dark .v95-role-card,
.dark .v95-toggle-card,
.dark .v94-card,
.dark .v94-stat,
.dark .v94-modal .bg-card,
.dark .v94-modal .bg-background {
  background: var(--dash-surface-2) !important;
  color: var(--dash-text) !important;
  border-color: var(--dash-border) !important;
}

.dark .v95-field input,
.dark .v95-field select,
.dark .v95-field textarea,
.dark .v95-marks-table input,
.dark #marks-entry-modal input,
.dark #marks-entry-modal select,
.dark #marks-entry-modal textarea,
.dark .v94-field input,
.dark .v94-field select,
.dark .v94-field textarea {
  background: var(--dash-surface) !important;
  color: var(--dash-text) !important;
  border-color: var(--dash-border) !important;
}

.dark .v95-marks-table th,
.dark .v95-marks-table td,
.dark #marks-entry-modal th,
.dark #marks-entry-modal td {
  border-color: var(--dash-border) !important;
  color: var(--dash-text) !important;
}

.dark .v95-marks-table th,
.dark #marks-entry-modal thead {
  background: var(--dash-surface-2) !important;
}

.dark .v95-btn:not(.primary):not(.danger),
.dark .v94-btn:not(.primary):not(.danger) {
  background: var(--dash-surface) !important;
  color: var(--dash-text) !important;
  border-color: var(--dash-border) !important;
}

.dark .v95-btn.danger,
.dark .v94-btn.danger {
  background: rgba(127, 29, 29, .18) !important;
  color: #fca5a5 !important;
  border-color: rgba(248, 113, 113, .35) !important;
}

/* Broad fixes for legacy hard-coded light utility classes inside dashboards/modals */
.dark .bg-white,
.dark .bg-gray-50,
.dark .bg-slate-50,
.dark .bg-blue-50,
.dark .bg-indigo-50,
.dark .bg-green-50,
.dark .bg-orange-50,
.dark .bg-yellow-50,
.dark .bg-red-50,
.dark .bg-purple-50 {
  background-color: var(--dash-surface-2) !important;
}

.dark .text-gray-900,
.dark .text-gray-800,
.dark .text-slate-900,
.dark .text-slate-800,
.dark .text-blue-900,
.dark .text-green-900,
.dark .text-orange-900,
.dark .text-red-900,
.dark .text-purple-900 {
  color: var(--dash-text) !important;
}

.dark .text-gray-600,
.dark .text-gray-500,
.dark .text-slate-600,
.dark .text-slate-500 {
  color: var(--dash-muted) !important;
}

.dark .border-gray-200,
.dark .border-slate-200,
.dark .border-blue-200,
.dark .border-green-200,
.dark .border-orange-200,
.dark .border-red-200,
.dark .border-purple-200 {
  border-color: var(--dash-border) !important;
}

/* Make approved modal overlays closeable and visually consistent */
.v95-overlay,
#marks-entry-modal {
  color: var(--dash-text);
}

#marks-entry-modal .modal-content {
  max-height: 86vh;
}

#marks-entry-modal table {
  width: 100%;
}

#marks-entry-modal .v95-modal-head {
  border-bottom: 1px solid var(--dash-border);
}

.v95-overlay[data-closeable="true"] {
  cursor: pointer;
}

.v95-modal,
#marks-entry-modal > div:nth-child(2) {
  cursor: default;
}


/* ===== finance-fees-v31.css merged into theme-system.css ===== */
/* Shule AI V31 Finance & Fees — unified dark/light responsive section */
.finance-v31 {
  --ff-bg: #0b1624;
  --ff-panel: rgba(15, 28, 44, 0.92);
  --ff-card: rgba(18, 33, 52, 0.92);
  --ff-card-2: rgba(11, 22, 36, 0.9);
  --ff-border: rgba(148, 163, 184, 0.22);
  --ff-text: #e5eef8;
  --ff-muted: #94a3b8;
  --ff-green: #22c55e;
  --ff-blue: #3b82f6;
  --ff-orange: #f59e0b;
  --ff-purple: #8b5cf6;
  --ff-red: #ef4444;
  color: var(--ff-text);
  background: radial-gradient(circle at top left, rgba(34, 197, 94, 0.11), transparent 28%), var(--ff-bg);
  border-radius: 18px;
  padding: 18px;
  min-height: calc(100vh - 120px);
}
html:not(.dark) .finance-v31,
html:not(.dark) .finance-v31-modal,
[data-theme="light"] .finance-v31,
[data-theme="light"] .finance-v31-modal {
  --ff-bg: #f8fafc;
  --ff-panel: #ffffff;
  --ff-card: #ffffff;
  --ff-card-2: #f8fafc;
  --ff-border: #e2e8f0;
  --ff-text: #0f172a;
  --ff-muted: #64748b;
  background: #f8fafc;
}
.finance-v31 * { box-sizing: border-box; }
.finance-v31-header { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; margin-bottom:18px; }
.finance-v31-title h1 { margin:0; font-size:28px; line-height:1.1; font-weight:800; }
.finance-v31-title p { margin:6px 0 0; color:var(--ff-muted); font-size:14px; }
.finance-v31-actions { display:flex; gap:10px; flex-wrap:wrap; }
.finance-v31-btn { border:1px solid var(--ff-border); background:var(--ff-card-2); color:var(--ff-text); border-radius:10px; padding:10px 14px; font-weight:700; cursor:pointer; transition:.18s ease; }
.finance-v31-btn:hover { transform:translateY(-1px); border-color:rgba(34,197,94,.5); }
.finance-v31-btn.primary { background:linear-gradient(135deg,#16a34a,#22c55e); border-color:transparent; color:#fff; }
.finance-v31-btn.blue { background:linear-gradient(135deg,#2563eb,#3b82f6); border-color:transparent; color:#fff; }
.finance-v31-btn.danger { color:#fecaca; border-color:rgba(239,68,68,.4); }
html:not(.dark) .finance-v31-btn.danger, [data-theme="light"] .finance-v31-btn.danger { color:#b91c1c; }
.finance-v31-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-bottom:16px; }
.finance-v31-metric { background:var(--ff-card); border:1px solid var(--ff-border); border-radius:14px; padding:18px; display:flex; justify-content:space-between; gap:14px; min-height:96px; box-shadow:0 12px 28px rgba(2,6,23,.12); }
.finance-v31-metric small { color:var(--ff-muted); display:block; margin-top:4px; }
.finance-v31-metric h3 { margin:6px 0 0; font-size:24px; font-weight:900; }
.finance-v31-icon { width:48px; height:48px; border-radius:999px; display:grid; place-items:center; color:#fff; font-weight:900; flex:0 0 auto; }
.finance-v31-icon.green { background:var(--ff-green); } .finance-v31-icon.blue { background:var(--ff-blue); } .finance-v31-icon.orange { background:var(--ff-orange); } .finance-v31-icon.purple { background:var(--ff-purple); }
.finance-v31-shell { border:1px solid var(--ff-border); background:var(--ff-panel); border-radius:16px; overflow:hidden; box-shadow:0 12px 32px rgba(2,6,23,.16); }
.finance-v31-tabs { display:grid; grid-template-columns:repeat(3,1fr); border-bottom:1px solid var(--ff-border); }
.finance-v31-tab { padding:16px; text-align:center; cursor:pointer; color:var(--ff-muted); font-weight:800; border-bottom:2px solid transparent; }
.finance-v31-tab.active { color:var(--ff-green); border-bottom-color:var(--ff-green); background:rgba(34,197,94,.07); }
.finance-v31-body { padding:18px; }
.finance-v31-toolbar { display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:16px; }
.finance-v31-filters { display:flex; gap:10px; flex-wrap:wrap; }
.finance-v31-input, .finance-v31-select { border:1px solid var(--ff-border); background:var(--ff-card-2); color:var(--ff-text); border-radius:10px; padding:10px 12px; min-height:42px; outline:none; }
.finance-v31-input:focus, .finance-v31-select:focus { border-color:var(--ff-green); box-shadow:0 0 0 3px rgba(34,197,94,.12); }
.finance-v31-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.finance-v31-card { background:var(--ff-card); border:1px solid var(--ff-border); border-radius:14px; padding:16px; min-width:0; }
.finance-v31-card-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.finance-v31-card h3 { margin:0; font-size:16px; font-weight:900; }
.finance-v31-badge { border-radius:999px; padding:4px 9px; font-size:12px; font-weight:900; }
.finance-v31-badge.active { background:rgba(34,197,94,.15); color:#22c55e; }
.finance-v31-badge.draft { background:rgba(245,158,11,.15); color:#f59e0b; }
.finance-v31-badge.locked { background:rgba(239,68,68,.15); color:#ef4444; }
.finance-v31-items { display:grid; gap:8px; margin:12px 0; }
.finance-v31-item-row { display:flex; justify-content:space-between; gap:10px; color:var(--ff-muted); font-size:14px; }
.finance-v31-total { border-top:1px solid var(--ff-border); padding-top:12px; margin-top:12px; display:flex; justify-content:space-between; font-weight:900; font-size:17px; }
.finance-v31-card-actions { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:14px; }
.finance-v31-form-grid { display:grid; grid-template-columns:1.1fr 1fr; gap:16px; }
.finance-v31-form-card { background:var(--ff-card); border:1px solid var(--ff-border); border-radius:14px; padding:16px; }
.finance-v31-form-row { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:12px; }
.finance-v31-fee-item { display:grid; grid-template-columns:1.3fr .8fr .8fr auto; gap:8px; margin-bottom:8px; align-items:center; }
.finance-v31-total-box { background:var(--ff-card-2); border:1px solid var(--ff-border); border-radius:14px; padding:18px; }
.finance-v31-total-box h2 { margin:8px 0 0; font-size:28px; }
.finance-v31-settings-grid { display:grid; grid-template-columns:1.2fr .9fr .8fr; gap:16px; }
.finance-v31-methods { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0 14px; }
.finance-v31-method { padding:9px 12px; border-radius:9px; border:1px solid var(--ff-border); color:var(--ff-muted); font-weight:800; }
.finance-v31-method.active { background:rgba(34,197,94,.16); color:var(--ff-green); border-color:rgba(34,197,94,.4); }
.finance-v31-table-wrap { overflow:auto; border:1px solid var(--ff-border); border-radius:14px; }
.finance-v31-table { width:100%; border-collapse:collapse; min-width:860px; }
.finance-v31-table th, .finance-v31-table td { padding:13px; border-bottom:1px solid var(--ff-border); text-align:left; font-size:14px; }
.finance-v31-table th { color:var(--ff-muted); font-weight:900; background:var(--ff-card-2); }
.finance-v31-empty { border:1px dashed var(--ff-border); border-radius:14px; padding:30px; text-align:center; color:var(--ff-muted); background:var(--ff-card-2); }
.finance-v31-notice { border:1px solid rgba(139,92,246,.35); background:rgba(139,92,246,.12); border-radius:12px; padding:12px; color:var(--ff-text); font-size:13px; margin-top:12px; }
.finance-v31-message { margin:0 0 12px; border-radius:10px; padding:11px 12px; border:1px solid var(--ff-border); background:var(--ff-card-2); display:none; }
.finance-v31-message.show { display:block; }
.finance-v31-message.success { border-color:rgba(34,197,94,.45); color:#22c55e; }
.finance-v31-message.error { border-color:rgba(239,68,68,.45); color:#ef4444; }
.finance-v31-modal { position:fixed; inset:0; z-index:9999; display:grid; place-items:center; background:rgba(2,6,23,.72); padding:18px; }
.finance-v31-modal-inner { width:min(980px,96vw); max-height:92vh; overflow:auto; background:var(--ff-panel); color:var(--ff-text); border:1px solid var(--ff-border); border-radius:18px; box-shadow:0 24px 70px rgba(0,0,0,.35); }
.finance-v31-modal-head { display:flex; justify-content:space-between; align-items:center; padding:18px; border-bottom:1px solid var(--ff-border); }
.finance-v31-modal-body { padding:18px; }
.finance-v31-close { width:38px; height:38px; border-radius:999px; border:1px solid var(--ff-border); background:var(--ff-card-2); color:var(--ff-text); cursor:pointer; }
@media (max-width:1200px){ .finance-v31-summary,.finance-v31-grid{grid-template-columns:repeat(2,minmax(0,1fr));} .finance-v31-settings-grid,.finance-v31-form-grid{grid-template-columns:1fr;} }
@media (max-width:720px){ .finance-v31{padding:12px;border-radius:0;} .finance-v31-header{flex-direction:column;} .finance-v31-summary,.finance-v31-grid,.finance-v31-form-row{grid-template-columns:1fr;} .finance-v31-tabs{grid-template-columns:1fr;} .finance-v31-fee-item{grid-template-columns:1fr;} .finance-v31-card-actions{grid-template-columns:1fr;} }


/* ===== calendar-theme-v31.css merged into theme-system.css ===== */
/* V31 calendar light/dark mode hardening */
#dashboard-content .calendar-v31-scope,
.calendar-v31-scope {
  --cal-bg: #f8fafc;
  --cal-panel: #ffffff;
  --cal-muted: #64748b;
  --cal-text: #0f172a;
  --cal-border: #e2e8f0;
  --cal-soft: #f1f5f9;
}
.dark #dashboard-content .calendar-v31-scope,
body.dark .calendar-v31-scope,
html.dark .calendar-v31-scope,
[data-theme="dark"] .calendar-v31-scope {
  --cal-bg: #0b1624;
  --cal-panel: #111827;
  --cal-muted: #94a3b8;
  --cal-text: #e5e7eb;
  --cal-border: rgba(148,163,184,.24);
  --cal-soft: rgba(15,23,42,.72);
}
.calendar-v31-scope,
.calendar-v31-scope .bg-card,
.calendar-v31-scope .rounded-xl,
.calendar-v31-scope input,
.calendar-v31-scope select,
.calendar-v31-scope textarea {
  color: var(--cal-text) !important;
}
.calendar-v31-scope .bg-card,
.calendar-v31-scope .card,
.calendar-v31-scope .rounded-xl.bg-card,
.calendar-v31-scope .border {
  background-color: var(--cal-panel) !important;
  border-color: var(--cal-border) !important;
}
.calendar-v31-scope .bg-muted,
.calendar-v31-scope .from-primary\/5,
.calendar-v31-scope .to-purple-500\/5 {
  background-color: var(--cal-soft) !important;
}
.calendar-v31-scope .text-muted-foreground,
.calendar-v31-scope .opacity-60,
.calendar-v31-scope .text-gray-500 {
  color: var(--cal-muted) !important;
}
.calendar-v31-scope input,
.calendar-v31-scope select,
.calendar-v31-scope textarea {
  background: var(--cal-soft) !important;
  border: 1px solid var(--cal-border) !important;
}
.calendar-v31-scope .divide-x > :not([hidden]) ~ :not([hidden]),
.calendar-v31-scope .divide-y > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--cal-border) !important;
}


/* ===== timetable-theme-v32.css merged into theme-system.css ===== */
/* V32 Timetable Light/Dark Theme Fix */
:root{
  --tt-bg:#f8fafc; --tt-surface:#ffffff; --tt-surface-2:#f1f5f9; --tt-text:#0f172a; --tt-muted:#64748b; --tt-border:#e2e8f0; --tt-primary:#16a34a; --tt-blue:#2563eb; --tt-soft:#ecfdf5; --tt-shadow:0 18px 45px rgba(15,23,42,.08);
}
html.dark, body.dark, .dark{
  --tt-bg:#07111f; --tt-surface:#0f1b2d; --tt-surface-2:#13243a; --tt-text:#e5eefc; --tt-muted:#9fb0c8; --tt-border:rgba(148,163,184,.22); --tt-primary:#22c55e; --tt-blue:#3b82f6; --tt-soft:rgba(34,197,94,.12); --tt-shadow:0 20px 60px rgba(0,0,0,.35);
}
#dashboard-content .timetable-container,
#dashboard-content .timetable-wrapper,
#dashboard-content .timetable-board,
#dashboard-content .timetable-grid,
#dashboard-content .v12-page:has(.v12-timetable-grid),
#dashboard-content .v12-page:has(.timetable-grid){
  background:var(--tt-bg)!important;color:var(--tt-text)!important;
}
#dashboard-content .timetable-card,
#dashboard-content .timetable-cell,
#dashboard-content .timetable-slot,
#dashboard-content .timetable-day,
#dashboard-content .v12-card,
#dashboard-content .v12-child-card,
#dashboard-content .v12-timetable-cell,
#dashboard-content .v12-timetable-grid,
#dashboard-content .v12-list-item{
  background:var(--tt-surface)!important;color:var(--tt-text)!important;border-color:var(--tt-border)!important;box-shadow:var(--tt-shadow);
}
#dashboard-content .v12-hero,
#dashboard-content .timetable-header,
#dashboard-content .timetable-toolbar{
  background:linear-gradient(135deg,var(--tt-surface),var(--tt-surface-2))!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;
}
#dashboard-content .v12-title,
#dashboard-content .v12-value,
#dashboard-content .timetable-title,
#dashboard-content .timetable-card h1,
#dashboard-content .timetable-card h2,
#dashboard-content .timetable-card h3,
#dashboard-content .timetable-cell b,
#dashboard-content .v12-card h3,
#dashboard-content .v12-list-item b{color:var(--tt-text)!important;}
#dashboard-content .v12-sub,
#dashboard-content .v12-label,
#dashboard-content .text-muted-foreground,
#dashboard-content .timetable-muted,
#dashboard-content .timetable-card p,
#dashboard-content .v12-list-item small{color:var(--tt-muted)!important;}
#dashboard-content .v12-btn,
#dashboard-content .timetable-btn,
#dashboard-content button[class*="timetable"],
#dashboard-content .v12-pill{
  background:var(--tt-surface-2)!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;
}
#dashboard-content .v12-btn.dark,
#dashboard-content .v12-btn.primary,
#dashboard-content .timetable-btn.primary{
  background:linear-gradient(135deg,var(--tt-primary),#15803d)!important;color:#fff!important;border-color:transparent!important;
}
#dashboard-content .v12-pill.green,
#dashboard-content .timetable-status.green{background:var(--tt-soft)!important;color:var(--tt-primary)!important;border-color:rgba(34,197,94,.28)!important;}
#dashboard-content table.timetable-table,
#dashboard-content .timetable-table{background:var(--tt-surface)!important;color:var(--tt-text)!important;border-color:var(--tt-border)!important;}
#dashboard-content .timetable-table th,
#dashboard-content .timetable-table td{background:var(--tt-surface)!important;color:var(--tt-text)!important;border-color:var(--tt-border)!important;}
#dashboard-content .timetable-table th{background:var(--tt-surface-2)!important;}
@media(max-width:900px){#dashboard-content .v12-grid[style*="grid-template-columns"],#dashboard-content .timetable-layout{grid-template-columns:1fr!important;}#dashboard-content .timetable-grid,#dashboard-content .v12-timetable-grid{overflow-x:auto;}}


/* ===== responsive-global-v33.css merged into theme-system.css ===== */
/* V33 Global Responsive Stability Layer */
:root{--app-safe-gap:clamp(12px,2vw,24px);--app-radius:18px;--app-content-max:100%;}
*{box-sizing:border-box;}
html,body{max-width:100%;overflow-x:hidden;}
#dashboard-content,.dashboard-content,.main-content,.content-area{width:100%;max-width:100%;min-width:0;overflow-x:hidden;}
#dashboard-content > *, .dashboard-content > *{max-width:100%;min-width:0;}
.grid,.v12-grid,[class*="grid"]{min-width:0;}
.card,.v12-card,.rounded-xl,.finance-v31-card{min-width:0;}
img,svg,canvas,video,table{max-width:100%;}
canvas{height:auto!important;}
input,select,textarea,button{max-width:100%;}
.table-wrap,.overflow-x-auto{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
@media(max-width:1200px){
  #dashboard-content .grid[class*="lg:grid-cols"],#dashboard-content .lg\:grid-cols-2,#dashboard-content .lg\:grid-cols-3,#dashboard-content .lg\:grid-cols-4,#dashboard-content .lg\:grid-cols-5{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  #dashboard-content [style*="grid-template-columns:260px 1fr 320px"],#dashboard-content [style*="grid-template-columns:1fr 320px"],#dashboard-content [style*="grid-template-columns:1fr 300px"],#dashboard-content [style*="grid-template-columns:1fr 340px"]{grid-template-columns:1fr!important;}
}
@media(max-width:760px){
  #dashboard-content{padding:12px!important;}
  #dashboard-content .grid,#dashboard-content .v12-grid,#dashboard-content [class*="grid-cols"]{grid-template-columns:1fr!important;}
  #dashboard-content .flex{flex-wrap:wrap;}
  .v12-hero-inner,.finance-v31-toolbar{flex-direction:column!important;align-items:stretch!important;}
  .v12-actions,.finance-v31-actions{width:100%;display:grid!important;grid-template-columns:1fr!important;}
  .v12-btn,.finance-v31-btn{width:100%;justify-content:center;}
  .v12-modal,.finance-v31-modal-card{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;max-height:88vh!important;overflow:auto!important;}
}


/* ===== timetable-responsive-theme-v33.css merged into theme-system.css ===== */
/* V33 Timetable responsive + light/dark fix */
:root{--tt-page:#f8fafc;--tt-card:#ffffff;--tt-card-2:#f1f5f9;--tt-text:#0f172a;--tt-muted:#64748b;--tt-border:#dbe4ef;--tt-green:#16a34a;--tt-blue:#2563eb;--tt-cell:#ffffff;--tt-lesson:#eaf3ff;--tt-break:#f8fafc;--tt-shadow:0 14px 38px rgba(15,23,42,.08);}
html.dark,body.dark,.dark,[data-theme="dark"]{--tt-page:#07111f;--tt-card:#0f1b2d;--tt-card-2:#13243a;--tt-text:#e5eefc;--tt-muted:#9fb0c8;--tt-border:rgba(148,163,184,.24);--tt-green:#22c55e;--tt-blue:#60a5fa;--tt-cell:#101d31;--tt-lesson:rgba(37,99,235,.22);--tt-break:rgba(148,163,184,.08);--tt-shadow:0 18px 52px rgba(0,0,0,.34);}
#dashboard-content .v12-page:has(.v12-week),#dashboard-content .timetable-v33-page,#dashboard-content .timetable-container,#dashboard-content .timetable-wrapper{background:var(--tt-page)!important;color:var(--tt-text)!important;max-width:100%;overflow-x:hidden;}
#dashboard-content .v12-card:has(.v12-week),#dashboard-content .timetable-v33-card,#dashboard-content .timetable-card,#dashboard-content .timetable-board{background:var(--tt-card)!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;box-shadow:var(--tt-shadow)!important;max-width:100%;min-width:0;}
#dashboard-content .v12-hero,#dashboard-content .timetable-v33-hero{background:linear-gradient(135deg,var(--tt-card),var(--tt-card-2))!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;box-shadow:var(--tt-shadow)!important;}
#dashboard-content .v12-week,.timetable-v33-grid{display:grid!important;grid-template-columns:minmax(92px,.7fr) repeat(5,minmax(150px,1fr))!important;width:100%;min-width:860px;border:1px solid var(--tt-border)!important;border-radius:16px;overflow:hidden;background:var(--tt-card)!important;}
#dashboard-content .v12-card:has(.v12-week),#dashboard-content .timetable-v33-scroll{overflow-x:auto!important;-webkit-overflow-scrolling:touch;max-width:100%;}
#dashboard-content .v12-cell,.timetable-v33-cell{background:var(--tt-cell)!important;color:var(--tt-text)!important;border-color:var(--tt-border)!important;border-right:1px solid var(--tt-border)!important;border-bottom:1px solid var(--tt-border)!important;min-width:0;}
#dashboard-content .v12-cell.head,.timetable-v33-head,#dashboard-content .v12-cell.time,.timetable-v33-time{background:var(--tt-card-2)!important;color:var(--tt-text)!important;font-weight:800;}
#dashboard-content .v12-lesson,.timetable-v33-lesson{background:var(--tt-lesson)!important;color:var(--tt-text)!important;border:1px solid rgba(96,165,250,.28)!important;border-radius:12px;padding:8px;min-height:70px;}
#dashboard-content .v12-lesson.break,.timetable-v33-break{background:var(--tt-break)!important;color:var(--tt-muted)!important;border-style:dashed!important;}
#dashboard-content .v12-lesson-title,.timetable-v33-title{color:var(--tt-text)!important;font-weight:800;}
#dashboard-content .v12-lesson-meta,.timetable-v33-meta,#dashboard-content .text-muted-foreground{color:var(--tt-muted)!important;}
#dashboard-content .v12-input,#dashboard-content .v12-select,#dashboard-content .timetable-v33-input{background:var(--tt-card)!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;}
#dashboard-content .v12-btn,#dashboard-content .timetable-v33-btn{background:var(--tt-card-2)!important;color:var(--tt-text)!important;border:1px solid var(--tt-border)!important;}
#dashboard-content .v12-btn.primary,#dashboard-content .timetable-v33-btn.primary{background:linear-gradient(135deg,var(--tt-green),#15803d)!important;color:#fff!important;border-color:transparent!important;}
@media(max-width:980px){#dashboard-content .v12-week,.timetable-v33-grid{min-width:760px;grid-template-columns:minmax(84px,.6fr) repeat(5,minmax(132px,1fr))!important;}.timetable-v33-layout{grid-template-columns:1fr!important;}}
@media(max-width:640px){#dashboard-content .v12-week,.timetable-v33-grid{min-width:680px;}#dashboard-content .v12-cell,.timetable-v33-cell{padding:8px!important;font-size:12px!important;}#dashboard-content .v12-lesson,.timetable-v33-lesson{min-height:62px;padding:6px;}}


/* ===== mobile-responsive-v18.css merged into theme-system.css ===== */
/* mobile-responsive-v18.css - ShuleAI full mobile/tablet responsiveness hardening */

:root {
  --mobile-header-height: 64px;
  --mobile-bottom-nav-height: 72px;
  --safe-bottom: env(safe-area-inset-bottom, 0px);
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  overflow-x: hidden;
  overscroll-behavior-y: none;
}

img, video, canvas, svg {
  max-width: 100%;
}

button, a, input, select, textarea, [role="button"] {
  touch-action: manipulation;
}

.touch-target,
#dashboard-content button,
#dashboard-content .btn,
#sidebar a,
#settings-nav a,
.mobile-nav-item {
  min-height: 44px;
}

#dashboard-content button,
#dashboard-content .btn,
#dashboard-content a[onclick] {
  -webkit-tap-highlight-color: transparent;
}

/* Keep the app inside the viewport on small screens */
#dashboard-container,
#dashboard-content,
#dashboard-content > * {
  max-width: 100%;
  min-width: 0;
}

#dashboard-content {
  overflow-wrap: anywhere;
}

/* Better default surfaces for mixed old/new dashboard modules */
.mobile-ready #dashboard-content .bg-white,
.mobile-ready #dashboard-content .v12-panel,
.mobile-ready #dashboard-content .v94-card,
.mobile-ready #dashboard-content .v95-card,
.mobile-ready #dashboard-content .dashboard-card,
.mobile-ready #dashboard-content .analytics-card,
.mobile-ready #dashboard-content .timetable-card,
.mobile-ready #dashboard-content .calendar-card {
  background: hsl(var(--card)) !important;
  color: hsl(var(--card-foreground)) !important;
  border-color: hsl(var(--border)) !important;
}

.dark.mobile-ready #dashboard-content .text-gray-900,
.dark.mobile-ready #dashboard-content .text-slate-900,
.dark.mobile-ready #dashboard-content .text-neutral-900,
.dark.mobile-ready #dashboard-content .text-black {
  color: hsl(var(--foreground)) !important;
}

.dark.mobile-ready #dashboard-content .text-gray-600,
.dark.mobile-ready #dashboard-content .text-gray-500,
.dark.mobile-ready #dashboard-content .text-slate-600,
.dark.mobile-ready #dashboard-content .text-neutral-600 {
  color: hsl(var(--muted-foreground)) !important;
}

.dark.mobile-ready #dashboard-content .bg-gray-50,
.dark.mobile-ready #dashboard-content .bg-slate-50,
.dark.mobile-ready #dashboard-content .bg-neutral-50,
.dark.mobile-ready #dashboard-content .bg-blue-50,
.dark.mobile-ready #dashboard-content .bg-green-50,
.dark.mobile-ready #dashboard-content .bg-yellow-50,
.dark.mobile-ready #dashboard-content .bg-purple-50,
.dark.mobile-ready #dashboard-content .bg-indigo-50 {
  background: hsl(var(--muted)) !important;
  color: hsl(var(--foreground)) !important;
}

/* Dashboard shell */
@media (max-width: 1023px) {
  #dashboard-container > div.lg\:ml-64,
  #sidebar + div {
    margin-left: 0 !important;
    width: 100% !important;
  }

  #sidebar {
    width: min(86vw, 21rem) !important;
    max-width: 21rem !important;
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.32);
    transform: translateX(-105%);
    transition: transform .22s ease, box-shadow .22s ease;
  }

  #sidebar:not(.-translate-x-full),
  body.mobile-sidebar-open #sidebar {
    transform: translateX(0) !important;
  }

  #mobile-overlay:not(.hidden),
  body.mobile-sidebar-open #mobile-overlay {
    display: block !important;
    backdrop-filter: blur(2px);
  }

  #dashboard-container header.sticky {
    min-height: var(--mobile-header-height);
    padding-left: .75rem !important;
    padding-right: .75rem !important;
    gap: .55rem !important;
  }

  #dashboard-container header .flex.items-center.gap-4 {
    gap: .35rem !important;
  }

  #page-title {
    font-size: clamp(1rem, 4vw, 1.3rem) !important;
    line-height: 1.15 !important;
    max-width: calc(100vw - 190px);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  #dashboard-container main {
    padding: .85rem .75rem calc(var(--mobile-bottom-nav-height) + var(--safe-bottom) + 1rem) !important;
  }

  #global-search {
    width: 100% !important;
  }

  #search-results,
  #user-menu,
  #notifications-panel {
    position: fixed !important;
    left: .75rem !important;
    right: .75rem !important;
    top: calc(var(--mobile-header-height) + .5rem) !important;
    width: auto !important;
    max-width: none !important;
    max-height: calc(100dvh - 8rem) !important;
    overflow: auto !important;
  }

  .mobile-bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 35;
    min-height: calc(var(--mobile-bottom-nav-height) + var(--safe-bottom));
    padding-bottom: var(--safe-bottom);
    background: hsl(var(--background) / .96);
    border-top: 1px solid hsl(var(--border));
    backdrop-filter: blur(18px);
    box-shadow: 0 -12px 30px rgba(15, 23, 42, .08);
  }

  .mobile-nav-item {
    font-size: .72rem;
    padding: .4rem .25rem;
    color: hsl(var(--muted-foreground));
  }

  .mobile-nav-item svg,
  .mobile-nav-item i {
    width: 1.18rem !important;
    height: 1.18rem !important;
  }

  .mobile-nav-item span {
    max-width: 4.8rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .mobile-nav-item.text-primary,
  .mobile-nav-item.sidebar-link-active,
  .mobile-nav-item.active {
    color: hsl(var(--primary)) !important;
  }
}

@media (max-width: 767px) {
  #dashboard-content .grid,
  #dashboard-content .lg\:grid-cols-2,
  #dashboard-content .lg\:grid-cols-3,
  #dashboard-content .lg\:grid-cols-4,
  #dashboard-content .md\:grid-cols-2,
  #dashboard-content .md\:grid-cols-3,
  #dashboard-content .xl\:grid-cols-4 {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  #dashboard-content .flex:not(.no-mobile-stack):not(.items-center.justify-center):not(.items-center.gap-2):not(.gap-2) {
    min-width: 0;
  }

  #dashboard-content .mobile-stack,
  #dashboard-content .items-start.justify-between,
  #dashboard-content .items-center.justify-between,
  #dashboard-content .flex.justify-between {
    flex-wrap: wrap;
    gap: .75rem;
  }

  #dashboard-content .p-8,
  #dashboard-content .p-7,
  #dashboard-content .p-6,
  #dashboard-content .p-5,
  #dashboard-content .p-4 {
    padding: .95rem !important;
  }

  #dashboard-content .px-6,
  #dashboard-content .px-5,
  #dashboard-content .px-4 {
    padding-left: .95rem !important;
    padding-right: .95rem !important;
  }

  #dashboard-content h1 { font-size: 1.45rem !important; }
  #dashboard-content h2 { font-size: 1.28rem !important; }
  #dashboard-content h3 { font-size: 1.08rem !important; }

  #dashboard-content input,
  #dashboard-content select,
  #dashboard-content textarea,
  #dashboard-content button,
  #dashboard-content .btn {
    font-size: 16px !important; /* prevents iOS zoom */
    max-width: 100%;
  }

  #dashboard-content input,
  #dashboard-content select,
  #dashboard-content textarea {
    width: 100% !important;
  }

  #dashboard-content button,
  #dashboard-content .btn {
    white-space: normal;
  }

  #dashboard-content .mobile-full,
  #dashboard-content button.mobile-full,
  #dashboard-content .btn.mobile-full {
    width: 100% !important;
  }
}

/* Tables become scrollable first, then card-like on very small screens */
#dashboard-content .v18-table-scroll {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border-radius: 1rem;
  border: 1px solid hsl(var(--border));
}

#dashboard-content .v18-table-scroll > table {
  min-width: 720px;
  margin: 0 !important;
}

@media (max-width: 640px) {
  #dashboard-content table.v18-card-table,
  #dashboard-content table.v18-card-table thead,
  #dashboard-content table.v18-card-table tbody,
  #dashboard-content table.v18-card-table tr,
  #dashboard-content table.v18-card-table th,
  #dashboard-content table.v18-card-table td {
    display: block;
    width: 100%;
  }

  #dashboard-content table.v18-card-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
  }

  #dashboard-content table.v18-card-table tr {
    margin: .75rem;
    border: 1px solid hsl(var(--border));
    border-radius: 1rem;
    background: hsl(var(--card));
    box-shadow: 0 6px 18px rgba(15, 23, 42, .06);
    overflow: hidden;
  }

  #dashboard-content table.v18-card-table td {
    border: 0 !important;
    border-bottom: 1px solid hsl(var(--border)) !important;
    padding: .75rem .9rem !important;
    min-height: 44px;
  }

  #dashboard-content table.v18-card-table td:last-child {
    border-bottom: 0 !important;
  }

  #dashboard-content table.v18-card-table td::before {
    content: attr(data-label);
    display: block;
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: hsl(var(--muted-foreground));
    margin-bottom: .25rem;
  }

  #dashboard-content table.v18-card-table td:empty::after {
    content: "—";
    color: hsl(var(--muted-foreground));
  }
}

/* Modals, drawers and popovers */
@media (max-width: 767px) {
  [id$="modal"],
  [id$="Modal"],
  .modal,
  .fixed.inset-0 {
    overscroll-behavior: contain;
  }

  .modal .rounded-xl,
  .modal .rounded-2xl,
  [id$="modal"] .rounded-xl,
  [id$="Modal"] .rounded-xl,
  .fixed.inset-0 > .rounded-xl,
  .fixed.inset-0 > div:not(#mobile-overlay) {
    width: calc(100vw - 1rem) !important;
    max-width: calc(100vw - 1rem) !important;
    max-height: calc(100dvh - 1rem - var(--safe-bottom)) !important;
    overflow-y: auto !important;
    margin: .5rem auto !important;
    border-radius: 1.1rem !important;
  }

  .fixed.inset-0 {
    padding: .5rem !important;
  }
}

/* Marks / grades mobile polish */
@media (max-width: 767px) {
  .marks-entry-layout,
  .grades-entry-layout,
  .v12-marks-layout,
  .v94-marks-layout {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 1rem !important;
  }

  .marks-summary,
  .grades-summary,
  .v12-marks-summary {
    position: static !important;
    width: 100% !important;
  }

  .marks-table,
  .grades-table,
  .v12-marks-table {
    min-width: 760px;
  }
}

/* Timetable mobile and theme hardening */
.timetable-grid,
.v12-timetable-grid,
.timetable-board,
.timetable-wrapper,
.timetable-container {
  max-width: 100%;
}

@media (max-width: 767px) {
  .timetable-grid,
  .v12-timetable-grid,
  .timetable-board {
    display: flex !important;
    gap: .75rem !important;
    overflow-x: auto !important;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: .5rem;
  }

  .timetable-grid > *,
  .v12-timetable-grid > *,
  .timetable-board > * {
    min-width: min(84vw, 22rem) !important;
    scroll-snap-align: start;
  }

  .timetable-cell,
  .v12-timetable-cell,
  .lesson-cell,
  .period-cell {
    min-height: 72px !important;
    padding: .75rem !important;
  }
}

.dark .timetable-grid,
.dark .v12-timetable-grid,
.dark .timetable-board,
.dark .timetable-cell,
.dark .v12-timetable-cell,
.dark .lesson-cell,
.dark .period-cell {
  background-color: hsl(var(--card)) !important;
  color: hsl(var(--card-foreground)) !important;
  border-color: hsl(var(--border)) !important;
}

.dark .timetable-cell .text-gray-900,
.dark .v12-timetable-cell .text-gray-900,
.dark .lesson-cell .text-gray-900 {
  color: hsl(var(--foreground)) !important;
}

/* Charts and analytics */
#dashboard-content canvas {
  max-width: 100% !important;
}

.v18-chart-wrap,
#dashboard-content .chart-container,
#dashboard-content [class*="chart"] {
  max-width: 100%;
  overflow-x: auto;
}

@media (max-width: 640px) {
  .v18-chart-wrap,
  #dashboard-content .chart-container {
    min-height: 260px;
  }
}

/* Landing page mobile CTA/pricing fixes */
@media (max-width: 767px) {
  #landing-page nav,
  .landing-nav,
  .pricing-grid,
  .hero-grid,
  .features-grid {
    grid-template-columns: 1fr !important;
  }

  #landing-page section {
    overflow-x: hidden;
  }

  #landing-page h1 {
    font-size: clamp(2rem, 10vw, 3.1rem) !important;
    line-height: 1.02 !important;
  }

  #landing-page .rounded-3xl,
  #landing-page .rounded-2xl {
    border-radius: 1.25rem !important;
  }
}

/* Utility states added by mobile-navigation-v18.js */
.v18-mobile-search-open #global-search-wrapper,
.v18-mobile-search-open .mobile-search-panel {
  display: block !important;
}

.v18-no-scroll {
  overflow: hidden !important;
}

.v18-horizontal-scroll {
  overflow-x: auto !important;
  -webkit-overflow-scrolling: touch;
}

.v18-mobile-safe-bottom {
  padding-bottom: calc(var(--mobile-bottom-nav-height) + var(--safe-bottom) + 1rem) !important;
}


/* ===== v34 global responsive and theme safety ===== */
:root{--app-bg:#f8fafc;--app-surface:#ffffff;--app-card:#ffffff;--app-text:#0f172a;--app-muted:#64748b;--app-border:#e2e8f0;--app-input:#ffffff;--app-accent:#2563eb;}
.dark,:root.dark,[data-theme="dark"]{--app-bg:#020617;--app-surface:#0f172a;--app-card:#111827;--app-text:#e5e7eb;--app-muted:#94a3b8;--app-border:#334155;--app-input:#0b1220;--app-accent:#60a5fa;}
html,body{max-width:100%;overflow-x:hidden;background:var(--app-bg);color:var(--app-text);} 
#dashboard-content,.dashboard-content,.main-content{max-width:100%;min-width:0;overflow-x:hidden;}
.card,.modal,.panel,.dashboard-card,.v12-card,.finance-v31-shell,.finance-v31-metric,.timetable-v33-card{background:var(--app-card);color:var(--app-text);border-color:var(--app-border);} 
input,select,textarea{background:var(--app-input)!important;color:var(--app-text)!important;border-color:var(--app-border)!important;}
.table-responsive,.overflow-x-auto{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}
img,svg,canvas,video{max-width:100%;}
@media(max-width:1024px){.dashboard-layout,.admin-layout,.teacher-layout,.parent-layout,.student-layout{grid-template-columns:1fr!important}.grid{min-width:0}.finance-v31-header,.v12-hero-inner{flex-direction:column;align-items:flex-start!important}.finance-v31-actions,.v12-actions{width:100%;display:flex;flex-wrap:wrap}.finance-v31-actions button,.v12-actions button{flex:1 1 160px}}
@media(max-width:768px){#dashboard-content{padding:12px!important}.finance-v31-metrics,.finance-v31-grid,.finance-v31-form-grid,.finance-v31-payment-grid,.timetable-v33-layout{grid-template-columns:1fr!important}.finance-v31-modal-inner{width:calc(100vw - 20px)!important;max-height:90vh;overflow:auto}.timetable-v33-grid{min-width:760px}.timetable-v33-scroll{overflow-x:auto;width:100%}}

/* v39 surgical scroll safety: preserve layout but allow mouse-wheel scrolling */
html, body { height: auto !important; min-height: 100% !important; overflow-y: auto !important; overscroll-behavior: auto !important; }
#dashboard-container, .dashboard-container, main, .main-content, #dashboard-content { min-height: 0 !important; overflow-y: auto !important; }
#dashboard-content { padding-bottom: 48px; }


/* ===== V41 timetable fit-to-screen refinement ===== */
#dashboard-content,
.dashboard-main,
.main-content,
#main-content{
  min-width:0!important;
}
#dashboard-content .timetable-v41-page{
  width:100%!important;
  max-width:100%!important;
  overflow-x:hidden!important;
  box-sizing:border-box!important;
  padding-right:0!important;
}
#dashboard-content .timetable-v41-hero{
  padding:14px 16px!important;
  border-radius:14px!important;
  margin:0!important;
}
#dashboard-content .timetable-v41-hero-inner{
  display:flex!important;
  align-items:center!important;
  justify-content:space-between!important;
  gap:14px!important;
  min-width:0!important;
}
#dashboard-content .timetable-v41-title-block{
  min-width:0!important;
  flex:1 1 auto!important;
}
#dashboard-content .timetable-v41-title-block .v12-title,
#dashboard-content .timetable-v41-title-block .v12-sub{
  margin:0!important;
  max-width:100%!important;
}
#dashboard-content .timetable-v41-actions{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:8px!important;
  flex-wrap:wrap!important;
  flex:0 0 auto!important;
}
#dashboard-content .timetable-v41-actions .timetable-v33-btn{
  white-space:nowrap!important;
  padding:8px 11px!important;
  border-radius:999px!important;
  font-size:13px!important;
  line-height:1.1!important;
}
#dashboard-content .timetable-v41-summary{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
#dashboard-content .timetable-v41-summary .timetable-v33-card{
  padding:10px 12px!important;
  min-width:0!important;
  border-radius:14px!important;
}
#dashboard-content .timetable-v41-summary .v12-value{
  font-size:18px!important;
  line-height:1.2!important;
  word-break:break-word!important;
}
#dashboard-content .timetable-v41-rule h3{
  margin:0 0 4px!important;
  font-size:14px!important;
  font-weight:900!important;
}
#dashboard-content .timetable-v41-rule p{
  margin:0!important;
  line-height:1.35!important;
}
#dashboard-content .timetable-v41-grid-card{
  width:100%!important;
  max-width:100%!important;
  overflow:hidden!important;
  border-radius:16px!important;
  padding:12px!important;
  box-sizing:border-box!important;
}
#dashboard-content .timetable-v41-grid-head{
  display:flex!important;
  justify-content:space-between!important;
  align-items:center!important;
  gap:10px!important;
  margin-bottom:10px!important;
  flex-wrap:wrap!important;
}
#dashboard-content .timetable-v41-grid-head h3{
  margin:0!important;
  font-size:16px!important;
  font-weight:900!important;
}
#dashboard-content .timetable-v33-scroll{
  width:100%!important;
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:visible!important;
  -webkit-overflow-scrolling:touch!important;
  border-radius:14px!important;
}
#dashboard-content .timetable-v33-grid{
  width:100%!important;
  min-width:0!important;
  grid-template-columns:minmax(96px,.62fr) repeat(5,minmax(112px,1fr))!important;
  border-radius:14px!important;
}
#dashboard-content .timetable-v33-cell{
  padding:8px!important;
  min-width:0!important;
  font-size:13px!important;
  line-height:1.25!important;
  box-sizing:border-box!important;
}
#dashboard-content .timetable-v33-head{
  position:sticky!important;
  top:0!important;
  z-index:2!important;
}
#dashboard-content .timetable-v33-time{
  word-break:normal!important;
  overflow-wrap:anywhere!important;
}
#dashboard-content .timetable-v33-time strong{
  display:block!important;
  font-size:13px!important;
}
#dashboard-content .timetable-v33-meta{
  font-size:12px!important;
  line-height:1.25!important;
}
#dashboard-content .timetable-v33-lesson{
  min-height:58px!important;
  padding:7px!important;
  border-radius:11px!important;
}
#dashboard-content .timetable-v33-title{
  font-size:13px!important;
  line-height:1.25!important;
}
#dashboard-content .timetable-v33-btn{
  max-width:100%!important;
}
#dashboard-content .timetable-v33-lesson .timetable-v33-btn,
#dashboard-content .timetable-v33-time .timetable-v33-btn{
  padding:4px 8px!important;
  font-size:11px!important;
  border-radius:999px!important;
  margin-top:6px!important;
}
html:not(.dark) #dashboard-content .timetable-v33-page,
body:not(.dark) #dashboard-content .timetable-v33-page{
  background:#f8fafc!important;
  color:#0f172a!important;
}
html:not(.dark) #dashboard-content .timetable-v33-card,
body:not(.dark) #dashboard-content .timetable-v33-card{
  background:#ffffff!important;
  color:#0f172a!important;
  border-color:#dbe4ef!important;
}
html:not(.dark) #dashboard-content .timetable-v33-cell,
body:not(.dark) #dashboard-content .timetable-v33-cell{
  background:#ffffff!important;
  color:#0f172a!important;
  border-color:#dbe4ef!important;
}
html:not(.dark) #dashboard-content .timetable-v33-head,
html:not(.dark) #dashboard-content .timetable-v33-time,
body:not(.dark) #dashboard-content .timetable-v33-head,
body:not(.dark) #dashboard-content .timetable-v33-time{
  background:#f1f5f9!important;
  color:#0f172a!important;
}
.dark #dashboard-content .timetable-v33-page,
html.dark #dashboard-content .timetable-v33-page,
body.dark #dashboard-content .timetable-v33-page{
  background:#07111f!important;
  color:#e5eefc!important;
}
.dark #dashboard-content .timetable-v33-card,
html.dark #dashboard-content .timetable-v33-card,
body.dark #dashboard-content .timetable-v33-card{
  background:#0f1b2d!important;
  color:#e5eefc!important;
  border-color:rgba(148,163,184,.24)!important;
}
.dark #dashboard-content .timetable-v33-cell,
html.dark #dashboard-content .timetable-v33-cell,
body.dark #dashboard-content .timetable-v33-cell{
  background:#101d31!important;
  color:#e5eefc!important;
  border-color:rgba(148,163,184,.24)!important;
}
.dark #dashboard-content .timetable-v33-head,
.dark #dashboard-content .timetable-v33-time,
html.dark #dashboard-content .timetable-v33-head,
html.dark #dashboard-content .timetable-v33-time,
body.dark #dashboard-content .timetable-v33-head,
body.dark #dashboard-content .timetable-v33-time{
  background:#13243a!important;
  color:#e5eefc!important;
}
@media (max-width:1280px){
  #dashboard-content .timetable-v33-grid{
    grid-template-columns:minmax(90px,.58fr) repeat(5,minmax(104px,1fr))!important;
  }
  #dashboard-content .timetable-v33-cell{padding:7px!important;font-size:12px!important;}
  #dashboard-content .timetable-v33-lesson{padding:6px!important;min-height:54px!important;}
}
@media (max-width:1040px){
  #dashboard-content .timetable-v41-hero-inner{align-items:flex-start!important;flex-direction:column!important;}
  #dashboard-content .timetable-v41-actions{width:100%!important;justify-content:flex-start!important;}
  #dashboard-content .timetable-v41-summary{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  #dashboard-content .timetable-v33-grid{min-width:760px!important;}
}
@media (max-width:680px){
  #dashboard-content .timetable-v41-summary{grid-template-columns:1fr!important;}
  #dashboard-content .timetable-v41-actions{display:grid!important;grid-template-columns:1fr!important;}
  #dashboard-content .timetable-v41-actions .timetable-v33-btn{width:100%!important;justify-content:center!important;}
  #dashboard-content .timetable-v33-grid{min-width:700px!important;}
}

/* ===== v55 Finance & Fees dark/light hardening ===== */
.finance-v31 {
  --ff-bg: #0b1624;
  --ff-panel: rgba(15, 28, 44, 0.94);
  --ff-card: rgba(18, 33, 52, 0.96);
  --ff-card-2: rgba(11, 22, 36, 0.95);
  --ff-border: rgba(148, 163, 184, 0.24);
  --ff-text: #e5eef8;
  --ff-muted: #9fb0c7;
  color: var(--ff-text) !important;
  background: radial-gradient(circle at top left, rgba(34,197,94,.11), transparent 28%), var(--ff-bg) !important;
}
body.dark .finance-v31,
html.dark .finance-v31,
[data-theme="dark"] .finance-v31,
.dark .finance-v31 {
  --ff-bg: #0b1624;
  --ff-panel: rgba(15, 28, 44, 0.94);
  --ff-card: rgba(18, 33, 52, 0.96);
  --ff-card-2: rgba(11, 22, 36, 0.95);
  --ff-border: rgba(148, 163, 184, 0.24);
  --ff-text: #e5eef8;
  --ff-muted: #9fb0c7;
}
html:not(.dark) .finance-v31,
[data-theme="light"] .finance-v31 {
  --ff-bg: #f8fafc;
  --ff-panel: #ffffff;
  --ff-card: #ffffff;
  --ff-card-2: #f8fafc;
  --ff-border: #e2e8f0;
  --ff-text: #0f172a;
  --ff-muted: #64748b;
  background: #f8fafc !important;
}
.finance-v31-card,
.finance-v31-form-card,
.finance-v31-total-box,
.finance-v31-shell,
.finance-v31-metric,
.finance-v31-empty,
.finance-v31-table-wrap,
.finance-v31-modal-inner {
  background: var(--ff-card) !important;
  color: var(--ff-text) !important;
  border-color: var(--ff-border) !important;
}
.finance-v31-total-box,
.finance-v31-table th,
.finance-v31-input,
.finance-v31-select,
.finance-v31-btn,
.finance-v31-close,
.finance-v31-message {
  background: var(--ff-card-2) !important;
  color: var(--ff-text) !important;
  border-color: var(--ff-border) !important;
}
.finance-v31-card h1,.finance-v31-card h2,.finance-v31-card h3,
.finance-v31 h1,.finance-v31 h2,.finance-v31 h3,
.finance-v31 strong,.finance-v31 label,.finance-v31 td,.finance-v31 th {
  color: var(--ff-text) !important;
}
.finance-v31 small,
.finance-v31 p,
.finance-v31-item-row,
.finance-v31-title p {
  color: var(--ff-muted) !important;
}
.finance-v31-btn.primary,.finance-v31-btn.blue { color:#fff !important; }
.finance-v31-btn[disabled] { opacity:.55; cursor:not-allowed; transform:none !important; }
.finance-v31-badge.paid { background:rgba(34,197,94,.16); color:#22c55e; }
.finance-v31-badge.partial { background:rgba(245,158,11,.16); color:#f59e0b; }
.finance-v31-badge.unpaid { background:rgba(239,68,68,.14); color:#ef4444; }

/* ===== v66 global branding + theme toggle stability ===== */
#sidebar-school-name,[data-school-name]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.brand-logo-pair img,#sidebar img[alt="Shule AI Logo"],#sidebar img[alt="Logo"]{display:block;flex-shrink:0;max-width:2.5rem;max-height:2.5rem;}
.theme-toggle-btn{color:hsl(var(--foreground))!important;background:hsl(var(--background))!important;border:1px solid hsl(var(--border))!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;}
.theme-toggle-btn svg,.theme-toggle-btn i{color:currentColor!important;stroke:currentColor!important;opacity:1!important;visibility:visible!important;}
.dark .theme-toggle-btn,[data-theme="dark"] .theme-toggle-btn{color:#e5e7eb!important;background:#0f172a!important;border-color:#334155!important;}
.dark .theme-toggle-btn:hover,[data-theme="dark"] .theme-toggle-btn:hover{background:#1e293b!important;}

/* v66 Stage 4 timetable production polish */
#dashboard-content .timetable-v66-page{width:100%;max-width:100%;overflow:hidden;display:flex;flex-direction:column;gap:14px;}
#dashboard-content .tt-toolbar{display:grid;grid-template-columns:1.4fr repeat(3,minmax(110px,.7fr)) auto auto;gap:10px;align-items:end;padding:14px;border-radius:18px;}
#dashboard-content .tt-toolbar label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:800;color:var(--app-muted,var(--tt-muted));}
#dashboard-content .tt-toolbar select,#dashboard-content .tt-toolbar input,.tt-period-row input,.tt-period-row select{min-height:38px;border-radius:12px;border:1px solid var(--app-border,var(--tt-border));background:var(--app-card,var(--tt-card));color:var(--app-text,var(--tt-text));padding:7px 10px;outline:none;}
#dashboard-content .tt-period-panel{background:var(--app-card,var(--tt-card));color:var(--app-text,var(--tt-text));border:1px solid var(--app-border,var(--tt-border));border-radius:18px;padding:14px;box-shadow:var(--tt-shadow,0 12px 30px rgba(15,23,42,.08));}
#dashboard-content .tt-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;}
#dashboard-content .tt-section-head h3{font-size:16px;font-weight:900;margin:0;color:var(--app-text,var(--tt-text));}
#dashboard-content .tt-period-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:8px;}
#dashboard-content .tt-period-row{display:grid;grid-template-columns:1.2fr .8fr .8fr .9fr auto;gap:6px;align-items:center;background:rgba(148,163,184,.08);border:1px solid var(--app-border,var(--tt-border));border-radius:14px;padding:8px;}
#dashboard-content .tt-period-row button,#dashboard-content .tt-mini{border:1px solid var(--app-border,var(--tt-border));background:var(--app-card-2,var(--tt-card-2));color:var(--app-text,var(--tt-text));border-radius:10px;padding:7px 9px;font-size:12px;font-weight:800;cursor:pointer;}
#dashboard-content .tt-help{font-size:12px;margin:10px 0 0;color:var(--app-muted,var(--tt-muted));}
#dashboard-content .timetable-v66-fit{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;}
#dashboard-content .timetable-v66-grid{display:grid!important;grid-template-columns:minmax(90px,110px) repeat(5,minmax(150px,1fr))!important;width:max-content;min-width:100%;max-width:none;border:1px solid var(--tt-border,var(--app-border));border-radius:18px;overflow:hidden;background:var(--tt-card,var(--app-card));}
#dashboard-content .timetable-v66-cell{min-width:0;overflow:hidden;background:var(--tt-cell,var(--app-card));color:var(--tt-text,var(--app-text));border-right:1px solid var(--tt-border,var(--app-border));border-bottom:1px solid var(--tt-border,var(--app-border));padding:8px;word-break:break-word;}
#dashboard-content .timetable-v66-head,#dashboard-content .timetable-v66-time{background:var(--tt-card-2,var(--app-card-2));font-weight:900;}
#dashboard-content .timetable-v66-time strong{display:block;font-size:12px;line-height:1.1;}
#dashboard-content .timetable-v66-time span{display:block;font-size:11px;color:var(--tt-muted,var(--app-muted));}
#dashboard-content .tt-lesson{max-width:100%;overflow:hidden;word-break:break-word;}
#dashboard-content .tt-lesson{border:1px solid rgba(96,165,250,.26);background:var(--tt-lesson,rgba(37,99,235,.08));border-radius:12px;padding:7px;min-height:58px;display:flex;flex-direction:column;gap:2px;overflow:hidden;}
#dashboard-content .tt-lesson+.tt-lesson{margin-top:6px;}
#dashboard-content .tt-break{background:var(--tt-break,rgba(148,163,184,.13))!important;border-style:dashed!important;}
#dashboard-content .tt-free{opacity:.78;}
#dashboard-content .tt-title{font-size:12px;font-weight:900;color:var(--tt-text,var(--app-text));white-space:normal;line-height:1.2;}
#dashboard-content .tt-meta{font-size:11px;color:var(--tt-muted,var(--app-muted));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
#dashboard-content .tt-ended{background:rgba(239,68,68,.14)!important;border-color:rgba(239,68,68,.45)!important;}
#dashboard-content .tt-current{background:rgba(34,197,94,.14)!important;border-color:rgba(34,197,94,.45)!important;}
#dashboard-content .tt-upcoming{background:var(--tt-lesson,rgba(37,99,235,.08));}
#dashboard-content .tt-today{background:var(--app-card,var(--tt-card));border:1px solid var(--app-border,var(--tt-border));border-radius:18px;padding:14px;}
#dashboard-content .tt-today-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;}
#dashboard-content .tt-today-card{border:1px solid var(--app-border,var(--tt-border));border-radius:16px;padding:12px;background:var(--tt-lesson,rgba(37,99,235,.08));min-height:88px;}
#dashboard-content .tt-today-card div{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;}
#dashboard-content .tt-today-card strong{font-size:14px;font-weight:900;}
#dashboard-content .tt-today-card span,#dashboard-content .tt-today-card p,#dashboard-content .tt-today-card small{font-size:12px;color:var(--app-muted,var(--tt-muted));margin:4px 0 0;}
@media(max-width:1100px){#dashboard-content .tt-toolbar{grid-template-columns:repeat(2,minmax(0,1fr));}#dashboard-content .tt-period-row{grid-template-columns:1fr 1fr;}.tt-period-row button{grid-column:span 2;}#dashboard-content .timetable-v66-cell{padding:6px;}#dashboard-content .tt-title{font-size:11px;}#dashboard-content .tt-meta{font-size:10px;}}
@media(max-width:760px){#dashboard-content .timetable-v66-fit{overflow-x:auto;}#dashboard-content .timetable-v66-grid{min-width:680px;}#dashboard-content .tt-toolbar{grid-template-columns:1fr;}#dashboard-content .tt-section-head{align-items:flex-start;flex-direction:column;}#dashboard-content .tt-period-list{grid-template-columns:1fr;}}

/* v66 Stage 4B - timetable compact UI + accurate lesson-count polish */
#dashboard-content .tt-period-panel.compact{padding:12px;border-radius:16px;}
#dashboard-content .tt-period-panel.compact .tt-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px;}
#dashboard-content .tt-period-panel.compact h3{margin:0;font-size:15px;line-height:1.2;}
#dashboard-content .tt-period-panel.compact .tt-help{margin:3px 0 0;font-size:12px;line-height:1.35;color:var(--app-muted,var(--tt-muted));}
#dashboard-content .tt-period-table{display:grid;gap:5px;width:100%;max-width:100%;overflow:hidden;}
#dashboard-content .tt-period-header,#dashboard-content .tt-period-row{display:grid;grid-template-columns:minmax(105px,1.25fr) minmax(80px,.8fr) minmax(86px,.72fr) minmax(86px,.72fr) minmax(72px,.55fr);gap:6px;align-items:center;min-width:0;}
#dashboard-content .tt-period-header{font-size:11px;font-weight:900;text-transform:uppercase;color:var(--app-muted,var(--tt-muted));padding:0 6px;}
#dashboard-content .tt-period-row{padding:6px;border-radius:10px;background:rgba(148,163,184,.07);border:1px solid var(--app-border,var(--tt-border));}
#dashboard-content .tt-period-row input,#dashboard-content .tt-period-row select{width:100%;min-width:0;min-height:32px;height:32px;font-size:12px;border-radius:9px;padding:4px 7px;}
#dashboard-content .tt-period-row button{min-height:32px;height:32px;padding:4px 7px;font-size:11px;border-radius:9px;white-space:nowrap;}
#dashboard-content .tt-toolbar{gap:8px;padding:10px;}
#dashboard-content .tt-toolbar label{min-width:0;}
#dashboard-content .tt-toolbar input,#dashboard-content .tt-toolbar select{width:100%;min-width:0;}
#dashboard-content .timetable-v66-grid{font-size:12px;}
#dashboard-content .tt-lesson{padding:6px;border-radius:10px;}
@media(max-width:900px){#dashboard-content .tt-period-header{display:none;}#dashboard-content .tt-period-row{grid-template-columns:1fr 1fr;}#dashboard-content .tt-period-row button{grid-column:span 2;}#dashboard-content .tt-period-panel.compact .tt-section-head{flex-direction:column;} }
@media(max-width:760px){#dashboard-content .timetable-v66-fit{overflow-x:auto;}#dashboard-content .timetable-v66-grid{min-width:640px;} }

/* v66 Stage 4C timetable compact class counters */
.tt-class-counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.65rem;margin:.75rem 0 1rem}.tt-class-count{border:1px solid var(--border-color,#e5e7eb);border-radius:14px;padding:.7rem .85rem;background:var(--card-bg,#fff);color:inherit;text-align:left;display:flex;justify-content:space-between;gap:.5rem;align-items:center;min-width:0}.tt-class-count strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-class-count span{font-size:.78rem;opacity:.75;white-space:nowrap}.tt-class-count.active{outline:2px solid var(--primary-color,#11b5b1);box-shadow:0 8px 24px rgba(17,181,177,.16)}.dark .tt-class-count,[data-theme="dark"] .tt-class-count{background:#0f172a;border-color:#334155}

/* v66 Payments Final Polish: finance visibility + live-record usability */
.finance-v31-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.finance-v31-btn,
.finance-v31 button,
.finance-v31 input,
.finance-v31 select {
  opacity: 1 !important;
  visibility: visible !important;
}
.finance-v31-btn {
  background: var(--ff-card-2, #f8fafc) !important;
  color: var(--ff-text, #0f172a) !important;
  border-color: var(--ff-border, #cbd5e1) !important;
  text-decoration: none !important;
}
.finance-v31-btn.primary,
.finance-v31-btn.blue {
  background: linear-gradient(135deg,#2563eb,#16a34a) !important;
  color: #ffffff !important;
  border-color: transparent !important;
}
.finance-v31-btn.danger {
  background: rgba(239,68,68,.12) !important;
  color: #dc2626 !important;
  border-color: rgba(239,68,68,.45) !important;
}
.dark .finance-v31-btn.danger,
body.dark .finance-v31-btn.danger,
[data-theme="dark"] .finance-v31-btn.danger {
  color: #fecaca !important;
  background: rgba(239,68,68,.18) !important;
}
.finance-v31-badge.completed,
.finance-v31-badge.paid,
.finance-v31-badge.success { background: rgba(34,197,94,.16); color: #16a34a; }
.finance-v31-badge.pending { background: rgba(245,158,11,.16); color: #d97706; }
.finance-v31-badge.failed,
.finance-v31-badge.rejected { background: rgba(239,68,68,.16); color: #dc2626; }
@media (max-width: 800px) {
  .finance-v31-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .finance-v31-table { min-width: 760px !important; }
  .finance-v31-actions, .finance-v31-toolbar { align-items: stretch !important; }
  .finance-v31-actions .finance-v31-btn, .finance-v31-toolbar .finance-v31-btn { width: 100%; }
}


/* ===== V77 Finance & Fees full dark/light theme hardening =====
   Scope: Finance & Fees only. Keeps existing finance logic intact while making
   cards, tables, forms, popups, chips, and dropdowns inherit the active dashboard theme. */
.finance-v31,
.finance-v31-modal {
  color-scheme: dark;
  --ff-bg: #07111f;
  --ff-panel: #0f1b2d;
  --ff-card: #122139;
  --ff-card-2: #0b1624;
  --ff-border: rgba(148, 163, 184, 0.24);
  --ff-text: #e5eef8;
  --ff-muted: #9fb0c8;
  --ff-green: #22c55e;
  --ff-blue: #3b82f6;
  --ff-orange: #f59e0b;
  --ff-purple: #8b5cf6;
  --ff-red: #ef4444;
}
html:not(.dark) .finance-v31,
html:not(.dark) .finance-v31-modal,
[data-theme="light"] .finance-v31,
[data-theme="light"] .finance-v31-modal {
  color-scheme: light;
  --ff-bg: #f8fafc;
  --ff-panel: #ffffff;
  --ff-card: #ffffff;
  --ff-card-2: #f1f5f9;
  --ff-border: #e2e8f0;
  --ff-text: #0f172a;
  --ff-muted: #64748b;
}
html.dark .finance-v31,
html.dark .finance-v31-modal,
body.dark .finance-v31,
body.dark .finance-v31-modal,
.dark .finance-v31,
.dark .finance-v31-modal,
[data-theme="dark"] .finance-v31,
[data-theme="dark"] .finance-v31-modal {
  color-scheme: dark;
  --ff-bg: #07111f;
  --ff-panel: #0f1b2d;
  --ff-card: #122139;
  --ff-card-2: #0b1624;
  --ff-border: rgba(148, 163, 184, 0.24);
  --ff-text: #e5eef8;
  --ff-muted: #9fb0c8;
}
.finance-v31 {
  background: radial-gradient(circle at top left, rgba(34, 197, 94, 0.11), transparent 28%), var(--ff-bg) !important;
  color: var(--ff-text) !important;
}
html:not(.dark) .finance-v31,
[data-theme="light"] .finance-v31 {
  background: var(--ff-bg) !important;
}
.finance-v31-modal {
  background: rgba(2, 6, 23, 0.72) !important;
  color: var(--ff-text) !important;
}
.finance-v31 *,
.finance-v31-modal * {
  border-color: var(--ff-border);
}
.finance-v31 h1,
.finance-v31 h2,
.finance-v31 h3,
.finance-v31 h4,
.finance-v31 strong,
.finance-v31 label,
.finance-v31-modal h1,
.finance-v31-modal h2,
.finance-v31-modal h3,
.finance-v31-modal h4,
.finance-v31-modal strong,
.finance-v31-modal label {
  color: var(--ff-text) !important;
}
.finance-v31 p,
.finance-v31 small,
.finance-v31 .text-muted-foreground,
.finance-v31-modal p,
.finance-v31-modal small,
.finance-v31-modal .text-muted-foreground {
  color: var(--ff-muted) !important;
}
.finance-v31-shell,
.finance-v31-modal-inner,
.finance-v31-modal-head,
.finance-v31-modal-body,
.finance-v31-card,
.finance-v31-card.grouped,
.finance-v31-metric,
.finance-v31-form-card,
.finance-v31-total-box,
.finance-v31-empty,
.finance-v31-table-wrap,
.finance-v31-target-box,
.finance-v31-check,
.finance-v31-chip,
.finance-v31-defaulter,
.finance-v31-notice,
.finance-v31-message {
  background-color: var(--ff-card) !important;
  color: var(--ff-text) !important;
  border-color: var(--ff-border) !important;
}
.finance-v31-shell,
.finance-v31-modal-inner,
.finance-v31-tabs,
.finance-v31-table th,
.finance-v31-total-box,
.finance-v31-input,
.finance-v31-select,
.finance-v31 textarea,
.finance-v31-modal input,
.finance-v31-modal select,
.finance-v31-modal textarea,
.finance-v31-method,
.finance-v31-class-tab,
.finance-v31-btn:not(.primary):not(.blue):not(.danger),
.finance-v31-close {
  background-color: var(--ff-card-2) !important;
  color: var(--ff-text) !important;
  border-color: var(--ff-border) !important;
}
.finance-v31-input::placeholder,
.finance-v31-modal input::placeholder,
.finance-v31-modal textarea::placeholder {
  color: var(--ff-muted) !important;
  opacity: 1;
}
.finance-v31-select option,
.finance-v31-modal select option {
  background: var(--ff-panel) !important;
  color: var(--ff-text) !important;
}
.finance-v31-table,
.finance-v31-table tbody,
.finance-v31-table tr,
.finance-v31-table td {
  background: var(--ff-card) !important;
  color: var(--ff-text) !important;
  border-color: var(--ff-border) !important;
}
.finance-v31-table th {
  background: var(--ff-card-2) !important;
  color: var(--ff-muted) !important;
}
.finance-v31-table tr:hover td,
.finance-v31-defaulter:hover,
.finance-v31-card:hover {
  background-color: color-mix(in srgb, var(--ff-card) 88%, var(--ff-green) 12%) !important;
}
.finance-v31-badge,
.finance-v31-chip,
.finance-v31-method,
.finance-v31-class-tab {
  color: var(--ff-text) !important;
}
.finance-v31-badge.active,
.finance-v31-method.active,
.finance-v31-tab.active {
  background: rgba(34,197,94,.16) !important;
  color: var(--ff-green) !important;
  border-color: rgba(34,197,94,.38) !important;
}
.finance-v31-badge.draft {
  background: rgba(245,158,11,.18) !important;
  color: var(--ff-orange) !important;
}
.finance-v31-badge.locked,
.finance-v31-message.error {
  background: rgba(239,68,68,.14) !important;
  color: var(--ff-red) !important;
}
.finance-v31-message.success {
  background: rgba(34,197,94,.12) !important;
  color: var(--ff-green) !important;
}
.finance-v31-btn.primary,
.finance-v31-btn.blue,
.finance-v31-btn.danger,
.finance-v31-class-tab.active {
  color: #ffffff !important;
}
html.dark .finance-v31-modal-inner,
html.dark .finance-v31-card,
html.dark .finance-v31-metric,
html.dark .finance-v31-form-card,
html.dark .finance-v31-total-box {
  box-shadow: 0 22px 70px rgba(0,0,0,.38) !important;
}
@media (max-width: 720px) {
  .finance-v31-modal-inner { width: 98vw !important; }
}


/* V82 final locked alerts + finance/help theme hardening */
.alerts-v82-shell{max-width:1180px;margin:0 auto;display:grid;gap:16px;color:var(--foreground,#0f172a)}
.alerts-v82-hero{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:var(--card,#fff);color:var(--card-foreground,var(--foreground,#0f172a));border:1px solid var(--border,#e2e8f0);border-radius:24px;padding:22px;box-shadow:0 16px 40px rgba(15,23,42,.06)}
.alerts-v82-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:900;color:var(--primary,#2563eb);margin:0 0 6px}.alerts-v82-hero h2{font-size:clamp(24px,3vw,34px);line-height:1;margin:0 0 8px;font-weight:900}.alerts-v82-hero p{margin:0;color:var(--muted-foreground,#64748b)}
.alerts-v82-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.alerts-v82-actions select,.alerts-v82-actions button{border:1px solid var(--border,#dbe3ef);background:var(--background,#fff);color:var(--foreground,#0f172a);border-radius:12px;padding:10px 12px;font-weight:700}.alerts-v82-actions button{cursor:pointer}.alerts-v82-actions button:hover{background:var(--accent,#f1f5f9)}
.alerts-v82-groups{display:grid;gap:12px}.alert-v82-date-group{background:var(--card,#fff);border:1px solid var(--border,#e2e8f0);border-radius:18px;overflow:hidden}.alert-v82-date-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;background:var(--card,#fff);color:var(--foreground,#0f172a);border:0;cursor:pointer;font-weight:900;text-align:left}.alert-v82-date-toggle small{color:var(--muted-foreground,#64748b);font-weight:800}.alert-v82-group-list{display:grid;gap:10px;padding:0 14px 14px}.alert-v82-card{border:1px solid var(--border,#e2e8f0);border-radius:16px;background:var(--background,#fff);color:var(--foreground,#0f172a);padding:14px}.alert-v82-card.is-unread{box-shadow:inset 4px 0 0 var(--primary,#2563eb);background:color-mix(in srgb,var(--primary,#2563eb) 5%,var(--background,#fff))}.alert-v82-card.is-read{opacity:.86}.alert-v82-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.alert-v82-card h3{margin:6px 0;font-weight:900}.alert-v82-card time{font-size:12px;color:var(--muted-foreground,#64748b);white-space:nowrap}.alert-v82-message{margin:4px 0;color:var(--muted-foreground,#64748b);line-height:1.5}.alert-v82-student{margin:6px 0 0;font-size:12px;font-weight:800;color:var(--foreground,#0f172a)}.alert-v82-badges{display:flex;flex-wrap:wrap;gap:6px}.alert-v82-category,.alert-v82-source,.alert-v82-unread{border:1px solid var(--border,#e2e8f0);border-radius:999px;padding:4px 8px;font-size:11px;font-weight:900}.alert-v82-category{background:rgba(37,99,235,.12);color:var(--primary,#2563eb)}.alert-v82-source{background:var(--muted,#f1f5f9);color:var(--muted-foreground,#64748b)}.alert-v82-unread{background:#fee2e2;color:#b91c1c;border-color:#fecaca}.alert-v82-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.alert-v82-actions button{border:1px solid var(--border,#dbe3ef);background:var(--card,#fff);color:var(--foreground,#0f172a);border-radius:10px;padding:7px 10px;font-size:12px;font-weight:800;cursor:pointer}.alerts-v82-empty,.alerts-v82-error{background:var(--card,#fff);border:1px solid var(--border,#e2e8f0);border-radius:18px;padding:28px;text-align:center;color:var(--muted-foreground,#64748b)}.alerts-v82-error{border-color:#fecaca;color:#b91c1c;background:#fff1f2;text-align:left}
.dark .alerts-v82-shell,html.dark .alerts-v82-shell,body.dark .alerts-v82-shell,[data-theme="dark"] .alerts-v82-shell{--background:#07111f;--foreground:#e5eefc;--card:#0f1b2d;--card-foreground:#e5eefc;--muted:#13243a;--muted-foreground:#9fb0c8;--border:rgba(148,163,184,.24);--accent:#13243a;--primary:#60a5fa}.dark .alert-v82-unread,html.dark .alert-v82-unread,[data-theme="dark"] .alert-v82-unread{background:rgba(239,68,68,.16);color:#fecaca;border-color:rgba(248,113,113,.35)}.dark .alerts-v82-error,html.dark .alerts-v82-error,[data-theme="dark"] .alerts-v82-error{background:rgba(127,29,29,.25);color:#fecaca;border-color:rgba(248,113,113,.28)}
html.dark #dashboard-content .finance-v31,body.dark #dashboard-content .finance-v31,.dark #dashboard-content .finance-v31,[data-theme="dark"] #dashboard-content .finance-v31{--ff-bg:#07111f!important;--ff-panel:#0b1220!important;--ff-card:#0f1b2d!important;--ff-card-2:#13243a!important;--ff-text:#e5eefc!important;--ff-muted:#9fb0c8!important;--ff-border:rgba(148,163,184,.28)!important;background:var(--ff-bg)!important;color:var(--ff-text)!important}html.dark #dashboard-content .finance-v31 *,body.dark #dashboard-content .finance-v31 *,[data-theme="dark"] #dashboard-content .finance-v31 *{border-color:var(--ff-border)}html.dark #dashboard-content .finance-v31 input,html.dark #dashboard-content .finance-v31 select,html.dark #dashboard-content .finance-v31 textarea,html.dark #dashboard-content .finance-v31-modal input,html.dark #dashboard-content .finance-v31-modal select,html.dark #dashboard-content .finance-v31-modal textarea,body.dark #dashboard-content .finance-v31 input,body.dark #dashboard-content .finance-v31 select,body.dark #dashboard-content .finance-v31 textarea,[data-theme="dark"] #dashboard-content .finance-v31 input,[data-theme="dark"] #dashboard-content .finance-v31 select,[data-theme="dark"] #dashboard-content .finance-v31 textarea{background:#07111f!important;color:#e5eefc!important;border-color:rgba(148,163,184,.35)!important}html.dark #dashboard-content .finance-v31 .bg-white,html.dark #dashboard-content .finance-v31 .bg-card,body.dark #dashboard-content .finance-v31 .bg-white,body.dark #dashboard-content .finance-v31 .bg-card,[data-theme="dark"] #dashboard-content .finance-v31 .bg-white,[data-theme="dark"] #dashboard-content .finance-v31 .bg-card{background:#0f1b2d!important;color:#e5eefc!important}html.dark #dashboard-content .finance-v31 .text-gray-900,html.dark #dashboard-content .finance-v31 .text-slate-900,html.dark #dashboard-content .finance-v31 .text-black,body.dark #dashboard-content .finance-v31 .text-gray-900,body.dark #dashboard-content .finance-v31 .text-slate-900,body.dark #dashboard-content .finance-v31 .text-black,[data-theme="dark"] #dashboard-content .finance-v31 .text-gray-900,[data-theme="dark"] #dashboard-content .finance-v31 .text-slate-900,[data-theme="dark"] #dashboard-content .finance-v31 .text-black{color:#e5eefc!important}html.dark #dashboard-content .finance-v31 .text-gray-500,html.dark #dashboard-content .finance-v31 .text-gray-600,html.dark #dashboard-content .finance-v31 .text-slate-500,html.dark #dashboard-content .finance-v31 .text-slate-600,body.dark #dashboard-content .finance-v31 .text-gray-500,body.dark #dashboard-content .finance-v31 .text-gray-600,[data-theme="dark"] #dashboard-content .finance-v31 .text-gray-500,[data-theme="dark"] #dashboard-content .finance-v31 .text-gray-600{color:#9fb0c8!important}.finance-v31-modal,.finance-v31-modal-inner{color:var(--ff-text,#0f172a)}
@media(max-width:720px){.alerts-v82-hero{display:grid}.alerts-v82-actions{justify-content:stretch}.alerts-v82-actions select,.alerts-v82-actions button{width:100%}.alert-v82-card-head{display:grid}.alert-v82-card time{white-space:normal}}
/* V106 dark mode completion: final visibility hardening for newly wired dashboard sections. */
:root {
  --v107-dark-card: #0f172a;
  --v107-dark-card-2: #111827;
  --v107-dark-text: #e5e7eb;
  --v107-dark-muted: #94a3b8;
  --v107-dark-border: rgba(148, 163, 184, .28);
  --v107-dark-input: #020617;
}
html.dark #dashboard-content,
body.dark #dashboard-content,
.dark #dashboard-content {
  color: var(--v107-dark-text);
}
html.dark #dashboard-content .bg-card,
body.dark #dashboard-content .bg-card,
.dark #dashboard-content .bg-card,
html.dark #dashboard-content .v107-card,
.dark #dashboard-content .v107-card {
  background-color: var(--v107-dark-card) !important;
  color: var(--v107-dark-text) !important;
  border-color: var(--v107-dark-border) !important;
}
html.dark #dashboard-content .bg-background,
.dark #dashboard-content .bg-background,
html.dark #dashboard-content input,
html.dark #dashboard-content select,
html.dark #dashboard-content textarea,
.dark #dashboard-content input,
.dark #dashboard-content select,
.dark #dashboard-content textarea {
  background-color: var(--v107-dark-input) !important;
  color: var(--v107-dark-text) !important;
  border-color: var(--v107-dark-border) !important;
}
html.dark #dashboard-content input::placeholder,
html.dark #dashboard-content textarea::placeholder,
.dark #dashboard-content input::placeholder,
.dark #dashboard-content textarea::placeholder {
  color: #64748b !important;
}
html.dark #dashboard-content .bg-muted\/30,
html.dark #dashboard-content .bg-muted\/50,
html.dark #dashboard-content .hover\:bg-accent:hover,
.dark #dashboard-content .bg-muted\/30,
.dark #dashboard-content .bg-muted\/50,
.dark #dashboard-content .hover\:bg-accent:hover {
  background-color: rgba(148, 163, 184, .10) !important;
}
html.dark #dashboard-content table,
html.dark #dashboard-content thead,
html.dark #dashboard-content tbody,
html.dark #dashboard-content tr,
html.dark #dashboard-content th,
html.dark #dashboard-content td,
.dark #dashboard-content table,
.dark #dashboard-content thead,
.dark #dashboard-content tbody,
.dark #dashboard-content tr,
.dark #dashboard-content th,
.dark #dashboard-content td {
  color: var(--v107-dark-text) !important;
  border-color: var(--v107-dark-border) !important;
}
html.dark #dashboard-content thead,
.dark #dashboard-content thead {
  background-color: rgba(148, 163, 184, .12) !important;
}
html.dark #dashboard-content .text-muted-foreground,
.dark #dashboard-content .text-muted-foreground {
  color: var(--v107-dark-muted) !important;
}
html.dark #dashboard-content .text-gray-700,
html.dark #dashboard-content .text-gray-800,
html.dark #dashboard-content .text-gray-900,
html.dark #dashboard-content .text-slate-700,
html.dark #dashboard-content .text-slate-800,
html.dark #dashboard-content .text-slate-900,
.dark #dashboard-content .text-gray-700,
.dark #dashboard-content .text-gray-800,
.dark #dashboard-content .text-gray-900,
.dark #dashboard-content .text-slate-700,
.dark #dashboard-content .text-slate-800,
.dark #dashboard-content .text-slate-900 {
  color: var(--v107-dark-text) !important;
}
html.dark #dashboard-content .border,
html.dark #dashboard-content .border-b,
html.dark #dashboard-content .border-t,
html.dark #dashboard-content .divide-y > :not([hidden]) ~ :not([hidden]),
.dark #dashboard-content .border,
.dark #dashboard-content .border-b,
.dark #dashboard-content .border-t,
.dark #dashboard-content .divide-y > :not([hidden]) ~ :not([hidden]) {
  border-color: var(--v107-dark-border) !important;
}
html.dark #dashboard-content button:not(.bg-primary):not(.bg-green-600):not(.bg-red-600):not(.bg-blue-600),
.dark #dashboard-content button:not(.bg-primary):not(.bg-green-600):not(.bg-red-600):not(.bg-blue-600) {
  color: var(--v107-dark-text);
}
html.dark #dashboard-content .bg-primary,
.dark #dashboard-content .bg-primary {
  color: hsl(var(--primary-foreground)) !important;
}
html.dark #dashboard-content .bg-white,
html.dark #dashboard-content .bg-gray-50,
html.dark #dashboard-content .bg-slate-50,
html.dark #dashboard-content .bg-blue-50,
html.dark #dashboard-content .bg-indigo-50,
html.dark #dashboard-content .bg-green-50,
html.dark #dashboard-content .bg-yellow-50,
html.dark #dashboard-content .bg-red-50,
html.dark #dashboard-content .bg-purple-50,
.dark #dashboard-content .bg-white,
.dark #dashboard-content .bg-gray-50,
.dark #dashboard-content .bg-slate-50,
.dark #dashboard-content .bg-blue-50,
.dark #dashboard-content .bg-indigo-50,
.dark #dashboard-content .bg-green-50,
.dark #dashboard-content .bg-yellow-50,
.dark #dashboard-content .bg-red-50,
.dark #dashboard-content .bg-purple-50 {
  background-color: var(--v107-dark-card-2) !important;
}
