This commit is contained in:
Robin Hägg 2015-08-06 17:45:04 +02:00
parent 42a186fb22
commit ea8a49e6d9
16 changed files with 525 additions and 14 deletions

15
package.json Normal file
View File

@ -0,0 +1,15 @@
{
"name": "change-this-fool",
"version": "0.0.0",
"description": "",
"main": "./server/server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "The Code Bureau <info@thecodebureau.com> (https://thecodebureau.com)",
"dependencies": {
"epiphany": "^0.5.3",
"lodash": "^3.10.1",
"ridge": "^0.5.1"
}
}

5
server/config/details.js Normal file
View File

@ -0,0 +1,5 @@
module.exports = {
title: 'Epiphany',
name: 'epiphany'
};

47
server/config/dir.js Normal file
View File

@ -0,0 +1,47 @@
// MODULES
// modules : NATIVE
var path = require('path');
var PWD = process.env.PWD;
// Server folders. All folder related to the Node server handling most things.
module.exports = {
// Any code that needs to a "middle landing spot" while built, place it anywhere here
build: {
root: path.join(PWD, 'build')
},
// public directories. Where all static/built/live content goes.
public: {
css: path.join(PWD, 'public', 'css'),
fonts: path.join(PWD, 'public', 'fonts'),
img: path.join(PWD, 'public', 'img'),
root: path.join(PWD, 'public'),
scripts: path.join(PWD, 'public', 'js')
},
root: PWD,
server: {
middleware: path.join(PWD, 'server', 'middleware'),
models: path.join(PWD, 'server', 'models'),
routes: path.join(PWD, 'server', 'routes'),
root: path.join(PWD, 'server'),
schemas: path.join(PWD, 'server', 'schema.org'),
templates: path.join(PWD, 'server', 'templates'),
uploads: path.join(PWD, 'server', 'uploads')
},
// Source directories. This is where you put all content that needs to be built before use.
src: {
fonts: path.join(PWD, 'src', 'fonts'),
raster: path.join(PWD, 'src', 'raster'),
root: path.join(PWD, 'src'),
sass: path.join(PWD, 'src', 'sass'),
static: path.join(PWD, 'src', 'static'),
scripts: path.join(PWD, 'src', 'js'),
svg: path.join(PWD, 'src', 'svg'),
}
};

12
server/config/domain.js Normal file
View File

@ -0,0 +1,12 @@
var _ = require('lodash');
module.exports = function(config) {
if(!config.port || !_.isNumber(config.port)) throw new Error('Port undefined or not a number');
return {
development: 'localhost:' + config.port,
testing: 'changeThisFool.testing.thecodebureau.com',
staging: 'changeThisFool.thecodebureau.com',
production: 'www.changeThisFool.se'
}[ENV];
};

View File

@ -0,0 +1,23 @@
module.exports = {
defaults: {
mystify: {
properties: [ 'message', 'name', 'status', 'statusText' ]
},
log: {
// if database = true there has to be a mongoose model name ErrorModel
ignore: [],
}
},
development: {
log: {
database: false,
console: true,
}
},
production: {
log: {
database: true,
console: false,
}
},
};

13
server/config/globals.js Normal file
View File

@ -0,0 +1,13 @@
var path = require('path');
module.exports = function(bind) {
bind = bind || global;
bind.ENV = process.env.NODE_ENV || 'development';
bind.PWD = process.env.PWD;
bind.DEBUG_ERROR_HANDLER = false;
bind.DEBUG_RESPONDER = false;
bind.LOGIN_USER = false;
//bind.LOGIN_USER = 'username';
//bind.LOGIN_USER = 'linus.miller@thecodebureau.com';
};

10
server/config/mongo.js Normal file
View File

@ -0,0 +1,10 @@
module.exports = {
defaults: {
uri: 'mongodb://localhost/changeThisFool'
//uri: 'mongodb://user:password@tcb01.thecodebureau.com/changeThisFool'
},
development: {
//uri: 'mongodb://user:password@tcb01.thecodebureau.com/changeThisFoolDev'
uri: 'mongodb://localhost/changeThisFoolDev'
}
};

8
server/config/port.js Normal file
View File

@ -0,0 +1,8 @@
var basePort = 10000;
module.exports = {
development: basePort,
testing: basePort + 1,
staging: basePort + 2,
production: basePort + 3
}[ENV];

14
server/config/session.js Normal file
View File

@ -0,0 +1,14 @@
module.exports = {
defaults: {
secret: 'changeThisFool',
resave: true,
saveUninitialized: true
},
production: {
redis: {
port: 6379,
host: 'localhost'
}
}
};

7
server/routes/_index.js Normal file
View File

@ -0,0 +1,7 @@
module.exports = function() {
return [
[ 'get', '/', function(req, res) {
res.render('pages/index');
} ]
];
};

3
server/server.js Normal file
View File

@ -0,0 +1,3 @@
var Epiphany = require('epiphany');
var server = new Epiphany();

View File

@ -2,18 +2,182 @@
<html>
<head>
<title>TCB Stomping Grounds : Resolution Test : No viewport option</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="utf-8">
<style>
html, body { margin: 0; height: 100%;}
</style>
<link rel="stylesheet" href="/css/main.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.1/backbone-min.js"></script>
</head>
<body>
<ul>
<li><a href="/">Without Viewport</a></li>
<li><a href="/viewport.html">Viewport</a></li>
</ul>
<table>
<div class="finger-me">
SCREEN
<div class="screenInfo"></div><br>
BODY
<div class="bodyInfo"></div>
DEVICE PIXEL RATIO
<div class="deviceInfo">
<br>-webkit-min-device-pixel-ratio
<div class="wk-device-pixel-ratio">
<span class="dr d10">1.0</span>
<span class="dr d11">1.1</span>
<span class="dr d12">1.2</span>
<span class="dr d13">1.3</span>
<span class="dr d14">1.4</span>
<span class="dr d15">1.5</span>
<span class="dr d16">1.6</span>
<span class="dr d17">1.7</span>
<span class="dr d18">1.8</span>
<span class="dr d19">1.9</span>
<span class="dr d20">2.0</span>
<span class="dr d21">2.1</span>
<span class="dr d22">2.2</span>
<span class="dr d23">2.3</span>
<span class="dr d24">2.4</span>
<span class="dr d25">2.5</span>
<span class="dr d26">2.6</span>
<span class="dr d27">2.7</span>
<span class="dr d28">2.8</span>
<span class="dr d29">2.9</span>
<span class="dr d30">3.0</span>
</div>
<br>-moz-min-device-pixel-ratio
<div class="moz-device-pixel-ratio">
<span class="dr d10">1.0</span>
<span class="dr d11">1.1</span>
<span class="dr d12">1.2</span>
<span class="dr d13">1.3</span>
<span class="dr d14">1.4</span>
<span class="dr d15">1.5</span>
<span class="dr d16">1.6</span>
<span class="dr d17">1.7</span>
<span class="dr d18">1.8</span>
<span class="dr d19">1.9</span>
<span class="dr d20">2.0</span>
<span class="dr d21">2.1</span>
<span class="dr d22">2.2</span>
<span class="dr d23">2.3</span>
<span class="dr d24">2.4</span>
<span class="dr d25">2.5</span>
<span class="dr d26">2.6</span>
<span class="dr d27">2.7</span>
<span class="dr d28">2.8</span>
<span class="dr d29">2.9</span>
<span class="dr d30">3.0</span>
</div>
<br>-o-min-device-pixel-ratio
<div class="o-device-pixel-ratio">
<span class="dr d10">1.0</span>
<span class="dr d11">1.1</span>
<span class="dr d12">1.2</span>
<span class="dr d13">1.3</span>
<span class="dr d14">1.4</span>
<span class="dr d15">1.5</span>
<span class="dr d16">1.6</span>
<span class="dr d17">1.7</span>
<span class="dr d18">1.8</span>
<span class="dr d19">1.9</span>
<span class="dr d20">2.0</span>
<span class="dr d21">2.1</span>
<span class="dr d22">2.2</span>
<span class="dr d23">2.3</span>
<span class="dr d24">2.4</span>
<span class="dr d25">2.5</span>
<span class="dr d26">2.6</span>
<span class="dr d27">2.7</span>
<span class="dr d28">2.8</span>
<span class="dr d29">2.9</span>
<span class="dr d30">3.0</span>
</div>
<br>(no-prefix)min-device-pixel-ratio
<div class="device-pixel-ratio">
<span class="dr d10">1.0</span>
<span class="dr d11">1.1</span>
<span class="dr d12">1.2</span>
<span class="dr d13">1.3</span>
<span class="dr d14">1.4</span>
<span class="dr d15">1.5</span>
<span class="dr d16">1.6</span>
<span class="dr d17">1.7</span>
<span class="dr d18">1.8</span>
<span class="dr d19">1.9</span>
<span class="dr d20">2.0</span>
<span class="dr d21">2.1</span>
<span class="dr d22">2.2</span>
<span class="dr d23">2.3</span>
<span class="dr d24">2.4</span>
<span class="dr d25">2.5</span>
<span class="dr d26">2.6</span>
<span class="dr d27">2.7</span>
<span class="dr d28">2.8</span>
<span class="dr d29">2.9</span>
<span class="dr d30">3.0</span>
</div>
<br>min-resolution dpi
<div class="min-resolution">
<span class="dr d96">96</span>
<span class="dr d105">105</span>
<span class="dr d115">115</span>
<span class="dr d125">125</span>
<span class="dr d135">135</span>
<span class="dr d144">144</span>
<span class="dr d154">154</span>
<span class="dr d163">163</span>
<span class="dr d173">173</span>
<span class="dr d182">182</span>
<span class="dr d192">192</span>
<span class="dr d202">202</span>
<span class="dr d211">211</span>
<span class="dr d221">221</span>
<span class="dr d230">230</span>
<span class="dr d240">240</span>
<span class="dr d250">250</span>
<span class="dr d259">259</span>
<span class="dr d267">267</span>
<span class="dr d278">278</span>
<span class="dr d288">288</span>
</div>
<br>min-resolution ddpx
<div class="min-resolution-dppx">
<span class="dr d10">1.0</span>
<span class="dr d11">1.1</span>
<span class="dr d12">1.2</span>
<span class="dr d13">1.3</span>
<span class="dr d14">1.4</span>
<span class="dr d15">1.5</span>
<span class="dr d16">1.6</span>
<span class="dr d17">1.7</span>
<span class="dr d18">1.8</span>
<span class="dr d19">1.9</span>
<span class="dr d20">2.0</span>
<span class="dr d21">2.1</span>
<span class="dr d22">2.2</span>
<span class="dr d23">2.3</span>
<span class="dr d24">2.4</span>
<span class="dr d25">2.5</span>
<span class="dr d26">2.6</span>
<span class="dr d27">2.7</span>
<span class="dr d28">2.8</span>
<span class="dr d29">2.9</span>
<span class="dr d30">3.0</span>
</div>
</div>
</div>
<!--<table>
<tr>
<th>Property</th>
<th>Width</th>
@ -44,18 +208,7 @@
<td id='body-scroll-width'></td>
<td id='body-scroll-height'></td>
</tr>
</table>
<script>
document.getElementById('screen-width').textContent = screen.width;
document.getElementById('screen-height').textContent = screen.height;
document.getElementById('screen-avail-width').textContent = screen.availWidth;
document.getElementById('screen-avail-height').textContent = screen.availHeight;
document.getElementById('body-client-width').textContent = document.body.clientWidth;
document.getElementById('body-client-height').textContent = document.body.clientHeight;
document.getElementById('body-offset-width').textContent = document.body.offsetWidth;
document.getElementById('body-offset-height').textContent = document.body.offsetHeight;
document.getElementById('body-scroll-width').textContent = document.body.scrollWidth;
document.getElementById('body-scroll-height').textContent = document.body.scrollHeight;
</script>
</table>-->
<script src="/js/app.js"></script>
</body>
</html>

12
src/js/app.js Normal file
View File

@ -0,0 +1,12 @@
var Ridge = require('ridge');
var app = new Ridge({
//collections: require('./collections'),
//models: require('./models'),
views: require('./views')
});
$(function() {
app.prevnext = new app.views.FingerMe({ el: app.$('.finger-me') });
Backbone.history.start({ silent: true, pushState: true, hashChange: false });
})

35
src/js/views/finger-me.js Normal file
View File

@ -0,0 +1,35 @@
module.exports = {
events:
{
},
initialize: function()
{
this.screenInfoJSON = _.omit(window.screen)
this.screenInfoJSON.orientation = _.omit(window.screen.orientation)
this.bodyInfoJSON = _.pick(document.body, 'clientWidth', 'clientHeight', 'offsetWidth', 'offsetHeight', 'scrollWidth', 'scrollHeight')
this.deviceInfoJSON = window.devicePixelRatio
$('.screenInfo').html(this.mkCodeBlock(this.screenInfoJSON))
$('.bodyInfo').html(this.mkCodeBlock(this.bodyInfoJSON))
// document.getElementById('screen-width').textContent = screen.width;
// document.getElementById('screen-height').textContent = screen.height;
// document.getElementById('screen-avail-width').textContent = screen.availWidth;
// document.getElementById('screen-avail-height').textContent = screen.availHeight;
// document.getElementById('body-client-width').textContent = document.body.clientWidth;
// document.getElementById('body-client-height').textContent = document.body.clientHeight;
// document.getElementById('body-offset-width').textContent = document.body.offsetWidth;
// document.getElementById('body-offset-height').textContent = document.body.offsetHeight;
// document.getElementById('body-scroll-width').textContent = document.body.scrollWidth;
// document.getElementById('body-scroll-height').textContent = document.body.scrollHeight;
},
render: function(){},
mkCodeBlock: function(jsonData)
{
var el = document.createElement('pre');
el.innerText = JSON.stringify(jsonData, null, 2)
return el;
}
}

4
src/js/views/index.js Normal file
View File

@ -0,0 +1,4 @@
module.exports = {
Page: require('ridge/views/page'),
FingerMe: require('./finger-me')
}

150
src/sass/main.scss Normal file
View File

@ -0,0 +1,150 @@
.dr {display:none;}
.wk-device-pixel-ratio
{
@media all and(-webkit-min-device-pixel-ratio: 1.0) {.d10 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.1) {.d11 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.2) {.d12 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.3) {.d13 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.4) {.d14 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.5) {.d15 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.6) {.d16 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.7) {.d17 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.8) {.d18 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 1.9) {.d19 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.0) {.d20 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.1) {.d21 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.2) {.d22 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.3) {.d23 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.4) {.d24 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.5) {.d25 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.6) {.d26 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.7) {.d27 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.8) {.d28 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 2.9) {.d29 {display:inline;}}
@media all and(-webkit-min-device-pixel-ratio: 3.0) {.d30 {display:inline;}}
}
.moz-device-pixel-ratio
{
@media all and(-moz-min-device-pixel-ratio: 1.0) {.d10 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.1) {.d11 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.2) {.d12 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.3) {.d13 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.4) {.d14 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.5) {.d15 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.6) {.d16 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.7) {.d17 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.8) {.d18 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 1.9) {.d19 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.0) {.d20 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.1) {.d21 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.2) {.d22 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.3) {.d23 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.4) {.d24 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.5) {.d25 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.6) {.d26 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.7) {.d27 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.8) {.d28 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 2.9) {.d29 {display:inline;}}
@media all and(-moz-min-device-pixel-ratio: 3.0) {.d30 {display:inline;}}
}
.o-device-pixel-ratio
{
@media all and(-o-min-device-pixel-ratio: 1.0) {.d10 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.1) {.d11 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.2) {.d12 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.3) {.d13 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.4) {.d14 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.5) {.d15 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.6) {.d16 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.7) {.d17 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.8) {.d18 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 1.9) {.d19 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.0) {.d20 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.1) {.d21 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.2) {.d22 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.3) {.d23 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.4) {.d24 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.5) {.d25 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.6) {.d26 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.7) {.d27 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.8) {.d28 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 2.9) {.d29 {display:inline;}}
@media all and(-o-min-device-pixel-ratio: 3.0) {.d30 {display:inline;}}
}
.device-pixel-ratio
{
@media all and(min-device-pixel-ratio: 1.0) {.d10 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.1) {.d11 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.2) {.d12 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.3) {.d13 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.4) {.d14 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.5) {.d15 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.6) {.d16 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.7) {.d17 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.8) {.d18 {display:inline;}}
@media all and(min-device-pixel-ratio: 1.9) {.d19 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.0) {.d20 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.1) {.d21 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.2) {.d22 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.3) {.d23 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.4) {.d24 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.5) {.d25 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.6) {.d26 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.7) {.d27 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.8) {.d28 {display:inline;}}
@media all and(min-device-pixel-ratio: 2.9) {.d29 {display:inline;}}
@media all and(min-device-pixel-ratio: 3.0) {.d30 {display:inline;}}
}
.min-resolution
{
@media all and(min-resolution: 96dpi) {.d96 {display:inline;}}
@media all and(min-resolution: 105dpi) {.d105 {display:inline;}}
@media all and(min-resolution: 115dpi) {.d115 {display:inline;}}
@media all and(min-resolution: 125dpi) {.d125 {display:inline;}}
@media all and(min-resolution: 135dpi) {.d135 {display:inline;}}
@media all and(min-resolution: 144dpi) {.d144 {display:inline;}}
@media all and(min-resolution: 154dpi) {.d154 {display:inline;}}
@media all and(min-resolution: 163dpi) {.d163 {display:inline;}}
@media all and(min-resolution: 173dpi) {.d173 {display:inline;}}
@media all and(min-resolution: 182dpi) {.d182 {display:inline;}}
@media all and(min-resolution: 192dpi) {.d192 {display:inline;}}
@media all and(min-resolution: 202dpi) {.d202 {display:inline;}}
@media all and(min-resolution: 211dpi) {.d211 {display:inline;}}
@media all and(min-resolution: 221dpi) {.d221 {display:inline;}}
@media all and(min-resolution: 230dpi) {.d230 {display:inline;}}
@media all and(min-resolution: 240dpi) {.d240 {display:inline;}}
@media all and(min-resolution: 250dpi) {.d250 {display:inline;}}
@media all and(min-resolution: 259dpi) {.d259 {display:inline;}}
@media all and(min-resolution: 267dpi) {.d267 {display:inline;}}
@media all and(min-resolution: 278dpi) {.d278 {display:inline;}}
@media all and(min-resolution: 288dpi) {.d288 {display:inline;}}
}
.min-resolution-dppx
{
@media all and(min-resolution: 1.0dppx) {.d10 {display:inline;}}
@media all and(min-resolution: 1.1dppx) {.d11 {display:inline;}}
@media all and(min-resolution: 1.2dppx) {.d12 {display:inline;}}
@media all and(min-resolution: 1.3dppx) {.d13 {display:inline;}}
@media all and(min-resolution: 1.4dppx) {.d14 {display:inline;}}
@media all and(min-resolution: 1.5dppx) {.d15 {display:inline;}}
@media all and(min-resolution: 1.6dppx) {.d16 {display:inline;}}
@media all and(min-resolution: 1.7dppx) {.d17 {display:inline;}}
@media all and(min-resolution: 1.8dppx) {.d18 {display:inline;}}
@media all and(min-resolution: 1.9dppx) {.d19 {display:inline;}}
@media all and(min-resolution: 2.0dppx) {.d20 {display:inline;}}
@media all and(min-resolution: 2.1dppx) {.d21 {display:inline;}}
@media all and(min-resolution: 2.2dppx) {.d22 {display:inline;}}
@media all and(min-resolution: 2.3dppx) {.d23 {display:inline;}}
@media all and(min-resolution: 2.4dppx) {.d24 {display:inline;}}
@media all and(min-resolution: 2.5dppx) {.d25 {display:inline;}}
@media all and(min-resolution: 2.6dppx) {.d26 {display:inline;}}
@media all and(min-resolution: 2.7dppx) {.d27 {display:inline;}}
@media all and(min-resolution: 2.8dppx) {.d28 {display:inline;}}
@media all and(min-resolution: 2.9dppx) {.d29 {display:inline;}}
@media all and(min-resolution: 3.0dppx) {.d30 {display:inline;}}
}