merge changes from Plailect/Guide

This commit is contained in:
Plailect 2017-09-30 00:31:26 -04:00 committed by Plailect
parent 37e01a622f
commit f4b9a48934
No known key found for this signature in database
GPG Key ID: F8A415C5EA602A41
221 changed files with 9967 additions and 8844 deletions

13
.editorconfig Normal file
View File

@ -0,0 +1,13 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = false
[*.md]
trim_trailing_whitespace = false

5
.gitattributes vendored Normal file
View File

@ -0,0 +1,5 @@
_assets/css/vendor/* linguist-vendored
_assets/js/plugins/* linguist-vendored
_assets/js/vendor/* linguist-vendored
assets/fonts/* linguist-vendored
assets/js/vendor/* linguist-vendored

4
.gitignore vendored
View File

@ -9,8 +9,8 @@ _asset_bundler_cache
_site
codekit-config.json
example/_site
Gemfile.lock
node_modules
npm-debug.log*
vendor
/vendor
torrents
Gemfile.lock

1
CNAME
View File

@ -1 +0,0 @@
dev.3ds.guide

View File

@ -1,2 +1,3 @@
source "https://rubygems.org"
gem 'jekyll-redirect-from'
gemspec

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2016 Michael Rose
Copyright (c) 2017 Michael Rose
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

76
Rakefile Normal file
View File

@ -0,0 +1,76 @@
require "bundler/gem_tasks"
require "jekyll"
require "listen"
def listen_ignore_paths(base, options)
[
/_config\.ya?ml/,
/_site/,
/\.jekyll-metadata/
]
end
def listen_handler(base, options)
site = Jekyll::Site.new(options)
Jekyll::Command.process_site(site)
proc do |modified, added, removed|
t = Time.now
c = modified + added + removed
n = c.length
relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s }
print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ")
begin
Jekyll::Command.process_site(site)
puts "regenerated in #{Time.now - t} seconds."
rescue => e
puts "error:"
Jekyll.logger.warn "Error:", e.message
Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
end
end
end
task :preview do
base = Pathname.new('.').expand_path
options = {
"source" => base.join('test').to_s,
"destination" => base.join('test/_site').to_s,
"force_polling" => false,
"serving" => true,
"theme" => "minimal-mistakes-jekyll"
}
options = Jekyll.configuration(options)
ENV["LISTEN_GEM_DEBUGGING"] = "1"
listener = Listen.to(
base.join("_data"),
base.join("_includes"),
base.join("_layouts"),
base.join("_sass"),
base.join("assets"),
options["source"],
:ignore => listen_ignore_paths(base, options),
:force_polling => options['force_polling'],
&(listen_handler(base, options))
)
begin
listener.start
Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'"
unless options['serving']
trap("INT") do
listener.stop
puts " Halting auto-regeneration."
exit 0
end
loop { sleep 1000 }
end
rescue ThreadError
# You pressed Ctrl-C, oh my!
end
Jekyll::Commands::Serve.process(options)
end

View File

@ -5,6 +5,8 @@
# For technical reasons, this file is *NOT* reloaded automatically when you use
# `jekyll serve`. If you change this file, please restart the server process.
minimal_mistakes_skin : "nord"
# Site Settings
locale : "en-US"
title : "3DS devGuide"
@ -207,7 +209,7 @@ sass:
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
# Plugins
gems:
plugins:
- jekyll-paginate
- jekyll-sitemap
- jekyll-gist
@ -268,6 +270,7 @@ defaults:
values:
layout: single
author_profile: false
sidebar: true
- scope:
path: "_pages/af_ZA"
type: pages

12
_data/navigation.yml Normal file
View File

@ -0,0 +1,12 @@
# main links
main:
- title: "Quick-Start Guide"
url: https://mmistakes.github.io/minimal-mistakes/docs/quick-start-guide/
# - title: "About"
# url: https://mmistakes.github.io/minimal-mistakes/about/
# - title: "Sample Posts"
# url: /year-archive/
# - title: "Sample Collections"
# url: /collection-archive/
# - title: "Sitemap"
# url: /sitemap/

View File

@ -2,24 +2,34 @@
main:
-
title: devGuide
url: /
-
title: FAQ
-
title: Troubleshooting
url: faq
-
title: Donations
url: donations
-
title: Credits
-
title: A9LH to B9S
-
title: GodMode9 Usage
-
title: Site Navigation
url: credits
-
title: Updating B9S
url: updating-b9s
-
title: A9LH to B9S
url: a9lh-to-b9s
-
title: Troubleshooting
url: troubleshooting
-
title: GodMode9 Usage
url: godmode9-usage
-
title: Site Navigation
url: site-navigation
-
title: Uninstall CFW
url: uninstall-cfw
bottom:
-
title: For support in English, ask for help at <a href="http://webchat.freenode.net/?channels=%23Cakey&uio=d4">#Cakey on Freenode IRC</a>.
@ -30,3 +40,49 @@ footer:
title: Source
-
title: Site Navigation
sidebar_title:
-
title: Overall Progress
sidebar_pages:
-
title: Home
url: /
-
title: Get Started
url: get-started
-
title: 0.23.5 Install
url: 0.23.5-install
-
title: 0.23.5 Install (CIAs)
url: 0.23.5-install-(cias)
-
title: 0.23.5 Install (CSU)
url: 0.23.5-install-(csu)
-
title: ntrboot
url: ntrboot
-
title: Flashing ntrboot (3DS Single System)
url: flashing-ntrboot-(3ds-single-system)
-
title: Flashing ntrboot (3DS Multi System)
url: flashing-ntrboot-(3ds-multi-system)
-
title: Flashing ntrboot (DSi)
url: flashing-ntrboot-(dsi)
-
title: Flashing ntrboot (NDS)
url: flashing-ntrboot-(nds)
-
title: Flashing ntrboot (Powersaves)
url: flashing-ntrboot-(powersaves)
-
title: Installing boot9strap (Browser)
url: installing-boot9strap-(browser)
-
title: Installing boot9strap (ntrboot)
url: installing-boot9strap-(ntrboot)
-
title: Finalizing Setup
url: finalizing-setup

View File

@ -2,7 +2,7 @@
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');
ga('send', 'pageview');

View File

@ -0,0 +1,7 @@
<!--
<li>
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
<i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
</a>
</li>
-->

View File

@ -30,16 +30,14 @@
<ul class="author__urls social-icons">
{% if author.location %}
<li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
<i class="fa fa-fw fa-map-marker" aria-hidden="true"></i>
<span itemprop="name"> {{ author.location }} </span>
<i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
</li>
{% endif %}
{% if author.uri %}
<li>
<a href="{{ author.uri }}" itemprop="url">
<i class="fa fa-fw fa-chain" aria-hidden="true"></i>
{{ site.data.ui-text[site.locale].website_label | default: "Website" }}
<i class="fa fa-fw fa-chain" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }}
</a>
</li>
{% endif %}
@ -47,145 +45,205 @@
{% if author.email %}
<li>
<a href="mailto:{{ author.email }}">
<i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i>
<meta itemprop="email" content="{{ author.email }}" />
{{ site.data.ui-text[site.locale].email_label | default: "Email" }}
<i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }}
</a>
</li>
{% endif %}
{% if author.keybase %}
<li><a href="https://keybase.io/{{ author.keybase }} " itemprop="sameAs">
<i class="fa fa-fw fa-key" aria-hidden="true"></i>
Keybase
</a></li>
<li>
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs">
<i class="fa fa-fw fa-key" aria-hidden="true"></i> Keybase
</a>
</li>
{% endif %}
{% if author.twitter %}
<li><a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs">
<i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i>
Twitter
</a></li>
<li>
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs">
<i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter
</a>
</li>
{% endif %}
{% if author.facebook %}
<li><a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs">
<i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i>
Facebook
</a></li>
<li>
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs">
<i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook
</a>
</li>
{% endif %}
{% if author.google_plus %}
<li><a href="https://plus.google.com/+{{ author.google_plus }}" itemprop="sameAs">
<i class="fa fa-fw fa-google-plus-square" aria-hidden="true"></i>
Google+
</a></li>
<li>
<a href="https://plus.google.com/+{{ author.google_plus }}" itemprop="sameAs">
<i class="fa fa-fw fa-google-plus-square" aria-hidden="true"></i> Google+
</a>
</li>
{% endif %}
{% if author.linkedin %}
<li><a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs">
<i class="fa fa-fw fa-linkedin-square" aria-hidden="true"></i>
LinkedIn
</a></li>
<li>
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs">
<i class="fa fa-fw fa-linkedin-square" aria-hidden="true"></i> LinkedIn
</a>
</li>
{% endif %}
{% if author.xing %}
<li><a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs">
<i class="fa fa-fw fa-xing-square" aria-hidden="true"></i>
XING
</a></li>
<li>
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs">
<i class="fa fa-fw fa-xing-square" aria-hidden="true"></i> XING
</a>
</li>
{% endif %}
{% if author.instagram %}
<li><a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs">
<i class="fa fa-fw fa-instagram" aria-hidden="true"></i>
Instagram
</a></li>
<li>
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs">
<i class="fa fa-fw fa-instagram" aria-hidden="true"></i> Instagram
</a>
</li>
{% endif %}
{% if author.tumblr %}
<li><a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs">
<i class="fa fa-fw fa-tumblr-square" aria-hidden="true"></i>
Tumblr
</a></li>
<li>
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs">
<i class="fa fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr
</a>
</li>
{% endif %}
{% if author.bitbucket %}
<li><a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs">
<i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i>
Bitbucket
</a></li>
<li>
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs">
<i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket
</a>
</li>
{% endif %}
{% if author.github %}
<li><a href="https://github.com/{{ author.github }}" itemprop="sameAs">
<i class="fa fa-fw fa-github" aria-hidden="true"></i>
Github
</a></li>
<li>
<a href="https://github.com/{{ author.github }}" itemprop="sameAs">
<i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
</a>
</li>
{% endif %}
{% if author.gitlab %}
<li>
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs">
<i class="fa fa-fw fa-gitlab" aria-hidden="true"></i> Gitlab
</a>
</li>
{% endif %}
{% if author.stackoverflow %}
<li><a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs">
<i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i>
Stackoverflow
</a></li>
<li>
<a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs">
<i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow
</a>
</li>
{% endif %}
{% if author.lastfm %}
<li><a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs">
<i class="fa fa-fw fa-lastfm-square" aria-hidden="true"></i>
Last.fm
</a></li>
<li>
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs">
<i class="fa fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm
</a>
</li>
{% endif %}
{% if author.dribbble %}
<li><a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs">
<i class="fa fa-fw fa-dribbble" aria-hidden="true"></i>
Dribbble
</a></li>
<li>
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs">
<i class="fa fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble
</a>
</li>
{% endif %}
{% if author.pinterest %}
<li><a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs">
<i class="fa fa-fw fa-pinterest" aria-hidden="true"></i>
Pinterest
</a></li>
<li>
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs">
<i class="fa fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest
</a>
</li>
{% endif %}
{% if author.foursquare %}
<li><a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs">
<i class="fa fa-fw fa-foursquare" aria-hidden="true"></i>
Foursquare
</a></li>
<li>
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs">
<i class="fa fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare
</a>
</li>
{% endif %}
{% if author.steam %}
<li><a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs">
<i class="fa fa-fw fa-steam-square" aria-hidden="true"></i>
Steam
</a></li>
<li>
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs">
<i class="fa fa-fw fa-steam-square" aria-hidden="true"></i> Steam
</a>
</li>
{% endif %}
{% if author.youtube %}
<li><a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs">
<i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i>
YouTube
</a></li>
{% if author.youtube contains "://" %}
<li>
<a href="{{ author.youtube }}" itemprop="sameAs">
<i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube
</a>
</li>
{% else author.youtube %}
<li>
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs">
<i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube
</a>
</li>
{% endif %}
{% endif %}
{% if author.soundcloud %}
<li><a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs">
<i class="fa fa-fw fa-soundcloud" aria-hidden="true"></i>
Soundcloud
</a></li>
<li>
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs">
<i class="fa fa-fw fa-soundcloud" aria-hidden="true"></i> Soundcloud
</a>
</li>
{% endif %}
{% if author.weibo %}
<li><a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs">
<i class="fa fa-fw fa-weibo" aria-hidden="true"></i>
Weibo
</a></li>
<li>
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs">
<i class="fa fa-fw fa-weibo" aria-hidden="true"></i> Weibo
</a>
</li>
{% endif %}
{% if author.flickr %}
<li><a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs">
<i class="fa fa-fw fa-flickr" aria-hidden="true"></i>
Flickr
</a></li>
<li>
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs">
<i class="fa fa-fw fa-flickr" aria-hidden="true"></i> Flickr
</a>
</li>
{% endif %}
{% if author.codepen %}
<li><a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs">
<i class="fa fa-fw fa-codepen" aria-hidden="true"></i>
CodePen
</a></li>
<li>
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs">
<i class="fa fa-fw fa-codepen" aria-hidden="true"></i> CodePen
</a>
</li>
{% endif %}
{% if author.vine %}
<li><a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs">
<i class="fa fa-fw fa-vine" aria-hidden="true"></i>
Vine
</a></li>
<li>
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs">
<i class="fa fa-fw fa-vine" aria-hidden="true"></i> Vine
</a>
</li>
{% endif %}
{% include author-profile-custom-links.html %}
</ul>
</div>
</div>

View File

@ -1,4 +1,4 @@
{% case site.categories.type %}
{% case site.category_archive.type %}
{% when "liquid" %}
{% assign path_type = "#" %}
{% when "jekyll-archives" %}
@ -9,7 +9,7 @@
{% assign path_type = nil %}
{% assign crumb_path = '/' %}
{% else %}
{% assign crumb_path = site.categories.path %}
{% assign crumb_path = site.category_archive.path %}
{% endif %}
<nav class="breadcrumbs">

View File

@ -11,7 +11,7 @@
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
{% endcomment %}
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign category_hashes = (page_categories | split: ',' | sort:0) %}
{% assign category_hashes = page_categories | split: ',' | sort %}
<p class="page__taxonomy">
<strong><i class="fa fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>

View File

@ -1,6 +1,6 @@
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
<div class="comment__avatar-wrapper">
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80">
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80" alt="{{ include.name }}">
</div>
<div class="comment__content-wrapper">
<h3 class="comment__author" itemprop="author" itemscope itemtype="http://schema.org/Person">

View File

@ -9,5 +9,5 @@
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>
<noscript>Please enable JavaScript to view the comments powered by [Discourse](http://forum.beta-europe.org/c/beta/website).</a></noscript>
<noscript>Please enable JavaScript to view the comments powered by <a href="https://www.discourse.org/">Discourse.</a></noscript>
{% endif %}

View File

@ -1,22 +1,15 @@
{% if site.comments.disqus.shortname %}
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = '{{ site.comments.disqus.shortname }}';
/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
<script>
var disqus_config = function () {
this.page.url = "{{ page.url | absolute_url }}"; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = "{{ page.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
/* * * DON'T EDIT BELOW THIS LINE * * */
(function () {
var s = document.createElement('script'); s.async = true;
s.type = 'text/javascript';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
{% endif %}

View File

@ -1,18 +1,16 @@
{% if site.comments.provider and page.comments %}
{% case site.comments.provider %}
{% when "disqus" %}
{% case site.comments.provider %}
{% when "disqus" %}
{% include /comments-providers/disqus.html %}
{% when "discourse" %}
{% when "discourse" %}
{% include /comments-providers/discourse.html %}
{% when "facebook" %}
{% when "facebook" %}
{% include /comments-providers/facebook.html %}
{% when "google-plus" %}
{% when "google-plus" %}
{% include /comments-providers/google-plus.html %}
{% when "staticman" %}
{% when "staticman" %}
{% include /comments-providers/staticman.html %}
{% when "custom" %}
{% when "custom" %}
{% include /comments-providers/custom.html %}
{% endcase %}
{% endcase %}
{% endif %}

View File

@ -1,6 +1,9 @@
<div class="page__comments">
{% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
{% case site.comments.provider %}
{% when "discourse" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="discourse-comments"></section>
{% when "disqus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section id="disqus_thread"></section>
@ -9,7 +12,19 @@
<section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
{% when "google-plus" %}
<h4 class="page__comments-title">{{ comments_label }}</h4>
<section class="g-comments" data-href="{{ page.url | absolute_url }}" data-first_party_property="BLOGGER" data-view_type="FILTERED_POSTMOD">Loading Google+ Comments ...</section>
<section id="g-comments" class="g-comments">Loading Google+ Comments ...</section>
<script>
function initComment() {
gapi.comments.render("g-comments", {
href: "{{ page.url | absolute_url }}",
width: "624",
first_party_property: "BLOGGER",
view_type: "FILTERED_POSTMOD"
})
}
</script>
<script async type="text/javascript" src="https://apis.google.com/js/plusone.js" onload="initComment()" />
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>-->
{% when "staticman" %}
<section id="static-comments">
{% if site.repository and site.staticman.branch %}
@ -32,6 +47,7 @@
<!-- End static comments -->
<!-- Start new comment form -->
<div class="page__comments-form">
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
@ -68,9 +84,10 @@
</p>
<!-- End comment form alert messaging -->
<fieldset>
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
</fieldset>
</form>
</div>
<!-- End new comment form -->
{% endif %}
</section>

View File

@ -1,5 +1,5 @@
{% if include.id %}
{% assign feature_row = page.[include.id] %}
{% assign feature_row = page[include.id] %}
{% else %}
{% assign feature_row = page.feature_row %}
{% endif %}

View File

@ -1,5 +1,5 @@
{% if include.id %}
{% assign gallery = page.[include.id] %}
{% assign gallery = page[include.id] %}
{% else %}
{% assign gallery = page.gallery %}
{% endif %}

View File

@ -18,7 +18,7 @@
<!-- Uniq -->
{% assign __names = __names | sort %}
{% for name in __names | sort %}
{% for name in __names %}
<!-- If not equal to previous then it must be unique as sorted -->
{% unless name == previous %}

View File

@ -2,7 +2,7 @@
{% include seo.html %}
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ base_path }}/feed.xml{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | absolute_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
@ -16,4 +16,28 @@
<!-- For all browsers -->
<link rel="stylesheet" href="{{ '/assets/css/main.css' | absolute_url }}">
<meta http-equiv="cleartype" content="on">
<!--[if lte IE 9]>
<style>
/* old IE unsupported flexbox fixes */
.greedy-nav .site-title {
padding-right: 3em;
}
.greedy-nav button {
position: absolute;
top: 0;
right: 0;
height: 100%;
}
</style>
<![endif]-->
{% if site.head_scripts %}
{% for script in site.head_scripts %}
{% if script contains "://" %}
{% capture script_path %}{{ script }}{% endcapture %}
{% else %}
{% capture script_path %}{{ script | absolute_url }}{% endcapture %}
{% endif %}
<script src="{{ script_path }}"></script>
{% endfor %}
{% endif %}

View File

@ -11,16 +11,13 @@
{% else %}
{% assign locale_var = locale | prepend:'/' | append:'/' %}
{% endif %}
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ domain }}{{ locale_var }}">{{ titles[0].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}faq">{{ titles[1].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}donations">{{ titles[3].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}credits">{{ titles[4].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}updating-b9s">{{ titles[8].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}a9lh-to-b9s">{{ titles[5].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}troubleshooting">{{ titles[2].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}godmode9-usage">{{ titles[6].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}uninstall-cfw">{{ titles[9].title }}</a></li>
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}site-navigation">{{ titles[7].title }}</a></li>
{% for link in site.data.navigation[locale].main %}
{% if link.url == "/" %}
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ domain }}{{ locale_var }}">{{ link.title }}</a></li>
{% else %}
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}{{ link.url }}">{{ link.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
<ul class="hidden-links links-menu hidden"></ul>
<ul class="hidden-links lang-menu hidden">
@ -66,8 +63,8 @@
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/cs_CZ/{{ langless_url }}">Čeština</a></li> -->
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/en_PT/{{ langless_url }}">Pirate English</a></li> -->
</ul>
<button class="lang-selector"><div class="langicon"><i class="fa fa-language fa-lg" aria-hidden="true"></i></div></button>
<button class="nav-selector" id="toggle-nav"><div class="navicon"></div></button>
<button class="navsel"><div class="navicon"></div></button>
<button class="langsel"><div class="langicon"><i class="fa fa-language fa-lg" aria-hidden="true"></i></div></button>
</nav>
</div>
</div>

View File

@ -1,47 +1,30 @@
{% assign navigation = site.data.navigation[include.nav] %}
{% assign split_path = page.path | split: "/" %}
{% assign locale = split_path[1] %}
{% if locale == 'en_US' %}
{% assign locale_var = '/' %}
{% else %}
{% assign locale_var = locale | prepend:'/' | append:'/' %}
{% endif %}
{% assign title = site.data.navigation[locale].sidebar_title %}
{% assign navigation = site.data.navigation[locale].sidebar_pages %}
<nav class="nav__list">
{% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
<input id="ac-toc" name="accordion-toc" type="checkbox" />
<label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
<ul class="nav__items">
{% for nav in navigation %}
<li>
{% if nav.url %}
{% comment %} internal/external URL check {% endcomment %}
{% if nav.url contains "://" %}
{% assign domain = "" %}
<span class="nav__sub-title">{{ title[0].title }}</span>
<ol>
{% for link in site.data.navigation[locale].sidebar_pages %}
{% if link.url == "/" %}
<li style="display: none;" data-name="home"><a href='{{ domain }}{{ locale_var }}'>{{ link.title }}</a></li>
{% else %}
{% assign domain = site.url | append: site.baseurl %}
<li style="display: none;" data-name="{{ site.data.navigation.en_US.sidebar_pages[forloop.index0].url }}"><a href='{{ domain }}{{ locale_var }}{{ link.url }}'>{{ link.title }}</a></li>
{% endif %}
<a href="{{ domain }}{{ nav.url }}"><span class="nav__sub-title">{{ nav.title }}</span></a>
{% else %}
<span class="nav__sub-title">{{ nav.title }}</span>
{% endif %}
{% if nav.children != null %}
<ul>
{% for child in nav.children %}
{% comment %} internal/external URL check {% endcomment %}
{% if child.url contains "://" %}
{% assign domain = "" %}
{% else %}
{% assign domain = site.url | append: site.baseurl %}
{% endif %}
{% comment %} set "active" class on current page {% endcomment %}
{% if child.url == page.url %}
{% assign active = "active" %}
{% else %}
{% assign active = "" %}
{% endif %}
<li><a href="{{ domain }}{{ child.url }}" class="{{ active }}">{{ child.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
</ol>
</li>
{% endfor %}
</ul>
</nav>

View File

@ -22,13 +22,21 @@
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
{% endif %}
{% if page.header.image_description %}
{% assign image_description = page.header.image_description %}
{% else %}
{% assign image_description = page.title %}
{% endif %}
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}"
>
{% if page.header.overlay_color or page.header.overlay_image %}
<div class="wrapper">
<h1 class="page__title" itemprop="headline">
{% if paginator %}
{% if paginator and site.paginate_show_page_num %}
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
{% else %}
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
@ -45,7 +53,7 @@
{% endif %}
</div>
{% else %}
<img src="{{ img_path }}" alt="{{ page.title }}" class="page__hero-image">
<img src="{{ img_path }}" alt="{{ image_description }}" class="page__hero-image">
{% endif %}
{% if page.header.caption %}
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>

View File

@ -0,0 +1,4 @@
{% capture video_id %}{{ page.header.video.id }}{% endcapture %}
{% capture video_provider %}{{ page.header.video.provider }}{% endcapture %}
{% include video id=video_id provider=video_provider %}

View File

@ -1,12 +1,13 @@
{% if paginator.total_pages > 1 %}
<nav class="pagination">
{% assign first_page_path = site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | absolute_url %}
<ul>
{% comment %} Link for previous page {% endcomment %}
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<li><a href="{{ '/' | absolute_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% else %}
<li><a href="{{ '/page' | absolute_url }}{{ paginator.previous_page | append: '/' }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | absolute_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
{% endif %}
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
@ -16,7 +17,7 @@
{% if paginator.page == 1 %}
<li><a href="#" class="disabled current">1</a></li>
{% else %}
<li><a href="{{ '/' | absolute_url }}">1</a></li>
<li><a href="{{ first_page_path }}">1</a></li>
{% endif %}
{% assign page_start = 2 %}
@ -34,7 +35,7 @@
{% for index in (page_start..page_end) %}
{% if index == paginator.page %}
<li><a href="{{ '/page' | absolute_url }}{{ index | append: '/' }}" class="disabled current">{{ index }}</a></li>
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | absolute_url }}" class="disabled current">{{ index }}</a></li>
{% else %}
{% comment %} Distance from current page and this link {% endcomment %}
{% assign dist = paginator.page | minus: index %}
@ -42,7 +43,7 @@
{% comment %} Distance must be a positive value {% endcomment %}
{% assign dist = 0 | minus: dist %}
{% endif %}
<li><a href="{{ '/page' | absolute_url }}{{ index | append: '/' }}">{{ index }}</a></li>
<li><a href="{{ site.paginate_path | replace: ':num', index | absolute_url }}">{{ index }}</a></li>
{% endif %}
{% endfor %}
@ -54,12 +55,12 @@
{% if paginator.page == paginator.total_pages %}
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
{% else %}
<li><a href="{{ '/page' | absolute_url }}{{ paginator.total_pages }}/">{{ paginator.total_pages }}</a></li>
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | absolute_url }}">{{ paginator.total_pages }}</a></li>
{% endif %}
{% comment %} Link next page {% endcomment %}
{% if paginator.next_page %}
<li><a href="{{ '/page' | absolute_url }}{{ paginator.next_page }}/">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | absolute_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
{% else %}
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
{% endif %}

View File

@ -6,9 +6,9 @@
{% assign words = page.content | strip_html | number_of_words %}
{% endif %}
{% if words < 180 %}
{% if words < words_per_minute %}
{{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% elsif words < 360 %}
{% elsif words == words_per_minute %}
1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
{% else %}
{{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}

View File

@ -1,4 +1,15 @@
<script src="{{ '/assets/js/main.min.js' | absolute_url }}"></script>
{% if site.footer_scripts %}
{% for script in site.footer_scripts %}
{% if script contains "://" %}
{% capture script_path %}{{ script }}{% endcapture %}
{% else %}
{% capture script_path %}{{ script | absolute_url }}{% endcapture %}
{% endif %}
<script src="{{ script_path }}"></script>
{% endfor %}
{% else %}
<script src="{{ '/assets/js/main.min.js' | absolute_url }}"></script>
{% endif %}
{% include analytics.html %}
{% include /comments-providers/scripts.html %}

View File

@ -25,7 +25,7 @@
<meta name="description" content="{{ seo_description }}">
{% assign seo_author = page.author | default: page.author[0] | default: site.author[0] %}
{% assign seo_author = page.author | default: page.author[0] | default: site.author.name %}
{% if seo_author %}
{% if seo_author.twitter %}
{% assign seo_author_twitter = seo_author.twitter %}
@ -39,7 +39,9 @@
{% assign seo_author_twitter = seo_author_twitter | replace: "@", "" %}
{% endif %}
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en" }}">
<meta name="author" content="{{ seo_author }}">
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
<meta property="og:site_name" content="{{ site.title }}">
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
@ -85,7 +87,15 @@
{% endif %}
{% endif %}
<meta property="og:image" content="{{ base_path }}/images/bio-photo.png" />
{% if page.header.image %}
<meta property="og:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | absolute_url }}{% endif %}">
{% elsif page.header.overlay_image %}
<meta property="og:image" content="{% if page.header.overlay_image contains "://" %}{{ page.header.overlay_image }}{% else %}{{ page.header.overlay_image | absolute_url }}{% endif %}">
{% elsif page.header.teaser %}
<meta property="og:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | absolute_url }}{% endif %}">
{% elsif site.og_image %}
<meta property="og:image" content="{% if site.og_image contains "://" %}{{ site.og_image }}{% else %}{{ site.og_image | absolute_url }}{% endif %}">
{% endif %}
{% if page.date %}
<meta property="og:type" content="article">
@ -105,7 +115,7 @@
"@context": "http://schema.org",
"@type": "Organization",
"url": {{ seo_url | jsonify }},
"logo": {{ site.og_image | prepend: "/images/" | prepend: base_path | jsonify }}
"logo": {{ site.og_image | absolute_url | jsonify }}
}
</script>
{% endif %}

View File

@ -1,23 +1,7 @@
{% if page.author_profile or layout.author_profile or page.sidebar %}
<div class="sidebar sticky">
{% if page.author_profile or layout.author_profile %}{% include author-profile.html %}{% endif %}
{% if page.sidebar %}
{% for s in page.sidebar %}
{% if s.image %}
<img src=
{% if s.image contains "://" %}
"{{ s.image }}"
{% else %}
"{{ s.image | absolute_url }}"
{% endif %}
alt="{% if s.image_alt %}{{ s.image_alt }}{% endif %}">
{% endif %}
{% if s.title %}<h3>{{ s.title }}</h3>{% endif %}
{% if s.text %}{{ s.text | markdownify }}{% endif %}
{% endfor %}
{% if page.sidebar.nav %}
{% include nav_list nav=page.sidebar.nav %}
{% endif %}
{% endif %}
</div>
{% if page.sidebar %}
<div class="sidebar sticky" style="display: none;">
{% include nav_list %}
</div>
{% endif %}

View File

@ -3,11 +3,11 @@
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
{% endif %}
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username }}&{% endif %}text={{ page.title }} {{ page.url | absolute_url }}" class="btn btn--twitter" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url }}" class="btn btn--facebook" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
<a href="https://plus.google.com/share?url={{ page.url | absolute_url }}" class="btn btn--google-plus" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
<a href="https://plus.google.com/share?url={{ page.url | absolute_url | url_encode }}" class="btn btn--google-plus" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url }}" class="btn btn--linkedin" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>

View File

@ -11,7 +11,7 @@
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
{% endcomment %}
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
{% assign tag_hashes = (page_tags | split: ',' | sort:0) %}
{% assign tag_hashes = page_tags | split: ',' | sort %}
<p class="page__taxonomy">
<strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>

11
_includes/video Normal file
View File

@ -0,0 +1,11 @@
{% capture video_id %}{{ include.id }}{% endcapture %}
{% capture video_provider %}{{ include.provider }}{% endcapture %}
<!-- Courtesy of embedresponsively.com //-->
<div class="responsive-video-container">
{% if video_provider == "vimeo" %}
<iframe src="https://player.vimeo.com/video/{{ video_id }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
{% elsif video_provider == "youtube" %}
<iframe src="https://www.youtube.com/embed/{{ video_id }}" frameborder="0" allowfullscreen></iframe>
{% endif %}
</div>

View File

@ -4,6 +4,8 @@ layout: default
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}

View File

@ -1,9 +1,13 @@
---
---
{% include base_path %}
<!doctype html>
<!--
Minimal Mistakes Jekyll Theme 4.6.0 by Michael Rose
Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
Free for personal and commercial use under the MIT license
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
<head>
{% include head.html %}

11
_layouts/home.html Normal file
View File

@ -0,0 +1,11 @@
---
layout: archive
---
<h3 class="archive__subtitle">{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3>
{% for post in paginator.posts %}
{% include archive-single.html %}
{% endfor %}
{% include paginator.html %}

View File

@ -2,10 +2,10 @@
layout: default
---
{% include base_path %}
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
{% if page.url != "/" and site.breadcrumbs %}
@ -21,7 +21,7 @@ layout: default
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %}
<div class="page__inner-wrap">
{% unless page.header.overlay_color or page.header.overlay_image %}
@ -52,7 +52,7 @@ layout: default
<hr>
{{ content }}
{% if page.link %}<div><a href="{{ page.link }}" class="btn">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
</section>
@ -61,8 +61,8 @@ layout: default
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
{% endif %}
{% include page__taxonomy.html %}
{% if page.modified %}
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.modified | date: "%Y-%m-%d" }}">{{ page.modified | date: "%B %d, %Y" }}</time></p>
{% if page.last_modified_at %}
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: "%B %d, %Y" }}</time></p>
{% elsif page.date %}
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p>
{% endif %}
@ -79,17 +79,25 @@ layout: default
</article>
{% comment %}<!-- only show related on a post page when not disabled -->{% endcomment %}
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
{% if page.id and page.related and site.related_posts.size > 0 %}
<div class="page__related">
{% if site.data.ui-text[site.locale].related_label %}
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
{% endif %}
<div class="grid__wrapper">
{% for post in site.related_posts limit:4 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
{% elsif page.id and page.related %}
<div class="page__related">
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
<div class="grid__wrapper">
{% for post in site.posts limit:4 %}
{% include archive-single.html type="grid" %}
{% endfor %}
</div>
</div>
{% endif %}
</div>

View File

@ -2,23 +2,20 @@
layout: default
---
{% include base_path %}
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
{% include page__hero.html %}
{% elsif page.header.video.id and page.header.video.provider %}
{% include page__hero_video.html %}
{% endif %}
<div id="main" role="main">
<article class="splash" itemscope itemtype="http://schema.org/CreativeWork">
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
{% if page.modified %}<meta itemprop="dateModified" content="{{ page.modified | date: "%B %d, %Y" }}">{% endif %}
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %}
<section class="page__content" itemprop="text">
<hr>
{% assign split_path = page.path | split: "/" %}

View File

@ -2,12 +2,14 @@
title: "0.23.5 Install (CIAs)"
---
{% include toc title="Table of Contents" %}
To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on this page, you will need a torrent client like [Deluge](http://dev.deluge-torrent.org/wiki/Download)
You MUST downgrade with the correct pack for your console/region!
{: .notice--danger}
#### What you need
### What you need
* The 0.23.5 PANDA CIAs `.zip` file for your device and region:
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [SNAKE / CLOSER / JAN - CIAs - 0.23.5 - EUR](magnet:?xt=urn:btih:753b24d1c18c749997a455731c4138bc0db25835&dn=SystemUpdater%5FSNAKE-0%5F23%5F5-EU%5Fcias.zip&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
@ -17,7 +19,7 @@ You MUST downgrade with the correct pack for your console/region!
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [CTR / SPR / FTR - CIAs - 0.23.5 - EUR](magnet:?xt=urn:btih:128bb54d05c4840878c0c868ce30a9df65f214ab&dn=SystemUpdater%5FCTR-0%5F23%5F5-EU%5Fcias.zip&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [CTR / SPR / FTR - CIAs - 0.23.5 - USA](magnet:?xt=urn:btih:0af36a594529d4497733a9252ad68219647affd3&dn=SystemUpdater%5FCTR-0%5F23%5F5-US%5Fcias.zip&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
#### Instructions
### Instructions
1. Extract the 0.23.5 SystemUpdater `.zip` to the root of your SD card
1. Reinsert your SD card into your PANDA

View File

@ -2,9 +2,11 @@
title: "0.23.5 Install (CSU)"
---
{% include toc title="Table of Contents" %}
To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on this page, you will need a torrent client like [Deluge](http://dev.deluge-torrent.org/wiki/Download)
#### What you need
### What you need
* CTR flash card
* Development hardware to write a CSU to a CTR flash card
@ -20,7 +22,7 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [CTR / SPR / FTR - CSU - 0.23.5 - TWN](magnet:?xt=urn:btih:83129a4bd9f0485e3f559336c125bd19f7b71d24&dn=SystemUpdater_CTR-0_23_5-TW.csu&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce)
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [CTR / SPR / FTR - CSU - 0.23.5 - USA](magnet:?xt=urn:btih:5483048222a6447dca3e3ef2ea8fdb1bc7e29605&dn=SystemUpdater_CTR-0_23_5-US.csu&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce)
#### Instructions
### Instructions
1. Follow the instructions contained within the official <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [System Updater Operations Manual](magnet:?xt=urn:btih:a8f4aebe74a565d1d8e42a38240cc284d900b5ab&dn=SystemUpdater_Manual.pdf&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce) using the downloaded 0.23.5 PANDA CSU for your device and region.

View File

@ -2,13 +2,15 @@
title: "0.23.5 Install"
---
#### Overview of steps
{% include toc title="Table of Contents" %}
### Overview of steps
- Install the version 0.23.5 for your region / device
- Install boot9strap using CakeHax Browser
- (Optionally) install the latest version for your region / device
___
### Required Reading
There are two different methods of installing the version 0.23.5 onto your PANDA unit.
@ -17,10 +19,11 @@ One method requires no external tools but only supports some regions and devices
The other method supports all regions and devices, but requires a CTR flash card and the necessary development hardware to write a CSU to that CTR flash card.
___
### Methods
{% capture notice-1 %}
___
[0.23.5 Install (CIAs)](0.23.5-install-(cias))
#### 0.23.5 Install (CIAs)
This method is compatible with the following devices
@ -29,13 +32,12 @@ This method is compatible with the following devices
+ CTR / SPR / FTR
+ [EUR / USA]
{% endcapture %}
Continue to [0.23.5 Install (CIAs)](0.23.5-install-(cias))
{: .notice--primary}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
___
{% capture notice-1 %}
[0.23.5 Install (CSU)](0.23.5-install-(csu))
#### 0.23.5 Install (CSU)
This method is compatible with the following devices
@ -44,6 +46,5 @@ This method is compatible with the following devices
+ CTR / SPR / FTR
+ [CHN / EUR / JPN / KOR / TWN / USA]
{% endcapture %}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
Continue to [0.23.5 Install (CSU)](0.23.5-install-(csu))
{: .notice--primary}

View File

@ -2,6 +2,8 @@
title: "A9LH to B9S"
---
{% include toc title="Table of Contents" %}
This page is for existing arm9loaderhax users to update their devices to boot9strap.
All future releases of Luma3DS will only be made in the `.firm` format, which will only be compatible with boot9strap and sighax. This means that to continue receiving the latest updates of Luma3DS, you should use this page to update your installation.
@ -27,8 +29,7 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte
<div class="notice--danger">{{ notice-1 | markdownify }}</div>
#### What you need
### What you need
Note that the following required file named `secret_sector_dev.bin` is the same one that was found in `safea9lhinstaller_v2_panda.zip` with the name `secret_sector.bin`. If you already have that file on your disk somewhere, you can use that one (renaming it) instead of downloading the one below.
{: .notice--info}
@ -38,40 +39,58 @@ Note that, only on New 3DS, `secret_sector_dev.bin` is needed to revert the arm9
* <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - **New 3DS Users Only:** [`secret_sector_dev.bin`](magnet:?xt=urn:btih:54d19b7fd5387f7d46cff86edbbb58737880993c&dn=secret_sector_dev.bin&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce)
* The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)*
* The v7.0.5 release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/tag/v7.0.5) *(the `.7z` file)*
* The latest release of [SafeB9SInstaller](https://github.com/d0k3/SafeB9SInstaller/releases/latest)
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(the `devkit` file, not the `ntr` file)*
* The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest)
* The latest fork of [Luma3DS Updater](https://github.com/KunoichiZ/lumaupdate/releases/latest)
* [`setup_ctrnand_luma3ds.gm9`]({{ base_path }}/gm9_scripts/setup_ctrnand_luma3ds.gm9)
* [`setup_ctrnand_luma3ds.gm9`]({{ "/gm9_scripts/setup_ctrnand_luma3ds.gm9" | absolute_url }})
* [`cleanup_sd_card.gm9`]({{ "/gm9_scripts/cleanup_sd_card.gm9" | absolute_url }})
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
For all steps in this section, overwrite any existing files on your SD card.
{: .notice--info}
1. Power off your device
1. Insert your SD card into your computer
1. Copy _the contents of_ `starter.zip` to the root of your SD card
1. Copy `boot.firm` from the latest version Luma3DS `.7z` to the root of your SD card
1. Copy `arm9loaderhax.bin` from the v7.0.5 Luma3DS `.7z` to the root of your SD card
1. Create a folder named `cias` on the root of your SD card if it does not already exist
1. Copy `lumaupdater.cia` to the `/cias/` folder on your SD card
1. Create a folder named `boot9strap` on the root of your SD card
1. Copy `boot.firm` from the Luma3DS `.7z` to the root of your SD card
1. Delete any existing `.bin` payloads in the `/luma/payloads/` folder on your SD card as they will not be compatible with boot9strap compatible Luma3DS versions
1. Copy `GodMode9.firm` from the GodMode9 `.zip` to the `/luma/payloads/` folder on your SD card
1. Delete any existing `.bin` payloads in this folder as they will not be compatible with boot9strap compatible Luma3DS versions
1. Copy the `gm9` folder from the GodMode9 `.zip` to the root of your SD card
1. Copy `setup_ctrnand_luma3ds.gm9` to the `/gm9/scripts/` folder on your SD card
1. Copy `cleanup_sd_card.gm9` to the `/gm9/scripts/` folder on your SD card
1. Delete any existing `.bin` payloads in this folder as they will not be compatible with boot9strap compatible Luma3DS versions
1. Copy `SafeB9SInstaller.bin` from the SafeB9SInstaller `.zip` to the `/luma/payloads/` folder on your SD card
1. Copy `boot9strap_dev.firm` and `boot9strap_dev.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card
1. Copy `secret_sector_dev.bin` to the `/boot9strap/` folder on your SD card
1. Rename `SafeB9SInstaller.bin` in the `/luma/payloads/` folder on your SD card to `start_SafeB9SInstaller.bin`
1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card
1. **New 3DS Users Only:** Copy `secret_sector.bin` to the `/boot9strap/` folder on your SD card
![]({{ "/images/screenshots/a9lh-to-b9s-file-layout.png" | absolute_url }})
{: .notice--info}
1. Reinsert your SD card into your device
##### Section II - Installing boot9strap
#### Section II - Installing boot9strap
1. Boot your device while holding (Start) to launch the Luma3DS chainloader menu
+ Some versions of Luma3DS will just directly start whichever payload begins with `start_`
+ If your version does this, just proceed with the instructions
1. Launch SafeB9SInstaller by pressing (A) on it
+ If this gives you an error, try either using a new SD card, or formatting your current SD card (backup existing files first)
1. Wait for all safety checks to complete
+ If you get an "OTP Crypto Fail" error, download <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`aeskeydb.bin`](magnet:?xt=urn:btih:d25dab06a7e127922d70ddaa4fe896709dc99a1e&dn=aeskeydb.bin&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce), then put it in the `/boot9strap/` folder on your SD card and try again
1. When prompted, input the key combo given to install boot9strap
1. Once it has completed, your device will reboot automatically
1. Once it has completed, press (A) to reboot your device.
+ If your device shuts down on boot, ensure that you have copied `boot.firm` from the Luma3DS `.7z` to the root of your SD card
##### Section III - Configuring Luma3DS
#### Section III - Configuring Luma3DS
This section is only needed if you are prompted with the Luma3DS configuration menu after the reboot.
{: .notice--info}
@ -80,25 +99,26 @@ This section is only needed if you are prompted with the Luma3DS configuration m
+ **"Show NAND or user string in System Settings"**
1. Press (Start) to save and reboot
##### Section IV - Updating the System
#### Section IV - Updating the System
This section is optional and requires both a CTR flash card and the development hardware to write a CSU to that CTR flash card.
{: .notice--info}
1. Update your PANDA unit by using the latest version CTR System Updater (CSU) available to you
##### Section V - Installing Luma3DS Updater
#### Section V - Installing Luma3DS Updater
1. Using Dev Menu, navigate to the `cias` folder
1. Install `lumaupdater.cia`
1. Exit Dev Menu
##### Section VI - CTRNAND Luma3DS
#### Section VI - CTRNAND Luma3DS
1. Launch GodMode9 by holding (Start) during boot
1. If you are prompted to create an essential files backup, press (A) to do so, then press (A) to continue once it has completed
1. If you are prompted to fix the RTC date&time, press (A) to do so, then set the date and time, then press (A) to continue
+ Note that, if you had to fix the RTC date and time, you will have to fix the time in the System Settings as well after this guide
1. Press (Home) to bring up the action menu
1. Select "More..."
1. Select "Scripts..."
1. Select "setup_ctrnand_luma3ds"
1. When prompted, press (A) to proceed
@ -106,10 +126,9 @@ This section is optional and requires both a CTR flash card and the development
1. Press (A) to continue
1. Press (A) to relock write permissions
##### Section VII - Backup SysNAND
#### Section VII - Backup SysNAND
1. Press (Home) to bring up the action menu
1. Select "More..."
1. Select "Scripts..."
1. Select "Backup SysNAND"
1. Press (A) to confirm
@ -117,17 +136,19 @@ This section is optional and requires both a CTR flash card and the development
1. Press (A) to continue
1. Hold (R) and press (B) at the same time to eject your SD card
1. Insert your SD card into your computer
1. Copy `<serialnumber>_nandmin_###.bin` from the `/gm9/out/` folder on your SD card to a safe location on your computer
1. Copy `<date>_<serialnumber>_sysnand_###.bin` from the `/gm9/out/` folder on your SD card to a safe location on your computer
+ Make backups in multiple locations (such as online file storage)
+ This backup will save you from a brick if anything goes wrong in the future
+ Replace your old arm9loaderhax NAND backup with this new boot9strap one
1. Delete `<serialnumber>_nandmin_###.bin` from the `/gm9/out/` folder on your SD card after copying it
1. Delete `<date>_<serialnumber>_sysnand_###.bin` from the `/gm9/out/` folder on your SD card after copying it
1. Reinsert your SD card into your device
##### Section VIII - Cleanup SD Card
#### Section VIII - Cleanup SD Card
Note that this script will remove the `/boot9strap/` and `/cias/` folders from your SD card!
{: .notice--danger}
1. Press (Home) to bring up the action menu
1. Select "More..."
1. Select "Scripts..."
1. Select "cleanup_sd_card"
1. When prompted, press (A) to proceed

View File

@ -2,17 +2,17 @@
title: "Donations"
---
[![Paypal]({{ base_path }}/images/paypal_white.png){:height="72px" width="256px"}{: style="padding-bottom: .35em"}](https://www.paypal.me/plailectguides/15){: .align-center}
[![Paypal]({{ "/images/paypal_white.png" | absolute_url }}){:height="72px" width="256px"}{: style="padding-bottom: .35em"}](https://www.paypal.me/plailectguides/15){: .align-center}
plailect@gmail.com
{: .text-center}
{: .notice--info}
[![Bitcoin]({{ base_path }}/images/bitcoin_white.png){:height="73px" width="256px"}{: style="padding-bottom: .35em"}](bitcoin:19c89D7NUmJPCE3DsHpV2iSBF7cYMXnhpE){: .align-center}
19c89D7NUmJPCE3DsHpV2iSBF7cYMXnhpE
[![Bitcoin]({{ "/images/bitcoin_white.png" | absolute_url }}){:height="73px" width="256px"}{: style="padding-bottom: .35em"}](bitcoin:3MtzjaRNrcG57RbNxJegcs8UdtaEfmSZLp){: .align-center}
3MtzjaRNrcG57RbNxJegcs8UdtaEfmSZLp
{: .text-center}
{: .notice--info}
[![Ethereum]({{ base_path }}/images/ethereum_white.png){:height="64px" width="256px"}{: style="padding-bottom: .35em"}](https://www.ethereum.org/){: .align-center}
0x0F0131d161f8eFA4B355c5EADd0484FC3ff95B4C
[![Ethereum]({{ "/images/ethereum_white.png" | absolute_url }}){:height="64px" width="256px"}{: style="padding-bottom: .35em"}](https://www.ethereum.org/){: .align-center}
0x608C5554D2C53698aA7DFFc7e64BF37f7bebb475
{: .text-center}
{: .notice--info}

View File

@ -8,11 +8,11 @@ Depending on the size of your SD card and the speed of your computer, this proce
This page is for Linux users only. If you are not on Linux, check out the [H2testw (windows)](h2testw-(windows)) or [F3X (mac)](f3x-(mac)) pages.
#### What you need
### What you need
* The latest version of [F3](https://github.com/AltraMayor/f3/archive/v6.0.zip)
#### Instructions
### Instructions
1. Unzip the f3 `.zip` file
2. `cd` into the f3 directory

View File

@ -8,11 +8,11 @@ Depending on the size of your SD card and the speed of your computer, this proce
This page is for Mac users only. If you are not on Mac, check out the [H2testw (windows)](h2testw-(windows)) or [F3 (Linux)](f3-(linux)) pages.
#### What you need
### What you need
* The latest release of [F3X](https://github.com/insidegui/F3X/releases)
#### Instructions
### Instructions
1. Unzip the F3X `.zip` file
2. Insert your SD card into your computer

View File

@ -2,8 +2,6 @@
title: "FAQ"
---
{% capture notice-1 %}
<a name="faq_latestfw" />**Q:** *I am on the latest system version, is my device hackable?*
**A:** Yes
@ -45,7 +43,3 @@ title: "FAQ"
<a name="faq_problem" />**Q:** *Help! Something bad happened and now I cannot boot...*
**A:** Please look at the [troubleshooting guide](troubleshooting).
{% endcapture %}
<div class="notice--info">{{ notice-1 | markdownify }}</div>

View File

@ -2,7 +2,9 @@
title: "Finalizing Setup"
---
#### Overview of steps
{% include toc title="Table of Contents" %}
### Overview of steps
The file `boot.firm` is what is launched by boot9strap itself after it finishes loading off of NAND, and can be any valid arm9 payload in the FIRM format. This file can be replaced at any time, although Luma3DS allows for the launch of other arm9 payloads in the FIRM format using the Luma3DS chainloader.
@ -15,18 +17,18 @@ During this process, we also setup programs such as the following:
+ **Luma3DS Updater** *(updates your CFW installation easily)*
+ **GodMode9** *(multipurpose tool which can do NAND and cartridge functions)*
#### What you need
### What you need
* The latest release of [Anemone3DS](https://github.com/astronautlevel2/Anemone3DS/releases/latest) *(the `.cia` file)*
* The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest)
* The latest release of [FBI](https://github.com/Steveice10/FBI/releases/latest) *(the `.cia` and `.3dsx` files)*
* The latest fork of [Luma3DS Updater](https://github.com/KunoichiZ/lumaupdate/releases/latest) *(the `.cia` file)*
* [`setup_ctrnand_luma3ds.gm9`]({{ base_path }}/gm9_scripts/setup_ctrnand_luma3ds.gm9)
* [`cleanup_sd_card.gm9`]({{ base_path }}/gm9_scripts/cleanup_sd_card.gm9)
* [`setup_ctrnand_luma3ds.gm9`]({{ "/gm9_scripts/setup_ctrnand_luma3ds.gm9" | absolute_url }})
* [`cleanup_sd_card.gm9`]({{ "/gm9_scripts/cleanup_sd_card.gm9" | absolute_url }})
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off your device
1. Insert your SD card into your computer
@ -41,20 +43,20 @@ During this process, we also setup programs such as the following:
1. Copy `cleanup_sd_card.gm9` to the `/gm9/scripts/` folder on your SD card
1. Reinsert your SD card into your device
##### Section II - Updating the System
#### Section II - Updating the System
This section is optional and requires both a CTR flash card and the development hardware to write a CSU to that CTR flash card.
{: .notice--info}
1. Update your PANDA unit by using the latest version CTR System Updater (CSU) available to you
##### Section III - Installing CIAs
#### Section III - Installing CIAs
1. Using Dev Menu, navigate to the `cias` folder
1. Press (L + R + A) to install all CIAs
1. Exit Dev Menu
##### Section IV - CTRNAND Luma3DS
#### Section IV - CTRNAND Luma3DS
1. Launch GodMode9 by holding (Start) during boot
1. If you are prompted to create an essential files backup, press (A) to do so, then press (A) to continue once it has completed
@ -67,7 +69,7 @@ This section is optional and requires both a CTR flash card and the development
1. Press (A) to continue
1. Press (A) to relock write permissions
##### Section V - Backup SysNAND
#### Section V - Backup SysNAND
1. Press (Home) to bring up the action menu
1. Select "More..."
@ -84,7 +86,7 @@ This section is optional and requires both a CTR flash card and the development
1. Delete `<serialnumber>_nandmin_###.bin` from the `/gm9/out/` folder on your SD card after copying it
1. Reinsert your SD card into your device
##### Section VI - Cleanup SD Card
#### Section VI - Cleanup SD Card
1. Press (Home) to bring up the action menu
1. Select "More..."

View File

@ -2,6 +2,8 @@
title: "Flashing ntrboot (3DS Multi System)"
---
{% include toc title="Table of Contents" %}
Before proceeding, ensure you have read all of the information on [ntrboot](ntrboot)
Note that R4i Gold 3DS RTS flashcarts will not be able to be used for their standard functions (such as launching `.nds` files) while the ntrboot exploit is installed on it. This does not apply to the Acekard 2i.
@ -16,7 +18,7 @@ This method requires temporary access to a second 3DS family device that is alre
Note that in some rare circumstances, it may be possible for the flashing process to **brick** a counterfeit flashcart and render it permanently unusable. This is unlikely, but nevertheless only original listed flashcarts are supported. To reduce the chance of receiving a counterfeit card, it is recommended that you use a reputable site to buy your flashcart (such as [NDS Card](http://www.nds-card.com/))
{: .notice--danger}
#### What you need
### What you need
* Your ntrboot compatible flashcart
* Two 3DS family devices
@ -25,9 +27,9 @@ Note that in some rare circumstances, it may be possible for the flashing proces
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(the `ntr-devkit` file)*
* The latest release of [ntrboot_flasher](https://github.com/kitling/ntrboot_flasher/releases/latest)
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off **the source 3DS**
1. Insert **the source 3DS**'s SD card into your computer
@ -37,7 +39,7 @@ Note that in some rare circumstances, it may be possible for the flashing proces
1. Reinsert **the source 3DS**'s SD card back into **the source 3DS**
1. Insert your ntrboot compatible DS / DSi flashcart into **the source 3DS**
##### Section II - Flashing ntrboot
#### Section II - Flashing ntrboot
1. Launch the Luma3DS chainloader by holding (Start) during boot on **the source 3DS**
1. Select "ntrboot_flasher"
@ -50,7 +52,7 @@ Note that in some rare circumstances, it may be possible for the flashing proces
1. Press (A) to continue
1. Press (A) to return to the main menu
1. Select "Inject Ntrboot"
1. Press (A) for retail unit ntrboot
1. Press (Y) for developer unit ntrboot
1. Wait until the process is completed
1. Press (A) to return to the main menu
1. Select "Exit" to power off **the source 3DS**

View File

@ -2,31 +2,33 @@
title: "Flashing ntrboot (3DS Single System)"
---
{% include toc title="Table of Contents" %}
Before proceeding, ensure you have read all of the information on [ntrboot](ntrboot)
This method requires nothing more than your stock unhacked 3DS and a compatible flashcart.
Note that more recent 3DS versions have blocked access to some flashcarts, and some flashcarts have always been blocked on the 3DS. This leaves them unable to launch the flasher `.nds` file on some (or all) versions. The ntrboot compatible flashcarts are able to launch `.nds` files on the 3DS (under the listed versions):
+ [R4i Gold 3DS (RTS)](http://www.nds-card.com/ProShow.asp?ProID=149) : <= 11.5.0
+ [R4i Gold 3DS (RTS)](http://www.nds-card.com/ProShow.asp?ProID=149) : <= 11.6.0
+ [Acekard 2i](http://www.nds-card.com/ProShow.asp?ProID=160) : <= 4.3.0
+ R4i Gold 3DS "Starter" : 4.1.0 - 4.5.0
+ R4i Ultra : <= 4.3.0
+ Infinity 3 R4i : <= 11.5.0
+ Infinity 3 R4i : <= 11.6.0
Ensure your flashcart is able to launch correctly before starting. Be sure to have any required kernel or firmware files copied to your flashcart's SD card. Consult your specific flashcart's instructions for more information.
Note that in some rare circumstances, it may be possible for the flashing process to **brick** a counterfeit flashcart and render it permanently unusable. This is unlikely, but nevertheless only original listed flashcarts are supported. To reduce the chance of receiving a counterfeit card, it is recommended that you use a reputable site to buy your flashcart (such as [NDS Card](http://www.nds-card.com/))
{: .notice--danger}
#### What you need
### What you need
* Your ntrboot compatible flashcart
* The latest release of [ak2i_ntrcardhax_flasher](https://github.com/d3m3vilurr/ak2i_ntrcardhax_flasher/releases/latest) *(`dsi` flasher; not the standard flasher)*
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off your device
1. Insert your flashcart's SD card into your computer
@ -34,7 +36,7 @@ Note that in some rare circumstances, it may be possible for the flashing proces
1. Reinsert your flashcart's SD card back into your flashcart
1. Insert your ntrboot compatible DS / DSi flashcart into your device
##### Section II - Flashing ntrboot
#### Section II - Flashing ntrboot
1. Launch `ak2i_ntrcardhax_flasher_dsi.nds` on your device using your flashcart
1. Press (A) to continue

View File

@ -2,6 +2,8 @@
title: "Flashing ntrboot (DSi)"
---
{% include toc title="Table of Contents" %}
Before proceeding, ensure you have read all of the information on [ntrboot](ntrboot)
This method requires temporary access to a Nintendo DSi that is compatible with your flashcart.
@ -17,7 +19,7 @@ Note that more recent DSi versions have blocked access to some flashcarts. This
Note that in some rare circumstances, it may be possible for the flashing process to **brick** a counterfeit flashcart and render it permanently unusable. This is unlikely, but nevertheless only original listed flashcarts are supported. To reduce the chance of receiving a counterfeit card, it is recommended that you use a reputable site to buy your flashcart (such as [NDS Card](http://www.nds-card.com/))
{: .notice--danger}
#### What you need
### What you need
* Your ntrboot compatible flashcart
* Two devices
@ -25,9 +27,9 @@ Note that in some rare circumstances, it may be possible for the flashing proces
+ **The target 3DS**: the 3DS family device on stock firmware
* The latest release of [ak2i_ntrcardhax_flasher](https://github.com/d3m3vilurr/ak2i_ntrcardhax_flasher/releases/latest) *(`dsi` flasher; not the standard flasher)*
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off **the source DSi**
1. Insert your flashcart's SD card into your computer
@ -35,7 +37,7 @@ Note that in some rare circumstances, it may be possible for the flashing proces
1. Reinsert your flashcart's SD card back into your flashcart
1. Insert your ntrboot compatible DS / DSi flashcart into **the source DSi**
##### Section II - Flashing ntrboot
#### Section II - Flashing ntrboot
1. Launch `ak2i_ntrcardhax_flasher_dsi.nds` on **the source DSi** using your flashcart
1. Press (A) to continue

View File

@ -2,6 +2,8 @@
title: "Flashing ntrboot (NDS)"
---
{% include toc title="Table of Contents" %}
Before proceeding, ensure you have read all of the information on [ntrboot](ntrboot)
Note that R4i Gold 3DS RTS flashcarts will not be able to be used for their standard functions (such as launching `.nds` files) while the ntrboot exploit is installed on it. This does not apply to the Acekard 2i.
@ -21,7 +23,7 @@ This method requires temporary access to a Nintendo DS or Nintendo DS Lite that
Note that in some rare circumstances, it may be possible for the flashing process to **brick** a counterfeit flashcart and render it permanently unusable. This is unlikely, but nevertheless only original listed flashcarts are supported. To reduce the chance of receiving a counterfeit card, it is recommended that you use a reputable site to buy your flashcart (such as [NDS Card](http://www.nds-card.com/))
{: .notice--danger}
#### What you need
### What you need
* Your ntrboot compatible flashcart
* Two devices
@ -29,9 +31,9 @@ Note that in some rare circumstances, it may be possible for the flashing proces
+ **The target 3DS**: the 3DS family device on stock firmware
* The latest release of [ak2i_ntrcardhax_flasher](https://github.com/d3m3vilurr/ak2i_ntrcardhax_flasher/releases/latest) *(standard flasher; not the `dsi` flasher)*
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off **the source NDS / NDSL**
1. Insert your flashcart's SD card into your computer
@ -39,7 +41,7 @@ Note that in some rare circumstances, it may be possible for the flashing proces
1. Reinsert your flashcart's SD card back into your flashcart
1. Insert your ntrboot compatible DS / DSi flashcart into **the source NDS / NDSL**
##### Section II - Flashing ntrboot
#### Section II - Flashing ntrboot
1. Launch `ak2i_ntrcardhax_flasher.nds` on **the source NDS / NDSL** using your flashcart
1. Press (A) to continue

View File

@ -2,6 +2,10 @@
title: "Get Started"
---
{% include toc title="Table of Contents" %}
### Required Reading
Before starting, you may want to check your SD card for errors using [H2testw (Windows)](h2testw-(windows)), [F3 (Linux)](f3-(linux)), or [F3X (Mac)](f3x-(mac))!
{: .notice--warning}
@ -21,22 +25,23 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte
<div class="notice--danger">{{ notice-1 | markdownify }}</div>
{% capture notice-1 %}
___
### Methods
[0.23.5 Install](0.23.5-install)
___
#### 0.23.5 Install
This method involves downgrading to an older firmware version to utilize a browser-based exploit. It is *not* compatible with JAN (New 2DS XL) units because they cannot downgrade below 0.25.5.
{% endcapture %}
Continue to [0.23.5 Install](0.23.5-install)
{: .notice--primary}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
___
{% capture notice-1 %}
[ntrboot](ntrboot)
#### ntrboot
This method flashes a commercial flashcart with the ntrboot exploit then boots it on your PANDA. It is compatible with all models and versions (including JAN).
{% endcapture %}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
Continue to [ntrboot](ntrboot)
{: .notice--primary}

View File

@ -2,25 +2,35 @@
title: "GodMode9 Usage"
---
{% include toc title="Table of Contents" %}
GodMode9 is a full access file browser for the Nintendo 3DS console, giving you access to your SD card, the FAT partitions inside your SysNAND and EmuNAND, and basically anything else. Among other functionality, you can copy, delete, rename files, and create folders.
Note that if you have any payload files other than `GodMode9.firm` in the `/luma/payloads/` folder on your SD card, holding (Start) on boot will display a "chainloader menu" where you will have to use the D-Pad and the (A) button to select "GodMode9" for these instructions.
{% capture notice %}
This is powerful stuff. GodMode9 provides you with the means to do basically any thinkable modification to any system data available on the 3DS console. However, precautions are taken so you don't accidentally damage the data of your console.
GodMode9 is powerful software that has the capability to modify essentially anything on your console. Though many of these modifications are locked behind a permissions system, and it is impossible to accidentally perform dangerous actions without deliberately unlocking permissions, you should still follow instructions carefully and keep backups just in case.
The write permissions system protects you by providing warnings and forces you to enter an unlock sequence for enabling write permissions. It is not possible to overwrite or modify any important stuff without such unlock sequences and it is not possible to accidentally unlock something. As always, be smart and keep backups, just to be safe.
{% endcapture %}
## Updating GodMode9
<div class="notice--danger">{{ notice | markdownify }}</div>
Some of the instructions below are only applicable to the latest version of GodMode9, and as such you should follow this section to update your copy before continuing. Overwrite any existing files.
{: .notice--info}
## <a name="nand_backup" /> Creating a NAND Backup
### What you need
#### Instructions
* The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest)
### Instructions
1. Power off your device
1. Insert your SD card into your computer
1. Copy `GodMode9.firm` from the GodMode9 `.zip` to the `/luma/payloads/` folder on your SD card
1. Copy the `gm9` folder from the GodMode9 `.zip` to the root of your SD card
1. Reinsert your SD card into your device
## Creating a NAND Backup
1. Launch GodMode9 by holding (Start) during boot
1. Press (Home) to bring up the action menu
1. Select "More..."
1. Select "Scripts..."
1. Select "Backup SysNAND"
1. Press (A) to confirm
@ -28,34 +38,36 @@ The write permissions system protects you by providing warnings and forces you t
1. Press (A) to continue
1. Hold (R) and press (B) at the same time to eject your SD card
1. Insert your SD card into your computer
1. Copy `<serialnumber>_nandmin_###.bin` from the `/gm9/out/` folder on your SD card to a safe location on your computer
1. Copy `<date>_<serialnumber>_sysnand_###.bin` from the `/gm9/out/` folder on your SD card to a safe location on your computer
+ Make backups in multiple locations (such as online file storage)
+ This backup will save you from a brick if anything goes wrong in the future
1. Delete `<serialnumber>_nandmin_###.bin` from the `/gm9/out/` folder on your SD card after copying it
1. Delete `<date>_<serialnumber>_sysnand_###.bin` from the `/gm9/out/` folder on your SD card after copying it
1. Reinsert your SD card into your device
## <a name="nand_restore" /> Restoring a NAND Backup
#### Instructions
## Restoring a NAND Backup
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[0:] SDCARD`
1. Press (A) on your NAND `.bin` to select it, then select "NAND image options...", then select "Restore SysNAND (safe)"
1. Press (A) to unlock SysNAND overwriting, then input the key combo given
1. Hold (R) and press (B) at the same time to eject your SD card
1. Insert your SD card into your computer
1. Copy `<date>_<serialnumber>_sysnand_###.bin` from your computer to the `/gm9/out/` folder on your SD card if you deleted it after backing it up
1. Reinsert your SD card into your device
1. Press (Home) to bring up the action menu
1. Select "Scripts..."
1. Select "Restore SysNAND (Safe)"
1. Select your NAND backup
1. Press (A) to continue
1. Press (A) to unlock SysNAND (lvl2) writing, then input the key combo given
+ This will not overwrite your boot9strap installation
1. Input the key combo given to unlock SysNAND (lvl1) writing
+ This process will take some time
1. Once it has completed, press (A) to continue
1. Press (B) to decline relocking write permissions if prompted
1. Press (A) to relock write permissions if prompted
## <a name="injectHS" /> Injecting any .CIA app into Health & Safety
## Injecting any .CIA app into Health & Safety
#### Prep Work
For organizational purposes, copy the `.cia` file you wish to inject to the `/cias/` folder on your SD card
{: .notice--info}
+ For organizational purposes, copy the `.cia` file you wish to inject to the `/cias/` folder on your SD card
+ Note that it is not possible to inject files into Health & Safety that are larger than it (including games and other large applications)
#### Instructions
Note that it is not possible to inject files into Health & Safety that are larger than it (including games and other large applications)
{: .notice--info}
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[0:] SDCARD` -> `cias`
@ -65,13 +77,11 @@ The write permissions system protects you by providing warnings and forces you t
1. Press (A) to continue
1. Press (A) to relock write permissions if prompted
## <a name="restore_hs" /> Restoring Health & Safety after injecting a .CIA app
## Restoring Health & Safety after injecting a .CIA app
This will only work if the Health & Safety injection was performed by GodMode9 (not Decrypt9 or Hourglass9).
{: .notice--info}
#### Instructions
1. Launch GodMode9 by holding (Start) during boot
1. Press (Home) to bring up the action menu
1. Select "More..."
@ -79,15 +89,17 @@ This will only work if the Health & Safety injection was performed by GodMode9 (
1. Press (A) to unlock SysNAND (lvl1) writing, then input the key combo given
1. Press (A) to relock write permissions if prompted
## <a name="dump_cart" /> Dumping a Game Cartridge
## Dumping a Game Cartridge
#### Prep Work
{% capture notice %}
+ Insert the game cartridge you intend to dump into your device
+ 3DS game cartridges will be dumped to an installable `.cia` format
+ NDS game cartridges will be dumped to a non-installable `.nds` format compatible with flashcarts and emulators
{% endcapture %}
#### Instructions
<div class="notice--info">{{ notice | markdownify }}</div>
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[C:] GAMECART`
@ -96,89 +108,79 @@ This will only work if the Health & Safety injection was performed by GodMode9 (
+ **NDS Game Cartridge:** Press (A) on `[TitleID].trim.nds` to select it, then select "Copy to 0:/gm9/out"
1. Your installable `.cia` or non-installable `.nds` formatted file will be outputted to the `/gm9/out/` folder on your SD card
## <a name="dump_title" /> Dumping a Title
Use the `Titles` menu in FBI to get the Title ID of the installed title you wish to dump
{: .notice--info}
#### Instructions
## Dumping a Title
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to the drive applicable to the type of title you wish to dump:
1. Hover over the drive applicable to the type of title you wish to dump:
+ **User Installed Title**: Navigate to `[A:] SYSNAND SD`
+ **System Title**: Navigate to `[1:] SYSNAND CTRNAND`
1. Navigate to `title`
1. Navigate to the folder corresponding to the first 8 digits of the Title ID
1. Navigate to the folder corresponding to the last 8 digits of the Title ID
1. Navigate to `content`
1. Press (A) on the `.tmd` file to select it, then select "TMD file options...", then select "Show title info"
1. Ensure you have found the correct title
1. Press (B) to exit the title info
1. Hold (R) and press (A) at the same time to open the drive options
1. Select "Search for titles"
1. Press (A) to continue
1. Press (A) on the `.tmd` file to select it, then select "TMD file options...", then select "Build CIA (standard)"
1. Your installable `.cia` formatted file will be outputted to the `/gm9/out/` folder on your SD card
## <a name="convert_3ds" /> Converting a .3DS to .CIA
#### Prep Work
## Converting a .3DS to .CIA
{% capture notice %}
+ For organizational purposes, copy each `.3ds` file you wish to convert to the `/cias/` folder on your SD card
+ Note that if you wish to convert a `.3ds` file that is already on a flashcart, you should follow [Dumping a Game Cartridge](#dump_cart)
+ Note that if you wish to convert a `.3ds` file that is already on a flashcart, you should follow [Dumping a Game Cartridge](#dumping-a-game-cartridge)
{% endcapture %}
#### Instructions
<div class="notice--info">{{ notice | markdownify }}</div>
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[0:] SDCARD` -> `cias`
1. Press (A) on your `.3ds` file to select it, then select "NCSD image options...", then select "Build CIA from file"
1. Your installable `.cia` formatted file will be outputted to the `/gm9/out/` folder on your SD card
## <a name="backup_gba" /> Backup GBA VC Saves
## Backup GBA VC Saves
#### Instructions
The game will be outputted to the `/gm9/out/` folder on your SD card with the name `<TitleID>.gbavc.sav`.
{: .notice--info}
To identify a `<TitleID>.gbavc.sav` file's Title ID, you can get a listing of all games on the system and their corresponding Title IDs by hovering over `[A:] SYSNAND SD`, holding (R) and pressing (A) at the same time, then selecting "Search for titles".
{: .notice--info}
1. Power off your device
1. Insert your SD card into your computer
1. Create a folder in `/gm9/` for each GBA VC game that you want to backup the save for
1. Reinsert your SD card into your device
1. Power on your device
1. Do the following process for each GBA VC game that you want to backup the save for:
+ Launch the GBA VC game
+ Exit the GBA VC game
+ Boot your device while holding (Start) to launch the Luma3DS chainloader menu
+ Launch GodMode9 by pressing (A)
+ Navigate to `[S:] SYSNAND VIRTUAL`
+ Press (Y) on `gbavc.sav` to copy it
+ Press (B) to return to the main menu
+ Navigate to `[0:] SDCARD` -> `gm9`
+ Navigate to the folder you created for this GBA VC game
+ Press (Y) to paste `gbavc.sav`
+ Press (A) on `agbsave.bin` to select it
+ Select "AGBSAVE options..."
+ Select "Dump GBA VC save"
+ Press (A) to continue
+ Press (Start) to reboot your device
## <a name="restore_gba" /> Restore GBA VC Saves
## Restore GBA VC Saves
#### Instructions
To identify a `<TitleID>.gbavc.sav` file's Title ID, you can get a listing of all games on the system and their corresponding Title IDs by hovering over `[A:] SYSNAND SD`, holding (R) and pressing (A) at the same time, then selecting "Search for titles".
{: .notice--info}
1. Ensure you have a folder containing a save in `/gm9/` for each GBA VC game that you want to restore the save for
1. Do the following process for each GBA VC game that you want to restore the save for:
+ Launch the GBA VC game
+ Exit the GBA VC game
+ Boot your device while holding (Start) to launch the Luma3DS chainloader menu
+ Launch GodMode9 by pressing (A)
+ Navigate to `[0:] SDCARD` -> `gm9`
+ Navigate to the folder you created for this GBA VC game
+ Press (Y) on `gbavc.sav` to copy it
+ Press (Y) on the `<TitleID>.gbavc.sav` file you wish to restore to copy it
+ Press (B) to return to the main menu
+ Navigate to `[S:] SYSNAND VIRTUAL`
+ Press (Y) to paste `gbavc.sav`
+ Press (A) to confirm
+ Press (A) on `agbsave.bin` to select it
+ Select "AGBSAVE options..."
+ Select "Inject GBA VC save"
+ Press (A) to continue
+ Press (Start) to reboot your device
+ Launch the GBA VC game
+ Exit the GBA VC game
## <a name="format_sd" /> Format an SD card
## Format an SD card
**Note that this will erase the contents of your SD card!**
{: .notice--danger}
#### Instructions
1. Launch GodMode9 by holding (Start) during boot
1. Press (Home) to bring up the action menu
1. Select "More..."
@ -190,13 +192,12 @@ Use the `Titles` menu in FBI to get the Title ID of the installed title you wish
+ Optionally, you may input a custom name for the SD card
1. When prompted, input the key combo given to confirm
## <a name="crypt_cia" /> Encrypting / Decrypting a .CIA file
## Encrypting / Decrypting a .CIA file
#### Prep Work
+ For organizational purposes, copy each `.cia` file you wish to encrypt / decrypt to the `/cias/` folder on your SD card
#### Instructions
{: .notice--info}
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[0:] SDCARD` -> `cias`
@ -208,9 +209,7 @@ Use the `Titles` menu in FBI to get the Title ID of the installed title you wish
+ **Decrypt inplace:** Replace the selected `.cia` file with a decrypted version
1. Your encrypted / decrypted `.cia` will be outputted to the desired location
## <a name="rm_nnid" />Removing an NNID without formatting your device
#### Instructions
## Removing an NNID without formatting your device
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[1:] SYSNAND CTRNAND` -> `data` -> (32 Character ID) -> `sysdata` -> `00010038`

View File

@ -8,11 +8,11 @@ Depending on the size of your SD card and the speed of your computer, this proce
This page is for Windows users only. If you are not on windows, check out the [F3 (linux)](f3-(linux)) or [F3X (mac)](f3x-(mac)) pages.
#### What you need
### What you need
* The latest version of [h2testw](http://www.heise.de/ct/Redaktion/bo/downloads/h2testw_1.4.zip)
#### Instructions
### Instructions
1. Copy `h2testw.exe` from the h2testw `.zip` to your desktop
2. Insert your SD card into your computer

View File

@ -19,14 +19,11 @@ If you have a retail (consumer purchased; not from the Nintendo Developer Progra
<div class="notice--danger">{{ notice-home | markdownify }}</div>
This guide needs *your* help to [translate](https://translatedev.3ds.guide/) it to other languages!
This guide needs *your* help to [translate](https://translate.3ds.guide/) it to other languages!
{: .notice--success}
This guide needs *your* help to seed [these](https://3ds.guide/rss.xml) torrents!
{: .notice--info}
To use the [torrent](https://en.wikipedia.org/wiki/Torrent_file) files in this guide, you will need a torrent client like [Deluge](http://dev.deluge-torrent.org/wiki/Download)
{: .notice--info}
{: .notice--success}
## What is Homebrew?
@ -72,7 +69,7 @@ For a list of each of the calculated sighax signatures (the platform boot9strap
+ **Before beginning the guide, you must know the risks of 3DS hacking: EVERY time you modify your system, there is always the potential for an UNRECOVERABLE brick. They're rare, but still a possibility so make sure you follow ALL directions EXACTLY.**
+ This guide will work on New 3DS, Old 3DS, and 2DS in all regions on on all firmware versions
+ If everything goes according to plan, you will lose no data and end up with everything that you started with.
+ **Keep the device plugged in and charged throughout the entire process to avoid data loss or damage from an unexpected power-off!**
+ Keep the device plugged in and charged throughout the entire process to avoid data loss or damage from an unexpected power-off!
+ Your SD card should be [MBR, not GPT](http://www.howtogeek.com/245610/) (the SD card that comes with the device will be MBR by default).
+ If you need to format a brand new SD card, you can use [`guiformat`](http://www.ridgecrop.demon.co.uk/index.htm?guiformat.htm) and set to an Allocation Unit Size of 32K.
+ The 2DS is essentially identical to the Old 3DS in terms of software, and that any steps which say "Old 3DS" also apply to 2DS.

View File

@ -2,15 +2,17 @@
title: "Installing boot9strap (Browser)"
---
#### What you need
{% include toc title="Table of Contents" %}
### What you need
* The latest release of [SafeB9SInstaller](https://github.com/d0k3/SafeB9SInstaller/releases/latest)
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(the `devkit` file, not the `ntr` file)*
* The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)*
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off your device
1. Insert your SD card into your computer
@ -21,20 +23,20 @@ title: "Installing boot9strap (Browser)"
1. Reinsert your SD card into your device
1. Power on your device
##### Section II - Launching SafeB9SInstaller
#### Section II - Launching SafeB9SInstaller
1. Launch the browser and go to the following URL on your device
+ `https://dukesrg.github.io/?SafeB9SInstaller.dat`
+ If you get an error, [follow this troubleshooting guide](troubleshooting#ts_browser)
1. If the exploit was successful, you will have booted into SafeB9SInstaller
##### Section III - Installing boot9strap
#### Section III - Installing boot9strap
1. Wait for all safety checks to complete
1. When prompted, input the key combo given to install boot9strap
1. Once it has completed, press (A) to reboot your device
##### Section IV - Configuring Luma3DS
#### Section IV - Configuring Luma3DS
1. Your device should have rebooted into the Luma3DS configuration menu
+ If you get a black screen, [follow this troubleshooting guide](troubleshooting#ts_sys_b9s)

View File

@ -2,7 +2,9 @@
title: "Installing boot9strap (ntrboot)"
---
#### What you need
{% include toc title="Table of Contents" %}
### What you need
* A magnet that triggers the sleep mode of your device (if using a folding style device)
* Your ntrboot flashed flashcart
@ -10,9 +12,9 @@ title: "Installing boot9strap (ntrboot)"
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(the `devkit` file, not the `ntr` file)*
* The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)*
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Power off your device
1. Insert your SD card into your computer
@ -23,7 +25,7 @@ title: "Installing boot9strap (ntrboot)"
1. Reinsert your SD card into your device
1. Power on your device
##### Section II - ntrboot
#### Section II - ntrboot
1. Use the magnet to find the spot on your device where the sleep sensor is triggered
+ This step is not needed on the old 2DS (which has a sleep mode switch)
@ -35,14 +37,16 @@ title: "Installing boot9strap (ntrboot)"
+ It may take a few attempts to get this to work because the positioning is awkward
1. If the exploit was successful, you will have booted into SafeB9SInstaller
##### Section III - Installing boot9strap
#### Section III - Installing boot9strap
1. Wait for all safety checks to complete
1. Remove the magnet from your device
+ On old 2DS, you should instead disable the sleep mode switch
1. When prompted, input the key combo given to install boot9strap
1. Once it has completed, force your device to power off by holding down the power button
+ Your device will only boot to the SafeB9SInstaller screen until the next section is completed
##### Section IV - Configuring Luma3DS
#### Section IV - Configuring Luma3DS
1. Insert your SD card into your computer
1. Delete `boot.firm` from the root of your SD card
@ -50,7 +54,7 @@ title: "Installing boot9strap (ntrboot)"
1. Reinsert your SD card into your device
1. Power on your device
1. Your device should have booted into the Luma3DS configuration menu
+ If you get a black screen, [follow this troubleshooting guide](troubleshooting#ts_sys_b9s)
+ If you get a black screen, [follow this troubleshooting guide](troubleshooting#black-screen-on-sysnand-boot-after-installing-boot9strap)
1. Use the (A) button and the D-Pad to turn on the following:
+ **"Show NAND or user string in System Settings"**
1. Press (Start) to save and reboot
@ -69,9 +73,9 @@ Note that the Acekard 2i retains its ability to launch `.nds` files while having
Do not follow this section until you have completed the rest of the instructions on this page.
##### Section V - Removing ntrboot
#### Section V - Removing ntrboot
###### What you need
##### What you need
* The latest release of [ntrboot_flasher](https://github.com/kitling/ntrboot_flasher/releases/latest)
* The flashrom backup corresponding to your flashcart
@ -85,7 +89,7 @@ Do not follow this section until you have completed the rest of the instructions
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`Acekard_2i_(HW_44)-Flashrom.zip`](magnet:?xt=urn:btih:d12b46b1bfadc6b03ff260ab90dcb136d890fd39&dn=Acekard_2i_%28HW_44%29-Flashrom.zip&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce)
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`R4i_Ultra-Flashrom.zip`](magnet:?xt=urn:btih:614e9951a6c26145e68de34ed8c23a44bf190728&dn=R4i_Ultra-Flashrom.zip&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce)
###### Instructions
##### Instructions
1. Power off your device
1. Insert your SD card into your computer

View File

@ -2,9 +2,13 @@
title: "ntrboot"
---
{% include toc title="Table of Contents" %}
If you already flashed ntrboot to your flashcart, you can follow [Installing boot9strap (ntrboot)](installing-boot9strap-(ntrboot)) for instructions on how to use it.
{: .notice--success}
### Required Reading
Installing boot9strap with ntrboot requires a compatible DS / DSi flashcart to flash ntrboot to.
The ntrboot exploit itself is compatible with the following flashcarts:
@ -17,7 +21,7 @@ The ntrboot exploit itself is compatible with the following flashcarts:
+ Infinity 3 R4i
+ DSTT ([some flash chips only!](https://gist.github.com/Hikari-chin/6b48f1bb8dd15136403c15c39fafdb42))
![]({{ base_path }}/images/screenshots/ntrboot-flashcarts.png)
![]({{ "/images/screenshots/ntrboot-flashcarts.png" | absolute_url }})
{: .notice--info}
Note that specific methods may have additional compatibility information.
@ -33,48 +37,46 @@ Note that in some rare circumstances, it may be possible for the flashing proces
{: .notice--danger}
___
### Methods
{% capture notice-1 %}
___
[Flashing ntrboot (3DS Single System)](flashing-ntrboot-(3ds-single-system))
#### Flashing ntrboot (3DS Single System)
This method requires nothing more than your stock unhacked 3DS and a compatible flashcart.
Note that more recent 3DS versions have blocked access to some flashcarts, and some flashcarts have always been blocked on the 3DS. This leaves them unable to launch the flasher `.nds` file on some (or all) versions. The ntrboot compatible flashcarts are able to launch `.nds` files on the 3DS (under the listed versions):
+ [R4i Gold 3DS (RTS)](http://www.nds-card.com/ProShow.asp?ProID=149) : <= 11.5.0
+ [R4i Gold 3DS (RTS)](http://www.nds-card.com/ProShow.asp?ProID=149) : <= 11.6.0
+ [Acekard 2i](http://www.nds-card.com/ProShow.asp?ProID=160) : <= 4.3.0
+ R4i Gold 3DS "Starter" : 4.1.0 - 4.5.0
+ R4i Ultra : <= 4.3.0
+ Infinity 3 R4i : <= 11.5.0
+ Infinity 3 R4i : <= 11.6.0
{% endcapture %}
Continue to [Flashing ntrboot (3DS Single System)](flashing-ntrboot-(3ds-single-system))
{: .notice--primary}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
___
{% capture notice-1 %}
#### Flashing ntrboot (3DS Multi System)
[Flashing ntrboot (3DS Multi System)](flashing-ntrboot-(3ds-multi-system))
This method requires temporary access to a second 3DS family device that is already running boot9strap.
This method requires temporary access to a second 3DS family device that is already running some kind of custom firmware (such as boot9strap or arm9loaderhax).
Continue to [Flashing ntrboot (3DS Multi System)](flashing-ntrboot-(3ds-multi-system))
{: .notice--primary}
{% endcapture %}
___
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
{% capture notice-1 %}
[Flashing ntrboot (NDS)](flashing-ntrboot-(nds))
#### Flashing ntrboot (NDS)
This method requires temporary access to a Nintendo DS or Nintendo DS Lite that is compatible with your flashcart.
{% endcapture %}
Continue to [Flashing ntrboot (NDS)](flashing-ntrboot-(nds))
{: .notice--primary}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
___
{% capture notice-1 %}
[Flashing ntrboot (DSi)](flashing-ntrboot-(dsi))
#### Flashing ntrboot (DSi)
This method requires temporary access to a Nintendo DSi that is compatible with your flashcart.
@ -86,16 +88,14 @@ Note that more recent DSi versions have blocked access to some flashcarts. This
+ R4i Ultra : <= 1.4.1
+ Infinity 3 R4i : <= 1.4.5
{% endcapture %}
Continue to [Flashing ntrboot (DSi)](flashing-ntrboot-(dsi))
{: .notice--primary}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
___
{% capture notice-1 %}
[Flashing ntrboot (Powersaves)](flashing-ntrboot-(powersaves))
#### Flashing ntrboot (Powersaves)
This method, once ready, will require temporary access to a [Powersaves](https://amzn.to/2fb3VY7). This method is not yet complete, and as such is just a placeholder page.
{% endcapture %}
<div class="notice--primary">{{ notice-1 | markdownify }}</div>
Continue to [Flashing ntrboot (Powersaves)](flashing-ntrboot-(powersaves))
{: .notice--primary}

View File

@ -2,16 +2,17 @@
title: "Troubleshooting"
---
If you are unable to boot your device, please look for the section relevant to you, and follow the instructions. Once a solution works for you, you can proceed on with the main guide
(The section is fairly long, try using Ctrl+F to search for your issue.)
{% include toc title="Table of Contents" %}
If you are unable to boot your device, please look for the section relevant to you and follow the instructions.
If you still cannot solve your issue and need to reach out for help, please paste the contents of all relevant .log files from the root of your SD card into a [Gist](https://gist.github.com/), then come for help prepared with a detailed description of your problem and what you've tried.
To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on this page, you will need a torrent client like [Deluge](http://dev.deluge-torrent.org/wiki/Download)
To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on this page, you will need a torrent client like [Deluge](http://dev.deluge-torrent.org/wiki/Download).
## <a name="twl_broken" />DSi / DS functionality is broken after completing the guide
## DSi / DS functionality is broken after completing the guide
#### What you need
### What you need
* The TWL_FIRM `.cia` for your device
+ <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`New_3DS TWL_FIRM - v9936.cia`](magnet:?xt=urn:btih:eab8558c97b18b1f329a2bfcc3c899b84c082a27&dn=New%5F3DS%20TWL%5FFIRM%20-%20v9936.cia&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
@ -21,9 +22,9 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th
* <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`DS Download Play - v1024.cia`](magnet:?xt=urn:btih:b581d3c5d98f5e621fddfc1ce5704bb45bf05a8c&dn=DS%20Download%20Play%20-%20v1024.cia&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
* <i class="fa fa-magnet" aria-hidden="true" title="This is a magnet link. Use a torrent client to download the file."></i> - [`Nintendo DS Cart Whitelist - v11264.cia`](magnet:?xt=urn:btih:7b90d506ad032a581a00035616eaa17a68c48eff&dn=Nintendo%20DS%20Cart%20Whitelist%20-%20v11264.cia&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce)
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
1. Create a folder named `cias` on the root of your SD card if it does not already exist
1. Copy `TWL Version Data - v0.cia` to the `/cias/` folder on your SD card
@ -32,7 +33,7 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th
1. Copy `Nintendo DS Cart Whitelist - v11264.cia` to the `/cias/` folder on your SD card
1. Copy either `New_3DS TWL_FIRM - v9936.cia` or `Old_3DS TWL_FIRM - v8817.cia` to the `/cias/` folder on your SD card
##### Section II - Installing titles
#### Section II - Installing titles
1. Launch FBI
1. Navigate to `SD` -> `cias`
@ -40,9 +41,12 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th
1. Select "Install and delete all CIAs"
1. Press (Home) to exit FBI
## <a name="rm_nnid" />Removing an NNID without formatting your device
## Removing an NNID without formatting your device
1. Launch GodMode9 by pressing (A)
Note that if you have any payload files other than `GodMode9.firm` in the `/luma/payloads/` folder on your SD card, holding (Start) on boot will display a "chainloader menu" where you will have to use the D-Pad and the (A) button to select "GodMode9" for these instructions.
{: .notice--info}
1. Launch GodMode9 by holding (Start) during boot
1. Navigate to `[1:] SYSNAND CTRNAND` -> `data` -> (32 Character ID) -> `sysdata` -> `00010038`
1. Hold down the (R) trigger, then press (X) on `00000000` to rename this file
1. Press (Up) once to change the name to `10000000`
@ -51,14 +55,15 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th
1. Navigate back to the Main Menu
1. Press (Start) to reboot your device
## <a name="ts_browser" />A browser based exploit is not working
Browser based exploits (such as browserhax or 2xrsa) are often unstable and crash frequently, but they can sometimes be fixed by doing the following steps
## A browser based exploit is not working
Browser based exploits (such as browserhax or 2xrsa) are often unstable and crash frequently, but they can sometimes be fixed by doing the following steps.
1. Launch the browser, then launch the browser settings
1. Scroll to the bottom and Initialize Savedata (it also may be called Clear All Save Data)
1. Try the exploit again
## <a name="ts_sys_down" />Black screen on SysNAND boot
## Black screen on SysNAND boot
1. Try booting with your SD card out, and then reinserting it after booting
1. Power off your device
@ -75,17 +80,15 @@ Browser based exploits (such as browserhax or 2xrsa) are often unstable and cras
1. Try booting without any cartridges inserted (including flashcarts)
1. If you have a hardmod and a NAND backup, flash the backup back to SysNAND
1. Try booting into recovery mode and updating your system
*This probably will not work for an Old 3DS downgraded to 2.1.0*
**This will BRICK a New 3DS downgraded to 2.1.0**
1. Power off your device
1. Hold (L) + (R) + (A) + (Up)
1. Power on your device
1. If you enter safe mode, update your device *only if you have an entrypoint for the latest FW version and it is possible to downgrade from it* and attempt the downgrade again.
1. If you enter safe mode, update your device
1. Your device may be bricked. For support, ask for help at [Nintendo Homebrew on Discord](https://discord.gg/MWxPgEp)
## <a name="ts_sys_b9s" />Black screen on SysNAND boot after Installing boot9strap
## Black screen on SysNAND boot after Installing boot9strap
1. Ensure you have a working payload.
1. Ensure you have a working payload
1. Check for the existence of `boot.firm` in the root of your SD card.
1. Try resetting Luma's config and fix options
1. Delete `/luma/config.bin` from your SD card
@ -101,47 +104,18 @@ Browser based exploits (such as browserhax or 2xrsa) are often unstable and cras
+ KOR Region: Delete `000000A9`
+ TWN Region: Delete `000000B1`
1. Try booting without any cartridges inserted (including flashcarts)
1. If you previously downgraded with Gateway, ensure that you are using the latest Luma3DS version (v6.2.3 or higher, at the least)
1. If you previously downgraded with Gateway, ensure that you are using the latest Luma3DS version (v6.2.3 or higher)
1. If your NAND is of a version between 3.0.0 and 4.5.0, do the following:
+ Ensure that you are using the latest Luma3DS version (v6.6 or higher, at the least)
+ Download [this file](http://nus.cdn.c.shop.nintendowifi.net/ccs/download/0004013800000002/00000056) and rename it to `firmware.bin`
+ Ensure that you are using the latest Luma3DS version (v6.6 or higher)
+ Download [this file](http://nus.cdn.c.shop.nintendowifi.net/ccs/download/0004013800000002/00000056) and rename it to `native.firm`
+ Download [this file](http://nus.cdn.c.shop.nintendowifi.net/ccs/download/0004013800000002/cetk)
+ Copy `firmware.bin` and `cetk` to the `/luma/` folder on your SD card
+ Copy `native.firm` and `cetk` to the `/luma/` folder on your SD card
+ If you have Luma3DS version 7.1 or lower, rename `native.firm` to `firmware.bin`
+ Delete both of these files after updating your device
1. Try following [9.2.0 CTRTransfer](9.2.0-ctrtransfer)
1. Try following [CTRTransfer](ctrtransfer)
1. Ask for help at [Nintendo Homebrew on Discord](https://discord.gg/MWxPgEp).
## <a name="ts_transfer" />Error during SafeB9SInstaller
If an error occurs during the SafeB9SInstaller process, you will be prompted to launch an external payload for the purpose of repairing your device.
#### What you need
* The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest)
#### Instructions
1. Select "Unmount SD card"
1. Insert your SD card into your computer
1. Copy `GodMode9.bin` from the GodMode9 `.zip` to the `/boot9strap/` folder on your SD card and rename `GodMode9.bin` in `/boot9strap/` to `payload.bin`
1. Reinsert your SD card into your device
1. Select "Run 0:/CTRTransfer/payload.bin"
1. If it was successful, you will have entered GodMode9
1. Navigate to `[0:] SDCARD` -> `boot9strap`
1. Press the (L) trigger on `firm0firm1.bak` and `sector0x96.bak` to mark them
1. Press (Y) to copy the files
1. Press (B) twice to return to the main menu
1. Navigate to `[S:] SYSNAND VIRTUAL`
1. Press (Y) to paste the files
1. Press (A) to confirm
1. Press (A) to inject the files
1. Press (A) to unlock SysNAND overwriting
1. Input the key combo given to unlock SysNAND (lvl3) writing
1. Once it has completed, press (A) to continue
1. Press (Start) to reboot your device
1. Report this issue to the [SafeB9SInstaller Issues Page](https://github.com/d0k3/SafeB9SInstaller/issues)
## <a name="ts_sys_blue" />Blue screen on boot (bootrom error)
## Blue screen on boot (bootrom error)
1. Your device is bricked
1. You will need to get a [hardmod](https://gbatemp.net/threads/414498/) or repair / replace your device

View File

@ -2,6 +2,8 @@
title: "Updating B9S"
---
{% include toc title="Table of Contents" %}
This page is for existing boot9strap users to update their installation of boot9strap to the latest version.
{% capture notice-1 %}
@ -20,15 +22,15 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte
<div class="notice--danger">{{ notice-1 | markdownify }}</div>
#### What you need
### What you need
* The latest release of [SafeB9SInstaller](https://github.com/d0k3/SafeB9SInstaller/releases/latest)
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(standard boot9strap; not the `devkit` file, not the `ntr` file)*
* [`cleanup_sd_card.gm9`]({{ base_path }}/gm9_scripts/cleanup_sd_card.gm9)
* The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(the `devkit` file, not the `ntr` file)*
* [`cleanup_sd_card.gm9`]({{ "/gm9_scripts/cleanup_sd_card.gm9" | absolute_url }})
#### Instructions
### Instructions
##### Section I - Prep Work
#### Section I - Prep Work
For all steps in this section, overwrite any existing files on your SD card.
{: .notice--info}
@ -38,10 +40,10 @@ For all steps in this section, overwrite any existing files on your SD card.
1. Create a folder named `boot9strap` on the root of your SD card
1. Copy `cleanup_sd_card.gm9` to the `/gm9/scripts/` folder on your SD card
1. Copy `SafeB9SInstaller.firm` from the SafeB9SInstaller `.zip` to the `/luma/payloads/` folder on your SD card
1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card
1. Copy `boot9strap_dev.firm` and `boot9strap_dev.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card
1. Reinsert your SD card into your device
##### Section II - Installing boot9strap
#### Section II - Installing boot9strap
1. Reboot holding (Start) during boot to launch the Luma3DS chainloader menu
1. Launch SafeB9SInstaller by pressing (A)
@ -49,7 +51,7 @@ For all steps in this section, overwrite any existing files on your SD card.
1. When prompted, input the key combo given to install boot9strap
1. Once it has completed, hold (Start) while pressing (A) to reboot your device to the Luma3DS chainloader
##### Section III - Cleanup SD Card
#### Section III - Cleanup SD Card
1. Launch GodMode9 by holding (Start) during boot
1. If you are prompted to create an essential files backup, press (A) to do so, then press (A) to continue once it has completed

View File

@ -1,153 +0,0 @@
/* ==========================================================================
BUTTONS
========================================================================== */
/*
Default button
========================================================================== */
.btn {
/* default button */
display: inline-block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
color: #fff !important;
font-family: $sans-serif;
font-size: $type-size-6;
font-weight: bold;
text-align: center;
text-decoration: none;
background-color: $primary-color;
border: 0 !important;
border-radius: $border-radius;
cursor: pointer;
&:hover {
background-color: mix(white, #000, 20%);
}
.icon {
margin-right: 0.5em;
}
.icon + .hidden {
margin-left: -0.5em; /* override for hidden text*/
}
/* fills width of parent container */
&--block {
display: block;
width: 100%;
+ .btn--block {
margin-top: 0.25em;
}
}
/* for dark backgrounds */
&--inverse {
color: $gray !important;
border: 1px solid $light-gray !important; /* override*/
background-color: #fff;
&:hover {
color: #fff !important;
border-color: $gray;
}
}
/* light outline */
&--light-outline {
border: 1px solid #fff !important; /* override*/
background-color: transparent;
}
/* information */
&--info {
background-color: $info-color;
&:hover {
background-color: mix(#000, $info-color, 20%);
}
}
/* warning */
&--warning {
background-color: $warning-color;
&:hover {
background-color: mix(#000, $warning-color, 20%);
}
}
/* success */
&--success {
background-color: $success-color;
&:hover {
background-color: mix(#000, $success-color, 20%);
}
}
/* danger */
&--danger {
background-color: $danger-color;
&:hover {
background-color: mix(#000, $danger-color, 20%);
}
}
/* disabled */
&--disabled {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65;
}
/* social buttons */
$social:
(facebook, $facebook-color),
(twitter, $twitter-color),
(google-plus, $google-plus-color),
(linkedin, $linkedin-color);
@each $socialnetwork, $color in $social {
&--#{$socialnetwork} {
background-color: $color;
&:hover {
background-color: mix(#000, $color, 20%);
}
}
}
/* extra large button */
&--x-large {
font-size: $type-size-4;
}
/* large button */
&--large {
font-size: $type-size-5;
}
/* small button */
&--small {
font-size: $type-size-7;
}
}

View File

@ -1,552 +0,0 @@
/* ==========================================================================
NAVIGATION
========================================================================== */
/*
Breadcrumb navigation links
========================================================================== */
.breadcrumbs {
@include container;
@include clearfix;
margin-top: 0;
margin-bottom: 0;
padding-left: 2em;
padding-right: 2em;
font-family: $sans-serif;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation-delay: 0.30s;
animation-delay: 0.30s;
@include breakpoint($large) {
padding-left: 1em;
padding-right: 1em;
}
@include breakpoint($x-large) {
max-width: $x-large;
}
ol {
padding: 0;
list-style: none;
font-size: $type-size-6;
@include breakpoint($large) {
@include span(10 of 12 last);
}
@include breakpoint($x-large) {
@include prefix(0.5 of 12);
}
}
li {
display: inline;
}
.current {
font-weight: bold;
}
}
/*
Post pagination navigation links
========================================================================== */
.pagination {
@include full();
@include clearfix();
margin-top: 1em;
padding-top: 1em;
ul {
margin: 0;
padding: 0;
list-style-type: none;
font-family: $sans-serif;
}
li {
display: block;
float: left;
margin-left: -1px;
a {
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: $sans-serif;
font-size: 14px;
font-weight: bold;
line-height: 1.5;
text-align: center;
text-decoration: none;
color: mix(#fff, $gray, 25%);
border: 1px solid $light-gray;
border-radius: 0;
&:hover {
color: $link-color-hover;
}
&.current {
color: #fff;
background: $nord1;
}
&.disabled {
color: mix(#fff, $gray, 75%);
pointer-events: none;
cursor: not-allowed;
}
}
&:first-child {
margin-left: 0;
a {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
}
&:last-child {
a {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
}
}
/* next/previous buttons */
&--pager {
display: block;
padding: 1em 2em;
float: left;
width: 50%;
font-family: $sans-serif;
font-size: $type-size-5;
font-weight: bold;
text-align: center;
text-decoration: none;
color: $link-color;
border: 1px solid $light-gray;
border-radius: $border-radius;
&:hover {
color: $link-color-hover;
}
&:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
&:last-child {
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
&.disabled {
color: mix(#fff, $gray, 75%);
pointer-events: none;
cursor: not-allowed;
}
}
}
.page__content + .pagination,
.page__meta + .pagination,
.page__share + .pagination,
.page__comments + .pagination {
margin-top: 2em;
padding-top: 2em;
border-top: 1px solid $border-color;
}
/*
Priority plus navigation
========================================================================== */
.greedy-nav {
position: relative;
min-width: 250px;
background: $nord1;
a {
display: block;
margin: 0 1rem;
padding: 0.5rem 0;
color: $masthead-link-color;
text-decoration: none;
&:hover {
color: $masthead-link-color-hover;
}
}
button {
position: absolute;
height: 100%;
right: 0;
top: 0;
padding: 0 0.5rem;
border: 0;
outline: none;
background: transparent;
color: $nord0;
cursor: pointer;
}
.nav-selector {
right: 3rem;
}
.visible-links {
display: table;
li {
display: table-cell;
vertical-align: middle;
&:first-child {
font-weight: bold;
a {
margin-left: 0;
}
}
&:last-child {
a {
margin-right: 0;
}
}
}
a {
position: relative;
&:before {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 4px;
background: mix(#fff, $primary-color, 50%);
width: 100%;
-webkit-transition: $global-transition;
transition: $global-transition;
-webkit-transform: scaleX(0) translate3d(0, 0 , 0);
-ms-transform: scaleX(0) translate3d(0, 0 , 0);
transform: scaleX(0) translate3d(0, 0 , 0); /* hide*/
}
&:hover:before {
-webkit-transform: scaleX(1);
-ms-transform: scaleX(1);
transform: scaleX(1); /* reveal*/
}
}
}
.hidden-links {
position: absolute;
top: 100%;
right: 0;
margin-top: 15px;
padding: 5px;
border: 1px solid $border-color;
border-radius: $border-radius;
background: $nord1;
box-shadow: 0 0 10px rgba(#000, 0.25);
a {
margin: 0;
padding: 10px 20px;
font-size: $type-size-5;
&:hover {
color: $masthead-link-color-hover;
background: mix(#000, $primary-color, 75%);
}
}
&:before {
content: "";
position: absolute;
top: -11px;
right: 14px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: mix(#000, $border-color, 55%) transparent;
display: block;
z-index: 0;
}
&:after {
content: "";
position: absolute;
top: -10px;
right: 14px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #fff transparent;
display: block;
z-index: 1;
}
li {
display: block;
border-bottom: 1px solid $nord3;
&:last-child {
border-bottom: none;
}
}
}
.links-menu {
right: 3rem;
}
}
/*
Navigation list
========================================================================== */
.nav__list {
margin-bottom: 1.5em;
input[type="checkbox"],
label {
display: none;
}
@include breakpoint(max-width ($large - 1px)) {
label {
position: relative;
display: inline-block;
padding: 0.5em 2.5em 0.5em 1em;
color: $gray;
font-size: $type-size-6;
font-weight: bold;
border: 1px solid $light-gray;
border-radius: $border-radius;
z-index: 20;
-webkit-transition: 0.2s ease-out;
transition: 0.2s ease-out;
cursor: pointer;
&:before,
&:after {
content: '';
position: absolute;
right: 1em;
top: 1.25em;
width: 0.75em;
height: 0.125em;
line-height: 1;
background-color: $gray;
transition: 0.2s ease-out;
}
&:after {
transform: rotate(90deg);
}
&:hover {
color: #fff;
border-color: $gray;
background-color: mix(white, #000, 20%);
&:before,
&:after {
background-color: #fff;
}
}
}
/* selected*/
input:checked + label {
color: white;
background-color: mix(white, #000, 20%);
&:before,
&:after {
background-color: #fff;
}
}
// on hover show expand
label:hover:after {
transform: rotate(90deg);
}
input:checked + label:hover:after {
transform: rotate(0);
}
ul {
margin-bottom: 1em;
}
a {
display: block;
padding: 0.25em 0;
@include breakpoint($large) {
padding-top: 0.125em;
padding-bottom: 0.125em;
}
&:hover {
text-decoration: underline;
}
}
}
}
.nav__list .nav__items {
margin: 0;
font-size: 1.25rem;
a {
color: inherit;
}
.active {
margin-left: -0.5em;
padding-left: 0.5em;
padding-right: 0.5em;
color: #fff;
font-weight: bold;
background: $primary-color;
border-radius: $border-radius;
&:hover {
color: #fff;
}
}
@include breakpoint(max-width ($large - 1px)) {
position: relative;
max-height: 0;
opacity: 0%;
overflow: hidden;
z-index: 10;
-webkit-transition: 0.3s ease-in-out;
transition: 0.3s ease-in-out;
-webkit-transform: translate(0, 10%);
-ms-transform: translate(0, 10%);
transform: translate(0, 10%);
}
}
@include breakpoint(max-width ($large - 1px)) {
.nav__list input:checked ~ .nav__items {
-webkit-transition: 0.5s ease-in-out;
transition: 0.5s ease-in-out;
max-height: 9999px; // exaggerate max-height to accommodate tall lists
overflow: visible;
opacity: 1;
margin-top: 1em;
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
}
.nav__title {
margin: 0;
padding: 0.5rem 1rem;
font-family: $sans-serif-narrow;
font-size: $type-size-5;
font-weight: bold;
}
.nav__sub-title {
display: block;
margin: 0.5rem 0;
padding: 0.5rem 0;
font-family: $sans-serif-narrow;
font-size: $type-size-6;
font-weight: bold;
text-transform: uppercase;
border-bottom: 1px solid $border-color;
}
/*
Table of contents navigation
========================================================================== */
.toc {
font-family: $sans-serif-narrow;
color: $gray;
text-transform: uppercase;
letter-spacing: 1px;
background-color: #fff;
border: 1px solid $border-color;
border-radius: $border-radius;
box-shadow: $box-shadow;
.nav__title {
color: #fff;
font-size: $type-size-6;
background: $primary-color;
border-top-left-radius: $border-radius;
border-top-right-radius: $border-radius;
}
}
.toc__menu {
margin: 0;
padding: 0;
width: 100%;
list-style: none;
font-size: 0.8rem;
a {
display: block;
padding: 0.5rem 1rem;
color: $gray;
font-size: $type-size-7;
font-weight: bold;
line-height: 1.5;
border-bottom: 1px solid $border-color;
&:hover {
color: #000;
background: $lighter-gray;
}
}
> li:last-child {
a {
border-bottom: none;
}
}
li ul > li a {
padding-left: 2rem;
font-weight: normal;
}
/* hide sub sub links on small screens*/
li > ul li {
display: none;
@include breakpoint($medium) {
display: block;
}
}
}

View File

@ -1,241 +0,0 @@
//
// ++++++++++++++++++++++++++++++++++++++++++++++++++++
// title Nord +
// project nord +
// version 0.2.0 +
// repository https://github.com/arcticicestudio/nord +
// author Arctic Ice Studio +
// email development@arcticicestudio.com +
// copyright Copyright (C) 2017 +
// ++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// [References]
// Sass
// (http://sass-lang.com)
// SassDoc
// (http://sassdoc.com)
////
/// An arctic, north-bluish color palette.
/// Created for the clean- and minimal flat design pattern to achieve a optimal focus and readability for code syntax
/// highlighting and UI.
/// It consists of a total of sixteen, carefully selected, dimmed pastel colors for a eye-comfortable, but yet colorful
/// ambiance.
///
/// @author Arctic Ice Studio <development@arcticicestudio.com>
////
/// Base component color of "Polar Night".
///
/// Used for texts, backgrounds, carets and structuring characters like curly- and square brackets.
///
/// @access public
/// @example scss - SCSS
/// /* For dark ambiance themes */
/// .background {
/// background-color: $nord0;
/// }
/// /* For light ambiance themes */
/// .text {
/// color: $nord0;
/// }
/// @group polarnight
/// @since 0.1.0
$nord0: #2E3440;
/// Lighter shade color of the base component color.
///
/// Used as a lighter background color for UI elements like status bars.
///
/// @access public
/// @group polarnight
/// @see $nord0
/// @since 0.1.0
$nord1: #3B4252;
/// Lighter shade color of the base component color.
///
/// Used as line highlighting in the editor.
/// In the UI scope it may be used as selection- and hightlight color.
///
/// @access public
/// @example scss - SCSS
/// /* Code Syntax Highlighting scope */
/// .editor {
/// &.line {
/// background-color: $nord2;
/// }
/// }
///
/// /* UI scope */
/// button {
/// &:selected {
/// background-color: $nord2;
/// }
/// }
/// @group polarnight
/// @see $nord0
/// @since 0.1.0
$nord2: #434C5E;
/// Lighter shade color of the base component color.
///
/// Used for comments, invisibles, indent- and wrap guide marker.
/// In the UI scope used as pseudoclass color for disabled elements.
///
/// @access public
/// @example scss - SCSS
/// /* Code Syntax Highlighting scope */
/// .editor {
/// &.indent-guide,
/// &.wrap-guide {
/// &.marker {
/// color: $nord3;
/// }
/// }
/// }
/// .comment,
/// .invisible {
/// color: $nord3;
/// }
///
/// /* UI scope */
/// button {
/// &:disabled {
/// background-color: $nord3;
/// }
/// }
/// @group polarnight
/// @see $nord0
/// @since 0.1.0
$nord3: #4C566A;
/// Base component color of "Snow Storm".
///
/// Main color for text, variables, constants and attributes.
/// In the UI scope used as semi-light background depending on the theme shading design.
///
/// @access public
/// @example scss - SCSS
/// /* For light ambiance themes */
/// .background {
/// background-color: $nord4;
/// }
/// /* For dark ambiance themes */
/// .text {
/// color: $nord4;
/// }
/// @group snowstorm
/// @since 0.1.0
$nord4: #D8DEE9;
/// Lighter shade color of the base component color.
///
/// Used as a lighter background color for UI elements like status bars.
/// Used as semi-light background depending on the theme shading design.
///
/// @access public
/// @group snowstorm
/// @see $nord4
/// @since 0.1.0
$nord5: #E5E9F0;
/// Lighter shade color of the base component color.
///
/// Used for punctuations, carets and structuring characters like curly- and square brackets.
/// In the UI scope used as background, selection- and hightlight color depending on the theme shading design.
///
/// @access public
/// @group snowstorm
/// @see $nord4
/// @since 0.1.0
$nord6: #ECEFF4;
/// Bluish core color.
///
/// Used for classes, types and documentation tags.
///
/// @access public
/// @group frost
/// @since 0.1.0
$nord7: #8FBCBB;
/// Bluish core accent color.
///
/// Represents the accent color of the color palette.
/// Main color for primary UI elements and methods/functions.
///
/// Can be used for
/// - Markup quotes
/// - Markup link URLs
///
/// @access public
/// @group frost
/// @since 0.1.0
$nord8: #88C0D0;
/// Bluish core color.
///
/// Used for language-specific syntactic/reserved support characters and keywords, operators, tags, units and
/// punctuations like (semi)colons,commas and braces.
///
/// @access public
/// @group frost
/// @since 0.1.0
$nord9: #81A1C1;
/// Bluish core color.
///
/// Used for markup doctypes, import/include/require statements, pre-processor statements and at-rules (`@`).
///
/// @access public
/// @group frost
/// @since 0.1.0
$nord10: #5E81AC;
/// Colorful component color.
///
/// Used for errors, git/diff deletion and linter marker.
///
/// @access public
/// @group aurora
/// @since 0.1.0
$nord11: #BF616A;
/// Colorful component color.
///
/// Used for annotations.
///
/// @access public
/// @group aurora
/// @since 0.1.0
$nord12: #D08770;
/// Colorful component color.
///
/// Used for escape characters, regular expressions and markup entities.
/// In the UI scope used for warnings and git/diff renamings.
///
/// @access public
/// @group aurora
/// @since 0.1.0
$nord13: #EBCB8B;
/// Colorful component color.
///
/// Main color for strings and attribute values.
/// In the UI scope used for git/diff additions and success visualizations.
///
/// @access public
/// @group aurora
/// @since 0.1.0
$nord14: #A3BE8C;
/// Colorful component color.
///
/// Used for numbers.
///
/// @access public
/// @group aurora
/// @since 0.1.0
$nord15: #B48EAD;

View File

@ -1,18 +0,0 @@
/* ==========================================================================
PRINT STYLES
========================================================================== */
/*
Hide the following elements on print
========================================================================== */
@media print {
.masthead,
.toc,
.page__share,
.page__related,
.ads,
.page__footer {
display: none;
}
}

View File

@ -1,130 +0,0 @@
/* ==========================================================================
Variables
========================================================================== */
@import "nord";
/*
Typography
========================================================================== */
$doc-font-size : 16 !default;
/* paragraph indention */
$paragraph-indent : false !default; // true, false (default)
$indent-var : 1.3em !default;
/* system typefaces */
$serif : Georgia, Times, serif !default;
$sans-serif : -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif !default;
$monospace : Monaco, Consolas, "Lucida Console", monospace !default;
/* sans serif typefaces */
$sans-serif-narrow : $sans-serif !default;
$helvetica : Helvetica, "Helvetica Neue", Arial, sans-serif !default;
/* serif typefaces */
$georgia : Georgia, serif !default;
$times : Times, serif !default;
$bodoni : "Bodoni MT", serif !default;
$calisto : "Calisto MT", serif !default;
$garamond : Garamond, serif !default;
$global-font-family : $sans-serif !default;
$header-font-family : $sans-serif !default;
$caption-font-family : $serif !default;
/* type scale */
$type-size-1 : 2.441em !default; // ~39.056px
$type-size-2 : 1.953em !default; // ~31.248px
$type-size-3 : 1.563em !default; // ~25.008px
$type-size-4 : 1.25em !default; // ~20px
$type-size-5 : .9em !default; // ~16px
$type-size-6 : 0.75em !default; // ~12px
$type-size-7 : 0.6875em !default; // ~11px
$type-size-8 : 0.625em !default; // ~10px
/*
Colors
========================================================================== */
$gray : #7a8288 !default;
$dark-gray : mix(#000, $gray, 40%) !default;
$darker-gray : mix(#000, $gray, 60%) !default;
$light-gray : mix(#fff, $gray, 50%) !default;
$lighter-gray : mix(#fff, $gray, 90%) !default;
$body-color : $nord0 !default;
$background-color : $nord0 !default;
$code-background-color : $nord2 !default;
$code-background-color-dark : $nord1 !default;
$text-color : $nord4 !default;
$border-color : $nord5 !default;
$primary-color : $nord4 !default;
$success-color : $nord14 !default;
$warning-color : $nord12 !default;
$danger-color : $nord11 !default;
$info-color : $nord10 !default;
/* brands */
$behance-color : #1769FF !default;
$dribbble-color : #ea4c89 !default;
$facebook-color : #3b5998 !default;
$flickr-color : #ff0084 !default;
$foursquare-color : #0072b1 !default;
$github-color : #171516 !default;
$google-plus-color : #dd4b39 !default;
$instagram-color : #517fa4 !default;
$lastfm-color : #d51007 !default;
$linkedin-color : #007bb6 !default;
$pinterest-color : #cb2027 !default;
$rss-color : #fa9b39 !default;
$soundcloud-color : #ff3300 !default;
$stackoverflow-color : #fe7a15 !default;
$tumblr-color : #32506d !default;
$twitter-color : #55acee !default;
$vimeo-color : #1ab7ea !default;
$vine-color : #00bf8f !default;
$youtube-color : #bb0000 !default;
$xing-color : #006567 !default;
/* links */
$link-color : mix(#fff, $info-color, 15%) !default;
$link-color-hover : mix(#fff, $link-color, 25%) !default;
$link-color-visited : mix(#000, $link-color, 25%) !default;
$masthead-link-color : $primary-color !default;
$masthead-link-color-hover : mix(#fff, $primary-color, 25%) !default;
/*
Breakpoints
========================================================================== */
$small : 768px !default;
$medium : 900px !default;
$medium-wide : 1024px !default;
$large : 1280px !default;
$x-large : 1400px !default;
/*
Grid
========================================================================== */
$right-sidebar-width-narrow : 200px !default;
$right-sidebar-width : 300px !default;
$right-sidebar-width-wide : 400px !default;
/*
Other
========================================================================== */
$border-radius : 4px !default;
$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125) !default;
$navicon-width : 28px !default;
$navicon-height : 4px !default;
$global-transition : all 0.2s ease-in-out !default;

View File

@ -0,0 +1,40 @@
/*!
* Minimal Mistakes Jekyll Theme 4.6.0 by Michael Rose
* Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
* Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt)
*/
/* Variables */
@import "minimal-mistakes/variables";
/* Mixins and functions */
@import "minimal-mistakes/vendor/breakpoint/breakpoint";
@include breakpoint-set("to ems", true);
@import "minimal-mistakes/vendor/font-awesome/font-awesome";
@import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup
@import "minimal-mistakes/vendor/susy/susy";
@import "minimal-mistakes/mixins";
/* Core CSS */
@import "minimal-mistakes/reset";
@import "minimal-mistakes/base";
@import "minimal-mistakes/forms";
@import "minimal-mistakes/tables";
@import "minimal-mistakes/animations";
/* Components */
@import "minimal-mistakes/buttons";
@import "minimal-mistakes/notices";
@import "minimal-mistakes/masthead";
@import "minimal-mistakes/navigation";
@import "minimal-mistakes/footer";
@import "minimal-mistakes/syntax";
/* Utility classes */
@import "minimal-mistakes/utilities";
/* Layout specific */
@import "minimal-mistakes/page";
@import "minimal-mistakes/archive";
@import "minimal-mistakes/sidebar";
@import "minimal-mistakes/print";

View File

@ -5,13 +5,15 @@
.archive {
margin-bottom: 2em;
@include breakpoint($medium) {
@include span(12 of 12);
@include breakpoint($large) {
float: right;
width: calc(100% - #{$right-sidebar-width-narrow});
padding-right: $right-sidebar-width-narrow;
}
@include breakpoint($large) {
@include span(10 of 12 last);
@include prefix(0.5 of 12);
@include breakpoint($x-large) {
width: calc(100% - #{$right-sidebar-width});
padding-right: $right-sidebar-width;
}
a {
@ -24,7 +26,7 @@
margin: 1.414em 0 0;
padding-bottom: 0.5em;
font-size: $type-size-5;
color: mix(#fff, $gray, 25%);
color: $muted-text-color;
border-bottom: 1px solid $border-color;
+ .list__item .archive__item-title {
@ -35,6 +37,8 @@
.archive__item-title {
margin-bottom: 0.25em;
font-family: $sans-serif-narrow;
overflow: hidden;
text-overflow: ellipsis;
a + a {
opacity: 0.5;
@ -68,6 +72,7 @@
}
.archive__item:hover {
.archive__item-teaser {
box-shadow: 0 0 10px rgba(#000, 0.25);
}
@ -83,17 +88,6 @@
========================================================================== */
.list__item {
@include breakpoint($medium) {
padding-right: $right-sidebar-width-narrow;
}
@include breakpoint($large) {
padding-right: $right-sidebar-width;
}
@include breakpoint($x-large) {
padding-right: $right-sidebar-width-wide;
}
.page__meta {
margin: 0 0 4px;
@ -105,9 +99,68 @@
Grid view
========================================================================== */
.archive {
.grid__wrapper {
/* extend grid elements to the right */
@include breakpoint($large) {
margin-right: -1 * $right-sidebar-width-narrow;
}
@include breakpoint($x-large) {
margin-right: -1 * $right-sidebar-width;
}
}
}
.grid__item {
margin-bottom: 2em;
@include breakpoint($small) {
float: left;
width: span(5 of 10);
&:nth-child(2n+1) {
clear: both;
margin-left: 0;
}
&:nth-child(2n+2) {
clear: none;
margin-left: gutter(of 10);
}
}
@include breakpoint($medium) {
margin-left: 0; /* override margin*/
margin-right: 0; /* override margin*/
width: span(3 of 12);
&:nth-child(2n+1) {
clear: none;
}
&:nth-child(4n+1) {
clear: both;
}
&:nth-child(4n+2) {
clear: none;
margin-left: gutter(1 of 12);
}
&:nth-child(4n+3) {
clear: none;
margin-left: gutter(1 of 12);
}
&:nth-child(4n+4) {
clear: none;
margin-left: gutter(1 of 12);
}
}
.page__meta {
margin: 0 0 4px;
}
@ -119,28 +172,22 @@
.archive__item-excerpt {
display: none;
@include breakpoint($medium) {
display: block;
font-size: $type-size-6;
}
}
@include breakpoint($small) {
@include gallery(5 of 10);
.archive__item-teaser {
@include breakpoint($small) {
max-height: 200px;
}
}
@include breakpoint($medium) {
margin-left: 0; /* reset before mixin does its thing*/
margin-right: 0; /* reset before mixin does its thing*/
@include gallery(2.5 of 10);
.archive__item-teaser {
max-height: 120px;
}
.archive__item-excerpt {
display: block;
font-size: $type-size-6;
}
}
}
@ -160,8 +207,24 @@
font-size: 1.25rem;
@include breakpoint($small) {
float: left;
margin-bottom: 0;
@include gallery(4 of 12);
width: span(4 of 12);
&:nth-child(3n+1) {
clear: both;
margin-left: 0;
}
&:nth-child(3n+2) {
clear: none;
margin-left: gutter(of 12);
}
&:nth-child(3n+3) {
clear: none;
margin-left: gutter(of 12);
}
.feature__item-teaser {
max-height: 200px;
@ -170,7 +233,11 @@
}
&--left {
@include full();
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.25rem;
.archive__item-teaser {
@ -178,20 +245,27 @@
}
@include breakpoint($small) {
.archive__item-teaser {
@include span(5 of 12);
float: left;
width: span(5 of 12);
}
.archive__item-body {
@include span(7 of 12 last);
@include prefix(0.5 of 12);
@include suffix(1 of 12);
float: right;
padding-left: gutter(0.5 of 12);
padding-right: gutter(1 of 12);
width: span(7 of 12);
}
}
}
&--right {
@include full();
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.25rem;
.archive__item-teaser {
@ -202,19 +276,25 @@
text-align: right;
.archive__item-teaser {
@include span(5 of 12 rtl);
float: right;
width: span(5 of 12);
}
.archive__item-body {
@include span(7 of 12 last rtl);
@include prefix(0.5 of 12);
@include suffix(1 of 12);
float: right;
width: span(7 of 12);
padding-left: gutter(0.5 of 12);
padding-right: gutter(1 of 12);
}
}
}
&--center {
@include full();
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
font-size: 1.25rem;
.archive__item-teaser {

View File

@ -118,8 +118,13 @@ a {
&:hover,
&:active {
color: $link-color-hover;
outline: 0;
}
&:visited {
color: $link-color-visited;
}
}
/* code */
@ -141,7 +146,7 @@ td > code {
padding-bottom: 0.1rem;
font-size: $type-size-6;
background: $code-background-color;
border: 1px solid $lighter-gray;
border: 1px solid $border-color;
border-radius: $border-radius;
box-shadow: $box-shadow;
@ -236,20 +241,16 @@ figure {
figcaption {
margin-bottom: 0.5em;
color: mix(#fff, $text-color, 25%);
color: $muted-text-color;
font-family: $caption-font-family;
font-size: $type-size-6;
a {
color: inherit;
text-decoration: none;
border-bottom: 1px solid $light-gray;
-webkit-transition: $global-transition;
transition: $global-transition;
&:hover {
color: #000;
border-bottom-color: #000;
color: $link-color-hover;
}
}
}

View File

@ -0,0 +1,98 @@
/* ==========================================================================
BUTTONS
========================================================================== */
/*
Default button
========================================================================== */
.btn {
/* default */
display: inline-block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: $sans-serif;
font-size: $type-size-6;
font-weight: bold;
text-align: center;
text-decoration: none;
border-width: 0;
border-radius: $border-radius;
cursor: pointer;
.icon {
margin-right: 0.5em;
}
.icon + .hidden {
margin-left: -0.5em; /* override for hidden text*/
}
/* button colors */
$buttoncolors:
(primary, $primary-color),
(inverse, #fff),
(light-outline, transparent),
(success, $success-color),
(warning, $warning-color),
(danger, $danger-color),
(info, $info-color),
(facebook, $facebook-color),
(twitter, $twitter-color),
(google-plus, $google-plus-color),
(linkedin, $linkedin-color);
@each $buttoncolor, $color in $buttoncolors {
&--#{$buttoncolor} {
@include yiq-contrasted($color);
@if ($buttoncolor == inverse) {
border: 1px solid $border-color;
}
@if ($buttoncolor == light-outline) {
border: 1px solid #fff;
}
&:hover {
@include yiq-contrasted(mix(#000, $color, 20%));
}
&:visited {
@include yiq-contrasted($color);
}
}
}
/* fills width of parent container */
&--block {
display: block;
width: 100%;
+ .btn--block {
margin-top: 0.25em;
}
}
/* disabled */
&--disabled {
pointer-events: none;
cursor: not-allowed;
filter: alpha(opacity=65);
box-shadow: none;
opacity: 0.65;
}
/* extra large button */
&--x-large {
font-size: $type-size-4;
}
/* large button */
&--large {
font-size: $type-size-5;
}
/* small button */
&--small {
font-size: $type-size-7;
}
}

View File

@ -3,28 +3,31 @@
========================================================================== */
.page__footer {
@include full();
@include clearfix;
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
/* sticky footer fix start */
position: absolute;
bottom: 0;
width: 100%;
clear: both;
height: auto;
/* sticky footer fix end */
margin-top: 3em;
color: $primary-color;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
color: $muted-text-color;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.45s;
animation-delay: 0.45s;
background-color: $nord1;
border-top: 1px solid $light-gray;
background-color: $footer-background-color;
footer {
@include container;
@include clearfix;
margin-left: auto;
margin-right: auto;
margin-top: 2em;
max-width: 100%;
padding: 0 1em 2em;
@include breakpoint($x-large) {
@ -33,7 +36,7 @@
}
a {
color: mix(#fff, $link-color, 20%);
color: inherit;
text-decoration: none;
&:hover {
@ -42,7 +45,7 @@
}
.fa {
color: mix(#fff, $gray, 25%);
color: $muted-text-color;
}
}

View File

@ -4,6 +4,8 @@
form {
margin: 0 0 5px 0;
padding: 1em;
background-color: $form-background-color;
fieldset {
margin-bottom: 5px;
@ -19,7 +21,6 @@ form {
padding: 0;
color: $text-color;
border: 0;
border-bottom: 1px solid mix(#fff, #000, 80%);
white-space: normal;
}
@ -80,14 +81,10 @@ select {
padding: 0.25em;
margin-bottom: 0.5em;
color: $text-color;
background-color: #fff;
border: 1px solid mix(#fff, #000, 80%);
background-color: $background-color;
border: $border-color;
border-radius: $border-radius;
box-shadow: $box-shadow;
&:hover {
border-color: mix(#fff, $primary-color, 50%);
}
}
.input-mini {
@ -224,6 +221,7 @@ textarea:focus {
border-color: $primary-color;
outline: 0;
outline: thin dotted \9;
box-shadow: inset 0 1px 3px rgba($text-color, 0.06), 0 0 5px rgba($primary-color, 0.7);
}
input[type="file"]:focus,
@ -240,7 +238,7 @@ select:focus {
.help-block,
.help-inline {
color: $info-color;
color: $muted-text-color;
}
.help-block {
@ -382,7 +380,7 @@ select:focus {
color: #000;
border-width: 2px !important;
border-style: solid !important;
border-color: lighten(#000,50);
border-color: $border-color;
border-radius: $border-radius;
}

View File

@ -4,18 +4,23 @@
.masthead {
position: relative;
background: $nord1;
border-bottom: 1px solid $border-color;
-webkit-animation: intro 0.3s both;
animation: intro 0.3s both;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.15s;
animation-delay: 0.15s;
z-index: 20;
&__inner-wrap {
@include container;
@include clearfix;
padding: 1em 1em 1em;
margin-left: auto;
margin-right: auto;
padding: 1em;
max-width: 100%;
display: -webkit-box;
display: flex;
-webkit-box-pack: justify;
justify-content: space-between;
font-family: $sans-serif-narrow;
@include breakpoint($x-large) {
@ -32,7 +37,31 @@
}
}
.site-title {
display: -webkit-box;
display: flex;
padding: 0.5rem 0;
align-self: stretch;
-webkit-box-align: center;
align-items: center;
font-weight: bold;
z-index: 20;
}
.masthead__menu {
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
.site-nav {
margin-left: 0;
@include breakpoint($small) {
float: right;
}
}
ul {
margin: 0;

View File

@ -51,3 +51,42 @@
display: table;
}
}
/*
Compass YIQ Color Contrast
https://github.com/easy-designs/yiq-color-contrast
========================================================================== */
@function yiq-is-light(
$color,
$threshold: $yiq-contrasted-threshold
) {
$red: red($color);
$green: green($color);
$blue: blue($color);
$yiq: (($red*299)+($green*587)+($blue*114))/1000;
@if $yiq-debug { @debug $yiq, $threshold; }
@return if($yiq >= $threshold, true, false);
}
@function yiq-contrast-color(
$color,
$dark: $yiq-contrasted-dark-default,
$light: $yiq-contrasted-light-default,
$threshold: $yiq-contrasted-threshold
) {
@return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default);
}
@mixin yiq-contrasted(
$background-color,
$dark: $yiq-contrasted-dark-default,
$light: $yiq-contrasted-light-default,
$threshold: $yiq-contrasted-threshold
) {
background-color: $background-color;
color: yiq-contrast-color($background-color, $dark, $light, $threshold);
}

View File

@ -0,0 +1,569 @@
/* ==========================================================================
NAVIGATION
========================================================================== */
/*
Breadcrumb navigation links
========================================================================== */
.breadcrumbs {
@include clearfix;
margin: 0 auto;
max-width: 100%;
padding-left: 2em;
padding-right: 2em;
font-family: $sans-serif;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.30s;
animation-delay: 0.30s;
@include breakpoint($large) {
padding-left: 1em;
padding-right: 1em;
}
@include breakpoint($x-large) {
max-width: $x-large;
}
ol {
padding: 0;
list-style: none;
font-size: $type-size-6;
@include breakpoint($large) {
float: right;
width: span(10 of 12);
}
@include breakpoint($x-large) {
padding-left: gutter(0.5 of 12);
}
}
li {
display: inline;
}
.current {
font-weight: bold;
}
}
/*
Post pagination navigation links
========================================================================== */
.pagination {
@include clearfix();
float: left;
margin-top: 1em;
padding-top: 1em;
width: 100%;
ul {
margin: 0;
padding: 0;
list-style-type: none;
font-family: $sans-serif;
}
li {
display: block;
float: left;
margin-left: -1px;
a {
display: block;
margin-bottom: 0.25em;
padding: 0.5em 1em;
font-family: $sans-serif;
font-size: 14px;
font-weight: bold;
line-height: 1.5;
text-align: center;
text-decoration: none;
color: $muted-text-color;
border: 1px solid mix(#000, $border-color, 25%);
border-radius: 0;
&:hover {
color: $link-color-hover;
}
&.current,
&.current.disabled {
color: #fff;
background: $primary-color;
}
&.disabled {
color: rgba($muted-text-color, 0.5);
pointer-events: none;
cursor: not-allowed;
}
}
&:first-child {
margin-left: 0;
a {
border-top-left-radius: $border-radius;
border-bottom-left-radius: $border-radius;
}
}
&:last-child {
a {
border-top-right-radius: $border-radius;
border-bottom-right-radius: $border-radius;
}
}
}
/* next/previous buttons */
&--pager {
display: block;
padding: 1em 2em;
float: left;
width: 50%;
font-family: $sans-serif;
font-size: $type-size-5;
font-weight: bold;
text-align: center;
text-decoration: none;
color: $muted-text-color;
border: 1px solid mix(#000, $border-color, 25%);
border-radius: $border-radius;
&:hover {
@include yiq-contrasted($muted-text-color);
}
&:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
&:last-child {
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
&.disabled {
color: rgba($muted-text-color, 0.5);
pointer-events: none;
cursor: not-allowed;
}
}
}
.page__content + .pagination,
.page__meta + .pagination,
.page__share + .pagination,
.page__comments + .pagination {
margin-top: 2em;
padding-top: 2em;
border-top: 1px solid $border-color;
}
/*
Priority plus navigation
========================================================================== */
.greedy-nav {
position: relative;
display: -webkit-box;
display: flex;
-webkit-box-align: center;
align-items: center;
background: $background-color;
a {
display: block;
margin: 0 1rem;
padding: 0.5rem 0;
color: $masthead-link-color;
text-decoration: none;
&:hover {
color: $masthead-link-color-hover;
}
&.site-title {
margin-left: 0;
}
}
button {
padding: 0 0.5rem;
align-self: stretch;
border: 0;
outline: none;
color: #fff;
background: transparent;
cursor: pointer;
}
.visible-links {
display: -webkit-box;
display: flex;
-webkit-box-pack: end;
-webkit-box-flex: 1;
flex: 1;
padding-right: 2rem;
overflow: hidden;
li {
-webkit-box-flex: 0;
flex: none;
&:first-child {
a {
margin-left: 0;
}
}
&:last-child {
a {
margin-right: 0;
}
}
}
a {
position: relative;
&:before {
content: "";
position: absolute;
left: 0;
bottom: 0;
height: 4px;
background: $primary-color;
width: 100%;
-webkit-transition: $global-transition;
transition: $global-transition;
-webkit-transform: scaleX(0) translate3d(0, 0 , 0);
transform: scaleX(0) translate3d(0, 0 , 0); /* hide*/
}
&:hover:before {
-webkit-transform: scaleX(1);
-ms-transform: scaleX(1);
transform: scaleX(1); /* reveal*/
}
}
}
.links-menu{
right: 2.5rem;
}
.lang-menu{
right: .2rem;
}
.hidden-links {
position: absolute;
top: 100%;
margin-top: 15px;
padding: 5px;
border: 1px solid $border-color;
border-radius: $border-radius;
background: $background-color;
box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
&.hidden {
display: none;
}
a {
margin: 0;
padding: 10px 20px;
font-size: $type-size-5;
&:hover {
color: $masthead-link-color-hover;
background: $navicon-link-color-hover;
}
}
&:before {
content: "";
position: absolute;
top: -11px;
right: 5px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: $border-color transparent;
display: block;
z-index: 0;
}
&:after {
content: "";
position: absolute;
top: -10px;
right: 5px;
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: $background-color transparent;
display: block;
z-index: 1;
}
li {
display: block;
border-bottom: 1px solid $border-color;
&:last-child {
border-bottom: none;
}
}
}
}
/*
Navigation list
========================================================================== */
.nav__list {
margin-bottom: 1.5em;
input[type="checkbox"],
label {
display: none;
}
@include breakpoint(max-width ($large - 1px)) {
label {
position: relative;
display: inline-block;
padding: 0.5em 2.5em 0.5em 1em;
font-size: $type-size-6;
font-weight: bold;
border: 1px solid $light-gray;
border-radius: $border-radius;
z-index: 20;
-webkit-transition: 0.2s ease-out;
transition: 0.2s ease-out;
cursor: pointer;
&:before,
&:after {
content: '';
position: absolute;
right: 1em;
top: 1.25em;
width: 0.75em;
height: 0.125em;
line-height: 1;
background-color: $gray;
-webkit-transition: 0.2s ease-out;
transition: 0.2s ease-out;
}
&:after {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
&:hover {
color: #fff;
border-color: $gray;
background-color: mix(white, #000, 20%);
&:before,
&:after {
background-color: #fff;
}
}
}
/* selected*/
input:checked + label {
color: white;
background-color: mix(white, #000, 20%);
&:before,
&:after {
background-color: #fff;
}
}
/* on hover show expand*/
label:hover:after {
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
input:checked + label:hover:after {
-webkit-transform: rotate(0);
-ms-transform: rotate(0);
transform: rotate(0);
}
ul {
margin-bottom: 1em;
}
a {
display: block;
padding: 0.25em 0;
@include breakpoint($large) {
padding-top: 0.125em;
padding-bottom: 0.125em;
}
&:hover {
text-decoration: underline;
}
}
}
}
.nav__list .nav__items {
margin: 0;
font-size: 1.4rem;
a {
color: inherit;
line-height: 1.6;
}
ol {
padding-left: 0.9rem;
}
li {
list-style: inherit;
}
.active {
font-weight: bold;
}
.completed {
color: $gray;
text-decoration: line-through;
}
@include breakpoint(max-width ($large - 1px)) {
position: relative;
max-height: 0;
opacity: 0%;
overflow: hidden;
z-index: 10;
-webkit-transition: 0.3s ease-in-out;
transition: 0.3s ease-in-out;
-webkit-transform: translate(0, 10%);
-ms-transform: translate(0, 10%);
transform: translate(0, 10%);
}
}
@include breakpoint(max-width ($large - 1px)) {
.nav__list input:checked ~ .nav__items {
-webkit-transition: 0.5s ease-in-out;
transition: 0.5s ease-in-out;
max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/
overflow: visible;
opacity: 1;
margin-top: 1em;
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
}
.nav__title {
margin: 0;
padding: 0.5rem 1rem;
font-family: $sans-serif-narrow;
font-size: $type-size-5;
font-weight: bold;
}
.nav__sub-title {
display: block;
margin: 0.5rem 0;
padding: 0.5rem 0;
font-family: $sans-serif-narrow;
font-size: $type-size-6;
font-weight: bold;
text-transform: uppercase;
border-bottom: 1px solid $border-color;
}
/*
Table of contents navigation
========================================================================== */
.toc {
font-family: $sans-serif-narrow;
color: $gray;
text-transform: uppercase;
letter-spacing: 1px;
background-color: $background-color;
border: 1px solid $border-color;
border-radius: $border-radius;
box-shadow: $box-shadow;
.nav__title {
color: #fff;
font-size: $type-size-6;
background: $primary-color;
border-top-left-radius: $border-radius;
border-top-right-radius: $border-radius;
}
}
.toc__menu {
margin: 0;
padding: 0;
width: 100%;
list-style: none;
font-size: 1rem;
a {
display: block;
padding: 0.5rem 1rem;
color: $text-color;
font-size: $type-size-7;
font-weight: bold;
line-height: 1.5;
border-bottom: 1px solid $border-color;
}
> li:last-child {
a {
border-bottom: none;
}
}
li ul > li a {
padding-left: 1.75rem;
font-weight: normal;
}
/* hide sub sub links on small screens*/
li > ul li {
display: none;
@include breakpoint($medium) {
display: block;
}
}
}

View File

@ -15,9 +15,9 @@
padding: 1em;
font-family: $global-font-family;
font-size: $type-size-6 !important;
font-weight: bold;
text-indent: initial; /* override*/
background-color: mix($body-color, $notice-color, 45%);
font-weight: bold;
background-color: mix($background-color, $notice-color, 45%);
border-radius: $border-radius;
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
@ -63,13 +63,13 @@
/* Default notice */
.notice {
@include notice($nord3);
@include notice($light-gray);
}
/* Primary notice */
.notice--primary {
@include notice($nord8);
@include notice($primary-color);
}
/* Info notice */

View File

@ -3,12 +3,16 @@
========================================================================== */
#main {
@include container;
@include clearfix;
margin-left: auto;
margin-top: 2em;
margin-right: auto;
padding-left: 1em;
padding-right: 1em;
animation: intro 0.3s both;
-webkit-animation: $intro-transition;
animation: $intro-transition;
max-width: 100%;
-webkit-animation-delay: 0.35s;
animation-delay: 0.35s;
@include breakpoint($x-large) {
@ -17,19 +21,34 @@
}
.page {
@include breakpoint($large) {
@include span(10 of 12 last);
@include prefix(0.5 of 12);
@include suffix(2 of 12);
float: right;
width: calc(100% - #{$right-sidebar-width-narrow});
padding-right: $right-sidebar-width-narrow;
}
@include breakpoint($x-large) {
width: calc(100% - #{$right-sidebar-width});
padding-right: $right-sidebar-width;
}
.page__inner-wrap {
@include full();
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
.page__content,
.page__meta,
.page__share {
@include full();
position: relative;
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
}
}
}
@ -56,7 +75,7 @@
}
p, li, dl {
font-size: .9em;
font-size: .85em;
}
/* paragraph indents */
@ -72,8 +91,7 @@
}
}
a {
text-decoration: none;
a:not(.btn) {
&:hover {
text-decoration: underline;
@ -84,10 +102,6 @@
}
}
hr {
border-top-color: $nord3;
}
dt {
margin-top: 1em;
font-family: $sans-serif;
@ -115,7 +129,9 @@
position: relative;
margin-bottom: 2em;
@include clearfix;
animation: intro 0.3s both;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.25s;
animation-delay: 0.25s;
&--overlay {
@ -126,7 +142,9 @@
background-size: cover;
background-repeat: no-repeat;
background-position: center;
animation: intro 0.3s both;
-webkit-animation: $intro-transition;
animation: $intro-transition;
-webkit-animation-delay: 0.25s;
animation-delay: 0.25s;
a {
@ -183,7 +201,7 @@
text-align: right;
z-index: 5;
opacity: 0.5;
border-radius: $border-radius 0 $border-radius 0;
border-radius: $border-radius 0 0 0;
@include breakpoint($large) {
padding: 5px 10px;
@ -231,7 +249,7 @@
.page__meta {
margin-top: 2em;
color: mix(#fff, $gray, 25%);
color: $muted-text-color;
font-family: $sans-serif;
font-size: $type-size-6;
@ -271,7 +289,7 @@
margin-bottom: 8px;
padding: 5px 10px;
text-decoration: none;
border: 1px solid $light-gray;
border: 1px solid mix(#000, $border-color, 25%);
border-radius: $border-radius;
&:hover {
@ -286,7 +304,11 @@
========================================================================== */
.page__comments {
@include full();
float: left;
margin-left: 0;
margin-right: 0;
width: 100%;
clear: both;
}
.page__comments-title {
@ -299,8 +321,7 @@
}
.page__comments-form {
padding: 1em;
background: $lighter-gray;
-webkit-transition: $global-transition;
transition: $global-transition;
&.disabled {
@ -382,14 +403,19 @@
========================================================================== */
.page__related {
@include clearfix();
float: left;
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid $border-color;
@include clearfix();
float: left;
@include breakpoint($large) {
@include pre(2.5 of 12);
float: right;
width: calc(100% - #{$right-sidebar-width-narrow});
}
@include breakpoint($x-large) {
width: calc(100% - #{$right-sidebar-width});
}
a {

View File

@ -0,0 +1,252 @@
/* ==========================================================================
PRINT STYLES
========================================================================== */
@media print {
[hidden] {
display: none;
}
* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
html {
margin: 0;
padding: 0;
min-height: auto !important;
font-size: 16px;
}
body {
margin: 0 auto;
background: #fff !important;
color: #000 !important;
font-size: 1rem;
line-height: 1.5;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: #000;
line-height: 1.2;
margin-bottom: 0.75rem;
margin-top: 0;
}
h1 {
font-size: 2.5rem;
}
h2 {
font-size: 2rem;
}
h3 {
font-size: 1.75rem;
}
h4 {
font-size: 1.5rem;
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
a,
a:visited {
color: #000;
text-decoration: underline;
word-wrap: break-word;
}
table {
border-collapse: collapse;
}
thead {
display: table-header-group;
}
table,
th,
td {
border-bottom: 1px solid #000;
}
td,
th {
padding: 8px 16px;
}
img {
border: 0;
display: block;
max-width: 100% !important;
vertical-align: middle;
}
hr {
border: 0;
border-bottom: 2px solid #bbb;
height: 0;
margin: 2.25rem 0;
padding: 0;
}
dt {
font-weight: bold;
}
dd {
margin: 0;
margin-bottom: 0.75rem;
}
abbr[title],
acronym[title] {
border: 0;
text-decoration: none;
}
table,
blockquote,
pre,
code,
figure,
li,
hr,
ul,
ol,
a,
tr {
page-break-inside: avoid;
}
h2,
h3,
h4,
p,
a {
orphans: 3;
widows: 3;
}
h1,
h2,
h3,
h4,
h5,
h6 {
page-break-after: avoid;
page-break-inside: avoid;
}
h1 + p,
h2 + p,
h3 + p {
page-break-before: avoid;
}
img {
page-break-after: auto;
page-break-before: auto;
page-break-inside: avoid;
}
pre {
white-space: pre-wrap !important;
word-wrap: break-word;
}
a[href^='http://']:after,
a[href^='https://']:after,
a[href^='ftp://']:after {
content: " (" attr(href) ")";
font-size: 80%;
}
abbr[title]:after,
acronym[title]:after {
content: " (" attr(title) ")";
}
#main {
max-width: 100%;
}
.page {
margin: 0;
padding: 0;
width: 100%;
}
.page-break,
.page-break-before {
page-break-before: always;
}
.page-break-after {
page-break-after: always;
}
.no-print {
display: none;
}
a.no-reformat:after {
content: '';
}
abbr[title].no-reformat:after,
acronym[title].no-reformat:after {
content: '';
}
.page__hero-caption {
color: #000 !important;
background: #fff !important;
opacity: 1;
a {
color: #000 !important;
}
}
/*
Hide the following elements on print
========================================================================== */
.masthead,
.toc,
.page__share,
.page__related,
.pagination,
.ads,
.page__footer,
.page__comments-form,
.author__avatar,
.author__content,
.author__urls-wrapper,
.nav__list,
.sidebar,
.adsbygoogle {
display: none !important;
height: 1px !important;
}
}

View File

@ -2,7 +2,7 @@
STYLE RESETS
========================================================================== */
@include border-box-sizing;
* { box-sizing: border-box; }
html {
/* apply a natural box layout model to all elements */

View File

@ -7,25 +7,39 @@
========================================================================== */
.sidebar {
@include clearfix();
margin-bottom: 1em;
-webkit-transform: translate3d(0, 0 , 0);
transform: translate3d(0, 0 , 0);
@include clearfix();
margin-bottom: 1em;
@include breakpoint(max-width $large) {
/* fix z-index order of follow links */
position: relative;
z-index: 10;
}
@include breakpoint($large) {
@include span(2 of 12);
opacity: 0.75;
float: left;
width: calc(#{$right-sidebar-width-narrow} - 1em);
opacity: 1;
-webkit-transition: opacity 0.2s ease-in-out;
transition: opacity 0.2s ease-in-out;
a {
&:hover {
opacity: 1;
text-decoration: underline;
}
}
&.sticky {
overflow-y: auto;
/* calculate height of nav list */
height: calc(100vh - 90px - 2em); // viewport height - approx. masthead height - main content top margin
}
}
@include breakpoint($x-large) {
padding-right: 0;
width: calc(#{$right-sidebar-width} - 1em);
}
h2, h3, h4, h5, h6 {
@ -48,15 +62,31 @@
margin-bottom: 1em;
@include breakpoint($large) {
position: relative;
float: right;
position: absolute;
top: 0;
right: 0;
width: $right-sidebar-width-narrow;
margin-left: span(0.5 of 12);
margin-right: -1 * $right-sidebar-width-narrow;
padding-left: 1em;
z-index: 10;
}
@include breakpoint($x-large) {
width: $right-sidebar-width;
margin-right: -1 * $right-sidebar-width;
}
}
.splash .sidebar__right {
@include breakpoint($large) {
position: relative;
float: right;
margin-right: 0;
}
@include breakpoint($x-large) {
margin-right: 0;
}
}
@ -161,11 +191,15 @@
list-style-type: none;
border: 1px solid $border-color;
border-radius: $border-radius;
background: #fff;
background: $background-color;
z-index: -1;
box-shadow: 0 0 10px rgba(#000, 0.25);
box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
cursor: default;
&.is--visible {
display: block;
}
@include breakpoint($large) {
display: block;
position: relative;
@ -202,7 +236,7 @@
width: 0;
border-style: solid;
border-width: 0 10px 10px;
border-color: #fff transparent;
border-color: $background-color transparent;
z-index: 1;
@include breakpoint($large) {

View File

@ -5,10 +5,9 @@
div.highlighter-rouge,
figure.highlight {
position: relative;
margin-top: 1em;
margin-bottom: 1em;
font-family: $monospace;
font-size: $type-size-7;
font-size: $type-size-6;
line-height: 1.8;
border: 1px solid $border-color;
border-radius: $border-radius;
@ -26,7 +25,6 @@ figure.highlight {
line-height: 1;
text-transform: none;
speak: none;
color: $background-color;
}
.highlight {
@ -48,10 +46,10 @@ figure.highlight {
padding: 5px;
border: 0;
// line numbers
/* line numbers*/
&.gutter {
padding-right: 1em;
color: $light-gray;
color: rgba($muted-text-color, 0.5);
}
}

View File

@ -16,7 +16,7 @@ table {
}
thead {
background-color: $nord1;
background-color: mix($background-color, $dark-gray, 45%);;
border-bottom: 1px solid $light-gray;
color: $primary-color;
}

View File

@ -57,7 +57,7 @@ body:hover .visually-hidden button {
background: #fff;
z-index: 100000;
text-decoration: none;
box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
}
@ -114,7 +114,9 @@ body:hover .visually-hidden button {
.cf { clear: both; }
.wrapper {
@include container();
margin-left: auto;
margin-right: auto;
width: 100%;
}
@ -183,7 +185,7 @@ body:hover .visually-hidden button {
.social-icons {
.fa {
color: #000;
color: $text-color;
}
.fa-behance,
@ -191,6 +193,11 @@ body:hover .visually-hidden button {
color: $behance-color;
}
.fa-bitbucket,
.fa-bitbucket-square {
color: $bitbucket-color;
}
.fa-dribbble {
color: $dribbble-color;
}
@ -293,7 +300,8 @@ body:hover .visually-hidden button {
position: relative;
width: $navicon-width;
height: $navicon-height;
background: $primary-color;
top: ($navicon-height / 2);
background: $text-color;
margin: auto;
&:before,
@ -303,7 +311,7 @@ body:hover .visually-hidden button {
left: 0;
width: $navicon-width;
height: $navicon-height;
background: $primary-color;
background: $text-color;
}
&:before {
@ -345,9 +353,10 @@ body:hover .visually-hidden button {
.langicon {
position: relative;
width: $navicon-width;
display: inline-block;
background: transparent;
margin: auto;
color: $primary-color;
color: $text-color;
&:before,
&:after {
@ -356,27 +365,16 @@ body:hover .visually-hidden button {
left: 0;
width: $navicon-width;
height: $navicon-height;
background: $primary-color;
background: $text-color;
display: none;
}
/* overlay the lines by setting both their top values to 0*/
&:before, &:after{
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
top: 0;
width: $navicon-width;
&:before {
top: (-2 * $navicon-height);
}
/* rotate the lines to form the x shape*/
&:before{
-webkit-transform: rotate3d(0,0,1,45deg);
transform: rotate3d(0,0,1,45deg);
}
&:after{
-webkit-transform: rotate3d(0,0,1,-45deg);
transform: rotate3d(0,0,1,-45deg);
&:after {
bottom: (-2 * $navicon-height);
}
}
@ -395,14 +393,23 @@ body:hover .visually-hidden button {
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
top: 0;
width: $navicon-width;
display: block;
-webkit-transition: 0.3s;
transition: 0.3s;
display: inherit;
}
/* rotate the lines to form the x shape*/
&:before{
-webkit-transform: rotate3d(0,0,1,45deg);
transform: rotate3d(0,0,1,45deg);
}
&:after{
top: (-2 * $navicon-height);
-webkit-transform: rotate3d(0,0,1,-45deg);
transform: rotate3d(0,0,1,-45deg);
}
}
/*
Sticky, fixed to top content
========================================================================== */
@ -529,6 +536,48 @@ a.reversefootnote {
}
/*
Google Custom Search Engine
========================================================================== */
.gsc-control-cse {
table, tr, td {
border: 0; /* remove table borders widget */
}
}
/*
Responsive Video Embed
========================================================================== */
.responsive-video-container {
position: relative;
margin-bottom: 1em;
padding-bottom: 56.25%;
height: 0;
overflow: hidden;
max-width: 100%;
iframe,
object,
embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
// full screen video fixes
:-webkit-full-screen-ancestor {
.masthead,
.page__footer {
position: static;
}
}
/*
Ads
========================================================================== */

View File

@ -0,0 +1,137 @@
/* ==========================================================================
Variables
========================================================================== */
/*
Typography
========================================================================== */
$doc-font-size : 16 !default;
/* paragraph indention */
$paragraph-indent : false !default; // true, false (default)
$indent-var : 1.3em !default;
/* system typefaces */
$serif : Georgia, Times, serif !default;
$sans-serif : -apple-system, ".SFNSText-Regular", "San Francisco", "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif !default;
$monospace : Monaco, Consolas, "Lucida Console", monospace !default;
/* sans serif typefaces */
$sans-serif-narrow : $sans-serif !default;
$helvetica : Helvetica, "Helvetica Neue", Arial, sans-serif !default;
/* serif typefaces */
$georgia : Georgia, serif !default;
$times : Times, serif !default;
$bodoni : "Bodoni MT", serif !default;
$calisto : "Calisto MT", serif !default;
$garamond : Garamond, serif !default;
$global-font-family : $sans-serif !default;
$header-font-family : $sans-serif !default;
$caption-font-family : $serif !default;
/* type scale */
$type-size-1 : 2.441em !default; // ~39.056px
$type-size-2 : 1.953em !default; // ~31.248px
$type-size-3 : 1.563em !default; // ~25.008px
$type-size-4 : 1.25em !default; // ~20px
$type-size-5 : 1em !default;
$type-size-6 : 0.75em !default; // ~12px
$type-size-7 : 0.6875em !default; // ~11px
$type-size-8 : 0.625em !default; // ~10px
/*
Colors
========================================================================== */
$gray : #7a8288 !default;
$dark-gray : mix(#000, $gray, 40%) !default;
$darker-gray : mix(#000, $gray, 60%) !default;
$light-gray : mix(#fff, $gray, 50%) !default;
$lighter-gray : mix(#fff, $gray, 90%) !default;
$background-color : #fff !default;
$code-background-color : #fafafa !default;
$code-background-color-dark : $light-gray !default;
$text-color : $dark-gray !default;
$muted-text-color : mix(#fff, $text-color, 35%) !default;
$border-color : $lighter-gray !default;
$form-background-color : $lighter-gray !default;
$footer-background-color : $lighter-gray !default;
$primary-color : #88C0D0 !default;
$success-color : #A3BE8C !default;
$warning-color : #D08770 !default;
$danger-color : #BF616A !default;
$info-color : #5E81AC !default;
/* YIQ color contrast */
$yiq-contrasted-dark-default : $dark-gray !default;
$yiq-contrasted-light-default : #fff !default;
$yiq-contrasted-threshold : 175 !default;
$yiq-debug : false !default;
/* brands */
$behance-color : #1769FF !default;
$bitbucket-color : #205081 !default;
$dribbble-color : #ea4c89 !default;
$facebook-color : #3b5998 !default;
$flickr-color : #ff0084 !default;
$foursquare-color : #0072b1 !default;
$github-color : #171516 !default;
$google-plus-color : #dd4b39 !default;
$instagram-color : #517fa4 !default;
$lastfm-color : #d51007 !default;
$linkedin-color : #007bb6 !default;
$pinterest-color : #cb2027 !default;
$rss-color : #fa9b39 !default;
$soundcloud-color : #ff3300 !default;
$stackoverflow-color : #fe7a15 !default;
$tumblr-color : #32506d !default;
$twitter-color : #55acee !default;
$vimeo-color : #1ab7ea !default;
$vine-color : #00bf8f !default;
$youtube-color : #bb0000 !default;
$xing-color : #006567 !default;
/* links */
$link-color : mix(#fff, $info-color, 15%) !default;
$link-color-hover : mix(#fff, $link-color, 25%) !default;
$link-color-visited : mix(#000, $link-color, 25%) !default;
$masthead-link-color : $primary-color !default;
$masthead-link-color-hover : mix(#fff, $primary-color, 25%) !default;
$navicon-link-color-hover : mix(#fff, $primary-color, 75%) !default;
/*
Breakpoints
========================================================================== */
$small : 600px !default;
$medium : 768px !default;
$medium-wide : 900px !default;
$large : 1024px !default;
$x-large : 1280px !default;
/*
Grid
========================================================================== */
$right-sidebar-width-narrow : 200px !default;
$right-sidebar-width : 300px !default;
$right-sidebar-width-wide : 400px !default;
/*
Other
========================================================================== */
$border-radius : 4px !default;
$box-shadow : 0 1px 1px rgba(0, 0, 0, 0.125) !default;
$navicon-width : 1.3rem !default;
$navicon-height : 0.22rem !default;
$global-transition : all 0.2s ease-in-out !default;
$intro-transition : intro 0.3s both !default;

View File

@ -0,0 +1,23 @@
/* ==========================================================================
Air skin
========================================================================== */
/* Colors */
$background-color: #eeeeee !default;
$text-color: #222831 !default;
$muted-text-color: #393e46 !default;
$primary-color: #0092ca !default;
$border-color: mix(#fff, #393e46, 75%) !default;
$footer-background-color: $primary-color !default;
$link-color: #393e46 !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: $text-color !default;
$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
.page__footer {
color: #fff !important; // override
}
.page__footer-follow .social-icons .fa {
color: inherit;
}

View File

@ -0,0 +1,34 @@
/* ==========================================================================
Contrast skin
========================================================================== */
/* Colors */
$text-color: #000 !default;
$muted-text-color: $text-color !default;
$primary-color: #ff0000 !default;
$border-color: mix(#fff, $text-color, 75%) !default;
$footer-background-color: #000 !default;
$link-color: #0000ff !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: $text-color !default;
$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
.page__content {
.notice,
.notice--primary,
.notice--info,
.notice--warning,
.notice--success,
.notice--danger {
color: $text-color;
}
}
.page__footer {
color: #fff !important; // override
}
.page__footer-follow .social-icons .fa {
color: inherit;
}

View File

@ -0,0 +1,24 @@
/* ==========================================================================
Dark skin
========================================================================== */
/* Colors */
$background-color: #252a34 !default;
$text-color: #eaeaea !default;
$primary-color: #00adb5 !default;
$border-color: mix(#fff, $background-color, 20%) !default;
$code-background-color: mix(#000, $background-color, 15%) !default;
$code-background-color-dark: mix(#000, $background-color, 20%) !default;
$form-background-color: mix(#000, $background-color, 15%) !default;
$footer-background-color: mix(#000, $background-color, 30%) !default;
$link-color: mix($primary-color, $text-color, 40%) !default;
$link-color-hover: mix(#fff, $link-color, 25%) !default;
$link-color-visited: mix(#000, $link-color, 25%) !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
.author__urls.social-icons .fa,
.page__footer-follow .social-icons .fa {
color: inherit;
}

View File

@ -0,0 +1,5 @@
/* ==========================================================================
Default skin
========================================================================== */
// Intentionally left blank

View File

@ -0,0 +1,15 @@
/* ==========================================================================
Dirt skin
========================================================================== */
/* Colors */
$background-color: #f3f3f3 !default;
$text-color: #343434 !default;
$muted-text-color: #8e8b82 !default;
$primary-color: #343434 !default;
$border-color: #e9dcbe !default;
$footer-background-color: #e9dcbe !default;
$link-color: #343434 !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: $text-color !default;
$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;

View File

@ -0,0 +1,23 @@
/* ==========================================================================
Mint skin
========================================================================== */
/* Colors */
$background-color: #f3f6f6 !default;
$text-color: #40514e !default;
$muted-text-color: #40514e !default;
$primary-color: #11999e !default;
$border-color: mix(#fff, #40514e, 75%) !default;
$footer-background-color: #30e3ca !default;
$link-color: #11999e !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: $text-color !default;
$navicon-link-color-hover: mix(#fff, $text-color, 80%) !default;
.page__footer {
color: #fff !important; // override
}
.page__footer-follow .social-icons .fa {
color: inherit;
}

View File

@ -0,0 +1,24 @@
/* ==========================================================================
Nord skin
========================================================================== */
/* Colors */
$background-color: #2E3440 !default;
$text-color: #D8DEE9 !default;
$primary-color: #88C0D0 !default;
$border-color: mix(#fff, $background-color, 20%) !default;
$code-background-color: mix(#000, $background-color, 15%) !default;
$code-background-color-dark: mix(#000, $background-color, 20%) !default;
$form-background-color: mix(#000, $background-color, 15%) !default;
$footer-background-color: mix(#000, $background-color, 30%) !default;
$link-color: mix($primary-color, $text-color, 40%) !default;
$link-color-hover: mix(#fff, $link-color, 25%) !default;
$link-color-visited: mix(#000, $link-color, 25%) !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
.author__urls.social-icons .fa,
.page__footer-follow .social-icons .fa {
color: inherit;
}

View File

@ -0,0 +1,26 @@
/* ==========================================================================
Sunrise skin
========================================================================== */
/* Colors */
$dark-gray: #0e2431 !default;
$background-color: #e8d5b7 !default;
$text-color: #000 !default;
$muted-text-color: $dark-gray !default;
$primary-color: #fc3a52 !default;
$border-color: mix(#000, $background-color, 20%) !default;
$code-background-color: mix(#fff, $background-color, 20%) !default;
$code-background-color-dark: mix(#000, $background-color, 10%) !default;
$form-background-color: mix(#fff, $background-color, 15%) !default;
$footer-background-color: #f9b248 !default;
$link-color: mix(#000, $primary-color, 10%) !default;
$link-color-hover: mix(#fff, $link-color, 25%) !default;
$link-color-visited: mix(#000, $link-color, 25%) !default;
$masthead-link-color: $text-color !default;
$masthead-link-color-hover: mix(#000, $text-color, 20%) !default;
$navicon-link-color-hover: mix(#000, $background-color, 30%) !default;
.author__urls.social-icons .fa,
.page__footer-follow .social-icons .fa {
color: inherit;
}

Some files were not shown because too many files have changed in this diff Show More