/* A common approach is to use googleapis.com to generate css for the webfonts you want to use. The downside of this approach is that you have to be online. So below I have simply saved the output of the googleapis url into a file. Then you of course also have to make sure the webfonts are locally installed to make offline usage work. For Ubuntu (or Debian) I successfully used the script from here to do that: http://www.webupd8.org/2011/01/automatically-install-all-google-web.html */ /* @import url(http://fonts.googleapis.com/css?family=Open+Sans:regular,semibold,italic,italicsemibold|PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic|Cutive+Mono); */ @import url(fonts.css); /* We display a fallback message for users with browsers that don't support all the features required by it. All of the content will be still fully accessible for them, but some more advanced effects would be missing. When impress.js detects that browser supports all necessary CSS3 features, the fallback-message style is hidden. */ .fallback-message { font-family: sans-serif; line-height: 1.3; width: 780px; padding: 10px 10px 0; margin: 20px auto; border: 1px solid #E4C652; border-radius: 10px; background: #EEDC94; } .fallback-message p { margin-bottom: 10px; } .impress-supported .fallback-message { display: none; } /* The body background is the bacgkround of "everything". Many impress.js tools call it the "surface". It could also be a picture or pattern, but we leave it as light gray. */ body { font-family: 'PT Sans', sans-serif; min-height: 740px; background: rgb(215, 215, 215); color: rgb(102, 102, 102); } /* Now let's style the presentation steps. */ .step { position: relative; width: 900px; padding: 40px; margin: 20px auto; box-sizing: border-box; font-family: 'PT Serif', georgia, serif; font-size: 48px; line-height: 1.5; } /* Make inactive steps a little bit transparent. */ .impress-enabled .step { margin: 0; opacity: 0.3; transition: opacity 1s; } .impress-enabled .step.active { opacity: 1 } /* Speaker notes allow you to write comments within the steps, that will not be displayed as part of the presentation. However, they will be picked up and displayed by impressConsole.js when integrated. */ .notes { display: none; } /* These 'slide' step styles were heavily inspired by HTML5 Slides: http://html5slides.googlecode.com/svn/trunk/styles.css Note that we also use a background image, again just to facilitate a common feature from PowerPoint and LibreOffice worlds. In this case the background image is just the impress.js favicon - as if it were a company logo or something. */ .slide { display: block; width: 900px; height: 700px; padding: 40px 60px; background-image: url(../images/background.png); background-color: white; border: 1px solid rgba(0, 0, 0, .3); border-radius: 10px; box-shadow: 0 2px 6px rgba(0, 0, 0, .1); text-shadow: 0 2px 2px rgba(0, 0, 0, .1); font-family: 'Open Sans', Arial, sans-serif; font-size: 30px; letter-spacing: -1px; } .slide h1, .slide h2, .slide h3 { margin-bottom: 0.5em; margin-top: 0.5em; text-align: center; } .slide p { text-align: center; margin: 0.7em; } .slide li { margin: 0.2em; } /* Highlight.js used for coloring pre > code blocks. */ .slide pre > code { font-size: 14px; text-shadow: 0 0 0 rgba(0, 0, 0, 0); } /* Inline code, no Highlight.js */ code { font-family: "Cutive mono","Courier New", monospace; } a { color: inherit; text-decoration: none; padding: 0 0.1em; background: rgba(200,200,200,0.2); text-shadow: -1px 1px 2px rgba(100,100,100,0.9); border-radius: 0.2em; border-bottom: 1px solid rgba(100,100,100,0.2); border-left: 1px solid rgba(100,100,100,0.2); transition: 0.5s; } a:hover, a:focus { background: rgba(200,200,200,1); text-shadow: -1px 1px 2px rgba(100,100,100,0.5); } blockquote { font-family: 'PT Serif'; font-style: italic; font-weight: 400; } em { text-shadow: 0 2px 2px rgba(0, 0, 0, .3); } strong { text-shadow: -1px 1px 2px rgba(100,100,100,0.5); } q { font-family: 'PT Serif'; font-style: italic; font-weight: 400; text-shadow: 0 2px 2px rgba(0, 0, 0, .3); } strike { opacity: 0.7; } small { font-size: 0.4em; } img { width: 300px } .slide .right { float: right; margin-left: 40px; margin-right: 0px; margin-top: 20px; margin-bottom: 20px; } .slide .left { float: left; margin-right: 40px; margin-left: 0px; margin-top: 20px; margin-bottom: 20px; } .slide .top { position: absolute; top: 20px; margin-bottom: 20px; margin-top: 0px; } .slide .bottom { position: absolute; bottom: 20px; margin-bottom: 0px; margin-top: 20px; } /* Specific styles for: .title slides */ .title { background-image: url(../images/background-title.png); } .title h1, .title h2, .title h3 { position: absolute; left: 45px; /* slide width is 900px, so this is like a 5% margin on both sides */ width: 90%; text-align: center; } .title h1 { top: 50px; } .title h2 { top: 400px; } .title h3 { top: 500px; } /* Styles for animating the contents of a slide, such as a img, p, li or span element. ********/ /* fly-in class starts from a position outside the slide, then flies into it's correct position. */ .future .fly-in { transform: translateY(-700px); opacity: 0.0; /* Make it invisible, just so it doesn't clutter some other slide that might be in the position where we moved it */ } .present .fly-in { transform: translateY(0px); opacity: 1.0; transition: 2s; } .past .fly-out { transform: translateY(700px); opacity: 0.0; transition: 2s; } /* Fade-in/out is a straightforward fade. Give it enough seconds that all browsers render it clearly. */ .future .fade-in { opacity: 0.0; } .present .fade-in { opacity: 1.0; transition: 3s; } .past .fade-out { opacity: 0.0; transition: 3s; } /* Zoom-in. */ .future .zoom-in { transform: scale(10); opacity: 0.0; } .present .zoom-in { transform: scale(1); opacity: 1.0; transition: 3s; } .past .zoom-out { transform: scale(10); opacity: 0.0; } /* This version of impress.js supports plugins, and in particular, a UI toolbar plugin that allows easy navigation between steps and autoplay. */ .impress-enabled div#impress-toolbar { position: fixed; right: 1px; bottom: 1px; opacity: 0.6; z-index: 10; } .impress-enabled div#impress-toolbar > span { margin-right: 10px; } /* With help from the mouse-timeout plugin, we can hide the toolbar and have it show only when you move/click/touch the mouse. */ body.impress-mouse-timeout div#impress-toolbar { display: none; } /* In fact, we can hide the mouse cursor itself too, when mouse isn't used. */ body.impress-mouse-timeout { cursor: none; } /* Progress bar */ .impress-progressbar { position: absolute; right: 118px; bottom: 1px; left: 118px; border-radius: 7px; border: 2px solid rgba(100, 100, 100, 0.2); } .impress-progressbar DIV { width: 0; height: 2px; border-radius: 5px; background: rgba(75, 75, 75, 0.4); transition: width 1s linear; } .impress-progress { position: absolute; left: 59px; bottom: 1px; text-align: left; font-size: 10pt; opacity: 0.6; } /* Help popup plugin */ .impress-enabled #impress-help { background: none repeat scroll 0 0 rgba(0, 0, 0, 0.5); color: #EEEEEE; font-size: 80%; position: fixed; left: 2em; bottom: 2em; width: 24em; border-radius: 1em; padding: 1em; text-align: center; z-index: 100; font-family: Verdana, Arial, Sans; } .impress-enabled #impress-help td { padding-left: 1em; padding-right: 1em; } /* Substep plugin */ #impress .step .substep { opacity: 0; } #impress .step .substep.substep-visible { opacity: 1; transition: opacity 1s; } /* Styles for specific slides. */ /* The bar graph for Acme Inc profits */ #acme-graph-bottom { position: absolute; bottom: 100px; left: 440px; background-color: black; width: 410px; height: 2px; } /* height: is set from javascript */ #acme-graph-q1, #acme-graph-q2, #acme-graph-q3, #acme-graph-q4 { border: solid 1px black; width: 70px; margin-left: 10px; position: absolute; bottom: 100px; } #acme-graph-q1 { background-color: red; left: 450px; } #acme-graph-q2 { background-color: blue; left: 550px; } #acme-graph-q3 { background-color: green; left: 650px; } #acme-graph-q4 { background-color: purple; left: 750px; } /* And as the last thing there is a workaround for quite strange bug. It happens a lot in Chrome. I don't remember if I've seen it in Firefox. Sometimes the element positioned in 3D (especially when it's moved back along Z axis) is not clickable, because it falls 'behind' the element. To prevent this, I decided to make non clickable by setting pointer-events property to `none` value. Value if this property is inherited, so to make everything else clickable I bring it back on the #impress element. If you want to know more about `pointer-events` here are some docs: https://developer.mozilla.org/en/CSS/pointer-events There is one very important thing to notice about this workaround - it makes everything 'unclickable' except what's in #impress element. So use it wisely ... or don't use at all. */ .impress-enabled { pointer-events: none } .impress-enabled #impress { pointer-events: auto } .impress-enabled #impress-toolbar { pointer-events: auto } .impress-enabled #impress-console-button { pointer-events: auto }