slideoff 0.2 → 0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d0aa4b8f01cf7a42842d9b123398462f220e839
4
- data.tar.gz: f9a9cf3439952674be0967dc8536e72a32e88658
3
+ metadata.gz: a50c9f4b9fb5933f3b718b4cb7caf0d7f01fdca9
4
+ data.tar.gz: c0e85071f700e4a6bf231965401ce202de73751d
5
5
  SHA512:
6
- metadata.gz: 3d0d5a0798c3bf125e700ed516d9967b48b2412c18f4e83b0d02a40c77e64c4f3a93d94bbc29aae56f9aed60561abe8847cf3380d4eb438f4a42c6f699725a53
7
- data.tar.gz: c8d670ec6a1033eabb8a939e40c7cf92ab6d9c194697ab834bbe57fb896cb30fc2c89c889c04d186fe3a5c525d87530e08acb5bc6a0dd94f1fa47fe3c64aaeb3
6
+ metadata.gz: 41639965b9d4ea7e04852eefc93a64c84abba6175e77866d66c68397b559e6b627e438849dbe7ca1285263011aba24209c28f4eebabdbf73bf13addb32f4b9f4
7
+ data.tar.gz: cda24d0ee6c9ce12cfa6a9fad72a3ed8aa7d725003b1ab496d0d938b615c69de62a6660c09e2b820693d49679aa5c38f248f7b57a985a6c8bff1c0de4ea641a6
data/README.md CHANGED
@@ -16,58 +16,72 @@ Click here for a [demonstration](http://slideoff-test.dsiw-it.de/).
16
16
  * **pygments** for syntax highlighting
17
17
  * **wget** for static site generation
18
18
  * **python3** for serving static presentation
19
- * **git** for installing themes and make your slides version controled
20
- * **scp** for uploading to remote host
21
- * **Browser** for viewing presentation
19
+ * **git** for installing themes and make your slides version controlled
20
+ * **scp** for uploading to remote host via secure copy
21
+ * **wkhtmltopdf** for generating PDF
22
+ * **Browser** for viewing your presentation
23
+
24
+ ## Features
25
+
26
+ * Write your slides in the simplest markup language `markdown`
27
+ * Very portable presentation. You only need to upload your presentation to your web server via `scp` and open your URL.
28
+ * Change the theme via overriding CSS in `style.css` or create a new one.
29
+ * Install different themes
30
+ * Export to pdf via `slideoff pdf`
31
+ * Use the best features from web technologies. Be dynamic and interactive via Javascript, easy styling via CSS, ...
22
32
 
23
33
 
24
34
  ## First presentation
25
35
 
36
+ 1. Install ruby and some dependencies from Requirements section
26
37
  1. `gem install slideoff` Install Slideoff
27
38
  1. `slideoff init mypres` Initialize presentation in `mypres/`
28
39
  1. `$EDITOR presentation.json` and add your Flickr API key
29
40
  1. `$EDITOR main/index.md` Edit your slides
30
41
  1. `slideoff serve` Start server
31
42
  1. Open <http://localhost:9000/>
32
- 1. Use the arrows keys to navigate between slides
43
+ 1. Use the arrow keys to navigate between slides
33
44
 
34
45
  ## Themes
35
46
 
36
- Several themes are available: `io2012`, `shower`, `3d_slideshow`, `reveal`,
37
- `html5rocks`, `CSSS`, `memories` and `modern`. To choose the theme for your
47
+ Several themes are available: `modern`, `io2012`, `shower`, `3d_slideshow`, `reveal`,
48
+ `html5rocks`, `CSSS` and `memories`. To choose the theme for your
38
49
  presentation, edit the `presentation.json` file and change the `"theme"`
39
50
  element.
40
51
 
41
- You can also create your own theme, for example, by copying the template:
52
+ **Attention: Some of the following features are only implemented in `modern` theme.**
42
53
 
43
- ```sh
44
- mkdir -p ~/.slideoff
45
- cp -r themes/template ~/.slideoff/my-theme
46
- $EDITOR ~/.slideoff/my-theme/README
47
- ```
54
+ Override some theme styles by using `style.css` in the presentation directory. Another way is to clone the theme via
55
+ `slideoff install_theme <git-url>` and make changes there. Be sure to use the correct theme name in `presentation.json`.
56
+
57
+ Asset lookup in this order:
58
+ 1. `./<asset_name>`
59
+ 1. `.config/slideoff/themes/<theme_name>/<asset_name>`
60
+ 1. `installation_dir/themes/<theme_name>/<asset_name>`
61
+ 1. `installation_dir/themes/common/<asset_name>`
48
62
 
49
63
 
50
64
  ## Markup for the slides
51
65
 
52
- This slides are writen in [Markdown](http://daringfireball.net/projects/markdown/syntax)
66
+ This slides are written in [Markdown](http://daringfireball.net/projects/markdown/syntax)
53
67
  and `!SLIDE` is the indicator for a new slide.
54
68
 
55
69
  Example:
56
70
 
57
71
  !SLIDE
58
- # Title of the first slide #
59
- ## A subtitle ##
72
+ # Title of the first slide
73
+ ## A subtitle
60
74
  And some text...
61
75
 
62
76
  !SLIDE
63
- # Another slide #
77
+ # Another slide
64
78
 
65
79
  * a
66
80
  * bullet
67
81
  * list
68
82
 
69
83
  !SLIDE
70
- # Third slide #
84
+ # Third slide
71
85
 
72
86
  1. **bold**
73
87
  2. _italics_
@@ -90,6 +104,8 @@ like this:
90
104
  end
91
105
  ```
92
106
 
107
+ Different syntax highlighting styles exist in modern theme: `colorful`, `github`, `solarized-light`, `solarized-dark`
108
+
93
109
 
94
110
  ##Flickr integration
95
111
 
@@ -171,7 +187,7 @@ and all `li`-HTML-Elements will be displayed after some key strokes. For example
171
187
 
172
188
  If you like to add some opacity to visited elements, you can add `incr-list hover` to `!SLIDE`.
173
189
 
174
- If you don't like to increment list items only, you can do it more precise. You only have to add `!PAUSE` in your slide. For example:
190
+ If you don't like to always increment list items, you can do it more precise. You only have to add `!PAUSE` to your slide. For example:
175
191
 
176
192
  ```
177
193
  !SLIDE
@@ -187,13 +203,6 @@ This paragraph will be displayed first.
187
203
 
188
204
  Try it in your example presentation after initialization.
189
205
 
190
- ## Export to PDF
191
-
192
- Change to list mode with stroking `esc` key and use your normal printer dialog. You have to specify the correct margins and paper dimensions. I added a custom "PX 1024x640" and set width to 270mm and height to 169mm and all margins to 0.
193
-
194
- You can export your presentation to PDF by installing
195
- [phantomjs](http://phantomjs.org/) and then run `slideoff2pdf`.
196
-
197
206
 
198
207
  ## Issues or Suggestions
199
208
 
data/bin/slideoff CHANGED
@@ -7,7 +7,7 @@ require "slideoff"
7
7
 
8
8
  include GLI::App
9
9
 
10
- version "0.3.5" # Slideoff::VERSION
10
+ version Slideoff::VERSION
11
11
 
12
12
 
13
13
  desc 'Create new slideoff presentation'
@@ -25,11 +25,12 @@ end
25
25
 
26
26
  desc 'Install new slideoff theme'
27
27
  arg_name 'repository_url'
28
- long_desc 'Installs theme under ~/.slideoff.'
28
+ arg_name 'theme_name'
29
+ long_desc "Installs theme under #{Slideoff::CONFIG.dir}/themes"
29
30
  command [:install_theme] do |c|
30
31
  c.action do |global_options,options,args|
31
32
  raise "repository_url is required" if args.empty?
32
- Slideoff::Utils.install_theme(args[0])
33
+ Slideoff::Utils.install_theme(args[0], args[1])
33
34
  puts "Done."
34
35
  end
35
36
  end
@@ -78,7 +79,7 @@ desc 'Generate static version of presentation'
78
79
  long_desc 'Creates a static version of the presentation in "static" directory'
79
80
  command [:static] do |c|
80
81
  c.desc 'Port on which to run'
81
- c.default_value Slideoff::Server::DEFAULT_PORT
82
+ c.default_value 4141
82
83
  c.flag [:p,:port]
83
84
 
84
85
  c.action do |global_options,options,args|
@@ -106,6 +107,20 @@ command [:serve_static] do |c|
106
107
  end
107
108
 
108
109
 
110
+ desc 'Generate PDF of presentation'
111
+ long_desc 'Generate PDF of presentation'
112
+ command [:pdf] do |c|
113
+ c.desc 'Port on which to run'
114
+ c.default_value "4343"
115
+ c.flag [:p,:port]
116
+
117
+ c.action do |global_options,options,args|
118
+ pdf_filename = Slideoff::Utils.generate_pdf_file(options)
119
+ puts "Generated #{pdf_filename}."
120
+ end
121
+ end
122
+
123
+
109
124
  pre do |global,command,options,args|
110
125
  # Pre logic here
111
126
  # Return true to proceed; false to abourt and not call the
data/lib/slideoff.rb CHANGED
@@ -11,5 +11,5 @@ module Slideoff
11
11
  autoload :FlickrAPI, "slideoff/flickr_api"
12
12
 
13
13
  CONFIG = ConfigBuilder.new(Dir.pwd)
14
- VERSION = "0.2"
14
+ VERSION = "0.3"
15
15
  end
@@ -6,6 +6,7 @@ require "ostruct"
6
6
  module Slideoff
7
7
  class ConfigBuilder < OpenStruct
8
8
  DEFAULT = {
9
+ "dir" => "#{ENV['HOME']}/.config/slideoff",
9
10
  "title" => "No title",
10
11
  "theme" => "shower",
11
12
  "duration" => 60,
@@ -18,10 +19,10 @@ module Slideoff
18
19
  }
19
20
 
20
21
  def initialize(_dir)
21
- infos = extract_normal_infos(_dir) || extract_infos_from_showoff(_dir) || {}
22
+ config = DEFAULT.merge({pwd: _dir})
22
23
 
24
+ infos = extract_presentation_infos(_dir) || extract_showoff_presentation_infos(_dir) || {}
23
25
  unless infos.empty?
24
- infos = DEFAULT.merge({dir: _dir}.merge(infos))
25
26
  infos['sections'] = infos['sections'].reduce({}) do |new_hash, (k, hash)|
26
27
  new_hash.merge!(k => SECTION_DEFAULT.merge(hash))
27
28
  end
@@ -32,17 +33,18 @@ module Slideoff
32
33
  ENV["FLICKR_API_KEY"] = infos['flickr_api_key']
33
34
  end
34
35
 
35
- super(infos)
36
+ super(config.merge(infos))
36
37
  end
37
38
 
38
39
  private
39
40
 
40
- def extract_normal_infos(dir)
41
- parse_file(dir, "presentation")
41
+ def extract_presentation_infos(dir)
42
+ parse_json_file(dir, "presentation")
42
43
  end
43
44
 
44
- def extract_infos_from_showoff(dir)
45
- infos = parse_file(dir, "showoff")
45
+ # backward compability for showoff
46
+ def extract_showoff_presentation_infos(dir)
47
+ infos = parse_json_file(dir, "showoff")
46
48
  sections = infos["sections"].map {|s| s["section"] }
47
49
  {
48
50
  "title" => infos["name"],
@@ -51,7 +53,7 @@ module Slideoff
51
53
  }
52
54
  end
53
55
 
54
- def parse_file(dir, file)
56
+ def parse_json_file(dir, file)
55
57
  filename = "#{dir}/#{file}.json"
56
58
  return {} unless File.exists?(filename)
57
59
  Yajl::Parser.parse(File.read filename)
@@ -40,10 +40,10 @@ module Slideoff
40
40
  def path_for_asset(asset)
41
41
  [CONFIG, theme, common].each { |dir| convert_styles(dir) }
42
42
 
43
- Dir[ "#{CONFIG.dir}#{asset}"].first ||
44
- Dir[ "#{theme.dir}#{asset}"].first ||
45
- Dir[ "#{common.dir}#{asset}"].first ||
46
- Dir["#{CONFIG.dir}/**#{asset}"].first
43
+ Dir[ "#{CONFIG.pwd}#{asset}"].first ||
44
+ Dir[ "#{theme.dir}#{asset}"].first ||
45
+ Dir[ "#{common.dir}#{asset}"].first ||
46
+ Dir["#{CONFIG.pwd}/**#{asset}"].first
47
47
  end
48
48
 
49
49
  def convert_styles(dir)
@@ -56,7 +56,7 @@ module Slideoff
56
56
 
57
57
  def build_theme(title)
58
58
  Theme.new.tap do |t|
59
- dir = File.expand_path("~/.slideoff/#{title}")
59
+ dir = File.expand_path("#{CONFIG.dir}/themes/#{title}")
60
60
  if File.exists?(dir)
61
61
  t.dir = dir
62
62
  else
@@ -72,7 +72,7 @@ module Slideoff
72
72
 
73
73
  def sections
74
74
  @parts.map.with_index do |(dir, options), section_num|
75
- raw = Dir["#{CONFIG.dir}/#{dir}/**/*.md"].sort.map do |f|
75
+ raw = Dir["#{CONFIG.pwd}/#{dir}/**/*.md"].sort.map do |f|
76
76
  File.read(f)
77
77
  end.join("\n\n")
78
78
  parts = raw.split(/!SLIDE */)
@@ -25,12 +25,12 @@ module Slideoff
25
25
  server.start
26
26
  end
27
27
 
28
- private
29
-
30
28
  def presentation
31
29
  Slideoff::Presentation.new(dir)
32
30
  end
33
31
 
32
+ private
33
+
34
34
  def logger
35
35
  logger = Log4r::Logger.new(self.class.name)
36
36
  logger.add(stdout_outputter)
@@ -360,7 +360,7 @@ Home | Goto first slide
360
360
  End | Goto last slide
361
361
 
362
362
  !SLIDE
363
- # Keybindings (1)
363
+ # Keybindings (2)
364
364
 
365
365
  Key | Action
366
366
  ------------------------------- | -------------------------
@@ -386,6 +386,13 @@ PageDown / Down / right / l / j | Goto next slide
386
386
  "sections": {
387
387
  "main": {"title": "Modern theme", "show_chapter": false, "show_toc": false}
388
388
  }
389
+ }
390
+ EOF
391
+ end
392
+ File.open('style.css', 'w') do |file|
393
+ file.write <<-EOF
394
+ /* Override your theme styles */
395
+ .slide {
389
396
  }
390
397
  EOF
391
398
  end
@@ -393,15 +400,13 @@ PageDown / Down / right / l / j | Goto next slide
393
400
  end
394
401
  end
395
402
 
396
- def install_theme(git_repository_url)
397
- slideoff_home = File.join(ENV['HOME'], '.slideoff')
398
- FileUtils.mkdir_p slideoff_home
399
-
400
- theme_name = git_repository_url.split('/').last
401
- theme_path = File.join(slideoff_home, theme_name)
403
+ def install_theme(git_repository_url, theme_name)
404
+ theme_name ||= git_repository_url.split('/').last.gsub(/slideoff-|theme-/, '')
405
+ theme_path = File.join(CONFIG.dir, 'themes', theme_name)
406
+ FileUtils.mkdir_p File.dirname(theme_path)
402
407
  `git clone #{git_repository_url} #{theme_path}`
403
- puts "Cloned under #{theme_path}"
404
408
 
409
+ puts
405
410
  puts "Please make sure that '#{theme_name}' is set in your presentation.json"
406
411
  end
407
412
 
@@ -415,19 +420,12 @@ PageDown / Down / right / l / j | Goto next slide
415
420
  end
416
421
 
417
422
  def generate_static(options = {})
418
- pid = Process.fork { Slideoff::Server.new(options).start }
419
-
420
- sleep 2
421
-
422
- begin
423
+ fork_server(options) do
423
424
  FileUtils.mkdir_p(static_dir)
424
425
  Dir.chdir(static_dir) do |dir|
425
- `wget -E -H -k -nH -p http://lh:#{options[:port]}/`
426
+ `wget -E -H -k -nH -p http://127.0.0.1:#{options[:port]}/`
426
427
  File.write('robots.txt', "User-agent: *\nDisallow: /\n")
427
428
  end
428
- ensure
429
- Process.kill "QUIT", pid
430
- Process.wait pid
431
429
  end
432
430
  end
433
431
 
@@ -436,18 +434,49 @@ PageDown / Down / right / l / j | Goto next slide
436
434
  `python3 -m http.server #{port}`
437
435
  end
438
436
 
437
+ def generate_pdf_file(options = {})
438
+ pdf_file = "talk_#{convert_to_filename(CONFIG.title)}.pdf"
439
+ fork_server(options) do
440
+ page_width = '8000px'
441
+ page_height = '6000px'
442
+ page_margin = 0
443
+ source = "http://127.0.0.1:#{options[:port]}"
444
+ dest = pdf_file
445
+ `wkhtmltopdf --page-width #{page_width} --page-height #{page_height} -B #{page_margin} -R #{page_margin} -L #{page_margin} -T #{page_margin} #{source} #{dest}`
446
+ end
447
+
448
+ pdf_file
449
+ end
450
+
451
+ private
439
452
 
440
- def parents(dir)
453
+ def self.parents(dir)
441
454
  splitted = dir.split(File::SEPARATOR)
442
455
  splitted.length.times.reduce([]) { |_parents, i| _parents << splitted[0..i].join(File::SEPARATOR) }
443
456
  end
444
457
 
445
- def remote_cmd(cmds)
458
+ def self.remote_cmd(cmds)
446
459
  `ssh #{CONFIG.remote_host} "#{Array(cmds).join(';')}"`
447
460
  end
448
461
 
449
- def static_dir
450
- "../static_#{File.basename(Dir.pwd)}"
462
+ def self.static_dir
463
+ "public"
464
+ end
465
+
466
+ def self.convert_to_filename(string)
467
+ string.downcase.gsub(/[^a-z0-9.-]/, '')
468
+ end
469
+
470
+ def self.fork_server(options)
471
+ pid = Process.fork { Slideoff::Server.new(options).start }
472
+ sleep 2
473
+
474
+ begin
475
+ yield
476
+ ensure
477
+ Process.kill "QUIT", pid
478
+ Process.wait pid
479
+ end
451
480
  end
452
481
  end
453
482
  end
@@ -0,0 +1,6 @@
1
+ @page {
2
+ margin: 0;
3
+ size: 1024px 768px; }
4
+ @media print {
5
+ .slide {
6
+ page-break-after: always; } }
@@ -239,6 +239,15 @@ table {
239
239
  opacity: 0; }
240
240
  100% {
241
241
  opacity: 0; } }
242
+ @keyframes blink {
243
+ 0% {
244
+ opacity: 1; }
245
+ 49% {
246
+ opacity: 1; }
247
+ 50% {
248
+ opacity: 0; }
249
+ 100% {
250
+ opacity: 0; } }
242
251
  body {
243
252
  font: 30px/2 'Open Sans', sans-serif;
244
253
  counter-reset: problem 0; }
@@ -281,8 +290,8 @@ a {
281
290
  color: #FFF;
282
291
  text-align: center;
283
292
  -webkit-transform-origin: 50% 100%;
293
+ -moz-transform-origin: 50% 100%;
284
294
  transform-origin: 50% 100%;
285
- -webkit-transform: rotate(45deg) translateY(-1em);
286
295
  transform: rotate(45deg) translateY(-1em); }
287
296
 
288
297
  .slide {
@@ -362,7 +371,8 @@ a {
362
371
  .slide kbd.inline, .slide code.inline, .slide samp.inline {
363
372
  padding: 2px 7px; }
364
373
  .slide blink {
365
- -webkit-animation: blink 1.0s infinite; }
374
+ -webkit-animation: blink 1.0s infinite;
375
+ animation: blink 1.0s infinite; }
366
376
  .slide mark {
367
377
  padding-left: 5px;
368
378
  padding-right: 5px;
@@ -412,12 +422,12 @@ a {
412
422
  color: #AAA5A0;
413
423
  padding-right: 20px;
414
424
  margin-right: 15px; }
415
- .slide.cover figure, .slide.chapter figure, .slide.section figure {
425
+ .slide.cover figure, .slide.section figure {
416
426
  position: initial;
417
427
  max-height: initial;
418
428
  text-align: initial;
419
429
  vertical-align: initial; }
420
- .slide.cover figure img, .slide.chapter figure img, .slide.section figure img {
430
+ .slide.cover figure img, .slide.section figure img {
421
431
  max-height: initial; }
422
432
  .slide figure {
423
433
  position: relative;
@@ -573,7 +583,7 @@ a {
573
583
  .slide table {
574
584
  left: 50%;
575
585
  position: relative;
576
- -webkit-transform: translateX(-50%);
586
+ transform: translateX(-50%);
577
587
  margin: 0 0 28px;
578
588
  width: 100%;
579
589
  border-collapse: collapse;
@@ -589,12 +599,12 @@ a {
589
599
  .slide img, .slide iframe {
590
600
  position: absolute;
591
601
  left: 50%;
592
- -webkit-transform: translateX(-50%);
602
+ transform: translateX(-50%);
593
603
  max-height: 580px;
594
604
  max-width: 850px; }
595
605
  .slide img.inline, .slide iframe.inline {
596
606
  position: initial;
597
- -webkit-transform: none; }
607
+ transform: none; }
598
608
  .slide iframe {
599
609
  box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.3);
600
610
  border: 1px solid #e6e6e6;
@@ -602,29 +612,29 @@ a {
602
612
  height: 100%; }
603
613
  .slide iframe::-webkit-scrollbar {
604
614
  display: none; }
605
- .slide.cover, .slide.chapter, .slide.section, .slide.shout, .slide.chapter, .slide.chapter-html, .slide.problem-solution, .slide.problem, .slide.solution {
615
+ .slide.cover, .slide.section, .slide.shout, .slide.chapter, .slide.chapter-html, .slide.problem-solution, .slide.problem, .slide.solution {
606
616
  z-index: 1; }
607
- .slide.cover:after, .slide.chapter:after, .slide.section:after, .slide.shout:after, .slide.chapter:after, .slide.chapter-html:after, .slide.problem-solution:after, .slide.problem:after, .slide.solution:after {
617
+ .slide.cover:after, .slide.section:after, .slide.shout:after, .slide.chapter:after, .slide.chapter-html:after, .slide.problem-solution:after, .slide.problem:after, .slide.solution:after {
608
618
  content: '';
609
619
  border: none; }
610
- .slide.cover h1, .slide.chapter h1, .slide.section h1, .slide.shout h1, .slide.chapter h1, .slide.chapter-html h1, .slide.problem-solution h1, .slide.problem h1, .slide.solution h1 {
620
+ .slide.cover h1, .slide.section h1, .slide.shout h1, .slide.chapter h1, .slide.chapter-html h1, .slide.problem-solution h1, .slide.problem h1, .slide.solution h1 {
611
621
  display: none; }
612
- .slide.cover h2, .slide.chapter h2, .slide.section h2, .slide.shout h2, .slide.chapter h2, .slide.chapter-html h2, .slide.problem-solution h2, .slide.problem h2, .slide.solution h2 {
622
+ .slide.cover h2, .slide.section h2, .slide.shout h2, .slide.chapter h2, .slide.chapter-html h2, .slide.problem-solution h2, .slide.problem h2, .slide.solution h2 {
613
623
  border: none; }
614
- .slide.cover code, .slide.chapter code, .slide.section code, .slide.shout code, .slide.chapter code, .slide.chapter-html code, .slide.problem-solution code, .slide.problem code, .slide.solution code {
624
+ .slide.cover code, .slide.section code, .slide.shout code, .slide.chapter code, .slide.chapter-html code, .slide.problem-solution code, .slide.problem code, .slide.solution code {
615
625
  color: white;
616
626
  font-size: 0.8em;
617
627
  padding: 20px;
618
628
  background-color: rgba(0, 0, 0, 0.3);
619
629
  box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.33);
620
630
  text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); }
621
- .slide.cover footer, .slide.chapter footer, .slide.section footer, .slide.shout footer, .slide.chapter footer, .slide.chapter-html footer, .slide.problem-solution footer, .slide.problem footer, .slide.solution footer {
631
+ .slide.cover footer, .slide.section footer, .slide.shout footer, .slide.chapter footer, .slide.chapter-html footer, .slide.problem-solution footer, .slide.problem footer, .slide.solution footer {
622
632
  display: none; }
623
- .slide.cover, .slide.chapter, .slide.section {
633
+ .slide.cover, .slide.section {
624
634
  background: #000; }
625
- .slide.cover hgroup, .slide.chapter hgroup, .slide.section hgroup {
635
+ .slide.cover hgroup, .slide.section hgroup {
626
636
  background-color: transparent; }
627
- .slide.cover > div, .slide.chapter > div, .slide.section > div {
637
+ .slide.cover > div, .slide.section > div {
628
638
  position: absolute;
629
639
  top: 0;
630
640
  left: 0;
@@ -632,7 +642,7 @@ a {
632
642
  padding: 0;
633
643
  width: 1024px;
634
644
  height: 768px; }
635
- .slide.cover .left-33, .slide.chapter .left-33, .slide.section .left-33 {
645
+ .slide.cover .border-info, .slide.section .border-info, .slide.cover .left-33, .slide.section .left-33, .slide.cover .right-33, .slide.section .right-33, .slide.cover .left-50, .slide.section .left-50, .slide.cover .right-50, .slide.section .right-50 {
636
646
  padding: 60px 0px;
637
647
  font: 38px/1 'Open Sans', sans-serif;
638
648
  font-weight: lighter;
@@ -642,79 +652,86 @@ a {
642
652
  height: 768px;
643
653
  position: relative;
644
654
  box-sizing: border-box; }
645
- .slide.cover .left-33 h1, .slide.chapter .left-33 h1, .slide.section .left-33 h1 {
655
+ .slide.cover .border-info h1, .slide.section .border-info h1, .slide.cover .left-33 h1, .slide.section .left-33 h1, .slide.cover .right-33 h1, .slide.section .right-33 h1, .slide.cover .left-50 h1, .slide.section .left-50 h1, .slide.cover .right-50 h1, .slide.section .right-50 h1 {
646
656
  font: 500 46px/1 'Open Sans';
647
657
  display: block;
648
658
  margin-bottom: 0.6em; }
649
- .slide.cover .left-33 h2, .slide.chapter .left-33 h2, .slide.section .left-33 h2 {
659
+ .slide.cover .border-info h2, .slide.section .border-info h2, .slide.cover .left-33 h2, .slide.section .left-33 h2, .slide.cover .right-33 h2, .slide.section .right-33 h2, .slide.cover .left-50 h2, .slide.section .left-50 h2, .slide.cover .right-50 h2, .slide.section .right-50 h2 {
650
660
  font-size: 28px;
651
661
  margin-bottom: 0.6em;
652
662
  vertical-align: middle;
653
663
  line-height: 38px; }
654
- .slide.cover .left-33 p, .slide.chapter .left-33 p, .slide.section .left-33 p {
664
+ .slide.cover .border-info p, .slide.section .border-info p, .slide.cover .left-33 p, .slide.section .left-33 p, .slide.cover .right-33 p, .slide.section .right-33 p, .slide.cover .left-50 p, .slide.section .left-50 p, .slide.cover .right-50 p, .slide.section .right-50 p {
655
665
  padding-left: 50px;
656
666
  padding-right: 50px; }
657
- .slide.cover .left-33 .vcenter, .slide.chapter .left-33 .vcenter, .slide.section .left-33 .vcenter {
667
+ .slide.cover .border-info .vcenter, .slide.section .border-info .vcenter, .slide.cover .left-33 .vcenter, .slide.section .left-33 .vcenter, .slide.cover .right-33 .vcenter, .slide.section .right-33 .vcenter, .slide.cover .left-50 .vcenter, .slide.section .left-50 .vcenter, .slide.cover .right-50 .vcenter, .slide.section .right-50 .vcenter {
658
668
  height: 460px;
659
669
  display: -webkit-box;
660
670
  -webkit-box-orient: vertical;
661
671
  -webkit-box-pack: center; }
662
- .slide.cover .left-33 ul, .slide.chapter .left-33 ul, .slide.section .left-33 ul {
672
+ .slide.cover .border-info ul, .slide.section .border-info ul, .slide.cover .left-33 ul, .slide.section .left-33 ul, .slide.cover .right-33 ul, .slide.section .right-33 ul, .slide.cover .left-50 ul, .slide.section .left-50 ul, .slide.cover .right-50 ul, .slide.section .right-50 ul {
663
673
  width: 100%;
664
674
  margin: 0; }
665
- .slide.cover .left-33 ul li, .slide.chapter .left-33 ul li, .slide.section .left-33 ul li {
675
+ .slide.cover .border-info ul li, .slide.section .border-info ul li, .slide.cover .left-33 ul li, .slide.section .left-33 ul li, .slide.cover .right-33 ul li, .slide.section .right-33 ul li, .slide.cover .left-50 ul li, .slide.section .left-50 ul li, .slide.cover .right-50 ul li, .slide.section .right-50 ul li {
666
676
  padding: 0.5em 50px; }
667
- .slide.cover img, .slide.chapter img, .slide.section img, .slide.cover svg, .slide.chapter svg, .slide.section svg, .slide.cover video, .slide.chapter video, .slide.section video,
677
+ .slide.cover .left-33, .slide.section .left-33 {
678
+ width: 36%; }
679
+ .slide.cover .right-33, .slide.section .right-33 {
680
+ width: 36%;
681
+ left: 64%; }
682
+ .slide.cover .left-50, .slide.section .left-50 {
683
+ width: 50%; }
684
+ .slide.cover .right-50, .slide.section .right-50 {
685
+ width: 50%;
686
+ left: 50%; }
687
+ .slide.cover img, .slide.section img, .slide.cover svg, .slide.section svg, .slide.cover video, .slide.section video,
668
688
  .slide.cover object,
669
- .slide.chapter object,
670
- .slide.section object, .slide.cover canvas, .slide.chapter canvas, .slide.section canvas, .slide.cover iframe, .slide.chapter iframe, .slide.section iframe {
689
+ .slide.section object, .slide.cover canvas, .slide.section canvas, .slide.cover iframe, .slide.section iframe {
671
690
  position: absolute;
672
691
  top: 0;
673
692
  left: 0;
674
693
  z-index: -1; }
675
- .slide.cover iframe, .slide.chapter iframe, .slide.section iframe, .slide.cover img, .slide.chapter img, .slide.section img {
694
+ .slide.cover iframe, .slide.section iframe, .slide.cover img, .slide.section img {
676
695
  max-height: none;
677
696
  max-width: none; }
678
- .slide.cover iframe, .slide.chapter iframe, .slide.section iframe {
697
+ .slide.cover iframe, .slide.section iframe {
679
698
  z-index: 0; }
680
- .slide.cover.w img, .slide.chapter img, .slide.section img, .slide.cover.w svg, .slide.chapter svg, .slide.section svg, .slide.cover.w video, .slide.chapter video, .slide.section video,
699
+ .slide.cover.w img, .slide.cover.chapter img, .slide.chapter.section img, .slide.section img, .slide.cover.w svg, .slide.cover.chapter svg, .slide.chapter.section svg, .slide.section svg, .slide.cover.w video, .slide.cover.chapter video, .slide.chapter.section video, .slide.section video,
681
700
  .slide.cover.w object,
682
- .slide.chapter object,
683
- .slide.section object, .slide.cover.w canvas, .slide.chapter canvas, .slide.section canvas, .slide.cover.w iframe, .slide.chapter iframe, .slide.section iframe {
701
+ .slide.cover.chapter object,
702
+ .slide.chapter.section object,
703
+ .slide.section object, .slide.cover.w canvas, .slide.cover.chapter canvas, .slide.chapter.section canvas, .slide.section canvas, .slide.cover.w iframe, .slide.cover.chapter iframe, .slide.chapter.section iframe, .slide.section iframe {
684
704
  top: 50%;
685
705
  width: 100%;
686
- -webkit-transform: translateY(-50%);
687
706
  transform: translateY(-50%); }
688
- .slide.cover.w iframe, .slide.chapter iframe, .slide.section iframe, .slide.cover.w img, .slide.chapter img, .slide.section img {
707
+ .slide.cover.w iframe, .slide.cover.chapter iframe, .slide.chapter.section iframe, .slide.section iframe, .slide.cover.w img, .slide.cover.chapter img, .slide.chapter.section img, .slide.section img {
689
708
  max-height: none;
690
709
  max-width: none; }
691
- .slide.cover.w iframe, .slide.chapter iframe, .slide.section iframe {
710
+ .slide.cover.w iframe, .slide.cover.chapter iframe, .slide.chapter.section iframe, .slide.section iframe {
692
711
  z-index: 0; }
693
- .slide.cover.h img, .slide.h.chapter img, .slide.h.section img, .slide.cover.h svg, .slide.h.chapter svg, .slide.h.section svg, .slide.cover.h video, .slide.h.chapter video, .slide.h.section video,
712
+ .slide.cover.h img, .slide.h.section img, .slide.cover.h svg, .slide.h.section svg, .slide.cover.h video, .slide.h.section video,
694
713
  .slide.cover.h object,
695
- .slide.h.chapter object,
696
- .slide.h.section object, .slide.cover.h canvas, .slide.h.chapter canvas, .slide.h.section canvas, .slide.cover.h iframe, .slide.h.chapter iframe, .slide.h.section iframe {
714
+ .slide.h.section object, .slide.cover.h canvas, .slide.h.section canvas, .slide.cover.h iframe, .slide.h.section iframe {
697
715
  left: 50%;
698
716
  height: 100%;
699
- -webkit-transform: translateX(-50%);
700
717
  transform: translateX(-50%); }
701
- .slide.cover.h iframe, .slide.h.chapter iframe, .slide.h.section iframe, .slide.cover.h img, .slide.h.chapter img, .slide.h.section img {
718
+ .slide.cover.h iframe, .slide.h.section iframe, .slide.cover.h img, .slide.h.section img {
702
719
  max-height: none;
703
720
  max-width: none; }
704
- .slide.cover.h iframe, .slide.h.chapter iframe, .slide.h.section iframe {
721
+ .slide.cover.h iframe, .slide.h.section iframe {
705
722
  z-index: 0; }
706
- .slide.cover.w.h img, .slide.h.chapter img, .slide.h.section img, .slide.cover.w.h svg, .slide.h.chapter svg, .slide.h.section svg, .slide.cover.w.h video, .slide.h.chapter video, .slide.h.section video,
723
+ .slide.cover.w.h img, .slide.cover.h.chapter img, .slide.h.chapter.section img, .slide.h.section img, .slide.cover.w.h svg, .slide.cover.h.chapter svg, .slide.h.chapter.section svg, .slide.h.section svg, .slide.cover.w.h video, .slide.cover.h.chapter video, .slide.h.chapter.section video, .slide.h.section video,
707
724
  .slide.cover.w.h object,
708
- .slide.h.chapter object,
709
- .slide.h.section object, .slide.cover.w.h canvas, .slide.h.chapter canvas, .slide.h.section canvas, .slide.cover.w.h iframe, .slide.h.chapter iframe, .slide.h.section iframe {
725
+ .slide.cover.h.chapter object,
726
+ .slide.h.chapter.section object,
727
+ .slide.h.section object, .slide.cover.w.h canvas, .slide.cover.h.chapter canvas, .slide.h.chapter.section canvas, .slide.h.section canvas, .slide.cover.w.h iframe, .slide.cover.h.chapter iframe, .slide.h.chapter.section iframe, .slide.h.section iframe {
710
728
  top: 0;
711
729
  left: 0;
712
- -webkit-transform: none;
713
730
  transform: none; }
714
- .slide.cover.w.h iframe, .slide.h.chapter iframe, .slide.h.section iframe, .slide.cover.w.h img, .slide.h.chapter img, .slide.h.section img {
731
+ .slide.cover.w.h iframe, .slide.cover.h.chapter iframe, .slide.h.chapter.section iframe, .slide.h.section iframe, .slide.cover.w.h img, .slide.cover.h.chapter img, .slide.h.chapter.section img, .slide.h.section img {
715
732
  max-height: none;
716
733
  max-width: none; }
717
- .slide.cover.w.h iframe, .slide.h.chapter iframe, .slide.h.section iframe {
734
+ .slide.cover.w.h iframe, .slide.cover.h.chapter iframe, .slide.h.chapter.section iframe, .slide.h.section iframe {
718
735
  z-index: 0; }
719
736
  .slide.noheader hgroup {
720
737
  display: none; }
@@ -731,7 +748,6 @@ a {
731
748
  left: 128px;
732
749
  color: #FFF;
733
750
  font-size: 100px;
734
- -webkit-transform: translateY(-50%);
735
751
  transform: translateY(-50%);
736
752
  border-bottom: none;
737
753
  z-index: 1; }
@@ -744,7 +760,6 @@ a {
744
760
  right: 0;
745
761
  top: 50%;
746
762
  color: #FFF;
747
- -webkit-transform: translateY(-50%);
748
763
  transform: translateY(-50%);
749
764
  font-size: 100px;
750
765
  line-height: 1em;
@@ -807,41 +822,33 @@ a {
807
822
  background-color: rgba(70, 65, 60, 0.8); }
808
823
  .slide.img-place-middle img {
809
824
  margin-top: 50px; }
810
- .slide .col2 {
811
- position: relative;
812
- -webkit-columns: 2; }
813
- .slide .col2 li {
825
+ .slide .col, .slide .col2, .slide .col3, .slide .col4 {
826
+ position: relative; }
827
+ .slide .col li, .slide .col2 li, .slide .col3 li, .slide .col4 li {
814
828
  margin-left: 2em;
815
829
  text-indent: -2em; }
830
+ .slide .col img, .slide .col2 img, .slide .col3 img, .slide .col4 img {
831
+ position: initial;
832
+ transform: none; }
833
+ .slide .col2 {
834
+ -webkit-columns: 2;
835
+ -moz-columns: 2; }
816
836
  .slide .col3 {
817
- position: relative;
818
- -webkit-columns: 3; }
819
- .slide .col3 li {
820
- margin-left: 2em;
821
- text-indent: -2em; }
837
+ -webkit-columns: 3;
838
+ -moz-columns: 3; }
822
839
  .slide .col4 {
823
- position: relative;
824
- -webkit-columns: 4; }
825
- .slide .col4 li {
826
- margin-left: 2em;
827
- text-indent: -2em; }
828
- .slide .col4 img {
829
- position: initial;
830
- -webkit-transform: none; }
840
+ -webkit-columns: 4;
841
+ -moz-columns: 4; }
831
842
  .slide .place, .slide.img-place-middle img {
832
843
  position: absolute;
833
844
  top: 50%;
834
845
  left: 50%;
835
- -webkit-transform: translate(-50%, -50%);
836
846
  transform: translate(-50%, -50%); }
837
847
  .slide .place.t.l, .slide.img-place-middle img.t.l, .slide .place.t.r, .slide.img-place-middle img.t.r, .slide .place.b.r, .slide.img-place-middle img.b.r, .slide .place.b.l, .slide.img-place-middle img.b.l {
838
- -webkit-transform: none;
839
848
  transform: none; }
840
849
  .slide .place.t, .slide.img-place-middle img.t, .slide .place.b, .slide.img-place-middle img.b {
841
- -webkit-transform: translate(-50%, 0);
842
850
  transform: translate(-50%, 0); }
843
851
  .slide .place.l, .slide.img-place-middle img.l, .slide .place.r, .slide.img-place-middle img.r {
844
- -webkit-transform: translate(0, -50%);
845
852
  transform: translate(0, -50%); }
846
853
  .slide .place.t, .slide.img-place-middle img.t, .slide .place.t.l, .slide.img-place-middle img.t.l, .slide .place.t.r, .slide.img-place-middle img.t.r {
847
854
  top: 0; }
@@ -950,16 +957,16 @@ a {
950
957
  line-height: 1;
951
958
  font-size: 17px; }
952
959
 
953
- #slide-0-0 {
960
+ .slide.title {
954
961
  color: #46413C;
955
962
  font-size: 70px;
956
963
  font-weight: 700;
957
964
  font: 100 50px/1.4 'Open Sans',sans-serif; }
958
- #slide-0-0 hgroup {
965
+ .slide.title hgroup {
959
966
  background-color: #46413C; }
960
- #slide-0-0 dl {
967
+ .slide.title dl {
961
968
  font: 100 30px/1.6 'Open Sans', sans-serif; }
962
- #slide-0-0 > div {
969
+ .slide.title > div {
963
970
  position: absolute;
964
971
  top: 0;
965
972
  left: 0;
@@ -967,11 +974,11 @@ a {
967
974
  padding: 60px 96px 38px 78px;
968
975
  width: 850px;
969
976
  height: 670px; }
970
- #slide-0-0 footer {
977
+ .slide.title footer {
971
978
  display: block; }
972
- #slide-0-0 hgroup {
979
+ .slide.title hgroup {
973
980
  margin-bottom: 0; }
974
- #slide-0-0 hgroup h1, #slide-0-0 hgroup h2 {
981
+ .slide.title hgroup h1, .slide.title hgroup h2 {
975
982
  text-transform: none;
976
983
  color: white;
977
984
  float: none;
@@ -981,11 +988,11 @@ a {
981
988
  position: relative;
982
989
  left: 0;
983
990
  right: 0; }
984
- #slide-0-0 p {
991
+ .slide.title p {
985
992
  font: 30px/1.6 'Open Sans', sans-serif;
986
993
  color: #46413C;
987
994
  margin: 30px 0; }
988
- #slide-0-0 p.date {
995
+ .slide.title p.date {
989
996
  font-family: 'Open Sans', sans-serif;
990
997
  font-size: 16px; }
991
998
 
@@ -1012,13 +1019,11 @@ a {
1012
1019
  text-align: left;
1013
1020
  -webkit-transform-origin: 0 0;
1014
1021
  transform-origin: 0 0;
1015
- -webkit-transform: scale(0.5);
1016
1022
  transform: scale(0.5); } }
1017
1023
  @media screen and (max-width: 1180px) {
1018
1024
  .list .slide {
1019
1025
  top: 526px;
1020
1026
  margin: -526px -718px 0 0;
1021
- -webkit-transform: scale(0.25);
1022
1027
  transform: scale(0.25); } }
1023
1028
  @media screen {
1024
1029
  .list .slide:before {
@@ -1032,13 +1037,11 @@ a {
1032
1037
  content: '';
1033
1038
  -webkit-transform-origin: 0 0;
1034
1039
  transform-origin: 0 0;
1035
- -webkit-transform: scale(2);
1036
1040
  transform: scale(2); } }
1037
1041
  @media screen and (max-width: 1180px) {
1038
1042
  .list .slide:before {
1039
1043
  width: 256px;
1040
1044
  height: 192px;
1041
- -webkit-transform: scale(4);
1042
1045
  transform: scale(4); } }
1043
1046
  @media screen {
1044
1047
  .list .slide:after {
@@ -1050,7 +1053,6 @@ a {
1050
1053
  width: 512px;
1051
1054
  -webkit-transform-origin: 0 0;
1052
1055
  transform-origin: 0 0;
1053
- -webkit-transform: scale(2);
1054
1056
  transform: scale(2); } }
1055
1057
  @media screen {
1056
1058
  .list .slide:hover:before {
@@ -1067,7 +1069,7 @@ a {
1067
1069
  left: 0;
1068
1070
  z-index: 2;
1069
1071
  content: ''; }
1070
- .list .slide.cover:after, .list .slide.chapter:after, .list .slide.section:after, .list .slide.shout:after, .list .slide.chapter:after, .list .slide.chapter-html:after, .list .slide.problem-solution:after, .list .slide.problem:after, .list .slide.solution:after {
1072
+ .list .slide.cover:after, .list .slide.section:after, .list .slide.shout:after, .list .slide.chapter:after, .list .slide.chapter-html:after, .list .slide.problem-solution:after, .list .slide.problem:after, .list .slide.solution:after {
1071
1073
  content: attr(data-slide) "/" attr(data-slides); }
1072
1074
  .list .slide.disabled {
1073
1075
  opacity: 0.8;
@@ -1087,7 +1089,6 @@ a {
1087
1089
  color: #F5F5F5;
1088
1090
  background: rgba(255, 255, 255, 0.4);
1089
1091
  z-index: 1;
1090
- /* -webkit-transform: rotate(45deg); */
1091
1092
  text-shadow: 5px 5px 20px rgba(0, 0, 0, 0.5);
1092
1093
  text-transform: uppercase; }
1093
1094
 
@@ -1108,38 +1109,35 @@ a {
1108
1109
  position: absolute;
1109
1110
  top: 0;
1110
1111
  left: 0;
1111
- margin-left: 150%; }
1112
+ display: none; }
1112
1113
  .full .slide .next {
1113
1114
  visibility: hidden; }
1114
1115
  .full .slide .next.active {
1115
1116
  visibility: visible; }
1116
1117
  .full .slide:target {
1117
- margin: 0; }
1118
- .full .slide.shout.right h1, .full .slide.right.chapter h1, .full .slide.right.chapter-html h1, .full .slide.right.problem-solution h1, .full .slide.right.problem h1, .full .slide.right.solution h1, .full .slide.shout.right h2, .full .slide.right.chapter h2, .full .slide.right.chapter-html h2, .full .slide.right.problem-solution h2, .full .slide.right.problem h2, .full .slide.right.solution h2, .full .slide.shout.up h1, .full .slide.up.chapter h1, .full .slide.up.chapter-html h1, .full .slide.up.problem-solution h1, .full .slide.up.problem h1, .full .slide.up.solution h1, .full .slide.shout.up h2, .full .slide.up.chapter h2, .full .slide.up.chapter-html h2, .full .slide.up.problem-solution h2, .full .slide.up.problem h2, .full .slide.up.solution h2, .full .slide.shout.left h1, .full .slide.chapter h1, .full .slide.left.chapter-html h1, .full .slide.chapter-html.chapter h1, .full .slide.left.problem-solution h1, .full .slide.problem-solution.chapter h1, .full .slide.chapter.problem h1, .full .slide.chapter.solution h1, .full .slide.left.problem h1, .full .slide.left.solution h1, .full .slide.shout.left h2, .full .slide.chapter h2, .full .slide.left.chapter-html h2, .full .slide.chapter-html.chapter h2, .full .slide.left.problem-solution h2, .full .slide.problem-solution.chapter h2, .full .slide.chapter.problem h2, .full .slide.chapter.solution h2, .full .slide.left.problem h2, .full .slide.left.solution h2, .full .slide.shout.down h1, .full .slide.down.chapter h1, .full .slide.down.chapter-html h1, .full .slide.down.problem-solution h1, .full .slide.down.problem h1, .full .slide.down.solution h1, .full .slide.shout.down h2, .full .slide.down.chapter h2, .full .slide.down.chapter-html h2, .full .slide.down.problem-solution h2, .full .slide.down.problem h2, .full .slide.down.solution h2 {
1118
+ display: block; }
1119
+ .full .slide.shout.right h1, .full .slide.right.chapter h1, .full .slide.right.chapter-html h1, .full .slide.right.problem-solution h1, .full .slide.right.problem h1, .full .slide.right.solution h1, .full .slide.shout.right h2, .full .slide.right.chapter h2, .full .slide.right.chapter-html h2, .full .slide.right.problem-solution h2, .full .slide.right.problem h2, .full .slide.right.solution h2, .full .slide.shout.up h1, .full .slide.up.chapter h1, .full .slide.up.chapter-html h1, .full .slide.up.problem-solution h1, .full .slide.up.problem h1, .full .slide.up.solution h1, .full .slide.shout.up h2, .full .slide.up.chapter h2, .full .slide.up.chapter-html h2, .full .slide.up.problem-solution h2, .full .slide.up.problem h2, .full .slide.up.solution h2, .full .slide.shout.left h1, .full .slide.left.chapter h1, .full .slide.left.chapter-html h1, .full .slide.left.problem-solution h1, .full .slide.left.problem h1, .full .slide.left.solution h1, .full .slide.shout.left h2, .full .slide.left.chapter h2, .full .slide.left.chapter-html h2, .full .slide.left.problem-solution h2, .full .slide.left.problem h2, .full .slide.left.solution h2, .full .slide.shout.down h1, .full .slide.down.chapter h1, .full .slide.down.chapter-html h1, .full .slide.down.problem-solution h1, .full .slide.down.problem h1, .full .slide.down.solution h1, .full .slide.shout.down h2, .full .slide.down.chapter h2, .full .slide.down.chapter-html h2, .full .slide.down.problem-solution h2, .full .slide.down.problem h2, .full .slide.down.solution h2 {
1119
1120
  opacity: 0;
1120
- transition: all 0.7s ease-out; }
1121
- .full .slide.shout.right:target h2, .full .slide.right.chapter:target h2, .full .slide.right.chapter-html:target h2, .full .slide.right.problem-solution:target h2, .full .slide.right.problem:target h2, .full .slide.right.solution:target h2, .full .slide.shout.up:target h2, .full .slide.up.chapter:target h2, .full .slide.up.chapter-html:target h2, .full .slide.up.problem-solution:target h2, .full .slide.up.problem:target h2, .full .slide.up.solution:target h2, .full .slide.shout.left:target h2, .full .slide.chapter:target h2, .full .slide.left.chapter-html:target h2, .full .slide.chapter-html.chapter:target h2, .full .slide.left.problem-solution:target h2, .full .slide.problem-solution.chapter:target h2, .full .slide.chapter.problem:target h2, .full .slide.chapter.solution:target h2, .full .slide.left.problem:target h2, .full .slide.left.solution:target h2, .full .slide.shout.down:target h2, .full .slide.down.chapter:target h2, .full .slide.down.chapter-html:target h2, .full .slide.down.problem-solution:target h2, .full .slide.down.problem:target h2, .full .slide.down.solution:target h2 {
1121
+ transition: all 0.5s ease-out; }
1122
+ .full .slide.shout.right:target h2, .full .slide.right.chapter:target h2, .full .slide.right.chapter-html:target h2, .full .slide.right.problem-solution:target h2, .full .slide.right.problem:target h2, .full .slide.right.solution:target h2, .full .slide.shout.up:target h2, .full .slide.up.chapter:target h2, .full .slide.up.chapter-html:target h2, .full .slide.up.problem-solution:target h2, .full .slide.up.problem:target h2, .full .slide.up.solution:target h2, .full .slide.shout.left:target h2, .full .slide.left.chapter:target h2, .full .slide.left.chapter-html:target h2, .full .slide.left.problem-solution:target h2, .full .slide.left.problem:target h2, .full .slide.left.solution:target h2, .full .slide.shout.down:target h2, .full .slide.down.chapter:target h2, .full .slide.down.chapter-html:target h2, .full .slide.down.problem-solution:target h2, .full .slide.down.problem:target h2, .full .slide.down.solution:target h2 {
1122
1123
  opacity: 1;
1123
- -webkit-transform: translateX(0) translateY(-50%);
1124
1124
  transform: translateX(0) translateY(-50%); }
1125
1125
  .full .slide.shout.right h2, .full .slide.right.chapter h2, .full .slide.right.chapter-html h2, .full .slide.right.problem-solution h2, .full .slide.right.problem h2, .full .slide.right.solution h2 {
1126
- -webkit-transform: translateX(-100%) translateY(-50%);
1127
1126
  transform: translateX(-100%) translateY(-50%); }
1128
- .full .slide.shout.left h2, .full .slide.chapter h2, .full .slide.left.chapter-html h2, .full .slide.chapter-html.chapter h2, .full .slide.left.problem-solution h2, .full .slide.problem-solution.chapter h2, .full .slide.chapter.problem h2, .full .slide.chapter.solution h2, .full .slide.left.problem h2, .full .slide.left.solution h2 {
1129
- -webkit-transform: translateX(100%) translateY(-50%);
1127
+ .full .slide.shout.left h2, .full .slide.left.chapter h2, .full .slide.left.chapter-html h2, .full .slide.left.problem-solution h2, .full .slide.left.problem h2, .full .slide.left.solution h2 {
1130
1128
  transform: translateX(100%) translateY(-50%); }
1131
1129
  .full .slide.shout.up h2, .full .slide.up.chapter h2, .full .slide.up.chapter-html h2, .full .slide.up.problem-solution h2, .full .slide.up.problem h2, .full .slide.up.solution h2 {
1132
- -webkit-transform: translateX(0) translateY(100%);
1133
1130
  transform: translateX(0) translateY(100%); }
1134
1131
  .full .slide.shout.down h2, .full .slide.down.chapter h2, .full .slide.down.chapter-html h2, .full .slide.down.problem-solution h2, .full .slide.down.problem h2, .full .slide.down.solution h2 {
1135
- -webkit-transform: translateX(0) translateY(-100%);
1136
1132
  transform: translateX(0) translateY(-100%); }
1137
1133
  .full .inactive, .full .current {
1138
- -webkit-transition: opacity 0.5s ease-in-out 0.0s; }
1134
+ -webkit-transition: opacity 0.5s ease-in-out 0.0s;
1135
+ -moz-transition: opacity 0.5s ease-in-out 0.0s; }
1139
1136
  .full .inactive {
1140
1137
  opacity: 0; }
1141
1138
  .full .visited {
1142
- -webkit-transition: opacity 0.5s ease-in-out 0.3s; }
1139
+ -webkit-transition: opacity 0.5s ease-in-out 0.3s;
1140
+ -moz-transition: opacity 0.5s ease-in-out 0.3s; }
1143
1141
  .full .visited .hide-visited {
1144
1142
  display: none; }
1145
1143
  .full .visited.hide-visited {
@@ -1151,7 +1149,8 @@ a {
1151
1149
  .full li.current:before {
1152
1150
  content: '\2023\00A0\00A0\2009'; }
1153
1151
  .full .border-separated li {
1154
- -webkit-transition: all 0.5s; }
1152
+ -webkit-transition: all 0.5s;
1153
+ -moz-transition: all 0.5s; }
1155
1154
  .full .border-separated li.inactive {
1156
1155
  margin-left: -400px; }
1157
1156
  .full .border-separated li.current, .full .border-separated li.visited {
@@ -1170,7 +1169,6 @@ a {
1170
1169
  height: 8px;
1171
1170
  padding-left: -10px;
1172
1171
  background: url(../images/progress-grayDark.svg) 100% 0 no-repeat;
1173
- -webkit-background-clip: content-box;
1174
1172
  background-clip: content-box;
1175
1173
  transition: width 0.3s linear; }
1176
1174
  .full .box.shadow {
@@ -1178,6 +1176,5 @@ a {
1178
1176
  border-radius: 3px; }
1179
1177
  .full .disabled {
1180
1178
  display: none; } }
1181
- @page {
1182
- margin: 0;
1183
- size: 1024px 768px; }
1179
+
1180
+ /*# sourceMappingURL=screen.css.map */