Merge ~twom/launchpad:sassy-css-transcribe-base into launchpad:master

Proposed by Tom Wardill
Status: Merged
Approved by: Tom Wardill
Approved revision: 723b004ab3a5b8946072aaea7cb597086ecdc289
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: ~twom/launchpad:sassy-css-transcribe-base
Merge into: launchpad:master
Prerequisite: ~twom/launchpad:sassy-css-no-op-css-compilation
Diff against target: 3924 lines (+1942/-1331)
8 files modified
dev/null (+0/-351)
lib/canonical/launchpad/icing/combo.scss (+0/-5)
lib/canonical/launchpad/icing/css/base.scss (+381/-328)
lib/canonical/launchpad/icing/css/colours.scss (+633/-0)
lib/canonical/launchpad/icing/css/forms.scss (+417/-290)
lib/canonical/launchpad/icing/css/layout.scss (+199/-149)
lib/canonical/launchpad/icing/css/modifiers.scss (+166/-140)
lib/canonical/launchpad/icing/css/typography.scss (+146/-68)
Reviewer Review Type Date Requested Status
Thiago F. Pappacena (community) Approve
Review via email: mp+384834@code.launchpad.net

Commit message

Transcribe base css into SCSS

Description of the change

Used https://css2sass.herokuapp.com/ to transcribe the base css to SCSS, extracted some common variables from the single files.
Altered the combo.scss to just import the single base file to make SCSS module migration easier.

To post a comment you must log in.
Revision history for this message
Thiago F. Pappacena (pappacena) wrote :

Ran it locally, and couldn't spot any visual problem.

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/lib/canonical/launchpad/icing/combo.scss b/lib/canonical/launchpad/icing/combo.scss
index 62afbfb..8ad09e9 100644
--- a/lib/canonical/launchpad/icing/combo.scss
+++ b/lib/canonical/launchpad/icing/combo.scss
@@ -18,11 +18,6 @@
18// Include our main stylesheets at the end so they18// Include our main stylesheets at the end so they
19// take precedence over the others.19// take precedence over the others.
20'css/base',20'css/base',
21'css/typography',
22'css/colours',
23'css/forms',
24'css/layout',
25'css/modifiers',
26// This shouldn't require the _index, but doesn't appear to be allowable21// This shouldn't require the _index, but doesn't appear to be allowable
27// in this version of node-sass (v4.14.4)22// in this version of node-sass (v4.14.4)
28'css/components/_index';23'css/components/_index';
diff --git a/lib/canonical/launchpad/icing/css/base.css b/lib/canonical/launchpad/icing/css/base.scss
29similarity index 58%24similarity index 58%
30rename from lib/canonical/launchpad/icing/css/base.css25rename from lib/canonical/launchpad/icing/css/base.css
31rename to lib/canonical/launchpad/icing/css/base.scss26rename to lib/canonical/launchpad/icing/css/base.scss
index ded8b61..68bcce1 100644
--- a/lib/canonical/launchpad/icing/css/base.css
+++ b/lib/canonical/launchpad/icing/css/base.scss
@@ -1,497 +1,550 @@
1// This file the result of auto-converting base.css to scss.
2
1body {3body {
2 /* line-height is the same as the sprite height. */4 /* line-height is the same as the sprite height. */
3 font-family: Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;5 font-family: Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;
4 font-size: 12px;6 font-size: 12px;
5 line-height: 18px;7 line-height: 18px;
6 color: #333;8 color: #333;
7 }
89
9body.private,10 &.private, &.public {
10body.public {11 /* It must be obvious to the user that the context is private */
11 /* It must be obvious to the user that the context is private */12 background-image: none;
12 background-image: none;
13 }13 }
1414
15body.private .private-disallow {15 &.private .private-disallow {
16 /* We want to disable/hide some actions on private artifacts */16 /* We want to disable/hide some actions on private artifacts */
17 display: none;17 display: none;
18 }18 }
19 }
1920
20.private-only {21 .private-only {
21 /* We want to only show some items on private artifacts */22 /* We want to only show some items on private artifacts */
22 display: none;23 display: none;
23 }24 }
2425
25body.private .private-only {26 body.private .private-only {
26 /* We want to only show some items on private artifacts */27 /* We want to only show some items on private artifacts */
27 display: block;28 display: block;
28 }29 }
2930
30hr {31 hr {
31 display: none;32 display: none;
32 }33 }
3334
34dt {35 dt {
35 margin-bottom: .3em;36 margin-bottom: .3em;
36 margin-top: 0.5em;37 margin-top: 0.5em;
37 font-weight: bold;38 font-weight: bold;
38 }
3939
40dt dfn {40 dfn {
41 font-weight: bold;41 font-weight: bold;
42 }42 }
43 }
4344
44dd {45 dd {
45 margin-bottom: .8em;46 margin-bottom: .8em;
46 }47 }
4748
48dl.faq dd {49 dl.faq dd {
49 margin: 1em 0 2em 4em;50 margin: 1em 0 2em 4em;
50 }51 }
5152
52.contributors dt strong {53 .contributors dt strong {
53 padding-left: 1em;54 padding-left: 1em;
54 }55 }
5556
56ol {57 ol {
57 margin-left: 1.8em;58 margin-left: 1.8em;
58 }
5959
60ol li {60 li {
61 list-style: decimal outside;61 list-style: decimal outside;
62 }62 }
63 }
6364
64li {65 li {
65 padding-bottom: .3em;66 padding-bottom: .3em;
66 }67 }
6768
68ul.news,69 ul.news, li.news {
69li.news {
70 list-style-type: none;70 list-style-type: none;
71 margin-bottom: 1em;71 margin-bottom: 1em;
72 }72 }
7373
74ul.architecture,74 ul.architecture, li.architecture {
75li.architecture {
76 list-style-image: url(/@@/architecture);75 list-style-image: url(/@@/architecture);
77 }76 }
7877
79ul.build-success,78 ul.build-success, li.build-success {
80li.build-success {
81 list-style-image: url(/@@/build-success);79 list-style-image: url(/@@/build-success);
82 }80 }
8381
84ul.bug.remote,82 ul.bug.remote, li.bug.remote {
85li.bug.remote {
86 list-style-image: url(/@@/bug-remote);83 list-style-image: url(/@@/bug-remote);
87 }84 }
8885
89ul.language,86 ul.language, li.language {
90li.language {
91 list-style-image: url(/@@/language);87 list-style-image: url(/@@/language);
88
92 /* Disable .language sprite. */89 /* Disable .language sprite. */
93 background: inherit;90 background: inherit;
94 }91 }
9592
96ul.mail,93 ul.mail, li.mail {
97li.mail {
98 list-style-image: url(/@@/mail);94 list-style-image: url(/@@/mail);
99 }95 }
10096
101ul.meeting,97 ul.meeting, li.meeting {
102li.meeting {
103 list-style-image: url(/@@/meeting);98 list-style-image: url(/@@/meeting);
104 }99 }
105100
106ul.rss,101 ul.rss, li.rss {
107li.rss {
108 list-style-image: url(/@@/rss);102 list-style-image: url(/@@/rss);
109 }103 }
110104
111ul.translation,105 ul.translation, li.translation {
112li.translation {
113 list-style-image: url(/@@/translation);106 list-style-image: url(/@@/translation);
114 }107 }
115108
116ul.webref,109 ul.webref, li.webref {
117li.webref {
118 list-style-image: url(/@@/link);110 list-style-image: url(/@@/link);
119 }111 }
120112
121ul.iconed {113 ul {
122 list-style-type: none;114 &.iconed {
123 padding-left: 0 !important;115 list-style-type: none;
124 margin: 0 !important;116 padding-left: 0 !important;
117 margin: 0 !important;
125 }118 }
126119
127ul.buttons {120 &.buttons {
128 /* without !important, gets overridden by the '#maincontent ol' rule */121 /* without !important, gets overridden by the '#maincontent ol' rule */
129 margin: 0.5em 0 0.5em 0 !important;122 margin: 0.5em 0 0.5em 0 !important;
130 padding: 0 !important;123 padding: 0 !important;
131 }
132124
133ul.buttons li {125 li {
134 display: inline;126 display: inline;
135 margin: 0 0 0 0;127 margin: 0 0 0 0;
128 }
136 }129 }
130 }
137131
138.bulleted {132 .bulleted {
139 margin-bottom: 0.5em;133 margin-bottom: 0.5em;
140 }
141134
142.bulleted li {135 li {
143 margin: 0 0 0 2em;136 margin: 0 0 0 2em;
144 list-style-type: disc;137 list-style-type: disc;
145 }138 }
139 }
146140
147.horizontal {141 .horizontal {
148 margin: 1em 0 0 0;142 margin: 1em 0 0 0;
149 }
150143
151.horizontal li {144 li {
152 display: inline;145 display: inline;
153 padding: 0 1.5em 0 0;146 padding: 0 1.5em 0 0;
154 }147 }
148 }
155149
156.subordinate {150 .subordinate {
157 margin-left: 2em;151 margin-left: 2em;
158 }152 }
159153
160ol.subordinate {154 ol.subordinate {
161 margin-left: 4em;155 margin-left: 4em;
162 }156 }
163157
164.two-column-list dl {158 .two-column-list dl {
165 width: 48%;159 width: 48%;
166 float: left;160 float: left;
167 display: inline;161 display: inline;
168 margin: 0 0.25em 0 0;162 margin: 0 0.25em 0 0;
169 }
170163
171.two-column-list dl:first-child dt,164 &:first-child {
172.two-column-list dl:first-child + dl dt {165 dt, + dl dt {
173 margin-top: 0;166 margin-top: 0;
167 }
174 }168 }
169 }
175170
176.three-column-list dl {171 .three-column-list dl {
177 width: 31%;172 width: 31%;
178 float: left;173 float: left;
179 display: inline;174 display: inline;
180 margin: 0 0.25em 0 0;175 margin: 0 0.25em 0 0;
181 }176 }
182177
183.two-column-list li {178 .two-column-list li {
184 width: 48%;179 width: 48%;
185 float: left;180 float: left;
186 display: inline;181 display: inline;
187 margin: 0 0.25em 0 0;182 margin: 0 0.25em 0 0;
188 }183 }
189184
190.three-column-list li {185 .three-column-list li {
191 width: 31%;186 width: 31%;
192 float: left;187 float: left;
193 display: inline;188 display: inline;
194 margin: 0 0.25em 0 0;189 margin: 0 0.25em 0 0;
195 }190 }
196191
197.two-column-list:after,192 .two-column-list:after, .three-column-list:after {
198.three-column-list:after {
199 content: ".";193 content: ".";
200 display: block;194 display: block;
201 height: 0;195 height: 0;
202 clear: both;196 clear: both;
203 visibility: hidden;197 visibility: hidden;
198 }
199
200 .two-column-list {
201 dl.unseen, li.unseen {
202 /* Keep the abilty to hide list entries. */
203 display: none;
204 }204 }
205 }
205206
206.two-column-list dl.unseen,207 .three-column-list {
207.two-column-list li.unseen,208 dl.unseen, li.unseen {
208.three-column-list dl.unseen,209 /* Keep the abilty to hide list entries. */
209.three-column-list li.unseen {210 display: none;
210 /* Keep the abilty to hide list entries. */
211 display: none;
212 }211 }
212 }
213213
214caption {214 caption {
215 caption-side: bottom;215 caption-side: bottom;
216 text-align: left;216 text-align: left;
217 }217 }
218218
219th {219 th {
220 text-align: right;220 text-align: right;
221 }221 vertical-align: baseline;
222 }
222223
223th,224 td {
224td {
225 vertical-align: baseline;225 vertical-align: baseline;
226 }226 }
227227
228.head th,228 .head th, thead th, tr.thead th {
229thead th,
230tr.thead th {
231 text-align: left;229 text-align: left;
232 vertical-align: bottom;230 vertical-align: bottom;
233 }231 }
234232
235th.icon,233 th.icon, td.icon {
236td.icon {
237 vertical-align: top;234 vertical-align: top;
238 white-space: nowrap;235 white-space: nowrap;
239 width: 1px;236 width: 1px;
240 }237 }
241238
242th.icon.left,239 th.icon.left, td.icon.left {
243td.icon.left {
244 padding-right: 0;240 padding-right: 0;
245 }241 }
246242
247th.icon.right,243 th.icon.right, td.icon.right {
248td.icon.right {
249 padding-left: 0;244 padding-left: 0;
250 }245 }
251246
252th.nowrap,247 th.nowrap, td.nowrap {
253td.nowrap {
254 white-space: nowrap;248 white-space: nowrap;
255 }249 }
256250
257tfoot th,251 tfoot th, table.contributions th {
258table.contributions th {
259 text-align: left;252 text-align: left;
260 }253 }
261254
262tr.white {255 tr {
263 background-color: #fff;256 &.white {
257 background-color: #fff;
264 }258 }
265259
266tr.shaded {260 &.shaded {
267 background-color: #f6f6f6;261 background-color: #f6f6f6;
268 }262 }
263 }
269264
270table .amount,265 table {
271table .action-icons {266 .amount, .action-icons {
272 text-align: right;267 text-align: right;
273 }268 }
274269
275table.contributions th {270 &.contributions {
276 font-weight: normal;271 th {
277 }272 font-weight: normal;
273 }
278274
279table.contributions td {275 td {
280 vertical-align: middle;276 vertical-align: middle;
281 width: 16px;277 width: 16px;
282 text-align: left;278 text-align: left;
279 }
283 }280 }
284281
285table.latest th,282 &.latest {
286table.latest td {283 th, td {
287 padding-bottom: 2em;284 padding-bottom: 2em;
285 }
288 }286 }
289287
290table.duplicate.listing * {288 &.duplicate.listing * {
291 color: #999;289 color: #999;
292 }290 }
291 }
293292
294.table-actions:nth-child(2) {293 .table-actions {
295 /* text-align works because the <li> is also display:inline. */294 &:nth-child(2) {
296 text-align: right;295 /* text-align works because the <li> is also display:inline. */
296 text-align: right;
297 }297 }
298298
299.table-actions {
300 margin: 1em 0 0 0;299 margin: 1em 0 0 0;
301 }
302300
303.table-actions li {301 li {
304 display: inline;302 display: inline;
305 padding: 0 1.5em 0 0;303 padding: 0 1.5em 0 0;
306 }304 }
305 }
307306
308table.compressed {307 table {
309 width: auto;308 &.compressed {
310 }309 width: auto;
311310
312table.compressed td {311 td {
313 padding: 0.25em 0.5em;312 padding: 0.25em 0.5em;
313 }
314 }314 }
315315
316table.cozy-listing {316 &.cozy-listing {
317 width: 20em;317 width: 20em;
318 background-color: #fff;318 background-color: #fff;
319 border: 1px solid #d2d2d2;319 border: 1px solid #d2d2d2;
320 border-bottom: 1px solid #d2d2d2;320 border-bottom: 1px solid #d2d2d2;
321 }
322321
323table.cozy-listing td {322 td {
324 border: 1px #d2d2d2;323 border: 1px #d2d2d2;
325 border-style: dotted none none none;324 border-style: dotted none none none;
325 }
326 }326 }
327327
328table.sortable a.sortheader {328 &.sortable {
329 color: #666;329 a.sortheader {
330 font-weight: bold;330 color: #666;
331 text-decoration: none;331 font-weight: bold;
332 display: block;332 text-decoration: none;
333 }333 display: block;
334 }
334335
335table.sortable img.sortarrow {336 img.sortarrow {
336 padding-left: 2px;337 padding-left: 2px;
337 }338 }
338339
339table.sortable th {340 th {
340 cursor: pointer;341 cursor: pointer;
342 }
341 }343 }
344 }
342345
343th.ascending {346 th {
344 background-image: url(/@@/arrowDown);347 &.ascending {
345 background-position: center right;348 background-image: url(/@@/arrowDown);
346 background-repeat: no-repeat;349 background-position: center right;
350 background-repeat: no-repeat;
347 }351 }
348352
349th.descending {353 &.descending {
350 background-image: url(/@@/arrowUp);354 background-image: url(/@@/arrowUp);
351 background-position: center right;355 background-position: center right;
352 background-repeat: no-repeat;356 background-repeat: no-repeat;
353 }357 }
358 }
354359
355.sortkey,360 .sortkey, .revsortkey {
356.revsortkey {
357 /* Used to indicate a value to be used to sort cells in a row */361 /* Used to indicate a value to be used to sort cells in a row */
358 display: none;362 display: none;
359 }363 }
360364
361table.listing {365 table {
362 margin: 0;366 &.listing {
363 width: 100%;367 margin: 0;
364 }368 width: 100%;
365369 border-bottom: 1px solid #d2d2d2;
366table.listing,370
367table.listing tbody,371 tbody, td.end-of-section {
368table.listing td.end-of-section {372 border-bottom: 1px solid #d2d2d2;
369 border-bottom: 1px solid #d2d2d2;373 }
370 }374
371375 th {
372table.listing th {376 font-weight: bold;
373 font-weight: bold;377 }
374 }378
375379 .head, thead {
376table.listing .head,380 border: 1px solid #d2d2d2;
377table.listing .head th,381 background-color: #fff;
378table.listing thead,382
379table.listing thead th,383 th {
380table.listing tfoot tr,384 border: 1px solid #d2d2d2;
381table.listing tr.thead th {385 background-color: #fff;
382 border: 1px solid #d2d2d2;386 }
383 background-color: #fff;387 }
384 }388
385389 tfoot tr {
386table.listing tr.category {390 border: 1px solid #d2d2d2;
387 border-bottom: 1px solid #999;391 background-color: #fff;
388 }392 }
389393
390table.listing tr.category th,394 tr {
391table.listing tr.category td {395 &.thead th {
392 padding-top: 1em;396 border: 1px solid #d2d2d2;
393 }397 background-color: #fff;
394398 }
395table.listing thead td,399
396table.listing table tbody,400 &.category {
397table.listing table thead,401 border-bottom: 1px solid #999;
398table.listing table thead th,402
399table.listing tfoot tr,403 th, td {
400table.listing table tfoot td,404 padding-top: 1em;
401table.listing table td {405 }
402 border: none;406 }
403 }407 }
404408
405table.listing tfoot td {409 thead td {
406 border: 1px solid #d2d2d2;410 border: none;
407 }411 }
408412
409table.listing th,413 table {
410table.listing td {414 tbody {
411 padding: 0.25em;415 border: none;
412 }416 }
413417
414table.listing table th,418 thead {
415table.listing table td {419 border: none;
416 /* We don't want extra padding on nested tables, like batch navigation. */420
417 padding: 0;421 th {
418 }422 border: none;
419423 }
420table.listing thead th,424 }
421table.listing tr.thead th {425 }
422 white-space: nowrap;426
423 }427 tfoot tr {
424428 border: none;
425table.listing td {429 }
426 border: 1px #d2d2d2;430
427 border-style: dotted none none none;431 table {
428 }432 tfoot td, td {
429433 border: none;
430table.listing tr.category:first-child td {434 }
431 border-top-style: none;435 }
432 padding-top: 0;436
433 }437 tfoot td {
434438 border: 1px solid #d2d2d2;
435table.listing .section-break td {439 }
436 border-width: 1px 0 0 0;440
437 border-style: solid;441 th, td {
438 border-color: #d2d2d2;442 padding: 0.25em;
439 height: 1em;443 }
440 }444
441445 table {
442table.listing .note td {446 th, td {
443 border-style: none;447 /* We don't want extra padding on nested tables, like batch navigation. */
444 }448 padding: 0;
445449 }
446table.listing img {450 }
447 vertical-align: middle;451
448 }452 thead th, tr.thead th {
449453 white-space: nowrap;
450table.listing tr.secondary th,454 }
451table.listing tr.secondary td {455
452 border-top: none;456 td {
453 }457 border: 1px #d2d2d2;
454458 border-style: dotted none none none;
455table.listing table.simple {459 }
456 margin-left: 2em;460
457 }461 tr.category:first-child td {
458462 border-top-style: none;
459table.listing table.simple td {463 padding-top: 0;
460 padding: 0.25em;464 }
461 }465
462466 .section-break td {
463table.listing .section-heading {467 border-width: 1px 0 0 0;
464 border: none;468 border-style: solid;
465 padding-top: 1.5em;469 border-color: #d2d2d2;
466 }470 height: 1em;
467471 }
468table.summary th,472
469table.summary td,473 .note td {
470table.listing table.summary th,474 border-style: none;
471table.listing table.summary td {475 }
472 /* Summary tables havesubdued headers and a little row spacing. */476
473 padding: 0 0.5em 0.5em 0;477 img {
474 }478 vertical-align: middle;
475479 }
476table.summary th {480
477 font-weight: normal;481 tr.secondary {
478 }482 th, td {
479483 border-top: none;
480table.summary caption {484 }
481 font-style: italic;485 }
482 margin-left: 1em;486
483 }487 table.simple {
484488 margin-left: 2em;
485table.summary ul,489
486table.summary ul li {490 td {
487 list-style-position: inside;491 padding: 0.25em;
488 margin: 0;492 }
489 padding: 0;493 }
490 }494
491495 .section-heading {
492.results {496 border: none;
497 padding-top: 1.5em;
498 }
499 }
500
501 &.summary {
502 th, td {
503 /* Summary tables havesubdued headers and a little row spacing. */
504 padding: 0 0.5em 0.5em 0;
505 }
506 }
507
508 &.listing table.summary {
509 th, td {
510 /* Summary tables havesubdued headers and a little row spacing. */
511 padding: 0 0.5em 0.5em 0;
512 }
513 }
514
515 &.summary {
516 th {
517 font-weight: normal;
518 }
519
520 caption {
521 font-style: italic;
522 margin-left: 1em;
523 }
524
525 ul {
526 list-style-position: inside;
527 margin: 0;
528 padding: 0;
529
530 li {
531 list-style-position: inside;
532 margin: 0;
533 padding: 0;
534 }
535 }
536 }
537 }
538
539 .results {
493 background-color: #f4f4f4;540 background-color: #f4f4f4;
494 padding: 2px 10px 5px 10px;541 padding: 2px 10px 5px 10px;
495 border-bottom-right-radius: 5px;542 border-bottom-right-radius: 5px;
496 border-bottom-left-radius: 5px;543 border-bottom-left-radius: 5px;
497 }544 }
545
546@import 'typography',
547 'colours',
548 'forms',
549 'layout',
550 'modifiers'
diff --git a/lib/canonical/launchpad/icing/css/colours.css b/lib/canonical/launchpad/icing/css/colours.css
498deleted file mode 100644551deleted file mode 100644
index e43f46d..0000000
--- a/lib/canonical/launchpad/icing/css/colours.css
+++ /dev/null
@@ -1,351 +0,0 @@
1
2
3.questionstatusOPEN {
4 color: #000;
5 }
6.questionstatusNEEDSINFO {
7 /* brown */
8 color: #930;
9 }
10.questionstatusANSWERED {
11 /* grey-green */
12 color: #363;
13 }
14.questionstatusSOLVED {
15 color: #090;
16 }
17.questionstatusEXPIRED {
18 color: #666;
19 }
20.questionstatusINVALID {
21 color: #c00;
22 }
23
24
25.specstatusAPPROVED, .specstatusAPPROVED a {
26 color: green;
27 }
28.specstatusPENDINGAPPROVAL, .specstatusPENDINGAPPROVAL a,
29.specstatusPENDINGREVIEW, .specstatusPENDINGREVIEW a {
30 color: #f09;
31 }
32.specstatusDRAFT, .specstatusDRAFT a,
33.specstatusDISCUSSION, .specstatusDISCUSSION a {
34 color: #930;
35 }
36.specstatusNEW, .specstatusNEW a {
37 color: red;
38 }
39.specstatusSUPERSEDED, .specstatusSUPERSEDED a,
40.specstatusOBSOLETE, .specstatusOBSOLETE a,
41.specpriorityNOTFORUS, .specpriorityNOTFORUS a,
42.specpriorityUNDEFINED, .specpriorityUNDEFINED a {
43 color: gray;
44 }
45.specpriorityLOW, .specpriorityLOW a {
46 color: black;
47 }
48.specpriorityMEDIUM, .specpriorityMEDIUM a {
49 color: #f60;
50 }
51.specpriorityHIGH, .specpriorityHIGH a,
52.specpriorityESSENTIAL, .specpriorityESSENTIAL a {
53 color: red;
54 }
55.specdeliveryUNKNOWN, .specdeliveryUNKNOWN a,
56.specdeliveryNOTSTARTED, .specdeliveryNOTSTARTED a {
57 color: gray;
58 }
59.specdeliveryDEFERRED, .specdeliveryDEFERRED a,
60.specdeliveryNEEDSINFRASTUCTURE, .specdeliveryNEEDSINFRASTUCTURE a,
61.specdeliveryBLOCKED, .specdeliveryBLOCKED a {
62 color: red;
63 }
64.specdeliverySTARTED, .specdeliverySTARTED a,
65.specdeliveryGOOD, .specdeliveryGOOD a {
66 color: blue;
67 }
68.specdeliverySLOW, .specdeliverySLOW a {
69 color: red;
70 }
71.specdeliveryBETA, .specdeliveryBETA a {
72 color: #f60;
73 }
74.specdeliveryNEEDSREVIEW, .specdeliveryNEEDSREVIEW a {
75 color: purple;
76 }
77.specdeliveryAWAITINGDEPLOYMENT, .specdeliveryAWAITINGDEPLOYMENT a {
78 color: red;
79 }
80.specdeliveryIMPLEMENTED, .specdeliveryIMPLEMENTED a,
81.specdeliveryINFORMATIONAL, .specdeliveryINFORMATIONAL a {
82 color: green;
83 }
84
85
86.bug-activity {
87 color: #555;
88 }
89.statusNEW, .statusNEW a {
90 color: #930;
91 }
92.statusINCOMPLETE, .statusINCOMPLETE a,
93.statusCONFIRMED, .statusCONFIRMED a {
94 color: red;
95 }
96.statusTRIAGED, .statusTRIAGED a {
97 color: #f60;
98 }
99.statusINPROGRESS, .statusINPROGRESS a {
100 color: black;
101 }
102.statusFIXCOMMITTED, .statusFIXCOMMITTED a {
103 color: #050;
104 }
105.statusFIXRELEASED, .statusFIXRELEASED a {
106 color: green;
107 }
108.statusINVALID, .statusINVALID a,
109.statusWONTFIX, .statusWONTFIX a,
110.statusOPINION, .statusOPINION a {
111 color: #555;
112 }
113.importanceCRITICAL, .importanceCRITICAL a {
114 color: red;
115 }
116.importanceHIGH, .importanceHIGH a {
117 color: #f60;
118 }
119.importanceMEDIUM, .importanceMEDIUM a {
120 color: green;
121 }
122.importanceLOW, .importanceLOW a {
123 color: black;
124 }
125.importanceWISHLIST, .importanceWISHLIST a {
126 color: blue;
127 }
128.importanceUNDECIDED, .importanceUNDECIDED a {
129 color: #999;
130 }
131#client-listing .statusUNKNOWN, #client-listing .statusUNKNOWN a,
132#client-listing .statusNEW, #client-listing .statusNEW a,
133#client-listing .statusINCOMPLETE, #client-listing .statusINCOMPLETE a {
134 color: #c63600;
135 background-color: #ffdabe;
136 }
137#client-listing .statusCONFIRMED, #client-listing .statusCONFIRMED a,
138#client-listing .statusTRIAGED, #client-listing .statusTRIAGED a {
139 color: #896e00;
140 background-color: #f4f1a4;
141 }
142#client-listing .statusINPROGRESS, #client-listing .statusINPROGRESS a,
143#client-listing .statusFIXCOMMITTED, #client-listing .statusFIXCOMMITTED a {
144 color: #137587;
145 background-color: #cbe7ef;
146 }
147#client-listing .statusFIXRELEASED, #client-listing .statusFIXRELEASED a {
148 color: #4f7b10;
149 background-color: #cef1a0;
150 }
151#client-listing .statusEXPIRED, #client-listing .statusEXPIRED a,
152#client-listing .statusINVALID, #client-listing .statusINVALID a,
153#client-listing .statusWONTFIX, #client-listing .statusWONTFIX a,
154#client-listing .statusOPINION, #client-listing .statusOPINION a {
155 color: #464646;
156 background-color: #ddd;
157 }
158#client-listing .importanceCRITICAL, #client-listing .importanceCRITICAL a {
159 background-color: #DF382C;
160 color: white;
161 }
162#client-listing .importanceHIGH, #client-listing .importanceHIGH a {
163 background-color: #EFB73E;
164 color: white;
165 }
166#client-listing .importanceMEDIUM, #client-listing .importanceMEDIUM a {
167 background-color: #19B6EE;
168 color: white;
169 }
170#client-listing .importanceLOW, #client-listing .importanceLOW a {
171 background-color: #38B44A;
172 color: white;
173 }
174#client-listing .importanceWISHLIST, #client-listing .importanceWISHLIST a {
175 background-color: #724dc8;
176 color: white;
177 }
178#client-listing .importanceUNDECIDED, #client-listing .importanceUNDECIDED a {
179 background-color: #666666;
180 color: white;
181 }
182
183a.official-tag {
184 /* Looks just like a normal link */
185 }
186a.unofficial-tag {
187 color: #6699ee;
188 }
189
190
191
192.vcsimportSUCCESS {
193 /* inherited text color */
194 }
195.vcsimportFAILURE {
196 color: Red;
197 }
198.greylink a:link, .greylink a:visited {
199 color: gray;
200 }
201.stale-diff {
202 color: #f60;
203 }
204.conflicts-diff {
205 color: red;
206 }
207.branchstatusMATURE, .branchstatusMATURE a {
208 color: #090;
209 }
210.branchstatusDEVELOPMENT, .branchstatusDEVELOPMENT a {
211 color: #900;
212 }
213.branchstatusEXPERIMENTAL, .branchstatusEXPERIMENTAL a {
214 color: #930;
215 }
216.branchstatusMERGED, .branchstatusMERGED a,
217.branchstatusABANDONED, .branchstatusABANDONED a {
218 color: gray;
219 }
220.branchstatusNEW, .branchstatusNEW a {
221 color: black;
222 }
223.voteAPPROVE {
224 color: green;
225 }
226.voteNEEDS_FIXING {
227 color: #930;
228 }
229.voteDISAPPROVE,
230.voteRESUBMIT {
231 color: red;
232 }
233.voteABSTAIN {
234 color: #666;
235 }
236.votePENDING {
237 color: #f60;
238 }
239.mergestatusWORK_IN_PROGRESS, .mergestatusWORK_IN_PROGRESS a {
240 color: black;
241 }
242.mergestatusNEEDS_REVIEW, .mergestatusNEEDS_REVIEW a {
243 color: #f60;
244 }
245.mergestatusCODE_APPROVED, .mergestatusCODE_APPROVED a,
246.mergestatusMERGED, .mergestatusMERGED a {
247 color: green;
248 }
249.mergestatusREJECTED, .mergestatusREJECTED a,
250.mergestatusMERGE_FAILED, .mergestatusMERGE_FAILED a {
251 color: red;
252 }
253.mergestatusQUEUED, .mergestatusQUEUED a {
254 color: black;
255 }
256.mergestatusSUPERSEDED, .mergestatusSUPERSEDED a {
257 color: #666;
258 }
259.codeimportNEW {
260 color: #930;
261 }
262.codeimportREVIEWED {
263 color: green;
264 }
265.codeimportINVALID,
266.codeimportSUSPENDED,
267.codeimportFAILING {
268 color: red;
269 }
270
271
272.translationimportstatusAPPROVED,
273.translationimportstatusAPPROVED a {
274 color: #050;
275 }
276.translationimportstatusIMPORTED,
277.translationimportstatusIMPORTED a {
278 color: green;
279 }
280.translationimportstatusDELETED,
281.translationimportstatusDELETED a {
282 color: black;
283 }
284.translationimportstatusFAILED,
285.translationimportstatusFAILED a {
286 color: red;
287 }
288.translationimportstatusNEEDS_REVIEW,
289.translationimportstatusNEEDS_REVIEW a {
290 color: #f60;
291 }
292.translationimportstatusBLOCKED,
293.translationimportstatusBLOCKED a {
294 color: blue;
295 }
296.translationimportstatusNEEDS_INFORMATION,
297.translationimportstatusNEEDS_INFORMATION a {
298 color: maroon;
299 }
300.dismissed, .dismissed a {
301 color: #666;
302 }
303
304
305.distromirrorstatusUP,
306.distromirrorstatusONEHOURBEHIND,
307.distromirrorstatusTWOHOURSBEHIND,
308.distromirrorstatusFOURHOURSBEHIND,
309.distromirrorstatusSIXHOURSBEHIND {
310 color: green;
311 }
312.distromirrorstatusONEDAYBEHIND {
313 color: #f60;
314 }
315.distromirrorstatusTWODAYSBEHIND,
316.distromirrorstatusONEWEEKBEHIND {
317 color: red;
318 }
319.distromirrorstatusUNKNOWN {
320 color: #666;
321 }
322.buildstatusNEEDSBUILD {
323 color: gray;
324 }
325.buildstatusBUILDING {
326 color: black;
327 }
328.buildstatusFULLYBUILT {
329 color: green;
330 }
331.buildstatusFAILEDTOBUILD,
332.buildstatusMANUALDEPWAIT,
333.buildstatusCHROOTWAIT,
334.buildstatusSUPERSEDED,
335.buildstatusFAILEDTOUPLOAD {
336 color: red;
337 }
338
339
340.launchpad-gold {
341 color: #F8C300;
342 }
343
344
345.green {
346 color: green;
347}
348
349.red {
350 color: red;
351}
diff --git a/lib/canonical/launchpad/icing/css/colours.scss b/lib/canonical/launchpad/icing/css/colours.scss
352new file mode 1006440new file mode 100644
index 0000000..6b4c041
--- /dev/null
+++ b/lib/canonical/launchpad/icing/css/colours.scss
@@ -0,0 +1,633 @@
1.questionstatusOPEN {
2 color: #000;
3 }
4
5 .questionstatusNEEDSINFO {
6 /* brown */
7 color: #930;
8 }
9
10 .questionstatusANSWERED {
11 /* grey-green */
12 color: #363;
13 }
14
15 .questionstatusSOLVED {
16 color: #090;
17 }
18
19 .questionstatusEXPIRED {
20 color: #666;
21 }
22
23 .questionstatusINVALID {
24 color: #c00;
25 }
26
27 .specstatusAPPROVED {
28 color: green;
29
30 a {
31 color: green;
32 }
33 }
34
35 .specstatusPENDINGAPPROVAL, .specstatusPENDINGREVIEW {
36 color: #f09;
37
38 a {
39 color: #f09;
40 }
41 }
42
43 .specstatusDRAFT, .specstatusDISCUSSION {
44 color: #930;
45
46 a {
47 color: #930;
48 }
49 }
50
51 .specstatusNEW {
52 color: red;
53
54 a {
55 color: red;
56 }
57 }
58
59 .specstatusSUPERSEDED, .specstatusOBSOLETE, .specpriorityNOTFORUS, .specpriorityUNDEFINED {
60 color: gray;
61
62 a {
63 color: gray;
64 }
65 }
66
67 .specpriorityLOW {
68 color: black;
69
70 a {
71 color: black;
72 }
73 }
74
75 .specpriorityMEDIUM {
76 color: #f60;
77
78 a {
79 color: #f60;
80 }
81 }
82
83 .specpriorityHIGH, .specpriorityESSENTIAL {
84 color: red;
85
86 a {
87 color: red;
88 }
89 }
90
91 .specdeliveryUNKNOWN, .specdeliveryNOTSTARTED {
92 color: gray;
93
94 a {
95 color: gray;
96 }
97 }
98
99 .specdeliveryDEFERRED, .specdeliveryNEEDSINFRASTUCTURE, .specdeliveryBLOCKED {
100 color: red;
101
102 a {
103 color: red;
104 }
105 }
106
107 .specdeliverySTARTED, .specdeliveryGOOD {
108 color: blue;
109
110 a {
111 color: blue;
112 }
113 }
114
115 .specdeliverySLOW {
116 color: red;
117
118 a {
119 color: red;
120 }
121 }
122
123 .specdeliveryBETA {
124 color: #f60;
125
126 a {
127 color: #f60;
128 }
129 }
130
131 .specdeliveryNEEDSREVIEW {
132 color: purple;
133
134 a {
135 color: purple;
136 }
137 }
138
139 .specdeliveryAWAITINGDEPLOYMENT {
140 color: red;
141
142 a {
143 color: red;
144 }
145 }
146
147 .specdeliveryIMPLEMENTED, .specdeliveryINFORMATIONAL {
148 color: green;
149
150 a {
151 color: green;
152 }
153 }
154
155 .bug-activity {
156 color: #555;
157 }
158
159 .statusNEW {
160 color: #930;
161
162 a {
163 color: #930;
164 }
165 }
166
167 .statusINCOMPLETE, .statusCONFIRMED {
168 color: red;
169
170 a {
171 color: red;
172 }
173 }
174
175 .statusTRIAGED {
176 color: #f60;
177
178 a {
179 color: #f60;
180 }
181 }
182
183 .statusINPROGRESS {
184 color: black;
185
186 a {
187 color: black;
188 }
189 }
190
191 .statusFIXCOMMITTED {
192 color: #050;
193
194 a {
195 color: #050;
196 }
197 }
198
199 .statusFIXRELEASED {
200 color: green;
201
202 a {
203 color: green;
204 }
205 }
206
207 .statusINVALID, .statusWONTFIX, .statusOPINION {
208 color: #555;
209
210 a {
211 color: #555;
212 }
213 }
214
215 .importanceCRITICAL {
216 color: red;
217
218 a {
219 color: red;
220 }
221 }
222
223 .importanceHIGH {
224 color: #f60;
225
226 a {
227 color: #f60;
228 }
229 }
230
231 .importanceMEDIUM {
232 color: green;
233
234 a {
235 color: green;
236 }
237 }
238
239 .importanceLOW {
240 color: black;
241
242 a {
243 color: black;
244 }
245 }
246
247 .importanceWISHLIST {
248 color: blue;
249
250 a {
251 color: blue;
252 }
253 }
254
255 .importanceUNDECIDED {
256 color: #999;
257
258 a {
259 color: #999;
260 }
261 }
262
263 #client-listing {
264 .statusUNKNOWN, .statusNEW, .statusINCOMPLETE {
265 color: #c63600;
266 background-color: #ffdabe;
267
268 a {
269 color: #c63600;
270 background-color: #ffdabe;
271 }
272 }
273
274 .statusCONFIRMED, .statusTRIAGED {
275 color: #896e00;
276 background-color: #f4f1a4;
277
278 a {
279 color: #896e00;
280 background-color: #f4f1a4;
281 }
282 }
283
284 .statusINPROGRESS, .statusFIXCOMMITTED {
285 color: #137587;
286 background-color: #cbe7ef;
287
288 a {
289 color: #137587;
290 background-color: #cbe7ef;
291 }
292 }
293
294 .statusFIXRELEASED {
295 color: #4f7b10;
296 background-color: #cef1a0;
297
298 a {
299 color: #4f7b10;
300 background-color: #cef1a0;
301 }
302 }
303
304 .statusEXPIRED, .statusINVALID, .statusWONTFIX, .statusOPINION {
305 color: #464646;
306 background-color: #ddd;
307
308 a {
309 color: #464646;
310 background-color: #ddd;
311 }
312 }
313
314 .importanceCRITICAL {
315 background-color: #DF382C;
316 color: white;
317
318 a {
319 background-color: #DF382C;
320 color: white;
321 }
322 }
323
324 .importanceHIGH {
325 background-color: #EFB73E;
326 color: white;
327
328 a {
329 background-color: #EFB73E;
330 color: white;
331 }
332 }
333
334 .importanceMEDIUM {
335 background-color: #19B6EE;
336 color: white;
337
338 a {
339 background-color: #19B6EE;
340 color: white;
341 }
342 }
343
344 .importanceLOW {
345 background-color: #38B44A;
346 color: white;
347
348 a {
349 background-color: #38B44A;
350 color: white;
351 }
352 }
353
354 .importanceWISHLIST {
355 background-color: #724dc8;
356 color: white;
357
358 a {
359 background-color: #724dc8;
360 color: white;
361 }
362 }
363
364 .importanceUNDECIDED {
365 background-color: #666666;
366 color: white;
367
368 a {
369 background-color: #666666;
370 color: white;
371 }
372 }
373 }
374
375 a {
376 &.official-tag {
377 /* Looks just like a normal link */
378 }
379
380 &.unofficial-tag {
381 color: #6699ee;
382 }
383 }
384
385 .vcsimportSUCCESS {
386 /* inherited text color */
387 }
388
389 .vcsimportFAILURE {
390 color: Red;
391 }
392
393 .greylink a {
394 &:link, &:visited {
395 color: gray;
396 }
397 }
398
399 .stale-diff {
400 color: #f60;
401 }
402
403 .conflicts-diff {
404 color: red;
405 }
406
407 .branchstatusMATURE {
408 color: #090;
409
410 a {
411 color: #090;
412 }
413 }
414
415 .branchstatusDEVELOPMENT {
416 color: #900;
417
418 a {
419 color: #900;
420 }
421 }
422
423 .branchstatusEXPERIMENTAL {
424 color: #930;
425
426 a {
427 color: #930;
428 }
429 }
430
431 .branchstatusMERGED, .branchstatusABANDONED {
432 color: gray;
433
434 a {
435 color: gray;
436 }
437 }
438
439 .branchstatusNEW {
440 color: black;
441
442 a {
443 color: black;
444 }
445 }
446
447 .voteAPPROVE {
448 color: green;
449 }
450
451 .voteNEEDS_FIXING {
452 color: #930;
453 }
454
455 .voteDISAPPROVE, .voteRESUBMIT {
456 color: red;
457 }
458
459 .voteABSTAIN {
460 color: #666;
461 }
462
463 .votePENDING {
464 color: #f60;
465 }
466
467 .mergestatusWORK_IN_PROGRESS {
468 color: black;
469
470 a {
471 color: black;
472 }
473 }
474
475 .mergestatusNEEDS_REVIEW {
476 color: #f60;
477
478 a {
479 color: #f60;
480 }
481 }
482
483 .mergestatusCODE_APPROVED, .mergestatusMERGED {
484 color: green;
485
486 a {
487 color: green;
488 }
489 }
490
491 .mergestatusREJECTED, .mergestatusMERGE_FAILED {
492 color: red;
493
494 a {
495 color: red;
496 }
497 }
498
499 .mergestatusQUEUED {
500 color: black;
501
502 a {
503 color: black;
504 }
505 }
506
507 .mergestatusSUPERSEDED {
508 color: #666;
509
510 a {
511 color: #666;
512 }
513 }
514
515 .codeimportNEW {
516 color: #930;
517 }
518
519 .codeimportREVIEWED {
520 color: green;
521 }
522
523 .codeimportINVALID, .codeimportSUSPENDED, .codeimportFAILING {
524 color: red;
525 }
526
527 .translationimportstatusAPPROVED {
528 color: #050;
529
530 a {
531 color: #050;
532 }
533 }
534
535 .translationimportstatusIMPORTED {
536 color: green;
537
538 a {
539 color: green;
540 }
541 }
542
543 .translationimportstatusDELETED {
544 color: black;
545
546 a {
547 color: black;
548 }
549 }
550
551 .translationimportstatusFAILED {
552 color: red;
553
554 a {
555 color: red;
556 }
557 }
558
559 .translationimportstatusNEEDS_REVIEW {
560 color: #f60;
561
562 a {
563 color: #f60;
564 }
565 }
566
567 .translationimportstatusBLOCKED {
568 color: blue;
569
570 a {
571 color: blue;
572 }
573 }
574
575 .translationimportstatusNEEDS_INFORMATION {
576 color: maroon;
577
578 a {
579 color: maroon;
580 }
581 }
582
583 .dismissed {
584 color: #666;
585
586 a {
587 color: #666;
588 }
589 }
590
591 .distromirrorstatusUP, .distromirrorstatusONEHOURBEHIND, .distromirrorstatusTWOHOURSBEHIND, .distromirrorstatusFOURHOURSBEHIND, .distromirrorstatusSIXHOURSBEHIND {
592 color: green;
593 }
594
595 .distromirrorstatusONEDAYBEHIND {
596 color: #f60;
597 }
598
599 .distromirrorstatusTWODAYSBEHIND, .distromirrorstatusONEWEEKBEHIND {
600 color: red;
601 }
602
603 .distromirrorstatusUNKNOWN {
604 color: #666;
605 }
606
607 .buildstatusNEEDSBUILD {
608 color: gray;
609 }
610
611 .buildstatusBUILDING {
612 color: black;
613 }
614
615 .buildstatusFULLYBUILT {
616 color: green;
617 }
618
619 .buildstatusFAILEDTOBUILD, .buildstatusMANUALDEPWAIT, .buildstatusCHROOTWAIT, .buildstatusSUPERSEDED, .buildstatusFAILEDTOUPLOAD {
620 color: red;
621 }
622
623 .launchpad-gold {
624 color: #F8C300;
625 }
626
627 .green {
628 color: green;
629 }
630
631 .red {
632 color: red;
633 }
diff --git a/lib/canonical/launchpad/icing/css/forms.css b/lib/canonical/launchpad/icing/css/forms.scss
0similarity index 68%634similarity index 68%
1rename from lib/canonical/launchpad/icing/css/forms.css635rename from lib/canonical/launchpad/icing/css/forms.css
2rename to lib/canonical/launchpad/icing/css/forms.scss636rename to lib/canonical/launchpad/icing/css/forms.scss
index f946c69..592408d 100644
--- a/lib/canonical/launchpad/icing/css/forms.css
+++ b/lib/canonical/launchpad/icing/css/forms.scss
@@ -1,458 +1,585 @@
1// This file the result of auto-converting forms.css to scss.
2
1form {3form {
2 margin-bottom: 1em;4 margin-bottom: 1em;
5
6 h1 {
7 margin-bottom: 1em;
3 }8 }
4form h1 {9
5 margin-bottom: 1em;10 table {
6 }11 th, td {
7form table th, form table td {12 padding: 2px;
8 padding: 2px;13 }
9 }14
10form table tbody th {15 tbody th, label {
11 font-weight: bold;16 font-weight: bold;
12 }17 }
13form table label {
14 font-weight: bold;
15 }18 }
16.compound {19 }
20
21 .compound {
17 margin-bottom: .5em;22 margin-bottom: .5em;
18 }23 }
19.field.subordinate label {24
25 .field.subordinate label {
20 font-weight: normal;26 font-weight: normal;
21 }27 }
22fieldset {28
29 fieldset {
23 border-width: 2px 0 0;30 border-width: 2px 0 0;
24 margin: 1em 0;31 margin: 1em 0;
25 padding: 1em 0 0;32 padding: 1em 0 0;
26 }33 }
27label {34
35 label {
28 white-space: nowrap;36 white-space: nowrap;
37 }
38
39 input {
40 &[type='image'] {
41 vertical-align: middle;
29 }42 }
30input[type='image'] {43
31 vertical-align: middle;
32 }
33input {
34 visibility: inherit;44 visibility: inherit;
45
46 &[type=radio] {
47 margin-left: 1em;
35 }48 }
36input[type=radio],49 }
37.processors input {50
51 .processors input {
38 margin-left: 1em;52 margin-left: 1em;
39 }53 }
40input.urlTextType {54
55 input.urlTextType {
41 width: 40em;56 width: 40em;
42 }57 }
43textarea {58
59 textarea {
44 display: block;60 display: block;
45 width: 90%;61 width: 90%;
46 max-width: 60em;62 max-width: 60em;
47 padding: 2px;63 padding: 2px;
48 }64 }
49button {65
66 button {
50 padding: 0;67 padding: 0;
51 }68
52button.overlay-close-button {69 &.overlay-close-button {
53 float: right;70 float: right;
54 width: 15px;71 width: 15px;
55 height: 15px;72 height: 15px;
56 display: block;73 display: block;
57 margin-top: 4px;74 margin-top: 4px;
58 }75 }
59input[type=input] + button,76 }
60img[src$=spinner] + button {77
78 input[type=input] + button, img[src$=spinner] + button {
61 margin-left: 6px !important;79 margin-left: 6px !important;
62 }80 }
63.selection-choices {81
64 margin: 0.75em 0 0 1em82 .selection-choices {
65 }83 margin: 0.75em 0 0 1em;
66.fieldRequired, .fieldOptional {84 }
85
86 .fieldRequired, .fieldOptional {
67 color: #999;87 color: #999;
68 }88 }
69.field.subordinate {89
90 .field.subordinate {
70 margin-left: 2.6em;91 margin-left: 2.6em;
71 }92 }
72.formHelp {93
94 .formHelp {
73 max-width: 45em;95 max-width: 45em;
74 margin: 0.2em 0 0.5em 0.2em;96 margin: 0.2em 0 0.5em 0.2em;
75 color: #666;97 color: #666;
76 }98 }
77.subordinate[type="checkbox"] + label + .formHelp {99
100 .subordinate[type="checkbox"] + label + .formHelp {
78 margin-left: 3.4em;101 margin-left: 3.4em;
79 }102 }
80.listbox {103
104 .listbox {
81 /* a scrolling list of checkboxes or radio buttons */105 /* a scrolling list of checkboxes or radio buttons */
82 border: 1px solid #8cacbb;106 border: 1px solid #8cacbb;
83 display: inline-block;107 display: inline-block;
84 max-height: 12em;108 max-height: 12em;
85 overflow: auto;109 overflow: auto;
86 overflow: -moz-scrollbars-vertical;110 overflow: -moz-scrollbars-vertical;
111
112 label {
113 background-color: #f6f6f6;
114 border: solid white;
115 border-width: 0 0 1px 0;
116 display: block;
87 }117 }
88.listbox label {118 }
89 background-color: #f6f6f6;119
90 border: solid white;120 .extra-form-buttons {
91 border-width: 0 0 1px 0;
92 display: block;
93 }
94.extra-form-buttons {
95 text-align: center;121 text-align: center;
96 padding-top: 1em;122 padding-top: 1em;
123
124 button {
125 margin-right: 0.7em;
97 }126 }
98.extra-form-buttons button {127 }
99 margin-right: 0.7em;
100 }
101.actions * {
102 /*
103 Action links are those that begin the process of doing something.
104 For example, "Register a branch", "Edit profile", "Link to CVE".
105 When presented inline, they are rendered by launchpad-inline-link.pt.
106128
107 Action buttons are those that submit a multi-row form.129 .actions {
108 Often an action button will have an "or _Cancel_" link next to it.130 * {
131 /*
132 Action links are those that begin the process of doing something.
133 For example, "Register a branch", "Edit profile", "Link to CVE".
134 When presented inline, they are rendered by launchpad-inline-link.pt.
109135
110 We want 0.5em horizontal gap between links and buttons in these136 Action buttons are those that submit a multi-row form.
111 sections. Using margin-left would cause a bad gap to the left of a137 Often an action button will have an "or _Cancel_" link next to it.
112 leftmost item. Using margin-right would cause a bad gap to the right of138
113 a rightmost item. We could fix these problems with :first-child/:last-139 We want 0.5em horizontal gap between links and buttons in these
114 child, but not in IE. So we do something a little tricky. We go ahead140 sections. Using margin-left would cause a bad gap to the left of a
115 and give each child of the actions container a right margin:141 leftmost item. Using margin-right would cause a bad gap to the right of
116 */142 a rightmost item. We could fix these problems with :first-child/:last-
117 margin-right: 0.5em;143 child, but not in IE. So we do something a little tricky. We go ahead
118 }144 and give each child of the actions container a right margin:
119.actions * * {145 */
120 /* because ">" doesn't work in IE6 */146 margin-right: 0.5em;
121 margin-right: 0;147
148 * {
149 /* because ">" doesn't work in IE6 */
150 margin-right: 0;
151 }
122 }152 }
123.actions {153
124 /* Then in addition to the top/bottom margins of the actions container,154 /* Then in addition to the top/bottom margins of the actions container,
125 we give it a *negative* right margin, cancelling out that of the last155 we give it a *negative* right margin, cancelling out that of the last
126 child. */156 child. */
127 margin: 1em -0.5em 1em 0;157 margin: 1em -0.5em 1em 0;
158 }
159
160 table {
161 &.radio-button-widget tr td {
162 /* Opera doesn't use the general tr above for the radio button table */
163 vertical-align: top;
128 }164 }
129table.radio-button-widget tr td {165
130 /* Opera doesn't use the general tr above for the radio button table */166 &.listing div {
131 vertical-align: top;167 &.field > {
132 }168 table {
133table.listing div.field>table {169 /* Hack to add breathing room to bug status forms: */
134 /* Hack to add breathing room to bug status forms: */170 margin-top: 0.5em;
135 margin-top: 0.5em;171 }
136 }172
137table.listing div.field>label,173 label, div > label {
138table.listing div.field>div>label,174 display: block;
139table.listing div.actions {175 margin-top: 1em;
140 display: block;176 }
141 margin-top: 1em;177 }
142 }178
143table.form, table.extra-options {179 &.actions {
144 /* Many forms are laid out using tables, with appropriate spacing: */180 display: block;
145 /* http://launchpad.test/firefox/+edit */181 margin-top: 1em;
146 margin: 1em 0 inherit inherit;182 }
147 width: 100%;
148 }
149table.form th {
150 font-weight: normal;
151 }183 }
152table.form th, table.form td,184
153table.form table.extra-options td,185 &.form, &.extra-options {
154table.form table.extra-options th {186 /* Many forms are laid out using tables, with appropriate spacing: */
155 padding-bottom: 1em;187 /* http://launchpad.test/firefox/+edit */
188 margin: 1em 0 inherit inherit;
189 width: 100%;
156 }190 }
157table.form table.listing th,191
158table.form table.listing td {192 &.form {
159 padding-bottom: 0.25em;193 th {
160}194 font-weight: normal;
161table.form td td {195 padding-bottom: 1em;
162 padding-bottom: 0;196 }
197
198 td {
199 padding-bottom: 1em;
200 }
201
202 table {
203 &.extra-options {
204 td, th {
205 padding-bottom: 1em;
206 }
207 }
208
209 &.listing {
210 th, td {
211 padding-bottom: 0.25em;
212 }
213 }
214 }
215
216 td td {
217 padding-bottom: 0;
218 }
163 }219 }
164.long td {220 }
165 /* Long forms are composed of multiple tables and visible fieldsets */221
166 padding-right: 1em;222 .long {
223 td {
224 /* Long forms are composed of multiple tables and visible fieldsets */
225 padding-right: 1em;
167 }226 }
168.long fieldset {227
169 margin-top: 1em;228 fieldset {
229 margin-top: 1em;
170 }230 }
171.long legend {231
172 color: #666;232 legend {
173 font-weight: bold;233 color: #666;
234 font-weight: bold;
174 }235 }
175.collapsible {236 }
237
238 .collapsible {
176 /* Collapsible sections239 /* Collapsible sections
177 Some page sections are hidden by default, expanded by clicking a link.240 Some page sections are hidden by default, expanded by clicking a link.
178 see lp.js:activate_collapsibles() */241 see lp.js:activate_collapsibles() */
179 border: none;242 border: none;
180 margin: 0;243 margin: 0;
244 }
245
246 fieldset.collapsible {
247 padding: 16px 0 0;
248
249 /* "Add a comment/attachment" form in bug reports */
250 }
251
252 .collapsible {
253 h2 {
254 margin-top: 0;
181 }255 }
182fieldset.collapsible {256
183 padding: 16px 0 0; /* "Add a comment/attachment" form in bug reports */257 .collapsed {
184 }258 display: none;
185.collapsible h2 {
186 margin-top: 0;
187 }
188.collapsible .collapsed {
189 display: none;
190 }259 }
191.collapsible .expanded {260
192 display: block;261 .expanded {
262 display: block;
193 }263 }
194.collapsible > :first-child {264
195 font-weight: normal;265 > :first-child {
266 font-weight: normal;
267 text-decoration: none;
196 }268 }
197.collapsible > :first-child, .collapsible :first-child a:hover {269
198 text-decoration: none;270 :first-child a:hover {
271 text-decoration: none;
199 }272 }
200.collapsible > :first-child a span {273
201 text-decoration: underline;274 > :first-child a span {
275 text-decoration: underline;
202 }276 }
203img.collapseIcon {277 }
278
279 img.collapseIcon {
204 text-decoration: none;280 text-decoration: none;
205 vertical-align: middle;281 vertical-align: middle;
206 }282 }
207.collapsible .collapsed {283
284 .collapsible .collapsed {
208 border: none;285 border: none;
209 margin-bottom: 0;286 margin-bottom: 0;
287 }
288
289 .yui3-pretty-overlay #yui3-pretty-overlay-modal {
290 h1, h2 {
291 /* lazr is injecting presumptive markup. */
292 color: #333;
293 margin-right: 15px;
210 }294 }
211.yui3-pretty-overlay #yui3-pretty-overlay-modal h1,295 }
212.yui3-pretty-overlay #yui3-pretty-overlay-modal h2 {296
213 /* lazr is injecting presumptive markup. */297 .yui3-editable_text {
214 color: #333;
215 margin-right: 15px;
216 }
217.yui3-editable_text {
218 outline: none;298 outline: none;
219 }299 }
220.yui3-ieditor {300
301 .yui3-ieditor {
221 padding-right: 288px;302 padding-right: 288px;
222 }303 }
223.yui3-skin-sam .yui3-ieditor-input {304
305 .yui3-skin-sam .yui3-ieditor-input {
224 margin-top: 0;306 margin-top: 0;
225}307 }
226h1 .yui3-ieditor-errors {308
309 h1 .yui3-ieditor-errors {
227 font-size: 12px;310 font-size: 12px;
228 }311 }
229.steps h2 {312
313 .steps h2 {
230 /* lazr is injecting presumptive markup. */314 /* lazr is injecting presumptive markup. */
231 font-size: 12px;315 font-size: 12px;
232 line-height: 30px;316 line-height: 30px;
233 }317 }
234.step-links {318
319 .step-links {
235 padding-top: 0;320 padding-top: 0;
236 padding-bottom: 0;321 padding-bottom: 0;
237 margin-left: 0.75em;322 margin-left: 0.75em;
238 margin-right: 10em;323 margin-right: 10em;
239 text-align: left;324 text-align: left;
325
326 .prev {
327 margin-right: 0.7em;
240 }328 }
241.step-links .prev {329 }
242 margin-right: 0.7em;330
243 }331 .lazr-multiline-edit {
244.lazr-multiline-edit .yui3-ieditor {332 .yui3-ieditor {
245 padding-right: 0;333 padding-right: 0;
246 }334 }
247.lazr-multiline-edit .clearfix h3 {335
248 /* Undo the damage done by lazr. */336 .clearfix h3 {
249 font-family: Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;337 /* Undo the damage done by lazr. */
250 line-height: 12px;338 font-family: Ubuntu, 'Bitstream Vera Sans', 'DejaVu Sans', Tahoma, sans-serif;
339 line-height: 12px;
251 }340 }
252.widget-hd.js-action {341 }
342
343 .widget-hd.js-action {
253 /* The js-action class is also used for non-links, for example, with344 /* The js-action class is also used for non-links, for example, with
254 expand/collapse sections. */345 expand/collapse sections. */
255 color: #093;346 color: #093;
256 cursor: pointer;347 cursor: pointer;
348
349 &:hover {
350 text-decoration: underline;
257 }351 }
258.widget-hd.js-action:hover {352 }
259 text-decoration: underline;
260 }
261353
262.yui3-ichoicesource-content .value:hover {354 .yui3-ichoicesource-content .value:hover {
263 text-decoration: underline;355 text-decoration: underline;
264 cursor: pointer;356 cursor: pointer;
265 }357 }
266358
267.no-click:hover {359 .no-click:hover {
268 text-decoration: none !important;360 text-decoration: none !important;
269 cursor: default !important;361 cursor: default !important;
270 }362 }
271 363
272.yui3-buglisting-config-util a {364 .yui3-buglisting-config-util a {
273 position: relative;365 position: relative;
274 top: 3px;366 top: 3px;
275 left: 4px;367 left: 4px;
276 }368 }
277.yui3-baseconfigutil a {369
370 .yui3-baseconfigutil a {
278 cursor: pointer;371 cursor: pointer;
372 }
373
374 .yui3-buglisting-config-util-overlay {
375 a.close-button {
376 visibility: inherit;
279 }377 }
280.yui3-buglisting-config-util-overlay a.close-button {378
281 visibility: inherit;379 form {
282 }380 width: 80%;
283.yui3-buglisting-config-util-overlay form {
284 width: 80%;
285 }381 }
286.yui3-buglisting-config-util-overlay div.yui3-lazr-formoverlay-actions {382
287 text-align: left;383 div.yui3-lazr-formoverlay-actions {
384 text-align: left;
288 }385 }
289.yui3-buglisting-config-util-overlay .reset-buglisting {386
290 position: relative;387 .reset-buglisting {
291 top: 20px;388 position: relative;
292 left: 75px;389 top: 20px;
293 cursor: pointer;390 left: 75px;
391 cursor: pointer;
294 }392 }
295.error.message, .warning.message, .informational.message {393 }
394
395 .error.message, .warning.message, .informational.message {
296 border: solid #666;396 border: solid #666;
297 border-width: 1px 2px 2px 1px;397 border-width: 1px 2px 2px 1px;
298 color: black;398 color: black;
299 margin: 1em auto 1em auto;399 margin: 1em auto 1em auto;
300 padding: 0 1em 1em 2em;400 padding: 0 1em 1em 2em;
301 width: 30em;401 width: 30em;
302 }402 }
303.error.message::before, .warning.message::before,403
304.informational.message::before {404 .error.message::before, .warning.message::before, .informational.message::before {
305 /* The alerts are preceded with an icon overlaying the top left corner: */405 /* The alerts are preceded with an icon overlaying the top left corner: */
306 display: block;406 display: block;
307 margin: -15px 0 -6px -35px;407 margin: -15px 0 -6px -35px;
308 }408 }
309.error {409
410 .error {
310 /* Error messages are pink, with alerts having an error icon: */411 /* Error messages are pink, with alerts having an error icon: */
311 background: #ffe4e4;412 background: #ffe4e4;
413
414 &.message::before {
415 content: url(/@@/error-large);
312 }416 }
313.error.message::before {417 }
314 content: url(/@@/error-large);418
315 }419 .warning {
316.warning {
317 /* Warning messages are orange, with alerts having a warning icon: */420 /* Warning messages are orange, with alerts having a warning icon: */
318 background: #fff59c;421 background: #fff59c;
422
423 &.message::before {
424 content: url(/@@/warning-large);
319 }425 }
320.warning.message::before {426 }
321 content: url(/@@/warning-large);427
322 }428 .informational {
323.informational {
324 /* Informational messages are blue-to-grey, alerts have an info icon. */429 /* Informational messages are blue-to-grey, alerts have an info icon. */
325430
326 background: #d4e8ff url(/+icing/blue-fade-to-grey);431 background: #d4e8ff url(/+icing/blue-fade-to-grey);
432
433 &.message::before {
434 content: url(/@@/info-large);
327 }435 }
328.informational.message::before {436
329 content: url(/@@/info-large);437 p.last {
330 }438 margin-bottom: 0;
331.informational p.last {
332 margin-bottom: 0;
333 }439 }
334.debugging {440 }
441
442 .debugging {
335 /* Debugging messages are white on grey, alerts have an info icon. */443 /* Debugging messages are white on grey, alerts have an info icon. */
336 background: #666;444 background: #666;
337 color: white;445 color: white;
446
447 &.message::before {
448 content: url(/@@/info-large);
338 }449 }
339.debugging.message::before {450 }
340 content: url(/@@/info-large);451
341 }452 .error .message {
342.error .message {
343 /* And inside, the error message itself uses a smaller icon. */453 /* And inside, the error message itself uses a smaller icon. */
344 background: url(/@@/error) center left no-repeat;454 background: url(/@@/error) center left no-repeat;
345 margin-bottom: 0.25em;455 margin-bottom: 0.25em;
346 padding-left: 18px;456 padding-left: 18px;
347 }457 }
348table.form .error {458
459 table.form .error {
349 /* Form errors override this background color, because the lack of space460 /* Form errors override this background color, because the lack of space
350 between the edge of fields and the edge of the color would look bad. */461 between the edge of fields and the edge of the color would look bad. */
351 background: none;462 background: none;
352 }463 }
353.inline-warning {464
465 .inline-warning {
354 /* Warning messages inlined in the page. */466 /* Warning messages inlined in the page. */
355 color: red;467 color: red;
356 font-weight: bold;468 font-weight: bold;
357 }469 }
358.sml-informational {470
471 .sml-informational {
359 background: #d4e8ff url('/+icing/blue-fade-to-grey');472 background: #d4e8ff url('/+icing/blue-fade-to-grey');
360 border: solid #666;473 border: solid #666;
361 border-width: 1px 2px 2px 1px;474 border-width: 1px 2px 2px 1px;
362 padding: 5px 5px 5px 5px;475 padding: 5px 5px 5px 5px;
363 width: 44em;476 width: 44em;
477
478 &::before {
479 content: url('/@@/info');
364 }480 }
365.sml-informational::before {481 }
366 content: url('/@@/info');482
367 }483 .important-notice-popup {
368.important-notice-popup {
369 padding: 1em 1em 0 1em;484 padding: 1em 1em 0 1em;
370 width: auto;485 width: auto;
371 overflow: hidden;486 overflow: hidden;
372 }487 }
373.important-notice-container {488
489 .important-notice-container {
374 text-align: center;490 text-align: center;
375 width: 100%;491 width: 100%;
376 padding-bottom: 1em;492 padding-bottom: 1em;
377 position: relative;493 position: relative;
378 }494 }
379.important-notice-balloon {495
496 .important-notice-balloon {
380 border-radius: 5px;497 border-radius: 5px;
381 background-color: #ededed;498 background-color: #ededed;
382 padding: 1em;499 padding: 1em;
383 border: 1px solid #000;500 border: 1px solid #000;
384 width: auto;501 width: auto;
385 overflow: hidden;502 overflow: hidden;
386 }503 }
387.important-notice-buttons {504
505 .important-notice-buttons {
388 float: right;506 float: right;
389 }507 }
390.important-notice-cancel-button {508
509 .important-notice-cancel-button {
391 visibility: hidden;510 visibility: hidden;
392 cursor: pointer;511 cursor: pointer;
393 }512 }
394.important-notice {513
514 .important-notice {
395 padding: 0px 0px 40px 0px;515 padding: 0px 0px 40px 0px;
396 height: 32px;516 height: 32px;
397 overflow: hidden;517 overflow: hidden;
518
519 a {
520 font-weight: bold;
521 text-decoration: underline;
398 }522 }
399.important-notice a {523 }
400 font-weight: bold;
401 text-decoration: underline;
402 }
403524
525 /* ==================
526 Translations Forms
527 */
404528
405/* ==================529 /* ==== Translations hand-made forms ==== */
406 Translations Forms
407*/
408530
409/* ==== Translations hand-made forms ==== */531 form.translations {
532 div {
533 &.fields {
534 padding: 1em;
535 }
410536
411form.translations div.fields {537 &.actions {
412 padding: 1em;538 padding: 1em;
539 text-align: left;
540 clear: both;
541 }
413 }542 }
414form.translations div.actions {543
415 padding: 1em;544 input {
416 text-align: left;545 padding-left: 0.5em;
417 clear: both;546 padding-right: 0.5em;
418 }
419form.translations input {
420 padding-left: 0.5em;
421 padding-right: 0.5em;
422 }
423form.translations select {
424 margin-left: 0.5em;
425 padding-right: 0.5em;
426 }
427form.translations label {
428 padding-left: 0.5em;
429 padding-right: 1em;
430 }
431form.translations .listbox label {
432 padding: 2px 1em 2px 2px;
433 }
434
435/* Provide top-alignment for radio boxes and longer explanations
436 * without using tables.
437 *
438 * Examples:
439 * https://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/es/+upload
440 * https://translations.launchpad.test/evolution/trunk/+pots/evolution-2.2/+export
441 */
442form.translations div.alignment .content {
443 float: left;
444 }
445form.translations div.alignment .selector {
446 margin-right: 0.5em;
447 float: left;
448 clear: both;
449 }
450form.translations div.alignment .content label {
451 padding: 0px;
452 margin: 0px;
453 font-weight: bold;
454 }547 }
455form.translations div.alignment .secondary label {548
456 font-weight: normal;549 select {
457 padding: 2px 1em 2px 2px;550 margin-left: 0.5em;
551 padding-right: 0.5em;
552 }
553
554 label {
555 padding-left: 0.5em;
556 padding-right: 1em;
557 }
558
559 .listbox label {
560 padding: 2px 1em 2px 2px;
561 }
562
563 div.alignment {
564 .content {
565 float: left;
566 }
567
568 .selector {
569 margin-right: 0.5em;
570 float: left;
571 clear: both;
572 }
573
574 .content label {
575 padding: 0px;
576 margin: 0px;
577 font-weight: bold;
578 }
579
580 .secondary label {
581 font-weight: normal;
582 padding: 2px 1em 2px 2px;
583 }
458 }584 }
585 }
diff --git a/lib/canonical/launchpad/icing/css/layout.css b/lib/canonical/launchpad/icing/css/layout.scss
459similarity index 78%586similarity index 78%
460rename from lib/canonical/launchpad/icing/css/layout.css587rename from lib/canonical/launchpad/icing/css/layout.css
461rename to lib/canonical/launchpad/icing/css/layout.scss588rename to lib/canonical/launchpad/icing/css/layout.scss
index cfe8ec3..d01f79a 100644
--- a/lib/canonical/launchpad/icing/css/layout.css
+++ b/lib/canonical/launchpad/icing/css/layout.scss
@@ -1,44 +1,55 @@
1// This file the result of auto-converting layout.css to scss.
2
1/* This probably shouldn't be here, but I'm not sure where to put it yet */3/* This probably shouldn't be here, but I'm not sure where to put it yet */
4
2.yui-d0 {5.yui-d0 {
3 margin: 10px 20px;6 margin: 10px 20px;
4 }7 }
5.yui-t4 .yui-b {8
6 width: 21%;9 .yui-t4 {
7 }10 .yui-b {
8.yui-t4 .yui-main {11 width: 21%;
9 clear: both;
10 float: left;
11 margin-right: -25%;
12 }
13.yui-t4 .yui-main .yui-b {
14 width: auto;
15 margin-right: 25%;
16 }12 }
1713
14 .yui-main {
15 clear: both;
16 float: left;
17 margin-right: -25%;
1818
19 .yui-b {
20 width: auto;
21 margin-right: 25%;
22 }
23 }
24 }
1925
20/* =========================26 /* =========================
21 Header27 Header
22*/28 */
23.demo {29
30 .demo {
24 background-color: #fee;31 background-color: #fee;
25 }32 }
26.login-logout {33
34 .login-logout {
27 position: absolute;35 position: absolute;
28 top: .5em;36 top: .5em;
29 right: 1.5em;37 right: 1.5em;
30 }38 }
31#rendertime {39
40 #rendertime {
32 float: left;41 float: left;
33 margin: 0.1em 1.2em 0 0;42 margin: 0.1em 1.2em 0 0;
34 color: #666;43 color: #666;
35 }44 }
36#ajax-time {45
46 #ajax-time {
37 float: left;47 float: left;
38 margin: 0 1.2em 0 0.2em;48 margin: 0 1.2em 0 0.2em;
39 position: relative;49 position: relative;
40 }50 }
41#ajax-time-list {51
52 #ajax-time-list {
42 position: absolute;53 position: absolute;
43 z-index: 10;54 z-index: 10;
44 top: 20px;55 top: 20px;
@@ -49,168 +60,207 @@
49 -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);60 -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
50 box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);61 box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
51 border-radius: 5px;62 border-radius: 5px;
63
64 li {
65 border-bottom: 1px solid #e0e0e0;
66 padding: 3px 5px;
67
68 &:last-child {
69 border-bottom: none;
70 }
71
72 span {
73 color: #999;
74 font-size: 11px;
75 display: block;
76 }
52 }77 }
53#ajax-time-list li {78
54 border-bottom: 1px solid #e0e0e0;79 strong.warning {
55 padding: 3px 5px;80 color: #f00;
56 }81 background-color: transparent;
57#ajax-time-list li:last-child {
58 border-bottom: none;
59 }
60#ajax-time-list li span {
61 color: #999;
62 font-size: 11px;
63 display: block;
64 }
65#ajax-time-list strong.warning {
66 color: #f00;
67 background-color: transparent;
68 }82 }
69/* The actions row of the watermark is reused by our mhonarc templates,83 }
70 * which we can't easily change. So about half of this is overcomplex to84
71 * support them too. Caution is also needed to avoid breaking85 /* The actions row of the watermark is reused by our mhonarc templates,
72 * Product:+index's inline title edit widget.86 * which we can't easily change. So about half of this is overcomplex to
73 */87 * support them too. Caution is also needed to avoid breaking
74div.watermark-apps-portlet {88 * Product:+index's inline title edit widget.
89 */
90
91 div.watermark-apps-portlet {
75 clear: both;92 clear: both;
76 margin-bottom: 0.8em;93 margin-bottom: 0.8em;
77 }94
78div.watermark-apps-portlet > div {95 > div {
79 display: inline-block;96 display: inline-block;
80 vertical-align: middle;97 vertical-align: middle;
81 }98
82div.watermark-apps-portlet > div.wide {99 &.wide {
83 width: 75%;100 width: 75%;
84 }101 }
85div.watermark-apps-portlet > div > img,102
86div.watermark-apps-portlet > div > a > img {103 > {
87 display: block;104 img, a > img {
88 margin: 0 1em 0 0;105 display: block;
89 }106 margin: 0 1em 0 0;
90#watermark-heading {107 }
108 }
109 }
110 }
111
112 #watermark-heading {
91 color: #000;113 color: #000;
92 font-weight: normal;114 font-weight: normal;
93 font-size: 20px;115 font-size: 20px;
94 line-height: 26px;116 line-height: 26px;
95 margin: 0;117 margin: 0;
118
119 :first-child {
120 font-size: 32px;
121 line-height: 32px;
96 }122 }
97#watermark-heading :first-child {123
98 font-size: 32px;124 :link, :visited {
99 line-height: 32px;125 color: #000;
100 }126 }
101#watermark-heading :link, #watermark-heading :visited {127 }
102 color: #000;128
103}129 .watermark-apps-portlet ul.facetmenu {
104.watermark-apps-portlet ul.facetmenu {
105 margin-top: 12px;130 margin-top: 12px;
106 margin-left: -0.5em;131 margin-left: -0.5em;
107 white-space: nowrap;132 white-space: nowrap;
133
134 li {
135 display: inline;
136 list-style-type: none;
137
138 a, span {
139 padding: 0.3em 0.5em;
140 margin-right: 0.4em;
141 }
142
143 a {
144 &:link, &:visited {
145 color: #000;
146 text-decoration: none;
147 }
148
149 &:hover {
150 color: #000;
151 background-color: #f3f3f3;
152 }
153 }
154
155 &.active {
156 a, span {
157 font-weight: bold;
158 color: #fff;
159 background-color: #747474;
160 }
161 }
162
163 &.disabled-tab {
164 color: #747474;
165 }
108 }166 }
109.watermark-apps-portlet ul.facetmenu li {167 }
110 display: inline;168
111 list-style-type: none;169 .context-publication {
112 }
113.watermark-apps-portlet ul.facetmenu li a,
114.watermark-apps-portlet ul.facetmenu li span {
115 padding: 0.3em 0.5em;
116 margin-right: 0.4em;
117 }
118.watermark-apps-portlet ul.facetmenu li a:link,
119.watermark-apps-portlet ul.facetmenu li a:visited {
120 color: #000;
121 text-decoration: none;
122 }
123.watermark-apps-portlet ul.facetmenu li a:hover {
124 color: #000;
125 background-color: #f3f3f3;
126 }
127.watermark-apps-portlet ul.facetmenu li.active a,
128.watermark-apps-portlet ul.facetmenu li.active span {
129 font-weight: bold;
130 color: #fff;
131 background-color: #747474;
132 }
133.watermark-apps-portlet ul.facetmenu li.disabled-tab {
134 color: #747474;
135 }
136.context-publication {
137 margin-bottom: 1em;170 margin-bottom: 1em;
138 }171 }
139.registering {172
173 .registering {
140 /* Registered slot */174 /* Registered slot */
141 margin: .5em 0 1em 0;175 margin: .5em 0 1em 0;
142 font-size: 10px;176 font-size: 10px;
143 color: #666;177 color: #666;
144 }178 }
145.breadcrumbs {179
180 .breadcrumbs {
146 margin-left: 0;181 margin-left: 0;
147 list-style-type: none;182 list-style-type: none;
148 clear: both;183 clear: both;
149 font-size: 10px;184 font-size: 10px;
185
186 li {
187 display: inline;
188 padding: 0;
189
190 a {
191 color: #494949;
192 }
193
194 &:after {
195 content: "Ā» ";
196 }
197
198 &:last-child {
199 /* The following leaves a small margin in chrome/webkit, but using none
200 doesn't hide the Ā» in webkit either (both work for FF3.5). */
201 font-weight: bold;
202
203 &:after {
204 content: '';
205 }
206 }
150 }207 }
151.breadcrumbs li {208 }
152 display: inline;209
153 padding: 0;210 #logincontrol {
154 }
155.breadcrumbs li a {
156 color: #494949;
157 }
158.breadcrumbs li:after {
159 content: "\00BB \0020"
160 }
161.breadcrumbs li:last-child {
162 /* The following leaves a small margin in chrome/webkit, but using none
163 doesn't hide the Ā» in webkit either (both work for FF3.5). */
164 font-weight: bold;
165 }
166.breadcrumbs li:last-child:after {
167 content: '';
168 }
169#logincontrol {
170 /* Top right of the page is a link to log in or a button to log out: */211 /* Top right of the page is a link to log in or a button to log out: */
171 float: right;212 float: right;
213
214 img {
215 /* align the image with the text */
216 margin-bottom: -2px;
172 }217 }
173#logincontrol img {218
174 /* align the image with the text */219 form {
175 margin-bottom: -2px;220 margin: 0;
176 }
177#logincontrol form {
178 margin: 0;
179 }221 }
180#logincontrol input[type='submit'] {222
181 /* The button lacks the right margin that buttons usually have: */223 input[type='submit'] {
182 font-size: 10px;224 /* The button lacks the right margin that buttons usually have: */
183 margin-right: 0;225 font-size: 10px;
226 margin-right: 0;
184 }227 }
228 }
185229
230 /* =========================
231 Footer
232 */
186233
187/* =========================234 .footer {
188 Footer
189*/
190.footer {
191 clear: both;235 clear: both;
192 margin-top: 4em;236 margin-top: 4em;
193 padding-top: 0.5em;237 padding-top: 0.5em;
238
239 .lp-arcana {
240 background: url(/@@/footer-background.png) top left repeat-x;
241 padding: 0.8em;
242 border-radius: 5px 5px 0 0;
243 height: 2em;
244
245 img {
246 vertical-align: middle;
247 }
194 }248 }
195.footer .lp-arcana {249
196 background: url(/@@/footer-background.png) top left repeat-x;250 .sitemessage {
197 padding: 0.8em;251 text-align: right;
198 border-radius: 5px 5px 0 0;
199 height: 2em;
200 }
201.footer .lp-arcana img {
202 vertical-align: middle;
203 }
204.footer .sitemessage {
205 text-align: right;
206 }252 }
207.footer .colophon {253
208 margin: 3em 3em 1em 3em;254 .colophon {
209 text-align: center;255 margin: 3em 3em 1em 3em;
256 text-align: center;
210 }257 }
211.footer .lp-branding {258
212 float: left;259 .lp-branding {
260 float: left;
213 }261 }
214.footer form {262
215 display: inline;263 form {
264 display: inline;
216 }265 }
266 }
diff --git a/lib/canonical/launchpad/icing/css/modifiers.css b/lib/canonical/launchpad/icing/css/modifiers.scss
217similarity index 75%267similarity index 75%
218rename from lib/canonical/launchpad/icing/css/modifiers.css268rename from lib/canonical/launchpad/icing/css/modifiers.css
219rename to lib/canonical/launchpad/icing/css/modifiers.scss269rename to lib/canonical/launchpad/icing/css/modifiers.scss
index 03f4292..11c8f31 100644
--- a/lib/canonical/launchpad/icing/css/modifiers.css
+++ b/lib/canonical/launchpad/icing/css/modifiers.scss
@@ -1,224 +1,245 @@
1div.left,1// This file the result of auto-converting modifiers.css to scss.
2div.right {2
3 width: 50%;3div {
4 &.left, &.right {
5 width: 50%;
6 }
7
8 &.left {
9 clear: both;
10 float: left;
4 }11 }
12 }
513
6div.left,14 .cves {
7.cves {
8 clear: both;15 clear: both;
9 float: left;16 float: left;
10 }17 }
1118
12div.right {19 div {
13 clear: right;20 &.right {
14 float: right;21 clear: right;
22 float: right;
15 }23 }
1624
17div.centered {25 &.centered {
18 text-align: center;26 text-align: center;
19 }
2027
21div.centered table {28 table {
22 margin: 0 auto;29 margin: 0 auto;
23 text-align: left;30 text-align: left;
31 }
24 }32 }
2533
26div.see-all {34 &.see-all {
27 text-align: right;35 text-align: right;
28 }36 }
37 }
2938
30span.nolink {39 span {
31 font-weight: bold;40 &.nolink {
41 font-weight: bold;
32 }42 }
3343
34span.see-all {44 &.see-all {
35 float: right;45 float: right;
36 }46 }
47 }
3748
38.see-all a {49 .see-all a {
39 padding-left: 8px;50 padding-left: 8px;
40 background: inherit;51 background: inherit;
41 font-size: 12px;52 font-size: 12px;
42 text-decoration: underline;53 text-decoration: underline;
43 }54 }
4455
45.transparent {56 .transparent {
46 opacity: 0;57 opacity: 0;
47 filter: alpha(opacity=0);58 filter: alpha(opacity = 0);
48 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";59 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
49 }60 }
5061
51.rss-right {62 .rss-right {
52 background: url(/@@/rss.png) right center no-repeat;63 background: url(/@@/rss.png) right center no-repeat;
53 }64 }
5465
55.logo {66 .logo {
56 float: left;67 float: left;
57 display: inline;68 display: inline;
58 width: 64px;69 width: 64px;
59 height: 64px;70 height: 64px;
60 margin: 0 5px 0 0;71 margin: 0 5px 0 0;
61 }72 }
6273
63.registered {74 .registered {
64 color: #666;75 color: #666;
65 }76 }
6677
67.description {78 .description {
68 clear: both;79 clear: both;
69 }80 }
7081
71.search-results {82 .search-results {
72 margin-top: 1em;83 margin-top: 1em;
73 }84 }
7485
75.top-portlet .summary {86 .top-portlet .summary {
76 margin: 0 0 1em 0;87 margin: 0 0 1em 0;
88
77 /* Same as h3, this appears under a h1. */89 /* Same as h3, this appears under a h1. */
78 font-size: 16px;90 font-size: 16px;
79 }91 }
8092
81.main-portlet {93 .main-portlet {
82 margin: 1em 0 1em 0;94 margin: 1em 0 1em 0;
83 }95 }
8496
85.pre {97 .pre {
86 white-space: pre;98 white-space: pre;
87 }99 }
88100
89.clearfix:after {101 .clearfix:after {
90 /* use class="clearfix" whenever floats should be enclosed */102 /* use class="clearfix" whenever floats should be enclosed */
91 content: ".";103 content: ".";
92 display: block;104 display: block;
93 height: 0;105 height: 0;
94 clear: both;106 clear: both;
95 visibility: hidden;107 visibility: hidden;
96 }108 }
97109
98* html .clearfix {110 * html .clearfix {
99 /* Work around float bug in MSIE */111 /* Work around float bug in MSIE */
100 height: 1%;112 height: 1%;
101 }113 }
102114
103div.beta {115 div.beta {
104 background-color: #c24848;116 background-color: #c24848;
105 margin-bottom: 7px;117 margin-bottom: 7px;
106 margin-top: 7px;118 margin-top: 7px;
107 height: 10px;119 height: 10px;
108 width: 175px;120 width: 175px;
109 }
110121
111div.beta img {122 img {
112 height: 10px;123 height: 10px;
113 }124 }
125 }
114126
115.scrolled-box {127 .scrolled-box {
116 max-height: 4.5em;128 max-height: 4.5em;
117 overflow-y: scroll;129 overflow-y: scroll;
118 }130 }
119131
120.ellipsis.single-line {132 .ellipsis {
121 display: inline-block;133 &.single-line {
122 white-space: nowrap;134 display: inline-block;
123 overflow: hidden;135 white-space: nowrap;
124 text-overflow: ellipsis;136 overflow: hidden;
125 -o-text-overflow: ellipsis;137 text-overflow: ellipsis;
126 -ms-text-overflow: ellipsis;138 -o-text-overflow: ellipsis;
139 -ms-text-overflow: ellipsis;
127 }140 }
128141
129.ellipsis.wide {142 &.wide {
130 max-width: 60em;143 max-width: 60em;
131 }144 }
132145
133.ellipsis:before {146 &:before {
134 content: attr(data-ellipsis-original-text);147 content: attr(data-ellipsis-original-text);
135 position: absolute;148 position: absolute;
136 display: block;149 display: block;
137 }150 }
138.ellipsis:hover:before {151
139 display: block;152 &:hover:before {
153 display: block;
140 }154 }
155 }
141156
142.exception {157 .exception {
143 color: #cc0000;158 color: #cc0000;
144 }159 }
145160
146.highlight {161 .highlight {
147 background: #ddd;162 background: #ddd;
148 border: 1px solid #ddd;163 border: 1px solid #ddd;
149 }164 }
150165
151.lowlight {166 .lowlight {
152 opacity: .5;167 opacity: .5;
153 filter: alpha(opacity=50);168 filter: alpha(opacity = 50);
154 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";169 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
155 }170 }
156171
157.status :link,172 .status :link, .importance :link {
158.importance :link {
159 text-decoration: none;173 text-decoration: none;
160 }174 }
161175
162.lesser,176 .lesser, .duplicate-details {
163.duplicate-details {
164 font-size: 10px;177 font-size: 10px;
165 clear: left;178 clear: left;
166 }179 }
167180
168pre.changelog,181 pre.changelog {
169table.diff td.line-no, table.diff td.ss-line-no,
170table.diff td.text,
171.comment-text,
172.bug-activity {
173 font-family: monospace;182 font-family: monospace;
183 }
184
185 table.diff td {
186 &.line-no, &.ss-line-no, &.text {
187 font-family: monospace;
174 }188 }
189 }
190
191 .comment-text, .bug-activity {
192 font-family: monospace;
193 }
175194
176.cloud-size-smallest {195 .cloud-size-smallest {
177 font-size: 10px;196 font-size: 10px;
178 }197 }
179198
180.cloud-size-small {199 .cloud-size-small {
181 font-size: 12px;200 font-size: 12px;
182 }201 }
183202
184.cloud-size-medium {203 .cloud-size-medium {
185 font-size: 14px;204 font-size: 14px;
186 }205 }
187206
188.cloud-size-large {207 .cloud-size-large {
189 font-size: 16px;208 font-size: 16px;
190 }209 }
191210
192.cloud-size-largest {211 .cloud-size-largest {
193 font-size: 18px;212 font-size: 18px;
194 }213 }
195214
196.cloud-dark {215 .cloud-dark {
197 color: #00f;216 color: #00f;
198 }217 }
199218
200.cloud-medium {219 .cloud-medium {
201 color: #7878ff;220 color: #7878ff;
202 }221 }
203222
204.cloud-light {223 .cloud-light {
205 color: #b8b8ff;224 color: #b8b8ff;
206 }225 }
207226
208/* =========================227 /* =========================
209 Universal presentation228 Universal presentation
210 Sprites229 Sprites
211*/230 */
212.sprite {231
232 .sprite {
213 padding: 0 0 6px 18px;233 padding: 0 0 6px 18px;
214 line-height: 18px;234 line-height: 18px;
215 }235 }
216.block-sprite {236
237 .block-sprite {
217 padding: 2px 2px 15px 36px;238 padding: 2px 2px 15px 36px;
218 margin-bottom: 0;239 margin-bottom: 0;
219 }240 }
220241
221.action-icon {242 .action-icon {
222 /* Textual browsers read the text, graphical browsers see the sprite. */243 /* Textual browsers read the text, graphical browsers see the sprite. */
223 display: inline-block;244 display: inline-block;
224 margin-left: 6px;245 margin-left: 6px;
@@ -227,53 +248,58 @@ table.diff td.text,
227 vertical-align: text-top;248 vertical-align: text-top;
228 text-indent: 3px;249 text-indent: 3px;
229 overflow: hidden;250 overflow: hidden;
230 }
231251
232.action-icon + .action-icon {252 + .action-icon {
233 margin-left: 0px;253 margin-left: 0px;
234 }254 }
235255
236.action-icon.standalone {256 &.standalone {
237 margin-top: -6px;257 margin-top: -6px;
238 }258 }
259 }
239260
240th .action-icon {261 th .action-icon {
241 height: 12px;262 height: 12px;
242}263 }
243264
244h1 a.sprite,265 h1 a.sprite, h2 a.sprite {
245h2 a.sprite,
246h3 a.sprite {
247 position: relative;266 position: relative;
248 top: 8px;267 top: 8px;
249 font-size: 12px;268 font-size: 12px;
250 }269 }
251270
252h3 a.sprite {271 h3 a.sprite {
272 position: relative;
273 top: 8px;
274 font-size: 12px;
253 top: 4px;275 top: 4px;
254 }276 }
277
278 /* Hide the grey background for the Calendar content. */
255279
256/* Hide the grey background for the Calendar content. */280 .yui3-skin-sam .yui3-pretty-overlay .yui3-calendar-content {
257.yui3-skin-sam .yui3-pretty-overlay .yui3-calendar-content {
258 background: none;281 background: none;
259 border: none;282 border: none;
260 }283 }
284
285 /* Center the Calendar within its overlay. */
261286
262/* Center the Calendar within its overlay. */287 .yui3-calendarbase {
263.yui3-calendarbase {
264 margin: 0 auto;288 margin: 0 auto;
265 }289 }
290
291 /* Hidden must be the last rule because it overides all other rules. */
266292
267/* Hidden must be the last rule because it overides all other rules. */293 .inline {
268.inline {
269 display: inline;294 display: inline;
270 margin: 0;295 margin: 0;
271 }296 }
297
298 /* Use 'hidden' to hide elements unconditionally.
299 * Some things we want to hide by default only if javascript is enabled; for
300 * these cases use 'hide-on-load'.
301 */
272302
273/* Use 'hidden' to hide elements unconditionally.303 .hidden, .yui3-js-enabled .hide-on-load {
274 * Some things we want to hide by default only if javascript is enabled; for
275 * these cases use 'hide-on-load'.
276 */
277.hidden, .yui3-js-enabled .hide-on-load {
278 display: none;304 display: none;
279 }305 }
diff --git a/lib/canonical/launchpad/icing/css/typography.css b/lib/canonical/launchpad/icing/css/typography.scss
280similarity index 62%306similarity index 62%
281rename from lib/canonical/launchpad/icing/css/typography.css307rename from lib/canonical/launchpad/icing/css/typography.css
282rename to lib/canonical/launchpad/icing/css/typography.scss308rename to lib/canonical/launchpad/icing/css/typography.scss
index b3011c1..3b2e1cd 100644
--- a/lib/canonical/launchpad/icing/css/typography.css
+++ b/lib/canonical/launchpad/icing/css/typography.scss
@@ -1,106 +1,182 @@
1// This file the result of auto-converting typography.css to scss.
2
3$page-width: 45em;
4$wider-page: $page-width + 15em;
5$reduced-spacing: 0.8em;
6$link-colour: #03a;
7$active-link-colour: #36c;
8$separate-link-colour: #093;
19
2h1, h2, h3, h4, h5, h6 {10h1, h2, h3, h4, h5, h6 {
3 background: none;11 background: none;
4 clear: left;12 clear: left;
5 }13 }
6h1 {14
15 h1 {
7 clear: none;16 clear: none;
8 font-size: 30px;17 font-size: 30px;
9 line-height: 34px;18 line-height: 34px;
10 }19 }
11h2 {20
21 h2 {
12 margin-top: 16px;22 margin-top: 16px;
13 margin-bottom: 8px;23 margin-bottom: 8px;
14 font-size: 22px;24 font-size: 22px;
15 line-height: 26px;25 line-height: 26px;
16 }26 }
17h3 {27
28 h3 {
18 margin-top: 16px;29 margin-top: 16px;
19 margin-bottom: 8px;30 margin-bottom: 8px;
20 font-size: 16px;31 font-size: 16px;
21 line-height: 20px;32 line-height: 20px;
22 }33 }
23.yui-u > div > h3:first-child {34
35 .yui-u > div > h3:first-child {
24 margin-top: 0;36 margin-top: 0;
25 }37 }
26p {38
39 p {
27 width: auto;40 width: auto;
28 margin-bottom: 0.8em;41 margin-bottom: $reduced-spacing;
29 }42 }
30div + p, ul + p, table + p {43
31 margin-top: 0.8em;44 div + p, ul + p, table + p {
32 }45 margin-top: $reduced-spacing;
33p, li, dt, dd, blockquote, .narrow, .narrow-listing {46 }
47
48 p, li, dt, dd, blockquote, .narrow, .narrow-listing {
34 /* Wrap the text before the eye gets lost. */49 /* Wrap the text before the eye gets lost. */
35 max-width: 45em;50 max-width: $page-width;
36 }51 }
37.wide * {52
38 max-width: 60em;53 .wide * {
39 }54 max-width: $wider-page;
40table.wide {55 }
41 width: 60em;56
42 }57 table.wide {
43pre, code, samp, tt, .console {58 width: $wider-page;
59 }
60
61 pre, code, samp, tt, .console {
44 font-family: monospace;62 font-family: monospace;
45 margin-bottom: 0.8em;63 margin-bottom: $reduced-spacing;
46 }64 }
47pre.wrap {65
66 pre.wrap {
48 /* From nice_pre in tales.py */67 /* From nice_pre in tales.py */
49 white-space: pre-wrap;68 white-space: pre-wrap;
50 word-wrap: break-word;69 word-wrap: break-word;
51 }70 }
5271
53:link, :visited, a.js-action {72 :link, :visited, a.js-action {
54 /* Links are blue, brighter when clicked, and greyer once visited. */73 /* Links are blue, brighter when clicked, and greyer once visited. */
55 color: #03a;74 color: $link-colour;
56 text-decoration: none;75 text-decoration: none;
57 }76 }
58:link:hover, :visited:hover, a.js-action:hover {77
78 :link:hover, :visited:hover, a.js-action:hover {
59 text-decoration: underline;79 text-decoration: underline;
80 }
81
82 :link:active, :visited:active {
83 color: $active-link-colour;
84 }
85
86 a {
87 &.js-action:active {
88 color: $active-link-colour;
60 }89 }
61:link:active, :visited:active, a.js-action:active {90
62 color: #36c;91 &[onclick] {
92 /* Links that don't open separate pages are green. */
93 color: $separate-link-colour;
94 cursor: pointer;
63 }95 }
64a[onclick], .collapsible legend a, a.js-action,96 }
65a[onclick]:active, .collapsible legend a:active, a.js-action,97
66a.js-action:active {98 .collapsible legend a {
67 /* Links that don't open separate pages are green. */99 /* Links that don't open separate pages are green. */
68 color: #093;100 color: $separate-link-colour;
69 cursor: pointer;101 cursor: pointer;
102 }
103
104 a {
105 &.js-action, &[onclick]:active {
106 /* Links that don't open separate pages are green. */
107 color: $separate-link-colour;
108 cursor: pointer;
70 }109 }
71a.help {110 }
72 border-bottom: 1px dotted #03a;111
73 cursor: help;112 .collapsible legend a:active {
113 /* Links that don't open separate pages are green. */
114 color: $separate-link-colour;
115 cursor: pointer;
116 }
117
118 a {
119 &.js-action {
120 /* Links that don't open separate pages are green. */
121 color: $separate-link-colour;
122 cursor: pointer;
123
124 &:active {
125 /* Links that don't open separate pages are green. */
126 color: $separate-link-colour;
127 cursor: pointer;
128 }
74 }129 }
75a.help:hover, a.action-icon:hover {130
76 text-decoration: none;131 &.help {
132 border-bottom: 1px dotted $link-colour;
133 cursor: help;
134
135 &:hover {
136 text-decoration: none;
137 }
77 }138 }
78a.help.icon, a.sprite.maybe.help {139
79 border: none;140 &.action-icon:hover {
80}141 text-decoration: none;
81a.invalid-link, a.invalid-link:active, a.invalid-link:hover {142 }
82 color: #909090;143
83 text-decoration: none;144 &.help.icon, &.sprite.maybe.help {
84 cursor: default;145 border: none;
146 }
147
148 &.invalid-link {
149 color: #909090;
150 text-decoration: none;
151 cursor: default;
152
153 &:active, &:hover {
154 color: #909090;
155 text-decoration: none;
156 cursor: default;
157 }
85 }158 }
86img, a img {159 }
160
161 img, a img {
87 /* No border on images that are links. */162 /* No border on images that are links. */
88 border: none;163 border: none;
89 }164 }
90abbr[title], acronym[title] {165
166 abbr[title], acronym[title] {
91 border-bottom: 1px dotted black;167 border-bottom: 1px dotted black;
92 cursor: help;168 cursor: help;
93 }169 }
94em {170
171 em {
95 font-style: italic;172 font-style: italic;
96 }173 }
97strong {174
98 font-weight: bold;175 strong, .title {
99 }
100.title {
101 font-weight: bold;176 font-weight: bold;
102 }177 }
103kbd {178
179 kbd {
104 background-color: #ddd;180 background-color: #ddd;
105 border: 1px solid;181 border: 1px solid;
106 border-color: white gray gray white;182 border-color: white gray gray white;
@@ -108,10 +184,12 @@ kbd {
108 margin: 1px;184 margin: 1px;
109 min-width: 1em;185 min-width: 1em;
110 outline: 1px #666;186 outline: 1px #666;
111 }187 }
112tt.command {188
189 tt.command {
113 padding-left: 2em;190 padding-left: 2em;
114 }191 }
115.nowrap {192
193 .nowrap {
116 white-space: nowrap;194 white-space: nowrap;
117 }195 }

Subscribers

People subscribed via source and target branches

to status/vote changes: