/*! 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; } }