townsquare/css/main.scss

475 lines
12 KiB
SCSS

/*! HTML5 Boilerplate v7.3.0 | MIT License | https://html5boilerplate.com/ */
/* main.css 2.0.0 | MIT License | https://github.com/h5bp/main.css#readme */
/*
* What follows is the result of much research on cross-browser styling.
* Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
* Kroc Camen, and the H5BP dev community and team.
*/
/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
@font-face {font-family: "Papyrus";
src: url("../fonts/papyrus.eot"); /* IE9*/
src: url("../fonts/papyrus.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
url("../fonts/papyrus.woff2") format("woff2"), /* chrome firefox */
url("../fonts/papyrus.woff") format("woff"), /* chrome firefox */
url("../fonts/papyrus.ttf") format("truetype"), /* chrome firefox opera Safari, Android, iOS 4.2+*/
url("../fonts/papyrus.svg#PapyrusW01") format("svg"); /* iOS 4.1- */
}
html, body {
font-size: 1.2em;
line-height: 1.4;
background: url('../img/background.jpg') center center;
background-size: cover;
color: white;
height: 100%;
font-family: 'Roboto Condensed', sans-serif;
-webkit-font-smoothing: subpixel-antialiased;
}
/*
* Remove text-shadow in selection highlight:
* https://twitter.com/miketaylr/status/12228805301
*
* Vendor-prefixed and regular ::selection selectors cannot be combined:
* https://stackoverflow.com/a/16982510/7133471
*
* Customize the background color to match your design.
*/
::-moz-selection {
background: #b3d4fc;
text-shadow: none;
}
::selection {
background: #b3d4fc;
text-shadow: none;
}
/*
* A better looking default horizontal rule
*/
hr {
display: block;
height: 1px;
border: 0;
border-top: 1px solid #ccc;
margin: 1em 0;
padding: 0;
}
/*
* Remove the gap between audio, canvas, iframes,
* images, videos and the bottom of their containers:
* https://github.com/h5bp/html5-boilerplate/issues/440
*/
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
/*
* Remove default fieldset styles.
*/
fieldset {
border: 0;
margin: 0;
padding: 0;
}
/*
* Allow only vertical resizing of textareas.
*/
textarea {
resize: vertical;
}
/* ==========================================================================
Browser Upgrade Prompt
========================================================================== */
.browserupgrade {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
/* ==========================================================================
Author's custom styles
========================================================================== */
$token: 150px;
.square {
width: 100%;
height: 100%;
position: relative;
border-radius: 50%;
box-sizing: border-box;
padding: 20px;
// player circle
.circle {
background: url('../img/demon-head2.png') center center no-repeat;
background-size: 10%;
}
&.public .circle {
background-image: url('../img/demon-head.png');
}
// Player token
.player {
margin-bottom: 10px;
.shroud {
content: " ";
background: url('../img/shroud.png') center -10px no-repeat;
background-size: auto 100%;
position: absolute;
margin-left: -2/6 * $token;
width: 2/3 * $token;
height: 2/3 * $token;
left: 50%;
top: 0;
cursor: pointer;
opacity: 0;
transition: opacity 200ms;
z-index: 2;
&:hover { opacity: 1; }
}
&.dead .shroud { opacity: 1; }
&.dead .name { color: #999; }
}
&.public .player.dead {
.shroud { display: none; }
&:after {
background: url('../img/vote.png') center center no-repeat;
background-size: 40%;
height: $token + 3px;
}
&.traveller:after { filter: grayscale(100%); }
&.no-vote:after { display: none; }
}
// Role token
.token {
border-radius: 50%;
height: $token + 3px;
width: $token + 3px;
background: url('../img/token.png') center center;
background-size: 100%;
text-align: center;
position: relative;
color: black;
margin: auto;
font-weight: 600;
text-shadow:
-1px -1px 0 #fff,
1px -1px 0 #fff,
-1px 1px 0 #fff,
1px 1px 0 #fff,
0 0 5px rgba(0,0,0,0.75);
padding-top: $token * 0.7;
box-sizing: border-box;
font-family: 'Papyrus', serif;
border: 3px solid black;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
cursor: pointer;
&:before {
content: " ";
background-size: 100%;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
span {
position: absolute;
width: 100%;
height: 100%;
background-size: 100%;
left: 0;
top: 0;
pointer-events: none;
&.leaf-left { background-image: url('../img/leaf-left.png'); }
&.leaf-orange { background-image: url('../img/leaf-orange.png'); }
&.leaf-right { background-image: url('../img/leaf-right.png'); }
&.leaf-top1 { background-image: url('../img/leaf-top1.png'); }
&.leaf-top2 { background-image: url('../img/leaf-top2.png'); }
&.leaf-top3 { background-image: url('../img/leaf-top3.png'); }
&.leaf-top4 { background-image: url('../img/leaf-top4.png'); }
&.leaf-top5 { background-image: url('../img/leaf-top5.png'); }
}
}
&.public .token {
background-image: url('../img/life.png');
&:before, &:after, span { display: none; }
}
&.public .player.dead .token {
background-image: url('../img/death.png');
}
&.public .player.traveller .token {
filter: grayscale(100%);
}
// Player name
.name {
font-size: 120%;
line-height: 120%;
text-shadow:
-2px -2px 0 #000,
2px -2px 0 #000,
-2px 2px 0 #000,
2px 2px 0 #000,
0 0 10px rgba(0,0,0,0.75);
}
// Reminder token
.reminder {
background: url('../img/reminder.png') center center;
background-size: 100%;
width: $token / 2;
height: $token / 2;
color: black;
font-size: 50%;
font-weight: bold;
display: block;
margin: 5px ($token / -4) 0;
text-align: center;
position: relative;
box-sizing: border-box;
padding-top: $token * 0.3;
border-radius: 50%;
border: 3px solid black;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
transition: opacity 200ms;
cursor: pointer;
&:before, &:after {
content: " ";
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-size: 100%;
background-position: center 0;
background-repeat: no-repeat;
background-image: url('../img/icon-plus.png');
transition: opacity 200ms;
}
&:after {
background-image: url('../img/icon-x.png');
opacity: 0;
}
&.add {
opacity: 0;
&:after { display: none; }
}
&:hover:before { opacity: 0; }
&:hover:after { opacity: 1; }
}
.circle li:hover .reminder.add, { opacity: 1; }
.circle li:hover .reminder.add:before { opacity: 1; }
&.public .reminder { display: none; }
// Controls
.controls {
position: absolute;
right: 0;
top: 0;
}
}
/* ==========================================================================
Helper classes
========================================================================== */
/*
* Hide visually and from screen readers
*/
.hidden {
display: none !important;
}
/*
* Hide only visually, but have it available for screen readers:
* https://snook.ca/archives/html_and_css/hiding-content-for-accessibility
*
* 1. For long content, line feeds are not interpreted as spaces and small width
* causes content to wrap 1 word per line:
* https://medium.com/@jessebeach/beware-smushed-off-screen-accessible-text-5952a4c2cbfe
*/
.sr-only {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
white-space: nowrap;
width: 1px;
/* 1 */
}
/*
* Extends the .sr-only class to allow the element
* to be focusable when navigated to via the keyboard:
* https://www.drupal.org/node/897638
*/
.sr-only.focusable:active,
.sr-only.focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
white-space: inherit;
width: auto;
}
/*
* Hide visually and from screen readers, but maintain layout
*/
.invisible {
visibility: hidden;
}
/*
* Clearfix: contain floats
*
* For modern browsers
* 1. The space content is one way to avoid an Opera bug when the
* `contenteditable` attribute is included anywhere else in the document.
* Otherwise it causes space to appear at the top and bottom of elements
* that receive the `clearfix` class.
* 2. The use of `table` rather than `block` is only necessary if using
* `:before` to contain the top-margins of child elements.
*/
.clearfix:before,
.clearfix:after {
content: " ";
/* 1 */
display: table;
/* 2 */
}
.clearfix:after {
clear: both;
}
/* ==========================================================================
EXAMPLE Media Queries for Responsive Design.
These examples override the primary ('mobile first') styles.
Modify as content requires.
========================================================================== */
@media only screen and (min-width: 35em) {
/* Style adjustments for viewports that meet the condition */
}
@media print,
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 1.25dppx),
(min-resolution: 120dpi) {
/* Style adjustments for high resolution devices */
}
/* ==========================================================================
Print styles.
Inlined to avoid the additional HTTP request:
https://www.phpied.com/delay-loading-your-print-css/
========================================================================== */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important;
/* Black prints faster */
box-shadow: none !important;
text-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
/*
* Don't show links that are fragment identifiers,
* or use the `javascript:` pseudo protocol
*/
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre {
white-space: pre-wrap !important;
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
/*
* Printing Tables:
* https://web.archive.org/web/20180815150934/http://css-discuss.incutio.com/wiki/Printing_Tables
*/
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
}