blob: de42a11e8c738d274eb929e2ec18c1c98c6ee9da [file] [log] [blame]
@import "base";
@import "compass/css3/columns";
@import "compass/css3/user-interface";
$social-tags: '#io12';
$brand-small-icon-size: 30px;
$gray-1: #e6e6e6;
$gray-2: #a9a9a9;
$gray-3: #797979;
$gray-4: #515151;
$brand-blue: rgb(67, 135, 253);
$brand-blue-secondary: #3c8ef3;
$brand-blue-secondary2: #2a7cdf;
$brand-red: rgb(244, 74, 63);
$brand-red-secondary: #e0543e;
$brand-red-secondary2: #d94d3a;
$brand-yellow: rgb(255, 209, 77);
$brand-yellow-secondary: #f9cc46;
$brand-yellow-secondary2: #f6c000;
$brand-green: rgb(13, 168, 97);
$brand-green-secondary: #00a86d;
$brand-green-secondary2: #009f5d;
$slide-width: 900px;
$slide-height: 700px;
$slide-width-widescreen: 1100px;
$slide-top-bottom-padding: 40px;
$slide-left-right-padding: 60px;
$slide-border-radius: 5px;
$slide-tap-area-width: 100px;
$article-content-top-padding: 45px;
@mixin highlight-color($color: $brand-yellow) {
-webkit-tap-highlight-color: $color;
-moz-tap-highlight-color: $color;
-ms-tap-highlight-color: $color;
-o-tap-highlight-color: $color;
tap-highlight-color: $color;
}
@mixin backdrop {
@include background(linear-gradient(white, white 85%, $gray-1));
background-color: white;
}
/**
* Theme Styles
*/
::selection {
color: white;
background-color: $brand-yellow;
@include text-shadow(none);
}
::-webkit-scrollbar {
height: 16px;
overflow: visible;
width: 16px;
}
::-webkit-scrollbar-thumb {
background-color: rgba(0, 0, 0, .1);
background-clip: padding-box;
border: solid transparent;
min-height: 28px;
padding: 100px 0 0;
@include box-shadow(inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07));
border-width: 1px 1px 1px 6px;
}
::-webkit-scrollbar-thumb:hover {
background-color: rgba(0, 0, 0, 0.5);
}
::-webkit-scrollbar-button {
height: 0;
width: 0;
}
::-webkit-scrollbar-track {
background-clip: padding-box;
border: solid transparent;
border-width: 0 0 0 4px;
}
::-webkit-scrollbar-corner {
background: transparent;
}
body {
background: black;
}
slides > slide {
display: none;
font-family: 'Open Sans', Arial, sans-serif;
font-size: 26px;
color: $gray-3;
//@include background(linear-gradient(white, white 85%, $gray-1));
//background-color: white;
width: $slide-width;
height: $slide-height;
margin-left: -$slide-width / 2;
margin-top: -$slide-height / 2;
padding: $slide-top-bottom-padding $slide-left-right-padding;
@include border-radius($slide-border-radius);
//@include box-shadow(5px 5px 20px $gray-4);
@include transition(all 0.6s ease-in-out);
//$translateX: 1020px;
//$rotateY: 30deg;
//$rotateX: 45deg;
&.far-past {
//display: block;
display: none;
//@include transform(translate(-$translateX * 2));
//@include transform(translate3d(-$translateX * 2, 0, 0));
}
&.past {
display: block;
//@include transform(translate(-$translateX) rotateY($rotateY) rotateX($rotateX));
//@include transform(translate3d(-$translateX, 0, 0) rotateY($rotateY) rotateX($rotateX));
opacity: 0;
}
&.current {
display: block;
//@include transform(translate(0));
//@include transform(translate3d(0, 0, 0));
opacity: 1;
.auto-fadein {
opacity: 1;
}
.gdbar {
@include background-size(100% 100%);
}
}
&.next {
display: block;
//@include transform(translate($translateX) rotateY(-$rotateY) rotateX($rotateX));
//@include transform(translate3d($translateX, 0, 0) rotateY(-$rotateY) rotateX($rotateX));
opacity: 0;
pointer-events: none;
}
&.far-next {
//display: block;
display: none;
//@include transform(translate($translateX * 2));
//@include transform(translate3d($translateX * 2, 0, 0));
}
&.dark {
background: $gray-4 !important;
}
&:not(.nobackground) {
//background: white url(../../images/google_developers_icon_128.png) ($brand-small-icon-size * 2) 98% no-repeat;
//@include background-size($brand-small-icon-size $brand-small-icon-size);
&:before {
font-size: 12pt;
content: $social-tags;
position: absolute;
bottom: $slide-top-bottom-padding / 2;
left: $slide-left-right-padding;
background: url(../../images/google_developers_icon_128.png) no-repeat 0 50%;
@include background-size($brand-small-icon-size $brand-small-icon-size);
padding-left: $brand-small-icon-size + 10;
height: $brand-small-icon-size;
line-height: 1.9;
}
&:after {
font-size: 12pt;
content: attr(data-slide-num) '/' attr(data-total-slides);
position: absolute;
bottom: $slide-top-bottom-padding / 2;
right: $slide-left-right-padding;
line-height: 1.9;
}
}
&.title-slide {
&:after {
content: '';
background: url(../../images/io2012_logo.png) no-repeat 100% 50%;
@include background-size(contain);
position: absolute;
bottom: $slide-top-bottom-padding;
right: $slide-top-bottom-padding;
width: 100%;
height: 60px;
}
}
&.backdrop {
z-index: -10;
display: block !important;
@include backdrop;
&:after, &:before {
display: none; // Prevent double set of slide nums and footer icons.
}
}
> hgroup + article {
margin-top: $article-content-top-padding;
&.flexbox {
&.vcenter, &.vleft, &.vright {
height: 80%;
}
}
p {
margin-bottom: 1em;
}
}
> article:only-child {
height: 100%;
> iframe {
height: 98%;
}
}
}
slides.layout-faux-widescreen > slide {
padding: $slide-top-bottom-padding 160px;
}
slides.layout-widescreen,
slides.layout-faux-widescreen {
$translateX: 1130px;
> slide {
margin-left: -$slide-width-widescreen / 2;
width: $slide-width-widescreen;
}
> slide.far-past {
display: block;
display: none;
@include transform(translate(-$translateX * 2));
@include transform(translate3d(-$translateX * 2, 0, 0));
}
> slide.past {
display: block;
//@include transform(translate(-$translateX));
//@include transform(translate3d(-$translateX, 0, 0));
opacity: 0;
}
> slide.current {
display: block;
//@include transform(translate(0));
//@include transform(translate3d(0, 0, 0));
opacity: 1;
}
> slide.next {
display: block;
//@include transform(translate($translateX));
//@include transform(translate3d($translateX, 0, 0));
opacity: 0;
pointer-events: none;
}
> slide.far-next {
display: block;
display: none;
@include transform(translate($translateX * 2));
@include transform(translate3d($translateX * 2, 0, 0));
}
#prev-slide-area {
margin-left: -$slide-width-widescreen / 2 - $slide-tap-area-width;
}
#next-slide-area {
margin-left: $slide-width-widescreen / 2;
}
}
b {
font-weight: 600;
}
a {
color: $brand-blue-secondary2;
text-decoration: none;
border-bottom: 1px solid rgba(42, 124, 223, 0.5);
&:hover {
color: black !important;
}
}
h1, h2, h3 {
font-weight: 600;
}
h2 {
font-size: 45px;
line-height: 45px;
letter-spacing: -2px;
color: $gray-4;
}
h3 {
font-size: 30px;
letter-spacing: -1px;
line-height: 2;
font-weight: inherit;
color: $gray-3;
}
ul {
margin-left: 1.2em;
margin-bottom: 1em;
position: relative;
li {
margin-bottom: 0.5em;
ul {
margin-left: 2em;
margin-bottom: 0;
li:before {
content: '-';
font-weight: 600;
}
}
}
> li:before {
content: '·';
margin-left: -1em;
position: absolute;
font-weight: 600;
}
ul {
margin-top: .5em;
}
}
// Code highlighting only effects the current slide.
.highlight-code slide.current {
pre > * {
opacity: 0.25;
@include transition(opacity 0.5s ease-in);
}
b {
opacity: 1;
}
}
pre {
font-family: 'Inconsolata', 'Courier New', monospace;
font-size: 20px;
line-height: 28px;
padding: 10px 0 10px $slide-left-right-padding;
letter-spacing: -1px;
margin-bottom: 20px;
width: 106%;
background-color: $gray-1;
left: -$slide-left-right-padding;
position: relative;
@include box-sizing(border-box);
/*overflow: hidden;*/
&[data-lang]:after {
content: attr(data-lang);
background-color: $gray-2;
right: 0;
top: 0;
position: absolute;
font-size: 16pt;
color: white;
padding: 2px 25px;
text-transform: uppercase;
}
}
pre[data-lang="go"] {
color: #333;
}
code {
font-size: 95%;
font-family: 'Inconsolata', 'Courier New', monospace;
color: black;
}
iframe {
width: 100%;
height: $slide-height - ($slide-top-bottom-padding * 2) - ($article-content-top-padding * 2);
background: white;
border: 1px solid $gray-1;
@include box-sizing(border-box);
}
dt {
font-weight: bold;
}
button {
display: inline-block;
@include background(linear-gradient(#F9F9F9 40%, #E3E3E3 70%));
border: 1px solid $gray-2;
@include border-radius(3px);
padding: 5px 8px;
outline: none;
white-space: nowrap;
@include user-select(none);
cursor: pointer;
@include text-shadow(1px 1px #fff);
font-size: 10pt;
}
button:not(:disabled):hover {
border-color: $gray-4;
}
button:not(:disabled):active {
@include background(linear-gradient(#E3E3E3 40%, #F9F9F9 70%));
}
:disabled {
color: $gray-2;
}
.blue {
color: $brand-blue;
}
.blue2 {
color: $brand-blue-secondary;
}
.blue3 {
color: $brand-blue-secondary2;
}
.yellow {
color: $brand-yellow;
}
.yellow2 {
color: $brand-yellow-secondary;
}
.yellow3 {
color: $brand-yellow-secondary2;
}
.green {
color: $brand-green;
}
.green2 {
color: $brand-green-secondary;
}
.green3 {
color: $brand-green-secondary2;
}
.red {
color: $brand-red;
}
.red2 {
color: $brand-red-secondary;
}
.red3 {
color: $brand-red-secondary2;
}
.gray {
color: $gray-1;
}
.gray2 {
color: $gray-2;
}
.gray3 {
color: $gray-3;
}
.gray4 {
color: $gray-4;
}
.white {
color: white !important;
}
.black {
color: black !important;
}
.columns-2 {
@include column-count(2);
}
table {
width: 100%;
border-collapse: -moz-initial;
border-collapse: initial;
border-spacing: 2px;
border-bottom: 1px solid $gray-3;
tr > td:first-child, th {
font-weight: 600;
color: $gray-4;
}
tr:nth-child(odd) {
background-color: $gray-1;
}
th {
color: white;
font-size: 18px;
@include background(linear-gradient(top, $brand-blue 40%, $brand-blue-secondary2 80%) no-repeat);
}
td, th {
font-size: 18px;
padding: 1em 0.5em;
}
td.highlight {
color: $gray-4;
@include background(linear-gradient(top, $brand-yellow 40%, $brand-yellow-secondary2 80%) no-repeat);
}
&.rows {
border-bottom: none;
border-right: 1px solid $gray-3;
}
}
q {
font-size: 45px;
line-height: 72px;
&:before {
content: '“';
position: absolute;
margin-left: -0.5em;
}
&:after {
content: '”';
position: absolute;
margin-left: 0.1em;
}
}
slide.fill {
background-repeat: no-repeat;
@include border-radius($slide-border-radius);
@include background-size(cover);
}
/* Size variants */
article.smaller {
p, ul {
font-size: 20px;
line-height: 24px;
letter-spacing: 0;
}
table {
td, th {
font-size: 14px;
}
}
pre {
font-size: 15px;
line-height: 20px;
letter-spacing: 0;
}
q {
font-size: 40px;
line-height: 48px;
&:before, &:after {
font-size: 60px;
}
}
}
/* Builds */
.build {
> * {
@include transition(opacity 0.5s ease-in-out 0.2s);
}
.to-build {
opacity: 0;
}
.build-fade {
opacity: 0.3;
&:hover {
opacity: 1.0;
}
}
}
.popup .next .build {
.to-build {
opacity: 1;
}
.build-fade {
opacity: 1;
}
}
/* Pretty print */
.prettyprint .str, /* string content */
.prettyprint .atv { /* a markup attribute value */
color: $brand-green-secondary2; //rgb(0, 138, 53);
}
.prettyprint .kwd, /* a keyword */
.prettyprint .tag { /* a markup tag name */
color: rgb(0, 102, 204);
}
.prettyprint .com { /* a comment */
color: $gray-3; //rgb(127, 127, 127);
font-style: italic;
}
.prettyprint .lit { /* a literal value */
color: rgb(127, 0, 0);
}
.prettyprint .pun, /* punctuation, lisp open bracket, lisp close bracket */
.prettyprint .opn,
.prettyprint .clo {
color: $gray-4; //rgb(127, 127, 127);
}
.prettyprint .typ, /* a type name */
.prettyprint .atn, /* a markup attribute name */
.prettyprint .dec,
.prettyprint .var { /* a declaration; a variable name */
color: $brand-red-secondary2; //rgb(127, 0, 127);
}
.prettyprint .pln {
color: $gray-4;
}
.note {
position: absolute;
z-index: 100;
width: 100%;
height: 100%;
top: 0;
left: 0;
padding: 1em;
background: rgba(0, 0, 0, 0.3);
opacity: 0;
pointer-events: none;
@include flexbox;
@include flex-center-center;
@include border-radius($slide-border-radius);
@include box-sizing(border-box);
@include transform(translateY($slide-height / 2));@include transition(all 0.4s ease-in-out);
> section {
background: #fff;
@include border-radius($slide-border-radius);
@include box-shadow(0 0 10px $gray-3);
width: 60%;
padding: 2em;
}
}
// Speaker notes only show the current slide.
.with-notes {
&.popup {
slides.layout-widescreen,
slides.layout-faux-widescreen {
slide {
&.next {
@include transform(translate3d($slide-width-widescreen / 2 + 140, 80px, 0) scale(0.35));
}
.note {
@include transform(translate3d(300px, $slide-height + 100, 0) scale(1.5));
}
}
}
slide {
overflow: visible;
background: white;
@include transition(none); // No slide transition goodies when in presenter mode.
pointer-events: none;
@include transform-origin(0, 0); // For speaker note transition.
&:not(.backdrop) {
@include transform(scale(0.6) translate3d(0.5em, 0.5em, 0));
@include box-shadow(0 0 10px $gray-3);
}
&.backdrop {
//@include background(linear-gradient($gray-1, white 30%, white 60%, $gray-1));
@include background-image(radial-gradient(50% 50%, #b1dfff 0%,
$brand-blue 600px));
}
&.next {
@include transform(translate3d($slide-width / 2 + 120, 80px, 0) scale(0.35));
opacity: 1 !important;
.note {
display: none !important; // Prevents seeing notes if we go to previous slide.
}
}
}
.note {
width: 109%;
height: $slide-height / 2 - 90;
background: $gray-1;
padding: 0;
@include box-shadow(0 0 10px $gray-3);
@include transform(translate3d(250px, $slide-height + 100, 0) scale(1.5));
@include transition(opacity 400ms ease-in-out);
> section {
background: #fff;
@include border-radius($slide-border-radius);
height: 100%;
width: 100%;
@include box-sizing(border-box);
@include box-shadow(none);
overflow: auto;
padding: 1em;
}
}
}
.note {
opacity: 1;
@include transform(translateY(0));
pointer-events: auto; // Allow people to do things like open links embedded in the speaker notes.
}
}
.source {
font-size: 14px;
color: $gray-2;
position: absolute;
bottom: $slide-top-bottom-padding + 30px;
left: $slide-left-right-padding;
}
.centered {
text-align: center;
}
.reflect {
-webkit-box-reflect: below 3px -webkit-linear-gradient(rgba(255,255,255,0) 85%, white 150%);
-moz-box-reflect: below 3px -moz-linear-gradient(rgba(255,255,255,0) 85%, white 150%);
-o-box-reflect: below 3px -o-linear-gradient(rgba(255,255,255,0) 85%, white 150%);
-ms-box-reflect: below 3px -ms-linear-gradient(rgba(255,255,255,0) 85%, white 150%);
box-reflect: below 3px linear-gradient(rgba(255,255,255,0) 85%, white 150%);
}
.flexbox {
@include flexbox;
}
.flexbox.vcenter {
@include flex-center-center;
height: 100%;
width: 100%;
}
.flexbox.vleft {
@include flex-left-center;
height: 100%;
width: 100%;
}
.flexbox.vright {
@include flex-right-center;
height: 100%;
width: 100%;
}
.auto-fadein {
@include transition(opacity 0.6s ease-in 1s);
opacity: 0;
}
/* Clickable/tappable areas */
.slide-area {
z-index: 1000;
position: absolute;
left: 0;
top: 0;
width: $slide-tap-area-width;
height: $slide-height;
left: 50%;
top: 50%;
cursor: pointer;
margin-top: -$slide-height / 2;
//@include highlight-color(rgba(51, 51, 51, 0.5));
}
#prev-slide-area {
margin-left: -$slide-width-widescreen / 2;
//@include border-radius(10px 0 0 10px);
//@include box-shadow(-5px 0 10px #222 inset);
}
#next-slide-area {
margin-left: $slide-width / 2;
//@include border-radius(0 10px 10px 0);
//@include box-shadow(5px 0 10px #222 inset);
}
/* ===== SLIDE CONTENT ===== */
.logoslide {
img {
width: 383px;
height: 92px;
}
}
.segue {
padding: $slide-left-right-padding $slide-left-right-padding * 2;
h2 {
color: $gray-1;
font-size: 60px;
}
h3 {
color: $gray-1;
line-height: 2.8;
}
hgroup {
position: absolute;
bottom: 225px;
}
}
.thank-you-slide {
background: $brand-blue !important;
color: white;
h2 {
font-size: 60px;
color: inherit;
}
article > p {
margin-top: 2em;
font-size: 20pt;
}
> p {
position: absolute;
bottom: $slide-top-bottom-padding * 2;
font-size: 24pt;
line-height: 1.3;
}
}
aside.gdbar {
height: 97px;
width: 215px;
position: absolute;
left: -1px;
top: 125px;
@include border-radius(0 10px 10px 0);
@include background(linear-gradient(left, $gray-1, $gray-1) no-repeat);
@include background-size(0% 100%);
@include transition(all 0.5s ease-out 0.5s); /* Better to transition only on background-size, but not sure how to do that with the mixin. */
&.right {
right: 0;
left: -moz-initial;
left: initial;
top: ($slide-height / 2) - 96; /* 96 is height of gray icon bar */
@include transform(rotateZ(180deg));
img {
@include transform(rotateZ(180deg));
}
}
&.bottom {
top: -moz-initial;
top: initial;
bottom: $slide-left-right-padding;
}
img {
width: 85px;
height: 85px;
position: absolute;
right: 0;
margin: 8px 15px;
}
}
.title-slide {
hgroup {
bottom: 100px;
h1 {
font-size: 65px;
line-height: 1.4;
letter-spacing: -3px;
color: $gray-4;
}
h2 {
font-size: 34px;
color: $gray-2;
font-weight: inherit;
}
p {
font-size: 20px;
color: $gray-3;
line-height: 1.3;
margin-top: 2em;
}
}
}
.quote {
color: $gray-1;
.author {
font-size: 24px;
position: absolute;
bottom: 80px;
line-height: 1.4;
}
}
[data-config-contact] {
a {
color: rgb(255, 255, 255);
border-bottom: none;
}
span {
width: 115px;
display: inline-block;
}
}
.overview {
&.popup {
.note {
display: none !important;
}
}
slides {
slide {
&.backdrop {
display: none !important;
}
display: block;
cursor: pointer;
opacity: 0.5;
pointer-events: auto !important;
@include backdrop();
&.far-past,
&.past,
&.next,
&.far-next,
&.far-past {
opacity: 0.5;
display: block;
}
&.current {
opacity: 1;
}
}
}
.slide-area {
display: none;
}
}
@media print {
slides {
slide {
display: block !important;
position: relative;
@include backdrop();
@include transform(none !important);
width: 100%;
height: 100%;
page-break-after:always;
top: auto !important;
left: auto !important;
margin-top: 0 !important;
margin-left: 0 !important;
opacity: 1 !important;
color: #555;
&.far-past,
&.past,
&.next,
&.far-next,
&.far-past,
&.current {
opacity: 1 !important;
display: block !important;
}
.build {
> * {
@include transition(none);
}
.to-build,
.build-fade {
opacity: 1;
}
}
.auto-fadein {
opacity: 1 !important;
}
&.backdrop {
display: none !important;
}
table.rows {
border-right: 0;
}
}
slide[hidden] {
display: none !important;
}
}
.slide-area {
display: none;
}
.reflect {
-webkit-box-reflect: none;
-moz-box-reflect: none;
-o-box-reflect: none;
-ms-box-reflect: none;
box-reflect: none;
}
pre, code {
font-family: monospace !important;
}
}