|
:root { |
|
--color-primary: #23ccff; |
|
--color-secondary: #e1e1e1; |
|
--color-tertiary: #e1e1e1; |
|
} |
|
|
|
@font-face { |
|
font-family: 'bytebounce'; |
|
src: url('static/bytebounce.woff2') format('woff2'), |
|
url('static/bytebounce.woff') format('woff'); |
|
font-weight: normal; |
|
font-style: normal; |
|
} |
|
|
|
html, body { |
|
padding: 0; |
|
margin: 0; |
|
width: 100%; |
|
height: 100%; |
|
overflow: hidden; |
|
font-size: 24px; |
|
font-family: "Roboto", sans-serif; |
|
} |
|
|
|
body { |
|
display: flex; |
|
flex-direction: column; |
|
flex-wrap: nowrap; |
|
justify-content: center; |
|
align-items: center; |
|
background-image: linear-gradient(to bottom, rgba(255,255,255,0.2), rgba(0,0,0,0.2)), |
|
url("static/wood.jpg"); |
|
background-blend-mode: overlay, normal; |
|
box-shadow: inset 10px 10px 50px black; |
|
} |
|
|
|
main { |
|
position: relative; |
|
background-image: |
|
linear-gradient(45deg, #333, #888), |
|
url("static/aluminum.jpg"); |
|
background-blend-mode: overlay, normal; |
|
background-repeat: repeat; |
|
border-radius: 25px; |
|
display: grid; |
|
grid-template-rows: 1fr 1fr 1fr 1fr 1fr; |
|
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; |
|
grid-gap: 50px; |
|
padding: 50px; |
|
box-shadow: |
|
18px 18px 8px rgba(0,0,0,0.4), |
|
5px 5px 10px rgba(0,0,0,0.5), |
|
inset 2px 2px 1px rgba(255,255,255,0.2), |
|
inset -2px -2px 1px rgba(0,0,0,0.2); |
|
width: 1200px; |
|
height: 900px; |
|
flex-shrink: 0; |
|
} |
|
|
|
input, textarea { |
|
background: none; |
|
outline: none; |
|
border: none; |
|
font-family: "bytebounce", monospace; |
|
font-size: 24px; |
|
color: var(--color-tertiary); |
|
} |
|
|
|
textarea { |
|
width: 100%; |
|
resize: none; |
|
} |
|
|
|
#logo, |
|
#credits { |
|
position: absolute; |
|
left: 0; |
|
width: 100%; |
|
line-height: 0; |
|
letter-spacing: -2px; |
|
color: rgba(0,0,0,0.75); |
|
text-shadow: 1px 1px 1px rgba(255,255,255,0.25); |
|
user-select: none; |
|
text-align: center; |
|
} |
|
|
|
#logo { |
|
top: 28px; |
|
font-size: 42px; |
|
font-family: "Meie Script", cursive; |
|
font-weight: 400; |
|
font-style: normal; |
|
} |
|
|
|
#credits { |
|
bottom: 10px; |
|
font-size: 13px; |
|
font-family: "Roboto", sans-serif; |
|
letter-spacing: 0; |
|
line-height: 12px; |
|
} |
|
|
|
#credits a { |
|
color: inherit; |
|
text-decoration: underline; |
|
} |
|
|
|
#credits .smaller { |
|
font-size: 9px; |
|
} |
|
|
|
#transcription { |
|
padding: 1em; |
|
background-color: #08100c; |
|
background-image: radial-gradient(#0b1812, transparent); |
|
color: var(--color-primary); |
|
text-shadow: 0 0 1em var(--color-primary); |
|
position: relative; |
|
border-radius: 1em; |
|
grid-area: 3 / 1 / 6 / 5; |
|
font-family: "bytebounce", monospace; |
|
} |
|
|
|
#transcription #welcome { |
|
margin-bottom: 10px; |
|
} |
|
|
|
#transcription #content { |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
overflow-y: auto; |
|
z-index: 1; |
|
padding: 45px 70px 70px 80px; |
|
} |
|
|
|
#transcription #input { |
|
position: relative; |
|
} |
|
|
|
#transcription #input::before { |
|
content: ">"; |
|
color: var(--color-secondary); |
|
position: absolute; |
|
left: -12px; |
|
top: 2px; |
|
} |
|
|
|
#transcription #bezel { |
|
content: "\A"; |
|
background-image: url("static/bezel.png"); |
|
background-size: 100% 100%; |
|
z-index: 3; |
|
position: absolute; |
|
left: -5px; |
|
top: -5px; |
|
right: -5px; |
|
bottom: -5px; |
|
border-radius: 1em; |
|
pointer-events: none; |
|
} |
|
|
|
#transcription .reflection { |
|
content: "\A"; |
|
background-image: url("static/screen-reflection.jpg"); |
|
background-size: 100% 100%; |
|
z-index: 2; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
border-radius: 1em; |
|
pointer-events: none; |
|
mix-blend-mode: soft-light; |
|
opacity: 0.5; |
|
} |
|
|
|
#transcription .reflection.dodge { |
|
mix-blend-mode: color-dodge; |
|
opacity: 0.05; |
|
} |
|
|
|
#transcription .transcription { |
|
color: white; |
|
} |
|
|
|
#transcription .completion { |
|
white-space: pre-wrap; |
|
line-height: 1; |
|
} |
|
|
|
#transcription .completion .spoken { |
|
text-decoration: underline; |
|
} |
|
|
|
@keyframes fadeIn { |
|
0% { |
|
opacity: 0; |
|
} |
|
100% { |
|
opacity: 1; |
|
} |
|
} |
|
|
|
#transcription .tool { |
|
margin: -10px 0 2px 0; |
|
text-align: right; |
|
font-size: 15px; |
|
color: var(--color-secondary); |
|
animation: fadeIn 0.5s ease-out; |
|
} |
|
|
|
#transcription .tool span { |
|
cursor: pointer; |
|
color: var(--color-primary); |
|
} |
|
|
|
#transcription .citation { |
|
margin: 0 0 2px 0; |
|
text-align: right; |
|
font-size: 15px; |
|
color: var(--color-secondary); |
|
animation: fadeIn 0.5s ease-out; |
|
} |
|
|
|
#transcription .citation a { |
|
color: var(--color-primary); |
|
text-decoration: none; |
|
} |
|
|
|
#transcription .citation:last-child { |
|
margin-bottom: 1em; |
|
} |
|
|
|
#waveform { |
|
position: relative; |
|
grid-area: 1 / 1 / 3 / 3; |
|
} |
|
|
|
#waveform .oscilloscope-grid { |
|
background-image: url("static/oscilloscope-grid.png"); |
|
background-size: 100% 100%; |
|
z-index: 2; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
border-radius: 100%; |
|
pointer-events: none; |
|
mix-blend-mode: difference; |
|
opacity: 0.3; |
|
} |
|
|
|
#waveform .circle-reflection { |
|
background-image: url("static/screen-reflection-circle.jpg"); |
|
background-size: 100% 100%; |
|
z-index: 3; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
border-radius: 100%; |
|
pointer-events: none; |
|
mix-blend-mode: soft-light; |
|
opacity: 0.5; |
|
} |
|
|
|
#waveform .circle-reflection.dodge { |
|
mix-blend-mode: color-dodge; |
|
opacity: 0.05; |
|
} |
|
|
|
#waveform .circle-shading { |
|
content: "\A"; |
|
background-image: url("static/shading-circle.png"); |
|
background-size: 100% 100%; |
|
z-index: 0; |
|
position: absolute; |
|
left: -20px; |
|
top: -20px; |
|
right: -20px; |
|
bottom: -20px; |
|
border-radius: 100%; |
|
pointer-events: none; |
|
} |
|
|
|
#waveform canvas { |
|
border-radius: 100%; |
|
box-shadow: inset .5em .5em 1.5em rgba(0,0,0,0.6); |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
z-index: 1; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
|
|
section#voice::before { |
|
content: "VOICE"; |
|
position: absolute; |
|
width: 66px; |
|
top: 0px; |
|
left: calc(50% - 33px); |
|
text-align: center; |
|
font-size: 16px; |
|
font-weight: 800; |
|
border-bottom-left-radius: 4px; |
|
border-bottom-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
section#voice { |
|
position: relative; |
|
border: 2px solid rgba(24,24,24,0.9); |
|
border-radius: 25px; |
|
display: grid; |
|
grid-template-rows: 1fr 1fr 1fr 1fr; |
|
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; |
|
grid-area: 1 / 3 / 3 / 5; |
|
} |
|
|
|
#wrapper-voice-id { |
|
grid-area: 1 / 1 / 4 / 6; |
|
height: 175px; |
|
margin-right: -10px; |
|
} |
|
|
|
#wrapper-voice-id-wheel { |
|
top: 24px; |
|
left: 0px; |
|
grid-area: 1 / 6 / 5 / 6; |
|
} |
|
|
|
#wrapper-volume { |
|
grid-area: 3 / 1 / 6 / 4; |
|
margin: 0 auto; |
|
} |
|
|
|
#wrapper-volume::before { |
|
content: "VOLUME"; |
|
position: absolute; |
|
width: 76px; |
|
bottom: -2px; |
|
left: calc(50% - 38px); |
|
text-align: center; |
|
font-size: 14px; |
|
font-weight: 400; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
#wrapper-speed { |
|
grid-area: 3 / 4 / 6 / 7; |
|
margin: 0 auto; |
|
} |
|
|
|
#wrapper-speed::before { |
|
content: "SPEED"; |
|
position: absolute; |
|
width: 60px; |
|
bottom: -2px; |
|
left: calc(50% - 30px); |
|
text-align: center; |
|
font-size: 14px; |
|
font-weight: 400; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
section#brain { |
|
position: relative; |
|
border: 2px solid rgba(24,24,24,0.9); |
|
border-radius: 25px; |
|
display: grid; |
|
grid-template-rows: 1fr 1fr 1fr; |
|
grid-template-columns: 1fr 1fr 1fr; |
|
grid-area: 1 / 5 / 4 / 7; |
|
} |
|
|
|
section#brain::before { |
|
content: "BRAIN"; |
|
position: absolute; |
|
width: 66px; |
|
top: 0px; |
|
left: calc(50% - 33px); |
|
text-align: center; |
|
font-size: 16px; |
|
font-weight: 800; |
|
border-bottom-left-radius: 4px; |
|
border-bottom-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
#wrapper-top-k { |
|
grid-area: 1 / 3 / 1 / 3; |
|
margin: 0 40px 0 0; |
|
} |
|
|
|
#wrapper-top-k::before { |
|
content: "TOP-K"; |
|
position: absolute; |
|
transform: rotate(-90deg); |
|
width: 76px; |
|
right: -68px; |
|
text-align: center; |
|
font-size: 14px; |
|
font-weight: 400; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
#wrapper-top-k-display { |
|
grid-area: 1 / 1 / 2 / 3; |
|
margin: 0 auto; |
|
} |
|
|
|
#wrapper-min-p { |
|
grid-area: 2 / 1 / 4 / 1; |
|
} |
|
|
|
#wrapper-top-p { |
|
grid-area: 2 / 2 / 4 / 2; |
|
} |
|
|
|
#wrapper-temperature { |
|
grid-area: 2 / 3 / 4 / 3; |
|
} |
|
|
|
#wrapper-min-p, |
|
#wrapper-top-p, |
|
#wrapper-temperature { |
|
padding: 0 0 50px 0; |
|
} |
|
|
|
#wrapper-min-p::before, |
|
#wrapper-top-p::before, |
|
#wrapper-temperature::before { |
|
position: absolute; |
|
width: 66px; |
|
bottom: -2px; |
|
left: calc(50% - 33px); |
|
text-align: center; |
|
font-size: 14px; |
|
font-weight: 400; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
#wrapper-min-p::before { |
|
content: "MIN-P"; |
|
} |
|
|
|
#wrapper-top-p::before { |
|
content: "TOP-P"; |
|
} |
|
|
|
#wrapper-temperature::before { |
|
content: "TEMP"; |
|
} |
|
|
|
section#microphone { |
|
position: relative; |
|
border: 2px solid rgba(24,24,24,0.9); |
|
border-radius: 25px; |
|
display: grid; |
|
grid-template-rows: 1fr 1fr 1fr; |
|
grid-template-columns: 1fr 1fr 1fr; |
|
grid-area: 4 / 5 / 6 / 7; |
|
} |
|
|
|
div#speaker { |
|
position: relative; |
|
width: 100%; |
|
height: 100%; |
|
margin-top: 21px; |
|
margin-left: 36px; |
|
grid-area: 1 / 1 / 3 / 3; |
|
} |
|
|
|
div#speaker div.hole { |
|
transform: translate(92px, 92px); |
|
position: absolute; |
|
width: 10px; |
|
height: 10px; |
|
border-radius: 100%; |
|
box-shadow: inset 1px 1px 2px rgba(0,0,0,0.8), |
|
inset 4px 4px 8px rgba(0,0,0,1.0); |
|
} |
|
|
|
div#power-switch { |
|
grid-area: 3 / 2 / 3 / 3; |
|
position: relative; |
|
} |
|
|
|
div#power-switch .power-wrapper { |
|
transform: rotate(-90deg) scale(0.75); |
|
position: absolute; |
|
left: 30px; |
|
top: -23px; |
|
} |
|
|
|
div#listen-button { |
|
position: relative; |
|
grid-area: 3 / 1 / 3 / 1; |
|
display: flex; |
|
flex-flow: row nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
} |
|
|
|
div#listen-button label { |
|
position: absolute; |
|
bottom: -3px; |
|
text-transform: uppercase; |
|
font-size: 14px; |
|
font-weight: 400; |
|
background-color: #222; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
width: 64px; |
|
text-align: center; |
|
color: #AAA; |
|
} |
|
|
|
button#listen { |
|
display: block; |
|
width: 60px; |
|
height: 60px; |
|
border-radius: 100%; |
|
position: relative; |
|
border: none; |
|
outline: none; |
|
background: none; |
|
cursor: pointer; |
|
box-shadow: 3px 3px 3px rgba(0,0,0,0.5); |
|
} |
|
|
|
button#listen::before, |
|
button#listen::after { |
|
content: "\A"; |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
width: 100%; |
|
height: 100%; |
|
transform-origin: center center; |
|
transition: all 150ms ease-out; |
|
background-size: 101% 101%; |
|
background-repeat: no-repeat; |
|
pointer-events: none; |
|
} |
|
|
|
button#listen::before { |
|
background-image: url("static/button-background.png"); |
|
} |
|
|
|
button#listen::after { |
|
background-image: url("static/button-foreground.png"); |
|
} |
|
|
|
button#listen:active::after { |
|
transform: scale(0.9); |
|
} |
|
|
|
div.bulb-indicator { |
|
position: relative; |
|
width: 36px; |
|
height: 36px; |
|
margin: auto; |
|
background-image: |
|
linear-gradient(to bottom, #666, #444), |
|
url("static/black-plastic.jpg"); |
|
background-blend-mode: overlay, normal; |
|
border-radius: 100%; |
|
box-shadow: 2px 2px 4px rgba(0,0,0,0.4); |
|
} |
|
|
|
div.bulb-indicator > label { |
|
text-transform: uppercase; |
|
position: absolute; |
|
transform: rotate(-90deg); |
|
width: 64px; |
|
right: -62px; |
|
top: 8px; |
|
text-align: center; |
|
font-size: 14px; |
|
font-weight: 400; |
|
border-top-left-radius: 4px; |
|
border-top-right-radius: 4px; |
|
padding: 4px 0; |
|
background-color: #222; |
|
color: #AAA; |
|
} |
|
|
|
div.bulb-indicator::before { |
|
background-image: |
|
radial-gradient(circle, rgba(255,255,255,0.15), rgba(255,255,255,0.4)), |
|
linear-gradient(to right, rgba(255,255,255,0.3), rgba(255,255,255,0.6)); |
|
background-color: transparent; |
|
content: "\A"; |
|
width: 28px; |
|
height: 28px; |
|
position: absolute; |
|
left: calc(50% - 14px); |
|
top: calc(50% - 14px); |
|
border-radius: 100%; |
|
opacity: 1.0; |
|
mix-blend-mode: overlay; |
|
z-index: 2; |
|
transition: background-color 200ms ease-out; |
|
} |
|
|
|
div.bulb-indicator::after { |
|
z-index: 1; |
|
mix-blend-mode: hard-light; |
|
width: 120px; |
|
height: 120px; |
|
content: "\A"; |
|
position: absolute; |
|
left: calc(50% - 60px); |
|
top: calc(50% - 60px); |
|
border-radius: 100%; |
|
opacity: 0; |
|
transition: opacity 200ms ease-out; |
|
background-image: radial-gradient(circle, var(--color-primary) 5px, transparent 40px); |
|
} |
|
|
|
div.bulb-indicator.active::before { |
|
background-color: var(--color-primary); |
|
box-shadow: inset 0 0 8px rgba(0,0,0,0.2); |
|
} |
|
|
|
div.bulb-indicator.active::after { |
|
opacity: 0.5; |
|
} |
|
|
|
div#recording { |
|
grid-area: 1 / 3 / 1 / 3; |
|
} |
|
|
|
div#listening { |
|
grid-area: 2 / 3 / 2 / 3; |
|
} |
|
|
|
div#power { |
|
grid-area: 3 / 3 / 3 / 3; |
|
} |
|
|
|
|
|
|
|
input.dial, |
|
input.wheel, |
|
input.solari-board, |
|
input.seven-segment, |
|
input.slider, |
|
input.power { |
|
display: none; |
|
} |
|
|
|
div.dial-wrapper { |
|
display: flex; |
|
flex-direction: column; |
|
justify-content: center; |
|
align-items: center; |
|
position: relative; |
|
} |
|
|
|
div.dial { |
|
display: block; |
|
position: relative; |
|
width: 75px; |
|
height: 75px; |
|
} |
|
|
|
div.dial .value { |
|
position: absolute; |
|
width: 100%; |
|
height: 100%; |
|
transform-origin: center; |
|
font-weight: 300; |
|
text-transform: uppercase; |
|
font-size: 15px; |
|
pointer-events: none; |
|
letter-spacing: 1px; |
|
} |
|
|
|
div.dial .value span { |
|
display: block; |
|
transform: rotate(90deg) translateX(-20px); |
|
max-width: 150px; |
|
} |
|
|
|
div.dial .value span::after { |
|
content: "—"; |
|
} |
|
|
|
div.dial .value.top span { |
|
transform: rotate(270deg) translateX(24px); |
|
text-align: end; |
|
} |
|
|
|
div.dial .value.right span { |
|
transform: rotate(270deg) translateX(20px); |
|
text-align: end; |
|
} |
|
|
|
div.dial .value.top span::before, |
|
div.dial .value.right span::before { |
|
content: "—"; |
|
} |
|
|
|
div.dial .value.top span::after, |
|
div.dial .value.right span::after { |
|
content: ""; |
|
} |
|
|
|
div.dial .dial-element, |
|
div.dial .dial-specular { |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
border-radius: 100%; |
|
width: 100%; |
|
height: 100%; |
|
background-image: url("static/aluminum-spiral.jpg"); |
|
background-size: 100% 100%; |
|
z-index: 1; |
|
} |
|
|
|
div.dial .dial-element { |
|
cursor: grab; |
|
} |
|
|
|
div.dial.active .dial-element { |
|
cursor: grabbing; |
|
} |
|
|
|
div.dial .dial-specular { |
|
background-image: url("static/aluminum-circle-specular.jpg"); |
|
mix-blend-mode: soft-light; |
|
background-size: 100% 100%; |
|
z-index: 2; |
|
pointer-events: none; |
|
transform: rotate(90deg); |
|
box-shadow: 10px -10px 10px rgba(0,0,0,0.3), |
|
0 0 5px rgba(0,0,0,0.5), |
|
11px -11px 0 rgba(0,0,0,0.15); |
|
} |
|
|
|
div.dial .dial-element::after { |
|
content: "\A"; |
|
background-image: url("static/black-plastic.jpg"); |
|
background-size: 100% 100%; |
|
width: 8px; |
|
height: 8px; |
|
border-radius: 10px; |
|
position: absolute; |
|
left: calc(50% - 3px); |
|
padding: 0; |
|
margin: 0; |
|
top: 4px; |
|
} |
|
|
|
div.solari-board-wrapper { |
|
display: flex; |
|
flex-flow: row nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
} |
|
|
|
div.solari-board { |
|
display: flex; |
|
flex-flow: row nowrap; |
|
align-items: stretch; |
|
justify-content: stretch; |
|
gap: 2px; |
|
background-image: |
|
linear-gradient(to right, #444, #444), |
|
url("static/black-plastic.jpg"); |
|
background-blend-mode: overlay, normal; |
|
padding: 6px; |
|
border-radius: 4px; |
|
} |
|
|
|
div.solari-board-element-container { |
|
display: block; |
|
position: relative; |
|
width: 36px; |
|
height: 90px; |
|
} |
|
|
|
div.solari-board-element-top, |
|
div.solari-board-element-flap, |
|
div.solari-board-element-bottom { |
|
display: block; |
|
position: absolute; |
|
top: 0; |
|
left: 0; |
|
right: 0; |
|
bottom: 0; |
|
background-image: |
|
linear-gradient(to bottom, #333, #222), |
|
url("static/black-plastic.jpg"); |
|
background-blend-mode: overlay, normal; |
|
color: #EEE; |
|
text-align: center; |
|
line-height: 98px; |
|
overflow: hidden; |
|
text-transform: uppercase; |
|
font-family: "Lekton", monospace; |
|
font-weight: 400; |
|
font-size: 58px; |
|
user-select: none; |
|
} |
|
|
|
div.solari-board-element-top { |
|
bottom: calc(50% + 1px); |
|
box-shadow: inset 4px 4px 2px rgba(0,0,0,0.4); |
|
} |
|
|
|
div.solari-board-element-flap { |
|
bottom: calc(50% + 1px); |
|
transform-origin: bottom center; |
|
transition: transform 200ms linear; |
|
} |
|
|
|
div.solari-board-element-flap.middle { |
|
transform: rotateX(90deg); |
|
} |
|
|
|
div.solari-board-element-flap.bottom { |
|
top: calc(50% + 1px); |
|
bottom: 0; |
|
transform-origin: top center; |
|
transform: rotateX(0deg); |
|
line-height: 8px; |
|
} |
|
|
|
div.solari-board-element-bottom { |
|
top: calc(50% + 1px); |
|
line-height: 8px; |
|
box-shadow: inset 4px 0px 2px rgba(0,0,0,0.4); |
|
} |
|
|
|
div.wheel-wrapper { |
|
display: block; |
|
position: relative; |
|
height: 111px; |
|
width: 35px; |
|
overflow: visible; |
|
padding: 8px; |
|
background-image: |
|
linear-gradient(to bottom, #333, #222), |
|
url("static/black-plastic.jpg"); |
|
background-blend-mode: overlay, normal; |
|
border-radius: 5px; |
|
box-shadow: inset 0 0 10px black; |
|
cursor: grab; |
|
} |
|
|
|
div.wheel { |
|
height: 111px; |
|
width: 35px; |
|
overflow: hidden; |
|
position: relative; |
|
border-radius: 2px; |
|
box-shadow: 0 0 4px rgba(0,0,0,0.3), |
|
inset 2px 2px 0 rgba(0,0,0,0.8); |
|
} |
|
|
|
div.wheel-specular { |
|
position: absolute; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
background-image: linear-gradient(to bottom, black, #333 25%, white 50%, #333 75%, black); |
|
mix-blend-mode: overlay; |
|
opacity: 0.7; |
|
pointer-events: none; |
|
} |
|
|
|
@keyframes wheelUp { |
|
0% { |
|
transform: translateY(0); |
|
} |
|
100% { |
|
transform: translateY(-9px); |
|
} |
|
} |
|
|
|
@keyframes wheelDown { |
|
0% { |
|
transform: translateY(0); |
|
} |
|
100% { |
|
transform: translateY(9px); |
|
} |
|
} |
|
|
|
div.wheel-element { |
|
display: block; |
|
position: relative; |
|
width: 100px; |
|
left: -25px; |
|
top: -50px; |
|
height: 350px; |
|
background-image: url("static/wheel.jpg"); |
|
animation-timing-function: linear; |
|
animation-iteration-count: infinite; |
|
animation-duration: 1s; |
|
} |
|
|
|
div.wheel.up div.wheel-element { |
|
animation-name: wheelUp; |
|
} |
|
|
|
div.wheel.down div.wheel-element { |
|
animation-name: wheelDown; |
|
} |
|
|
|
div.wheel-shadow { |
|
display: block; |
|
position: absolute; |
|
left: 49px; |
|
width: 25px; |
|
top: 0; |
|
bottom: 0; |
|
background-size: 100% 100%; |
|
background-image: url("static/wheel-shadow.png"); |
|
background-repeat: no-repeat; |
|
pointer-events: none; |
|
opacity: 0.9; |
|
} |
|
|
|
div.seven-segment-wrapper { |
|
position: relative; |
|
display: flex; |
|
flex-flow: row nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
} |
|
|
|
div.seven-segment-wrapper .reflection { |
|
content: "\A"; |
|
background-image: url("static/screen-reflection.jpg"); |
|
background-size: 150% 150%; |
|
z-index: 2; |
|
position: absolute; |
|
left: 0px; |
|
top: 35px; |
|
right: 0px; |
|
bottom: 35px; |
|
border-radius: 5px; |
|
pointer-events: none; |
|
mix-blend-mode: soft-light; |
|
opacity: 0.5; |
|
} |
|
|
|
div.seven-segment-wrapper .reflection.dodge { |
|
mix-blend-mode: color-dodge; |
|
opacity: 0.05; |
|
} |
|
|
|
div.seven-segment { |
|
margin: 0 auto; |
|
display: flex; |
|
flex-flow: row nowrap; |
|
justify-content: center; |
|
align-items: center; |
|
position: relative; |
|
height: 100px; |
|
background-color: #08100c; |
|
background-image: radial-gradient(#0b1812, transparent); |
|
border-radius: 5px; |
|
box-shadow: inset 5px 5px 10px black; |
|
} |
|
|
|
div.seven-segment-element { |
|
display: block; |
|
position: relative; |
|
width: 64px; |
|
height: 80px; |
|
} |
|
|
|
div.seven-segment-element:not(:last-child) { |
|
margin-right: -12px; |
|
} |
|
|
|
div.seven-segment-element > div { |
|
display: block; |
|
position: absolute; |
|
background-color: #222; |
|
width: 24px; |
|
height: 8px; |
|
} |
|
|
|
div.seven-segment-element > div.on { |
|
background-color: var(--color-primary); |
|
box-shadow: 0 0 25px var(--color-primary); |
|
} |
|
|
|
div.seven-segment-element > div::before, |
|
div.seven-segment-element > div::after { |
|
content: "\A"; |
|
border-width: 4px; |
|
border-style: solid; |
|
display: block; |
|
position: absolute; |
|
top: 0; |
|
width: 0; |
|
height: 0; |
|
background: none; |
|
} |
|
|
|
div.seven-segment-element > div::before { |
|
left: -8px; |
|
border-color: transparent #222 transparent transparent; |
|
} |
|
|
|
div.seven-segment-element > div.on::before { |
|
border-color: transparent var(--color-primary) transparent transparent; |
|
} |
|
|
|
div.seven-segment-element > div::after { |
|
right: -8px; |
|
border-color: transparent transparent transparent #222; |
|
} |
|
|
|
div.seven-segment-element > div.on::after { |
|
border-color: transparent transparent transparent var(--color-primary); |
|
} |
|
|
|
div.seven-segment-element > .segment-0 { |
|
top: 2px; |
|
left: 20px; |
|
} |
|
|
|
div.seven-segment-element > .segment-1 { |
|
top: 19px; |
|
left: 2px; |
|
transform: rotate(90deg); |
|
} |
|
|
|
div.seven-segment-element > .segment-2 { |
|
top: 19px; |
|
right: 2px; |
|
transform: rotate(90deg); |
|
} |
|
|
|
div.seven-segment-element > .segment-3 { |
|
left: 20px; |
|
top: 36px; |
|
} |
|
|
|
div.seven-segment-element > .segment-4 { |
|
top: 53px; |
|
left: 2px; |
|
transform: rotate(90deg); |
|
} |
|
|
|
div.seven-segment-element > .segment-5 { |
|
top: 53px; |
|
right: 2px; |
|
transform: rotate(90deg); |
|
} |
|
|
|
div.seven-segment-element > .segment-6 { |
|
bottom: 2px; |
|
left: 20px; |
|
} |
|
|
|
div.seven-segment-element > .segment-7 { |
|
bottom: 2px; |
|
left: 20px; |
|
} |
|
|
|
div.slider-wrapper { |
|
display: flex; |
|
position: relative; |
|
flex-flow: column nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
} |
|
|
|
div.slider-wrapper div.label { |
|
position: absolute; |
|
left: 0; |
|
width: 50px; |
|
display: flex; |
|
width: 100%; |
|
text-align: left; |
|
font-size: 12px; |
|
color: #444; |
|
line-height: 0; |
|
z-index: 0; |
|
} |
|
|
|
div.slider-wrapper div.label.left { |
|
left: -40px; |
|
} |
|
|
|
div.slider-wrapper div.label.left::after, |
|
div.slider-wrapper div.label.right::before { |
|
content: "\A"; |
|
position: absolute; |
|
height: 1px; |
|
width: 10px; |
|
background-image: linear-gradient(to right, transparent, #444 20%, #444 80%, transparent); |
|
display: block; |
|
} |
|
|
|
div.slider-wrapper div.label.left::after { |
|
left: 28px; |
|
} |
|
|
|
div.slider-wrapper div.label.right { |
|
left: 25px; |
|
} |
|
|
|
div.slider-wrapper div.label.right::before { |
|
left: -15px; |
|
} |
|
|
|
div.slider { |
|
position: relative; |
|
display: block; |
|
width: 8px; |
|
height: 100%; |
|
border-radius: 10px; |
|
box-shadow: inset 2px 2px 6px black, |
|
inset 0 0 10px black; |
|
z-index: 1; |
|
} |
|
|
|
div.slider-element { |
|
position: absolute; |
|
width: 140px; |
|
left: calc(50% - 70px); |
|
height: 40px; |
|
margin-top: -20px; |
|
perspective: 32px; |
|
cursor: grab; |
|
z-index: 2; |
|
} |
|
|
|
div.slider-element::before, |
|
div.slider-element::after { |
|
content: "\A"; |
|
display: block; |
|
position: absolute; |
|
width: 50px; |
|
height: 40px; |
|
transform-origin: center center; |
|
background-blend-mode: overlay, normal; |
|
box-shadow: 4px 4px 6px rgba(0,0,0,0.4), |
|
10px 10px 14px rgba(0,0,0,0.2); |
|
} |
|
|
|
div.slider-element::before { |
|
left: 21px; |
|
transform: rotateY(-15deg) scaleY(0.6); |
|
background-image: |
|
linear-gradient(to right, #CCC, #888), |
|
url("static/black-plastic.jpg"); |
|
border-top-left-radius: 2px; |
|
border-bottom-left-radius: 2px; |
|
} |
|
|
|
div.slider-element::after { |
|
right: 21px; |
|
transform: rotateY(15deg) scaleY(0.6); |
|
background-image: |
|
linear-gradient(to right, #444, #333), |
|
url("static/black-plastic.jpg"); |
|
border-top-right-radius: 2px; |
|
border-bottom-right-radius: 2px; |
|
} |
|
|
|
.power-wrapper input { |
|
display: none; |
|
} |
|
|
|
.power-button .on, |
|
.power-button .off { |
|
position: absolute; |
|
text-align: center; |
|
text-shadow: inset 1px 1px 1px black; |
|
width: 100%; |
|
transform: rotateZ(90deg); |
|
} |
|
|
|
.power-button .on { |
|
color: #888; |
|
top: 10px; |
|
transition: all 0.1s; |
|
font-family: sans-serif; |
|
} |
|
|
|
.power-button .off { |
|
color: #aaa; |
|
bottom: 5px; |
|
transition: all 0.1s; |
|
transform: scaleY(0.85) rotateZ(90deg); |
|
} |
|
|
|
.power-button { |
|
cursor: pointer; |
|
background-color: #272727; |
|
border-radius: 5px; |
|
border-bottom-width: 0px; |
|
box-shadow: inset 8px 6px 5px -7px rgba(0, 0, 0, 1), |
|
inset -8px 6px 5px -7px rgba(0, 0, 0, 1), |
|
inset 0 -3px 2px -2px rgba(200, 200, 200, 0.5), |
|
0 3px 3px -2px rgba(0, 0, 0, 1), |
|
inset 0 -230px 60px -200px rgba(255, 255, 255, 0.2), |
|
inset 0 220px 40px -200px rgba(0, 0, 0, 0.3); |
|
display: block; |
|
font-size: 29px; |
|
height: 128px; |
|
position: relative; |
|
transition: all 0.2s; |
|
width: 60px; |
|
} |
|
|
|
.power-button-background { |
|
background-color: black; |
|
background-image: linear-gradient( |
|
0deg, |
|
transparent 30%, |
|
transparent 65% |
|
), |
|
linear-gradient( |
|
0deg, |
|
rgba(150, 150, 150, 0) 30%, |
|
rgba(150, 150, 150, 0.1) 50%, |
|
rgba(150, 150, 150, 0) 70% |
|
); |
|
border-radius: 5px; |
|
box-sizing: border-box; |
|
height: 155px; |
|
padding: 4px 4px; |
|
transition: all 0.2s; |
|
width: 68px; |
|
box-shadow: -3px 3px 3px rgba(0,0,0,0.5); |
|
} |
|
|
|
.power-button-container { |
|
background: white; |
|
background: linear-gradient(270deg, #444, #222); |
|
border-radius: 5px; |
|
box-shadow: 0px 0px 0px 8px rgba(0, 0, 0, 0.1), |
|
0px 0px 3px 1px rgba(0, 0, 0, 1), |
|
inset 0 8px 3px -8px rgba(255, 255, 255, 0.4); |
|
height: 165px; |
|
margin: 30px auto; |
|
padding: 5px; |
|
width: 79px; |
|
} |
|
|
|
input:checked + .power-button-background .on, |
|
input:checked + .power-button-background .off { |
|
text-shadow: inset 1px 1px 1px black; |
|
} |
|
|
|
input:checked + .power-button-background .on { |
|
color: #444; |
|
top: 10px; |
|
transform: scaleY(0.85) rotateZ(90deg); |
|
} |
|
|
|
input:checked + .power-button-background .off { |
|
color: #777; |
|
bottom: 5px; |
|
transform: scaleY(1) rotateZ(90deg); |
|
} |
|
|
|
input:checked + .power-button-background .power-button { |
|
background: #232323; |
|
background-image: linear-gradient( |
|
270deg, |
|
rgba(0, 0, 0, 0.5), |
|
rgba(0, 0, 0, 0) |
|
); |
|
border-radius: 5px; |
|
box-shadow: inset 8px -4px 5px -7px rgba(0, 0, 0, 1), |
|
inset -8px -4px 5px -7px rgba(0, 0, 0, 1), |
|
0 -3px 8px -4px rgba(250, 250, 250, 0.4), |
|
inset 0 3px 4px -2px rgba(10, 10, 10, 1), |
|
inset 0 280px 40px -200px rgba(0, 0, 0, 0.2), |
|
inset 0 -200px 40px -200px rgba(180, 180, 180, 0.2); |
|
margin-top: 20px; |
|
} |
|
|
|
input:checked + .power-button-background { |
|
background-image: linear-gradient(90deg, black 30%, transparent 65%), |
|
linear-gradient( |
|
180deg, |
|
rgba(250, 250, 250, 0) 0%, |
|
rgba(250, 250, 250, 0.4) 50%, |
|
rgba(150, 150, 150, 0) 100% |
|
); |
|
padding: 2px 4px; |
|
} |
|
|
|
#info { |
|
position: fixed; |
|
left: 0; |
|
top: 0; |
|
right: 0; |
|
bottom: 0; |
|
background: none; |
|
transition: all 0.5s; |
|
z-index: 99; |
|
display: flex; |
|
flex-flow: row nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
pointer-events: none; |
|
} |
|
|
|
#info.active { |
|
pointer-events: auto; |
|
} |
|
|
|
#info #info-content { |
|
opacity: 0; |
|
transition: opacity 0.5s; |
|
height: calc(100% - 4em); |
|
overflow-y: auto; |
|
} |
|
|
|
#info.active #info-content { |
|
opacity: 1; |
|
pointer-events: auto; |
|
} |
|
|
|
#info.active { |
|
background: rgba(0, 0, 0, 0.8); |
|
backdrop-filter: blur(5px); |
|
} |
|
|
|
#info-button { |
|
position: absolute; |
|
top: 0; |
|
right: 0; |
|
width: 50px; |
|
height: 50px; |
|
line-height: 50px; |
|
cursor: pointer; |
|
font-family: "Meie Script", cursive; |
|
color: white; |
|
font-size: 50px; |
|
border: none; |
|
outline: none; |
|
background: none; |
|
opacity: 0.5; |
|
transition: opacity 0.2s; |
|
pointer-events: auto; |
|
z-index: 11; |
|
} |
|
|
|
#info-button:hover { |
|
opacity: 1; |
|
} |
|
|
|
#info-content { |
|
padding: 2em 4em; |
|
background-color: rgba(255,255,255,0.8); |
|
text-align: center; |
|
flex-flow: column nowrap; |
|
align-items: center; |
|
justify-content: center; |
|
z-index: 10; |
|
width: 800px; |
|
max-width: calc(100% - 4em); |
|
font-family: "Roboto"; |
|
font-weight: 300; |
|
font-size: 15px; |
|
} |
|
|
|
#info-content > * { |
|
text-align: left; |
|
} |
|
|
|
#info-logo { |
|
margin-top: 0; |
|
font-size: 58px; |
|
font-family: "Meie Script", cursive; |
|
font-weight: 400; |
|
font-style: normal; |
|
text-align: center; |
|
} |
|
|
|
#info-version { |
|
text-align: center; |
|
margin-top: -67px; |
|
font-weight: 300; |
|
font-size: 14px; |
|
padding-bottom: 15px; |
|
border-bottom: 1px solid rgba(0,0,0,0.8); |
|
} |
|
|
|
#info cite { |
|
white-space: pre-wrap; |
|
display: block; |
|
font-style: normal; |
|
font-family: "Lekton", monospace; |
|
word-break: break-all; |
|
padding: 10px; |
|
background-color: rgba(0,0,0,0.8); |
|
color: white; |
|
margin-bottom: 5px; |
|
} |
|
|
|
#github { |
|
position: fixed; |
|
bottom: 0px; |
|
right: 5px; |
|
opacity: 0.5; |
|
transition: opacity 0.2s; |
|
} |
|
|
|
#github:hover { |
|
opacity: 1.0; |
|
} |
|
|
|
.alert-container { |
|
position: fixed; |
|
pointer-events: none; |
|
top: 50px; |
|
right: 0; |
|
display: flex; |
|
flex-flow: column nowrap; |
|
z-index: 10; |
|
} |
|
|
|
@keyframes alertIn { |
|
0% { |
|
opacity: 0; |
|
height: 0; |
|
margin-bottom: 0; |
|
} |
|
100% { |
|
opacity: 1; |
|
height: 100px; |
|
margin-bottom: 5px; |
|
} |
|
} |
|
|
|
@keyframes alertOut { |
|
0% { |
|
opacity: 1; |
|
height: 100px; |
|
margin-bottom: 5px; |
|
} |
|
100% { |
|
opacity: 0; |
|
height: 0; |
|
margin-bottom: 0; |
|
} |
|
} |
|
|
|
.alert { |
|
position: relative; |
|
display: block; |
|
animation: alertIn 1s ease-out; |
|
animation-fill-mode: forwards; |
|
width: 300px; |
|
background-color: rgba(242,222,222,0.75); |
|
backdrop-filter: blur(5px); |
|
color: #333; |
|
padding: 0; |
|
margin-bottom: 5px; |
|
border-radius: 5px; |
|
pointer-events: auto; |
|
border: 1px solid rgba(222,22,22,0.9); |
|
overflow: hidden; |
|
} |
|
|
|
@keyframes alertProgress { |
|
0% { |
|
width: 100%; |
|
} |
|
100% { |
|
width: 0; |
|
} |
|
} |
|
|
|
.alert .progress-bar { |
|
position: absolute; |
|
bottom: 0; |
|
left: 0; |
|
background-color: rgba(222,22,22,0.9); |
|
height: 5px; |
|
animation-name: alertProgress; |
|
animation-fill-mode: forwards; |
|
animation-timing-function: linear; |
|
} |
|
|
|
.alert h2 { |
|
font-size: 16px; |
|
font-weight: 400; |
|
padding: 6px 10px; |
|
margin: 0; |
|
background-color: rgba(222,22,22,0.9); |
|
color: white; |
|
border-top-left-radius: 5px; |
|
border-top-right-radius: 5px; |
|
} |
|
|
|
.alert p { |
|
padding: 10px; |
|
margin: 0; |
|
font-size: 12px; |
|
} |
|
|
|
.alert.hiding { |
|
animation: alertOut 1s ease-out; |
|
animation-fill-mode: forwards; |
|
} |
|
|
|
.alert button { |
|
position: absolute; |
|
top: 5px; |
|
right: 5px; |
|
background: none; |
|
border: none; |
|
outline: none; |
|
cursor: pointer; |
|
font-size: 30px; |
|
line-height: 20px; |
|
color: white; |
|
font-weight: 400; |
|
padding: 0; |
|
margin: 0; |
|
opacity: 0.8; |
|
} |
|
|
|
.alert button:hover { |
|
opacity: 1; |
|
} |
|
|
|
@media (orientation: portrait) { |
|
main { |
|
height: 1200px; |
|
width: 900px; |
|
grid-gap: 25px; |
|
padding: 25px; |
|
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; |
|
grid-template-columns: 1fr 1fr 1fr 1fr; |
|
} |
|
|
|
section#waveform { |
|
grid-area: 1 / 1 / 3 / 2; |
|
} |
|
|
|
section#voice { |
|
grid-area: 1 / 3 / 4 / 5; |
|
} |
|
|
|
section#brain { |
|
grid-area: 3 / 1 / 7 / 3; |
|
} |
|
|
|
section#microphone { |
|
grid-area: 4 / 3 / 7 / 5; |
|
} |
|
|
|
section#transcription { |
|
grid-area: 7 / 1 / 12 / 5; |
|
} |
|
|
|
section#logo { |
|
top: -80px; |
|
color: white; |
|
font-size: 120px; |
|
} |
|
|
|
section#credits { |
|
color: white; |
|
font-size: 20px; |
|
bottom: -95px; |
|
} |
|
#transcription .tool, |
|
#transcription .citation { |
|
font-size: 22px; |
|
} |
|
|
|
section#credits .smaller { |
|
font-size: 15px; |
|
margin-top: 20px; |
|
line-height: 30px; |
|
} |
|
|
|
div.bulb-indicator > label { |
|
right: -73px; |
|
} |
|
} |
|
|
|
@media (max-width: 1200px) { |
|
main { |
|
transform: scale(0.68); |
|
} |
|
} |
|
|
|
@media (max-width: 900px) { |
|
main { |
|
transform: scale(0.4); |
|
} |
|
#transcription #content { |
|
font-size: 38px; |
|
padding: 60px 90px 90px 100px; |
|
} |
|
#transcription .tool, |
|
#transcription .citation { |
|
font-size: 38px; |
|
} |
|
textarea, input { |
|
font-size: 38px; |
|
} |
|
} |
|
|
|
@media (max-width: 900px) and (orientation: portrait) { |
|
main { |
|
height: 1500px; |
|
} |
|
section#waveform { |
|
margin-right: -60px; |
|
} |
|
div#power-switch .power-wrapper { |
|
top: -15px; |
|
} |
|
section#credits { |
|
font-size: 30px; |
|
bottom: -180px; |
|
} |
|
section#credits .smaller { |
|
font-size: 28px; |
|
margin-top: 50px; |
|
line-height: 30px; |
|
} |
|
} |
|
|