diff --git a/css/content.css b/css/content.css index 2fc904e..162e7ee 100644 --- a/css/content.css +++ b/css/content.css @@ -58,12 +58,8 @@ font-size: 12px; padding-inline: 6px; } -/* The native date/time picker icons are themed in dark mode only via - color-scheme (see DARKMODE_CSS in css/darkmodecss.js); light mode keeps the - default dark glyphs on the light surface. */ +/* picker icons are themed via color-scheme only in dark mode (see darkmodecss.js) */ .canvasrefined-custom-btn {background: #f5f5f5; border: 1px solid #c7cdd1; border-radius:6px; padding: 2px 8px;} -/* Better sidebar buttons sit on the --bcsidebar surface and use --bcsidebar-text - for labels/icons, so drop the light button chrome and use a subtle hover tint. */ .better-sidebar-btn {background: transparent !important; border-color: transparent !important;} .better-sidebar-btn:hover {background: color-mix(in srgb, var(--bcsidebar-text) 14%, transparent) !important;} .canvasrefined-viewmore-btn {display: block;margin:0 auto;margin-top: 8px;} @@ -148,8 +144,6 @@ .canvasrefined-todo-action {border-radius: 5px;} .canvasrefined-todo-actions {position: absolute; top: 0; right: 0; background: #fff;width:110px;font-weight:bold; color:#000;display:none;z-index:1000;border-radius:3px;border: 1px solid #c7cdd1;padding:10px} .canvasrefined-todo-actions-btn { border:1px solid transparent; height: 20px;width: 20px;background: none;padding: 0;margin: 0;border-radius:3px;} -/*.canvasrefined-dots-icon {display: block!important;} -.canvasrefined-todo-actions-btn:hover {background: #f5f5f5; border:1px solid #c7cdd1;}*/ .canvasrefined-todo-action, .canvasrefined-todo-action-tag { padding: 4px; margin: -2px 0;display:flex;justify-content: space-between;align-items:center;} .canvasrefined-todo-action:hover {background: #f5f5f5;cursor:pointer} .canvasrefined-todo-input {width: 100%!important;box-sizing: border-box!important;border-radius: 5px!important;height: 24px!important;padding:4px!important;margin:0!important;font-size:12px!important} @@ -159,7 +153,6 @@ .canvasrefined-todo-svg {fill:#2d3b45!important} #canvasrefined-update-msg {margin-top: 5px; display: flex; justify-content: space-between; font-size:15px;background: linear-gradient(115deg, rgb(255, 53, 88, .9), rgb(255, 131, 73, .9), rgb(255, 103, 187, .9)); color: #fff; border-radius:4px; padding: 20px;white-space: pre-line;} -/* Detected-canvas prompt — centered modal with backdrop so it can't be missed */ #canvasrefined-domain-prompt-backdrop {position: fixed!important;inset: 0!important;width: 100%!important;height: 100%!important;background: rgb(0 0 0 / 60%)!important;z-index: 2147483647!important;display: flex!important;align-items: center!important;justify-content: center!important;} #canvasrefined-domain-prompt {background: #fff!important;border-radius: 14px!important;padding: 24px 28px!important;max-width: 460px!important;width: 90%!important;box-sizing: border-box!important;box-shadow: 0 12px 48px rgb(0 0 0 / 45%)!important;animation: .25s ease canvasrefined-pop;} @keyframes canvasrefined-pop {0% {transform: scale(.9);opacity: 0} 100% {transform: scale(1);opacity: 1}} @@ -195,7 +188,6 @@ } } -/* ===== Dashboard notes (Markdown) ===== */ .canvasrefined-notes-toolbar {display:flex;flex-wrap:wrap;gap:2px;padding:6px 8px;align-items:center;background:var(--bcbackground-2,#f5f7f8);border-bottom:1px solid var(--bcborders,#c7cdd1);} .cr-fmt {border:1px solid transparent;background:transparent;color:var(--bctext-1,#5b6770);font:inherit;font-size:13px;line-height:1;padding:5px 7px;border-radius:4px;cursor:pointer;} .cr-fmt:hover {background:var(--bcbackground-1,rgba(0,0,0,.06));color:var(--bctext-0,#2d3b45);} @@ -232,7 +224,6 @@ .canvasrefined-dashboard-notes:not(.is-editing) .canvasrefined-notes-toolbar {display:none;} .canvasrefined-dashboard-notes.is-editing .canvasrefined-notes-rendered {display:none;} .canvasrefined-dashboard-notes:not(.is-editing) .canvasrefined-notes-editor {display:none;} -/* Quiz safe mode banner (pre-quiz pages) */ .canvasrefined-quiz-safe-banner { box-sizing: border-box; margin: 16px 0; @@ -281,15 +272,12 @@ } .canvasrefined-quiz-safe-dismiss:hover { background: #ececec; } -/* ===== Global Canvas Search ===== */ -/* Native global-nav search item — matches Canvas' own nav links. */ .canvasrefined-gs-nav-item { list-style: none; } .canvasrefined-gs-nav-item .ic-app-header__menu-list-link { cursor: pointer; } .canvasrefined-gs-nav-item .menu-item-icon-container svg { width: 26px; height: 26px; } .canvasrefined-gs-nav-item:hover .ic-app-header__menu-list-link { background: #0000004f !important; } .canvasrefined-gs-nav-item .menu-item__text { font-size: 12px; } -/* Dashboard header trigger — sits just left of the \u22ee options button. */ .canvasrefined-gs-header-btn { display: inline-flex; align-items: center; gap: 6px; margin-right: 10px; padding: 6px 12px; @@ -382,36 +370,25 @@ padding: 0 4px; color: var(--bctext-1, #5b6770); } -/* ===== Grades table: scale down with narrow windows ===== - Canvas lays out #grades_summary with content-driven auto sizing plus hard - min-widths (title 150px, details 80px) and nowrap cells (due, score, - details), giving it a ~780px floor below which the whole table overflows - the page instead of shrinking. Switch it to fixed layout with percentage - column widths (set on the header row, which drives fixed layout) and let - tight cells wrap, so the header, body and rows all scale with the - viewport. #assignments scrolls horizontally as a last resort (e.g. while a - what-if score input is open). */ +/* Canvas hard-min-widths + nowrap cells give #grades_summary a ~780px floor; + fixed layout with % widths lets it scale with the viewport. */ #grades_summary { table-layout: fixed; width: 100%; } -#grades_summary thead th:nth-child(1) { width: 30%; } /* Name */ -#grades_summary thead th:nth-child(2) { width: 12%; } /* Due */ -#grades_summary thead th:nth-child(3) { width: 10%; } /* Submitted */ -#grades_summary thead th:nth-child(4) { width: 7%; } /* Status */ -#grades_summary thead th:nth-child(5) { width: 11%; } /* Score */ -#grades_summary thead th:nth-child(6) { width: 3%; } /* asset processors */ -#grades_summary thead th:nth-child(7) { width: 15%; } /* Details */ -#grades_summary thead th:nth-child(8) { width: 3%; } /* progress */ +/* columns: Name, Due, Submitted, Status, Score, asset processors, Details, progress */ +#grades_summary thead th:nth-child(1) { width: 30%; } +#grades_summary thead th:nth-child(2) { width: 12%; } +#grades_summary thead th:nth-child(3) { width: 10%; } +#grades_summary thead th:nth-child(4) { width: 7%; } +#grades_summary thead th:nth-child(5) { width: 11%; } +#grades_summary thead th:nth-child(6) { width: 3%; } +#grades_summary thead th:nth-child(7) { width: 15%; } +#grades_summary thead th:nth-child(8) { width: 3%; } #grades_summary td.due, #grades_summary td.assignment_score, #grades_summary td.details { white-space: normal; } #assignments { overflow-x: auto; } -/* Big strikethrough on checked-off tasks (dashboard list view). Canvas keeps - completed planner items looking identical to unfinished ones — the only cue - is the checkbox itself — so when a task's checkbox is checked, strike its - title through with a thick line and dim the row. :has() matches the - checkbox state reactively, so this also applies live at the moment a task - is checked, before Canvas collapses it into the completed-items section. */ +/* Canvas gives no visual cue for a completed planner item; :has() strikes it live. */ .planner-item:has(input[data-testid="planner-item-completed-checkbox"]:checked) { opacity: 0.7; } @@ -422,35 +399,22 @@ text-decoration-thickness: 2.5px !important; } -/* InstUI View (emotion hash css-fkmnqn-view) ships a bottom margin that - leaves a stray gap below the discussion/announcement header card. - Hashed classes can shift between Canvas releases; an unmatched selector - here is simply inert. */ +/* hashed InstUI View class leaving a gap below the header card; may shift between releases */ .css-fkmnqn-view { margin-bottom: 0 !important; } -/* Shared widget container ("Top"/"Bottom" positions): a full-width flex row - holding one slot per widget; slot widths are the % set in the Widgets tab. - Row margins mirror the notes container's original 18/14 spacing. */ +/* one slot per widget; widths are the % set in the Widgets tab */ .canvasrefined-widget-row {display:flex;align-items:stretch;width:100%;box-sizing:border-box;margin:18px 0 14px;column-gap:14px;} .canvasrefined-widget-slot {min-width:0;box-sizing:border-box;display:flex;flex-direction:column;} .canvasrefined-widget-slot > * {width:100%;} -/* Equal height across widgets in the shared container: every slot stretches - to the row height and its widget content fills it top-to-bottom. */ .canvasrefined-widget-slot .canvasrefined-dashboard-notes {width:100%;margin:0;height:100%;display:flex;flex-direction:column;} .canvasrefined-widget-slot .canvasrefined-dashboard-notes .canvasrefined-notes-surface {flex:1;display:flex;flex-direction:column;} .canvasrefined-widget-slot .canvasrefined-dashboard-notes .canvasrefined-notes-editor, .canvasrefined-widget-slot .canvasrefined-dashboard-notes .canvasrefined-notes-rendered {flex:1;overflow:auto;} .canvasrefined-widget-slot .canvasrefined-gpa-card {width:100%;margin:0;box-sizing:border-box;display:block;flex:1 1 auto;min-height:0;} .canvasrefined-widget-slot .canvasrefined-gpa {margin:0;flex:1 1 auto;min-height:0;overflow:auto;} -/* GPA calculator in container mode ("Top"/"Bottom" positions): the elements - are moved outside the card grid, so the collapsed GPA card becomes a wide - container-style card and the expanded calculator keeps full width. */ .canvasrefined-gpa-card.container-mode {width:100%;box-sizing:border-box;margin:0 0 4px;display:block;} .canvasrefined-gpa.container-mode {margin:0 0 18px;} -/* Dashboard notes placed inside the card grid (before/after cards): styled - exactly like the GPA card / Canvas course cards — 262px wide, rounded, - card shadow, and the same 36px gutters so it aligns in the grid. */ .canvasrefined-dashboard-notes.in-cards { width: 262px; min-height: 260px; @@ -466,12 +430,6 @@ .canvasrefined-dashboard-notes.in-cards .canvasrefined-notes-surface {flex: 1; display: flex; flex-direction: column;} .canvasrefined-dashboard-notes.in-cards .canvasrefined-notes-editor, .canvasrefined-dashboard-notes.in-cards .canvasrefined-notes-rendered {flex: 1; resize: none; border: none; outline: none; background: transparent;} -/* Notes placed in the shared widget row get their margins from the row - (see .canvasrefined-widget-slot rules above). */ -/* GPA calculator modal (Edit Calculator button): combines the course - calculator with the grade-scale editor, styled like the global search - modal. */ -/* ===== GPA calculator modal (rebuilt) ===== */ #canvasrefined-gpa-modal { --cr-gpa-course-cols: 30px minmax(0,1fr) 80px 58px 118px 16px minmax(88px,auto); --cr-gpa-accent: var(--ic-brand-primary,#0374b5); @@ -479,7 +437,6 @@ display:flex;align-items:flex-start;justify-content:center;padding:7vh 16px 16px; } .cr-gpa-modal {width:min(1080px,96vw);max-height:86vh;display:flex;flex-direction:column;background:var(--bcbackground-0,#fff);color:var(--bctext-0,#2d3b45);border:1px solid var(--bcborders,#c7cdd1);border-radius:16px;box-shadow:0 24px 70px rgba(0,0,0,.4);overflow:hidden;font-size:13px;} -/* Header: title on the left, live GPA tiles on the right */ .cr-gpa-head {display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 20px;border-bottom:1px solid var(--bcborders,#c7cdd1);} .cr-gpa-head-titles {display:flex;flex-direction:column;gap:2px;margin-right:auto;min-width:140px;} .cr-gpa-title {font-size:17px;font-weight:700;} @@ -490,17 +447,14 @@ .cr-gpa-result-label {font-size:10px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--bctext-2,#9aa3ab);} .cr-gpa-close {display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex:none;border:none;background:transparent;color:inherit;border-radius:8px;cursor:pointer;} .cr-gpa-close:hover {background:rgba(127,127,127,.15);} -/* Body: courses on the left, grade scale on the right; panes scroll alone */ .cr-gpa-body {display:grid;grid-template-columns:minmax(0,2.2fr) minmax(210px,1fr);flex:1;min-height:0;} .cr-gpa-pane {min-width:0;overflow-y:auto;padding:14px 20px 20px;} .cr-gpa-pane-scale {border-left:1px solid var(--bcborders,#c7cdd1);padding-left:14px;} .cr-gpa-pane-head {font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--bctext-2,#9aa3ab);margin:0 0 10px;} -/* Calculator body moved into the modal: neutralize panel chrome */ .cr-gpa-modal .canvasrefined-gpa {display:block!important;margin:0;padding:0;border:none;box-shadow:none!important;overflow:visible;position:static;background:transparent!important;border-radius:0;} .cr-gpa-modal .canvasrefined-gpa .canvasrefined-gpa-header {display:none;} .cr-gpa-modal .canvasrefined-gpa-courses-container {margin:0;width:100%;overflow:visible;} .cr-gpa-modal .canvasrefined-gpa-courses {display:flex;flex-direction:column;min-width:0;width:100%;} -/* Course rows: shared grid so the column headers line up with the rows */ .cr-gpa-colhead, .cr-gpa-modal .canvasrefined-gpa-course, .cr-gpa-modal #canvasrefined-cumulative-gpa {display:grid;grid-template-columns:var(--cr-gpa-course-cols);column-gap:10px;align-items:center;} @@ -508,7 +462,6 @@ .cr-gpa-colhead .cr-gpa-colhead-custom {grid-column:6 / span 2;} .cr-gpa-modal .canvasrefined-gpa-course {padding:7px 8px;border-radius:10px;} .cr-gpa-modal .canvasrefined-gpa-course:hover {background:color-mix(in srgb, var(--bctext-0,#2d3b45) 5%, transparent);} -/* Letter badge: color-coded pill driven by data-grade-letter (set in calculateGPA2) */ .cr-gpa-modal .canvasrefined-gpa-letter-grade {width:auto;margin:0;display:flex;align-items:center;justify-content:center;min-height:26px;padding:0 2px;border-radius:8px;font-size:12px;font-weight:700;background:transparent;color:var(--bctext-0,#2d3b45);} .cr-gpa-modal [data-grade-letter] .canvasrefined-gpa-letter-grade {background:transparent;color:var(--bctext-0,#2d3b45);} .cr-gpa-modal .canvasrefined-gpa-name {margin:0;width:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;} @@ -524,15 +477,12 @@ .cr-gpa-modal .canvasrefined-course-weight:focus {outline:none;border-color:var(--cr-gpa-accent);} .cr-gpa-modal .canvasrefined-course-customgr {margin:0;width:16px;height:16px;accent-color:var(--cr-gpa-accent);cursor:pointer;} .cr-gpa-modal .canvasrefined-course-customgr-label {margin:0;font-size:12px;color:var(--bctext-2,#9aa3ab);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} -/* Cumulative row: pulled to the bottom as an emphasized summary row */ .cr-gpa-modal #canvasrefined-cumulative-gpa {order:100;margin-top:10px;padding:12px 8px 4px;border-top:1px dashed var(--bcborders,#c7cdd1);} .cr-gpa-modal #canvasrefined-cumulative-gpa .canvasrefined-gpa-name {font-weight:700;} -/* Grade scale pane */ .cr-gpa-seg {display:flex;gap:8px;padding:0;background:transparent;margin:0 0 14px;} .cr-gpa-preset {flex:1;border:1px solid var(--bcborders,#c7cdd1);background:transparent;color:var(--bctext-2,#9aa3ab);border-radius:8px;padding:7px 10px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;} .cr-gpa-preset:hover {color:var(--bctext-0,#2d3b45);} .cr-gpa-preset.active {background:var(--bcbackground-0,#fff);color:var(--bctext-0,#2d3b45);border-color:var(--bctext-2,#9aa3ab);} -/* Grade scale rows: letter chip + compact "value + unit" fields */ .cr-gpa-scale-head {display:grid;grid-template-columns:40px 1fr 1fr;gap:8px;padding:0 2px 4px;font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--bctext-2,#9aa3ab);} .cr-gpa-row {display:grid;grid-template-columns:40px 1fr 1fr;gap:8px;align-items:center;padding:2px 0;} .cr-gpa-row:hover {background:color-mix(in srgb, var(--bctext-0,#2d3b45) 4%, transparent);border-radius:8px;} @@ -549,10 +499,6 @@ .cr-gpa-pane-scale {border-left:none;border-top:1px solid var(--bcborders,#c7cdd1);} } -/* ===== Generic dashboard widgets: Focus Timer, Breathing, Quotes ===== - Shared shell follows the same card look as Notes/GPA: 262px grid cell with - the 36px Canvas gutter when placed before/after the course cards, and a - full-width flowing card when placed in the top/bottom container row. */ .canvasrefined-widget-card { width: 262px; min-height: 200px; @@ -583,10 +529,8 @@ .cr-widget-btn {flex:1;border:none;border-radius:8px;padding:9px 12px;font:inherit;font-weight:600;font-size:13px;cursor:pointer;background:var(--ic-brand-primary,#0374b5);color:#fff;} .cr-widget-btn:hover {filter:brightness(1.07);} .cr-widget-btn-ghost {background:transparent;color:var(--bctext-0,#2d3b45);border:1px solid var(--bcborders,#c7cdd1);} -/* Timer engine (Focus Timer + Breathing Breaks) */ .cr-time-box {position:relative;margin:14px 14px 0;border-radius:12px;background:color-mix(in srgb, var(--bctext-0,#2d3b45) 6%, transparent);border:1px solid var(--bcborders,#c7cdd1);overflow:hidden;} -/* The whole time rectangle is the progress bar, tinted with the dark-mode - link color so it matches the active theme in both light and dark mode. */ +/* the time rectangle is the progress bar, tinted with the theme link color */ .cr-time-box .cr-timer-progress-bar {position:absolute;left:0;top:0;bottom:0;width:0;background:color-mix(in srgb, var(--bclinks,#0374b5) 32%, transparent);border-right:2px solid color-mix(in srgb, var(--bclinks,#0374b5) 80%, transparent);} .cr-timer-time {position:relative;z-index:1;font-size:44px;font-weight:700;text-align:center;letter-spacing:.02em;font-variant-numeric:tabular-nums;padding:22px 14px;line-height:1;color:var(--bctext-0,#2d3b45);} .cr-breath-display {padding:12px 14px 6px;} @@ -596,7 +540,7 @@ .cr-timer-preset.active {background:color-mix(in srgb, var(--bclinks,#0374b5) 18%, transparent);border-color:var(--bclinks,#0374b5);color:var(--bclinks,#0374b5);} .cr-timer-custom-row {display:flex;gap:8px;padding:10px 14px 0;align-items:center;} .cr-timer-custom-row[hidden] {display:none;} -/* Compact clock entry: 0 : 00 : 00, click a segment to edit it. */ +/* compact 0 : 00 : 00 entry: click a segment to edit it */ .cr-time-input {display:flex;align-items:center;justify-content:center;gap:1px;flex:1;min-width:0;border:1px solid var(--bcborders,#c7cdd1);border-radius:8px;padding:4px 8px;background:color-mix(in srgb, var(--bctext-0,#2d3b45) 5%, transparent);} .cr-time-input:focus-within {border-color:var(--bclinks,#0374b5);box-shadow:0 0 0 2px color-mix(in srgb, var(--bclinks,#0374b5) 22%, transparent);} .cr-tf {width:2.4ch;min-width:0;border:none;background:transparent;color:var(--bctext-0,#2d3b45);font:inherit;font-size:15px;font-weight:700;line-height:1.2;text-align:center;padding:0;border-radius:4px;} @@ -605,7 +549,7 @@ .cr-tf-colon {font-size:15px;font-weight:700;color:var(--bctext-2,#9aa3ab);padding-bottom:1px;} .cr-timer-custom-row .cr-widget-btn {flex:none;padding:7px 13px;} .cr-timer-controls {display:flex;gap:8px;padding:12px 14px 14px;} -/* Breathing Breaks: 4s in / 6s out, colour shifts green -> blue when exhaling */ +/* 4s in / 6s out; colour shifts green -> blue while exhaling */ .canvasrefined-breathing {background:linear-gradient(160deg, color-mix(in srgb, #6ea8ff 14%, var(--bcbackground-1,#fff)), var(--bcbackground-1,#fff));} .cr-breath-stage {display:flex;align-items:center;justify-content:center;padding:20px 14px 6px;} .cr-breath-circle {position:relative;width:112px;height:112px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%, #74e3c4, #2fb595);box-shadow:0 0 18px 2px rgba(65,209,175,.4);} @@ -635,8 +579,6 @@ .canvasrefined-breathing.is-running .cr-breath-phase-out {animation: cr-breath-out-label 10s ease-in-out infinite;} @keyframes cr-breath-in-label {0%{opacity:1;}38%{opacity:1;}44%{opacity:0;}100%{opacity:0;}} @keyframes cr-breath-out-label {0%{opacity:0;}38%{opacity:0;}44%{opacity:1;}94%{opacity:1;}100%{opacity:0;}} -/* Breathing layout: circle + time stacked above the controls (card mode), and - circle + time on the left with the controls on the right in Top/Bottom rows. */ .cr-breath-layout {display:flex;flex-direction:column;flex:1;min-height:0;} .cr-breath-left {display:flex;flex-direction:column;align-items:center;justify-content:center;} .cr-breath-right {display:flex;flex-direction:column;justify-content:center;} @@ -646,8 +588,6 @@ .canvasrefined-breathing.container-mode .cr-breath-stage {padding:8px 0;} .canvasrefined-breathing.container-mode .cr-timer-presets {padding-top:0;} .canvasrefined-breathing.container-mode .cr-timer-controls {padding-bottom:0;} -/* Daily Quote: text scales with the widget's own width (small grid cell vs. - full-width container row), using container-query units. */ .canvasrefined-quotes {container-type:inline-size;background:linear-gradient(150deg, color-mix(in srgb, #b98cff 14%, var(--bcbackground-1,#fff)), var(--bcbackground-1,#fff));} .cr-quote-body {padding:clamp(12px,4.5cqw,26px);display:flex;flex-direction:column;gap:clamp(4px,1.6cqw,12px);flex:1;justify-content:center;} .cr-quote-mark {font-size:clamp(20px,11cqw,44px);line-height:.5;font-weight:800;color:color-mix(in srgb, var(--bclinks,#0374b5) 55%, transparent);} diff --git a/css/darkmodecss.js b/css/darkmodecss.js index d8a5f58..c0da9f9 100644 --- a/css/darkmodecss.js +++ b/css/darkmodecss.js @@ -757,7 +757,6 @@ h6, .canvasrefined-todo-actions, .css-md78hg-colHeader, .css-ywdg6k-view-rowHeader, -/* Assignment page rubric styling */ [data-testid="rubric-assessment-traditional-view"] > div:first-of-type [class$="-text"], [id^="rubric-header-"] [class$="-text"], [data-testid="rubric-assessment-traditional-view"] tbody tr td:first-child > div > div:first-child [class$="-text"] { @@ -990,7 +989,6 @@ ul#question_list li.current_question, [data-testid="rubric-tab"] [class$="-baseButton__content"], [data-testid="rubric-tab"] [class$="-text"], button[data-cid~="CloseButton"] > [class$="-baseButton__content"], -/* sidebar course listing */ .css-8bodfv-text { color:var(--bctext-2)!important } @@ -1217,43 +1215,27 @@ hr { .event-details strong { color: var(--bctext-0) !important; } -/* Theme the native date/time picker icons so they stay visible on the dark - sidebar surface. Applied in dark mode only — light mode keeps the default - dark glyphs (see css/content.css). - color-scheme: dark is the cross-browser way to flip the native picker icon - to a light glyph. Firefox 109+ ignores ::-webkit-calendar-picker-indicator - (the icon lives in a closed Shadow DOM), so a filter alone does nothing - there; color-scheme fixes both Firefox and modern Chrome. Do NOT also apply - an invert filter — color-scheme already makes the glyph light, and inverting - would flip it back to dark in Chrome. */ +/* color-scheme flips the native picker glyph; Firefox ignores the webkit + pseudo-element, so don't also invert it. */ #better-todo-new-task-date, #better-todo-new-task-time { color-scheme: dark !important; color: var(--bctext-0) !important; } -/* Dashboard list view header (Today / Add To Do / Show My Grades / - opportunities): Canvas paints the icon glyphs a dark ink color that - disappears on the dark glass header bar. Recolor the header text and - its icon SVGs to the theme text color. */ +/* header glyphs are painted dark ink; recolor text + icon SVGs */ .PlannerHeader-styles__root { color: var(--bctext-0) !important; } .PlannerHeader-styles__root svg { fill: var(--bctext-0) !important; } -/* The "Today" button's label span carries Canvas's dark ink color from its - emotion class, which beats the inherited root color above — dark text on - the dark header bar. Force the whole button chain to the theme text color. */ +/* the label span's emotion class out-specifies the inherited color */ .PlannerHeader-styles__root button, .PlannerHeader-styles__root button span { color: var(--bctext-0) !important; } -/* Solid themed surfaces for the header buttons. Canvas leaves the icon - buttons (Add To Do / Show My Grades / opportunities) fully transparent - and paints the Today button an unthemed color — on the dark header bar - they need solid backgrounds to read as buttons. #planner-today-btn:hover - is listed separately because the ID selector on the base background rule - above would otherwise out-specify the class-only :hover rule. */ +/* icon buttons are transparent and Today is unthemed; both need a surface. + The :hover rule is split out because the ID rule would out-specify it. */ .PlannerHeader-styles__root button { background: var(--bcbackground-1) !important; border: 1px solid var(--bcborders) !important; @@ -1263,57 +1245,36 @@ hr { #planner-today-btn:hover { background: var(--bcbackground-2) !important; } -/* The "Today" button keeps its filled surface (from the rule above) but - gets no outline. Two borders were boxing it in: the themed border the - rule above paints on the button itself, and — the sneaky one — - Instructure's Button variant draws its own light-gray border - (rgb(232,234,236)) on the inner [class$="-baseButton__content"] span, - which reads as a bright 1px ring on the dark chip. The icon buttons' - content spans carry no border, so only Today needs this. Transparent - (instead of border: none) keeps the button's exact dimensions. */ +/* InstUI draws its own light border on the inner baseButton__content span; + transparent instead of none keeps the button's size. */ #planner-today-btn, #planner-today-btn [class$="-baseButton__content"] { border-color: transparent !important; } -/* Instructure's Button variant paints its inner content span white (and a - light gray on hover / white + inset shadow on active). That span covers - the themed button background painted above, so the "Today" button still - rendered as a white box. Flatten the content span in every state so the - button's own surface shows through. */ +/* the content span paints white in every state, hiding the themed surface */ .PlannerHeader-styles__root button [class$="-baseButton__content"], .PlannerHeader-styles__root button:hover [class$="-baseButton__content"], .PlannerHeader-styles__root button:active [class$="-baseButton__content"] { background: transparent !important; box-shadow: none !important; } -/* InstUI Button whose inner content span ships a light background and its - own border, which reads as a bright chip on the dark theme. Paint it with - the themed button surface, drop the border entirely, and force the theme - text color: Canvas sets its own dark ink color on the content span, which - left labels/icons dark-on-dark inside the dark chip. */ +/* content span ships a light background + border and sets dark ink */ .css-1ta5ds2-baseButton__content { background: var(--bcbackground-1) !important; border: none !important; color: var(--bctext-0) !important; } -/* Dashboard list-view trays ("Add To Do" / "My Grades" opened from the - header buttons): Instructure UI renders Tray panels as body-level - portals — body > span > span[...-tray] — with a hardcoded white - background. Paint the tray panel with the theme background; the tray - contents already pick up the theme text color. */ +/* trays are body-level portals (body > span > span[...-tray]) with a hardcoded + white background */ body > span > span[class*="-tray"] { background: var(--bcbackground-0) !important; } -/* The Add To Do form ships its own