• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15@import "widgets/theme";
16
17:root {
18  --record-text-color: #333;
19}
20
21// The whole record page.
22.record-page {
23  position: relative;
24  overflow-y: scroll;
25  background-color: #fefefe;
26  padding: 40px 20px;
27}
28
29// The always-visible centered box that has menu and sections on the right.
30.record-container {
31  position: relative;
32  max-width: 900px;
33  min-height: 500px;
34  margin: auto;
35  border-radius: $pf-border-radius;
36  box-shadow: 0 1px 2px 0 #aaa, 0 1px 3px 1px #eee;
37  background-color: #fff;
38  display: grid;
39  grid-template-rows: auto 1fr;
40  grid-template-areas:
41    "header"
42    "content";
43  overflow: hidden;
44  z-index: 6;
45
46  // The body of the record container.
47  .record-container-content {
48    display: grid;
49    grid-template-columns: 2fr 5fr;
50    grid-template-areas: "sidebar section";
51  }
52
53  .full-centered {
54    width: 100%;
55    height: 100%;
56    text-align: center;
57    padding: 180px 30px;
58    font-family: "Roboto", sans-serif;
59    font-size: 25px;
60  }
61}
62
63.record-modal {
64  display: flex;
65  flex-direction: column;
66
67  .line {
68    padding: 10px 10px 10px 10px;
69    border-bottom: 1px solid #808080;
70  }
71
72  .record-modal-section {
73    display: flex;
74    flex-direction: row;
75
76    .logo-wrapping {
77      width: 150px;
78      height: 150px;
79      display: inline-block;
80      margin: 50px 30px 0px 0px;
81      align-self: center;
82
83      i.material-icons {
84        color: #16161d;
85        font-size: 150px;
86      }
87    }
88
89    select {
90      min-width: 300px;
91      min-height: 80px;
92    }
93
94    .record-modal-description {
95      display: flex;
96      flex-direction: column;
97      align-items: left;
98
99      .record-modal-command {
100        display: flex;
101        flex-direction: row;
102        align-items: center;
103        padding: 10px 0px 10px 0px;
104        color: #fff;
105
106        .code-snippet {
107          width: 100%;
108        }
109      }
110
111      h3 {
112        padding-top: 15px;
113        align-self: start;
114        font-size: 1.2rem;
115        color: #0000ff;
116      }
117
118      h4 {
119        align-self: start;
120        font-size: 1.1rem;
121      }
122
123      text {
124        padding: 10px 0px 10px 0px;
125        color: #000000;
126      }
127
128      input[type="text"] {
129        flex-grow: 1;
130        border-radius: $pf-border-radius;
131        border: 1px solid #dcdcdc;
132        padding: 3px;
133        margin: 0 10px;
134        min-width: 170px;
135
136        &:focus {
137          outline: none;
138          box-shadow: 1px 1px 1px rgba(23, 32, 44, 0.3);
139        }
140      }
141    }
142  }
143
144  .record-modal-button,
145  .record-modal-button-high,
146  .record-modal-logo-button {
147    font-size: 0.875rem;
148    padding-left: 1rem;
149    padding-right: 1rem;
150    padding-top: 0.5rem;
151    padding-bottom: 0.5rem;
152    background-color: #0000ff;
153    color: #fff;
154    cursor: pointer;
155    -webkit-appearance: button;
156    text-transform: none;
157    overflow: visible;
158    line-height: 1.15;
159    margin: 5px;
160    will-change: transform;
161    -moz-osx-font-smoothing: grayscale;
162    -webkit-backface-visibility: hidden;
163    backface-visibility: hidden;
164    transform: translateZ(0);
165    transition: transform 0.25s ease-out;
166    align-self: end;
167    text-align: center;
168  }
169
170  .record-modal-button,
171  .record-modal-button-high {
172    border-radius: $pf-border-radius;
173    border-style: none;
174    border-width: 0;
175  }
176
177  .record-modal-button-high:disabled {
178    background-color: #808080;
179  }
180
181  .record-modal-button-high {
182    height: 100%;
183    align-self: center;
184    display: flex;
185    align-items: center;
186  }
187
188  .record-modal-logo-button {
189    border-radius: 50%;
190    width: 35px;
191    height: 35px;
192    display: flex;
193    align-items: center;
194    justify-content: center;
195  }
196}
197
198.hider {
199  @include transition(0.2s);
200  position: fixed;
201  left: 0;
202  top: 0;
203  bottom: 0;
204  right: 0;
205  background: #000;
206  opacity: 0.2;
207  z-index: 5;
208}
209
210.record-header {
211  grid-area: header;
212  padding: 10px;
213  display: flex;
214  flex-direction: column;
215  border-bottom: 1px solid #eee;
216
217  .top-part {
218    display: flex;
219    justify-content: space-between;
220    align-items: center;
221
222    // Connect/start/stop tracing buttons.
223    .button {
224      display: flex;
225      justify-content: flex-end;
226      align-items: center;
227      width: auto;
228      height: 50px;
229      margin: 0;
230      > * {
231        @include transition(0.2s);
232        cursor: pointer;
233        border-radius: 10px;
234        margin: 10px;
235        text-align: center;
236        background-color: #eee;
237        font-family: "Roboto", sans-serif;
238        font-size: 17px;
239        @media (max-width: 1280px) {
240          font-size: 1.6vw;
241        }
242        padding: 7px;
243
244        &:hover {
245          background-color: hsl(88, 50%, 84%);
246          box-shadow: 0 0 4px 0 #999;
247        }
248
249        &.selected {
250          background-color: hsl(88, 50%, 67%);
251          box-shadow: 0 0 4px 0 #999;
252        }
253
254        &.disabled {
255          background-color: hsl(0, 0%, 97%);
256        }
257      }
258    }
259
260    .target-and-status {
261      display: flex;
262      flex-direction: column;
263      justify-content: space-evenly;
264
265      .target {
266        display: flex;
267        flex-direction: row;
268        align-items: center;
269      }
270
271      label,
272      select,
273      button {
274        font-weight: 300;
275        margin: 3px;
276        color: #333;
277        font-size: 17px;
278        font-family: "Roboto", sans-serif;
279        align-items: center;
280
281        &.error-label {
282          max-width: 500px;
283          color: rgb(255, 0, 0);
284          font-size: 15px;
285        }
286      }
287      .chip {
288        @include transition();
289        display: flex;
290        align-items: center;
291        border: 1px solid #eee;
292        outline: none;
293        margin: 4px;
294        border-radius: 20px;
295        padding: 4px;
296        height: 30px;
297        &:hover,
298        &:active {
299          box-shadow: 0 0 4px 0 #ccc;
300          background-color: #fafafa;
301        }
302        i {
303          margin: 3px;
304          align-items: center;
305        }
306      }
307    }
308  }
309
310  .note {
311    border-radius: 3px;
312    margin-bottom: 5px;
313    background: #f9eeba;
314    padding: 10px;
315    font-family: "Roboto", sans-serif;
316    font-size: 14px;
317    line-height: 20px;
318  }
319
320  select {
321    @include transition();
322    margin-left: 10px;
323    border-radius: 0;
324    border: 1px solid #eee;
325    outline: none;
326    &:hover,
327    &:active {
328      box-shadow: 0 0 6px #ccc;
329    }
330  }
331}
332
333// The left-hand-side menu with 'Cpu', 'Memory' etc.
334.record-menu {
335  grid-area: sidebar;
336  .rec {
337    color: #ee3326;
338  }
339
340  background-color: #fcfcfc;
341  border-right: 1px solid #eee;
342  padding-bottom: 1em;
343
344  header {
345    font-family: "Roboto", sans-serif;
346    font-size: 14px;
347    font-weight: 700;
348    margin: 1em;
349  }
350
351  ul {
352    list-style-type: none;
353    margin: 0;
354    padding: 0;
355  }
356
357  a,
358  a:link,
359  a:visited {
360    text-decoration: none;
361  }
362
363  li {
364    @include transition();
365    height: 55px;
366    padding: 0 1em;
367    font-size: 15px;
368    letter-spacing: 0.5px;
369    font-family: "Roboto", sans-serif;
370    font-weight: 600;
371    color: #666;
372    display: grid;
373    grid-template-columns: 50px 1fr;
374    grid-template-rows: 40px 1fr;
375    grid-template-areas: "icon title" "icon subtext";
376    cursor: pointer;
377    overflow: hidden;
378
379    i {
380      margin: auto;
381      font-size: 32px;
382      width: 38px;
383      height: 38px;
384      padding: 3px;
385      grid-area: icon;
386    }
387
388    .title {
389      transition: line-height 0.25s ease;
390      grid-area: title;
391      line-height: 55px;
392      display: block;
393    }
394
395    .sub {
396      @include transition(0.5s);
397      grid-area: subtext;
398      font-size: 10px;
399      line-height: 12.5px;
400      margin-top: -5px;
401      opacity: 0;
402      text-overflow: ellipsis;
403      white-space: nowrap;
404    }
405
406    &:hover {
407      background-color: hsl(214, 0%, 90%);
408      .title {
409        line-height: 50px;
410      }
411      .sub {
412        opacity: 1;
413        transition-duration: 0.25s;
414        transition-delay: 0s;
415      }
416    }
417
418    &.active {
419      background-color: hsl(214, 80%, 70%);
420      .title,
421      .sub {
422        color: white;
423      }
424    }
425  } // li
426
427  &.disabled {
428    opacity: 0.5;
429    pointer-events: none;
430  }
431} // record-menu
432
433.record-section {
434  grid-area: section;
435  background: #fff;
436  transition: opacity 0.25s ease;
437  opacity: 0;
438  display: none;
439
440  &:not(.active) {
441    max-height: 0;
442  }
443
444  &.active {
445    display: block;
446    opacity: 1;
447  }
448
449  .config {
450    &:nth-of-type(2n) {
451      background-color: #e7e7e7;
452    }
453
454    height: auto;
455    width: 100%;
456    padding: 0;
457    display: flex;
458    align-items: center;
459  }
460
461  .parsing-errors {
462    padding: 1em;
463    border: 1px solid #dc143c;
464    color: #dc143c;
465  }
466
467  .title-config {
468    display: inline-block;
469    margin: var(--record-section-padding);
470    flex-grow: 1;
471    word-break: break-all;
472  }
473
474  .config-button {
475    border-radius: 100%;
476    margin-right: 10px;
477    text-align: center;
478    justify-items: center;
479    font-family: "Roboto", sans-serif;
480    padding: 7px;
481
482    &:hover:enabled {
483      box-shadow: 0 0 3px 0 #aaa;
484    }
485
486    &:not(:enabled) {
487      background-color: hsl(0, 0%, 83%);
488      color: hsl(0, 0%, 50%);
489    }
490
491    &.load:enabled {
492      background-color: hsl(88, 50%, 67%);
493    }
494
495    &.delete {
496      background-color: hsl(0, 50%, 67%);
497    }
498
499    &.save {
500      &.long {
501        width: 160px;
502      }
503
504      &:enabled {
505        background-color: hsl(197, 50%, 67%);
506      }
507    }
508
509    &.reset {
510      width: 300px;
511      background-color: hsl(0, 50%, 67%);
512    }
513  }
514
515  .reset-wrapper {
516    padding: 1em;
517  }
518
519  .input-config {
520    margin-top: 20px;
521    margin-bottom: 20px;
522    display: flex;
523    align-items: center;
524    padding: 0;
525
526    input {
527      border-radius: 20px;
528      border: 1px solid #eee;
529      line-height: 36px;
530      padding: 0 10px;
531      font-size: 18px;
532      font-family: "Roboto Condensed", sans-serif;
533      font-weight: 300;
534      color: #666;
535      flex-grow: 1;
536      margin-right: 10px;
537      margin-left: 10px;
538
539      background-color: transparent;
540      &:focus {
541        outline: none;
542      }
543      &::placeholder {
544        color: #b4b7ba;
545        font-family: "Roboto", sans-serif;
546        font-weight: 400;
547      }
548    }
549  }
550
551  // By default space all section elements by the same amount.
552  --record-section-padding: 20px;
553
554  > * {
555    padding-left: var(--record-section-padding);
556    padding-right: var(--record-section-padding);
557    &:first-child {
558      padding-top: 20px;
559    }
560    &:last-child {
561      padding-bottom: 20px;
562    }
563  }
564
565  > header {
566    text-align: center;
567    font-family: "Roboto", sans-serif;
568    font-size: 20px;
569    padding: 15px 10px;
570    color: #333;
571    letter-spacing: 0.5px;
572  }
573
574  .hide {
575    opacity: 0;
576    visibility: hidden;
577  }
578
579  .probe {
580    display: grid;
581    grid-template-rows: 40px 1fr;
582    grid-template-columns: 220px 1fr;
583    grid-template-areas: "label label" "img descr";
584    transition: color 0.2s ease;
585    padding-top: var(--record-section-padding);
586    padding-bottom: var(--record-section-padding);
587
588    &.compact {
589      padding-top: 10px;
590      padding-bottom: 10px;
591    }
592
593    &:nth-of-type(2n) {
594      background-color: #f9f9f9;
595    }
596
597    > img {
598      transition: filter 0.2s ease, opacity 0.2s ease;
599      grid-area: img;
600      width: 210px;
601      box-sizing: content-box;
602      cursor: pointer;
603      opacity: 0.5;
604      filter: saturate(0.15);
605    }
606
607    &:hover {
608      > img {
609        opacity: 1;
610      }
611      > label {
612        color: #333;
613        input[type="checkbox"]::after {
614          background: hsl(207, 60%, 60%);
615        }
616      }
617    } // :hover
618
619    > label {
620      grid-area: label;
621      cursor: pointer;
622      font-family: "Roboto", sans-serif;
623      font-size: 20px;
624      font-weight: 400;
625      color: #999;
626
627      // The per-probe on-off switch.
628      input[type="checkbox"] {
629        -moz-appearance: none;
630        -webkit-appearance: none;
631        cursor: pointer;
632        margin: 0 10px 0 3px;
633        position: relative;
634        display: inline-block;
635        height: 20px;
636        width: 44px;
637        background: #89898966;
638        border-radius: 100px;
639        transition: all 0.3s ease;
640        overflow: visible;
641        vertical-align: middle;
642
643        &:focus {
644          outline: none;
645        }
646
647        &::after {
648          position: absolute;
649          left: -2px;
650          top: -3px;
651          display: block;
652          width: 26px;
653          height: 26px;
654          border-radius: 100px;
655          background: #f5f5f5;
656          box-shadow: 0 3px 3px rgba(0, 0, 0, 0.15);
657          content: "";
658          transition: all 0.3s ease;
659        }
660        &:checked {
661          background: #8398b7;
662        }
663        &:focus::after {
664          background: hsl(207, 60%, 60%);
665        }
666        &:checked::after {
667          left: 20px;
668          background: #27303d;
669        }
670      } // checkbox
671    } // label
672
673    // The content of the probe section.
674    > div {
675      grid-area: descr;
676      font-size: 14px;
677      font-weight: 200;
678      min-height: 50px;
679      color: var(--record-text-color);
680      line-height: 20px;
681    }
682
683    // .probe-config is showed only when the probe is enabled.
684    .probe-config {
685      @include transition(0.3s);
686      opacity: 0;
687      visibility: hidden;
688      margin: 10px 10px 0 0;
689      max-height: 0;
690    }
691
692    .extended-desc {
693      grid-column: span 2;
694    }
695
696    &.enabled {
697      .probe-config {
698        opacity: 1;
699        visibility: visible;
700        max-height: 100vh;
701      }
702      > label span {
703        color: #4e80b7;
704      }
705      > img {
706        filter: saturate(1);
707        opacity: 1;
708      }
709    }
710  } // probe
711
712  .toggle {
713    transition: color 0.2s ease;
714    padding-top: var(--record-section-padding);
715
716    &:hover {
717      > img {
718        opacity: 1;
719      }
720      > label {
721        color: #333;
722        input[type="checkbox"]::after {
723          background: hsl(207, 60%, 60%);
724        }
725      }
726    } // :hover
727
728    > label {
729      cursor: pointer;
730      font-size: 14px;
731      color: var(--record-text-color);
732
733      // The per-probe on-off switch.
734      input[type="checkbox"] {
735        -moz-appearance: none;
736        -webkit-appearance: none;
737        cursor: pointer;
738        margin: 0 12px 0 2px;
739        position: relative;
740        display: inline-block;
741        height: 10px;
742        width: 22px;
743        background: #89898966;
744        border-radius: 100px;
745        transition: all 0.3s ease;
746        overflow: visible;
747        vertical-align: middle;
748
749        &:focus {
750          outline: none;
751        }
752
753        &::after {
754          position: absolute;
755          left: -5px;
756          top: -5px;
757          display: block;
758          width: 20px;
759          height: 20px;
760          border-radius: 100px;
761          background: #f5f5f5;
762          box-shadow: 0 3px 3px rgba(0, 0, 0, 0.15);
763          content: "";
764          transition: all 0.3s ease;
765        }
766        &:checked {
767          background: #8398b7;
768        }
769        &:focus::after {
770          background: hsl(207, 60%, 60%);
771        }
772        &:checked::after {
773          left: 12px;
774          background: #27303d;
775        }
776      } // checkbox
777    } // label
778
779    // The content of the toggle section.
780    > div.descr {
781      padding-left: 36px;
782      font-size: 12px;
783      color: #666;
784    }
785  } // toggle
786
787  // The three "Stop when full", "Ring buffer", "Long trace" buttons.
788  .record-mode {
789    display: grid;
790    grid-template-columns: 1fr 1fr 1fr;
791    grid-template-areas: ". . .";
792    grid-template-rows: 1fr;
793    padding-top: 0;
794
795    input[type="radio"] {
796      appearance: none;
797      -webkit-appearance: none;
798      display: none;
799    }
800
801    > * {
802      @include transition(0.2s);
803      cursor: pointer;
804      border-radius: 15px;
805      margin: 5px;
806      text-align: center;
807      background-color: #eee;
808      font-family: "Roboto", sans-serif;
809      font-size: 20px;
810      @media (max-width: 1280px) {
811        font-size: 1.6vw;
812      }
813      padding-bottom: 10px;
814
815      &:hover {
816        background-color: hsl(88, 50%, 84%);
817        box-shadow: 0 0 4px 0 #999;
818      }
819
820      &.selected {
821        background-color: hsl(88, 50%, 67%);
822        box-shadow: 0 0 4px 0 #999;
823      }
824
825      img {
826        width: 100%;
827      }
828    }
829  } // record-mode
830
831  // There are two types of sliders:
832  // 1) The full-width one (default), e.g. the one used in the main recording
833  //    page for the duration of the trace. This one has both an icon and a
834  //    label on the top.
835  // 2) The smaller ones (.thin) used in the probes. This one has no icon.
836  .slider {
837    @include transition(0.3s);
838    display: grid;
839    grid-template-columns: 40px 1fr 130px 0;
840    grid-template-rows: 30px min-content 1fr;
841    grid-template-areas:
842      "hdr hdr hdr hdr" "descr descr descr descr"
843      "icon slider label unit";
844    margin-top: var(--record-section-padding);
845
846    &.thin {
847      grid-template-columns: 1fr 1fr 100px 0;
848      grid-template-areas:
849        "hdr hdr hdr hdr" "descr descr descr descr"
850        "slider slider label unit";
851    }
852
853    &.greyed-out {
854      opacity: 0.5;
855    }
856
857    > * {
858      height: 40px;
859      line-height: 40px;
860    }
861
862    > header {
863      @include transition(0.3s);
864      opacity: 0.6;
865      color: #333;
866      grid-area: hdr;
867    }
868
869    &.thin > header {
870      opacity: 1;
871      color: var(--record-text-color);
872      font-size: 14px;
873    }
874
875    &.thin > header.descr {
876      grid-area: descr;
877      font-size: 12px;
878      color: #666;
879      height: 20px;
880      line-height: 20px;
881    }
882
883    &:hover > header {
884      opacity: 1;
885      transition-duration: 0.15s;
886    }
887
888    > i {
889      grid-area: icon;
890      font-size: 32px;
891      color: #333;
892    }
893
894    input[type="range"] {
895      grid-area: slider;
896      width: 100%;
897      appearance: none;
898      -webkit-appearance: none;
899      scroll-snap-type: x mandatory;
900      background-color: transparent;
901      outline: none;
902      margin-left: -10px;
903      margin-top: -5px;
904
905      &::-webkit-slider-runnable-track {
906        margin: 10px;
907        width: 100%;
908        height: 10px;
909        background-color: #ddd;
910        border-radius: 4px;
911      }
912
913      &::-webkit-slider-thumb {
914        @include transition();
915        appearance: none;
916        -webkit-appearance: none;
917        border: none;
918        border-radius: 3px;
919        height: 20px;
920        width: 40px;
921        background-color: rgb(33, 150, 243);
922        margin-top: -5px;
923        cursor: pointer;
924        content: "";
925      }
926
927      &:hover::-webkit-slider-thumb,
928      &:focus::-webkit-slider-thumb {
929        box-shadow: 0 0 4px rgb(16, 81, 134);
930        transform: scale(1, 1.1);
931      }
932    }
933
934    &.thin input[type="range"]::-webkit-slider-runnable-track {
935      height: 8px;
936    }
937
938    &.thin input[type="range"]::-webkit-slider-thumb {
939      width: 20px;
940      border-radius: 100%;
941    }
942
943    .spinner {
944      @include transition();
945      grid-area: label;
946      border: 1px solid #fafafa;
947      border-bottom: 2px solid #ddd;
948      padding: 0 5px;
949      border-radius: 2px;
950      background-color: rgba(255, 255, 255, 60%);
951      font-family: "Roboto", sans-serif;
952      font-size: 16px;
953      font-weight: 100;
954      height: 35px;
955      outline: none;
956
957      &::-webkit-inner-spin-button,
958      &::-webkit-outer-spin-button,
959      &::-webkit-clear-button {
960        -webkit-appearance: none;
961        margin: 0;
962      }
963
964      &:hover,
965      &:focus {
966        border-bottom-color: hsl(207, 90%, 54%);
967        background-color: hsl(207, 50%, 97%);
968      }
969
970      &:invalid {
971        border-bottom-color: hsl(9, 90%, 54%);
972        background-color: hsl(9, 50%, 97%);
973      }
974    }
975
976    &.thin .spinner {
977      font-size: 14px;
978      margin-top: -5px;
979    }
980
981    .unit {
982      grid-area: unit;
983      font-size: 12px;
984      color: var(--record-text-color);
985      position: relative;
986      line-height: 37px;
987      overflow: hidden;
988      width: 35px;
989      left: -45px;
990      text-align: right;
991      margin-top: -5px;
992    }
993  }
994
995  .chrome-categories {
996    padding-top: 8px;
997    padding-bottom: 8px;
998    display: flex;
999    flex-direction: row;
1000    gap: 8px;
1001  }
1002
1003  .dropdown {
1004    border: 1px solid #eee;
1005    outline: none;
1006    -webkit-appearance: none;
1007
1008    option,
1009    optgroup {
1010      @include transition();
1011      min-height: 25px;
1012      font-size: 12px;
1013      color: var(--record-text-color);
1014      cursor: pointer;
1015      padding: 5px 0;
1016    }
1017
1018    option {
1019      padding: 2.5px 5px;
1020      border-bottom: 1px solid #eee;
1021      &:hover {
1022        background-color: hsl(214, 80%, 90%);
1023      }
1024      &::before {
1025        display: none;
1026        content: "";
1027      }
1028    }
1029
1030    &.singlecolumn {
1031      margin: var(--record-section-padding) 0;
1032      padding: 0;
1033      max-width: 100%;
1034      width: 100%;
1035      overflow-y: auto;
1036      height: 400px;
1037      optgroup {
1038        display: grid;
1039        padding: 0;
1040        grid-template-columns: 1fr;
1041      }
1042      option {
1043        margin: 0;
1044      }
1045    }
1046
1047    &.multicolumn {
1048      padding: 0;
1049      max-width: 100%;
1050      width: 100%;
1051      overflow-y: auto;
1052      optgroup {
1053        display: grid;
1054        padding: 0;
1055        grid-template-columns: 1fr 1fr 1fr;
1056      }
1057      option {
1058        &:nth-of-type(3n + 1) {
1059          border-left: 1px solid #eee;
1060          border-right: 1px solid #eee;
1061        }
1062        margin: 0;
1063      }
1064
1065      &.two-columns {
1066        height: 400px;
1067        margin: var(--record-section-padding);
1068        optgroup {
1069          display: grid;
1070          padding: 0;
1071          grid-template-columns: 1fr 1fr;
1072        }
1073        option {
1074          &:nth-of-type(2n + 1) {
1075            border-left: 1px solid #eee;
1076            border-right: 1px solid #eee;
1077          }
1078          margin: 0;
1079        }
1080      }
1081    }
1082  }
1083
1084  .atrace-categories {
1085    height: 227px;
1086  }
1087
1088  .ftrace-events {
1089    height: 152px;
1090  }
1091
1092  textarea.extra-input {
1093    width: 100%;
1094    height: 60px;
1095    border: 1px solid #eee;
1096    resize: none;
1097    outline: none;
1098    font-family: var(--monospace-font);
1099
1100    &::placeholder {
1101      color: #aaa;
1102    }
1103  }
1104
1105  textarea.record-apps-list {
1106    margin-top: 16px;
1107    height: 100px;
1108  }
1109
1110  &.instructions {
1111    label,
1112    select {
1113      font-weight: 100;
1114      color: #333;
1115      font-size: 16px;
1116      font-family: "Roboto", sans-serif;
1117    }
1118
1119    .note {
1120      border: 1px dashed #ddd;
1121      background: #f9eeba;
1122      margin: var(--record-section-padding);
1123      padding: 10px;
1124      font-family: "Roboto", sans-serif;
1125      font-size: 14px;
1126      line-height: 20px;
1127    }
1128
1129    select {
1130      @include transition();
1131      margin-left: 10px;
1132      border-radius: 0;
1133      border: 1px solid #eee;
1134      outline: none;
1135
1136      &:hover,
1137      &:active {
1138        box-shadow: 0 0 6px #ccc;
1139      }
1140    }
1141    // Stop/cancel buttons
1142    .buttons {
1143      display: flex;
1144      justify-content: center;
1145      align-items: center;
1146      width: auto;
1147      height: 70px;
1148      > * {
1149        @include transition(0.2s);
1150        cursor: pointer;
1151        border-radius: 10px;
1152        text-align: center;
1153        margin: 3px;
1154        background-color: #eee;
1155        font-family: "Roboto", sans-serif;
1156        flex-grow: 1;
1157        font-size: 17px;
1158        @media (max-width: 1280px) {
1159          font-size: 1.6vw;
1160        }
1161        padding: 7px;
1162
1163        &:hover {
1164          background-color: hsl(88, 50%, 84%);
1165          box-shadow: 0 0 4px 0 #999;
1166        }
1167
1168        &.selected {
1169          background-color: hsl(88, 50%, 67%);
1170          box-shadow: 0 0 4px 0 #999;
1171        }
1172      }
1173    }
1174
1175    .permalinkconfig {
1176      margin: var(--record-section-padding);
1177      height: 40px;
1178      max-width: 200px;
1179      border-radius: 10px;
1180      text-align: center;
1181      justify-items: center;
1182      font-family: "Roboto", sans-serif;
1183      padding: 7px;
1184      background-color: hsl(88, 50%, 67%);
1185
1186      &:hover {
1187        box-shadow: 0 0 4px 0 #999;
1188      }
1189    }
1190
1191    progress {
1192      -webkit-appearance: none;
1193      appearance: none;
1194      width: 600px;
1195      height: 30px;
1196      margin: var(--record-section-padding);
1197      border-radius: 5px;
1198    }
1199    ::-webkit-progress-value {
1200      background-color: hsl(88, 50%, 67%);
1201    }
1202    ::-webkit-progress-bar {
1203      background-color: #eee;
1204    }
1205  }
1206} // record-section
1207
1208.inline-chip {
1209  @include transition();
1210  &:hover,
1211  &:active {
1212    box-shadow: 0 0 2px 0 #ccc;
1213    background-color: #fafafa;
1214  }
1215
1216  > i.material-icons {
1217    color: rgb(60, 60, 60);
1218    font-size: 14px;
1219  }
1220
1221  line-height: 25px;
1222  font-size: smaller;
1223  padding: 2px 4px;
1224  border: 1px solid #eee;
1225  margin: 2px;
1226  border-radius: 9px;
1227}
1228
1229a.inline-chip,
1230a.inline-chip:link,
1231a.inline-chip:visited {
1232  text-decoration: none;
1233  color: var(--record-text-color);
1234}
1235
1236.code-snippet {
1237  display: grid;
1238  position: relative;
1239  padding: 0;
1240  margin: var(--record-section-padding);
1241  background-color: #111;
1242  border-radius: 4px;
1243  box-shadow: 0 0 12px #999;
1244
1245  @keyframes ripple {
1246    0% {
1247      transform: scale(1);
1248    }
1249    30% {
1250      transform: scale(1.2);
1251    }
1252    60% {
1253      transform: scale(1);
1254    }
1255    80% {
1256      transform: scale(1.3);
1257    }
1258    100% {
1259      transform: scale(1.2);
1260    }
1261  }
1262
1263  &::before {
1264    height: 20px;
1265    content: "";
1266    display: block;
1267    background-color: #598eca;
1268  }
1269
1270  &.no-top-bar {
1271    white-space: pre;
1272    &::before {
1273      height: 0;
1274    }
1275  }
1276
1277  > code {
1278    display: block;
1279    margin: 10px 5px 20px 20px;
1280    color: #ccc;
1281    font-family: var(--monospace-font);
1282    font-size: 12px;
1283    line-height: 20px;
1284    overflow-y: auto;
1285    white-space: pre-wrap;
1286    word-wrap: break-word;
1287
1288    // 510px and not 500px, so the overflowing line gets truncated, giving
1289    // a clear indication that the code box scrolls.
1290    max-height: 510px;
1291  }
1292
1293  > button {
1294    @include transition();
1295    display: inline-block;
1296    position: absolute;
1297    top: 30px;
1298    right: 20px;
1299    color: white;
1300    border-radius: 100%;
1301    background-color: #333;
1302    box-shadow: 0 0 2px rgba(255, 255, 255, 200);
1303    padding: 5px;
1304    font-size: 16px;
1305    line-height: 13px; // Deliberately smaller to center the icon.
1306    user-select: none;
1307
1308    &:hover {
1309      background-color: #444;
1310      transform: scale(1.1);
1311    }
1312  }
1313
1314  &:active:hover > button:not(:hover) {
1315    animation: ripple linear 0.5s;
1316    background-color: #701d17;
1317    transform: scale(1.1);
1318  }
1319
1320  > button:active:hover {
1321    transform: scale(0.9);
1322  }
1323} // code-snippet
1324