3 // When we upgrade boostrap to v4 release, we will need to change this to be used by the text-white class.
4 // Because a primary colour that is both AA accessible on grey (footer) and white is not possible, we always
5 // want white default colour.
6 $bg-inverse-link-color: #fff !default;
11 border: $card-border-width solid $card-border-color;
12 padding: $card-spacer-x;
13 background-color: $body-bg;
16 .context-header-settings-menu,
17 .region-main-settings-menu {
26 .context-header-settings-menu .dropdown-toggle > .icon,
27 #region-main-settings-menu .dropdown-toggle > .icon {
32 /** Prevent user notifications overlapping with region main settings menu */
38 /** Page layout CSS starts **/
39 .layout-option-noheader #page-header,
40 .layout-option-nonavbar #page-navbar,
41 .layout-option-nofooter #page-footer,
42 .layout-option-nocourseheader .course-content-header,
43 .layout-option-nocoursefooter .course-content-footer {
47 /** Page layout CSS ends **/
59 direction: ltr !important; /* stylelint-disable-line declaration-no-important */
74 a.dimmed_text:visited,
78 .dimmed_text a:visited,
81 .usersuspended a:link,
82 .usersuspended a:visited,
108 font-size: $font-size-xs;
118 @extend .text-warning;
123 @extend .text-success;
130 .fitem.advanced .text-info {
138 a.autolink.glossary:hover {
141 /* Block which is hidden if javascript enabled, prevents fickering visible when JS from footer used! */
142 .collapsibleregioncaption {
144 min-height: $line-height-base * $font-size-base;
147 .pagelayout-mydashboard.jsenabled .collapsibleregioncaption {
151 .collapsibleregioncaption img {
152 vertical-align: middle;
155 .jsenabled .hiddenifjs {
163 .jsenabled .visibleifjs {
167 .jsenabled .collapsibleregion {
169 box-sizing: content-box;
172 .jsenabled .collapsed .collapsibleregioninner {
176 .collapsible-actions {
181 .jsenabled .collapsible-actions {
185 .collapsible-actions .collapseexpand {
187 background: url([[pix:t/collapsed]]) 2px center no-repeat;
190 .collapsible-actions .collapseexpand {
191 background: url([[pix:t/collapsed_rtl]]) right center no-repeat;
194 .collapsible-actions .collapse-all {
195 background-image: url([[pix:t/expanded]]);
198 .yui-overlay .yui-widget-bd {
199 background-color: #ffee69;
200 border: 1px solid #a6982b;
201 border-top-color: #d4c237;
211 background: transparent;
224 .pagingbar .thispage {
229 margin-right: 0.5rem;
237 .action-menu .dropdown-toggle {
238 text-decoration: none;
253 vertical-align: middle;
270 #addmembersform table {
275 table.flexible .emptyrow {
284 .arrow_button input {
291 // Minimum height required for a menu in a table inside a scrollable div.
292 .no-overflow > .generaltable {
296 // Accessibility features
298 // Accessibility: text 'seen' by screen readers but not visual users.
308 // Accessibility: Skip block link, for keyboard-only users.
314 text-decoration: none;
335 .blog_entry .audience {
344 .blog_entry .content {
359 #doc-contents ul li {
360 list-style-type: none;
363 .groupmanagementtable td {
367 .groupmanagementtable #existingcell,
368 .groupmanagementtable #potentialcell {
372 .groupmanagementtable #buttonscell {
376 .groupmanagementtable #buttonscell p.arrow_button input {
382 .groupmanagementtable #removeselect_wrapper,
383 .groupmanagementtable #addselect_wrapper {
387 .groupmanagementtable #removeselect_wrapper label,
388 .groupmanagementtable #addselect_wrapper label {
399 display: inline-block;
402 .groupselector label {
403 display: inline-block;
410 border-bottom-right-radius: 0;
411 border-bottom-left-radius: 0;
416 border-top-left-radius: 0;
417 border-top-right-radius: 0;
426 .notepost .userpicture {
441 .path-my .coursebox {
446 margin: 15px 30px 10px 30px;
450 .path-my .coursebox .info {
482 .comment-area textarea {
487 -webkit-box-sizing: border-box;
488 -moz-box-sizing: border-box;
489 box-sizing: border-box;
502 vertical-align: text-bottom;
522 .comment-list li.first {
530 .comment-paging .pageno {
534 .comment-paging .curpage {
535 border: 1px solid #ccc;
538 .comment-message .picture {
543 .comment-message .text {
548 .comment-message .text p {
560 .comment-report-selectall {
568 .jsenabled .comment-link {
572 .jsenabled .showcommentsnonjs {
576 .jsenabled .comment-report-selectall {
580 * Completion progress report
582 .completion-expired {
583 @extend .text-warning;
586 .completion-expected {
587 font-size: $font-size-xs;
590 .completion-sortchoice,
591 .completion-identifyfield {
592 font-size: $font-size-xs;
593 vertical-align: bottom;
596 .completion-progresscell {
600 .completion-expired .completion-expected {
616 .path-tag .tag-index-items .tagarea {
617 border: 1px solid #e3e3e3;
623 .path-tag .tag-index-items .tagarea h3 {
625 padding: 3px 0 10px 0;
631 text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
632 text-transform: uppercase;
633 word-wrap: break-word;
634 border-bottom: solid 1px #e3e3e3;
638 .path-tag .tagarea .controls,
639 .path-tag .tagarea .taggeditems {
643 .path-tag .tagarea .controls,
644 .path-tag .tag-backtoallitems {
648 .path-tag .tagarea .controls .gotopage.nextpage {
652 .path-tag .tagarea .controls .gotopage.prevpage {
656 .path-tag .tagarea .controls .exclusivemode {
657 display: inline-block;
660 .path-tag .tagarea .controls.controls-bottom {
664 .path-tag .tagarea .controls .gotopage.nextpage::after {
670 .path-tag .tagarea .controls .gotopage.prevpage::before {
680 @extend .text-warning;
683 .tag-management-table td,
684 .tag-management-table th {
685 vertical-align: middle;
689 .tag-management-table .inplaceeditable.inplaceeditingon input {
693 .path-admin-tag .addstandardtags {
701 .path-tag .tag-relatedtags {
705 .path-tag .tag-management-box {
709 .path-tag .tag-index-toc {
714 .path-tag .tag-index-toc li,
715 .path-tag .tag-management-box li {
720 .path-tag .tag-management-box li a.edittag {
721 background-image: url([[pix:moodle|i/settings]]);
724 .path-tag .tag-management-box li a.flagasinappropriate {
725 background-image: url([[pix:moodle|i/flagged]]);
728 .path-tag .tag-management-box li a.removefrommyinterests {
729 background-image: url([[pix:moodle|t/delete]]);
732 .path-tag .tag-management-box li a.addtomyinterests {
733 background-image: url([[pix:moodle|t/add]]);
736 .path-tag .tag-management-box li a {
737 background-repeat: no-repeat;
738 background-position: left;
742 .tag_feed.media-list .media .itemimage {
746 .tag_feed.media-list .media .itemimage img {
751 .tag_feed.media-list .media .media-body {
756 .tag_feed .media .muted a {
764 .tag_cloud .inline-list li {
768 .tag_cloud .tag_overflow {
861 .tag_list.hideoverlimit .overlimit {
865 .tag_list .tagmorelink {
869 .tag_list.hideoverlimit .tagmorelink {
873 .tag_list.hideoverlimit .taglesslink {
880 #webservice-doc-generator td {
882 border: 0 solid black;
890 border-collapse: collapse;
902 .userenrolment .subfield {
906 .userenrolment .col_userdetails .subfield {
910 .userenrolment .col_userdetails .subfield_picture {
915 .userenrolment .col_lastseen {
919 .userenrolment .col_role {
923 .userenrolment .col_role .roles,
924 .userenrolment .col_group .groups {
928 .userenrolment .col_role .role {
935 .userenrolment .col_group .group {
942 .userenrolment .col_role .role a,
943 .userenrolment .col_group .group a {
948 .userenrolment .col_role .addrole,
949 .userenrolment .col_group .addgroup {
955 border-bottom: 1px solid #666;
959 .userenrolment .col_role .addrole img,
960 .userenrolment .col_group .addgroup img {
961 vertical-align: baseline;
964 .userenrolment .hasAllRoles .col_role .addrole {
968 .userenrolment .col_enrol .enrolment {
974 .userenrolment .col_enrol .enrolment a {
980 .enrol_user_buttons {
991 #page-enrol-users .enrol-users-page-action input {
996 background-color: #ccc;
1016 display: table-cell;
1019 .label .mod-indent {
1023 $mod-indent-size: 30px;
1024 /* Creates a series of .mod-indent-# rule declarations based on indent size and number of indent levels. */
1026 @for $i from 1 through 16 {
1027 $width: ($i * $mod-indent-size);
1035 width: (16 * $mod-indent-size);
1038 /* Audio player size in 'block' mode (can only change width, height is hardcoded in JS) */
1039 .resourcecontent .mediaplugin_mp3 object {
1044 .resourcecontent audio.mediaplugin_html5audio {
1047 /** Large resource images should avoid hidden overflow **/
1051 /* Audio player size in 'inline' mode (can only change width, as above) */
1052 .mediaplugin_mp3 object {
1057 audio.mediaplugin_html5audio {
1060 /* TinyMCE moodle media preview frame should not have padding */
1061 .core_media_preview.pagelayout-embedded #content {
1065 .core_media_preview.pagelayout-embedded #maincontent {
1069 body#page-lib-editor-tinymce-plugins-moodlemedia-preview {
1076 .path-rating .ratingtable {
1081 .path-rating .ratingtable th.rating {
1085 .path-rating .ratingtable td.rating,
1086 .path-rating .ratingtable td.time {
1087 white-space: nowrap;
1091 /* Moodle Dialogue Settings (moodle-core-dialogue) */
1092 .moodle-dialogue-base .moodle-dialogue-lightbox {
1093 background-color: $gray;
1096 // Prevent adding backdrops to popups in popups.
1098 .moodle-dialogue-base {
1099 .moodle-dialogue-lightbox {
1100 background-color: transparent;
1103 box-shadow: $popover-box-shadow;
1108 .moodle-dialogue-base .hidden,
1109 .moodle-dialogue-base .moodle-dialogue-hidden {
1117 .moodle-dialogue-base .moodle-dialogue-fullscreen {
1125 .moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content {
1129 .moodle-dialogue-base .moodle-dialogue-fullscreen .closebutton {
1132 background-size: 100%;
1135 .moodle-dialogue-base .moodle-dialogue-wrap {
1136 background-color: #fff;
1137 border: 1px solid #ccc;
1140 // Show is a bootstrap 2 class - but we use it for modals. We don't want to enable it everywhere because they removed
1141 // it for a reason (conflicts with jquery .show()).
1146 .moodle-dialogue-base .moodle-dialogue-wrap.moodle-dialogue-content {
1147 @extend .modal-content;
1150 .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd {
1151 @extend .modal-header;
1154 .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd.yui3-widget-hd {
1155 // Undo some YUI damage.
1158 background: initial;
1163 .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd h1 {
1164 @extend .modal-title;
1168 .moodle-dialogue-base .moodle-dialogue-wrap .moodle-dialogue-hd .yui3-widget-buttons {
1176 .moodle-dialogue-base .closebutton {
1184 .moodle-dialogue-base .moodle-dialogue .moodle-dialogue-bd {
1188 .moodle-dialogue-base .moodle-dialogue-fullscreen .moodle-dialogue-content {
1199 .moodle-dialogue-exception .moodle-exception-param label {
1203 .moodle-dialogue-exception .param-stacktrace label {
1204 background-color: #eee;
1205 border: 1px solid #ccc;
1206 border-bottom-width: 0;
1209 .moodle-dialogue-exception .param-stacktrace pre {
1210 border: 1px solid #ccc;
1211 background-color: #fff;
1214 .moodle-dialogue-exception .param-stacktrace .stacktrace-file {
1216 font-size: $font-size-sm;
1219 .moodle-dialogue-exception .param-stacktrace .stacktrace-line {
1220 @extend .text-warning;
1221 font-size: $font-size-sm;
1224 .moodle-dialogue-exception .param-stacktrace .stacktrace-call {
1227 border-bottom: 1px solid #eee;
1230 .moodle-dialogue-base .moodle-dialogue .moodle-dialogue-content .moodle-dialogue-ft {
1231 @extend .modal-footer;
1234 .moodle-dialogue-base .moodle-dialogue .moodle-dialogue-content .moodle-dialogue-ft:empty {
1238 .moodle-dialogue-base .moodle-dialogue .moodle-dialogue-content .moodle-dialogue-ft.yui3-widget-ft {
1239 // Undo some YUI damage.
1240 background: initial;
1243 .moodle-dialogue-confirm .confirmation-message {
1247 .moodle-dialogue-confirm .confirmation-dialogue input {
1251 .moodle-dialogue-exception .moodle-exception-message {
1255 .moodle-dialogue-exception .moodle-exception-param {
1256 margin-bottom: 0.5em;
1259 .moodle-dialogue-exception .moodle-exception-param label {
1263 .moodle-dialogue-exception .param-stacktrace label {
1269 .moodle-dialogue-exception .param-stacktrace pre {
1275 .moodle-dialogue-exception .param-stacktrace .stacktrace-file {
1276 display: inline-block;
1280 .moodle-dialogue-exception .param-stacktrace .stacktrace-line {
1281 display: inline-block;
1286 .moodle-dialogue-exception .param-stacktrace .stacktrace-call {
1289 padding-bottom: 4px;
1292 .moodle-dialogue .moodle-dialogue-bd .content-lightbox {
1298 background-color: white;
1302 /* Apply a default max-height on tooltip text */
1303 .moodle-dialogue .tooltiptext {
1307 .moodle-dialogue-base .moodle-dialogue.moodle-dialogue-tooltip {
1310 .moodle-dialogue-bd {
1316 * Chooser Dialogues (moodle-core-chooserdialogue)
1318 * This CSS belong to the chooser dialogue which should work both with, and
1319 * without javascript enabled
1321 /* Hide the dialog and it's title */
1322 .chooserdialoguebody,
1327 .moodle-dialogue.chooserdialogue .moodle-dialogue-content .moodle-dialogue-ft {
1331 .chooserdialogue .moodle-dialogue-wrap .moodle-dialogue-bd {
1333 background: #f2f2f2;
1335 @include border-bottom-radius(10px);
1337 /* Center the submit buttons within the area */
1338 .choosercontainer #chooseform .submitbuttons {
1342 /* Fixed for safari browser on iPhone4S with ios7@mixin */
1344 @media (max-height: 639px) {
1345 .ios .choosercontainer #chooseform .submitbuttons {
1350 .choosercontainer #chooseform .submitbuttons input {
1354 /* Various settings for the options area */
1355 .choosercontainer #chooseform .options {
1357 border-bottom: 1px solid #bbb;
1359 /* Only set these options if we're showing the js container */
1360 .jschooser .choosercontainer #chooseform .alloptions {
1367 display: inline-block;
1371 display: inline-block;
1376 /* Settings for option rows and option subtypes */
1377 .choosercontainer #chooseform .moduletypetitle,
1378 .choosercontainer #chooseform .option,
1379 .choosercontainer #chooseform .nonoption {
1381 padding: 0 1.6em 0 1.6em;
1384 .choosercontainer #chooseform .moduletypetitle {
1385 text-transform: uppercase;
1387 padding-bottom: 0.4em;
1390 .choosercontainer #chooseform .option .typename,
1391 .choosercontainer #chooseform .nonoption .typename {
1392 padding: 0 0 0 0.5em;
1395 .choosercontainer #chooseform .modicon + .typename {
1399 .choosercontainer #chooseform .option input[type=radio],
1400 .choosercontainer #chooseform .option span.typename {
1401 vertical-align: middle;
1404 .choosercontainer #chooseform .option label {
1407 padding: ($spacer / 2) 0;
1408 border-bottom: 1px solid #fff;
1411 .choosercontainer #chooseform .option .icon {
1416 .choosercontainer #chooseform .nonoption {
1417 padding-left: 2.7em;
1419 padding-bottom: 0.1em;
1422 .choosercontainer #chooseform .subtype {
1424 padding: 0 1.6em 0 3.2em;
1427 .choosercontainer #chooseform .subtype .typename {
1428 margin: 0 0 0 0.2em;
1430 /* The instruction/help area */
1431 .jschooser .choosercontainer #chooseform .instruction,
1432 .jschooser .choosercontainer #chooseform .typesummary {
1441 background-color: #fff;
1446 /* Selected option settings */
1447 .jschooser .choosercontainer #chooseform .instruction,
1448 .choosercontainer #chooseform .selected .typesummary {
1452 .choosercontainer #chooseform .selected {
1453 background-color: #fff;
1458 .chooserdialogue-course-modchooser .modicon .icon {
1464 @include media-breakpoint-down(xs) {
1465 .jsenabled .choosercontainer #chooseform .alloptions {
1469 .jsenabled .choosercontainer #chooseform .instruction,
1470 .jsenabled .choosercontainer #chooseform .typesummary {
1475 /* Form element: listing */
1477 padding-bottom: 25px;
1478 padding-right: 10px;
1481 .formlistinginputradio {
1492 padding: 1px 19px 14px;
1493 background-color: white;
1494 border: 1px solid #ddd;
1496 @include border-radius(4px);
1507 background-color: whitesmoke;
1508 border: 1px solid #ddd;
1511 @include border-radius(4px 0 4px 0);
1518 @include border-radius(4px);
1523 border-bottom: 1px solid;
1524 border-color: #e1e1e8;
1525 border-left: 1px solid #e1e1e8;
1526 border-right: 1px solid #e1e1e8;
1527 background-color: #f7f7f9;
1529 @include border-radius(0 0 4px 4px);
1538 body.jsenabled .formlistingradio {
1542 body.jsenabled .formlisting {
1549 @extend .table-bordered;
1550 @extend .table-striped;
1558 div.criteria-description {
1561 background: none repeat scroll 0 0 #f9f9f9;
1562 border: 1px solid #eee;
1572 display: inline-block;
1575 vertical-align: top;
1579 .badges li .badge-name {
1588 .badges li .badge-image {
1596 .badges li .badge-actions {
1600 .badges li .expireimage {
1611 background-color: transparent;
1616 display: inline-block;
1617 vertical-align: top;
1619 margin-bottom: 20px;
1642 display: inline-block;
1652 vertical-align: top;
1658 display: inline-block;
1664 display: inline-block;
1671 vertical-align: top;
1675 @extend .text-success;
1679 @extend .text-danger;
1683 @extend .text-warning;
1686 #page-badges-award .recipienttable tr td {
1687 vertical-align: top;
1690 #page-badges-award .recipienttable tr td.actions .actionbutton {
1696 #page-badges-award .recipienttable tr td.existing,
1697 #page-badges-award .recipienttable tr td.potential {
1701 #issued-badge-table .activatebadge {
1702 display: inline-block;
1706 background-color: $state-success-bg;
1709 .statusbox.inactive {
1710 background-color: $state-warning-bg;
1719 .statusbox .activatebadge {
1720 display: inline-block;
1723 .statusbox .activatebadge input[type=submit] {
1730 vertical-align: middle;
1733 img#persona_signin {
1741 .invisiblefieldset {
1758 nav.navbar .logo img {
1762 /** Header-bar styles **/
1763 .page-context-header {
1764 // We need to be explicit about the height of the header.
1765 $pageHeaderHeight: 140px;
1767 // Do not remove these rules.
1771 .page-header-headings {
1777 .page-header-image {
1782 .page-header-headings,
1783 .header-button-group {
1786 vertical-align: middle;
1789 .header-button-group {
1796 // Don't touch it unless you know exactly what you are doing.
1802 ul.dragdrop-keyboard-drag li {
1803 list-style-type: none;
1808 text-decoration: none;
1819 .progressbar_container {
1824 /* IE10 only fix for calendar titling */
1825 .ie10 .yui3-calendar-header-label {
1826 display: inline-block;
1839 // Active tabs with links should have a different
1840 // cursor to indicate they are clickable.
1841 .nav-tabs > .active > a[href],
1842 .nav-tabs > .active > a[href]:hover,
1843 .nav-tabs > .active > a[href]:focus {
1848 &.inplaceeditingon {
1853 font-weight: normal;
1858 white-space: nowrap;
1863 vertical-align: text-bottom;
1872 .quickediticon img {
1878 text-decoration: inherit;
1881 &:hover .quickeditlink .quickediticon img,
1882 .quickeditlink:focus .quickediticon img {
1886 &.inplaceeditable-toggle .quickediticon {
1890 &.inplaceeditable-autocomplete {
1895 h3.sectionname .inplaceeditable.inplaceeditingon .editinstructions {
1907 .chart-output-htmltable caption {
1908 white-space: nowrap;
1910 /** When accessible, we display the table only. */
1912 .chart-table-expand {
1927 /* YUI 2 Tree View */
1948 background-image: url([[pix:theme|yui2-treeview-sprite-rtl]]);
1952 .hover-tooltip-container {
1961 top: calc(-50% - 5px);
1962 transform: translate(-50%, -50%);
1963 background-color: #fff;
1964 border: 1px solid rgba(0, 0, 0, .2);
1965 border-radius: .3rem;
1966 box-sizing: border-box;
1968 white-space: nowrap;
1969 transition: opacity 0.15s, visibility 0.15s;
1974 display: inline-block;
1975 border-left: 8px solid transparent;
1976 border-right: 8px solid transparent;
1977 border-top: 8px solid rgba(0, 0, 0, .2);
1980 left: calc(50% - 8px);
1985 display: inline-block;
1986 border-left: 7px solid transparent;
1987 border-right: 7px solid transparent;
1988 border-top: 7px solid #fff;
1991 left: calc(50% - 7px);
1999 visibility: visible;
2000 transition: opacity 0.15s 0.5s, visibility 0.15s 0.5s;
2009 margin-right: $grid-gutter-width / 2;
2010 background-color: $card-bg;
2012 @include media-breakpoint-down(sm) {
2014 margin-top: $grid-gutter-width;
2020 // Footer link colour was added to allow the colour of footer links to be changed,
2021 // but really in bootstrap we want the colour of links on .bg-inverse to be changed
2022 // rather than being specific to the footer. This is kept for backwards compatibility.
2023 $footer-link-color: $bg-inverse-link-color !default;
2025 color: $footer-link-color;
2026 text-decoration: underline;
2028 color: $footer-link-color;
2033 color: $bg-inverse-link-color;
2034 text-decoration: underline;
2036 color: $bg-inverse-link-color;
2046 // Make links in a menu clickable anywhere in the row.
2055 padding-left: 1.5rem;
2059 .sr-only-focusable {
2062 z-index: $zindex-navbar-fixed + 1;
2071 [data-drag-type="move"] {
2079 .overlay-icon-container {
2085 background-color: rgba(255, 255, 255, 0.6);
2091 transform: translate(-50%, -50%);
2101 .open.atto_menu > .dropdown-menu {
2104 div.editor_atto_toolbar button .icon {
2112 animation: bg-pulse-grey 2s infinite linear;
2115 @keyframes bg-pulse-grey {
2117 background-color: $gray-100;
2120 background-color: darken($gray-100, 5%);
2123 background-color: $gray-100;
2127 @each $size, $length in $spacers {
2128 .line-height-#{$size} {
2129 line-height: $length !important; /* stylelint-disable-line declaration-no-important */