3 // The home for small tweaks to modules that don't require
4 // changes drastic enough to pull in the full module css
5 // and replace it completely
6 // Plus some misc. odds and ends
15 .horizontal .choices .option {
16 display: inline-block;
21 .choices .option label {
26 .path-mod-feedback .feedback_form .col-form-label {
27 display: block !important; /* stylelint-disable-line declaration-no-important */
31 .path-mod-feedback .itemactions {
34 .path-mod-feedback .itemhandle {
41 .path-mod-forum .forumsearch {
48 .path-mod-forum .forumheaderlist,
49 .path-mod-forum .forumheaderlist td {
56 tbody .discussion td {
68 thead .header.replies {
72 thead .header.lastpost {
77 tbody .discussion td {
78 &.discussionsubscription {
91 .discussionsubscription,
97 .discussionsubscription,
108 // Do not use the default bold style for the table headings.
109 font-weight: inherit;
113 // Style for the forum subscription mode node.
118 // Style for the currently selected subscription mode.
125 .discussion-settings-container {
136 border: $border-width solid $border-color;
173 .forumpost .row .left {
177 .forumpost .options .commands {
181 .forumpost .subject {
185 // Override hardcoded forum modules styling
186 .forumsearch input[type=text] {
190 #page-mod-forum-view {
200 text-overflow: ellipsis;
204 max-width: calc(100% - 35px - .5rem);
210 #page-mod-forum-discuss .discussioncontrols {
219 $author-image-width: 70px;
220 $author-image-margin: 24px;
221 $author-image-width-sm: 30px;
222 $author-image-margin-sm: 8px;
224 /** Gently highlight the selected post by changing it's background to blue and then fading it out. */
225 @keyframes background-highlight {
227 background-color: rgba(0, 123, 255, 0.5);
230 background-color: inherit;
234 .path-mod-forum .nested-v2-display-mode,
235 .path-mod-forum.nested-v2-display-mode {
236 .discussionsubscription {
243 .preload-unsubscribe {
255 /** Reset the badge styling back to pill style. */
258 font-weight: inherit;
260 padding-right: .5rem;
261 border-radius: 10rem;
265 background-color: #f6f6f6;
269 /** Style the ratings like a badge. */
270 .rating-aggregate-container {
271 background-color: #f6f6f6;
276 vertical-align: middle;
277 border-radius: 10rem;
282 padding: .25em 1.75rem 0.25em .75em;
285 border-radius: 10rem;
287 @include media-breakpoint-down(sm) {
297 display: inline-block;
300 /** Don't show the discussion locked alert in this mode because it's already indicated with a badge. */
301 .alert.discussionlocked {
305 /** Fix muted text contrast ratios for accessibility. */
308 color: #707070 !important; /* stylelint-disable-line declaration-no-important */
319 /** Make the tag list text screen reader visible only */
324 :target > .focus-target {
325 animation-name: background-highlight;
326 animation-duration: 1s;
327 animation-timing-function: ease-in-out;
328 animation-iteration-count: 1;
331 .forum-post-container {
333 .forum-post-container {
334 border-top: 1px solid #dee2e6;
337 .replies-container .forum-post-container {
343 .inline-reply-container .reply-author {
348 .post-message p:last-of-type {
352 .author-image-container {
353 width: $author-image-width;
354 margin-right: $author-image-margin;
358 .inline-reply-container textarea {
365 * The first post and first set of replies have a larger author image so offset the 2nd
366 * set of replies by the image width + margin to ensure they align.
369 padding-left: $author-image-width + $author-image-margin;
372 * Reduce the size of the the author image for all second level replies (and below).
374 .author-image-container {
375 width: $author-image-width-sm;
376 margin-right: $author-image-margin-sm;
377 padding-top: (36px - $author-image-width-sm) / 2;
381 * Adjust the indentation offset for all 3rd level replies and below for the smaller author image.
384 padding-left: $author-image-width-sm + $author-image-margin-sm;
387 * Stop indenting the replies after the 5th reply.
389 .indent .indent .indent {
398 /** Extra small devices (portrait phones, less than 576px). */
399 @include media-breakpoint-down(sm) {
400 #page-mod-forum-discuss.nested-v2-display-mode {
401 .forum-post-container {
402 .author-image-container {
403 width: $author-image-width-sm;
404 margin-right: $author-image-margin-sm;
409 padding-left: $author-image-width-sm + $author-image-margin-sm;
425 // Make filter popover content scrollable if needed.
432 // Required to fit a date mform into a filter popover.
433 .filter-dates-popover {
442 $grading-drawer-width: 430px !default;
443 $grading-animation-duration: .3s !default;
444 $grading-icon-button-size: 36px !default;
445 $grading-search-button-padding-left: calc(#{map-get($spacers, 2)} + 8px) !default;
446 $grading-search-input-padding-left: calc(#{map-get($spacers, 2)} + #{map-get($spacers, 2)} + #{$grading-icon-button-size - ($input-border-width * 2)}) !default; /* stylelint-disable-line max-line-length */
447 $grading-search-input-padding-right: calc(#{map-get($spacers, 2)} + #{$grading-icon-button-size}) !default;
448 $grading-nav-bar-active-drawer-button-bottom: calc(#{map-get($spacers, 2) * -1} - 1px) !default;
449 $grading-content-show-content-button-padding-left: calc(#{map-get($spacers, 2) * 2} + 45px) !default;
451 @keyframes expandSearchButton {
453 height: $grading-icon-button-size;
454 width: $grading-icon-button-size;
455 border-radius: $grading-icon-button-size / 2;
456 background-color: $gray-200;
460 height: $input-height-lg;
462 background-color: $input-bg;
463 border-color: $input-border-color;
464 padding-left: $grading-search-button-padding-left;
465 padding-top: $input-padding-y-lg;
466 padding-bottom: $input-padding-y-lg;
467 @include font-size($input-font-size-lg);
468 line-height: $input-line-height-lg;
473 @keyframes collapseSearchButton {
476 height: $input-height-lg;
478 background-color: $input-bg;
479 border-color: $input-border-color;
480 padding-left: $grading-search-button-padding-left;
481 padding-top: $input-padding-y-lg;
482 padding-bottom: $input-padding-y-lg;
483 @include font-size($input-font-size-lg);
484 line-height: $input-line-height-lg;
488 height: $grading-icon-button-size;
489 width: $grading-icon-button-size;
490 border-radius: $grading-icon-button-size / 2;
491 background-color: $gray-200;
495 .path-mod-forum .unified-grader {
496 @include media-breakpoint-up(xs) {
506 display: none !important; /* stylelint-disable-line declaration-no-important */
515 .grader-grading-panel {
520 width: $grading-drawer-width;
523 right: ($grading-drawer-width * -1);
527 width: $grading-icon-button-size;
530 .user-picker-container {
536 width: $grading-icon-button-size;
537 height: $grading-icon-button-size;
541 justify-content: center;
554 transform: translateY(-50%);
557 padding: map-get($spacers, 2);
558 padding-right: calc(#{$grading-icon-button-size} + #{map-get($spacers, 2)});
561 transition: left $grading-animation-duration ease-in-out;
565 .toggle-search-button {
567 animation-name: expandSearchButton;
568 animation-duration: $grading-animation-duration;
569 animation-timing-function: ease-in-out;
574 animation-name: collapseSearchButton;
575 animation-duration: $grading-animation-duration;
579 .user-search-container {
584 transform: translateY(-50%);
587 height: 100% !important; /* stylelint-disable-line declaration-no-important */
588 padding: map-get($spacers, 2);
590 .search-input-container {
596 padding-left: $grading-search-input-padding-left;
597 padding-right: $grading-search-input-padding-right;
601 opacity 0s linear $grading-animation-duration,
602 visibility 0s linear;
608 left: map-get($spacers, 2);
609 transform: translateY(-50%);
611 height: $grading-icon-button-size;
612 width: $grading-icon-button-size - ($input-border-width * 2);
613 background-color: $input-bg;
617 opacity 0s linear $grading-animation-duration,
618 visibility 0s linear $grading-animation-duration;
621 .toggle-search-button {
624 right: map-get($spacers, 2);
625 transform: translateY(-50%);
630 transition: right 0s linear $grading-animation-duration;
638 opacity 0s linear $grading-animation-duration,
639 max-height 0s linear $grading-animation-duration,
640 max-width 0s linear $grading-animation-duration,
641 visibility 0s linear $grading-animation-duration;
651 opacity 0s linear $grading-animation-duration,
652 max-height 0s linear $grading-animation-duration,
653 max-width 0s linear $grading-animation-duration,
654 visibility 0s linear $grading-animation-duration;
660 width: calc(#{$grading-icon-button-size} + #{map-get($spacers, 2)} + #{map-get($spacers, 2)});
661 transition: width $grading-animation-duration ease-in-out;
663 .search-input-container {
672 visibility 0s linear;
680 .toggle-search-button {
689 max-height 0s linear,
691 visibility 0s linear;
701 max-height 0s linear,
703 visibility 0s linear;
710 .user-search-container:not(.collapsed) + .info-container {
713 left: calc(100% * -1);
715 left $grading-animation-duration ease-in-out,
716 opacity 0s linear $grading-animation-duration,
717 visibility 0s linear $grading-animation-duration,
718 padding 0s linear $grading-animation-duration;
723 .grader-module-content {
725 margin-right: $grading-drawer-width;
726 @include transition(margin-right .2s ease-in-out);
735 bottom: $grading-nav-bar-active-drawer-button-bottom;
739 background-color: map-get($theme-colors, 'primary');
749 .grader-module-content-display {
750 .discussion-container {
767 .show-content-button {
773 padding-left: $grading-content-show-content-button-padding-left;
784 height: auto !important; /* stylelint-disable-line declaration-no-important */
787 transition: margin-bottom $grading-animation-duration ease-in-out;
794 opacity $grading-animation-duration linear,
795 visibility 0s linear;
799 .body-content-container {
804 opacity $grading-animation-duration linear,
805 visibility 0s linear;
813 opacity $grading-animation-duration linear,
814 visibility 0s linear;
818 .show-content-button.collapsed + .content {
822 margin-bottom: 0 !important; /* stylelint-disable-line declaration-no-important */
831 .body-content-container {
844 .show-content-button.collapsed:hover + .content,
845 .show-content-button.collapsed:focus + .content {
860 .nested-v2-display-mode {
861 .discussion-container {
864 .show-content-button {
865 padding-left: $author-image-width + $author-image-margin;
873 .no-search-results-container {
881 .nested-v2-display-mode {
882 .view-context-button {
883 margin-left: $author-image-width + $author-image-margin;
884 border-radius: $border-radius-lg;
888 .author-image-container {
893 top: calc(#{$author-image-width} + #{map-get($spacers, 2)});
895 background-color: $gray-200;
897 height: calc(100% - #{$author-image-width} + #{map-get($spacers, 2)});
902 .parent-container + .post-container {
903 .author-image-container {
905 width: $author-image-width-sm !important; /* stylelint-disable-line declaration-no-important */
912 .path-mod-forum .unified-grader .nested-v2-display-mode,
913 .path-mod-forum .modal .nested-v2-display-mode {
919 @include media-breakpoint-down(xs) {
920 .path-mod-forum .unified-grader {
921 .grader-grading-panel {
924 height: calc(100vh - 50px);
934 // End styling for mod_forum.
936 .maincalendar .calendarmonth td,
937 .maincalendar .calendarmonth th {
938 border: 1px dotted $table-border-color;
941 .path-grade-report-grader h1 {
945 #page-mod-chat-gui_basic input#message {
949 #page-mod-data-view #singleimage {
953 .path-mod-data form {
965 .breadcrumb-button .singlebutton {
973 // contributed by Paul Hibbitts, see http://msdn.microsoft@mixin com/en-us/library/ie/jj583807(v=vs.85).aspx
975 -ms-touch-action: auto;
986 /** General styles (scope: all of lesson) **/
987 .path-mod-lesson .invisiblefieldset.fieldsetfix {
990 .path-mod-lesson .answeroption .checkbox label p {
993 .path-mod-lesson .form-inline label.form-check-label {
994 display: inline-block;
996 .path-mod-lesson .slideshow {
1000 #page-mod-lesson-view .branchbuttoncontainer .singlebutton button[type="submit"] {
1001 white-space: normal;
1003 #page-mod-lesson-view {
1004 .vertical .singlebutton {
1011 .fitem .felement .custom-select {
1012 align-self: flex-start;
1015 .path-mod-lesson .generaltable td {
1016 vertical-align: middle;
1021 display: inline-block;
1022 margin-left: 0.25rem;
1024 input[type="checkbox"] {
1029 .path-mod-wiki .wiki_headingtitle,
1030 .path-mod-wiki .midpad,
1031 .path-mod-wiki .wiki_headingtime {
1032 text-align: inherit;
1035 .path-mod-wiki .wiki_contentbox {
1043 > tbody > tr:nth-of-type(odd) {
1044 background-color: $table-bg;
1047 > tbody > tr:nth-of-type(even) {
1048 background-color: $table-accent-bg;
1073 line-height: 2.25rem;
1084 margin-right: $spacer / 2;
1088 font-size: $font-size-sm;
1099 .userloggedinas .usermenu {
1100 .userbutton .avatars {
1102 display: inline-block;
1105 display: inline-block;
1113 vertical-align: baseline;
1124 display: inline-block;
1129 @include media-breakpoint-down(sm) {
1136 .path-mod-quiz .mod-quiz-edit-content {
1137 // Force the quiz edit page to always be large enough to prevent scrolling when accessing the menu.
1138 margin-bottom: 10rem;
1141 #page-mod-quiz-mod #id_reviewoptionshdr .col-md-3,
1142 #page-mod-quiz-mod #id_reviewoptionshdr .col-md-9 {
1146 #page-mod-quiz-mod #id_reviewoptionshdr .form-group {
1149 display: inline-block;
1153 #page-mod-quiz-mod #id_reviewoptionshdr .btn-link {
1155 vertical-align: bottom;
1157 #page-mod-quiz-mod #id_reviewoptionshdr .form-inline {
1161 #page-mod-quiz-mod #id_reviewoptionshdr .form-check {
1164 justify-content: flex-start;
1167 #page-mod-quiz-mod #id_reviewoptionshdr .review_option_item {
1172 // Question navigation block.
1173 .path-mod-quiz #mod_quiz_navblock {
1175 text-decoration: none;
1178 font-weight: normal;
1179 background-color: $card-bg;
1180 background-image: none;
1186 margin: 0 6px 6px 0;
1191 background-color: $input-disabled-bg;
1198 text-decoration: underline;
1201 .qnbutton .thispageholder {
1207 .qnbutton.thispage .thispageholder {
1211 .allquestionsononepage .qnbutton.thispage .thispageholder {
1215 .qnbutton.flagged .thispageholder {
1216 background: transparent url([[pix:theme|mod/quiz/flag-on]]) 15px 0 no-repeat;
1219 .qnbutton .trafficlight {
1221 background: $card-bg none center / 10px no-repeat scroll;
1224 border-radius: 0 0 3px 3px;
1227 .qnbutton.notyetanswered .trafficlight,
1228 .qnbutton.invalidanswer .trafficlight {
1229 background-color: $card-bg;
1232 .qnbutton.invalidanswer .trafficlight {
1233 background-image: url([[pix:theme|mod/quiz/warningtriangle]]);
1236 .qnbutton.correct .trafficlight {
1237 background-image: url([[pix:theme|mod/quiz/checkmark]]);
1238 background-color: $success;
1241 .qnbutton.blocked .trafficlight {
1242 background-image: url([[pix:core|t/locked]]);
1243 background-color: $input-disabled-bg;
1246 .qnbutton.notanswered .trafficlight,
1247 .qnbutton.incorrect .trafficlight {
1248 background-color: $danger;
1251 .qnbutton.partiallycorrect .trafficlight {
1252 background-image: url([[pix:theme|mod/quiz/whitecircle]]);
1253 background-color: $warning;
1256 .qnbutton.complete .trafficlight,
1257 .qnbutton.answersaved .trafficlight,
1258 .qnbutton.requiresgrading .trafficlight {
1259 background-color: $gray-600;
1263 #page-mod-quiz-edit ul.slots li.section li.activity .instancemaxmarkcontainer form input {
1265 vertical-align: middle;
1268 #page-mod-quiz-edit ul.slots li.section li.activity .instancemaxmarkcontainer {
1273 /* Countdown timer. */
1274 #page-mod-quiz-attempt #region-main {
1275 overflow-x: inherit;
1278 #quiz-timer-wrapper {
1281 justify-content: end;
1282 top: $navbar-height + 5px;
1283 z-index: $zindex-sticky;
1285 border: $border-width solid $red;
1286 background-color: $white;
1289 .pagelayout-embedded #quiz-timer-wrapper {
1293 @for $i from 0 through 16 {
1294 #quiz-timer-wrapper #quiz-timer.timeleft#{$i} {
1295 $bg: lighten($red, ($i * 3%));
1296 background-color: $bg;
1297 color: color-yiq($bg);
1302 .path-mod-assign [data-region="grade-actions-panel"] [data-region="grade-actions"] .collapse-buttons {
1306 // This section removes the responsiveness from the form in the grading panel
1307 $popout-header-font-size: 1.5 * $font-size-base;
1308 // This can't be calculated from modal-title-padding because we are mixing px and rem units.
1309 $popout-header-height: 4rem;
1311 .path-mod-assign #page-content [data-region="grade-panel"] .mform:not(.unresponsive) .fcontainer .fitem.popout .felement {
1312 height: calc(100% - #{$popout-header-height});
1315 .path-mod-assign [data-region="grade-panel"] {
1316 padding-top: $spacer;
1318 .path-mod-assign [data-region="grade-panel"] .fitem > .col-md-3,
1319 .path-mod-assign [data-region="grade-panel"] .fitem > .col-md-9 {
1325 .path-mod-assign [data-region="grade-panel"] fieldset,
1326 .path-mod-assign [data-region="grade-panel"] .fitem.row {
1330 .path-mod-assign [data-region="grade-panel"] .mform .fitem.has-popout .felement {
1334 .path-mod-assign [data-region="grade-panel"] .mform .fitem .felement {
1338 // Now styles for the popout sections.
1340 .path-mod-assign [data-region="grade-panel"] .popout {
1341 background-color: $modal-content-bg;
1344 .path-mod-assign [data-region="grade-panel"] .fitem.has-popout {
1345 background-color: $card-bg;
1346 @include border-radius($card-border-radius);
1347 border: $card-border-width solid $card-border-color;
1348 padding: $card-spacer-x;
1349 margin-bottom: $spacer;
1351 .path-mod-assign [data-region="grade-panel"] .has-popout .col-md-3 {
1352 border-bottom: $hr-border-width solid $hr-border-color;
1353 margin-bottom: $spacer;
1357 .path-mod-assign [data-region="grade-panel"] .popout > .col-md-3 {
1359 align-items: flex-start;
1360 justify-content: space-between;
1361 font-size: $popout-header-font-size;
1364 .path-mod-assign [data-region="grade-panel"] .popout [data-region="popout-button"] {
1368 // Now style the fixed header elements.
1370 .path-mod-assign [data-region="assignment-info"] {
1374 .path-mod-assign [data-region="grading-navigation"] {
1378 .path-mod-assign [data-region="grade-actions"] {
1382 .path-mod-assign [data-region="user-info"] .img-rounded {
1386 .path-mod-assign [data-region="grading-navigation-panel"] {
1390 @media (max-width: 767px) {
1391 .path-mod-assign [data-region="grading-navigation-panel"] {
1394 .path-mod-assign [data-region="user-info"] {
1399 .path-mod-assign [data-region="grading-navigation"] [data-region="input-field"] input {
1401 display: inline-block;
1407 .assignfeedback_editpdf_widget * {
1408 box-sizing: content-box;
1411 .assignfeedback_editpdf_widget button {
1412 box-sizing: border-box;
1415 .assignfeedback_editpdf_widget .commentcolourbutton img {
1419 .assignfeedback_editpdf_widget .label {
1421 padding: $alert-padding-y $alert-padding-x;
1422 margin-bottom: $alert-margin-bottom;
1423 border: $alert-border-width solid transparent;
1424 @include border-radius($alert-border-radius);
1425 @include alert-variant(theme-color-level('info', $alert-bg-level), theme-color-level('info', $alert-border-level), theme-color-level('info', $alert-color-level)); /* stylelint-disable-line max-line-length */
1428 .assignfeedback_editpdf_menu {
1432 .path-mod-assign [data-region="grade-panel"] .gradingform_guide .remark .commentchooser {
1435 .path-mod-assign [data-region="grade-panel"] .gradingform_guide .markingguideremark {
1438 .path-mod-assign [data-region="grade-panel"] .mform .fitem .felement[data-fieldtype="grading"] {
1439 padding-left: $spacer;
1440 padding-right: $spacer;
1442 .path-mod-assign [data-region="grade-panel"] .showmarkerdesc,
1443 .path-mod-assign [data-region="grade-panel"] .showstudentdesc {
1444 background-color: $card-bg;
1450 .path-admin-mod-lti {
1452 #tool-list-loader-container .loader img {