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