| /* |
| * Copyright (C) 2018-2020 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| * THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| /* Outer harness */ |
| html, |
| body { |
| min-height: 100%; |
| } |
| |
| body { |
| background-color: hsl(0, 0%, 95%); |
| |
| font-family: "Helvetica Neue", Helvetica, Verdana, sans-serif; |
| font-size: 15px; |
| |
| cursor: default; |
| |
| -webkit-user-select: none; |
| } |
| |
| body.showing-intro, |
| body.showing-results { |
| background-color: hsl(35, 100%, 100%); |
| background-image: url(crystal.svg), url(lines.svg); |
| background-size: auto 225%, auto 100%; |
| background-repeat: no-repeat; |
| |
| animation: background-fade 1s ease-in 1s, background-color 60s linear infinite 2s; |
| animation-play-state: paused; |
| |
| will-change: background-color; |
| } |
| |
| body.showing-test-container { |
| overflow: hidden; |
| } |
| |
| body.images-loaded { |
| animation-play-state: running; |
| } |
| |
| @media screen and (min-width: 667px) { |
| body { |
| font-size: 24px; |
| } |
| |
| body.showing-intro, |
| body.showing-results { |
| background-size: 200% 100%, 150% auto; |
| } |
| } |
| |
| @media screen and (min-width: 1025px) { |
| body.showing-intro, |
| body.showing-results { |
| background-size: 150% 100%, 150% auto; |
| } |
| } |
| |
| ::selection { |
| background-color: black; |
| color: white; |
| } |
| |
| .hidden { |
| display: none; |
| } |
| |
| section { |
| display: none; |
| } |
| |
| section.selected { |
| display: block; |
| } |
| |
| .logo { |
| position: relative; |
| } |
| |
| .logo svg { |
| width: 350px; |
| height: 88px; |
| |
| max-width: 100%; |
| |
| color: hsl(35, 100%, 50%); |
| |
| animation: foreground-color 60s linear infinite 2s; |
| animation-play-state: paused; |
| |
| will-change: color; |
| } |
| |
| .logo div { |
| transform: skewX(-10deg); |
| margin-left: 1em; |
| } |
| |
| body.images-loaded .logo svg { |
| animation-play-state: running; |
| } |
| |
| @media screen and (min-width: 667px) { |
| .logo svg { |
| width: 525px; |
| height: 130px; |
| padding-left: .4em; |
| } |
| |
| .logo div { |
| position: absolute; |
| left: 360px; |
| bottom: 0.2em; |
| font-size: 75%; |
| } |
| } |
| |
| section .body { |
| margin: 2em 1em 0; |
| max-width: 350px; |
| } |
| |
| section .body p { |
| margin: 1em 0; |
| line-height: 1.5em; |
| |
| -webkit-user-select: text; |
| cursor: text; |
| } |
| |
| @media screen and (min-width: 667px) { |
| section .body { |
| margin-left: 2.5em; |
| max-width: 500px; |
| transform: skewX(-10deg); |
| } |
| |
| section button { |
| transform: none; |
| } |
| } |
| |
| button { |
| background-color: hsl(35, 100%, 50%); |
| color: white; |
| |
| padding: 0.25em; |
| margin: 1.5em -0.25em 0 0; |
| |
| min-width: 50%; |
| |
| border: none; |
| |
| font-family: inherit; |
| font-size: inherit; |
| |
| transform: skewX(-10deg); |
| |
| transition: 100ms filter ease-in-out; |
| |
| animation: background-color 60s linear infinite 2s; |
| animation-play-state: paused; |
| |
| will-change: background-color; |
| } |
| |
| body.images-loaded button { |
| animation-play-state: running; |
| } |
| |
| button:hover { |
| filter: brightness(115%); |
| } |
| |
| button:active { |
| filter: brightness(130%); |
| } |
| |
| button:disabled { |
| opacity: 0.5; |
| filter: none !important; |
| } |
| |
| @media print { |
| button { |
| display: none; |
| } |
| } |
| |
| .portrait-orientation-check { |
| display: none; |
| } |
| |
| @media screen and (max-device-width: 1025px) and (orientation: portrait) { |
| .portrait-orientation-check { |
| display: block; |
| } |
| } |
| |
| @media screen and (max-device-width: 1025px) and (orientation: portrait) { |
| .landscape-orientation-check { |
| /* This keeps the button color animation in sync with page, while display: none does not. */ |
| visibility: hidden; |
| } |
| } |
| |
| @keyframes background-fade { |
| 100% { |
| background-color: hsl(35, 100%, 50%); |
| } |
| } |
| |
| @keyframes background-color { |
| 0%, 10% { |
| background-color: hsl(35, 100%, 50%); |
| } |
| |
| 12%, 20% { |
| background-color: hsl(75, 100%, 30%); |
| } |
| |
| 22%, 30% { |
| background-color: hsl(115, 100%, 30%); |
| } |
| |
| 32%, 40% { |
| background-color: hsl(155, 100%, 30%); |
| } |
| |
| 42%, 50% { |
| background-color: hsl(195, 100%, 30%); |
| } |
| |
| 52%, 60% { |
| background-color: hsl(235, 100%, 30%); |
| } |
| |
| 62%, 70% { |
| background-color: hsl(275, 100%, 30%); |
| } |
| |
| 72%, 80% { |
| background-color: hsl(315, 100%, 30%); |
| } |
| |
| 82%, 90% { |
| background-color: hsl(355, 100%, 30%); |
| } |
| |
| 92%, 100% { |
| background-color: hsl(395, 100%, 50%); |
| } |
| } |
| |
| @keyframes foreground-color { |
| 0%, 10% { |
| color: hsl(35, 100%, 50%); |
| } |
| |
| 12%, 20% { |
| color: hsl(75, 100%, 30%); |
| } |
| |
| 22%, 30% { |
| color: hsl(115, 100%, 30%); |
| } |
| |
| 32%, 40% { |
| color: hsl(155, 100%, 30%); |
| } |
| |
| 42%, 50% { |
| color: hsl(195, 100%, 30%); |
| } |
| |
| 52%, 60% { |
| color: hsl(235, 100%, 30%); |
| } |
| |
| 62%, 70% { |
| color: hsl(275, 100%, 30%); |
| } |
| |
| 72%, 80% { |
| color: hsl(315, 100%, 30%); |
| } |
| |
| 82%, 90% { |
| color: hsl(355, 100%, 30%); |
| } |
| |
| 92%, 100% { |
| color: hsl(395, 100%, 50%); |
| } |
| } |
| |
| /* Intro section, About page */ |
| |
| #intro, #about { |
| padding: 2em; |
| } |
| |
| #intro { |
| opacity: 0; |
| transition: opacity 500ms ease-in; |
| } |
| |
| body.images-loaded #intro { |
| opacity: 1; |
| } |
| |
| #about .body { |
| transform: none; |
| margin: 0; |
| max-width: initial; |
| } |
| |
| #about li { |
| line-height: 1.5em; |
| } |
| |
| #about button { |
| padding: .75em 2em; |
| margin: 1.5em auto 0; |
| min-width: initial; |
| transform: skewX(-10deg); |
| } |
| #about h3 { |
| margin-top: 3em; |
| } |
| #about #log { |
| font-size: .9em; |
| list-style-type: none; |
| margin-left: 0; |
| padding-left: 0; |
| } |
| #about #log li { |
| margin-top: .5em; |
| } |
| |
| @media screen and (min-width: 667px) { |
| #about .body { |
| font-size: .7em; |
| margin: 1em; |
| } |
| |
| #about ol, #about ul { |
| padding-left: 3em; |
| } |
| } |
| |
| |
| #intro a, #about a, |
| #intro a:visited, #about a:visited { |
| color: black; |
| } |
| |
| /* Running test section */ |
| |
| .frame-container { |
| position: absolute; |
| |
| top: 50%; |
| left: 50%; |
| } |
| |
| .frame-container > iframe { |
| width: 100%; |
| height: 100%; |
| |
| border: 0; |
| margin: 0; |
| } |
| |
| body.small .frame-container { |
| width: 568px; |
| height: 320px; |
| margin-left: -284px; |
| margin-top: -160px; |
| } |
| |
| body.medium .frame-container { |
| width: 900px; |
| height: 600px; |
| margin-left: -450px; |
| margin-top: -300px; |
| } |
| |
| body.large .frame-container { |
| width: 1600px; |
| height: 800px; |
| margin-left: -800px; |
| margin-top: -400px; |
| } |
| |
| /* Results section */ |
| |
| #results { |
| padding: 2em; |
| } |
| |
| #results .body { |
| -webkit-user-select: text; |
| } |
| |
| #results .score-container { |
| padding-bottom: 2em; |
| } |
| |
| #results .table-container { |
| position: relative; |
| } |
| |
| #results .table-container > div { |
| margin-left: 40%; |
| } |
| |
| #results .score { |
| font-size: 5em; |
| font-weight: bold; |
| font-style: italic; |
| line-height: 1; |
| margin: 0; |
| } |
| |
| #results .confidence { |
| font-size: 2em; |
| font-style: italic; |
| line-height: 1; |
| margin: 0; |
| text-indent: 1.75em; |
| color: hsl(0, 0%, 40%); |
| padding-bottom: .3em; |
| } |
| |
| #results table { |
| border-spacing: 0; |
| margin: 0; |
| padding: 0; |
| min-width: 25%; |
| } |
| |
| #results table td, |
| #results table th { |
| padding: 0.25em; |
| } |
| |
| #results table td.suites-separator { |
| padding: 0; |
| } |
| |
| #results table tr:nth-child(even) { |
| background-color: hsla(0, 0%, 0%, 0.05); |
| } |
| |
| #results #results-header { |
| top: 0; |
| left: 0; |
| width: 40%; |
| position: absolute; |
| } |
| |
| #results #results-score { |
| float: left; |
| } |
| |
| #results #results-data span { |
| font-size: .75em; |
| color: hsl(0, 0%, 40%); |
| } |
| |
| #results #results-header td, |
| #results #results-header th { |
| text-align: right; |
| padding-right: 1em !important; |
| padding-left: 0.5em !important; |
| } |
| |
| #results #results-score td, |
| #results #results-score th { |
| text-align: left; |
| padding-right: 0.5em !important; |
| } |
| |
| #results #results-score td { |
| cursor: text; |
| } |
| |
| @media screen and (min-width: 667px) { |
| #results .score, |
| #results .confidence { |
| font-style: normal; |
| } |
| } |
| |
| .detail span { |
| display: none; |
| } |
| |
| body.small .detail .small, |
| body.medium .detail .medium, |
| body.large .detail .large { |
| display: initial; |
| } |
| |
| #overlay { |
| position: fixed; |
| |
| top: 0; |
| left: 0; |
| bottom: 0; |
| right: 0; |
| |
| background: hsla(0, 0%, 100%, 0.9); |
| } |
| |
| @supports (-webkit-backdrop-filter: blur(10px)) { |
| #overlay { |
| background: hsla(0, 0%, 100%, 0.7); |
| -webkit-backdrop-filter: blur(20px); |
| } |
| } |
| |
| #overlay > div { |
| position: absolute; |
| |
| width: 500px; |
| height: 500px; |
| |
| margin-top: -250px; |
| margin-left: -250px; |
| |
| top: 50%; |
| left: 50%; |
| } |
| |
| #overlay > div div { |
| overflow: scroll; |
| |
| font-size: 12px; |
| -webkit-user-select: text; |
| cursor: text; |
| |
| max-height: 250px; |
| |
| border: 1px solid hsla(0, 0%, 0%, 0.1); |
| padding: 1em; |
| } |