slideoff 0.2 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
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 */