Talk given at Datapalooza Denver 2016 titled "(Your) Data as a Service: The Easy Way to Build an API for Your Data".
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

1412 lines
36 KiB

  1. /*!
  2. * reveal.js
  3. * http://lab.hakim.se/reveal-js
  4. * MIT licensed
  5. *
  6. * Copyright (C) 2016 Hakim El Hattab, http://hakim.se
  7. */
  8. /*********************************************
  9. * RESET STYLES
  10. *********************************************/
  11. html, body, .reveal div, .reveal span, .reveal applet, .reveal object, .reveal iframe,
  12. .reveal h1, .reveal h2, .reveal h3, .reveal h4, .reveal h5, .reveal h6, .reveal p, .reveal blockquote, .reveal pre,
  13. .reveal a, .reveal abbr, .reveal acronym, .reveal address, .reveal big, .reveal cite, .reveal code,
  14. .reveal del, .reveal dfn, .reveal em, .reveal img, .reveal ins, .reveal kbd, .reveal q, .reveal s, .reveal samp,
  15. .reveal small, .reveal strike, .reveal strong, .reveal sub, .reveal sup, .reveal tt, .reveal var,
  16. .reveal b, .reveal u, .reveal center,
  17. .reveal dl, .reveal dt, .reveal dd, .reveal ol, .reveal ul, .reveal li,
  18. .reveal fieldset, .reveal form, .reveal label, .reveal legend,
  19. .reveal table, .reveal caption, .reveal tbody, .reveal tfoot, .reveal thead, .reveal tr, .reveal th, .reveal td,
  20. .reveal article, .reveal aside, .reveal canvas, .reveal details, .reveal embed,
  21. .reveal figure, .reveal figcaption, .reveal footer, .reveal header, .reveal hgroup,
  22. .reveal menu, .reveal nav, .reveal output, .reveal ruby, .reveal section, .reveal summary,
  23. .reveal time, .reveal mark, .reveal audio, .reveal video {
  24. margin: 0;
  25. padding: 0;
  26. border: 0;
  27. font-size: 100%;
  28. font: inherit;
  29. vertical-align: baseline;
  30. }
  31. .reveal article, .reveal aside, .reveal details, .reveal figcaption, .reveal figure,
  32. .reveal footer, .reveal header, .reveal hgroup, .reveal menu, .reveal nav, .reveal section {
  33. display: block;
  34. }
  35. /*********************************************
  36. * GLOBAL STYLES
  37. *********************************************/
  38. html,
  39. body {
  40. width: 100%;
  41. height: 100%;
  42. overflow: hidden;
  43. }
  44. body {
  45. position: relative;
  46. line-height: 1;
  47. background-color: #fff;
  48. color: #000;
  49. }
  50. // Ensures that the main background color matches the
  51. // theme in fullscreen mode
  52. html:-webkit-full-screen-ancestor {
  53. background-color: inherit;
  54. }
  55. html:-moz-full-screen-ancestor {
  56. background-color: inherit;
  57. }
  58. /*********************************************
  59. * VIEW FRAGMENTS
  60. *********************************************/
  61. .reveal .slides section .fragment {
  62. opacity: 0;
  63. visibility: hidden;
  64. transition: all .2s ease;
  65. &.visible {
  66. opacity: 1;
  67. visibility: visible;
  68. }
  69. }
  70. .reveal .slides section .fragment.grow {
  71. opacity: 1;
  72. visibility: visible;
  73. &.visible {
  74. transform: scale( 1.3 );
  75. }
  76. }
  77. .reveal .slides section .fragment.shrink {
  78. opacity: 1;
  79. visibility: visible;
  80. &.visible {
  81. transform: scale( 0.7 );
  82. }
  83. }
  84. .reveal .slides section .fragment.zoom-in {
  85. transform: scale( 0.1 );
  86. &.visible {
  87. transform: none;
  88. }
  89. }
  90. .reveal .slides section .fragment.fade-out {
  91. opacity: 1;
  92. visibility: visible;
  93. &.visible {
  94. opacity: 0;
  95. visibility: hidden;
  96. }
  97. }
  98. .reveal .slides section .fragment.semi-fade-out {
  99. opacity: 1;
  100. visibility: visible;
  101. &.visible {
  102. opacity: 0.5;
  103. visibility: visible;
  104. }
  105. }
  106. .reveal .slides section .fragment.strike {
  107. opacity: 1;
  108. visibility: visible;
  109. &.visible {
  110. text-decoration: line-through;
  111. }
  112. }
  113. .reveal .slides section .fragment.fade-up {
  114. transform: translate(0, 20%);
  115. &.visible {
  116. transform: translate(0, 0);
  117. }
  118. }
  119. .reveal .slides section .fragment.fade-down {
  120. transform: translate(0, -20%);
  121. &.visible {
  122. transform: translate(0, 0);
  123. }
  124. }
  125. .reveal .slides section .fragment.fade-right {
  126. transform: translate(-20%, 0);
  127. &.visible {
  128. transform: translate(0, 0);
  129. }
  130. }
  131. .reveal .slides section .fragment.fade-left {
  132. transform: translate(20%, 0);
  133. &.visible {
  134. transform: translate(0, 0);
  135. }
  136. }
  137. .reveal .slides section .fragment.current-visible {
  138. opacity: 0;
  139. visibility: hidden;
  140. &.current-fragment {
  141. opacity: 1;
  142. visibility: visible;
  143. }
  144. }
  145. .reveal .slides section .fragment.highlight-red,
  146. .reveal .slides section .fragment.highlight-current-red,
  147. .reveal .slides section .fragment.highlight-green,
  148. .reveal .slides section .fragment.highlight-current-green,
  149. .reveal .slides section .fragment.highlight-blue,
  150. .reveal .slides section .fragment.highlight-current-blue {
  151. opacity: 1;
  152. visibility: visible;
  153. }
  154. .reveal .slides section .fragment.highlight-red.visible {
  155. color: #ff2c2d
  156. }
  157. .reveal .slides section .fragment.highlight-green.visible {
  158. color: #17ff2e;
  159. }
  160. .reveal .slides section .fragment.highlight-blue.visible {
  161. color: #1b91ff;
  162. }
  163. .reveal .slides section .fragment.highlight-current-red.current-fragment {
  164. color: #ff2c2d
  165. }
  166. .reveal .slides section .fragment.highlight-current-green.current-fragment {
  167. color: #17ff2e;
  168. }
  169. .reveal .slides section .fragment.highlight-current-blue.current-fragment {
  170. color: #1b91ff;
  171. }
  172. /*********************************************
  173. * DEFAULT ELEMENT STYLES
  174. *********************************************/
  175. /* Fixes issue in Chrome where italic fonts did not appear when printing to PDF */
  176. .reveal:after {
  177. content: '';
  178. font-style: italic;
  179. }
  180. .reveal iframe {
  181. z-index: 1;
  182. }
  183. /** Prevents layering issues in certain browser/transition combinations */
  184. .reveal a {
  185. position: relative;
  186. }
  187. .reveal .stretch {
  188. max-width: none;
  189. max-height: none;
  190. }
  191. .reveal pre.stretch code {
  192. height: 100%;
  193. max-height: 100%;
  194. box-sizing: border-box;
  195. }
  196. /*********************************************
  197. * CONTROLS
  198. *********************************************/
  199. .reveal .controls {
  200. display: none;
  201. position: fixed;
  202. width: 110px;
  203. height: 110px;
  204. z-index: 30;
  205. right: 10px;
  206. bottom: 10px;
  207. -webkit-user-select: none;
  208. }
  209. .reveal .controls button {
  210. padding: 0;
  211. position: absolute;
  212. opacity: 0.05;
  213. width: 0;
  214. height: 0;
  215. background-color: transparent;
  216. border: 12px solid transparent;
  217. transform: scale(.9999);
  218. transition: all 0.2s ease;
  219. -webkit-appearance: none;
  220. -webkit-tap-highlight-color: rgba( 0, 0, 0, 0 );
  221. }
  222. .reveal .controls .enabled {
  223. opacity: 0.7;
  224. cursor: pointer;
  225. }
  226. .reveal .controls .enabled:active {
  227. margin-top: 1px;
  228. }
  229. .reveal .controls .navigate-left {
  230. top: 42px;
  231. border-right-width: 22px;
  232. border-right-color: #000;
  233. }
  234. .reveal .controls .navigate-left.fragmented {
  235. opacity: 0.3;
  236. }
  237. .reveal .controls .navigate-right {
  238. left: 74px;
  239. top: 42px;
  240. border-left-width: 22px;
  241. border-left-color: #000;
  242. }
  243. .reveal .controls .navigate-right.fragmented {
  244. opacity: 0.3;
  245. }
  246. .reveal .controls .navigate-up {
  247. left: 42px;
  248. border-bottom-width: 22px;
  249. border-bottom-color: #000;
  250. }
  251. .reveal .controls .navigate-up.fragmented {
  252. opacity: 0.3;
  253. }
  254. .reveal .controls .navigate-down {
  255. left: 42px;
  256. top: 74px;
  257. border-top-width: 22px;
  258. border-top-color: #000;
  259. }
  260. .reveal .controls .navigate-down.fragmented {
  261. opacity: 0.3;
  262. }
  263. /*********************************************
  264. * PROGRESS BAR
  265. *********************************************/
  266. .reveal .progress {
  267. position: fixed;
  268. display: none;
  269. height: 3px;
  270. width: 100%;
  271. bottom: 0;
  272. left: 0;
  273. z-index: 10;
  274. background-color: rgba( 0, 0, 0, 0.2 );
  275. }
  276. .reveal .progress:after {
  277. content: '';
  278. display: block;
  279. position: absolute;
  280. height: 20px;
  281. width: 100%;
  282. top: -20px;
  283. }
  284. .reveal .progress span {
  285. display: block;
  286. height: 100%;
  287. width: 0px;
  288. background-color: #000;
  289. transition: width 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
  290. }
  291. /*********************************************
  292. * SLIDE NUMBER
  293. *********************************************/
  294. .reveal .slide-number {
  295. position: fixed;
  296. display: block;
  297. right: 8px;
  298. bottom: 8px;
  299. z-index: 31;
  300. font-family: Helvetica, sans-serif;
  301. font-size: 12px;
  302. line-height: 1;
  303. color: #fff;
  304. background-color: rgba( 0, 0, 0, 0.4 );
  305. padding: 5px;
  306. }
  307. .reveal .slide-number-delimiter {
  308. margin: 0 3px;
  309. }
  310. /*********************************************
  311. * SLIDES
  312. *********************************************/
  313. .reveal {
  314. position: relative;
  315. width: 100%;
  316. height: 100%;
  317. overflow: hidden;
  318. touch-action: none;
  319. }
  320. .reveal .slides {
  321. position: absolute;
  322. width: 100%;
  323. height: 100%;
  324. top: 0;
  325. right: 0;
  326. bottom: 0;
  327. left: 0;
  328. margin: auto;
  329. overflow: visible;
  330. z-index: 1;
  331. text-align: center;
  332. perspective: 600px;
  333. perspective-origin: 50% 40%;
  334. }
  335. .reveal .slides>section {
  336. -ms-perspective: 600px;
  337. }
  338. .reveal .slides>section,
  339. .reveal .slides>section>section {
  340. display: none;
  341. position: absolute;
  342. width: 100%;
  343. padding: 20px 0px;
  344. z-index: 10;
  345. transform-style: preserve-3d;
  346. transition: transform-origin 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
  347. transform 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
  348. visibility 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985),
  349. opacity 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
  350. }
  351. /* Global transition speed settings */
  352. .reveal[data-transition-speed="fast"] .slides section {
  353. transition-duration: 400ms;
  354. }
  355. .reveal[data-transition-speed="slow"] .slides section {
  356. transition-duration: 1200ms;
  357. }
  358. /* Slide-specific transition speed overrides */
  359. .reveal .slides section[data-transition-speed="fast"] {
  360. transition-duration: 400ms;
  361. }
  362. .reveal .slides section[data-transition-speed="slow"] {
  363. transition-duration: 1200ms;
  364. }
  365. .reveal .slides>section.stack {
  366. padding-top: 0;
  367. padding-bottom: 0;
  368. }
  369. .reveal .slides>section.present,
  370. .reveal .slides>section>section.present {
  371. display: block;
  372. z-index: 11;
  373. opacity: 1;
  374. }
  375. .reveal.center,
  376. .reveal.center .slides,
  377. .reveal.center .slides section {
  378. min-height: 0 !important;
  379. }
  380. /* Don't allow interaction with invisible slides */
  381. .reveal .slides>section.future,
  382. .reveal .slides>section>section.future,
  383. .reveal .slides>section.past,
  384. .reveal .slides>section>section.past {
  385. pointer-events: none;
  386. }
  387. .reveal.overview .slides>section,
  388. .reveal.overview .slides>section>section {
  389. pointer-events: auto;
  390. }
  391. .reveal .slides>section.past,
  392. .reveal .slides>section.future,
  393. .reveal .slides>section>section.past,
  394. .reveal .slides>section>section.future {
  395. opacity: 0;
  396. }
  397. /*********************************************
  398. * Mixins for readability of transitions
  399. *********************************************/
  400. @mixin transition-global($style) {
  401. .reveal .slides section[data-transition=#{$style}],
  402. .reveal.#{$style} .slides section:not([data-transition]) {
  403. @content;
  404. }
  405. }
  406. @mixin transition-horizontal-past($style) {
  407. .reveal .slides>section[data-transition=#{$style}].past,
  408. .reveal .slides>section[data-transition~=#{$style}-out].past,
  409. .reveal.#{$style} .slides>section:not([data-transition]).past {
  410. @content;
  411. }
  412. }
  413. @mixin transition-horizontal-future($style) {
  414. .reveal .slides>section[data-transition=#{$style}].future,
  415. .reveal .slides>section[data-transition~=#{$style}-in].future,
  416. .reveal.#{$style} .slides>section:not([data-transition]).future {
  417. @content;
  418. }
  419. }
  420. @mixin transition-vertical-past($style) {
  421. .reveal .slides>section>section[data-transition=#{$style}].past,
  422. .reveal .slides>section>section[data-transition~=#{$style}-out].past,
  423. .reveal.#{$style} .slides>section>section:not([data-transition]).past {
  424. @content;
  425. }
  426. }
  427. @mixin transition-vertical-future($style) {
  428. .reveal .slides>section>section[data-transition=#{$style}].future,
  429. .reveal .slides>section>section[data-transition~=#{$style}-in].future,
  430. .reveal.#{$style} .slides>section>section:not([data-transition]).future {
  431. @content;
  432. }
  433. }
  434. /*********************************************
  435. * SLIDE TRANSITION
  436. * Aliased 'linear' for backwards compatibility
  437. *********************************************/
  438. @each $stylename in slide, linear {
  439. .reveal.#{$stylename} section {
  440. backface-visibility: hidden;
  441. }
  442. @include transition-horizontal-past(#{$stylename}) {
  443. transform: translate(-150%, 0);
  444. }
  445. @include transition-horizontal-future(#{$stylename}) {
  446. transform: translate(150%, 0);
  447. }
  448. @include transition-vertical-past(#{$stylename}) {
  449. transform: translate(0, -150%);
  450. }
  451. @include transition-vertical-future(#{$stylename}) {
  452. transform: translate(0, 150%);
  453. }
  454. }
  455. /*********************************************
  456. * CONVEX TRANSITION
  457. * Aliased 'default' for backwards compatibility
  458. *********************************************/
  459. @each $stylename in default, convex {
  460. @include transition-horizontal-past(#{$stylename}) {
  461. transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
  462. }
  463. @include transition-horizontal-future(#{$stylename}) {
  464. transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
  465. }
  466. @include transition-vertical-past(#{$stylename}) {
  467. transform: translate3d(0, -300px, 0) rotateX(70deg) translate3d(0, -300px, 0);
  468. }
  469. @include transition-vertical-future(#{$stylename}) {
  470. transform: translate3d(0, 300px, 0) rotateX(-70deg) translate3d(0, 300px, 0);
  471. }
  472. }
  473. /*********************************************
  474. * CONCAVE TRANSITION
  475. *********************************************/
  476. @include transition-horizontal-past(concave) {
  477. transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
  478. }
  479. @include transition-horizontal-future(concave) {
  480. transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
  481. }
  482. @include transition-vertical-past(concave) {
  483. transform: translate3d(0, -80%, 0) rotateX(-70deg) translate3d(0, -80%, 0);
  484. }
  485. @include transition-vertical-future(concave) {
  486. transform: translate3d(0, 80%, 0) rotateX(70deg) translate3d(0, 80%, 0);
  487. }
  488. /*********************************************
  489. * ZOOM TRANSITION
  490. *********************************************/
  491. @include transition-global(zoom) {
  492. transition-timing-function: ease;
  493. }
  494. @include transition-horizontal-past(zoom) {
  495. visibility: hidden;
  496. transform: scale(16);
  497. }
  498. @include transition-horizontal-future(zoom) {
  499. visibility: hidden;
  500. transform: scale(0.2);
  501. }
  502. @include transition-vertical-past(zoom) {
  503. transform: translate(0, -150%);
  504. }
  505. @include transition-vertical-future(zoom) {
  506. transform: translate(0, 150%);
  507. }
  508. /*********************************************
  509. * CUBE TRANSITION
  510. *********************************************/
  511. .reveal.cube .slides {
  512. perspective: 1300px;
  513. }
  514. .reveal.cube .slides section {
  515. padding: 30px;
  516. min-height: 700px;
  517. backface-visibility: hidden;
  518. box-sizing: border-box;
  519. }
  520. .reveal.center.cube .slides section {
  521. min-height: 0;
  522. }
  523. .reveal.cube .slides section:not(.stack):before {
  524. content: '';
  525. position: absolute;
  526. display: block;
  527. width: 100%;
  528. height: 100%;
  529. left: 0;
  530. top: 0;
  531. background: rgba(0,0,0,0.1);
  532. border-radius: 4px;
  533. transform: translateZ( -20px );
  534. }
  535. .reveal.cube .slides section:not(.stack):after {
  536. content: '';
  537. position: absolute;
  538. display: block;
  539. width: 90%;
  540. height: 30px;
  541. left: 5%;
  542. bottom: 0;
  543. background: none;
  544. z-index: 1;
  545. border-radius: 4px;
  546. box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
  547. transform: translateZ(-90px) rotateX( 65deg );
  548. }
  549. .reveal.cube .slides>section.stack {
  550. padding: 0;
  551. background: none;
  552. }
  553. .reveal.cube .slides>section.past {
  554. transform-origin: 100% 0%;
  555. transform: translate3d(-100%, 0, 0) rotateY(-90deg);
  556. }
  557. .reveal.cube .slides>section.future {
  558. transform-origin: 0% 0%;
  559. transform: translate3d(100%, 0, 0) rotateY(90deg);
  560. }
  561. .reveal.cube .slides>section>section.past {
  562. transform-origin: 0% 100%;
  563. transform: translate3d(0, -100%, 0) rotateX(90deg);
  564. }
  565. .reveal.cube .slides>section>section.future {
  566. transform-origin: 0% 0%;
  567. transform: translate3d(0, 100%, 0) rotateX(-90deg);
  568. }
  569. /*********************************************
  570. * PAGE TRANSITION
  571. *********************************************/
  572. .reveal.page .slides {
  573. perspective-origin: 0% 50%;
  574. perspective: 3000px;
  575. }
  576. .reveal.page .slides section {
  577. padding: 30px;
  578. min-height: 700px;
  579. box-sizing: border-box;
  580. }
  581. .reveal.page .slides section.past {
  582. z-index: 12;
  583. }
  584. .reveal.page .slides section:not(.stack):before {
  585. content: '';
  586. position: absolute;
  587. display: block;
  588. width: 100%;
  589. height: 100%;
  590. left: 0;
  591. top: 0;
  592. background: rgba(0,0,0,0.1);
  593. transform: translateZ( -20px );
  594. }
  595. .reveal.page .slides section:not(.stack):after {
  596. content: '';
  597. position: absolute;
  598. display: block;
  599. width: 90%;
  600. height: 30px;
  601. left: 5%;
  602. bottom: 0;
  603. background: none;
  604. z-index: 1;
  605. border-radius: 4px;
  606. box-shadow: 0px 95px 25px rgba(0,0,0,0.2);
  607. -webkit-transform: translateZ(-90px) rotateX( 65deg );
  608. }
  609. .reveal.page .slides>section.stack {
  610. padding: 0;
  611. background: none;
  612. }
  613. .reveal.page .slides>section.past {
  614. transform-origin: 0% 0%;
  615. transform: translate3d(-40%, 0, 0) rotateY(-80deg);
  616. }
  617. .reveal.page .slides>section.future {
  618. transform-origin: 100% 0%;
  619. transform: translate3d(0, 0, 0);
  620. }
  621. .reveal.page .slides>section>section.past {
  622. transform-origin: 0% 0%;
  623. transform: translate3d(0, -40%, 0) rotateX(80deg);
  624. }
  625. .reveal.page .slides>section>section.future {
  626. transform-origin: 0% 100%;
  627. transform: translate3d(0, 0, 0);
  628. }
  629. /*********************************************
  630. * FADE TRANSITION
  631. *********************************************/
  632. .reveal .slides section[data-transition=fade],
  633. .reveal.fade .slides section:not([data-transition]),
  634. .reveal.fade .slides>section>section:not([data-transition]) {
  635. transform: none;
  636. transition: opacity 0.5s;
  637. }
  638. .reveal.fade.overview .slides section,
  639. .reveal.fade.overview .slides>section>section {
  640. transition: none;
  641. }
  642. /*********************************************
  643. * NO TRANSITION
  644. *********************************************/
  645. @include transition-global(none) {
  646. transform: none;
  647. transition: none;
  648. }
  649. /*********************************************
  650. * PAUSED MODE
  651. *********************************************/
  652. .reveal .pause-overlay {
  653. position: absolute;
  654. top: 0;
  655. left: 0;
  656. width: 100%;
  657. height: 100%;
  658. background: black;
  659. visibility: hidden;
  660. opacity: 0;
  661. z-index: 100;
  662. transition: all 1s ease;
  663. }
  664. .reveal.paused .pause-overlay {
  665. visibility: visible;
  666. opacity: 1;
  667. }
  668. /*********************************************
  669. * FALLBACK
  670. *********************************************/
  671. .no-transforms {
  672. overflow-y: auto;
  673. }
  674. .no-transforms .reveal .slides {
  675. position: relative;
  676. width: 80%;
  677. height: auto !important;
  678. top: 0;
  679. left: 50%;
  680. margin: 0;
  681. text-align: center;
  682. }
  683. .no-transforms .reveal .controls,
  684. .no-transforms .reveal .progress {
  685. display: none !important;
  686. }
  687. .no-transforms .reveal .slides section {
  688. display: block !important;
  689. opacity: 1 !important;
  690. position: relative !important;
  691. height: auto;
  692. min-height: 0;
  693. top: 0;
  694. left: -50%;
  695. margin: 70px 0;
  696. transform: none;
  697. }
  698. .no-transforms .reveal .slides section section {
  699. left: 0;
  700. }
  701. .reveal .no-transition,
  702. .reveal .no-transition * {
  703. transition: none !important;
  704. }
  705. /*********************************************
  706. * PER-SLIDE BACKGROUNDS
  707. *********************************************/
  708. .reveal .backgrounds {
  709. position: absolute;
  710. width: 100%;
  711. height: 100%;
  712. top: 0;
  713. left: 0;
  714. perspective: 600px;
  715. }
  716. .reveal .slide-background {
  717. display: none;
  718. position: absolute;
  719. width: 100%;
  720. height: 100%;
  721. opacity: 0;
  722. visibility: hidden;
  723. background-color: rgba( 0, 0, 0, 0 );
  724. background-position: 50% 50%;
  725. background-repeat: no-repeat;
  726. background-size: cover;
  727. transition: all 800ms cubic-bezier(0.260, 0.860, 0.440, 0.985);
  728. }
  729. .reveal .slide-background.stack {
  730. display: block;
  731. }
  732. .reveal .slide-background.present {
  733. opacity: 1;
  734. visibility: visible;
  735. }
  736. .print-pdf .reveal .slide-background {
  737. opacity: 1 !important;
  738. visibility: visible !important;
  739. }
  740. /* Video backgrounds */
  741. .reveal .slide-background video {
  742. position: absolute;
  743. width: 100%;
  744. height: 100%;
  745. max-width: none;
  746. max-height: none;
  747. top: 0;
  748. left: 0;
  749. }
  750. /* Immediate transition style */
  751. .reveal[data-background-transition=none]>.backgrounds .slide-background,
  752. .reveal>.backgrounds .slide-background[data-background-transition=none] {
  753. transition: none;
  754. }
  755. /* Slide */
  756. .reveal[data-background-transition=slide]>.backgrounds .slide-background,
  757. .reveal>.backgrounds .slide-background[data-background-transition=slide] {
  758. opacity: 1;
  759. backface-visibility: hidden;
  760. }
  761. .reveal[data-background-transition=slide]>.backgrounds .slide-background.past,
  762. .reveal>.backgrounds .slide-background.past[data-background-transition=slide] {
  763. transform: translate(-100%, 0);
  764. }
  765. .reveal[data-background-transition=slide]>.backgrounds .slide-background.future,
  766. .reveal>.backgrounds .slide-background.future[data-background-transition=slide] {
  767. transform: translate(100%, 0);
  768. }
  769. .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.past,
  770. .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=slide] {
  771. transform: translate(0, -100%);
  772. }
  773. .reveal[data-background-transition=slide]>.backgrounds .slide-background>.slide-background.future,
  774. .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=slide] {
  775. transform: translate(0, 100%);
  776. }
  777. /* Convex */
  778. .reveal[data-background-transition=convex]>.backgrounds .slide-background.past,
  779. .reveal>.backgrounds .slide-background.past[data-background-transition=convex] {
  780. opacity: 0;
  781. transform: translate3d(-100%, 0, 0) rotateY(-90deg) translate3d(-100%, 0, 0);
  782. }
  783. .reveal[data-background-transition=convex]>.backgrounds .slide-background.future,
  784. .reveal>.backgrounds .slide-background.future[data-background-transition=convex] {
  785. opacity: 0;
  786. transform: translate3d(100%, 0, 0) rotateY(90deg) translate3d(100%, 0, 0);
  787. }
  788. .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.past,
  789. .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=convex] {
  790. opacity: 0;
  791. transform: translate3d(0, -100%, 0) rotateX(90deg) translate3d(0, -100%, 0);
  792. }
  793. .reveal[data-background-transition=convex]>.backgrounds .slide-background>.slide-background.future,
  794. .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=convex] {
  795. opacity: 0;
  796. transform: translate3d(0, 100%, 0) rotateX(-90deg) translate3d(0, 100%, 0);
  797. }
  798. /* Concave */
  799. .reveal[data-background-transition=concave]>.backgrounds .slide-background.past,
  800. .reveal>.backgrounds .slide-background.past[data-background-transition=concave] {
  801. opacity: 0;
  802. transform: translate3d(-100%, 0, 0) rotateY(90deg) translate3d(-100%, 0, 0);
  803. }
  804. .reveal[data-background-transition=concave]>.backgrounds .slide-background.future,
  805. .reveal>.backgrounds .slide-background.future[data-background-transition=concave] {
  806. opacity: 0;
  807. transform: translate3d(100%, 0, 0) rotateY(-90deg) translate3d(100%, 0, 0);
  808. }
  809. .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.past,
  810. .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=concave] {
  811. opacity: 0;
  812. transform: translate3d(0, -100%, 0) rotateX(-90deg) translate3d(0, -100%, 0);
  813. }
  814. .reveal[data-background-transition=concave]>.backgrounds .slide-background>.slide-background.future,
  815. .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=concave] {
  816. opacity: 0;
  817. transform: translate3d(0, 100%, 0) rotateX(90deg) translate3d(0, 100%, 0);
  818. }
  819. /* Zoom */
  820. .reveal[data-background-transition=zoom]>.backgrounds .slide-background,
  821. .reveal>.backgrounds .slide-background[data-background-transition=zoom] {
  822. transition-timing-function: ease;
  823. }
  824. .reveal[data-background-transition=zoom]>.backgrounds .slide-background.past,
  825. .reveal>.backgrounds .slide-background.past[data-background-transition=zoom] {
  826. opacity: 0;
  827. visibility: hidden;
  828. transform: scale(16);
  829. }
  830. .reveal[data-background-transition=zoom]>.backgrounds .slide-background.future,
  831. .reveal>.backgrounds .slide-background.future[data-background-transition=zoom] {
  832. opacity: 0;
  833. visibility: hidden;
  834. transform: scale(0.2);
  835. }
  836. .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.past,
  837. .reveal>.backgrounds .slide-background>.slide-background.past[data-background-transition=zoom] {
  838. opacity: 0;
  839. visibility: hidden;
  840. transform: scale(16);
  841. }
  842. .reveal[data-background-transition=zoom]>.backgrounds .slide-background>.slide-background.future,
  843. .reveal>.backgrounds .slide-background>.slide-background.future[data-background-transition=zoom] {
  844. opacity: 0;
  845. visibility: hidden;
  846. transform: scale(0.2);
  847. }
  848. /* Global transition speed settings */
  849. .reveal[data-transition-speed="fast"]>.backgrounds .slide-background {
  850. transition-duration: 400ms;
  851. }
  852. .reveal[data-transition-speed="slow"]>.backgrounds .slide-background {
  853. transition-duration: 1200ms;
  854. }
  855. /*********************************************
  856. * OVERVIEW
  857. *********************************************/
  858. .reveal.overview {
  859. perspective-origin: 50% 50%;
  860. perspective: 700px;
  861. .slides section {
  862. height: 100%;
  863. top: 0 !important;
  864. opacity: 1 !important;
  865. overflow: hidden;
  866. visibility: visible !important;
  867. cursor: pointer;
  868. box-sizing: border-box;
  869. }
  870. .slides section:hover,
  871. .slides section.present {
  872. outline: 10px solid rgba(150,150,150,0.4);
  873. outline-offset: 10px;
  874. }
  875. .slides section .fragment {
  876. opacity: 1;
  877. transition: none;
  878. }
  879. .slides section:after,
  880. .slides section:before {
  881. display: none !important;
  882. }
  883. .slides>section.stack {
  884. padding: 0;
  885. top: 0 !important;
  886. background: none;
  887. outline: none;
  888. overflow: visible;
  889. }
  890. .backgrounds {
  891. perspective: inherit;
  892. }
  893. .backgrounds .slide-background {
  894. opacity: 1;
  895. visibility: visible;
  896. // This can't be applied to the slide itself in Safari
  897. outline: 10px solid rgba(150,150,150,0.1);
  898. outline-offset: 10px;
  899. }
  900. }
  901. // Disable transitions transitions while we're activating
  902. // or deactivating the overview mode.
  903. .reveal.overview .slides section,
  904. .reveal.overview-deactivating .slides section {
  905. transition: none;
  906. }
  907. .reveal.overview .backgrounds .slide-background,
  908. .reveal.overview-deactivating .backgrounds .slide-background {
  909. transition: none;
  910. }
  911. .reveal.overview-animated .slides {
  912. transition: transform 0.4s ease;
  913. }
  914. /*********************************************
  915. * RTL SUPPORT
  916. *********************************************/
  917. .reveal.rtl .slides,
  918. .reveal.rtl .slides h1,
  919. .reveal.rtl .slides h2,
  920. .reveal.rtl .slides h3,
  921. .reveal.rtl .slides h4,
  922. .reveal.rtl .slides h5,
  923. .reveal.rtl .slides h6 {
  924. direction: rtl;
  925. font-family: sans-serif;
  926. }
  927. .reveal.rtl pre,
  928. .reveal.rtl code {
  929. direction: ltr;
  930. }
  931. .reveal.rtl ol,
  932. .reveal.rtl ul {
  933. text-align: right;
  934. }
  935. .reveal.rtl .progress span {
  936. float: right
  937. }
  938. /*********************************************
  939. * PARALLAX BACKGROUND
  940. *********************************************/
  941. .reveal.has-parallax-background .backgrounds {
  942. transition: all 0.8s ease;
  943. }
  944. /* Global transition speed settings */
  945. .reveal.has-parallax-background[data-transition-speed="fast"] .backgrounds {
  946. transition-duration: 400ms;
  947. }
  948. .reveal.has-parallax-background[data-transition-speed="slow"] .backgrounds {
  949. transition-duration: 1200ms;
  950. }
  951. /*********************************************
  952. * LINK PREVIEW OVERLAY
  953. *********************************************/
  954. .reveal .overlay {
  955. position: absolute;
  956. top: 0;
  957. left: 0;
  958. width: 100%;
  959. height: 100%;
  960. z-index: 1000;
  961. background: rgba( 0, 0, 0, 0.9 );
  962. opacity: 0;
  963. visibility: hidden;
  964. transition: all 0.3s ease;
  965. }
  966. .reveal .overlay.visible {
  967. opacity: 1;
  968. visibility: visible;
  969. }
  970. .reveal .overlay .spinner {
  971. position: absolute;
  972. display: block;
  973. top: 50%;
  974. left: 50%;
  975. width: 32px;
  976. height: 32px;
  977. margin: -16px 0 0 -16px;
  978. z-index: 10;
  979. background-image: url(data:image/gif;base64,R0lGODlhIAAgAPMAAJmZmf%2F%2F%2F6%2Bvr8nJybW1tcDAwOjo6Nvb26ioqKOjo7Ozs%2FLy8vz8%2FAAAAAAAAAAAACH%2FC05FVFNDQVBFMi4wAwEAAAAh%2FhpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh%2BQQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ%2FV%2FnmOM82XiHRLYKhKP1oZmADdEAAAh%2BQQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY%2FCZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB%2BA4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6%2BHo7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq%2BB6QDtuetcaBPnW6%2BO7wDHpIiK9SaVK5GgV543tzjgGcghAgAh%2BQQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK%2B%2BG%2Bw48edZPK%2BM6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE%2BG%2BcD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm%2BFNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk%2BaV%2BoJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0%2FVNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc%2BXiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30%2FiI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE%2FjiuL04RGEBgwWhShRgQExHBAAh%2BQQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR%2BipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq%2BE71SRQeyqUToLA7VxF0JDyIQh%2FMVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY%2BYip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd%2BMFCN6HAAIKgNggY0KtEBAAh%2BQQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1%2BvsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d%2BjYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg%2BygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0%2Bbm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h%2BKr0SJ8MFihpNbx%2B4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX%2BBP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA%3D%3D);
  980. visibility: visible;
  981. opacity: 0.6;
  982. transition: all 0.3s ease;
  983. }
  984. .reveal .overlay header {
  985. position: absolute;
  986. left: 0;
  987. top: 0;
  988. width: 100%;
  989. height: 40px;
  990. z-index: 2;
  991. border-bottom: 1px solid #222;
  992. }
  993. .reveal .overlay header a {
  994. display: inline-block;
  995. width: 40px;
  996. height: 40px;
  997. padding: 0 10px;
  998. float: right;
  999. opacity: 0.6;
  1000. box-sizing: border-box;
  1001. }
  1002. .reveal .overlay header a:hover {
  1003. opacity: 1;
  1004. }
  1005. .reveal .overlay header a .icon {
  1006. display: inline-block;
  1007. width: 20px;
  1008. height: 20px;
  1009. background-position: 50% 50%;
  1010. background-size: 100%;
  1011. background-repeat: no-repeat;
  1012. }
  1013. .reveal .overlay header a.close .icon {
  1014. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABkklEQVRYR8WX4VHDMAxG6wnoJrABZQPYBCaBTWAD2g1gE5gg6OOsXuxIlr40d81dfrSJ9V4c2VLK7spHuTJ/5wpM07QXuXc5X0opX2tEJcadjHuV80li/FgxTIEK/5QBCICBD6xEhSMGHgQPgBgLiYVAB1dpSqKDawxTohFw4JSEA3clzgIBPCURwE2JucBR7rhPJJv5OpJwDX+SfDjgx1wACQeJG1aChP9K/IMmdZ8DtESV1WyP3Bt4MwM6sj4NMxMYiqUWHQu4KYA/SYkIjOsm3BXYWMKFDwU2khjCQ4ELJUJ4SmClRArOCmSXGuKma0fYD5CbzHxFpCSGAhfAVSSUGDUk2BWZaff2g6GE15BsBQ9nwmpIGDiyHQddwNTMKkbZaf9fajXQca1EX44puJZUsnY0ObGmITE3GVLCbEhQUjGVt146j6oasWN+49Vph2w1pZ5EansNZqKBm1txbU57iRRcZ86RWMDdWtBJUHBHwoQPi1GV+JCbntmvok7iTX4/Up9mgyTc/FJYDTcndgH/AA5A/CHsyEkVAAAAAElFTkSuQmCC);
  1015. }
  1016. .reveal .overlay header a.external .icon {
  1017. background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAcElEQVRYR+2WSQoAIQwEzf8f7XiOMkUQxUPlGkM3hVmiQfQR9GYnH1SsAQlI4DiBqkCMoNb9y2e90IAEJPAcgdznU9+engMaeJ7Azh5Y1U67gAho4DqBqmB1buAf0MB1AlVBek83ZPkmJMGc1wAR+AAqod/B97TRpQAAAABJRU5ErkJggg==);
  1018. }
  1019. .reveal .overlay .viewport {
  1020. position: absolute;
  1021. display: flex;
  1022. top: 40px;
  1023. right: 0;
  1024. bottom: 0;
  1025. left: 0;
  1026. }
  1027. .reveal .overlay.overlay-preview .viewport iframe {
  1028. width: 100%;
  1029. height: 100%;
  1030. max-width: 100%;
  1031. max-height: 100%;
  1032. border: 0;
  1033. opacity: 0;
  1034. visibility: hidden;
  1035. transition: all 0.3s ease;
  1036. }
  1037. .reveal .overlay.overlay-preview.loaded .viewport iframe {
  1038. opacity: 1;
  1039. visibility: visible;
  1040. }
  1041. .reveal .overlay.overlay-preview.loaded .spinner {
  1042. opacity: 0;
  1043. visibility: hidden;
  1044. transform: scale(0.2);
  1045. }
  1046. .reveal .overlay.overlay-help .viewport {
  1047. overflow: auto;
  1048. color: #fff;
  1049. }
  1050. .reveal .overlay.overlay-help .viewport .viewport-inner {
  1051. width: 600px;
  1052. margin: auto;
  1053. padding: 20px 20px 80px 20px;
  1054. text-align: center;
  1055. letter-spacing: normal;
  1056. }
  1057. .reveal .overlay.overlay-help .viewport .viewport-inner .title {
  1058. font-size: 20px;
  1059. }
  1060. .reveal .overlay.overlay-help .viewport .viewport-inner table {
  1061. border: 1px solid #fff;
  1062. border-collapse: collapse;
  1063. font-size: 16px;
  1064. }
  1065. .reveal .overlay.overlay-help .viewport .viewport-inner table th,
  1066. .reveal .overlay.overlay-help .viewport .viewport-inner table td {
  1067. width: 200px;
  1068. padding: 14px;
  1069. border: 1px solid #fff;
  1070. vertical-align: middle;
  1071. }
  1072. .reveal .overlay.overlay-help .viewport .viewport-inner table th {
  1073. padding-top: 20px;
  1074. padding-bottom: 20px;
  1075. }
  1076. /*********************************************
  1077. * PLAYBACK COMPONENT
  1078. *********************************************/
  1079. .reveal .playback {
  1080. position: fixed;
  1081. left: 15px;
  1082. bottom: 20px;
  1083. z-index: 30;
  1084. cursor: pointer;
  1085. transition: all 400ms ease;
  1086. }
  1087. .reveal.overview .playback {
  1088. opacity: 0;
  1089. visibility: hidden;
  1090. }
  1091. /*********************************************
  1092. * ROLLING LINKS
  1093. *********************************************/
  1094. .reveal .roll {
  1095. display: inline-block;
  1096. line-height: 1.2;
  1097. overflow: hidden;
  1098. vertical-align: top;
  1099. perspective: 400px;
  1100. perspective-origin: 50% 50%;
  1101. }
  1102. .reveal .roll:hover {
  1103. background: none;
  1104. text-shadow: none;
  1105. }
  1106. .reveal .roll span {
  1107. display: block;
  1108. position: relative;
  1109. padding: 0 2px;
  1110. pointer-events: none;
  1111. transition: all 400ms ease;
  1112. transform-origin: 50% 0%;
  1113. transform-style: preserve-3d;
  1114. backface-visibility: hidden;
  1115. }
  1116. .reveal .roll:hover span {
  1117. background: rgba(0,0,0,0.5);
  1118. transform: translate3d( 0px, 0px, -45px ) rotateX( 90deg );
  1119. }
  1120. .reveal .roll span:after {
  1121. content: attr(data-title);
  1122. display: block;
  1123. position: absolute;
  1124. left: 0;
  1125. top: 0;
  1126. padding: 0 2px;
  1127. backface-visibility: hidden;
  1128. transform-origin: 50% 0%;
  1129. transform: translate3d( 0px, 110%, 0px ) rotateX( -90deg );
  1130. }
  1131. /*********************************************
  1132. * SPEAKER NOTES
  1133. *********************************************/
  1134. // Hide on-page notes
  1135. .reveal aside.notes {
  1136. display: none;
  1137. }
  1138. // An interface element that can optionally be used to show the
  1139. // speaker notes to all viewers, on top of the presentation
  1140. .reveal .speaker-notes {
  1141. display: none;
  1142. position: absolute;
  1143. width: 70%;
  1144. max-height: 15%;
  1145. left: 15%;
  1146. bottom: 26px;
  1147. padding: 10px;
  1148. z-index: 1;
  1149. font-size: 18px;
  1150. line-height: 1.4;
  1151. color: #fff;
  1152. background-color: rgba(0,0,0,0.5);
  1153. overflow: auto;
  1154. box-sizing: border-box;
  1155. text-align: left;
  1156. font-family: Helvetica, sans-serif;
  1157. -webkit-overflow-scrolling: touch;
  1158. }
  1159. .reveal .speaker-notes.visible:not(:empty) {
  1160. display: block;
  1161. }
  1162. @media screen and (max-width: 1024px) {
  1163. .reveal .speaker-notes {
  1164. font-size: 14px;
  1165. }
  1166. }
  1167. @media screen and (max-width: 600px) {
  1168. .reveal .speaker-notes {
  1169. width: 90%;
  1170. left: 5%;
  1171. }
  1172. }
  1173. /*********************************************
  1174. * ZOOM PLUGIN
  1175. *********************************************/
  1176. .zoomed .reveal *,
  1177. .zoomed .reveal *:before,
  1178. .zoomed .reveal *:after {
  1179. backface-visibility: visible !important;
  1180. }
  1181. .zoomed .reveal .progress,
  1182. .zoomed .reveal .controls {
  1183. opacity: 0;
  1184. }
  1185. .zoomed .reveal .roll span {
  1186. background: none;
  1187. }
  1188. .zoomed .reveal .roll span:after {
  1189. visibility: hidden;
  1190. }