1 @import 'mediawiki.skin.variables.less';
2 @import 'mediawiki.mixins.less';
4 .mw-email-not-authenticated .oo-ui-labelWidget,
5 .mw-email-none .oo-ui-labelWidget {
6 color: @color-emphasized;
7 border-width: @border-width-base;
8 border-style: @border-style-base;
12 .mw-email-not-authenticated .oo-ui-labelWidget {
13 background-color: @background-color-warning-subtle;
14 border-color: @border-color-warning;
17 .mw-email-none .oo-ui-labelWidget {
18 background-color: @background-color-notice-subtle;
19 border-color: @border-color-base;
22 /* Authenticated email field has its own class too. Unstyled by default */
24 .mw-email-authenticated .oo-ui-labelWidget { }
27 // Non-dialog styling for footer buttons
29 // Support Edge: The `position: sticky` rule above causes the buttons to
30 // disappear in RTL languages on Microsoft Edge. This magically fixes the issue. See T220706.
31 filter: brightness( 1 );
34 * Use `position: sticky` on supported browsers, degrades gracefully in
35 * all others, therefore no `@supports` feature query to reduce code complexity.
37 .mw-htmlform-submit-buttons {
40 margin: -@border-width-base -1em -1em -1em;
42 background-color: @background-color-base;
43 border-top: @border-width-base @border-style-base @border-color-subtle;
44 // Add top box shadow on top only to emphasize content is scrollable underneath `sticky`.
45 box-shadow: 0 -4px 4px -4px rgba( 0, 0, 0, 0.25 );
49 // Preferences navigation hint
50 .client-js .mw-navigation-hint {
54 // Hide when not keyboard focused.
55 .client-js .mw-navigation-hint:not( :focus ) {
59 .client-js .mw-navigation-hint:focus {
60 margin: 10px 0 10px 0;
64 .mw-prefs-fieldset-wrapper {
79 &.mw-prefs-tabs-searching {
80 // Prevent "Save" bar getting too close to results
84 .oo-ui-tabPanelLayout:not( .mw-prefs-search-matched ),
86 [ class^='mw-htmlform-field-' ]:not( .mw-prefs-search-matched ),
88 .mw-prefs-fieldset-wrapper:not( .mw-prefs-search-matched ) {
92 .oo-ui-tabPanelLayout.mw-prefs-search-matched {
94 background: @background-color-neutral;
99 > .oo-ui-labelElement-label {
106 .oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
111 .mw-prefs-search-matched {
112 margin: 0 20px 10px 20px;
118 // Highlight could be in an overlay
119 .mw-prefs-search-highlight {
120 // FIXME: Codex needs to standardize search highlights.
121 background: @background-color-progressive-subtle !important; /* stylelint-disable-line declaration-no-important */
122 outline: 3px solid @background-color-progressive-subtle !important; /* stylelint-disable-line declaration-no-important */
123 border-radius: @border-radius-base !important; /* stylelint-disable-line declaration-no-important */
126 .mw-prefs-noresults {
131 /* TODO: Support mobile */
132 .skin-minerva .mw-prefs-search { /* stylelint-disable-line selector-class-pattern */
136 .mw-prefs-search.oo-ui-fieldLayout {
140 @media all and ( min-width: @min-width-breakpoint-tablet ) {
141 .mw-prefs-search.oo-ui-fieldLayout {
145 .mw-special-Preferences .mw-specialpage-summary {
148 & + .mw-prefs-search.oo-ui-fieldLayout {
150 margin: -36px 0 8px 0;
155 @media all and ( max-width: ( @max-width-breakpoint-mobile ) ) {
156 .mw-prefs-search.oo-ui-fieldLayout {
157 // Fallback is graceful enough.
158 /* stylelint-disable-next-line plugin/no-unsupported-browser-features */
165 .mw-prefs-tabs-wrapper.oo-ui-panelLayout-framed,
166 .mw-prefs-tabs > .oo-ui-menuLayout-content > .oo-ui-indexLayout-stackLayout > .oo-ui-tabPanelLayout {
167 /* Decrease contrast of `border` slightly as padding/border combination is sufficient
168 * accessibility wise and focus of content is more important here. */
169 border-color: @border-color-subtle;
172 /* JavaScript disabled */
174 // Disable .oo-ui-panelLayout-framed on outer wrapper
175 .mw-prefs-tabs-wrapper {
181 // Hide the tab menu when JS is disabled as we can't use this feature
182 > .oo-ui-menuLayout-menu {
186 .mw-prefs-section-fieldset {
187 // <legend> is hard to style, so apply border to top of group
188 > .oo-ui-fieldsetLayout-group {
190 border-top: @border-width-base @border-style-base @border-color-subtle;
193 // Remove spacing between legend and underline
194 &.oo-ui-labelElement > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
199 // Spacing between sections
200 > .oo-ui-menuLayout-content > .oo-ui-indexLayout-stackLayout > .oo-ui-tabPanelLayout:not( :last-child ) {
204 // Show preference section content on mobile
205 #mw-prefs-container.mw-mobile-preferences-container {
206 .mw-prefs-content-head {
211 .mw-mobile-prefs-sections.oo-ui-buttonGroupWidget {
220 /* JavaScript enabled */
223 .oo-ui-tabPanelLayout {
224 // Panels don't need borders as the IndexLayout is inside a framed wrapper.
227 // Hide duplicate section legend (we have tabs instead),
228 // except in search mode, where we hide the tabs
229 &:not( .mw-prefs-search-matched ) > fieldset > legend {
234 // Hide all but the first panel before infusion
235 &:not( .mw-prefs-tabs-infused ) {
236 .oo-ui-tabPanelLayout:not( :first-child ) {
242 // Hide mobile sections since they will be displayed in windows
243 #mw-prefs-container.mw-mobile-prefs-container {
244 .mw-prefs-content-page {
250 // Highlight section header when linking to a section, e.g. Special:Preferences#mw-prefsection-editing-preview.
251 .mw-prefs-tabs:not( .mw-prefs-tabs-searching ) .oo-ui-fieldsetLayout:target > .oo-ui-fieldsetLayout-header > .oo-ui-labelElement-label {
253 background-color: @background-color-progressive-subtle;
254 outline: 4px solid #eaf3ff;
257 @media all and ( min-width: @min-width-breakpoint-tablet ) {
258 /* Make the "Basic information" section more compact */
259 /* OOUI's `align: 'left'` for FieldLayouts sucks, so we do our own */
261 > .oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-header {
262 display: inline-block;
265 vertical-align: middle;
268 > .oo-ui-fieldLayout-align-top .oo-ui-fieldLayout-help {
272 > .oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
273 display: inline-block;
275 vertical-align: middle;
280 /* Compact number inputs, used at "Display options" on "Recent changes" */
281 .mw-htmlform-field-HTMLFloatField,
282 .mw-htmlform-field-HTMLIntField {
288 /* Expand the dropdown and textfield of "Time zone" field to the */
289 /* usual maximum width and display them on separate lines. */
290 #wpTimeCorrection .oo-ui-dropdownInputWidget,
291 #wpTimeCorrection .oo-ui-textInputWidget {
296 #wpTimeCorrection .oo-ui-textInputWidget {
300 /* T311717 - Styles for Special:Preferences on mobile
301 These are used when users navigate to Special:Preferences
302 with params ?useskin=vector&useformat=mobile
305 #mw-prefs-container.mw-mobile-preferences-container {
309 .mw-mobile-prefs-sections.oo-ui-buttonGroupWidget {
313 .mw-mobile-prefsection.oo-ui-buttonElement {
315 margin-left: 0 !important; /* stylelint-disable-line declaration-no-important */
316 border-bottom: @border-width-base @border-style-base @border-color-subtle;
322 .oo-ui-buttonElement-button {
326 .oo-ui-iconElement-icon {
339 .mw-prefs-description {
343 color: @color-subtle;
344 margin-top: 0 !important; /* stylelint-disable-line declaration-no-important */
348 .mw-prefs-header-container {
352 /* Override default inline styles for 'larger' dialog */
353 .oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-active.mw-mobile-pref-window {
357 /* Overriding default inline styles for 'larger' dialog */
358 .mw-mobile-pref-window > .oo-ui-window-frame {
359 width: auto !important; /* stylelint-disable-line declaration-no-important */
360 height: 100% !important; /* stylelint-disable-line declaration-no-important */
361 max-height: 100% !important; /* stylelint-disable-line declaration-no-important */
364 .oo-ui-window-body.mw-mobile-pref-dialog-body {
367 /* T317110: sub-section title */
368 .mw-prefs-fieldset-wrapper {
369 .oo-ui-fieldsetLayout-header {
370 border-bottom: @border-width-base @border-style-base @border-color-base;
373 .oo-ui-labelElement-label {
381 /* T317110: sub-section and sub-sub-section titles */
382 .mw-prefs-fieldset-wrapper .oo-ui-fieldsetLayout-header {
387 /* T317110: preference separation */
388 [ class^='mw-htmlform-field' ] {
390 padding-bottom: 12px;
392 border-bottom: @border-width-base @border-style-base #eaecf0;
399 /* T317110: preference label */
400 .oo-ui-labelElement-label {
404 /* T317110: help text */
410 /* T317110: non-interactive text */
411 .mw-htmlform-field-HTMLInfoField {
412 color: @color-subtle;
416 // Dialog styling for footer buttons
417 .oo-ui-window-foot .mw-htmlform-submit-buttons {
422 .oo-ui-window-body .oo-ui-fieldLayout-messages {
423 background-color: @background-color-base;
426 .oo-ui-iconWidget.mw-prefs-header-icon {
431 margin: 0 16px 0 17px;
434 .mw-prefs-header-title {
435 display: inline-flex;