media/css/firefox/nothing-personal/_things.scss (270 lines of code) (raw):

// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. .c-things { @media screen and (max-width: #{$screen-md}) { // no room on mobile for browser buttons and fox sticker .c-browser-bar-dot-container { display: none; } } .c-browser-bar h3 { padding-left: 0; text-align: start; @media (min-width: $mq-tad-smaller-sm) { padding: 0; text-align: center; } } } // use details instead of button html.no-js { .c-things-list-container { display: block; } .c-things-output-container, .c-things-button-container { display: none; } } // hide details if JS available .c-things-list-container { display: none; } .c-things-list { background-color: var(--background-color); border: $border-black; padding: $spacing-md; &.mzp-u-list-styled { margin-left: 0; padding-left: $spacing-xl; } } .c-things-browser-fox-bush-container { position: relative; } $fox-bush-width: 136px; $fox-bush-height: 87px; .c-things-fox-bush { display: none; @media #{$mq-lg} { display: block; position: absolute; left: calc(#{$layout-lg} * -2); top: $layout-lg; &::after { content: ''; position: absolute; background-color: #0EBF45; height: $fox-bush-height; width: $fox-bush-width; left: 10px; top: 10px; border: $border-black; } } } .c-things-fox-bush-image { height: $fox-bush-height; width: $fox-bush-width; position: relative; z-index: 10; // static image has baked-in border, but doesn't need any cropping @media (prefers-reduced-motion: no-preference) { border: 1px solid $page-background; object-fit: cover; object-position: bottom; // crop out browser bar at top } } .c-things-browser { position: relative; } .c-things-foxy-sticker { position: absolute; right: -10px; top: -50px; width: 127px; height: 119px; @media #{$mq-md} { right: -70px; top: 30px; height: 145px; width: 155px; } } .c-things-smiley-sticker { position: absolute; left: 50px; bottom: -70px; width: 91px; height: 89px; @media #{$mq-md} { left: 75px; width: 104px; height: 102px; } } .c-things-heart-sticker { position: absolute; left: 10px; bottom: -70px; width: 62px; height: 57px; @media #{$mq-md} { left: 30px; width: 72px; height: 66px; } } .c-things-output-container { background-color: var(--background-color); border: $border-black; margin-bottom: $layout-sm; // match title margin padding: $spacing-md; min-height: 3lh; // preserve space for longest line length responses @media #{$mq-sm} { min-height: 2lh; } } .c-things-output { margin-bottom: 0; text-wrap: pretty; } .c-things-button-container { text-align: center; } @keyframes shine { 0%{ background-position: 0 0; } 100% { background-position: 100% 0; } } @keyframes pulse { 0% { scale: 1; } 5% { scale: 1.05; } 10% { scale: 1; } 15% { scale: 1.025; } 20% { scale: 1; } 100% { scale: 1; } } .c-things-button { $push-depth: 2px; background-color: $color-pink-10; background-image: linear-gradient(to right,$color-pink-10, $color-pink-10, $color-pink-40, $color-pink-10, $color-pink-10); background-position: 0 0; background-size: 400% 100%; border: $border-black; box-shadow: $spacing-xs $spacing-xs var(--background-color-inverse); cursor: pointer; display: flex; // center text within button margin-right: auto; margin-left: auto; margin-bottom: $spacing-sm; padding: $spacing-md; position: relative; @media #{$mq-md} { padding: $spacing-md $spacing-lg; } &:hover, &:focus { background-position: 75% 0; animation-play-state: paused; } &:active { transform: translate($push-depth, $push-depth); box-shadow: $push-depth $push-depth var(--background-color-inverse); } @media (prefers-reduced-motion: no-preference) { animation-name: shine, pulse; animation-duration: 1s, 5s; animation-delay: 3s, 4s; animation-timing-function: linear, ease-in-out; animation-iteration-count: 1, infinite; transition: background-position 0.5s; } } @keyframes fade-in { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes sparkle { 0% { opacity: 0; translate: 0 0; rotate: 0; scale:1; } 10% { opacity: 1; } 50% { translate: 0 -20%; scale: 1.3; opacity: 1; } 100% { translate: 0 0; rotate: 360deg; scale:1; opacity: 1; } } [class^="c-things-button-sparkle"] { position: absolute; width: 22px; height: 22px; opacity: 0; @media (prefers-reduced-motion: reduce) { animation-name: fade-in; animation-duration: 0.3s; animation-fill-mode: forwards; } } // top right .c-things-button-sparkle-1 { top: -12px; right: 10px; @media (prefers-reduced-motion: reduce) { animation-delay: 1s; } @media (prefers-reduced-motion: no-preference) { animation: 1s 2s sparkle forwards; } } // top left .c-things-button-sparkle-2 { left: -17px; top: 5px; @media (prefers-reduced-motion: reduce) { animation-delay: 1.5s; } @media (prefers-reduced-motion: no-preference) { animation: 1s 3s sparkle forwards; } } // bottom right .c-things-button-sparkle-3 { right: -10px; bottom: -10px; @media (prefers-reduced-motion: reduce) { animation-delay: 2s; } @media (prefers-reduced-motion: no-preference) { animation: 1s 3.5s sparkle forwards; } } .c-things-note { @include text-body-xs; /* stylelint-disable-next-line declaration-no-important */ margin-bottom: 0 !important; // override the extra specificity margin from c-browser @media #{$mq-md} { @include text-body-sm; } }