/* Light theme ("Clean white").
   EVERY rule in this file is scoped to :root[data-theme="light"], so the dark theme (the default,
   and the only theme while the `light_mode` flag is off) is untouched by it.
   Layers: tokens -> app shell -> legacy views (dark-styles.css) -> desktop (desktop-styles.css)
   -> platform fixes (platform.css hard-coded colours) -> inline styles -> Tailwind utilities (generated
   by scripts/theme/gen_light.py, at the end) -> theme switch animation. */

html:root[data-theme="light"] {
  --lt-bg: #F5F6F8; --lt-surface: #FFFFFF; --lt-surface-2: #F0F1F4; --lt-inset: #F6F7F9; --lt-hover: #E9EBEF;
  --lt-line: #E5E7EB; --lt-line-strong: #D1D5DB;
  --lt-ink: #111827; --lt-ink-2: #1F2937; --lt-ink-3: #4B5563; --lt-ink-4: #6B7280;
  --lt-brand: #5B5EE8; --lt-brand-ink: #4338CA; --lt-violet: #7C3AED;
  --lt-shadow-1: 0 1px 2px rgba(17,24,39,.06), 0 1px 1px rgba(17,24,39,.04);
  --lt-shadow-2: 0 4px 14px rgba(17,24,39,.07), 0 1px 2px rgba(17,24,39,.05);
  --lt-shadow-3: 0 18px 44px rgba(17,24,39,.14);
  /* platform tokens: finish the light set started in platform.css */
  --rs-bg: #F5F6F8; --rs-surface: #FFFFFF; --rs-surface-2: #F0F1F4; --rs-surface-inset: #F6F7F9;
  --rs-line: #E5E7EB; --rs-line-strong: #D1D5DB;
  --rs-ink: #111827; --rs-ink-2: #1F2937; --rs-ink-3: #4B5563; --rs-ink-4: #6B7280;
  --rs-brand: #5B5EE8; --rs-brand-soft: rgba(91,94,232,.10); --rs-brand-ring: rgba(91,94,232,.35);
  --rs-ok: #16A34A; --rs-warn: #D97706; --rs-bad: #DC2626; --rs-info: #0284C7; --rs-accent: #CA8A04;
  --rs-t-presentation: #7C3AED; --rs-t-assignment: #2563EB; --rs-t-quiz: #BE185D; --rs-t-class_test: #EA580C;
  --rs-t-lab: #059669; --rs-t-topic: #CA8A04; --rs-t-other: #6B7280;
  --rs-shadow-1: var(--lt-shadow-1); --rs-shadow-2: var(--lt-shadow-2); --rs-shadow-3: var(--lt-shadow-3);
  color-scheme: light;
}

/* ================================================================ app shell */
:root[data-theme="light"] body { background: var(--lt-bg) !important; color: var(--lt-ink); }
:root[data-theme="light"] header.sticky { background: rgba(245,246,248,.88) !important; border-bottom-color: var(--lt-line) !important; box-shadow: 0 1px 0 rgba(17,24,39,.02); }
:root[data-theme="light"] .bottom-nav { background: rgba(255,255,255,.96) !important; border-top-color: var(--lt-line) !important; box-shadow: 0 -4px 18px rgba(17,24,39,.05); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
:root[data-theme="light"] .nav-btn { color: var(--lt-ink-4); }
:root[data-theme="light"] .nav-btn span, :root[data-theme="light"] .nav-home__label { color: var(--lt-ink-4); }
:root[data-theme="light"] .nav-btn.active span, :root[data-theme="light"] .nav-btn--home.active .nav-home__label { color: var(--lt-brand); }
:root[data-theme="light"] .nav-btn.active i { color: var(--lt-brand); }
:root[data-theme="light"] .nav-btn:hover:not(.active) { color: var(--lt-ink-3); }
:root[data-theme="light"] .nav-home__disc { box-shadow: 0 6px 16px rgba(91,94,232,.30), 0 0 0 4px var(--lt-surface); }
:root[data-theme="light"] .nav-btn--home.active .nav-home__disc { box-shadow: 0 8px 20px rgba(91,94,232,.40), 0 0 0 4px var(--lt-surface); }
:root[data-theme="light"] button::before, :root[data-theme="light"] .nav-btn::before { background: rgba(17,24,39,.06); }
:root[data-theme="light"] .rs-topbtn { background: var(--lt-surface); color: var(--lt-ink-3); box-shadow: var(--lt-shadow-1); border: 1px solid var(--lt-line); }
:root[data-theme="light"] .rs-topbtn:hover { background: var(--lt-surface-2); color: var(--lt-ink); }
:root[data-theme="light"] #viewModeTitle { color: var(--lt-ink); }
:root[data-theme="light"] #communityIconLink { background: var(--lt-surface); border: 1px solid var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] #communityIconLink:hover { background: var(--lt-surface-2); }
:root[data-theme="light"] ::selection { background: rgba(91,94,232,.18); }

/* ================================================================ legacy views (dark-styles.css) */
:root[data-theme="light"] .frequent-pill { background: var(--lt-surface); color: var(--lt-ink-2); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .frequent-pill[data-view='teacher'] { border-color: rgba(219,39,119,.30); }
:root[data-theme="light"] .frequent-pill:hover { background: var(--lt-surface-2); border-color: rgba(219,39,119,.40); box-shadow: var(--lt-shadow-2); }
:root[data-theme="light"] .frequent-pill-dismiss { color: var(--lt-ink-4); }
:root[data-theme="light"] .frequent-pill-dismiss:hover { background: rgba(219,39,119,.12); color: #BE185D; }
:root[data-theme="light"] .course-pill { background: var(--lt-surface); color: var(--lt-ink-2); border-color: var(--lt-line); }
:root[data-theme="light"] .course-pill:hover { background: var(--lt-surface-2); border-color: #8B5CF6; }
:root[data-theme="light"] .teacher-avatar.online::after { border-color: var(--lt-surface); }
:root[data-theme="light"] .teacher-name { color: var(--lt-ink-3); }
:root[data-theme="light"] .teacher-name:hover { color: var(--lt-violet) !important; }
:root[data-theme="light"] .day-card { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .day-card:hover { border-color: var(--lt-line-strong); box-shadow: 0 6px 16px rgba(91,94,232,.14); }
:root[data-theme="light"] .day-card .day-name { color: var(--lt-ink-3); }
:root[data-theme="light"] .day-card:not(.active) * { color: var(--lt-ink-2); }
:root[data-theme="light"] .day-card:not(.active) .day-name { color: var(--lt-ink-3); }
:root[data-theme="light"] .view-toggle-btn { color: var(--lt-ink-3); }
:root[data-theme="light"] .view-toggle-btn:hover { color: var(--lt-ink); }
:root[data-theme="light"] .view-toggle-btn.active { color: #fff; box-shadow: 0 4px 12px rgba(102,126,234,.25); }
/* "My routine" chip (routine.js sets its colour inline) */
:root[data-theme="light"] #rsMyRoutineChip { color: #92400E !important; background: #FFFBEB; border-color: #F59E0B !important; }
:root[data-theme="light"] .schedule-card, :root[data-theme="light"] .stat-card { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .schedule-card:hover, :root[data-theme="light"] .stat-card:hover { border-color: var(--lt-line-strong); box-shadow: var(--lt-shadow-2); }
:root[data-theme="light"] .schedule-card.current-class { background: linear-gradient(135deg, #FFFFFF 0%, #ECFDF5 100%); border-color: #10B981; }
:root[data-theme="light"] .schedule-card .time-badge { background: rgba(124,58,237,.08); color: #6D28D9; border-color: rgba(124,58,237,.2); }
:root[data-theme="light"] .schedule-card.current-class .time-badge { background: rgba(16,185,129,.1); color: #047857; }
:root[data-theme="light"] .schedule-card .course-title, :root[data-theme="light"] .schedule-card .detail-value,
:root[data-theme="light"] .stat-card .stat-value { color: var(--lt-ink); }
:root[data-theme="light"] .schedule-card .detail-label, :root[data-theme="light"] .stat-card .stat-label { color: var(--lt-ink-4); }
:root[data-theme="light"] .schedule-card .quick-actions, :root[data-theme="light"] .schedule-card .class-progress { border-top-color: var(--lt-line); }
:root[data-theme="light"] .schedule-card .quick-action-btn { background: var(--lt-surface-2); border-color: var(--lt-line); color: var(--lt-ink-3); }
:root[data-theme="light"] .schedule-card .quick-action-btn:hover { background: #EFF6FF; color: #2563EB; border-color: #93C5FD; }
:root[data-theme="light"] .schedule-card .progress-bar { background: var(--lt-line); }
:root[data-theme="light"] .empty-room-simple-card { background: var(--lt-surface); box-shadow: var(--lt-shadow-1); border: 1px solid var(--lt-line); }
:root[data-theme="light"] .empty-room-simple-card:hover { background: var(--lt-surface); box-shadow: 0 10px 26px rgba(91,94,232,.16); }
:root[data-theme="light"] .empty-room-name { color: var(--lt-ink); }
:root[data-theme="light"] .empty-room-time { color: var(--lt-ink-3); }
/* the class card: white card, dark ink; the notch on the header's right edge takes the page colour */
:root[data-theme="light"] .class-card-simple { background: var(--lt-surface); color: var(--lt-ink); box-shadow: var(--lt-shadow-1); border: 1px solid var(--lt-line); }
:root[data-theme="light"] .card-header { border-right-color: var(--lt-bg); }
:root[data-theme="light"] .class-card-simple.optional-course .card-header { border-right-color: #DC2626; }
:root[data-theme="light"] .start-time, :root[data-theme="light"] .end-time { color: var(--lt-ink-3); }
:root[data-theme="light"] .dot { background: var(--lt-line-strong); }
:root[data-theme="light"] .class-title { color: #475569; }
:root[data-theme="light"] .label { color: var(--lt-ink-4); }
:root[data-theme="light"] .value { color: var(--lt-ink-2); }
:root[data-theme="light"] .value.highlight { color: var(--lt-brand-ink); }
:root[data-theme="light"] .no-class-title { color: var(--lt-ink); }
:root[data-theme="light"] .no-class-subtitle { color: var(--lt-ink-3); }
:root[data-theme="light"] .suggestion-item { background: var(--lt-surface); color: var(--lt-ink-2); border-color: var(--lt-line); }
:root[data-theme="light"] .suggestion-item:hover { box-shadow: 0 6px 16px rgba(91,94,232,.18); }
:root[data-theme="light"] .break-card-simple { background: repeating-linear-gradient(45deg, #F3F4F6, #F3F4F6 10px, #EBEDF0 10px, #EBEDF0 20px); }
:root[data-theme="light"] .break-title, :root[data-theme="light"] .break-time { color: var(--lt-ink-3); }
:root[data-theme="light"] .action-btn { background: var(--lt-surface); border-color: var(--lt-line); }
:root[data-theme="light"] .action-btn:hover { background: var(--lt-surface-2); border-color: var(--lt-line-strong); }
:root[data-theme="light"] .room-badge { background: var(--lt-surface); border-color: var(--lt-line); color: var(--lt-ink-2); }
:root[data-theme="light"] .room-badge:hover { background: #EFF6FF; border-color: #60A5FA; }
:root[data-theme="light"] .input-back-btn { background: rgba(37,99,235,.08); color: #2563EB; }
:root[data-theme="light"] .search-focus-mode { background: rgba(245,246,248,.98) !important; }
:root[data-theme="light"] .focus-backdrop, :root[data-theme="light"] .settings-overlay { background: rgba(17,24,39,.35); }
:root[data-theme="light"] .loader-overlay { background: rgba(245,246,248,.78); }
:root[data-theme="light"] input[type="text"]:focus, :root[data-theme="light"] select:focus { box-shadow: 0 6px 18px rgba(91,94,232,.14), 0 0 0 2px rgba(91,94,232,.28); }
/* week table */
:root[data-theme="light"] .week-stat-card, :root[data-theme="light"] .week-timetable-container { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .week-stat-value { color: var(--lt-ink); }
:root[data-theme="light"] .week-stat-label { color: var(--lt-ink-3); }
:root[data-theme="light"] .week-table-day-header, :root[data-theme="light"] .week-table-time-header { background: #EEF0FF; border-color: rgba(91,94,232,.18); color: var(--lt-ink-2); }
:root[data-theme="light"] .sticky-col { background: #F8F9FB; }
:root[data-theme="light"] .week-table-day-header.sticky-col { background: #E6E8FE; }
:root[data-theme="light"] .week-table-day-cell { color: var(--lt-ink-2); border-color: var(--lt-line); }
:root[data-theme="light"] .week-table-day-cell.today { background: #EEF0FF; border-color: rgba(91,94,232,.4); box-shadow: none; }
:root[data-theme="light"] .week-table-class-cell { background: var(--lt-inset); border-color: var(--lt-line); }
:root[data-theme="light"] .week-table-class-cell:hover { background: var(--lt-surface-2); }
:root[data-theme="light"] .week-cell-empty { color: #CBD5E1; }
:root[data-theme="light"] .week-cell-class { background: var(--lt-surface); border-color: var(--lt-line); }
:root[data-theme="light"] .week-cell-tag { color: var(--lt-ink-3); background: rgba(91,94,232,.08); }
:root[data-theme="light"] .week-timetable-scroll::-webkit-scrollbar-track { background: var(--lt-surface-2); }

/* ================================================================ settings panel (Profile & Settings) */
:root[data-theme="light"] .settings-panel, :root[data-theme="light"] .settings-header { background: var(--lt-bg); }
:root[data-theme="light"] .settings-panel { box-shadow: 0 -8px 30px rgba(17,24,39,.12); }
:root[data-theme="light"] .settings-header { border-bottom-color: var(--lt-line); }
:root[data-theme="light"] .settings-title, :root[data-theme="light"] .settings-item-title, :root[data-theme="light"] .subscription-status-plan { color: var(--lt-ink); }
:root[data-theme="light"] .settings-close { background: var(--lt-surface); color: var(--lt-ink-3); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .settings-close:hover { background: var(--lt-surface-2); color: var(--lt-ink); }
:root[data-theme="light"] .settings-section-title { color: var(--lt-ink-4); }
:root[data-theme="light"] .settings-item, :root[data-theme="light"] .subscription-status-card { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .settings-item:hover { background: #FAFAFB; }
:root[data-theme="light"] .settings-item-desc, :root[data-theme="light"] .subscription-status-label, :root[data-theme="light"] .subscription-status-meta,
:root[data-theme="light"] #fontSizeDesc, :root[data-theme="light"] #fontSizeDescDesktop { color: var(--lt-ink-4); }
:root[data-theme="light"] .subscription-status-pill { background: var(--lt-surface-2); color: var(--lt-ink-3); }
:root[data-theme="light"] .subscription-status-pill.active { background: rgba(22,163,74,.1); color: #15803D; }
:root[data-theme="light"] .subscription-status-pill.required { background: rgba(217,119,6,.12); color: #B45309; }
:root[data-theme="light"] .subscription-status-btn.secondary, :root[data-theme="light"] .settings-button.secondary { background: var(--lt-surface); color: var(--lt-ink-2); border-color: var(--lt-line-strong); }
:root[data-theme="light"] .toggle-switch { background: #D1D5DB; }
:root[data-theme="light"] .toggle-switch.active { background: var(--lt-brand); }
:root[data-theme="light"] .settings-divider { background: var(--lt-line); }
:root[data-theme="light"] .font-size-btn { background: var(--lt-surface); border-color: var(--lt-line); }
:root[data-theme="light"] .font-size-btn:hover { background: var(--lt-surface-2); }
:root[data-theme="light"] .font-size-btn.active { background: rgba(91,94,232,.08); border-color: var(--lt-brand); }
:root[data-theme="light"] .font-size-label, :root[data-theme="light"] .font-size-btn.active .font-size-name { color: var(--lt-ink-3); }
:root[data-theme="light"] .font-size-name { color: var(--lt-ink-4); }
:root[data-theme="light"] .font-size-btn.active .font-size-label { color: var(--lt-brand); }
:root[data-theme="light"] #fontSizeSlider::-webkit-slider-runnable-track { background: linear-gradient(to right, #818cf8 0%, #818cf8 var(--slider-percent, 50%), #E5E7EB var(--slider-percent, 50%), #E5E7EB 100%); }
:root[data-theme="light"] #fontSizeSlider::-moz-range-track { background: #E5E7EB; }
/* inline-styled blocks inside the settings panels (About / Developers / desktop header) */
:root[data-theme="light"] [style*="rgba(15, 15, 15, 0.6)"] { background: var(--lt-surface) !important; }
/* inline text colours: only on elements WITHOUT their own inline background (gradient pills, the app
   hand-off button etc. keep their white text) */
:root[data-theme="light"] [style*="color: #9CA3AF" i]:not([style*="background"]) { color: var(--lt-ink-3) !important; }
:root[data-theme="light"] [style*="color: #6B7280" i]:not([style*="background"]) { color: var(--lt-ink-4) !important; }
:root[data-theme="light"] [style*="color: #E5E7EB" i]:not([style*="background"]),
:root[data-theme="light"] [style*="color: #fff;" i]:not([style*="background"]),
:root[data-theme="light"] [style*="color: #ffffff" i]:not([style*="background"]),
:root[data-theme="light"] [style*="color: white" i]:not([style*="background"]) { color: var(--lt-ink) !important; }
:root[data-theme="light"] #fontSizeSlider, :root[data-theme="light"] #fontSizeSliderDesktop { background: #E5E7EB !important; }
/* legacy modal cards (teacher / contact / CR card): the tinted header is square while the card is rounded;
   invisible on dark, visible on light -> round the header's top corners like the card */
:root[data-theme="light"] .modal > .rounded-2xl > div:first-of-type { border-top-left-radius: 1rem; border-top-right-radius: 1rem; }
:root[data-theme="light"] .modal > .rounded-3xl > div:first-of-type { border-top-left-radius: 1.5rem; border-top-right-radius: 1.5rem; }
/* booking form picker: the search row is kept above the options with an inline background */
:root[data-theme="light"] [style*="background: #141414"] { background: var(--lt-surface) !important; }
:root[data-theme="light"] .rs-select-search, :root[data-theme="light"] [style*="background: #0A0A0A" i] { background: var(--lt-inset) !important; color: var(--lt-ink); }
:root[data-theme="light"] .rs-select-search::placeholder { color: #9CA3AF; }
:root[data-theme="light"] [style*="background: rgba(107, 114, 128, 0.1)"] { background: var(--lt-surface-2) !important; }

/* ================================================================ desktop (desktop-styles.css) */
@media (min-width: 1024px) {
  :root[data-theme="light"] body { background: var(--lt-bg) !important; }
  :root[data-theme="light"] .desktop-sidebar { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: 4px 0 20px rgba(17,24,39,.05); }
  :root[data-theme="light"] .desktop-nav-section:not(:last-child), :root[data-theme="light"] .desktop-brand { border-bottom-color: var(--lt-line); }
  :root[data-theme="light"] .desktop-nav-item { color: var(--lt-ink-3); }
  :root[data-theme="light"] .desktop-nav-item:hover { background: rgba(91,94,232,.07); color: var(--lt-ink); }
  :root[data-theme="light"] .desktop-nav-item.active { background: linear-gradient(135deg, rgba(59,130,246,.10) 0%, rgba(147,51,234,.10) 100%); color: var(--lt-ink); }
  :root[data-theme="light"] .desktop-nav-item.active i { color: var(--lt-violet); }
  :root[data-theme="light"] .desktop-settings-btn i { color: var(--lt-ink-3); }
  :root[data-theme="light"] .desktop-settings-panel { background: var(--lt-bg); border-color: var(--lt-line); box-shadow: var(--lt-shadow-3); }
  :root[data-theme="light"] .desktop-header { border-bottom-color: var(--lt-line); }
  :root[data-theme="light"] .desktop-header-title h1 { background: linear-gradient(135deg, #111827 0%, #4B5563 100%); -webkit-background-clip: text; background-clip: text; }
  :root[data-theme="light"] .desktop-header-subtitle { color: var(--lt-ink-3); }
  :root[data-theme="light"] .schedule-card:hover, :root[data-theme="light"] .stat-card:hover, :root[data-theme="light"] .day-card:hover,
  :root[data-theme="light"] .empty-room-simple-card:hover, :root[data-theme="light"] .action-btn:hover, :root[data-theme="light"] .class-card-simple:hover { box-shadow: var(--lt-shadow-2); }
  :root[data-theme="light"] ::-webkit-scrollbar-track { background: var(--lt-bg); }
  :root[data-theme="light"] ::-webkit-scrollbar-thumb { border-color: var(--lt-bg); }
}

/* ================================================================ platform (platform.css hard-coded colours) */
:root[data-theme="light"] #platformRoot { color: var(--rs-ink); }
:root[data-theme="light"] .rs-card { box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .rs-chip.is-on, :root[data-theme="light"] .rs-role--cr, :root[data-theme="light"] .rs-badge--role,
:root[data-theme="light"] .rs-today-card .next { color: var(--lt-brand-ink); }
:root[data-theme="light"] .rs-chip.is-on { border-color: rgba(91,94,232,.35); }
:root[data-theme="light"] .rs-role--co_cr { background: rgba(124,58,237,.10); color: #6D28D9; }
:root[data-theme="light"] .rs-due--today, :root[data-theme="light"] .rs-today-card .now { color: #854D0E; }
:root[data-theme="light"] .rs-due--tomorrow { color: #92400E; }
:root[data-theme="light"] .rs-due--overdue, :root[data-theme="light"] .rs-help.is-bad, :root[data-theme="light"] .rs-menu button.is-danger,
:root[data-theme="light"] .rs-btn--danger { color: #B91C1C; }
:root[data-theme="light"] .rs-btn--danger { border-color: rgba(220,38,38,.3); }
:root[data-theme="light"] .rs-banner { border-color: rgba(2,132,199,.25); }
:root[data-theme="light"] .rs-banner--warning { background: #FFFBEB; border-color: rgba(217,119,6,.35); }
:root[data-theme="light"] .rs-banner--critical { background: #FEF2F2; border-color: rgba(220,38,38,.3); }
:root[data-theme="light"] .rs-banner--ok { border-color: rgba(22,163,74,.3); }
:root[data-theme="light"] .rs-sync-banner { background: #F0F9FF; border-color: rgba(2,132,199,.25); color: var(--lt-ink); }
:root[data-theme="light"] .rs-sync-banner.is-done { background: #F0FDF4; border-color: rgba(22,163,74,.3); }
:root[data-theme="light"] .rs-sync-banner.is-error { background: #FFFBEB; border-color: rgba(217,119,6,.35); }
:root[data-theme="light"] .rs-sync-banner button { color: var(--lt-brand-ink); }
:root[data-theme="light"] .rs-sync-banner .x { color: var(--lt-ink-4); }
:root[data-theme="light"] .rs-roomtabs { background: var(--lt-surface); border-color: var(--lt-line); box-shadow: var(--lt-shadow-1); }
:root[data-theme="light"] .rs-roomtabs button { color: var(--lt-ink-3); }
:root[data-theme="light"] .rs-roomtabs button.is-on { color: #fff; }
:root[data-theme="light"] .rs-cr { background: radial-gradient(circle at 100% 0%, rgba(91,94,232,.10), transparent 45%), var(--rs-surface); border-color: rgba(91,94,232,.28); }
:root[data-theme="light"] .rs-check__row.is-done .rs-check__dot { color: #fff; }
:root[data-theme="light"] .rs-reviews-pill { color: #854D0E; }
:root[data-theme="light"] .rs-reviews-pill i, :root[data-theme="light"] .rs-star.is-on i { color: #CA8A04; }
:root[data-theme="light"] .rs-att.is-bad .rs-att__sub { color: #DC2626; }
:root[data-theme="light"] .rs-sheet { box-shadow: 0 -10px 40px rgba(17,24,39,.14); }
:root[data-theme="light"] .rs-scrim, :root[data-theme="light"] .rs-sheet-backdrop { background: rgba(17,24,39,.32); }
/* routine planner grid (planner.js injected CSS): deeper text on the pale fills */
:root[data-theme="light"] .rs-pg__c--busy { color: #0369A1; background: rgba(14,165,233,.12); }
:root[data-theme="light"] .rs-pg__c--both { color: #047857; }
/* the PDF / image viewers stay dark on purpose (documents and photos read best on black) */

/* ==== generated Tailwind block: BEGIN (scripts/theme/gen_light.py) ==== */
:root[data-theme="light"] .bg-\[\#181A1B\] { background-color: var(--lt-bg); }
:root[data-theme="light"] .bg-\[\#181a1b\] { background-color: var(--lt-bg); }
:root[data-theme="light"] .bg-\[\#181a1b\]\/95 { background-color: rgba(245,246,248,.92); }
:root[data-theme="light"] .bg-\[\#0A0A0A\] { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-\[\#1A1A1A\] { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-\[\#1A1A1A\]\/80 { background-color: rgba(255,255,255,.92); }
:root[data-theme="light"] .bg-\[\#1A1A1A\]\/95 { background-color: rgba(255,255,255,.97); }
:root[data-theme="light"] .bg-\[\#2A2A2A\] { background-color: var(--lt-surface-2); }
:root[data-theme="light"] .bg-\[\#282d33\] { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-\[\#1e2122\] { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-\[\#1A1D1E\]\/50 { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-\[\#141414\] { background-color: var(--lt-surface); }
:root[data-theme="light"] .active\:bg-\[\#2A2A2A\]:active { background-color: var(--lt-hover); }
:root[data-theme="light"] .bg-black\/40 { background-color: var(--lt-surface-2); }
:root[data-theme="light"] .hover\:bg-\[\#2A2A2A\]:hover { background-color: var(--lt-hover); }
:root[data-theme="light"] .hover\:bg-\[\#3A3A3A\]:hover { background-color: var(--lt-hover); }
:root[data-theme="light"] .bg-gray-900 { background-color: var(--lt-surface); }
:root[data-theme="light"] .bg-gray-900\/95 { background-color: rgba(255,255,255,.97); }
:root[data-theme="light"] .bg-gray-900\/40 { background-color: rgba(17,24,39,.03); }
:root[data-theme="light"] .bg-gray-800 { background-color: var(--lt-surface-2); }
:root[data-theme="light"] .bg-gray-800\/50 { background-color: rgba(17,24,39,.04); }
:root[data-theme="light"] .bg-gray-800\/30 { background-color: rgba(17,24,39,.03); }
:root[data-theme="light"] .bg-gray-700 { background-color: var(--lt-line); }
:root[data-theme="light"] .hover\:bg-gray-800\/50:hover { background-color: rgba(17,24,39,.06); }
:root[data-theme="light"] .hover\:bg-gray-700\/50:hover { background-color: rgba(17,24,39,.07); }
:root[data-theme="light"] .hover\:bg-gray-700:hover { background-color: var(--lt-line); }
:root[data-theme="light"] .bg-white\/5 { background-color: rgba(17,24,39,.03); }
:root[data-theme="light"] .bg-white\/10 { background-color: rgba(17,24,39,.05); }
:root[data-theme="light"] .bg-white\/15 { background-color: rgba(17,24,39,.07); }
:root[data-theme="light"] .bg-white\/20 { background-color: rgba(17,24,39,.08); }
:root[data-theme="light"] .hover\:bg-white\/20:hover { background-color: rgba(17,24,39,.08); }
:root[data-theme="light"] .hover\:bg-white\/30:hover { background-color: rgba(17,24,39,.11); }
:root[data-theme="light"] .border-\[\#2A2A2A\] { border-color: var(--lt-line); }
:root[data-theme="light"] .border-\[\#1F1F1F\] { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-800 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-800\/50 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-800\/70 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-800\/30 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-700 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-700\/50 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-600 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-gray-600\/30 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-white\/5 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-white\/10 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-white\/15 { border-color: var(--lt-line); }
:root[data-theme="light"] .border-\[\#181a1b\] { border-color: var(--lt-surface); }
:root[data-theme="light"] .text-white { color: var(--lt-ink); }
:root[data-theme="light"] .text-white\/90 { color: var(--lt-ink-2); }
:root[data-theme="light"] .text-white\/70 { color: var(--lt-ink-3); }
:root[data-theme="light"] .hover\:text-white:hover { color: var(--lt-ink); }
:root[data-theme="light"] .group:hover .group-hover\:text-white { color: var(--lt-ink); }
:root[data-theme="light"] .text-gray-100 { color: var(--lt-ink); }
:root[data-theme="light"] .text-gray-200 { color: var(--lt-ink); }
:root[data-theme="light"] .text-\[\#e5e7eb\] { color: var(--lt-ink-2); }
:root[data-theme="light"] .text-gray-300 { color: var(--lt-ink-2); }
:root[data-theme="light"] .text-gray-400 { color: var(--lt-ink-3); }
:root[data-theme="light"] .text-\[\#aaa\] { color: var(--lt-ink-3); }
:root[data-theme="light"] .text-\[\#9ca3af\] { color: var(--lt-ink-3); }
:root[data-theme="light"] .text-gray-500 { color: var(--lt-ink-4); }
:root[data-theme="light"] .text-gray-600 { color: var(--lt-ink-4); }
:root[data-theme="light"] .text-purple-300 { color: #6D28D9; }
:root[data-theme="light"] .text-purple-400 { color: #7C3AED; }
:root[data-theme="light"] .text-purple-500 { color: #7C3AED; }
:root[data-theme="light"] .text-\[\#818cf8\] { color: #4F46E5; }
:root[data-theme="light"] .text-blue-300 { color: #1D4ED8; }
:root[data-theme="light"] .text-blue-400 { color: #2563EB; }
:root[data-theme="light"] .hover\:text-blue-300:hover { color: #1D4ED8; }
:root[data-theme="light"] .text-cyan-400 { color: #0E7490; }
:root[data-theme="light"] .text-red-100 { color: #991B1B; }
:root[data-theme="light"] .text-red-200 { color: #991B1B; }
:root[data-theme="light"] .text-red-300 { color: #B91C1C; }
:root[data-theme="light"] .text-red-400 { color: #DC2626; }
:root[data-theme="light"] .text-green-400 { color: #15803D; }
:root[data-theme="light"] .text-amber-200 { color: #92400E; }
:root[data-theme="light"] .text-amber-300 { color: #B45309; }
:root[data-theme="light"] .text-amber-400 { color: #B45309; }
:root[data-theme="light"] .text-amber-400\/60 { color: rgba(180,83,9,.75); }
:root[data-theme="light"] .text-yellow-200 { color: #854D0E; }
:root[data-theme="light"] .text-pink-300 { color: #BE185D; }
:root[data-theme="light"] .text-pink-400 { color: #DB2777; }
:root[data-theme="light"] .text-orange-400 { color: #C2410C; }
:root[data-theme="light"] .placeholder-gray-500::placeholder { color: #9CA3AF; }
:root[data-theme="light"] .from-purple-900\/20 { --tw-gradient-from: #F5F3FF var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-purple-900\/30 { --tw-gradient-from: #EDE9FE var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-blue-900\/20 { --tw-gradient-from: #EFF6FF var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-pink-900\/20 { --tw-gradient-from: #FDF2F8 var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-gray-900\/30 { --tw-gradient-from: #F9FAFB var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-gray-900 { --tw-gradient-from: #FFFFFF var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .from-\[\#1A1A1A\] { --tw-gradient-from: #FFFFFF var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .hover\:from-purple-900\/20:hover { --tw-gradient-from: #EDE9FE var(--tw-gradient-from-position); --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); }
:root[data-theme="light"] .to-blue-900\/20 { --tw-gradient-to: #EFF6FF var(--tw-gradient-to-position); }
:root[data-theme="light"] .to-blue-900\/30 { --tw-gradient-to: #DBEAFE var(--tw-gradient-to-position); }
:root[data-theme="light"] .to-purple-900\/20 { --tw-gradient-to: #F5F3FF var(--tw-gradient-to-position); }
:root[data-theme="light"] .to-gray-800\/30 { --tw-gradient-to: #F3F4F6 var(--tw-gradient-to-position); }
:root[data-theme="light"] .to-black { --tw-gradient-to: #F3F4F6 var(--tw-gradient-to-position); }
:root[data-theme="light"] .to-\[\#0F0F0F\] { --tw-gradient-to: #F3F4F6 var(--tw-gradient-to-position); }
:root[data-theme="light"] .hover\:to-blue-900\/20:hover { --tw-gradient-to: #DBEAFE var(--tw-gradient-to-position); }
/* inside a saturated background (gradient buttons, badges, avatars, overlays) light text stays light */
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-white,
:root[data-theme="light"] .text-white:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #fff; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-white\/90,
:root[data-theme="light"] .text-white\/90:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: rgba(255,255,255,.9); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-white\/70,
:root[data-theme="light"] .text-white\/70:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: rgba(255,255,255,.7); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .hover\:text-white:hover,
:root[data-theme="light"] .hover\:text-white:hover:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #fff; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .group:hover .group-hover\:text-white { color: #fff; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-gray-100,
:root[data-theme="light"] .text-gray-100:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #F3F4F6; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-gray-200,
:root[data-theme="light"] .text-gray-200:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #E5E7EB; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-gray-300,
:root[data-theme="light"] .text-gray-300:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #D1D5DB; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-red-100,
:root[data-theme="light"] .text-red-100:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #FEE2E2; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-red-200,
:root[data-theme="light"] .text-red-200:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #FECACA; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-amber-200,
:root[data-theme="light"] .text-amber-200:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #FDE68A; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-yellow-200,
:root[data-theme="light"] .text-yellow-200:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #FEF08A; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-\[\#e5e7eb\],
:root[data-theme="light"] .text-\[\#e5e7eb\]:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #E5E7EB; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .text-gray-400,
:root[data-theme="light"] .text-gray-400:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { color: #9CA3AF; }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .bg-white\/10,
:root[data-theme="light"] .bg-white\/10:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.1); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .bg-white\/15,
:root[data-theme="light"] .bg-white\/15:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.15); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .bg-white\/20,
:root[data-theme="light"] .bg-white\/20:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.2); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .hover\:bg-white\/20:hover,
:root[data-theme="light"] .hover\:bg-white\/20:hover:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.2); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .hover\:bg-white\/30:hover,
:root[data-theme="light"] .hover\:bg-white\/30:hover:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.3); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .bg-white\/5,
:root[data-theme="light"] .bg-white\/5:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { background-color: rgba(255,255,255,.05); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .border-white\/5,
:root[data-theme="light"] .border-white\/5:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { border-color: rgba(255,255,255,.05); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .border-white\/10,
:root[data-theme="light"] .border-white\/10:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { border-color: rgba(255,255,255,.1); }
:root[data-theme="light"] :is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) .border-white\/15,
:root[data-theme="light"] .border-white\/15:is([class~="from-purple-600"], [class~="from-purple-500"], [class~="from-amber-500"], [class~="from-blue-600"], [class~="from-green-600"], [class~="from-pink-500"], [class~="from-orange-500"], [class~="from-green-500"], [class~="from-blue-500"], [class~="from-[#667eea]"], [class~="from-[#8b5cf6]"], [class~="from-[#9333ea]"], [class~="bg-green-500"], [class~="bg-green-500/90"], [class~="bg-red-600"], [class~="bg-red-500"], [class~="bg-purple-500"], [class~="bg-orange-500"], [class~="bg-amber-500"], [class~="bg-blue-600"], [class~="bg-blue-500"], [class~="bg-indigo-600"], [class~="hover:bg-[#6366f1]"], .rs-btn--primary, .rs-avatar, .nav-home__disc, .rs-badge, .rs-fab, .day-card.active, .view-toggle-btn.active, .teacher-avatar, .break-card, .next-class-indicator, .stat-icon, .settings-button:not(.secondary), .subscription-status-btn.primary, .week-cell-course, .week-cell-conflict, .overlap-badge, .rs-roomtabs button.is-on, .rs-cb-badge, .rs-cb-fchip.is-on, .app-toast, .rs-pdfv, .rs-imgviewer, #rsHandoff, .access-check-shell) { border-color: rgba(255,255,255,.15); }
/* ==== generated Tailwind block: END ==== */

/* ================================================================ theme switch animation */
::view-transition-old(root), ::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
/* during the circle reveal the new theme must appear finished: element transitions (many legacy cards use
   `transition: all`) would otherwise fade from the old colours inside the circle */
:root.rs-theme-switching *, :root.rs-theme-switching *::before, :root.rs-theme-switching *::after { transition: none !important; }
::view-transition-old(root) { z-index: 1; }
::view-transition-new(root) { z-index: 2; }
:root.rs-theme-fade, :root.rs-theme-fade *, :root.rs-theme-fade *::before, :root.rs-theme-fade *::after {
  transition: background-color 280ms ease, color 280ms ease, border-color 280ms ease, box-shadow 280ms ease, fill 280ms ease !important;
}
