diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..3a287c4514 --- /dev/null +++ b/.editorconfig @@ -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 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..ebe0199207 --- /dev/null +++ b/.gitattributes @@ -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 \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index e9b5ec461d..536ab071ef 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,21 +1,21 @@ -The MIT License (MIT) - -Copyright (c) 2016 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 -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +The MIT License (MIT) + +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 +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Rakefile b/Rakefile new file mode 100644 index 0000000000..921330e6ab --- /dev/null +++ b/Rakefile @@ -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 diff --git a/_config.yml b/_config.yml index dc2bcdaf64..ed4cc77c44 100644 --- a/_config.yml +++ b/_config.yml @@ -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 Guide" @@ -142,28 +144,28 @@ exclude: [ _pages/ca_ES, _pages/cs_CZ, _pages/da_DK, - # _pages/de_DE, + _pages/de_DE, _pages/el_GR, _pages/en_PT, # _pages/en_US, _pages/es_EM, - # _pages/es_ES, - # _pages/fi_FI, - # _pages/fr_FR, - # _pages/he_IL, + _pages/es_ES, + _pages/fi_FI, + _pages/fr_FR, + _pages/he_IL, _pages/hu_HU, _pages/id_ID, - # _pages/it_IT, + _pages/it_IT, _pages/ja_JP, _pages/ko_KR, _pages/ms_MY, _pages/no_NO, _pages/nl_NL, _pages/pl_PL, - # _pages/pt_BR, + _pages/pt_BR, _pages/pt_PT, - # _pages/ro_RO, - # _pages/ru_RU, + _pages/ro_RO, + _pages/ru_RU, _pages/sr_SP, _pages/sv_SE, _pages/th_TH, @@ -171,7 +173,7 @@ exclude: [ _pages/uk_UA, _pages/vi_VN, _pages/zh_CN, - # _pages/zh_TW, + _pages/zh_TW, ] keep_files: @@ -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 @@ -269,6 +271,7 @@ defaults: values: layout: single author_profile: false + sidebar: true - scope: path: "_pages/af_ZA" type: pages @@ -642,4 +645,4 @@ defaults: path: "_pages/zh_TW/home.txt" type: pages values: - permalink: /zh_TW/index:output_ext \ No newline at end of file + permalink: /zh_TW/index:output_ext diff --git a/_data/navigation.yml b/_data/navigation.yml new file mode 100644 index 0000000000..6f30866f3b --- /dev/null +++ b/_data/navigation.yml @@ -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/ \ No newline at end of file diff --git a/_data/navigation/en_US.yml b/_data/navigation/en_US.yml index a2dda970a4..e3d839307f 100644 --- a/_data/navigation/en_US.yml +++ b/_data/navigation/en_US.yml @@ -2,26 +2,37 @@ main: - title: Guide + url: / - title: FAQ - - - title: Troubleshooting + url: faq - title: Donations + url: donations - title: Credits - - - title: A9LH to B9S - - - title: Region Changing - - - 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: Region Changing + url: region-changing + - + title: GodMode9 Usage + url: godmode9-usage + - + title: Site Navigation + url: uninstall-cfw - title: Uninstall CFW + url: site-navigation bottom: - title: For support in English, ask for help at Nintendo Homebrew on Discord. @@ -33,4 +44,80 @@ footer: - title: Site Navigation - - title: Why Ads? \ No newline at end of file + title: Why Ads? +sidebar_title: + - + title: Overall Progress +sidebar_pages: + - + title: Home + url: / + - + title: Get Started (New 3DS) + url: get-started-(new-3ds) + - + title: Get Started (Old 3DS) + url: get-started-(old-3ds) + - + title: Cart Update + url: cart-update + - + 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: Homebrew Launcher (Soundhax) + url: homebrew-launcher-(soundhax) + - + title: Homebrew Launcher (Alternatives) + url: homebrew-launcher-(alternatives) + - + title: NTR and Cubic Ninja + url: ntr-and-cubic-ninja + - + title: Installing boot9strap (2xrsa) + url: installing-boot9strap-(2xrsa) + - + title: Installing boot9strap (Browser) + url: installing-boot9strap-(browser) + - + title: Installing boot9strap (DSiWare) + url: installing-boot9strap-(dsiware) + - + title: Installing boot9strap (DSiWare Game Injection) + url: installing-boot9strap-(dsiware-game-injection) + - + title: Installing boot9strap (DSiWare Save Injection) + url: installing-boot9strap-(dsiware-save-injection) + - + title: Installing boot9strap (Hardmod) + url: installing-boot9strap-(hardmod) + - + title: Installing boot9strap (Homebrew Launcher) + url: installing-boot9strap-(homebrew-launcher) + - + title: Installing boot9strap (MSET) + url: installing-boot9strap-(mset) + - + title: Installing boot9strap (ntrboot) + url: installing-boot9strap-(ntrboot) + - + title: NAND Restore + url: godmode9-usage#restoring-a-nand-backup + - + title: Finalizing Setup + url: finalizing-setup \ No newline at end of file diff --git a/_data/ui-text.yml b/_data/ui-text.yml index 90d232a12e..b25cb7e662 100644 --- a/_data/ui-text.yml +++ b/_data/ui-text.yml @@ -78,17 +78,17 @@ es: &DEFAULT_ES email_label : "Email" recent_posts : "Entradas recientes" undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml" - comment_form_info : - comment_form_comment_label : - comment_form_md_info : - comment_form_name_label : - comment_form_email_label : - comment_form_website_label : - comment_btn_submit : - comment_btn_submitted : - comment_success_msg : - comment_error_msg : - loading_label : + comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos" + comment_form_comment_label : "Comentario" + comment_form_md_info : "Markdown está soportado." + comment_form_name_label : "Nombre" + comment_form_email_label : "Dirección de E-mail" + comment_form_website_label : "Sitio web (opcional)" + comment_btn_submit : "Enviar Commentario" + comment_btn_submitted : "Enviado" + comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado" + comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo" + loading_label : "Cargando..." es-ES: <<: *DEFAULT_ES es-CO: @@ -105,7 +105,7 @@ fr: &DEFAULT_FR menu_label : toc_label : "Sur cette page" ext_link_label : "Lien direct" - less_than : "plus petit que" + less_than : "moins de" minute_read : "minute de lecture" share_on_label : "Partager sur" meta_label : @@ -115,8 +115,8 @@ fr: &DEFAULT_FR comments_label : "Laisser un commentaire" comments_title : more_label : "Lire plus" - related_label : "Vous pourriez aimer" - follow_label : "Suivez moi" + related_label : "Vous pourriez aimer aussi" + follow_label : "Contact" feed_label : "Flux" powered_by : "Propulsé par" website_label : "Site" @@ -132,7 +132,7 @@ fr: &DEFAULT_FR comment_form_website_label : "Site web (optionnel)" comment_btn_submit : "Envoyer" comment_btn_submitted : "Envoyé" - comment_success_msg : "Merci pour votre comentaire, il sera visible sur le site une fois approuvé." + comment_success_msg : "Merci pour votre commentaire, il sera visible sur le site une fois approuvé." comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez." loading_label : "Chargement..." fr-FR: @@ -318,46 +318,83 @@ zh: &DEFAULT_ZH pagination_next : "向后" breadcrumb_home_label : "首页" breadcrumb_separator : "/" - menu_label : + menu_label : "切换菜单" toc_label : "在本页上" ext_link_label : "直接链接" less_than : "少于" - minute_read : "分钟 阅读" + minute_read : "分钟读完" share_on_label : "分享" meta_label : tags_label : "标签:" categories_label : "分类:" - date_label : "最新的:" + date_label : "更新时间:" comments_label : "留下评论" comments_title : "评论" more_label : "了解更多" related_label : "猜您还喜欢" follow_label : "关注:" feed_label : "Feed" - powered_by : "Powered by" + powered_by : "技术来自于" website_label : "网站" - email_label : "Email" + email_label : "电子邮箱" recent_posts : "最新文章" - undefined_wpm : "Undefined parameter words_per_minute at _config.yml" - comment_form_info : "Your email address will not be published. Required fields are marked" - comment_form_comment_label : "Comment" - comment_form_md_info : "Markdown is supported." - comment_form_name_label : "Name" - comment_form_email_label : "Email address" - comment_form_website_label : "Website (optional)" - comment_btn_submit : "Submit Comment" - comment_btn_submitted : "Submitted" - comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved." - comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." - loading_label : "Loading..." + undefined_wpm : "_config.yml配置中words_per_minute字段未定义" + comment_form_info : "您的电子邮箱地址并不会被展示。请填写标记为必须的字段。" + comment_form_comment_label : "评论" + comment_form_md_info : "Markdown语法已支持。" + comment_form_name_label : "姓名" + comment_form_email_label : "电子邮箱" + comment_form_website_label : "网站(可选)" + comment_btn_submit : "提交评论" + comment_btn_submitted : "已提交" + comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。" + comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。" + loading_label : "正在加载..." zh-CN: <<: *DEFAULT_ZH zh-HK: <<: *DEFAULT_ZH zh-SG: <<: *DEFAULT_ZH +# Taiwan (Traditional Chinese) zh-TW: - <<: *DEFAULT_ZH + page : "頁面" + pagination_previous : "較舊" + pagination_next : "較新" + breadcrumb_home_label : "首頁" + breadcrumb_separator : "/" + menu_label : "切換選單" + toc_label : "本頁" + ext_link_label : "外部連結" + less_than : "少於" + minute_read : "分鐘閱讀" + share_on_label : "分享到" + meta_label : + tags_label : "標籤:" + categories_label : "分類:" + date_label : "更新時間:" + comments_label : "留言" + comments_title : "留言內容" + more_label : "了解更多" + related_label : "猜您有與趣" + follow_label : "追蹤:" + feed_label : "RSS Feed" + powered_by : "Powered by" + website_label : "網站" + email_label : "電子信箱" + recent_posts : "最新文章" + undefined_wpm : "_config.yml 中未定義 words_per_minute" + comment_form_info : "您的電子信箱不會被公開. 必填部份已標記" + comment_form_comment_label : "留言內容" + comment_form_md_info : "支援Markdown語法。" + comment_form_name_label : "名字" + comment_form_email_label : "電子信箱帳號" + comment_form_website_label : "網頁 (可選填)" + comment_btn_submit : "送出留言" + comment_btn_submitted : "已送出" + comment_success_msg : "感謝您的留言! 審核後將會顯示在站上。" + comment_error_msg : "抱歉,部份資料輸入有問題。請確認資料填寫正確後再試一次。" + loading_label : "載入中..." # German / Deutsch # ----------------- @@ -412,5 +449,440 @@ de-LI: de-LU: <<: *DEFAULT_DE +# Nepali (Nepal) +# ----------------- +ne: &DEFAULT_NE + page : "पृष्‍ठ" + pagination_previous : "अघिल्लो" + pagination_next : "अर्को" + breadcrumb_home_label : "गृह" + breadcrumb_separator : "/" + menu_label : "टगल मेनु" + toc_label : "यो पृष्‍ठमा" + ext_link_label : "सिधा सम्पर्क" + less_than : "कम्तिमा" + minute_read : "मिनेट पढ्नुहोस्" + share_on_label : "शेयर गर्नुहोस्" + meta_label : + tags_label : "ट्यागहरू:" + categories_label : "वर्गहरु:" + date_label : "अद्यावधिक:" + comments_label : "टिप्पणी दिनुहोस्" + comments_title : "टिप्पणीहरू" + more_label : "अझै सिक्नुहोस्" + related_label : "तपाईं रुचाउन सक्नुहुन्छ " + follow_label : "पछ्याउनुहोस्:" + feed_label : "फिड" + powered_by : "Powered by" + website_label : "वेबसाइट" + email_label : "इमेल" + recent_posts : "ताजा लेखहरु" + undefined_wpm : "अपरिभाषित प्यारामिटर शब्दहरू_प्रति_मिनेट at _config.yml" + comment_form_info : "तपाइँको इमेल ठेगाना प्रकाशित गरिने छैन।आवश्यक जानकारीहरुमा चिन्ह लगाइको छ" + comment_form_comment_label : "टिप्पणी" + comment_form_md_info : "मार्कडाउन समर्थित छ।" + comment_form_name_label : "नाम" + comment_form_email_label : "इमेल ठेगाना" + comment_form_website_label : "वेबसाइट (वैकल्पिक)" + comment_btn_submit : "टिप्पणी दिनुहोस् " + comment_btn_submitted : "टिप्पणी भयो" + comment_success_msg : "तपाईंको टिप्पणीको लागि धन्यवाद! एक पटक यो अनुमोदन गरेपछी यो साइटमा देखाउनेछ।" + comment_error_msg : "माफ गर्नुहोस्, तपाईंको टिप्पणी त्रुटि थियो।सबै आवश्यक जानकारीहरु पूरा गरिएको छ भने निश्चित गर्नुहोस् र फेरि प्रयास गर्नुहोस्।" + loading_label : "लोड हुँदैछ ..." +ne-NP: + <<: *DEFAULT_NE + +# Korean +# -------------- +ko: &DEFAULT_KO + page : "페이지" + pagination_previous : "이전" + pagination_next : "다음" + breadcrumb_home_label : "Home" + breadcrumb_separator : "/" + menu_label : "토글 메뉴" + toc_label : "On This Page" + ext_link_label : "직접 링크" + less_than : "최대" + minute_read : "분 소요" + share_on_label : "공유하기" + meta_label : + tags_label : "태그:" + categories_label : "카테고리:" + date_label : "업데이트:" + comments_label : "댓글남기기" + comments_title : "댓글" + more_label : "더 보기" + related_label : "참고" + follow_label : "팔로우:" + feed_label : "피드" + powered_by : "Powered by" + website_label : "웹사이트" + email_label : "이메일" + recent_posts : "최근 포스트" + undefined_wpm : "Undefined parameter words_per_minute at _config.yml" + comment_form_info : "이메일은 공개되지 않습니다. 작성 필요 필드:" + comment_form_comment_label : "댓글" + comment_form_md_info : "마크다운을 지원합니다." + comment_form_name_label : "이름" + comment_form_email_label : "이메일" + comment_form_website_label : "웹사이트(선택사항)" + comment_btn_submit : "댓글 등록" + comment_btn_submitted : "등록됨" + comment_success_msg : "감사합니다! 댓글이 머지된 후 확인하실 수 있습니다." + comment_error_msg : "댓글 등록에 문제가 있습니다. 필요 필드를 작성했는지 확인하고 다시 시도하세요." + loading_label : "로딩중..." +ko-KR: + <<: *DEFAULT_KO + +# Russian / Русский +# ----------------- +ru: &DEFAULT_RU + page : "Страница" + pagination_previous : "Предыдущая" + pagination_next : "Следующая" + breadcrumb_home_label : "Главная" + breadcrumb_separator : "/" + menu_label : "Выпадающее меню" + toc_label : "Содержание" + ext_link_label : "Прямая ссылка" + less_than : "менее" + minute_read : "мин на чтение" + share_on_label : "Поделиться" + meta_label : + tags_label : "Метки:" + categories_label : "Разделы:" + date_label : "Дата изменения:" + comments_label : "Оставить комментарий" + comments_title : "Комментарии" + more_label : "Читать далее" + related_label : "Вам также может понравиться" + follow_label : "Связаться со мной:" + feed_label : "RSS-лента" + powered_by : "Сайт работает на" + website_label : "Сайт" + email_label : "Электронная почта" + recent_posts : "Свежие записи" + undefined_wpm : "Не определён параметр words_per_minute в _config.yml" + comment_form_info : "Ваш адрес электронной почты не будет опубликован. Обязательные поля помечены" + comment_form_comment_label : "Комментарий" + comment_form_md_info : "Поддерживается синтаксис Markdown." + comment_form_name_label : "Имя" + comment_form_email_label : "Электронная почта" + comment_form_website_label : "Ссылка на сайт (необязательно)" + comment_btn_submit : "Оставить комментарий" + comment_btn_submitted : "Отправлено" + comment_success_msg : "Спасибо за Ваш комментарий! Он будет опубликован на сайте после проверки." + comment_error_msg : "К сожалению, произошла ошибка с отправкой комментария. Пожалуйста, убедитесь, что все обязательные поля заполнены и попытайтесь снова." + loading_label : "Отправка..." +ru-RU: + <<: *DEFAULT_RU + +# Lithuanian / Lietuviškai +# ----------------- +lt: &DEFAULT_LT + page : "Puslapis" + pagination_previous : "Ankstesnis" + pagination_next : "Sekantis" + breadcrumb_home_label : "Pagrindinis" + breadcrumb_separator : "/" + menu_label : "Meniu rodymas" + toc_label : "Turinys" + ext_link_label : "Tiesioginė nuoroda" + less_than : "mažiau nei" + minute_read : "min. skaitymo" + share_on_label : "Pasidalinti" + meta_label : + tags_label : "Žymės:" + categories_label : "Kategorijos:" + date_label : "Atnaujinta:" + comments_label : "Palikti komentarą" + comments_title : "Komentaras" + more_label : "Skaityti daugiau" + related_label : "Taip pat turėtų patikti" + follow_label : "Sekti:" + feed_label : "Šaltinis" + powered_by : "Sukurta su" + website_label : "Tinklapis" + email_label : "El. paštas" + recent_posts : "Naujausi įrašai" + undefined_wpm : "Nedeklaruotas parametras words_per_minute faile _config.yml" + comment_form_info : "El. pašto adresas nebus viešinamas. Būtini laukai pažymėti." + comment_form_comment_label : "Komentaras" + comment_form_md_info : "Markdown palaikomas." + comment_form_name_label : "Vardas" + comment_form_email_label : "El. paštas" + comment_form_website_label : "Tinklapis (nebūtina)" + comment_btn_submit : "Komentuoti" + comment_btn_submitted : "Įrašytas" + comment_success_msg : "Ačiū už komentarą! Jis bus parodytas kai bus patvirtintas." + comment_error_msg : "Atleiskite, įvyko netikėta klaida įrašant komentarą. Pasitikrinkite ar užpildėte visus būtinus laukus ir pamėginkite dar kartą." + loading_label : "Kraunama..." +lt-LT: + <<: *DEFAULT_LT + +# Greek +# -------------- +gr: &DEFAULT_GR + page : "Σελίδα" + pagination_previous : "Προηγούμενo" + pagination_next : "Επόμενo" + breadcrumb_home_label : "Αρχική" + breadcrumb_separator : "/" + menu_label : "Μενού" + toc_label : "Περιεχόμενα" + ext_link_label : "Εξωτερικός Σύνδεσμος" + less_than : "Λιγότερο από" + minute_read : "λεπτά ανάγνωσης" + share_on_label : "Μοιραστείτε το" + meta_label : + tags_label : "Ετικέτες:" + categories_label : "Κατηγορίες:" + date_label : "Ενημερώθηκε:" + comments_label : "Αφήστε ένα σχόλιο" + comments_title : "Σχόλια" + more_label : "Διάβαστε περισσότερα" + related_label : "Σχετικές αναρτήσεις" + follow_label : "Ακολουθήστε:" + feed_label : "RSS Feed" + powered_by : "Δημιουργήθηκε με" + website_label : "Ιστοσελίδα" + email_label : "Email" + recent_posts : "Τελευταίες αναρτήσεις" + undefined_wpm : "Δεν έχει οριστεί η παράμετρος words_per_minute στο αρχείο _config.yml" + comment_form_info : "Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα απαιτούμενα πεδία εμφανίζονται με αστερίσκο" + comment_form_comment_label : "Σχόλιο" + comment_form_md_info : "Το πεδίο υποστηρίζει Markdown." + comment_form_name_label : "Όνομα" + comment_form_email_label : "Διεύθυνση email" + comment_form_website_label : "Ιστοσελίδα (προαιρετικό)" + comment_btn_submit : "Υπόβαλε ένα σχόλιο" + comment_btn_submitted : "Έχει υποβληθεί" + comment_success_msg : "Ευχαριστούμε για το σχόλιό σας! Θα εμφανιστεί στην ιστοσελίδα αφού εγκριθεί." + comment_error_msg : "Λυπούμαστε, παρουσιάστηκε σφάλμα με την υποβολή σας. Παρακαλούμε βεβαιωθείτε ότι έχετε όλα τα απαιτούμενα πεδία συμπληρωμένα και δοκιμάστε ξανά." + loading_label : "Φόρτωση..." +gr-GR: + <<: *DEFAULT_GR + +# Swedish +# ----------------- +sv: &DEFAULT_SV + page : "Sidan" + pagination_previous : "Föregående" + pagination_next : "Nästa" + breadcrumb_home_label : "Hem" + breadcrumb_separator : "/" + menu_label : "Meny ridå" + toc_label : "På denna sida" + ext_link_label : "Direkt länk" + less_than : "mindre än" + minute_read : "minut läsning" + share_on_label : "Dela på" + meta_label : + tags_label : "Taggar:" + categories_label : "Kategorier:" + date_label : "Uppdaterades:" + comments_label : "Lämna en kommentar" + comments_title : "Kommentarer" + more_label : "Lär dig mer" + related_label : "Du kanske vill även läsa:" + follow_label : "Följ:" + feed_label : "Flöde" + powered_by : "Framställd med" + website_label : "Webbsida" + email_label : "E-post" + recent_posts : "Senaste inlägg" + undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml" + comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade." + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Använd Markdown för text-formateringen." + comment_form_name_label : "Namn" + comment_form_email_label : "E-post adress" + comment_form_website_label : "Webdsida (valfritt)" + comment_btn_submit : "Skicka en kommentar" + comment_btn_submitted : "Kommentaren har tagits emot" + comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts." + comment_error_msg : "Tyvärr det har blivit något fel i en av fälten, se till att du fyller i alla rutor och försök igen." + loading_label : "Laddar..." +sv-SE: + <<: *DEFAULT_SV +sv-FI: + <<: *DEFAULT_SV + +# Dutch +# ----------------- +nl: &DEFAULT_NL + page : "Pagina" + pagination_previous : "Vorige" + pagination_next : "Volgende" + breadcrumb_home_label : "Home" + breadcrumb_separator : "/" + menu_label : "Wissel Menu" + toc_label : "Op deze pagina" + ext_link_label : "Directe Link" + less_than : "minder dan" + minute_read : "minuut gelezen" + share_on_label : "Deel op" + meta_label : + tags_label : "Labels:" + categories_label : "Categorieën:" + date_label : "Bijgewerkt:" + comments_label : "Laat een reactie achter" + comments_title : "Commentaren" + more_label : "Meer informatie" + related_label : "Bekijk ook eens" + follow_label : "Volg:" + feed_label : "Feed" + powered_by : "Aangedreven door" + website_label : "Website" + email_label : "Email" + recent_posts : "Recente berichten" + undefined_wpm : "Niet gedefinieerde parameter words_per_minute bij _config.yml" + comment_form_info : "Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd" + comment_form_comment_label : "Commentaar" + comment_form_md_info : "Markdown wordt ondersteund." + comment_form_name_label : "Naam" + comment_form_email_label : "E-mailadres" + comment_form_website_label : "Website (optioneel)" + comment_btn_submit : "Commentaar toevoegen" + comment_btn_submitted : "Toegevoegd" + comment_success_msg : "Bedankt voor uw reactie! Het zal op de site worden weergegeven zodra het is goedgekeurd." + comment_error_msg : "Sorry, er is een fout opgetreden bij uw inzending. Zorg ervoor dat alle vereiste velden zijn voltooid en probeer het opnieuw." + loading_label : "Laden..." +nl-BE: + <<: *DEFAULT_NL +nl-NL: + <<: *DEFAULT_NL + +# Indonesian +# ----------------- +id: &DEFAULT_ID + page : "Halaman" + pagination_previous : "Kembali" + pagination_next : "Maju" + breadcrumb_home_label : "Home" + breadcrumb_separator : "/" + menu_label : "Menu Toggle" + toc_label : "Pada Halaman Ini" + ext_link_label : "Link langsung" + less_than : "Kurang dari" + minute_read : "Waktu baca" + share_on_label : "Berbagi di" + meta_label : + tags_label : "Golongan:" + categories_label : "Kategori:" + date_label : "Diupdate:" + comments_label : "Tinggalkan komentar" + comments_title : "Komentar" + more_label : "Pelajari lagi" + related_label : "Anda juga akan suka" + follow_label : "Ikuti:" + feed_label : "Feed" + powered_by : "Didukung oleh" + website_label : "Website" + email_label : "Email" + recent_posts : "Posting terbaru" + undefined_wpm : "Parameter terdeskripsi words_per_minute di _config.yml" + comment_form_info : "Email Anda tidak akan dipublish. Kolom yang diperlukan ditandai" + comment_form_comment_label : "Komentar" + comment_form_md_info : "Markdown disupport." + comment_form_name_label : "Nama" + comment_form_email_label : "Alamat email" + comment_form_website_label : "Website (opsional)" + comment_btn_submit : "Submit Komentar" + comment_btn_submitted : "Telah disubmit" + comment_success_msg : "Terimakasih atas komentar Anda! Komentar ini akan tampil setelah disetujui." + comment_error_msg : "Maaf, ada kesalahan pada submisi Anda. Pastikan seluruh kolom sudah dilengkapi dan coba kembali." + loading_label : "Sedang meload..." +id-ID: + <<: *DEFAULT_ID + +# Vietnamese +# ----------------- +vi: &DEFAULT_VI + page : "Trang" + pagination_previous : "Trước" + pagination_next : "Sau" + breadcrumb_home_label : "Trang chủ" + breadcrumb_separator : "/" + menu_label : "Menu" + toc_label : "Tại trang này" + ext_link_label : "Đường dẫn trực tiếp" + less_than : "nhỏ hơn" + minute_read : "phút đọc" + share_on_label : "Chia sẻ tại" + meta_label : + tags_label : "Nhãn:" + categories_label : "Chủ đề:" + date_label : "Cập nhật:" + comments_label : "Để lại bình luận" + comments_title : "Bình luận" + more_label : "Mở rộng" + related_label : "Có thể bạn cũng thích" + follow_label : "Theo dõi:" + feed_label : "Feed" + powered_by : "Được hỗ trợ bởi" + website_label : "Website" + email_label : "Email" + recent_posts : "Bài viết mới" + undefined_wpm : "Chưa định nghĩa thông số words_per_minute tại _config.yml" + comment_form_info : "Email của bạn sẽ được giữ bí mật. Các phần bắt buộc được đánh dấu." + comment_form_comment_label : "Bình luận" + comment_form_md_info : "Hỗ trợ Markdown." + comment_form_name_label : "Tên" + comment_form_email_label : "Địa chỉ email" + comment_form_website_label : "Website (không bắt buộc)" + comment_btn_submit : "Gửi bình luận" + comment_btn_submitted : "Đã được gửi" + comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt." + comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại." + loading_label : "Đang tải..." +vi-VN: + <<: *DEFAULT_VI + +# Danish +# ------ +da: &DEFAULT_DA + page : "Side" + pagination_previous : "Forrige" + pagination_next : "Næste" + breadcrumb_home_label : "Home" + breadcrumb_separator : "/" + menu_label : "Vis/skjul menu" + toc_label : "På denne side" + ext_link_label : "Direkte link" + less_than : "mindre end" + minute_read : "minutters læsning" + share_on_label : "Del på" + meta_label : + tags_label : "Nøgleord:" + categories_label : "Kategorier:" + date_label : "Opdateret:" + comments_label : "Skriv en kommentar" + comments_title : "Kommentarer" + more_label : "Lær mere" + related_label : "Måske kan du også lide" + follow_label : "Følg:" + feed_label : "Feed" + powered_by : "Drives af" + website_label : "Website" + email_label : "E-mail" + recent_posts : "Seneste indlæg" + undefined_wpm : "Parameteren words_per_minute er ikke defineret i _config.yml" + comment_form_info : "Din e-mail bliver ikke offentliggjort. Obligatoriske felter er markeret" + comment_form_comment_label : "Kommentar" + comment_form_md_info : "Markdown er understøttet." + comment_form_name_label : "Navn" + comment_form_email_label : "E-mail" + comment_form_website_label : "Website (frivillig)" + comment_btn_submit : "Send kommentar" + comment_btn_submitted : "Sendt" + comment_success_msg : "Tak for din kommentar! Den bliver vist på siden, så snart den er godkendt." + comment_error_msg : "Desværre skete der en fejl. Prøv igen, mens du sørger for at alle obligatoriske felter er udfyldt." + loading_label : "Indlæser..." +da-DK: + <<: *DEFAULT_DA + # Another locale # -------------- +# diff --git a/_includes/analytics-providers/google-universal.html b/_includes/analytics-providers/google-universal.html index 3ada6e36ca..10d65b2ee4 100644 --- a/_includes/analytics-providers/google-universal.html +++ b/_includes/analytics-providers/google-universal.html @@ -2,8 +2,8 @@ (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'); - \ No newline at end of file + diff --git a/_includes/author-profile-custom-links.html b/_includes/author-profile-custom-links.html new file mode 100644 index 0000000000..3560e25885 --- /dev/null +++ b/_includes/author-profile-custom-links.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/_includes/author-profile.html b/_includes/author-profile.html index f6637c8fda..2d10543126 100644 --- a/_includes/author-profile.html +++ b/_includes/author-profile.html @@ -30,16 +30,14 @@ diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html index 11ec356483..6eec214b97 100644 --- a/_includes/breadcrumbs.html +++ b/_includes/breadcrumbs.html @@ -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 %} diff --git a/_includes/nav_list b/_includes/nav_list index 36cfa9125b..84ed6cf569 100644 --- a/_includes/nav_list +++ b/_includes/nav_list @@ -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 %} diff --git a/_includes/page__hero.html b/_includes/page__hero.html index 8936e3afd9..93e9155fb6 100644 --- a/_includes/page__hero.html +++ b/_includes/page__hero.html @@ -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 %} +
{% if page.header.overlay_color or page.header.overlay_image %}

- {% 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: "

" | remove: "

" }} @@ -45,7 +53,7 @@ {% endif %}

{% else %} - {{ page.title }} + {{ image_description }} {% endif %} {% if page.header.caption %} {{ page.header.caption | markdownify | remove: "

" | remove: "

" }}
diff --git a/_includes/page__hero_video.html b/_includes/page__hero_video.html new file mode 100644 index 0000000000..8586a95a2b --- /dev/null +++ b/_includes/page__hero_video.html @@ -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 %} diff --git a/_includes/paginator.html b/_includes/paginator.html index efe3fe141f..cf49ae8a25 100644 --- a/_includes/paginator.html +++ b/_includes/paginator.html @@ -1,22 +1,23 @@ {% if paginator.total_pages > 1 %}
- \ No newline at end of file + diff --git a/_layouts/default.html b/_layouts/default.html index 420c59a6e2..739b9f0594 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,9 +1,13 @@ --- --- -{% include base_path %} - + {% include head.html %} diff --git a/_layouts/single-no-ads.html b/_layouts/single-no-ads.html index 203fecd763..e7c775e78f 100644 --- a/_layouts/single-no-ads.html +++ b/_layouts/single-no-ads.html @@ -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 %} @@ -14,6 +14,14 @@ layout: default {% endunless %} {% endif %} + + +
{% include sidebar.html %} @@ -21,7 +29,7 @@ layout: default {% if page.title %}{% endif %} {% if page.excerpt %}{% endif %} {% if page.date %}{% endif %} - {% if page.modified %}{% endif %} + {% if page.last_modified_at %}{% endif %}
{% unless page.header.overlay_color or page.header.overlay_image %} @@ -35,7 +43,7 @@ layout: default
{{ content }} - {% if page.link %}
{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}
{% endif %} + {% if page.link %}
{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}
{% endif %}
@@ -44,8 +52,8 @@ layout: default

{{ site.data.ui-text[site.locale].meta_label }}

{% endif %} {% include page__taxonomy.html %} - {% if page.modified %} -

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

+ {% if page.last_modified_at %} +

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

{% elsif page.date %}

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

{% endif %} @@ -59,20 +67,27 @@ layout: default {% if site.comments.provider and page.comments %} {% include comments.html %} {% endif %} - - - {% comment %}{% endcomment %} + + {% comment %}{% endcomment %} {% if page.id and page.related and site.related_posts.size > 0 %} + {% comment %}{% endcomment %} + {% elsif page.id and page.related %} + {% endif %}
diff --git a/_layouts/single.html b/_layouts/single.html index f81d9a397e..38a1777367 100644 --- a/_layouts/single.html +++ b/_layouts/single.html @@ -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 %} @@ -29,7 +29,7 @@ layout: default {% if page.title %}{% endif %} {% if page.excerpt %}{% endif %} {% if page.date %}{% endif %} - {% if page.modified %}{% endif %} + {% if page.last_modified_at %}{% endif %}
{% unless page.header.overlay_color or page.header.overlay_image %} @@ -84,7 +84,7 @@ layout: default
{{ content }} - {% if page.link %}
{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}
{% endif %} + {% if page.link %}
{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}
{% endif %}
@@ -116,8 +116,8 @@ layout: default

{{ site.data.ui-text[site.locale].meta_label }}

{% endif %} {% include page__taxonomy.html %} - {% if page.modified %} -

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

+ {% if page.last_modified_at %} +

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

{% elsif page.date %}

{{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}

{% endif %} @@ -131,20 +131,27 @@ layout: default {% if site.comments.provider and page.comments %} {% include comments.html %} {% endif %} - - - {% comment %}{% endcomment %} + + {% comment %}{% endcomment %} {% if page.id and page.related and site.related_posts.size > 0 %} + {% comment %}{% endcomment %} + {% elsif page.id and page.related %} + {% endif %}
diff --git a/_layouts/splash.html b/_layouts/splash.html index 3b5af14346..ce61ae3c58 100644 --- a/_layouts/splash.html +++ b/_layouts/splash.html @@ -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 %} @@ -17,13 +17,11 @@ layout: default
-
- {% if page.title %}{% endif %} {% if page.excerpt %}{% endif %} {% if page.date %}{% endif %} - {% if page.modified %}{% endif %} + {% if page.last_modified_at %}{% endif %}

diff --git a/_pages/en_US/a9lh-to-b9s.txt b/_pages/en_US/a9lh-to-b9s.txt index 5f9ac67160..a16225f28c 100644 --- a/_pages/en_US/a9lh-to-b9s.txt +++ b/_pages/en_US/a9lh-to-b9s.txt @@ -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,7 +29,7 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte
{{ notice-1 | markdownify }}
-#### What you need +### What you need Note that the following required file named `secret_sector.bin` is the same one that was found in the various `data_input.zip` file versions. If you already have that file on your disk somewhere, you can use that one instead of downloading the one below. {: .notice--info} @@ -43,12 +45,12 @@ Note that, only on New 3DS, `secret_sector.bin` is needed to revert the arm9load * 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) * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) -* [`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 For all steps in this section, overwrite any existing files on your SD card. {: .notice--info} @@ -71,12 +73,12 @@ For all steps in this section, overwrite any existing files 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. **New 3DS Users Only:** Copy `secret_sector.bin` to the `/boot9strap/` folder on your SD card - ![]({{ base_path }}/images/screenshots/a9lh-to-b9s-file-layout.png) + ![]({{ "/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_` @@ -89,7 +91,7 @@ For all steps in this section, overwrite any existing files on your SD card. 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} @@ -98,7 +100,7 @@ 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 If, before following this guide, you already had an EmuNAND setup and would like to move the contents of your previous EmuNAND to your new SysNAND CFW, now is the time to [follow Move EmuNAND](move-emunand) before doing this section. {: .notice--info} @@ -108,7 +110,7 @@ If, before following this guide, you already had an EmuNAND setup and would like + If this gives you an error, set your DNS settings to "auto" + If this still gives you an error, [follow CTRTransfer](ctrtransfer), then try updating again -##### Section V - Installing Luma3DS Updater +#### Section V - Installing Luma3DS Updater 1. Launch FBI 1. Navigate to `SD` -> `cias` @@ -116,7 +118,7 @@ If, before following this guide, you already had an EmuNAND setup and would like 1. Select the "Install CIA" option, then press (A) to confirm 1. Press (Home) to exit FBI -##### 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 @@ -130,7 +132,7 @@ If, before following this guide, you already had an EmuNAND setup and would like 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 "Scripts..." @@ -147,7 +149,7 @@ If, before following this guide, you already had an EmuNAND setup and would like 1. Delete `__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} diff --git a/_pages/en_US/cart-update.txt b/_pages/en_US/cart-update.txt index 7b5ce37865..ee788c0feb 100644 --- a/_pages/en_US/cart-update.txt +++ b/_pages/en_US/cart-update.txt @@ -18,11 +18,11 @@ This also means that a cart update will NOT install a browser if you do not alre **Updating with a game cart containing the version 9.9.0 or above will remove your browser until a standard online update is performed!** {: .notice--danger} -#### What you need +### What you need * A game cart that [contains the version](http://www.3dsdb.com/) you wish to update to -#### Instructions +### Instructions 1. Boot your device into recovery mode by holding (L) + (R) + (A) + (UP) while powering on 1. If prompted, decline the update diff --git a/_pages/en_US/ctrtransfer.txt b/_pages/en_US/ctrtransfer.txt index fb75079d06..dfd8d357ac 100644 --- a/_pages/en_US/ctrtransfer.txt +++ b/_pages/en_US/ctrtransfer.txt @@ -2,6 +2,8 @@ title: "CTRTransfer" --- +{% include toc title="Table of Contents" %} + This is add-on section for installing an 11.5.0 CTRTransfer image to your device. 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) @@ -11,11 +13,11 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use this. {: .notice--danger} -#### What you need +### What you need * 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`.3dsx` file)* -* [`ctrtransfer_ticket_copy.gm9`]({{ base_path }}/gm9_scripts/ctrtransfer_ticket_copy.gm9) +* [`ctrtransfer_ticket_copy.gm9`]({{ "/gm9_scripts/ctrtransfer_ticket_copy.gm9" | absolute_url }}) * The 11.5.0 CTRTransfer image for your device and region *(if your device is not from one of these regions, just pick one that matches your device type)*: + - [New 3DS or 2DS - 11.5.0 - EUR - CTRTransfer](magnet:?xt=urn:btih:465f1048f81e8e5c651ce2a4d9df48fec88d1099&dn=11.5.0-38E_ctrtransfer_n3ds.zip&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce) @@ -27,9 +29,9 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t + - [Old 3DS or 2DS - 11.5.0 - JPN - CTRTransfer](magnet:?xt=urn:btih:d8913b4c0da224e8852fa2f685c41ddbce5310bc&dn=11.5.0-38J_ctrtransfer_o3ds.zip&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce) + - [Old 3DS or 2DS - 11.5.0 - USA - CTRTransfer](magnet:?xt=urn:btih:2708089605ca47387fa64e996a699eedd18031e8&dn=11.5.0-38U_ctrtransfer_o3ds.zip&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%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=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -41,7 +43,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t 1. Copy `FBI.3dsx` to the `/3ds/` folder on your SD card 1. Reinsert your SD card into your device -##### Section II - CTRTransfer +#### Section II - CTRTransfer 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 @@ -69,7 +71,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t + Updates while using B9S + Luma (what you have) are safe + If this gives you an error, set your DNS settings to "auto" -##### Section III - Launching FBI +#### Section III - Launching FBI 1. Launch the Download Play application 1. Press (L) + (Down) + (Select) at the same time to open the Rosalina menu @@ -82,7 +84,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t 1. Launch the Download Play application 1. Your device should load the Homebrew Launcher -##### Section IV - Reinstalling Tickets +#### Section IV - Reinstalling Tickets If script found no user tickets told you to skip this section, then skip this section {: .notice--info} @@ -102,7 +104,7 @@ If script found no user tickets told you to skip this section, then skip this se + Press (B) to decline installing tickets from CDN. 1. Press (Home) to exit FBI -##### Section V - Remove CTRTransfer image +#### Section V - Remove CTRTransfer image 1. Launch GodMode9 by holding (Start) during boot 1. Navigate to `[0:] SDCARD` -> `gm9` diff --git a/_pages/en_US/donations.txt b/_pages/en_US/donations.txt index 99785e5524..ee2cc93ec3 100644 --- a/_pages/en_US/donations.txt +++ b/_pages/en_US/donations.txt @@ -3,17 +3,17 @@ title: "Donations" # layout: single-no-ads --- -[![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} +[![Bitcoin]({{ "/images/bitcoin_white.png" | absolute_url }}){:height="73px" width="256px"}{: style="padding-bottom: .35em"}](bitcoin:19c89D7NUmJPCE3DsHpV2iSBF7cYMXnhpE){: .align-center} 19c89D7NUmJPCE3DsHpV2iSBF7cYMXnhpE {: .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} +[![Ethereum]({{ "/images/ethereum_white.png" | absolute_url }}){:height="64px" width="256px"}{: style="padding-bottom: .35em"}](https://www.ethereum.org/){: .align-center} 0x0F0131d161f8eFA4B355c5EADd0484FC3ff95B4C {: .text-center} {: .notice--info} \ No newline at end of file diff --git a/_pages/en_US/f3-(linux).txt b/_pages/en_US/f3-(linux).txt index 1c915a6524..8f9e3b6216 100644 --- a/_pages/en_US/f3-(linux).txt +++ b/_pages/en_US/f3-(linux).txt @@ -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 1. `cd` into the f3 directory @@ -54,5 +54,5 @@ If the test shows the result `Data LOST: 0.00 Byte (0 sectors)` your SD card is If the test shows any other results, your SD card may be corrupted or damaged and you may have to replace it! {: .notice--danger} -Return to [Get Started](get-started) +### Return to [Get Started](get-started) {: .notice--primary} diff --git a/_pages/en_US/f3x-(mac).txt b/_pages/en_US/f3x-(mac).txt index 57369ef6fa..44ab9f58f1 100644 --- a/_pages/en_US/f3x-(mac).txt +++ b/_pages/en_US/f3x-(mac).txt @@ -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/latest) -#### Instructions +### Instructions 1. Unzip the F3X `.zip` file 1. Insert your SD card into your computer @@ -29,5 +29,5 @@ If the test shows the result `Success! Your card is ok!` your SD card is good an If the test shows any other results, your SD card may be corrupted or damaged and you may have to replace it! {: .notice--danger} -Return to [Get Started](get-started) +### Return to [Get Started](get-started) {: .notice--primary} diff --git a/_pages/en_US/file-extensions-(windows).txt b/_pages/en_US/file-extensions-(windows).txt index 0a11b67527..c9e7535610 100644 --- a/_pages/en_US/file-extensions-(windows).txt +++ b/_pages/en_US/file-extensions-(windows).txt @@ -2,34 +2,36 @@ title: "File Extensions (Windows)" --- +{% include toc title="Table of Contents" %} + This is an add-on section for disabling Windows's default behavior of hiding file extensions. This will make it easier for you to find the referenced files in the rest of this guide. -#### Instructions +### Instructions -##### Windows 10 / 8.1 / 8 +#### Windows 10 / 8.1 / 8 1. Launch File Explorer by opening any directory, such as your SD card directory 1. Click the "View" option on the ribbon menu 1. Check the box labeled "File name extensions" - ![]({{ base_path }}/images/screenshots/windows-10-file-extensions.png) + ![]({{ "/images/screenshots/windows-10-file-extensions.png" | absolute_url }}) {: .notice--info} -##### Windows 7 +#### Windows 7 1. Open the start menu by clicking on it or using the Windows key 1. Search for "Folder Options" and select the corresponding result - ![]({{ base_path }}/images/screenshots/windows-7-folder-options-start-menu.png) + ![]({{ "/images/screenshots/windows-7-folder-options-start-menu.png" | absolute_url }}) {: .notice--info} 1. Click the "View" option at the top of the Folder Options menu 1. Uncheck the box labeled "Hide extensions for known file types" - ![]({{ base_path }}/images/screenshots/windows-7-folder-options.png) + ![]({{ "/images/screenshots/windows-7-folder-options.png" | absolute_url }}) {: .notice--info} -Return to [Get Started](get-started) +### Return to [Get Started](get-started) {: .notice--primary} \ No newline at end of file diff --git a/_pages/en_US/finalizing-setup.txt b/_pages/en_US/finalizing-setup.txt index d29ead130c..bf7cb9adc4 100644 --- a/_pages/en_US/finalizing-setup.txt +++ b/_pages/en_US/finalizing-setup.txt @@ -2,6 +2,8 @@ title: "Finalizing Setup" --- +{% 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. @@ -16,7 +18,7 @@ During this process, we also setup programs such as the following: + **GodMode9** *(multipurpose tool which can do NAND and cartridge functions)* + **Homebrew Launcher Loader** *(launches the Homebrew Launcher as a regular application thanks to Rosalina magic)* -#### 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 [hblauncher_loader](https://github.com/yellows8/hblauncher_loader/releases/latest) @@ -24,12 +26,12 @@ During this process, we also setup programs such as the following: * The latest release of [DSP1](https://github.com/zoogie/DSP1/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,7 +43,7 @@ During this process, we also setup programs such as the following: 1. Copy `DSP1.cia` to the `/cias/` folder on your SD card 1. Copy `Anemone3DS.cia` to the `/cias/` folder on your SD card - ![]({{ base_path }}/images/screenshots/cias-file-layout.png) + ![]({{ "/images/screenshots/cias-file-layout.png" | absolute_url }}) {: .notice--info} 1. Create a folder named `payloads` in the `luma` folder on your SD card if it does not already exist @@ -51,15 +53,15 @@ During this process, we also setup programs such as the following: 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 - ![]({{ base_path }}/images/screenshots/finalizing-setup-file-layout.png) + ![]({{ "/images/screenshots/finalizing-setup-file-layout.png" | absolute_url }}) {: .notice--info} 1. Reinsert your SD card into your device 1. Power on your device -##### Section II - Updating the System +#### Section II - Updating the System -If, while following a previous version of this guide, you CTRTransfered your *New 3DS* to 2.1.0, now is the time to [restore your NAND backup](godmode9-usage#nand_restore) before doing this section. +If, while following a previous version of this guide, you CTRTransfered your *New 3DS* to 2.1.0, now is the time to [restore your NAND backup](godmode9-usage#restoring-a-nand-backup) before doing this section. {: .notice--danger} If, before following this guide, you already had an EmuNAND setup and would like to move the contents of your previous EmuNAND to your new SysNAND CFW, now is the time to [follow Move EmuNAND](move-emunand) before doing this section. @@ -70,7 +72,7 @@ If, before following this guide, you already had an EmuNAND setup and would like + If this gives you an error, set your DNS settings to "auto" + If this still gives you an error, [follow CTRTransfer](ctrtransfer), then try updating again -##### Section III - Launching FBI +#### Section III - Launching FBI 1. Launch the Download Play application 1. Press (L) + (Down) + (Select) at the same time to open the Rosalina menu @@ -84,19 +86,19 @@ If, before following this guide, you already had an EmuNAND setup and would like 1. Your device should load the Homebrew Launcher 1. Launch FBI from the list of homebrew -##### Section IV - Installing CIAs +#### Section IV - Installing CIAs 1. Navigate to `SD` -> `cias` 1. Select "\" 1. Select the "Install and delete all CIAs" option, then press (A) to confirm 1. Press (Home), then close Download Play -##### Section V - DSP Dump +#### Section V - DSP Dump 1. Launch the DSP1 application 1. Once it has completed, press (B) to self-delete the app and return to the home 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 @@ -110,7 +112,7 @@ If, before following this guide, you already had an EmuNAND setup and would like 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 "Scripts..." @@ -126,7 +128,7 @@ If, before following this guide, you already had an EmuNAND setup and would like 1. Delete `__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 1. Press (Home) to bring up the action menu 1. Select "Scripts..." diff --git a/_pages/en_US/flashing-ntrboot-(3ds-multi-system).txt b/_pages/en_US/flashing-ntrboot-(3ds-multi-system).txt index 01669cfadd..0bcc4a3d2c 100644 --- a/_pages/en_US/flashing-ntrboot-(3ds-multi-system).txt +++ b/_pages/en_US/flashing-ntrboot-(3ds-multi-system).txt @@ -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) *(`ntr` boot9strap; not the `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" diff --git a/_pages/en_US/flashing-ntrboot-(3ds-single-system).txt b/_pages/en_US/flashing-ntrboot-(3ds-single-system).txt index 31680c6550..c49bb191eb 100644 --- a/_pages/en_US/flashing-ntrboot-(3ds-single-system).txt +++ b/_pages/en_US/flashing-ntrboot-(3ds-single-system).txt @@ -2,6 +2,8 @@ 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. @@ -19,14 +21,14 @@ Ensure your flashcart is able to launch correctly before starting. Be sure to ha 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 diff --git a/_pages/en_US/flashing-ntrboot-(dsi).txt b/_pages/en_US/flashing-ntrboot-(dsi).txt index dfd99dad69..07db6ccdab 100644 --- a/_pages/en_US/flashing-ntrboot-(dsi).txt +++ b/_pages/en_US/flashing-ntrboot-(dsi).txt @@ -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 diff --git a/_pages/en_US/flashing-ntrboot-(nds).txt b/_pages/en_US/flashing-ntrboot-(nds).txt index 66ba3a4a02..68f0a90078 100644 --- a/_pages/en_US/flashing-ntrboot-(nds).txt +++ b/_pages/en_US/flashing-ntrboot-(nds).txt @@ -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 diff --git a/_pages/en_US/get-started-(new-3ds).txt b/_pages/en_US/get-started-(new-3ds).txt index d80cc19e09..e94abc06b1 100644 --- a/_pages/en_US/get-started-(new-3ds).txt +++ b/_pages/en_US/get-started-(new-3ds).txt @@ -2,6 +2,10 @@ title: "Get Started (New 3DS)" --- +{% include toc title="Table of Contents" %} + +### Required Reading + Select the appropriate page for your version from the chart below. Note that the "from" and "to" fields are inclusive. This means that, for example, the "from 9.0.0 to 9.2.0" row includes 9.0.0, 9.1.0, and 9.2.0. Additionally, note that the last number of your system version (which is preceded by a dash) refers to your browser version. Currently, the browser version is irrelevant to the New 3DS in this guide. @@ -12,9 +16,11 @@ For all versions you can also [Cart Update](cart-update) (or use a standard syst Your device version can be found at the bottom right of the top screen of the System Settings. -![]({{ base_path }}/images/screenshots/system-version.png) +![]({{ "/images/screenshots/system-version.png" | absolute_url }}) {: .notice--info} +### Version Table + diff --git a/_pages/en_US/get-started-(old-3ds).txt b/_pages/en_US/get-started-(old-3ds).txt index 282cb8a499..d36185ff66 100644 --- a/_pages/en_US/get-started-(old-3ds).txt +++ b/_pages/en_US/get-started-(old-3ds).txt @@ -2,6 +2,10 @@ title: "Get Started (Old 3DS)" --- +{% include toc title="Table of Contents" %} + +### Required Reading + Select the appropriate page for your version from the chart below. Note that the "from" and "to" fields are inclusive. This means that, for example, the "from 9.0.0 to 9.2.0" row includes 9.0.0, 9.1.0, and 9.2.0. Additionally, note that the last two columns of the chart refer to the last number of your version (which corresponds to the browser version installed to the system). If the version is -0 then you do not have a browser, while any number above -0 indicates a browser is installed. @@ -14,12 +18,14 @@ For all versions you can also [Cart Update](cart-update) (or use a standard syst Your device version can be found at the bottom right of the top screen of the System Settings. -![]({{ base_path }}/images/screenshots/system-version.png) +![]({{ "/images/screenshots/system-version.png" | absolute_url }}) {: .notice--info} If you updated with a game cart containing the version 9.9.0 or above *(meaning that you have a version on 9.9.0 or above, but your browser is on -25 or lower, such as 10.2.0-24)*, your browser was removed and you will need to use the "No Browser" column. {: .notice--warning} +### Version Table +
diff --git a/_pages/en_US/get-started.txt b/_pages/en_US/get-started.txt index 9aaee386ee..b72fac57a3 100644 --- a/_pages/en_US/get-started.txt +++ b/_pages/en_US/get-started.txt @@ -2,6 +2,10 @@ title: "Get Started" --- +{% include toc title="Table of Contents" %} + +### Required Reading + Different device models and versions will require different steps to achieve the end goal of boot9strap Custom Firmware. This page will help you find where to start for your device. Click the image of your device to take you to the appropriate page. The colors of the devices in the image may vary, but note the button placement and features of each device carefully to ensure you select the correct one. @@ -31,6 +35,8 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte {% endcapture %} +### Device Table +
{{ notice-1 | markdownify }}
diff --git a/_pages/en_US/godmode9-usage.txt b/_pages/en_US/godmode9-usage.txt index 09cb2cd450..266b88d606 100644 --- a/_pages/en_US/godmode9-usage.txt +++ b/_pages/en_US/godmode9-usage.txt @@ -2,22 +2,24 @@ 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. 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. -## Updating GodMode9 +## Updating GodMode9 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} -#### What you need +### What you need * The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest) -#### Instructions +### Instructions 1. Power off your device 1. Insert your SD card into your computer @@ -25,7 +27,7 @@ Some of the instructions below are only applicable to the latest version of GodM 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 +## Creating a NAND Backup 1. Launch GodMode9 by holding (Start) during boot 1. Press (Home) to bring up the action menu @@ -42,7 +44,7 @@ Some of the instructions below are only applicable to the latest version of GodM 1. Delete `__sysnand_###.bin` from the `/gm9/out/` folder on your SD card after copying it 1. Reinsert your SD card into your device -## Restoring a NAND Backup +## Restoring a NAND Backup 1. Launch GodMode9 by holding (Start) during boot 1. Hold (R) and press (B) at the same time to eject your SD card @@ -59,7 +61,7 @@ Some of the instructions below are only applicable to the latest version of GodM 1. Once it has completed, press (A) to continue 1. Press (A) to relock write permissions if prompted -## Injecting any .CIA app into Health & Safety +## Injecting any .CIA app into Health & Safety For organizational purposes, copy the `.cia` file you wish to inject to the `/cias/` folder on your SD card {: .notice--info} @@ -75,7 +77,7 @@ Note that it is not possible to inject files into Health & Safety that are large 1. Press (A) to continue 1. Press (A) to relock write permissions if prompted -## 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} @@ -87,7 +89,7 @@ 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 -## Dumping a Game Cartridge +## Dumping a Game Cartridge #### Prep Work @@ -106,7 +108,7 @@ 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 -## Dumping a Title +## Dumping a Title 1. Launch GodMode9 by holding (Start) during boot 1. Hover over the drive applicable to the type of title you wish to dump: @@ -118,11 +120,11 @@ This will only work if the Health & Safety injection was performed by GodMode9 ( 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 -## Converting a .3DS to .CIA +## 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 %}
{{ notice | markdownify }}
@@ -132,7 +134,7 @@ This will only work if the Health & Safety injection was performed by GodMode9 ( 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 -##
Backup GBA VC Saves +## Backup GBA VC Saves The game will be outputted to the `/gm9/out/` folder on your SD card with the name `.gbavc.sav`. {: .notice--info} @@ -152,7 +154,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + Press (A) to continue + Press (Start) to reboot your device -## Restore GBA VC Saves +## Restore GBA VC Saves To identify a `.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} @@ -174,7 +176,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + Launch the GBA VC game + Exit the GBA VC game -## Format an SD card +## Format an SD card **Note that this will erase the contents of your SD card!** {: .notice--danger} @@ -190,7 +192,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + Optionally, you may input a custom name for the SD card 1. When prompted, input the key combo given to confirm -## Encrypting / Decrypting a .CIA file +## Encrypting / Decrypting a .CIA file #### Prep Work @@ -207,7 +209,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + **Decrypt inplace:** Replace the selected `.cia` file with a decrypted version 1. Your encrypted / decrypted `.cia` will be outputted to the desired location -## Removing an NNID without formatting your device +## 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` diff --git a/_pages/en_US/h2testw-(windows).txt b/_pages/en_US/h2testw-(windows).txt index 19f4bb98b7..49447a512e 100644 --- a/_pages/en_US/h2testw-(windows).txt +++ b/_pages/en_US/h2testw-(windows).txt @@ -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 1. Insert your SD card into your computer @@ -32,5 +32,5 @@ If the test shows the result `Test finished without errors`, your SD card is goo If the test shows any other results, your SD card may be corrupted or damaged and you may have to replace it! {: .notice--danger} -Return to [Get Started](get-started) +### Return to [Get Started](get-started) {: .notice--primary} diff --git a/_pages/en_US/homebrew-launcher-(alternatives).txt b/_pages/en_US/homebrew-launcher-(alternatives).txt index 1a2a1294c9..357f7459cb 100644 --- a/_pages/en_US/homebrew-launcher-(alternatives).txt +++ b/_pages/en_US/homebrew-launcher-(alternatives).txt @@ -2,13 +2,15 @@ title: "Homebrew Launcher (Alternatives)" --- +{% include toc title="Table of Contents" %} + The Homebrew Launcher has many different entrypoints, or methods of launching. If browserhax is not an option (see the chart below), you do not already own any of these games, and do not have another 3DS that can access the Homebrew Launcher, the cheapest option is to buy a "Nintendo Selects" copy of [Ocarina of Time 3D](https://amzn.to/2fkaKdp) (ensure you get the correct cartridge for your region) and a [Powersaves](https://amzn.to/2fb3VY7) (compatible with all regions), then use oot3dhax from the chart below. Ensure your device's Wireless Communication is turned on as udsploit (used in the next page) will need the wireless module to be active to function, and some devices (New 3DS, New 2DS, and Old 2DS) cannot adjust the Wireless Communication setting from the Homebrew Launcher. Wireless Communication only has to be on; connecting it to an access point is not required. -#### What you need +### What you need * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) * The latest release of [SafeB9SInstaller](https://github.com/d0k3/SafeB9SInstaller/releases/latest) @@ -17,7 +19,7 @@ Ensure your device's Wireless Communication is turned on as udsploit (used in th * The latest release of [udsploit](https://github.com/smealum/udsploit/releases/latest) * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* -#### Instructions +### Instructions 1. Power off your device 1. Insert your SD card into your computer @@ -29,7 +31,7 @@ Ensure your device's Wireless Communication is turned on as udsploit (used in th 1. Copy `udsploit.3dsx` to the `/3ds/` folder on your SD card 1. Copy `SafeB9SInstaller.bin` from the SafeB9SInstaller `.zip` to the root of your SD card and rename `SafeB9SInstaller.bin` to `safehaxpayload.bin` - ![]({{ base_path }}/images/screenshots/boot9strap-hb-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-hb-file-layout.png" | absolute_url }}) {: .notice--info} 1. Reinsert your SD card into your device @@ -69,7 +71,7 @@ Ensure your device's Wireless Communication is turned on as udsploit (used in th 1. Your device should load the Homebrew Launcher - ![]({{ base_path }}/images/screenshots/homebrew-launcher.png) + ![]({{ "/images/screenshots/homebrew-launcher.png" | absolute_url }}) {: .notice--info} Continue to [Installing boot9strap (Homebrew Launcher)](installing-boot9strap-(homebrew-launcher)) diff --git a/_pages/en_US/homebrew-launcher-(soundhax).txt b/_pages/en_US/homebrew-launcher-(soundhax).txt index 4160eee10e..8f1e57a997 100644 --- a/_pages/en_US/homebrew-launcher-(soundhax).txt +++ b/_pages/en_US/homebrew-launcher-(soundhax).txt @@ -2,6 +2,8 @@ title: "Homebrew Launcher (Soundhax)" --- +{% include toc title="Table of Contents" %} + The Homebrew Launcher has many different entrypoints, or methods of launching. Soundhax is compatible with versions 9.0.0 through 11.3.0 in the EUR, JPN, KOR, and USA regions. @@ -17,7 +19,7 @@ This means that using a Cart Update from a version containing an older Nintendo
{{ notice-1 | markdownify }}
-#### What you need +### What you need * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) * The latest release of [Soundhax](http://soundhax.com/) *(for your device and region)* @@ -28,7 +30,7 @@ This means that using a Cart Update from a version containing an older Nintendo * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* * The [otherapp payload](https://smealum.github.io/3ds/#otherapp) *(for your version and region)* -#### Instructions +### Instructions 1. Power off your device 1. Insert your SD card into your computer @@ -42,14 +44,14 @@ This means that using a Cart Update from a version containing an older Nintendo 1. Copy `udsploit.3dsx` to the `/3ds/` folder on your SD card 1. Copy `SafeB9SInstaller.bin` from the SafeB9SInstaller `.zip` to the root of your SD card and rename `SafeB9SInstaller.bin` to `safehaxpayload.bin` - ![]({{ base_path }}/images/screenshots/boot9strap-hb-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-hb-file-layout.png" | absolute_url }}) {: .notice--info} 1. Reinsert your SD card into your device 1. Power on your device 1. Launch Nintendo 3DS Sound - ![]({{ base_path }}/images/screenshots/soundhax-welcome.png) + ![]({{ "/images/screenshots/soundhax-welcome.png" | absolute_url }}) {: .notice--info} 1. If you've never opened Nintendo 3DS Sound before and get tips on how to use it from a bird icon, go through all of the bird tips, then close the app normally and relaunch it @@ -59,12 +61,12 @@ This means that using a Cart Update from a version containing an older Nintendo + If it freezes, just force the console to power off by holding the power button, then try again + If you get a red screen, ensure you copied _the contents of_ the `starter` folder to the root of your SD card - ![]({{ base_path }}/images/screenshots/soundhax-launch.png) + ![]({{ "/images/screenshots/soundhax-launch.png" | absolute_url }}) {: .notice--info} 1. Your device should load the Homebrew Launcher - ![]({{ base_path }}/images/screenshots/homebrew-launcher.png) + ![]({{ "/images/screenshots/homebrew-launcher.png" | absolute_url }}) {: .notice--info} ___ diff --git a/_pages/en_US/installing-boot9strap-(2xrsa).txt b/_pages/en_US/installing-boot9strap-(2xrsa).txt index d1ce2ad20a..0374261698 100644 --- a/_pages/en_US/installing-boot9strap-(2xrsa).txt +++ b/_pages/en_US/installing-boot9strap-(2xrsa).txt @@ -2,16 +2,18 @@ title: "Installing boot9strap (2xrsa)" --- -#### 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) *(standard boot9strap; not the `devkit` file, not the `ntr` file)* * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -21,32 +23,32 @@ title: "Installing boot9strap (2xrsa)" 1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card 1. Copy `arm9.bin` and `arm11.bin` from the SafeB9SInstaller `.zip` to the root of your SD card - ![]({{ base_path }}/images/screenshots/boot9strap-2xrsa-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-2xrsa-file-layout.png" | absolute_url }}) {: .notice--info} 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 + `http://2xrsa.3ds.guide` + If you are on a New 3DS, New 2DS, or Old 2DS and Wireless Communication is off, you can re-enable the wireless by removing the battery and unplugging the charger for several seconds then booting back up + If you get the error "This service is not available in your region", use the System Settings to set your device's country to match the NAND region you installed with 2.1.0 CTRTransfer + If you forgot to disable parental controls before CTRTransfering or otherwise cannot access wireless settings, note that the device will autoconnect to any network named `attwifi` with no password - + If you get another error, [follow this troubleshooting guide](troubleshooting#ts_browser) + + If you get another error, [follow this troubleshooting guide](troubleshooting#a-browser-based-exploit-is-not-working) 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) + + 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 @@ -54,7 +56,7 @@ title: "Installing boot9strap (2xrsa)" ___ -Note that *New 3DS* users who ended up on 2.1.0 after a CTRTransfer *must* [restore their NAND backup](godmode9-usage#nand_restore) before going to the [Finalizing Setup](finalizing-setup) page. +New 3DS 2.1.0 users *must* [restore their NAND backup](godmode9-usage#nand_restore) before going to the [Finalizing Setup](finalizing-setup) page. {: .notice--danger} Continue to [Finalizing Setup](finalizing-setup) diff --git a/_pages/en_US/installing-boot9strap-(browser).txt b/_pages/en_US/installing-boot9strap-(browser).txt index 7ad98cf1e3..65046686f0 100644 --- a/_pages/en_US/installing-boot9strap-(browser).txt +++ b/_pages/en_US/installing-boot9strap-(browser).txt @@ -2,18 +2,20 @@ title: "Installing boot9strap (Browser)" --- +{% include toc title="Table of Contents" %} + If you have already hacked your device before and have a EmuNAND based CFW setup, this guide deals exclusively with SysNAND and you should follow all instructions from within or applying to SysNAND. Note that the terms EmuNAND and RedNAND refer to slightly different implementations of [the same concept](http://3dbrew.org/wiki/NAND_Redirection). -#### 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)* * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -23,13 +25,13 @@ If you have already hacked your device before and have a EmuNAND based CFW setup 1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card 1. Copy `SafeB9SInstaller.dat` and `Launcher.dat` from the SafeB9SInstaller `.zip` to the root of your SD card - ![]({{ base_path }}/images/screenshots/boot9strap-browser-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-browser-file-layout.png" | absolute_url }}) {: .notice--info} 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 one of the following URLs on your device + `https://dukesrg.github.io/?SafeB9SInstaller.dat` @@ -40,16 +42,16 @@ If you have already hacked your device before and have a EmuNAND based CFW setup + 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) + + 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 diff --git a/_pages/en_US/installing-boot9strap-(dsiware).txt b/_pages/en_US/installing-boot9strap-(dsiware).txt index 98f315317a..12a163f8ae 100644 --- a/_pages/en_US/installing-boot9strap-(dsiware).txt +++ b/_pages/en_US/installing-boot9strap-(dsiware).txt @@ -2,6 +2,10 @@ title: "Installing boot9strap (DSiWare)" --- +{% include toc title="Table of Contents" %} + +### Required Reading + There are two different methods of installing boot9strap using DSiWare on 11.6.0. One of these methods only works with four specific games that are no longer sold on the eShop, while the other works with quite a few games still sold on the eShop. @@ -24,32 +28,31 @@ In both of these methods, the source 3DS's NNID will be stuck on the target 3DS {: .notice--danger} ___ +### Methods -{% capture notice-1 %} +___ -[Installing boot9strap (DSiWare Save Injection)](installing-boot9strap-(dsiware-save-injection)) +#### Installing boot9strap (DSiWare Save Injection) This method requires that the source 3DS already legitimately owns one of the following games: - + "Fieldrunners" - + "Legends of Exidia" - + "Guitar Rock Tour" - + "The Legend of Zelda: Four Swords" + + "Fieldrunners" + + "Legends of Exidia" + + "Guitar Rock Tour" + + "The Legend of Zelda: Four Swords" A pirated copy of the game will *not* work, and all of these games have been pulled from the eShop. -{% endcapture %} +Continue to [Installing boot9strap (DSiWare Save Injection)](installing-boot9strap-(dsiware-save-injection)) +{: .notice--primary} -
{{ notice-1 | markdownify }}
+___ -{% capture notice-1 %} - -[Installing boot9strap (DSiWare Game Injection)](installing-boot9strap-(dsiware-game-injection)) +#### Installing boot9strap (DSiWare Game Injection) This method requires that the source 3DS buys or already legitimately owns one of the games listed on the [Installing boot9strap (DSiWare Game Injection List)](installing-boot9strap-(dsiware-game-injection-list)) page. A pirated copy of the game will *not* work. -{% endcapture %} - -
{{ notice-1 | markdownify }}
\ No newline at end of file +Continue to [Installing boot9strap (DSiWare Game Injection)](installing-boot9strap-(dsiware-game-injection)) +{: .notice--primary} \ No newline at end of file diff --git a/_pages/en_US/installing-boot9strap-(dsiware-game-injection).txt b/_pages/en_US/installing-boot9strap-(dsiware-game-injection).txt index 2cdb0bb7d7..519e24a5a8 100644 --- a/_pages/en_US/installing-boot9strap-(dsiware-game-injection).txt +++ b/_pages/en_US/installing-boot9strap-(dsiware-game-injection).txt @@ -2,6 +2,8 @@ title: "Installing boot9strap (DSiWare Game Injection)" --- +{% include toc title="Table of Contents" %} + 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. 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) @@ -11,7 +13,7 @@ Before proceeding, ensure you have read all of the notices and warnings on [Inst If you do not use the correct `.firm` corresponding to the target 3DS, you will BRICK! Ensure you download and use the correct one! {: .notice--danger} -#### What you need +### What you need * Two 3DS family devices + **The source 3DS**: the device running some kind of custom firmware (such as boot9strap or arm9loaderhax) *on the latest version* @@ -32,9 +34,9 @@ If you do not use the correct `.firm` corresponding to the target 3DS, you will + - [`2.54-0_11.4_OLD.firm`](magnet:?xt=urn:btih:0dd89d42ad711f770da899af05ee162ede0d0070&dn=2.54-0_11.4_OLD.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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) + - [`2.54-0_11.4_NEW.firm`](magnet:?xt=urn:btih:3b59dd43eec3edb133555f58d1180bfb196acbb4&dn=2.54-0_11.4_NEW.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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 Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup any saves you care about on *the target 3DS* (it will be formatted!) {: .notice--warning} @@ -59,7 +61,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Reinsert each SD card back into their corresponding 3DS 1. Press (Start) on **the source 3DS** to reboot -##### Section II - Injecting the game and save +#### Section II - Injecting the game and save 1. Boot **the source 3DS** while holding (Start) to launch GodMode9 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 @@ -97,9 +99,9 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + If your game has an error about `boot.nds` or a white screen, **then the exploit has been successful** + If your game has an error about corrupted or inaccessible save data, confirm that you copied **the contents of** the `savedata` folder and not the `savedata` folder itself + If your game behaves normally and does not give you an error about `boot.nds`, then you should stop and figure out what went wrong - + If you get a black screen, [follow this troubleshooting guide](troubleshooting#twl_broken) + + If you get a black screen, [follow this troubleshooting guide](troubleshooting#dsi--ds-functionality-is-broken-after-completing-the-guide) -##### Section III - System Transfer +#### Section III - System Transfer 1. If **the target 3DS** has a Nintendo Network ID on it, you must format the device using System Settings: + Go to the last page of "Other Settings" and select "Format System Memory", then follow all instructions @@ -115,13 +117,13 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + Slowest Method: If you don't have the ability to move the data on a PC use the **full** "Wireless Transfer" option (option 1). 1. Go to [this link](http://en-americas-support.nintendo.com/app/answers/detail/a_id/227/) and follow Nintendo's official instructions for System Transferring from one system to another while keeping in mind what you just read -##### Section IV - Restoring the source 3DS +#### Section IV - Restoring the source 3DS 1. On **the source 3DS**, complete initial setup 1. Do one of the following + Do the rest of the sections and then the full guide on **the target 3DS**, then wait one week *(do not restore your NAND backup before system transferring)*, then System Transfer from **the target 3DS** back to **the source 3DS** *(remember you cannot transfer back from a New 3DS or New 2DS to an Old 3DS or Old 2DS)* + Call Nintendo and tell them you no longer have access to the device that your NNID is linked to (which is **the target 3DS** in this case), and would like it linked to a different device (which is **the source 3DS** in this case) - + You can also just [remove the NNID](https://3ds.guide/troubleshooting#rm_nnid) from **the source 3DS** if you'd prefer it remain on **the target 3DS** + + You can also just [remove the NNID](https://3ds.guide/troubleshooting#removing-an-nnid-without-formatting-your-device) from **the source 3DS** if you'd prefer it remain on **the target 3DS** 1. Reboot **the source 3DS** while holding (Start) to launch GodMode9 1. Navigate to `[0:] SDCARD` -> `gm9` -> `out` 1. Press (A) on `__sysnand_###.bin` to select it, then select "NAND image options...", then select "Restore SysNAND (safe)" @@ -133,7 +135,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Press (A) to relock write permissions if prompted 1. Press (Start) to reboot **the source 3DS** -##### Section V - Backing up the target 3DS's FIRM +#### Section V - Backing up the target 3DS's FIRM 1. Copy `boot.firm` from the Luma3DS `.7z` to the root of your SD card 1. Copy `boot.nds` (B9STool) to the root of **the target 3DS**'s SD card @@ -148,7 +150,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Put your SD card in your computer, then copy `F0F1_NEW3DS.bin` or `F0F1_OLD3DS.bin` (depending on your device) from the `boot9strap` folder to a safe location; make backups in multiple locations; this backup will save you from a brick if anything goes wrong 1. Reinsert your SD card into **the target 3DS** -##### Section VI - Flashing the target 3DS's FIRM +#### Section VI - Flashing the target 3DS's FIRM **Do NOT use b9sTool on a device that already has arm9loaderhax installed or you will BRICK!** {: .notice--danger} @@ -159,10 +161,10 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + You may have to force power off by holding the power button 1. Power on **the target 3DS** -##### Section VII - Configuring Luma3DS +#### Section VII - Configuring Luma3DS 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 diff --git a/_pages/en_US/installing-boot9strap-(dsiware-game-injection-list).txt b/_pages/en_US/installing-boot9strap-(dsiware-game-injection-list).txt index 65aa35caca..a8a74be0e4 100644 --- a/_pages/en_US/installing-boot9strap-(dsiware-game-injection-list).txt +++ b/_pages/en_US/installing-boot9strap-(dsiware-game-injection-list).txt @@ -36,133 +36,133 @@ The following size requirements are because the injected DSiWare and its hacked | | Price | 8 Character ID | Region(s) | QR Code | |:-:|:-:|:-:|:-:|:-:| -| Faceez! Monsters | $1.99 | 4B464D45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B464D45.png) -| Faceez | $1.99 | 4B465A45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B465A45.png) -| 1001 BlockBusters | $1.99 | 4B494F45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B494F45.png) -| SUDOKU | $1.99 | 4B344445 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B344445.png) -| 5 in 1 Solitaire | $1.99 | 4B354945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B354945.png) -| Did It Myself ABC123 | $1.99 | 4B504745 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B504745.png) -| Music on: Retro Keyboard | $1.99 | 4B524845 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524845.png) -| Rytmik Rock Edition | $1.99 | 4B525145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525145.png) -| Robot Rescue 2 | $1.99 | 4B525245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525245.png) -| Jam Space: PocketStudio | $4.99 | 4B4A4D45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4A4D45.png) -| Let's Create! Pottery | $4.99 | 4B4C4A45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4C4A45.png) -| Mixed Messages™ | $4.99 | 4B4D4D45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D4D45.png) -| 1001 Crystal Mazes Collection | $4.99 | 4B4F4B45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4F4B45.png) -| Zoo Frenzy | $4.99 | 4B5A4645 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B5A4645.png) -| Flametail™ | $4.99 | 4B344B45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B344B45.png) -| 101 Dolphin Pets | $4.99 | 4B345A45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345A45.png) -| Escape Trick: Convenience Store | $4.99 | 4B354B45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B354B45.png) -| Glow Artisan | $4.99 | 4B474C45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B474C45.png) -| Roller Angels | $4.99 | 4B524C45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524C45.png) -| Soul of Darkness | $4.99 | 4B534B45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B534B45.png) -| Fishdom | $4.99 | 4B323945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B323945.png) -| Smart Girl's Playhouse® Mini | $4.99 | 4B324645 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B324645.png) -| Super Swap | $4.99 | 4B345745 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345745.png) -| 101 Shark Pets | $4.99 | 4B345945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345945.png) -| Metal Torrent™ | $4.99 | 4B353945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B353945.png) -| Rhythm Core Alpha | $4.99 | 4B354145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B354145.png) -| Escape Trick: The Secret of Rock City Prison | $4.99 | 4B355145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B355145.png) -| HeathCliff Spot On | $4.99 | 4B365345 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B365345.png) -| Magical Diary: Secrets Sharing | $4.99 | 4B373345 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B373345.png) -| Jewel Match | $4.99 | 4B374645 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B374645.png) -| Date or Ditch | $4.99 | 4B443245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B443245.png) -| Absolute Baseball | $4.99 | 4B453945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B453945.png) -| Escape Trick: Ninja Castle | $4.99 | 4B455945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B455945.png) -| Flight Control™ | $4.99 | 4B464945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B464945.png) -| 101 Pinball World | $4.99 | 4B494945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B494945.png) -| Inchworm Animation | $4.99 | 4B495745 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B495745.png) -| Arctic Escape | $4.99 | 4B514145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B514145.png) -| Music on: Drums | $4.99 | 4B514445 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B514445.png) -| Crystal Caverns of Amon-Ra | $4.99 | 4B515145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B515145.png) -| Sudoku Challenge! | $4.99 | 4B534345 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B534345.png) -| Amoebattle | $4.99 | 4B554145 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B554145.png) -| Chronicles of Vampires: The Awakening | $4.99 | 4B565645 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B565645.png) -| Chronicles of Vampires: Origins | $4.99 | 4B565745 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B565745.png) -| 101 MiniGolf World | $4.99 | 4B584945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B584945.png) -| Face Pilot™: Fly With Your Nintendo DSi Camera! | $4.99 | 4B594245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B594245.png) -| Me And My Dogs: Friends Forever | $7.99 | 4B4D3845 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D3845.png) -| Miami Nights: Life in the Spotlight | $7.99 | 4B4D4545 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D4545.png) -| Brain Age™ Express: Arts & Letters | $7.99 | 4B4E4445 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4E4445.png) -| Brain Age™ Express: Math | $7.99 | 4B4E5245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4E5245.png) -| Mario vs. Donkey Kong™: Minis March Again! | $7.99 | 4B444D45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B444D45.png) -| Rytmik | $7.99 | 4B524B45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524B45.png) -| Rayman® | $7.99 | 4B524D45 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524D45.png) -| Foto Face™: The Face Stealer Strikes | $7.99 | 4B345445 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345445.png) -| Art Academy™: Second Semester | $7.99 | 4B413245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B413245.png) -| Art Academy™: First Semester | $7.99 | 4B414945 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B414945.png) -| Hot and Cold: A 3D Hidden Object Adventure | $7.99 | 4B484345 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B484345.png) -| Hip Hop King: Rytmik Edition | $7.99 | 4B525645 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525645.png) -| Rytmik World Music | $7.99 | 4B594845 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B594845.png) -| Rytmik Retrobits | $7.99 | 4B595245 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B595245.png) -| Rhythm Core Alpha 2™ | $9.99 | 4B593445 | USA | ![qrcode]({{ base_path }}/images/qrcodes/000480044B593445.png) +| Faceez! Monsters | $1.99 | 4B464D45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B464D45.png" | absolute_url }}) +| Faceez | $1.99 | 4B465A45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B465A45.png" | absolute_url }}) +| 1001 BlockBusters | $1.99 | 4B494F45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B494F45.png" | absolute_url }}) +| SUDOKU | $1.99 | 4B344445 | USA | ![qrcode]({{ "/images/qrcodes/000480044B344445.png" | absolute_url }}) +| 5 in 1 Solitaire | $1.99 | 4B354945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B354945.png" | absolute_url }}) +| Did It Myself ABC123 | $1.99 | 4B504745 | USA | ![qrcode]({{ "/images/qrcodes/000480044B504745.png" | absolute_url }}) +| Music on: Retro Keyboard | $1.99 | 4B524845 | USA | ![qrcode]({{ "/images/qrcodes/000480044B524845.png" | absolute_url }}) +| Rytmik Rock Edition | $1.99 | 4B525145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B525145.png" | absolute_url }}) +| Robot Rescue 2 | $1.99 | 4B525245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B525245.png" | absolute_url }}) +| Jam Space: PocketStudio | $4.99 | 4B4A4D45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4A4D45.png" | absolute_url }}) +| Let's Create! Pottery | $4.99 | 4B4C4A45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4C4A45.png" | absolute_url }}) +| Mixed Messages™ | $4.99 | 4B4D4D45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4D4D45.png" | absolute_url }}) +| 1001 Crystal Mazes Collection | $4.99 | 4B4F4B45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4F4B45.png" | absolute_url }}) +| Zoo Frenzy | $4.99 | 4B5A4645 | USA | ![qrcode]({{ "/images/qrcodes/000480044B5A4645.png" | absolute_url }}) +| Flametail™ | $4.99 | 4B344B45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B344B45.png" | absolute_url }}) +| 101 Dolphin Pets | $4.99 | 4B345A45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B345A45.png" | absolute_url }}) +| Escape Trick: Convenience Store | $4.99 | 4B354B45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B354B45.png" | absolute_url }}) +| Glow Artisan | $4.99 | 4B474C45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B474C45.png" | absolute_url }}) +| Roller Angels | $4.99 | 4B524C45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B524C45.png" | absolute_url }}) +| Soul of Darkness | $4.99 | 4B534B45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B534B45.png" | absolute_url }}) +| Fishdom | $4.99 | 4B323945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B323945.png" | absolute_url }}) +| Smart Girl's Playhouse® Mini | $4.99 | 4B324645 | USA | ![qrcode]({{ "/images/qrcodes/000480044B324645.png" | absolute_url }}) +| Super Swap | $4.99 | 4B345745 | USA | ![qrcode]({{ "/images/qrcodes/000480044B345745.png" | absolute_url }}) +| 101 Shark Pets | $4.99 | 4B345945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B345945.png" | absolute_url }}) +| Metal Torrent™ | $4.99 | 4B353945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B353945.png" | absolute_url }}) +| Rhythm Core Alpha | $4.99 | 4B354145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B354145.png" | absolute_url }}) +| Escape Trick: The Secret of Rock City Prison | $4.99 | 4B355145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B355145.png" | absolute_url }}) +| HeathCliff Spot On | $4.99 | 4B365345 | USA | ![qrcode]({{ "/images/qrcodes/000480044B365345.png" | absolute_url }}) +| Magical Diary: Secrets Sharing | $4.99 | 4B373345 | USA | ![qrcode]({{ "/images/qrcodes/000480044B373345.png" | absolute_url }}) +| Jewel Match | $4.99 | 4B374645 | USA | ![qrcode]({{ "/images/qrcodes/000480044B374645.png" | absolute_url }}) +| Date or Ditch | $4.99 | 4B443245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B443245.png" | absolute_url }}) +| Absolute Baseball | $4.99 | 4B453945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B453945.png" | absolute_url }}) +| Escape Trick: Ninja Castle | $4.99 | 4B455945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B455945.png" | absolute_url }}) +| Flight Control™ | $4.99 | 4B464945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B464945.png" | absolute_url }}) +| 101 Pinball World | $4.99 | 4B494945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B494945.png" | absolute_url }}) +| Inchworm Animation | $4.99 | 4B495745 | USA | ![qrcode]({{ "/images/qrcodes/000480044B495745.png" | absolute_url }}) +| Arctic Escape | $4.99 | 4B514145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B514145.png" | absolute_url }}) +| Music on: Drums | $4.99 | 4B514445 | USA | ![qrcode]({{ "/images/qrcodes/000480044B514445.png" | absolute_url }}) +| Crystal Caverns of Amon-Ra | $4.99 | 4B515145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B515145.png" | absolute_url }}) +| Sudoku Challenge! | $4.99 | 4B534345 | USA | ![qrcode]({{ "/images/qrcodes/000480044B534345.png" | absolute_url }}) +| Amoebattle | $4.99 | 4B554145 | USA | ![qrcode]({{ "/images/qrcodes/000480044B554145.png" | absolute_url }}) +| Chronicles of Vampires: The Awakening | $4.99 | 4B565645 | USA | ![qrcode]({{ "/images/qrcodes/000480044B565645.png" | absolute_url }}) +| Chronicles of Vampires: Origins | $4.99 | 4B565745 | USA | ![qrcode]({{ "/images/qrcodes/000480044B565745.png" | absolute_url }}) +| 101 MiniGolf World | $4.99 | 4B584945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B584945.png" | absolute_url }}) +| Face Pilot™: Fly With Your Nintendo DSi Camera! | $4.99 | 4B594245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B594245.png" | absolute_url }}) +| Me And My Dogs: Friends Forever | $7.99 | 4B4D3845 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4D3845.png" | absolute_url }}) +| Miami Nights: Life in the Spotlight | $7.99 | 4B4D4545 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4D4545.png" | absolute_url }}) +| Brain Age™ Express: Arts & Letters | $7.99 | 4B4E4445 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4E4445.png" | absolute_url }}) +| Brain Age™ Express: Math | $7.99 | 4B4E5245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B4E5245.png" | absolute_url }}) +| Mario vs. Donkey Kong™: Minis March Again! | $7.99 | 4B444D45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B444D45.png" | absolute_url }}) +| Rytmik | $7.99 | 4B524B45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B524B45.png" | absolute_url }}) +| Rayman® | $7.99 | 4B524D45 | USA | ![qrcode]({{ "/images/qrcodes/000480044B524D45.png" | absolute_url }}) +| Foto Face™: The Face Stealer Strikes | $7.99 | 4B345445 | USA | ![qrcode]({{ "/images/qrcodes/000480044B345445.png" | absolute_url }}) +| Art Academy™: Second Semester | $7.99 | 4B413245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B413245.png" | absolute_url }}) +| Art Academy™: First Semester | $7.99 | 4B414945 | USA | ![qrcode]({{ "/images/qrcodes/000480044B414945.png" | absolute_url }}) +| Hot and Cold: A 3D Hidden Object Adventure | $7.99 | 4B484345 | USA | ![qrcode]({{ "/images/qrcodes/000480044B484345.png" | absolute_url }}) +| Hip Hop King: Rytmik Edition | $7.99 | 4B525645 | USA | ![qrcode]({{ "/images/qrcodes/000480044B525645.png" | absolute_url }}) +| Rytmik World Music | $7.99 | 4B594845 | USA | ![qrcode]({{ "/images/qrcodes/000480044B594845.png" | absolute_url }}) +| Rytmik Retrobits | $7.99 | 4B595245 | USA | ![qrcode]({{ "/images/qrcodes/000480044B595245.png" | absolute_url }}) +| Rhythm Core Alpha 2™ | $9.99 | 4B593445 | USA | ![qrcode]({{ "/images/qrcodes/000480044B593445.png" | absolute_url }}) | | Price | 8 Character ID | Region(s) | QR Code | |:-:|:-:|:-:|:-:|:-:| -| Faceez: Monsters! | 1,99€ | 4B464D50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B464D50.png) -| Faceez | 1,99€ | 4B465A56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B465A56.png) -| 1001 BlockBusters | 1,99€ | 4B494F50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B494F50.png) -| SUDOKU | 1,99€ | 4B344456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B344456.png) -| 5 in 1 Solitaire | 1,99€ | 4B354950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B354950.png) -| Nintendo Countdown Calendar | 1,99€ | 4B415556 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B415556.png) -| Robot Rescue 2 | 1,99€ | 4B525250 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525250.png) -| Robot Rescue | 1,99€ | 4B525456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525456.png) -| Rytmik World Music | 1,99€ | 4B594856 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B594856.png) -| Jagged Alliance | 4,99€ | 4B4A4750 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4A4750.png) -| Let's Create! Pottery | 4,99€ | 4B4C4A56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4C4A56.png) -| Mixed Messages™ | 4,99€ | 4B4D4D56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D4D56.png) -| 1001 Crystal Mazes Collection | 4,99€ | 4B4F4B50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4F4B50.png) -| Trailblaze™: Puzzle Incinerator | 4,99€ | 4B344B56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B344B56.png) -| 101 Dolphin Pets | 4,99€ | 4B345A50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345A50.png) -| Model Academy | 4,99€ | 4B384D50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B384D50.png) -| Ball Fighter | 4,99€ | 4B424F50 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B424F50.png) -| Glow Artisan | 4,99€ | 4B474C56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B474C56.png) -| Soul of Darkness | 4,99€ | 4B534B56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B534B56.png) -| UNO™ | 4,99€ | 4B554E56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B554E56.png) -| Fishdom | 4,99€ | 4B323950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B323950.png) -| AlphaBounce | 4,99€ | 4B325856 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B325856.png) -| Super Swap! | 4,99€ | 4B345750 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345750.png) -| 101 Shark Pets | 4,99€ | 4B345950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345950.png) -| Metal Torrent™ | 4,99€ | 4B353956 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B353956.png) -| Rhythm Core Alpha™ | 4,99€ | 4B354156 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B354156.png) -| Puzzle to Go Sightseeing | 4,99€ | 4B423350 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B423350.png) -| Puzzle to Go Planets and Universe | 4,99€ | 4B425850 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B425850.png) -| Puzzle to Go Baby Animals | 4,99€ | 4B425950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B425950.png) -| Flight Control™ | 4,99€ | 4B464956 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B464956.png) -| 101 Pinball World | 4,99€ | 4B494950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B494950.png) -| Inchworm Animation | 4,99€ | 4B495750 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B495750.png) -| Puzzle to Go Wildlife | 4,99€ | 4B504450 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B504450.png) -| Arctic Escape | 4,99€ | 4B514150 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B514150.png) -| Music on: Drums | 4,99€ | 4B514456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B514456.png) -| Crystal Caverns of Amon-Ra | 4,99€ | 4B515150 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B515150.png) -| Sudoku Challenge! | 4,99€ | 4B534350 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B534350.png) -| 101 MiniGolf World | 4,99€ | 4B584950 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B584950.png) -| Jewel Match | 4,99€ | 4B593550 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B593550.png) -| Face Pilot™: Fly With Your Nintendo DSi Camera! | 4,99€ | 4B594256 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B594256.png) -| Me And My Dogs: Friends Forever | 7,99€ | 4B4D3856 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D3856.png) -| Miami Nights: Life in the Spotlight | 7,99€ | 4B4D4556 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4D4556.png) -| A Little Bit of... Dr Kawashima’s Brain Training™ Arts Edition | 7,99€ | 4B4E4456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4E4456.png) -| A Little Bit of...Dr Kawashima’s Brain Training™: Maths Edition | 7,99€ | 4B4E5256 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4E5256.png) -| Zoo Frenzy | 7,99€ | 4B5A4656 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B5A4656.png) -| Mario vs. Donkey Kong™: Minis March Again! | 7,99€ | 4B444D56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B444D56.png) -| Rytmik | 7,99€ | 4B524B56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524B56.png) -| RAYMAN® | 7,99€ | 4B524D56 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B524D56.png) -| Foto Face™: The Face Stealer Strikes | 7,99€ | 4B345456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B345456.png) -| Art Academy™ Second Semester | 7,99€ | 4B413256 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B413256.png) -| Art Academy™ First Semester | 7,99€ | 4B414956 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B414956.png) -| Rytmik Rock Edition | 7,99€ | 4B525156 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525156.png) -| Hip Hop King Rytmik Edition | 7,99€ | 4B525656 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B525656.png) -| Rytmik Retrobits | 7,99€ | 4B595256 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B595256.png) -| Rhythm Core Alpha 2™ | 9,99€ | 4B593456 | EUR | ![qrcode]({{ base_path }}/images/qrcodes/000480044B593456.png) +| Faceez: Monsters! | 1,99€ | 4B464D50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B464D50.png" | absolute_url }}) +| Faceez | 1,99€ | 4B465A56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B465A56.png" | absolute_url }}) +| 1001 BlockBusters | 1,99€ | 4B494F50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B494F50.png" | absolute_url }}) +| SUDOKU | 1,99€ | 4B344456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B344456.png" | absolute_url }}) +| 5 in 1 Solitaire | 1,99€ | 4B354950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B354950.png" | absolute_url }}) +| Nintendo Countdown Calendar | 1,99€ | 4B415556 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B415556.png" | absolute_url }}) +| Robot Rescue 2 | 1,99€ | 4B525250 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B525250.png" | absolute_url }}) +| Robot Rescue | 1,99€ | 4B525456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B525456.png" | absolute_url }}) +| Rytmik World Music | 1,99€ | 4B594856 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B594856.png" | absolute_url }}) +| Jagged Alliance | 4,99€ | 4B4A4750 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4A4750.png" | absolute_url }}) +| Let's Create! Pottery | 4,99€ | 4B4C4A56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4C4A56.png" | absolute_url }}) +| Mixed Messages™ | 4,99€ | 4B4D4D56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4D4D56.png" | absolute_url }}) +| 1001 Crystal Mazes Collection | 4,99€ | 4B4F4B50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4F4B50.png" | absolute_url }}) +| Trailblaze™: Puzzle Incinerator | 4,99€ | 4B344B56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B344B56.png" | absolute_url }}) +| 101 Dolphin Pets | 4,99€ | 4B345A50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B345A50.png" | absolute_url }}) +| Model Academy | 4,99€ | 4B384D50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B384D50.png" | absolute_url }}) +| Ball Fighter | 4,99€ | 4B424F50 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B424F50.png" | absolute_url }}) +| Glow Artisan | 4,99€ | 4B474C56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B474C56.png" | absolute_url }}) +| Soul of Darkness | 4,99€ | 4B534B56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B534B56.png" | absolute_url }}) +| UNO™ | 4,99€ | 4B554E56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B554E56.png" | absolute_url }}) +| Fishdom | 4,99€ | 4B323950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B323950.png" | absolute_url }}) +| AlphaBounce | 4,99€ | 4B325856 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B325856.png" | absolute_url }}) +| Super Swap! | 4,99€ | 4B345750 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B345750.png" | absolute_url }}) +| 101 Shark Pets | 4,99€ | 4B345950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B345950.png" | absolute_url }}) +| Metal Torrent™ | 4,99€ | 4B353956 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B353956.png" | absolute_url }}) +| Rhythm Core Alpha™ | 4,99€ | 4B354156 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B354156.png" | absolute_url }}) +| Puzzle to Go Sightseeing | 4,99€ | 4B423350 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B423350.png" | absolute_url }}) +| Puzzle to Go Planets and Universe | 4,99€ | 4B425850 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B425850.png" | absolute_url }}) +| Puzzle to Go Baby Animals | 4,99€ | 4B425950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B425950.png" | absolute_url }}) +| Flight Control™ | 4,99€ | 4B464956 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B464956.png" | absolute_url }}) +| 101 Pinball World | 4,99€ | 4B494950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B494950.png" | absolute_url }}) +| Inchworm Animation | 4,99€ | 4B495750 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B495750.png" | absolute_url }}) +| Puzzle to Go Wildlife | 4,99€ | 4B504450 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B504450.png" | absolute_url }}) +| Arctic Escape | 4,99€ | 4B514150 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B514150.png" | absolute_url }}) +| Music on: Drums | 4,99€ | 4B514456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B514456.png" | absolute_url }}) +| Crystal Caverns of Amon-Ra | 4,99€ | 4B515150 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B515150.png" | absolute_url }}) +| Sudoku Challenge! | 4,99€ | 4B534350 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B534350.png" | absolute_url }}) +| 101 MiniGolf World | 4,99€ | 4B584950 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B584950.png" | absolute_url }}) +| Jewel Match | 4,99€ | 4B593550 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B593550.png" | absolute_url }}) +| Face Pilot™: Fly With Your Nintendo DSi Camera! | 4,99€ | 4B594256 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B594256.png" | absolute_url }}) +| Me And My Dogs: Friends Forever | 7,99€ | 4B4D3856 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4D3856.png" | absolute_url }}) +| Miami Nights: Life in the Spotlight | 7,99€ | 4B4D4556 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4D4556.png" | absolute_url }}) +| A Little Bit of... Dr Kawashima’s Brain Training™ Arts Edition | 7,99€ | 4B4E4456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4E4456.png" | absolute_url }}) +| A Little Bit of...Dr Kawashima’s Brain Training™: Maths Edition | 7,99€ | 4B4E5256 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B4E5256.png" | absolute_url }}) +| Zoo Frenzy | 7,99€ | 4B5A4656 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B5A4656.png" | absolute_url }}) +| Mario vs. Donkey Kong™: Minis March Again! | 7,99€ | 4B444D56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B444D56.png" | absolute_url }}) +| Rytmik | 7,99€ | 4B524B56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B524B56.png" | absolute_url }}) +| RAYMAN® | 7,99€ | 4B524D56 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B524D56.png" | absolute_url }}) +| Foto Face™: The Face Stealer Strikes | 7,99€ | 4B345456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B345456.png" | absolute_url }}) +| Art Academy™ Second Semester | 7,99€ | 4B413256 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B413256.png" | absolute_url }}) +| Art Academy™ First Semester | 7,99€ | 4B414956 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B414956.png" | absolute_url }}) +| Rytmik Rock Edition | 7,99€ | 4B525156 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B525156.png" | absolute_url }}) +| Hip Hop King Rytmik Edition | 7,99€ | 4B525656 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B525656.png" | absolute_url }}) +| Rytmik Retrobits | 7,99€ | 4B595256 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B595256.png" | absolute_url }}) +| Rhythm Core Alpha 2™ | 9,99€ | 4B593456 | EUR | ![qrcode]({{ "/images/qrcodes/000480044B593456.png" | absolute_url }}) | | Price | 8 Character ID | Region(s) | QR Code | |:-:|:-:|:-:|:-:|:-:| -| タッチで漫才! メガミの笑壺DL | 500円 | 4B394C4A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B394C4A.png) -| 練熟漢字中学生 | 800円 | 4B4A384A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4A384A.png) -| 教えてダーリン | 800円 | 4B4F534A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4F534A.png) -| 高校英単語基本400語マスター | 800円 | 4B454B4A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B454B4A.png) -| 中学英単語基本400語マスター | 800円 | 4B45544A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B45544A.png) -| 愛してイルカ ~愛されてイルカ~ | 800円 | 4B49524A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B49524A.png) -| ARC STYLE: ジュラシックワールド | 820円 | 4B4C444A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B4C444A.png) -| ゴー!ゴー!ココポロ | 820円 | 4B33474A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B33474A.png) -| X-RETURNS | 823円 | 4B44584A | JPN | ![qrcode]({{ base_path }}/images/qrcodes/000480044B44584A.png) +| タッチで漫才! メガミの笑壺DL | 500円 | 4B394C4A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B394C4A.png" | absolute_url }}) +| 練熟漢字中学生 | 800円 | 4B4A384A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B4A384A.png" | absolute_url }}) +| 教えてダーリン | 800円 | 4B4F534A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B4F534A.png" | absolute_url }}) +| 高校英単語基本400語マスター | 800円 | 4B454B4A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B454B4A.png" | absolute_url }}) +| 中学英単語基本400語マスター | 800円 | 4B45544A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B45544A.png" | absolute_url }}) +| 愛してイルカ ~愛されてイルカ~ | 800円 | 4B49524A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B49524A.png" | absolute_url }}) +| ARC STYLE: ジュラシックワールド | 820円 | 4B4C444A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B4C444A.png" | absolute_url }}) +| ゴー!ゴー!ココポロ | 820円 | 4B33474A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B33474A.png" | absolute_url }}) +| X-RETURNS | 823円 | 4B44584A | JPN | ![qrcode]({{ "/images/qrcodes/000480044B44584A.png" | absolute_url }}) diff --git a/_pages/en_US/installing-boot9strap-(dsiware-save-injection).txt b/_pages/en_US/installing-boot9strap-(dsiware-save-injection).txt index 0edd3ff299..92d639fb45 100644 --- a/_pages/en_US/installing-boot9strap-(dsiware-save-injection).txt +++ b/_pages/en_US/installing-boot9strap-(dsiware-save-injection).txt @@ -2,6 +2,8 @@ title: "Installing boot9strap (DSiWare Save Injection)" --- +{% include toc title="Table of Contents" %} + 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. 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) @@ -11,7 +13,7 @@ Before proceeding, ensure you have read all of the notices and warnings on [Inst If you do not use the correct `.firm` corresponding to the target 3DS, you will BRICK! Ensure you download and use the correct one! {: .notice--danger} -#### What you need +### What you need * Two 3DS family devices + **The source 3DS**: the device running some kind of custom firmware (such as boot9strap or arm9loaderhax) *on the latest version* @@ -31,9 +33,9 @@ If you do not use the correct `.firm` corresponding to the target 3DS, you will + - [`2.54-0_11.4_OLD.firm`](magnet:?xt=urn:btih:0dd89d42ad711f770da899af05ee162ede0d0070&dn=2.54-0_11.4_OLD.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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) + - [`2.54-0_11.4_NEW.firm`](magnet:?xt=urn:btih:3b59dd43eec3edb133555f58d1180bfb196acbb4&dn=2.54-0_11.4_NEW.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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 Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup any saves you care about on *the target 3DS* (it will be formatted!) {: .notice--warning} @@ -65,7 +67,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Reinsert each SD card back into their corresponding 3DS 1. Press (Start) on **the source 3DS** to reboot -##### Section II - Installing the Save +#### Section II - Installing the Save 1. Boot **the source 3DS** while holding (Start) to launch GodMode9 1. Navigate to `[0:] SDCARD` @@ -98,9 +100,9 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + **The Legend of Zelda: Four Swords**: Just start the game + If your game has an error about `boot.nds` or a white screen, **then the exploit has been successful** + If your game behaves normally and does not give you this error, then you should stop and figure out what went wrong - + If you get a black screen, [follow this troubleshooting guide](troubleshooting#twl_broken) + + If you get a black screen, [follow this troubleshooting guide](troubleshooting#dsi--ds-functionality-is-broken-after-completing-the-guide) -##### Section III - System Transfer +#### Section III - System Transfer 1. **Backup every file on both 3DS's SD cards to two separate folders on your computer (keep track of which is which)!** 1. Reinsert each SD card back into their corresponding 3DS @@ -118,13 +120,13 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + Slowest Method: If you don't have the ability to move the data on a PC use the **full** "Wireless Transfer" option (option 1). 1. Go to [this link](http://en-americas-support.nintendo.com/app/answers/detail/a_id/227/) and follow Nintendo's official instructions for System Transferring from one system to another while keeping in mind what you just read -##### Section IV - Restoring the source 3DS +#### Section IV - Restoring the source 3DS 1. On **the source 3DS**, complete initial setup 1. Do one of the following + Do the rest of the sections and then the full guide on **the target 3DS**, then wait one week *(do not restore your NAND backup before system transferring)*, then System Transfer from **the target 3DS** back to **the source 3DS** *(remember you cannot transfer back from a New 3DS or New 2DS to an Old 3DS or Old 2DS)* + Call Nintendo and tell them you no longer have access to the device that your NNID is linked to (which is **the target 3DS** in this case), and would like it linked to a different device (which is **the source 3DS** in this case) - + You can also just [remove the NNID](https://3ds.guide/troubleshooting#rm_nnid) from **the source 3DS** if you'd prefer it remain on **the target 3DS** + + You can also just [remove the NNID](https://3ds.guide/troubleshooting#removing-an-nnid-without-formatting-your-device) from **the source 3DS** if you'd prefer it remain on **the target 3DS** 1. Reboot **the source 3DS** while holding (Start) to launch GodMode9 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 @@ -139,7 +141,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Press (A) to relock write permissions if prompted 1. Press (Start) to reboot **the source 3DS** -##### Section V - Backing up the target 3DS's FIRM +#### Section V - Backing up the target 3DS's FIRM 1. Copy `boot.firm` from the Luma3DS `.7z` to the root of your SD card 1. Copy `boot.nds` (B9STool) to the root of **the target 3DS**'s SD card @@ -159,7 +161,7 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an 1. Put your SD card in your computer, then copy `F0F1_NEW3DS.bin` or `F0F1_OLD3DS.bin` (depending on your device) from the `boot9strap` folder to a safe location; make backups in multiple locations; this backup will save you from a brick if anything goes wrong 1. Reinsert your SD card into **the target 3DS** -##### Section VI - Flashing the target 3DS's FIRM +#### Section VI - Flashing the target 3DS's FIRM **Do NOT use b9sTool on a device that already has arm9loaderhax installed or you will BRICK!** {: .notice--danger} @@ -175,10 +177,10 @@ Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup an + You may have to force power off by holding the power button 1. Power on **the target 3DS** -##### Section VII - Configuring Luma3DS +#### Section VII - Configuring Luma3DS 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 diff --git a/_pages/en_US/installing-boot9strap-(hardmod).txt b/_pages/en_US/installing-boot9strap-(hardmod).txt index 8db43ea77a..27094b4d67 100644 --- a/_pages/en_US/installing-boot9strap-(hardmod).txt +++ b/_pages/en_US/installing-boot9strap-(hardmod).txt @@ -2,6 +2,8 @@ title: "Installing boot9strap (Hardmod)" --- +{% include toc title="Table of Contents" %} + An excellent guide to getting a hardmod can be found [here](https://gbatemp.net/threads/414498/). If you are on a New 3DS, read [this](https://github.com/Plailect/Guide/issues/681) and [this](https://github.com/Plailect/Guide/issues/1185) before hardmodding. This is a currently working implementation of the "FIRM partitions known-plaintext" exploit detailed [here](https://www.3dbrew.org/wiki/3DS_System_Flaws). @@ -10,7 +12,7 @@ To use the [magnet](https://en.wikipedia.org/wiki/Magnet_URI_scheme) links on th This will work on New 3DS, New 2DS, Old 3DS, and Old 2DS on *all* versions that you have a corresponding `.firm` for. -#### What you need +### What you need * Your NAND image extracted using your [hardmod](https://gbatemp.net/threads/414498/) * The latest release of [boot9strap](https://github.com/SciresM/boot9strap/releases/latest) *(standard boot9strap; not the `devkit` file, not the `ntr` file)* @@ -50,9 +52,9 @@ This will work on New 3DS, New 2DS, Old 3DS, and Old 2DS on *all* versions that | 11.3.0 | 2.53-0 | [`2.53-0_11.3_OLD.firm`](magnet:?xt=urn:btih:9d8d62c50b0ef1ad35b5e62602f21fac773171ce&dn=2.53-0_11.3_OLD.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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) | [`2.53-0_11.3_NEW.firm`](magnet:?xt=urn:btih:53363ab66f877d9edf33f55e6abc3ccf72819191&dn=2.53-0_11.3_NEW.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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) | | 11.4.0 - 11.6.0 | 2.54-0 | [`2.54-0_11.4_OLD.firm`](magnet:?xt=urn:btih:0dd89d42ad711f770da899af05ee162ede0d0070&dn=2.54-0_11.4_OLD.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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) | [`2.54-0_11.4_NEW.firm`](magnet:?xt=urn:btih:3b59dd43eec3edb133555f58d1180bfb196acbb4&dn=2.54-0_11.4_NEW.firm&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=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%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. Copy `boot.firm` from the Luma3DS `.7z` to the root of your SD card 1. Copy _the contents of_ `starter.zip` to the root of your SD card @@ -62,7 +64,7 @@ This will work on New 3DS, New 2DS, Old 3DS, and Old 2DS on *all* versions that 1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the hardmod-b9s-installer folder on your computer 1. Copy your NAND dump (from your hardmod) to the hardmod-b9s-installer folder on your computer and name it `NAND.bin` -##### Section II - Installing boot9strap +#### Section II - Installing boot9strap 1. Run hardmod-b9s-installer + Windows Users: Run `install-b9s.exe` @@ -70,10 +72,10 @@ This will work on New 3DS, New 2DS, Old 3DS, and Old 2DS on *all* versions that 1. Flash your outputted `NAND-patched.bin` to your device with your hardmod 1. Reboot your device -##### Section III - Configuring Luma3DS +#### Section III - Configuring Luma3DS 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 diff --git a/_pages/en_US/installing-boot9strap-(homebrew-launcher).txt b/_pages/en_US/installing-boot9strap-(homebrew-launcher).txt index b98aa7e13e..85a95a99b8 100644 --- a/_pages/en_US/installing-boot9strap-(homebrew-launcher).txt +++ b/_pages/en_US/installing-boot9strap-(homebrew-launcher).txt @@ -2,11 +2,13 @@ title: "Installing boot9strap (Homebrew Launcher)" --- +{% include toc title="Table of Contents" %} + If you have already hacked your device before and have a EmuNAND based CFW setup, this guide deals exclusively with SysNAND and you should follow all instructions from within or applying to SysNAND. Note that the terms EmuNAND and RedNAND refer to slightly different implementations of [the same concept](http://3dbrew.org/wiki/NAND_Redirection). -#### Instructions +### Instructions -##### Section I - Launching SafeB9SInstaller +#### Section I - Launching SafeB9SInstaller 1. Launch udsploit from the list of homebrew + You may have to scroll down to see this option @@ -20,16 +22,16 @@ If you have already hacked your device before and have a EmuNAND based CFW setup + If it freezes, just force the console to power off by holding the power button, then try again 1. If the exploit was successful, you will have booted into SafeB9SInstaller -##### Section II - Installing boot9strap +#### Section II - 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 III - Configuring Luma3DS +#### Section III - 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) + + 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 diff --git a/_pages/en_US/installing-boot9strap-(mset).txt b/_pages/en_US/installing-boot9strap-(mset).txt index 99c34fc01d..cd47094ce4 100644 --- a/_pages/en_US/installing-boot9strap-(mset).txt +++ b/_pages/en_US/installing-boot9strap-(mset).txt @@ -2,9 +2,11 @@ title: "Installing boot9strap (MSET)" --- +{% include toc title="Table of Contents" %} + If you have already hacked your device before and have a EmuNAND based CFW setup, this guide deals exclusively with SysNAND and you should follow all instructions from within or applying to SysNAND. Note that the terms EmuNAND and RedNAND refer to slightly different implementations of [the same concept](http://3dbrew.org/wiki/NAND_Redirection). -#### 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)* @@ -12,9 +14,9 @@ If you have already hacked your device before and have a EmuNAND based CFW setup * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) * Any DS flashcart that works on your device version -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your compute @@ -24,14 +26,14 @@ If you have already hacked your device before and have a EmuNAND based CFW setup 1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card 1. Copy `SafeB9SInstaller.dat` from the SafeB9SInstaller `.zip` to the root of your SD card - ![]({{ base_path }}/images/screenshots/boot9strap-mset-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-mset-file-layout.png" | absolute_url }}) {: .notice--info} 1. Reinsert your SD card into your device 1. Copy `SafeB9SInstaller.nds` from the SafeB9SInstaller `.zip` to your DS flashcart 1. Power on your device -##### Section II - Launching SafeB9SInstaller +#### Section II - Launching SafeB9SInstaller 1. Start your DS flashcart from your device 1. Boot `SafeB9SInstaller.nds` using your flashcart @@ -41,16 +43,16 @@ If you have already hacked your device before and have a EmuNAND based CFW setup 1. Reboot the system, then go to System Settings, then "Other Settings", then "Profile", then "Nintendo DS Profile" 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) + + 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 diff --git a/_pages/en_US/installing-boot9strap-(ntrboot).txt b/_pages/en_US/installing-boot9strap-(ntrboot).txt index d27009ba95..523dc18cab 100644 --- a/_pages/en_US/installing-boot9strap-(ntrboot).txt +++ b/_pages/en_US/installing-boot9strap-(ntrboot).txt @@ -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 @@ -11,9 +13,9 @@ title: "Installing boot9strap (ntrboot)" * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -22,13 +24,13 @@ title: "Installing boot9strap (ntrboot)" 1. Create a folder named `boot9strap` on the root of your SD card 1. Copy `boot9strap.firm` and `boot9strap.firm.sha` from the boot9strap `.zip` to the `/boot9strap/` folder on your SD card - ![]({{ base_path }}/images/screenshots/boot9strap-ntrboot-file-layout.png) + ![]({{ "/images/screenshots/boot9strap-ntrboot-file-layout.png" | absolute_url }}) {: .notice--info} 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) @@ -40,7 +42,7 @@ 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 @@ -49,7 +51,7 @@ title: "Installing boot9strap (ntrboot)" 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 @@ -57,7 +59,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 @@ -76,9 +78,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 @@ -92,7 +94,7 @@ Do not follow this section until you have completed the rest of the instructions + - [`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) + - [`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 diff --git a/_pages/en_US/move-emunand.txt b/_pages/en_US/move-emunand.txt index cec37d1eb7..3928c1c99a 100644 --- a/_pages/en_US/move-emunand.txt +++ b/_pages/en_US/move-emunand.txt @@ -2,6 +2,8 @@ title: "Move EmuNAND" --- +{% include toc title="Table of Contents" %} + This is an add-on section for moving the contents of a previous EmuNAND to your new SysNAND CFW, then removing the old EmuNAND partition. Note that the terms EmuNAND and RedNAND refer to slightly different implementations of [the same concept](http://3dbrew.org/wiki/NAND_Redirection). 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. @@ -9,15 +11,15 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma **You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use this.** {: .notice--danger} -#### What you need +### What you need * An existing EmuNAND * The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest) * The latest release of [FBI](https://github.com/Steveice10/FBI/releases/latest) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -25,7 +27,7 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma 1. Copy the `gm9` folder from the GodMode9 `.zip` to the root of your SD card 1. Reinsert your SD card into your device -##### Section II - Backup SysNAND DSiWare Saves +#### Section II - Backup SysNAND DSiWare Saves If you do not have any DSiWare games or saves that you care about, skip this section. {: .notice--info} @@ -39,7 +41,7 @@ If you do not have any DSiWare games or saves that you care about, skip this sec + This process may take some time if you have many DSiWare games 1. Press (B) twice to return to the main menu -##### Section III - Backup GBA VC Saves +#### Section III - Backup GBA VC Saves If you do not have any GBA VC games or saves that you care about, skip this section. {: .notice--info} @@ -65,7 +67,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + Press (A) to continue + Press (Start) to reboot your device -##### Section IV - Copy EmuNAND to SysNAND +#### Section IV - Copy EmuNAND to SysNAND 1. Launch GodMode9 by holding (Start) during boot 1. Navigate to `[E:] EMUNAND VIRTUAL` @@ -78,7 +80,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al 1. Press (B) to decline relocking write permissions if prompted 1. Press (B) to return to the main menu -##### Section V - Restore DSiWare Saves +#### Section V - Restore DSiWare Saves If you did not backup DSiWare Saves earlier, skip this section. {: .notice--info} @@ -95,7 +97,7 @@ If you did not backup DSiWare Saves earlier, skip this section. 1. Press (B) to decline relocking write permissions if prompted 1. Press (B) twice to return to the main menu -##### Section VI - Restore GBA VC Saves +#### Section VI - Restore GBA VC Saves If you did not backup GBA VC Saves earlier, skip this section. {: .notice--info} @@ -123,7 +125,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al + Exit the GBA VC game 1. Launch GodMode9 by holding (Start) during boot -##### Section VII - Backup SysNAND +#### Section VII - Backup SysNAND 1. Press (Home) to bring up the action menu 1. Select "Scripts..." @@ -139,7 +141,7 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al 1. Delete `__sysnand_###.bin` from the `/gm9/out/` folder on your SD card after copying it 1. **Backup every file on your SD card to a folder on your computer; all files will be deleted in the following steps** -##### Section VIII - Format SD card +#### Section VIII - Format SD card 1. Reinsert your SD card into your device 1. Press (Home) to bring up the action menu @@ -162,5 +164,5 @@ To identify a `.gbavc.sav` file's Title ID, you can get a listing of al ___ -Return to [Finalizing Setup](finalizing-setup). +### Return to [Finalizing Setup](finalizing-setup). {: .notice--primary} diff --git a/_pages/en_US/ntr-and-cubic-ninja.txt b/_pages/en_US/ntr-and-cubic-ninja.txt index 3ae95b46d7..df155d112a 100644 --- a/_pages/en_US/ntr-and-cubic-ninja.txt +++ b/_pages/en_US/ntr-and-cubic-ninja.txt @@ -2,12 +2,14 @@ title: "NTR and Cubic Ninja" --- +{% 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) NTR Cubic Ninja will work for JPN New 3DS ONLY! {: .notice--warning} -#### What you need +### What you need * [JPN Cubic Ninja](https://www.amazon.com/dp/B004QL7M0A) * The Homebrew [Starter Kit](http://smealum.github.io/ninjhax2/starter.zip) @@ -20,9 +22,9 @@ NTR Cubic Ninja will work for JPN New 3DS ONLY! * The 9.2.0 downgrade pack `.zip` file for your device and region: + - [New 3DS 9.2.0 - JPN](magnet:?xt=urn:btih:c8630ed31b53637b9023bd4dc1ce38362bb8ecd9&dn=9.2.0-20J%28Full%29%5Fn3DS.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=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%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=udp%3A%2F%2Ftracker.piratepublic.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.kicks-ass.net%3A80%2Fannounce&tr=http%3A%2F%2Ftracker.kicks-ass.net%2Fannounce) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Install WAMP to the default directory 1. Copy the contents of `3ds-private-update-server.zip` to `C:\wamp\www\` *(overwrite any existing files)* @@ -39,7 +41,7 @@ NTR Cubic Ninja will work for JPN New 3DS ONLY! 1. Copy _the contents of_ `starter.zip` to the root of your SD card 1. Put your SD card back into your device -##### Section II - Updating +#### Section II - Updating 1. Boot your device into recovery mode by holding (L)+(R)+(A)+(UP) while powering on 1. Decline the update and reboot diff --git a/_pages/en_US/ntrboot.txt b/_pages/en_US/ntrboot.txt index 51de650b35..01174b1c69 100644 --- a/_pages/en_US/ntrboot.txt +++ b/_pages/en_US/ntrboot.txt @@ -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,10 +37,11 @@ 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. @@ -48,33 +53,30 @@ Note that more recent 3DS versions have blocked access to some flashcarts, and s + R4i Ultra : <= 4.3.0 + Infinity 3 R4i : <= 11.6.0 -{% endcapture %} +Continue to [Flashing ntrboot (3DS Single System)](flashing-ntrboot-(3ds-single-system)) +{: .notice--primary} -
{{ notice-1 | markdownify }}
+___ -{% 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. -{% endcapture %} +Continue to [Flashing ntrboot (3DS Multi System)](flashing-ntrboot-(3ds-multi-system)) +{: .notice--primary} -
{{ notice-1 | markdownify }}
+___ -{% 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} -
{{ notice-1 | markdownify }}
+___ -{% 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} -
{{ notice-1 | markdownify }}
+___ -{% 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 %} - -
{{ notice-1 | markdownify }}
+Continue to [Flashing ntrboot (Powersaves)](flashing-ntrboot-(powersaves)) +{: .notice--primary} \ No newline at end of file diff --git a/_pages/en_US/region-changing.txt b/_pages/en_US/region-changing.txt index 2f412ef92a..8b1b7025e4 100644 --- a/_pages/en_US/region-changing.txt +++ b/_pages/en_US/region-changing.txt @@ -2,6 +2,8 @@ title: "Region Changing" --- +{% include toc title="Table of Contents" %} + This is add-on section for region changing your CFW SysNAND. This is done by installing the 11.5.0 CTRTransfer image for the region you want to switch to. Note that region changing is almost completely unnecessary since Luma3DS supports out-of-region games and individual [title region emulation](https://github.com/AuroraWright/Luma3DS/wiki/Options-and-usage). @@ -23,11 +25,11 @@ Region changing using CTRTransfer (which this method uses) seems to cause reboot You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use this. {: .notice--danger} -#### What you need +### What you need * 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`.3dsx` file)* -* [`ctrtransfer_ticket_copy.gm9`]({{ base_path }}/gm9_scripts/ctrtransfer_ticket_copy.gm9) +* [`ctrtransfer_ticket_copy.gm9`]({{ "/gm9_scripts/ctrtransfer_ticket_copy.gm9" | absolute_url }}) * The 11.5.0 CTRTransfer image for your device and region *(if your device is not from one of these regions, just pick one that matches your device type)*: + - [New 3DS or 2DS - 11.5.0 - EUR - CTRTransfer](magnet:?xt=urn:btih:465f1048f81e8e5c651ce2a4d9df48fec88d1099&dn=11.5.0-38E_ctrtransfer_n3ds.zip&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce) @@ -39,9 +41,9 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t + - [Old 3DS or 2DS - 11.5.0 - JPN - CTRTransfer](magnet:?xt=urn:btih:d8913b4c0da224e8852fa2f685c41ddbce5310bc&dn=11.5.0-38J_ctrtransfer_o3ds.zip&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.coppersurfer.tk%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=http%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce) + - [Old 3DS or 2DS - 11.5.0 - USA - CTRTransfer](magnet:?xt=urn:btih:2708089605ca47387fa64e996a699eedd18031e8&dn=11.5.0-38U_ctrtransfer_o3ds.zip&tr=udp%3A%2F%2Ftorrent.gresille.org%3A80%2Fannounce&tr=udp%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker.baravik.org%3A6970%2Fannounce&tr=udp%3A%2F%2Ftracker.filetracker.pl%3A8089%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=http%3A%2F%2Ftracker.tfile.me%2Fannounce&tr=udp%3A%2F%2Fzer0day.ch%3A1337%2Fannounce&tr=udp%3A%2F%2Ftracker.tiny-vps.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=http%3A%2F%2Fp4p.arenabg.com%3A1337%2Fannounce&tr=http%3A%2F%2Ftorrent.gresille.org%2Fannounce&tr=udp%3A%2F%2Ftracker.yoshi210.com%3A6969%2Fannounce&tr=udp%3A%2F%2F9.rarbg.com%3A2710%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=http%3A%2F%2Ftracker.aletorrenty.pl%3A2710%2Fannounce&tr=udp%3A%2F%2Ftracker.leechers-paradise.org%3A6969%2Fannounce&tr=http%3A%2F%2Ftracker1.wasabii.com.tw%3A6969%2Fannounce) -#### Instructions +### Instructions -##### Section I - Prep Work +#### Section I - Prep Work 1. Power off your device 1. Insert your SD card into your computer @@ -53,7 +55,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t 1. Copy `FBI.3dsx` to the `/3ds/` folder on your SD card 1. Reinsert your SD card into your device -##### Section II - CTRTransfer +#### Section II - CTRTransfer 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 @@ -81,7 +83,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t + Updates while using B9S + Luma (what you have) are safe + If this gives you an error, set your DNS settings to "auto" -##### Section III - Launching FBI +#### Section III - Launching FBI 1. Launch the Download Play application 1. Press (L) + (Down) + (Select) at the same time to open the Rosalina menu @@ -94,7 +96,7 @@ You MUST have already installed Luma3DS and boot9strap or arm9loaderhax to use t 1. Launch the Download Play application 1. Your device should load the Homebrew Launcher -##### Section IV - Reinstalling Tickets +#### Section IV - Reinstalling Tickets If script found no user tickets told you to skip this section, then skip this section {: .notice--info} @@ -114,7 +116,7 @@ If script found no user tickets told you to skip this section, then skip this se + Press (B) to decline installing tickets from CDN. 1. Press (Home) to exit FBI -##### Section V - Region settings +#### Section V - Region settings 1. Launch the System Settings 1. Go to "Other Settings", "Profile", then "Region Settings" @@ -122,7 +124,7 @@ If script found no user tickets told you to skip this section, then skip this se 1. If prompted, you do not need to set a state 1. Update your region changed CFW SysNAND to the latest version -##### Section VI - Remove CTRTransfer image +#### Section VI - Remove CTRTransfer image 1. Launch GodMode9 by holding (Start) during boot 1. Navigate to `[0:] SDCARD` -> `gm9` diff --git a/_pages/en_US/site-navigation.txt b/_pages/en_US/site-navigation.txt index 5f377c9999..291af57352 100644 --- a/_pages/en_US/site-navigation.txt +++ b/_pages/en_US/site-navigation.txt @@ -16,10 +16,10 @@ sitemap: false {% capture notice-2 %} **All** -+ [CTRTransfer](ctrtransfer) + [A9LH to B9S](a9lh-to-b9s) + [Cart Update](cart-update) + [Credits](credits) ++ [CTRTransfer](ctrtransfer) + [Donations](donations) + [F3 (Linux)](f3-(linux)) + [F3X (Mac)](f3x-(mac)) diff --git a/_pages/en_US/troubleshooting.txt b/_pages/en_US/troubleshooting.txt index 7d95fff481..4026a6d013 100644 --- a/_pages/en_US/troubleshooting.txt +++ b/_pages/en_US/troubleshooting.txt @@ -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 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). -##
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 + - [`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 * - [`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) * - [`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,7 +41,7 @@ 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 -## Removing an NNID without formatting your device +## Removing an NNID without formatting your device 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} @@ -54,7 +55,7 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma 1. Navigate back to the Main Menu 1. Press (Start) to reboot your device -## Cannot inject H&S on Gateway downgraded device +## Cannot inject H&S on Gateway downgraded device This is caused by Gateway implementing a very shoddy downgrade method which leaves two versions of each app on the system. One of them is unused, but it confuses the H&S inject system, causing it to inject into the wrong one. 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. @@ -84,14 +85,14 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma 1. Return to [Finalizing Setup](finalizing-setup) and retry the FBI injection 1. If this still doesn't work, move the uppercase extension files back to the `content` folder, then move the lowercase extension files to the `newdir` folder, then return to [Finalizing Setup](finalizing-setup) and retry the FBI injection -## A browser based exploit is not working +## 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 -## 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 @@ -114,7 +115,7 @@ Browser based exploits (such as browserhax or 2xrsa) are often unstable and cras 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) -## Black screen on SysNAND boot after Installing boot9strap +## Black screen on SysNAND boot after Installing boot9strap 1. Ensure you have a working payload 1. Check for the existence of `boot.firm` in the root of your SD card. @@ -143,7 +144,7 @@ Browser based exploits (such as browserhax or 2xrsa) are often unstable and cras 1. Try following [CTRTransfer](ctrtransfer) 1. Ask for help at [Nintendo Homebrew on Discord](https://discord.gg/MWxPgEp). -## 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 diff --git a/_pages/en_US/uninstall-cfw.txt b/_pages/en_US/uninstall-cfw.txt index 76dba5ed55..3679de16b7 100644 --- a/_pages/en_US/uninstall-cfw.txt +++ b/_pages/en_US/uninstall-cfw.txt @@ -2,6 +2,8 @@ title: "Uninstall CFW" --- +{% include toc title="Table of Contents" %} + This will completely remove CFW from your device, including Boot9Strap and Luma3DS, for the purpose of restoring the device to stock. Any unsigned (illegitimate) games will be rendered unusable and can be manually removed using the Data Management section of the System Settings. Use a [save manager](https://github.com/J-D-K/JKSM/releases/latest) to backup any saves for these unsigned (illegitimate) games you care about. @@ -10,16 +12,16 @@ This will not affect your NNID, any legitimately purchased games, or any saves f 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. -#### What you need +### What you need * The latest release of [GodMode9](https://github.com/d0k3/GodMode9/releases/latest) * The uninstaller script corresponding to your device: - + [`uninstall_hax_retail_NEW.gm9`]({{ base_path }}/gm9_scripts/uninstall_hax_retail_NEW.gm9) - + [`uninstall_hax_retail_OLD.gm9`]({{ base_path }}/gm9_scripts/uninstall_hax_retail_OLD.gm9) + + [`uninstall_hax_retail_NEW.gm9`]({{ "/gm9_scripts/uninstall_hax_retail_NEW.gm9" | absolute_url }}) + + [`uninstall_hax_retail_OLD.gm9`]({{ "/gm9_scripts/uninstall_hax_retail_OLD.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 @@ -29,7 +31,7 @@ Note that if you have any payload files other than `GodMode9.firm` in the `/luma 1. Reinsert your SD card into your device 1. Power on your device -##### Section II - Running Uninstall Script +#### Section II - Running Uninstall Script 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 diff --git a/_pages/en_US/updating-b9s.txt b/_pages/en_US/updating-b9s.txt index d60cbc5bd2..45499b11ac 100644 --- a/_pages/en_US/updating-b9s.txt +++ b/_pages/en_US/updating-b9s.txt @@ -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,16 +22,16 @@ There have been reports of a wave of bans being handed out to CFW users by Ninte
{{ notice-1 | markdownify }}
-#### 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)* * The latest release of [Luma3DS](https://github.com/AuroraWright/Luma3DS/releases/latest) *(the `.7z` file)* -* [`cleanup_sd_card.gm9`]({{ base_path }}/gm9_scripts/cleanup_sd_card.gm9) +* [`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} @@ -41,7 +43,7 @@ For all steps in this section, overwrite any existing files 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. 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) @@ -50,14 +52,14 @@ For all steps in this section, overwrite any existing files on your SD card. 1. Once it has completed, hold (Start) while pressing (A) to reboot your device to the Luma3DS chainloader + If you encounter an error booting your device after the B9S update, just continue to fix it -##### Section III - Update Luma3DS +#### Section III - Update Luma3DS 1. Power off your device 1. Insert your SD card into your computer 1. Copy `boot.firm` from the Luma3DS `.7z` to the root of your SD card, replacing the existing file 1. Reinsert your SD card into your device -##### Section IV - Cleanup SD Card +#### Section IV - Cleanup SD Card Note that this script will remove the `/boot9strap/` and `/cias/` folders from your SD card! {: .notice--danger} diff --git a/_sass/_buttons.scss b/_sass/_buttons.scss deleted file mode 100644 index d6cf90eaa2..0000000000 --- a/_sass/_buttons.scss +++ /dev/null @@ -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; - } -} \ No newline at end of file diff --git a/_sass/_navigation.scss b/_sass/_navigation.scss deleted file mode 100644 index 30bb48ae43..0000000000 --- a/_sass/_navigation.scss +++ /dev/null @@ -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; - } - } -} diff --git a/_sass/_nord.scss b/_sass/_nord.scss deleted file mode 100644 index 7a8aad881c..0000000000 --- a/_sass/_nord.scss +++ /dev/null @@ -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 -//// - -/// 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; \ No newline at end of file diff --git a/_sass/_print.scss b/_sass/_print.scss deleted file mode 100644 index 09bdb1d8eb..0000000000 --- a/_sass/_print.scss +++ /dev/null @@ -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; - } -} diff --git a/_sass/_variables.scss b/_sass/_variables.scss deleted file mode 100644 index 1d80dbb67b..0000000000 --- a/_sass/_variables.scss +++ /dev/null @@ -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; diff --git a/_sass/minimal-mistakes.scss b/_sass/minimal-mistakes.scss new file mode 100644 index 0000000000..873b423257 --- /dev/null +++ b/_sass/minimal-mistakes.scss @@ -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"; \ No newline at end of file diff --git a/_sass/_animations.scss b/_sass/minimal-mistakes/_animations.scss similarity index 100% rename from _sass/_animations.scss rename to _sass/minimal-mistakes/_animations.scss diff --git a/_sass/_archive.scss b/_sass/minimal-mistakes/_archive.scss similarity index 59% rename from _sass/_archive.scss rename to _sass/minimal-mistakes/_archive.scss index 0509f814c3..70cb116e9d 100644 --- a/_sass/_archive.scss +++ b/_sass/minimal-mistakes/_archive.scss @@ -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,29 +172,23 @@ .archive__item-excerpt { display: none; - } - @include breakpoint($small) { - @include gallery(5 of 10); - .archive__item-teaser { - 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 { + @include breakpoint($medium) { display: block; font-size: $type-size-6; } } + + .archive__item-teaser { + + @include breakpoint($small) { + max-height: 200px; + } + + @include breakpoint($medium) { + max-height: 120px; + } + } } @@ -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 { @@ -235,4 +315,4 @@ } } } -} +} \ No newline at end of file diff --git a/_sass/_base.scss b/_sass/minimal-mistakes/_base.scss similarity index 95% rename from _sass/_base.scss rename to _sass/minimal-mistakes/_base.scss index c5311a29b8..d9f7df3067 100644 --- a/_sass/_base.scss +++ b/_sass/minimal-mistakes/_base.scss @@ -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; } } } diff --git a/_sass/minimal-mistakes/_buttons.scss b/_sass/minimal-mistakes/_buttons.scss new file mode 100644 index 0000000000..6027eac73d --- /dev/null +++ b/_sass/minimal-mistakes/_buttons.scss @@ -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; + } +} \ No newline at end of file diff --git a/_sass/_footer.scss b/_sass/minimal-mistakes/_footer.scss similarity index 78% rename from _sass/_footer.scss rename to _sass/minimal-mistakes/_footer.scss index 2525a710ac..3b3ddd313b 100644 --- a/_sass/_footer.scss +++ b/_sass/minimal-mistakes/_footer.scss @@ -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; } } diff --git a/_sass/_forms.scss b/_sass/minimal-mistakes/_forms.scss similarity index 95% rename from _sass/_forms.scss rename to _sass/minimal-mistakes/_forms.scss index a1f0f14648..dc52131921 100644 --- a/_sass/_forms.scss +++ b/_sass/minimal-mistakes/_forms.scss @@ -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; } diff --git a/_sass/_masthead.scss b/_sass/minimal-mistakes/_masthead.scss similarity index 55% rename from _sass/_masthead.scss rename to _sass/minimal-mistakes/_masthead.scss index 48077d9893..ee5abb02a9 100644 --- a/_sass/_masthead.scss +++ b/_sass/minimal-mistakes/_masthead.scss @@ -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; @@ -51,4 +80,4 @@ padding-right: 2em; font-weight: 700; } -} +} \ No newline at end of file diff --git a/_sass/_mixins.scss b/_sass/minimal-mistakes/_mixins.scss similarity index 50% rename from _sass/_mixins.scss rename to _sass/minimal-mistakes/_mixins.scss index 14782b1942..1d221fc809 100644 --- a/_sass/_mixins.scss +++ b/_sass/minimal-mistakes/_mixins.scss @@ -50,4 +50,43 @@ content: ""; 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); } \ No newline at end of file diff --git a/_sass/minimal-mistakes/_navigation.scss b/_sass/minimal-mistakes/_navigation.scss new file mode 100644 index 0000000000..0736b35907 --- /dev/null +++ b/_sass/minimal-mistakes/_navigation.scss @@ -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; + } + } + } diff --git a/_sass/_notices.scss b/_sass/minimal-mistakes/_notices.scss similarity index 92% rename from _sass/_notices.scss rename to _sass/minimal-mistakes/_notices.scss index 3294235610..10cd1b2183 100644 --- a/_sass/_notices.scss +++ b/_sass/minimal-mistakes/_notices.scss @@ -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 */ diff --git a/_sass/_page.scss b/_sass/minimal-mistakes/_page.scss similarity index 80% rename from _sass/_page.scss rename to _sass/minimal-mistakes/_page.scss index 5af49c8425..a3f1476d0b 100644 --- a/_sass/_page.scss +++ b/_sass/minimal-mistakes/_page.scss @@ -3,13 +3,17 @@ ========================================================================== */ #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; - animation-delay: 0.35s; + -webkit-animation: $intro-transition; + animation: $intro-transition; + max-width: 100%; + -webkit-animation-delay: 0.35s; + animation-delay: 0.35s; @include breakpoint($x-large) { max-width: $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,8 +129,10 @@ position: relative; margin-bottom: 2em; @include clearfix; - animation: intro 0.3s both; - animation-delay: 0.25s; + -webkit-animation: $intro-transition; + animation: $intro-transition; + -webkit-animation-delay: 0.25s; + animation-delay: 0.25s; &--overlay { position: relative; @@ -126,8 +142,10 @@ background-size: cover; background-repeat: no-repeat; background-position: center; - animation: intro 0.3s both; - animation-delay: 0.25s; + -webkit-animation: $intro-transition; + animation: $intro-transition; + -webkit-animation-delay: 0.25s; + animation-delay: 0.25s; a { color: #fff; @@ -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 { @@ -402,4 +428,4 @@ margin-bottom: 10px; font-size: $type-size-6; text-transform: uppercase; -} +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/_print.scss b/_sass/minimal-mistakes/_print.scss new file mode 100644 index 0000000000..b93f1d404e --- /dev/null +++ b/_sass/minimal-mistakes/_print.scss @@ -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; + } +} \ No newline at end of file diff --git a/_sass/_reset.scss b/_sass/minimal-mistakes/_reset.scss similarity index 99% rename from _sass/_reset.scss rename to _sass/minimal-mistakes/_reset.scss index d9ae78752b..4aedb96a6c 100644 --- a/_sass/_reset.scss +++ b/_sass/minimal-mistakes/_reset.scss @@ -2,7 +2,7 @@ STYLE RESETS ========================================================================== */ -@include border-box-sizing; +* { box-sizing: border-box; } html { /* apply a natural box layout model to all elements */ @@ -184,4 +184,4 @@ input[type="search"]::-webkit-search-cancel-button { textarea { overflow: auto; /* remove vertical scrollbar in IE6-9*/ vertical-align: top; /* readability and alignment cross-browser*/ -} +} \ No newline at end of file diff --git a/_sass/_sidebar.scss b/_sass/minimal-mistakes/_sidebar.scss similarity index 78% rename from _sass/_sidebar.scss rename to _sass/minimal-mistakes/_sidebar.scss index de892e1b4a..ecb285c204 100644 --- a/_sass/_sidebar.scss +++ b/_sass/minimal-mistakes/_sidebar.scss @@ -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; - &:hover { - opacity: 1; + a { + &:hover { + 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) { @@ -228,4 +262,4 @@ text-decoration: underline; } } -} +} \ No newline at end of file diff --git a/_sass/_syntax.scss b/_sass/minimal-mistakes/_syntax.scss similarity index 97% rename from _sass/_syntax.scss rename to _sass/minimal-mistakes/_syntax.scss index 94088be336..e7a7554026 100644 --- a/_sass/_syntax.scss +++ b/_sass/minimal-mistakes/_syntax.scss @@ -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); } } diff --git a/_sass/_tables.scss b/_sass/minimal-mistakes/_tables.scss similarity index 91% rename from _sass/_tables.scss rename to _sass/minimal-mistakes/_tables.scss index 993be59315..37808a7f31 100644 --- a/_sass/_tables.scss +++ b/_sass/minimal-mistakes/_tables.scss @@ -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; } diff --git a/_sass/_utilities.scss b/_sass/minimal-mistakes/_utilities.scss similarity index 87% rename from _sass/_utilities.scss rename to _sass/minimal-mistakes/_utilities.scss index 687ceaf6c4..8502d2631a 100644 --- a/_sass/_utilities.scss +++ b/_sass/minimal-mistakes/_utilities.scss @@ -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; } @@ -286,14 +293,15 @@ body:hover .visually-hidden button { /* - Navicons - ========================================================================== */ + Navicons + ========================================================================== */ .navicon { 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 { @@ -337,17 +345,18 @@ body:hover .visually-hidden button { transform: rotate3d(0,0,1,-45deg); } } - + /* - Langicons - ========================================================================== */ - + Langicons + ========================================================================== */ + .langicon { position: relative; width: $navicon-width; + display: inline-block; background: transparent; margin: auto; - color: $primary-color; + color: $text-color; &:before, &:after { @@ -356,30 +365,19 @@ 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); } } - + .close .langicon { /* hide the middle line*/ background: transparent; @@ -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 ========================================================================== */ diff --git a/_sass/minimal-mistakes/_variables.scss b/_sass/minimal-mistakes/_variables.scss new file mode 100644 index 0000000000..cf7b5d700b --- /dev/null +++ b/_sass/minimal-mistakes/_variables.scss @@ -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; diff --git a/_sass/minimal-mistakes/skins/_air.scss b/_sass/minimal-mistakes/skins/_air.scss new file mode 100644 index 0000000000..bdbca84f9f --- /dev/null +++ b/_sass/minimal-mistakes/skins/_air.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_contrast.scss b/_sass/minimal-mistakes/skins/_contrast.scss new file mode 100644 index 0000000000..431c7131a6 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_contrast.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_dark.scss b/_sass/minimal-mistakes/skins/_dark.scss new file mode 100644 index 0000000000..8ccfc25bf8 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_dark.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_default.scss b/_sass/minimal-mistakes/skins/_default.scss new file mode 100644 index 0000000000..7489b58473 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_default.scss @@ -0,0 +1,5 @@ +/* ========================================================================== + Default skin + ========================================================================== */ + +// Intentionally left blank diff --git a/_sass/minimal-mistakes/skins/_dirt.scss b/_sass/minimal-mistakes/skins/_dirt.scss new file mode 100644 index 0000000000..e7993737d2 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_dirt.scss @@ -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; \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_mint.scss b/_sass/minimal-mistakes/skins/_mint.scss new file mode 100644 index 0000000000..d0e86c8f70 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_mint.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_nord.scss b/_sass/minimal-mistakes/skins/_nord.scss new file mode 100644 index 0000000000..f540171ace --- /dev/null +++ b/_sass/minimal-mistakes/skins/_nord.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/minimal-mistakes/skins/_sunrise.scss b/_sass/minimal-mistakes/skins/_sunrise.scss new file mode 100644 index 0000000000..9c3c4d08e1 --- /dev/null +++ b/_sass/minimal-mistakes/skins/_sunrise.scss @@ -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; +} \ No newline at end of file diff --git a/_sass/vendor/breakpoint/_breakpoint.scss b/_sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss similarity index 100% rename from _sass/vendor/breakpoint/_breakpoint.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_breakpoint.scss diff --git a/_sass/vendor/breakpoint/_context.scss b/_sass/minimal-mistakes/vendor/breakpoint/_context.scss similarity index 100% rename from _sass/vendor/breakpoint/_context.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_context.scss diff --git a/_sass/vendor/breakpoint/_helpers.scss b/_sass/minimal-mistakes/vendor/breakpoint/_helpers.scss similarity index 100% rename from _sass/vendor/breakpoint/_helpers.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_helpers.scss diff --git a/_sass/vendor/breakpoint/_legacy-settings.scss b/_sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss similarity index 100% rename from _sass/vendor/breakpoint/_legacy-settings.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_legacy-settings.scss diff --git a/_sass/vendor/breakpoint/_no-query.scss b/_sass/minimal-mistakes/vendor/breakpoint/_no-query.scss similarity index 100% rename from _sass/vendor/breakpoint/_no-query.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_no-query.scss diff --git a/_sass/vendor/breakpoint/_parsers.scss b/_sass/minimal-mistakes/vendor/breakpoint/_parsers.scss similarity index 100% rename from _sass/vendor/breakpoint/_parsers.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_parsers.scss diff --git a/_sass/vendor/breakpoint/_respond-to.scss b/_sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss similarity index 100% rename from _sass/vendor/breakpoint/_respond-to.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_respond-to.scss diff --git a/_sass/vendor/breakpoint/_settings.scss b/_sass/minimal-mistakes/vendor/breakpoint/_settings.scss similarity index 100% rename from _sass/vendor/breakpoint/_settings.scss rename to _sass/minimal-mistakes/vendor/breakpoint/_settings.scss diff --git a/_sass/vendor/breakpoint/parsers/_double.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/_double.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/_double.scss diff --git a/_sass/vendor/breakpoint/parsers/_query.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/_query.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/_query.scss diff --git a/_sass/vendor/breakpoint/parsers/_resolution.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/_resolution.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/_resolution.scss diff --git a/_sass/vendor/breakpoint/parsers/_single.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/_single.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/_single.scss diff --git a/_sass/vendor/breakpoint/parsers/_triple.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/_triple.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/_triple.scss diff --git a/_sass/vendor/breakpoint/parsers/double/_default-pair.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/double/_default-pair.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default-pair.scss diff --git a/_sass/vendor/breakpoint/parsers/double/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/double/_default.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/double/_default.scss diff --git a/_sass/vendor/breakpoint/parsers/double/_double-string.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/double/_double-string.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/double/_double-string.scss diff --git a/_sass/vendor/breakpoint/parsers/resolution/_resolution.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/resolution/_resolution.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/resolution/_resolution.scss diff --git a/_sass/vendor/breakpoint/parsers/single/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/single/_default.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/single/_default.scss diff --git a/_sass/vendor/breakpoint/parsers/triple/_default.scss b/_sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss similarity index 100% rename from _sass/vendor/breakpoint/parsers/triple/_default.scss rename to _sass/minimal-mistakes/vendor/breakpoint/parsers/triple/_default.scss diff --git a/_sass/vendor/font-awesome/_animated.scss b/_sass/minimal-mistakes/vendor/font-awesome/_animated.scss similarity index 100% rename from _sass/vendor/font-awesome/_animated.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_animated.scss diff --git a/_sass/vendor/font-awesome/_bordered-pulled.scss b/_sass/minimal-mistakes/vendor/font-awesome/_bordered-pulled.scss similarity index 100% rename from _sass/vendor/font-awesome/_bordered-pulled.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_bordered-pulled.scss diff --git a/_sass/vendor/font-awesome/_core.scss b/_sass/minimal-mistakes/vendor/font-awesome/_core.scss similarity index 100% rename from _sass/vendor/font-awesome/_core.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_core.scss diff --git a/_sass/vendor/font-awesome/_fixed-width.scss b/_sass/minimal-mistakes/vendor/font-awesome/_fixed-width.scss similarity index 100% rename from _sass/vendor/font-awesome/_fixed-width.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_fixed-width.scss diff --git a/_sass/vendor/font-awesome/_font-awesome.scss b/_sass/minimal-mistakes/vendor/font-awesome/_font-awesome.scss similarity index 85% rename from _sass/vendor/font-awesome/_font-awesome.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_font-awesome.scss index 2308b14ca7..f1c83aaa5d 100644 --- a/_sass/vendor/font-awesome/_font-awesome.scss +++ b/_sass/minimal-mistakes/vendor/font-awesome/_font-awesome.scss @@ -1,5 +1,5 @@ /*! - * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ diff --git a/_sass/vendor/font-awesome/_icons.scss b/_sass/minimal-mistakes/vendor/font-awesome/_icons.scss similarity index 93% rename from _sass/vendor/font-awesome/_icons.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_icons.scss index 2944344350..e63e702c4d 100644 --- a/_sass/vendor/font-awesome/_icons.scss +++ b/_sass/minimal-mistakes/vendor/font-awesome/_icons.scss @@ -605,6 +605,7 @@ .#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } .#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } .#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery:before, .#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } .#{$fa-css-prefix}-battery-3:before, .#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } @@ -731,3 +732,58 @@ .#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } .#{$fa-css-prefix}-fa:before, .#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } +.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } +.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } +.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } +.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } +.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } +.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } +.#{$fa-css-prefix}-vcard:before, +.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } +.#{$fa-css-prefix}-vcard-o:before, +.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } +.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } +.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } +.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } +.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } +.#{$fa-css-prefix}-drivers-license:before, +.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } +.#{$fa-css-prefix}-drivers-license-o:before, +.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } +.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } +.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } +.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } +.#{$fa-css-prefix}-thermometer-4:before, +.#{$fa-css-prefix}-thermometer:before, +.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } +.#{$fa-css-prefix}-thermometer-3:before, +.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } +.#{$fa-css-prefix}-thermometer-2:before, +.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } +.#{$fa-css-prefix}-thermometer-1:before, +.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } +.#{$fa-css-prefix}-thermometer-0:before, +.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } +.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } +.#{$fa-css-prefix}-bathtub:before, +.#{$fa-css-prefix}-s15:before, +.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } +.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } +.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } +.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } +.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } +.#{$fa-css-prefix}-times-rectangle:before, +.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } +.#{$fa-css-prefix}-times-rectangle-o:before, +.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } +.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } +.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } +.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } +.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } +.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } +.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } +.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } +.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } +.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } +.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } +.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/_sass/vendor/font-awesome/_larger.scss b/_sass/minimal-mistakes/vendor/font-awesome/_larger.scss similarity index 100% rename from _sass/vendor/font-awesome/_larger.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_larger.scss diff --git a/_sass/vendor/font-awesome/_list.scss b/_sass/minimal-mistakes/vendor/font-awesome/_list.scss similarity index 100% rename from _sass/vendor/font-awesome/_list.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_list.scss diff --git a/_sass/vendor/font-awesome/_mixins.scss b/_sass/minimal-mistakes/vendor/font-awesome/_mixins.scss similarity index 100% rename from _sass/vendor/font-awesome/_mixins.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_mixins.scss diff --git a/_sass/vendor/font-awesome/_path.scss b/_sass/minimal-mistakes/vendor/font-awesome/_path.scss similarity index 100% rename from _sass/vendor/font-awesome/_path.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_path.scss diff --git a/_sass/vendor/font-awesome/_rotated-flipped.scss b/_sass/minimal-mistakes/vendor/font-awesome/_rotated-flipped.scss similarity index 100% rename from _sass/vendor/font-awesome/_rotated-flipped.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_rotated-flipped.scss diff --git a/_sass/vendor/font-awesome/_screen-reader.scss b/_sass/minimal-mistakes/vendor/font-awesome/_screen-reader.scss similarity index 100% rename from _sass/vendor/font-awesome/_screen-reader.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_screen-reader.scss diff --git a/_sass/vendor/font-awesome/_stacked.scss b/_sass/minimal-mistakes/vendor/font-awesome/_stacked.scss similarity index 100% rename from _sass/vendor/font-awesome/_stacked.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_stacked.scss diff --git a/_sass/vendor/font-awesome/_variables.scss b/_sass/minimal-mistakes/vendor/font-awesome/_variables.scss similarity index 92% rename from _sass/vendor/font-awesome/_variables.scss rename to _sass/minimal-mistakes/vendor/font-awesome/_variables.scss index a5a89ef97b..498fc4a087 100644 --- a/_sass/vendor/font-awesome/_variables.scss +++ b/_sass/minimal-mistakes/vendor/font-awesome/_variables.scss @@ -4,14 +4,18 @@ $fa-font-path: "../fonts" !default; $fa-font-size-base: 14px !default; $fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly $fa-css-prefix: fa !default; -$fa-version: "4.6.3" !default; +$fa-version: "4.7.0" !default; $fa-border-color: #eee !default; $fa-inverse: #fff !default; $fa-li-width: (30em / 14) !default; $fa-var-500px: "\f26e"; +$fa-var-address-book: "\f2b9"; +$fa-var-address-book-o: "\f2ba"; +$fa-var-address-card: "\f2bb"; +$fa-var-address-card-o: "\f2bc"; $fa-var-adjust: "\f042"; $fa-var-adn: "\f170"; $fa-var-align-center: "\f037"; @@ -60,11 +64,15 @@ $fa-var-automobile: "\f1b9"; $fa-var-backward: "\f04a"; $fa-var-balance-scale: "\f24e"; $fa-var-ban: "\f05e"; +$fa-var-bandcamp: "\f2d5"; $fa-var-bank: "\f19c"; $fa-var-bar-chart: "\f080"; $fa-var-bar-chart-o: "\f080"; $fa-var-barcode: "\f02a"; $fa-var-bars: "\f0c9"; +$fa-var-bath: "\f2cd"; +$fa-var-bathtub: "\f2cd"; +$fa-var-battery: "\f240"; $fa-var-battery-0: "\f244"; $fa-var-battery-1: "\f243"; $fa-var-battery-2: "\f242"; @@ -214,19 +222,25 @@ $fa-var-dollar: "\f155"; $fa-var-dot-circle-o: "\f192"; $fa-var-download: "\f019"; $fa-var-dribbble: "\f17d"; +$fa-var-drivers-license: "\f2c2"; +$fa-var-drivers-license-o: "\f2c3"; $fa-var-dropbox: "\f16b"; $fa-var-drupal: "\f1a9"; $fa-var-edge: "\f282"; $fa-var-edit: "\f044"; +$fa-var-eercast: "\f2da"; $fa-var-eject: "\f052"; $fa-var-ellipsis-h: "\f141"; $fa-var-ellipsis-v: "\f142"; $fa-var-empire: "\f1d1"; $fa-var-envelope: "\f0e0"; $fa-var-envelope-o: "\f003"; +$fa-var-envelope-open: "\f2b6"; +$fa-var-envelope-open-o: "\f2b7"; $fa-var-envelope-square: "\f199"; $fa-var-envira: "\f299"; $fa-var-eraser: "\f12d"; +$fa-var-etsy: "\f2d7"; $fa-var-eur: "\f153"; $fa-var-euro: "\f153"; $fa-var-exchange: "\f0ec"; @@ -294,6 +308,7 @@ $fa-var-fort-awesome: "\f286"; $fa-var-forumbee: "\f211"; $fa-var-forward: "\f04e"; $fa-var-foursquare: "\f180"; +$fa-var-free-code-camp: "\f2c5"; $fa-var-frown-o: "\f119"; $fa-var-futbol-o: "\f1e3"; $fa-var-gamepad: "\f11b"; @@ -326,6 +341,7 @@ $fa-var-google-plus-square: "\f0d4"; $fa-var-google-wallet: "\f1ee"; $fa-var-graduation-cap: "\f19d"; $fa-var-gratipay: "\f184"; +$fa-var-grav: "\f2d6"; $fa-var-group: "\f0c0"; $fa-var-h-square: "\f0fd"; $fa-var-hacker-news: "\f1d4"; @@ -342,6 +358,7 @@ $fa-var-hand-rock-o: "\f255"; $fa-var-hand-scissors-o: "\f257"; $fa-var-hand-spock-o: "\f259"; $fa-var-hand-stop-o: "\f256"; +$fa-var-handshake-o: "\f2b5"; $fa-var-hard-of-hearing: "\f2a4"; $fa-var-hashtag: "\f292"; $fa-var-hdd-o: "\f0a0"; @@ -365,8 +382,12 @@ $fa-var-hourglass-start: "\f251"; $fa-var-houzz: "\f27c"; $fa-var-html5: "\f13b"; $fa-var-i-cursor: "\f246"; +$fa-var-id-badge: "\f2c1"; +$fa-var-id-card: "\f2c2"; +$fa-var-id-card-o: "\f2c3"; $fa-var-ils: "\f20b"; $fa-var-image: "\f03e"; +$fa-var-imdb: "\f2d8"; $fa-var-inbox: "\f01c"; $fa-var-indent: "\f03c"; $fa-var-industry: "\f275"; @@ -404,6 +425,7 @@ $fa-var-line-chart: "\f201"; $fa-var-link: "\f0c1"; $fa-var-linkedin: "\f0e1"; $fa-var-linkedin-square: "\f08c"; +$fa-var-linode: "\f2b8"; $fa-var-linux: "\f17c"; $fa-var-list: "\f03a"; $fa-var-list-alt: "\f022"; @@ -436,8 +458,10 @@ $fa-var-maxcdn: "\f136"; $fa-var-meanpath: "\f20c"; $fa-var-medium: "\f23a"; $fa-var-medkit: "\f0fa"; +$fa-var-meetup: "\f2e0"; $fa-var-meh-o: "\f11a"; $fa-var-mercury: "\f223"; +$fa-var-microchip: "\f2db"; $fa-var-microphone: "\f130"; $fa-var-microphone-slash: "\f131"; $fa-var-minus: "\f068"; @@ -502,6 +526,7 @@ $fa-var-plus: "\f067"; $fa-var-plus-circle: "\f055"; $fa-var-plus-square: "\f0fe"; $fa-var-plus-square-o: "\f196"; +$fa-var-podcast: "\f2ce"; $fa-var-power-off: "\f011"; $fa-var-print: "\f02f"; $fa-var-product-hunt: "\f288"; @@ -511,10 +536,12 @@ $fa-var-qrcode: "\f029"; $fa-var-question: "\f128"; $fa-var-question-circle: "\f059"; $fa-var-question-circle-o: "\f29c"; +$fa-var-quora: "\f2c4"; $fa-var-quote-left: "\f10d"; $fa-var-quote-right: "\f10e"; $fa-var-ra: "\f1d0"; $fa-var-random: "\f074"; +$fa-var-ravelry: "\f2d9"; $fa-var-rebel: "\f1d0"; $fa-var-recycle: "\f1b8"; $fa-var-reddit: "\f1a1"; @@ -541,6 +568,7 @@ $fa-var-rss-square: "\f143"; $fa-var-rub: "\f158"; $fa-var-ruble: "\f158"; $fa-var-rupee: "\f156"; +$fa-var-s15: "\f2cd"; $fa-var-safari: "\f267"; $fa-var-save: "\f0c7"; $fa-var-scissors: "\f0c4"; @@ -565,6 +593,7 @@ $fa-var-shirtsinbulk: "\f214"; $fa-var-shopping-bag: "\f290"; $fa-var-shopping-basket: "\f291"; $fa-var-shopping-cart: "\f07a"; +$fa-var-shower: "\f2cc"; $fa-var-sign-in: "\f090"; $fa-var-sign-language: "\f2a7"; $fa-var-sign-out: "\f08b"; @@ -581,6 +610,7 @@ $fa-var-smile-o: "\f118"; $fa-var-snapchat: "\f2ab"; $fa-var-snapchat-ghost: "\f2ac"; $fa-var-snapchat-square: "\f2ad"; +$fa-var-snowflake-o: "\f2dc"; $fa-var-soccer-ball-o: "\f1e3"; $fa-var-sort: "\f0dc"; $fa-var-sort-alpha-asc: "\f15d"; @@ -626,6 +656,7 @@ $fa-var-subscript: "\f12c"; $fa-var-subway: "\f239"; $fa-var-suitcase: "\f0f2"; $fa-var-sun-o: "\f185"; +$fa-var-superpowers: "\f2dd"; $fa-var-superscript: "\f12b"; $fa-var-support: "\f1cd"; $fa-var-table: "\f0ce"; @@ -635,6 +666,7 @@ $fa-var-tag: "\f02b"; $fa-var-tags: "\f02c"; $fa-var-tasks: "\f0ae"; $fa-var-taxi: "\f1ba"; +$fa-var-telegram: "\f2c6"; $fa-var-television: "\f26c"; $fa-var-tencent-weibo: "\f1d5"; $fa-var-terminal: "\f120"; @@ -644,6 +676,17 @@ $fa-var-th: "\f00a"; $fa-var-th-large: "\f009"; $fa-var-th-list: "\f00b"; $fa-var-themeisle: "\f2b2"; +$fa-var-thermometer: "\f2c7"; +$fa-var-thermometer-0: "\f2cb"; +$fa-var-thermometer-1: "\f2ca"; +$fa-var-thermometer-2: "\f2c9"; +$fa-var-thermometer-3: "\f2c8"; +$fa-var-thermometer-4: "\f2c7"; +$fa-var-thermometer-empty: "\f2cb"; +$fa-var-thermometer-full: "\f2c7"; +$fa-var-thermometer-half: "\f2c9"; +$fa-var-thermometer-quarter: "\f2ca"; +$fa-var-thermometer-three-quarters: "\f2c8"; $fa-var-thumb-tack: "\f08d"; $fa-var-thumbs-down: "\f165"; $fa-var-thumbs-o-down: "\f088"; @@ -653,6 +696,8 @@ $fa-var-ticket: "\f145"; $fa-var-times: "\f00d"; $fa-var-times-circle: "\f057"; $fa-var-times-circle-o: "\f05c"; +$fa-var-times-rectangle: "\f2d3"; +$fa-var-times-rectangle-o: "\f2d4"; $fa-var-tint: "\f043"; $fa-var-toggle-down: "\f150"; $fa-var-toggle-left: "\f191"; @@ -693,11 +738,16 @@ $fa-var-upload: "\f093"; $fa-var-usb: "\f287"; $fa-var-usd: "\f155"; $fa-var-user: "\f007"; +$fa-var-user-circle: "\f2bd"; +$fa-var-user-circle-o: "\f2be"; $fa-var-user-md: "\f0f0"; +$fa-var-user-o: "\f2c0"; $fa-var-user-plus: "\f234"; $fa-var-user-secret: "\f21b"; $fa-var-user-times: "\f235"; $fa-var-users: "\f0c0"; +$fa-var-vcard: "\f2bb"; +$fa-var-vcard-o: "\f2bc"; $fa-var-venus: "\f221"; $fa-var-venus-double: "\f226"; $fa-var-venus-mars: "\f228"; @@ -722,10 +772,16 @@ $fa-var-wheelchair: "\f193"; $fa-var-wheelchair-alt: "\f29b"; $fa-var-wifi: "\f1eb"; $fa-var-wikipedia-w: "\f266"; +$fa-var-window-close: "\f2d3"; +$fa-var-window-close-o: "\f2d4"; +$fa-var-window-maximize: "\f2d0"; +$fa-var-window-minimize: "\f2d1"; +$fa-var-window-restore: "\f2d2"; $fa-var-windows: "\f17a"; $fa-var-won: "\f159"; $fa-var-wordpress: "\f19a"; $fa-var-wpbeginner: "\f297"; +$fa-var-wpexplorer: "\f2de"; $fa-var-wpforms: "\f298"; $fa-var-wrench: "\f0ad"; $fa-var-xing: "\f168"; diff --git a/_sass/vendor/magnific-popup/_magnific-popup.scss b/_sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss similarity index 100% rename from _sass/vendor/magnific-popup/_magnific-popup.scss rename to _sass/minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss diff --git a/_sass/vendor/magnific-popup/_settings.scss b/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss similarity index 98% rename from _sass/vendor/magnific-popup/_settings.scss rename to _sass/minimal-mistakes/vendor/magnific-popup/_settings.scss index caaca02666..e7866b3f17 100644 --- a/_sass/vendor/magnific-popup/_settings.scss +++ b/_sass/minimal-mistakes/vendor/magnific-popup/_settings.scss @@ -43,4 +43,4 @@ $mfp-caption-subtitle-color: #bdbdbd; // Caption sub .mfp-counter { font-family: $serif; } // Caption font family // A11y -$mfp-use-visuallyhidden: false; +$mfp-use-visuallyhidden: false; \ No newline at end of file diff --git a/_sass/vendor/susy/_su.scss b/_sass/minimal-mistakes/vendor/susy/_su.scss similarity index 100% rename from _sass/vendor/susy/_su.scss rename to _sass/minimal-mistakes/vendor/susy/_su.scss diff --git a/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss b/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss new file mode 100644 index 0000000000..185b35613e --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/_susy-prefix.scss @@ -0,0 +1,13 @@ +// Susy (Prefixed) +// =============== + +$susy-version: 3; + +@import 'susy/utilities'; +@import 'susy/su-validate'; +@import 'susy/su-math'; +@import 'susy/settings'; +@import 'susy/normalize'; +@import 'susy/parse'; +@import 'susy/syntax-helpers'; +@import 'susy/api'; diff --git a/_sass/minimal-mistakes/vendor/susy/_susy.scss b/_sass/minimal-mistakes/vendor/susy/_susy.scss new file mode 100644 index 0000000000..bfda3d086a --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/_susy.scss @@ -0,0 +1,5 @@ +// Susy (Un-Prefixed) +// ================== + +@import 'susy-prefix'; +@import 'susy/unprefix'; diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss b/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss new file mode 100644 index 0000000000..99db8d1ed4 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/_svg-grid.scss @@ -0,0 +1,5 @@ +// SVG Grid Background +// =================== + +@import 'svg-grid/prefix'; +@import 'svg-grid/svg-unprefix'; diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss new file mode 100644 index 0000000000..21fb45fa58 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_prefix.scss @@ -0,0 +1,7 @@ +// Prefixed SVG Plugin +// =================== + +@import 'svg-settings'; +@import 'svg-utilities'; +@import 'svg-grid-math'; +@import 'svg-api'; diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss new file mode 100644 index 0000000000..7d880e3e28 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-api.scss @@ -0,0 +1,114 @@ +/// Plugin: SVG Grid Image +/// ====================== +/// @group plugin_svg-grid +/// @see susy-svg-grid + + + +/// ## Overview +/// If you want to generate svg-backgrounds +/// for help visualizing and debugging your grids, +/// import the SVG Grid Plugin. +/// +/// The plugin adds `svg-grid-colors` setting +/// to your global defaults, +/// which you can override in `$susy`. +/// It also provides you with a new function, +/// `susy-svg-grid()`, +/// which will return inline svg for use in +/// backgrounds or generated content. +/// +/// This function come with an unprefixed alias by default, +/// using the `svg-grid` import. +/// If you only only want prefixed versions of the API, +/// import the `svg-grid/prefix` partial instead. +/// +/// @group plugin_svg-grid +/// +/// @example scss - importing the plugin +/// // The full path to import Susy will depend on your setup… +/// +/// // unprefixed +/// @import 'plugins/svg-grid'; +/// +/// // prefixed +/// @import 'plugins/svg-grid/prefix'; +/// +/// @example scss - generating background grids +/// .grid { +/// background: susy-svg-grid() no-repeat scroll; +/// } + + + +// SVG Grid +// -------- +/// Return inline svg-data in to display the grid. +/// +/// @group plugin_svg-grid +/// +/// @param {Map | List} $grid [$susy] - +/// Map or shorthand defining the current grid +/// @param {Color | List | null} $colors [null] - +/// Column color, or list of colors for column-gradient, +/// used to override the global `svg-grid-colors` setting +/// @param {Length | null} $offset [null] - +/// Manually override the default grid-image offset, +/// to account for grid edges +/// +/// @return {String} - +/// CSS inline-data SVG string, in `url()` format, +/// for use in image or content properties +/// @example scss +/// .grid { +/// background: susy-svg-grid() no-repeat scroll; +/// } +@function susy-svg-grid( + $grid: $susy, + $colors: null, + $offset: null +) { + // Grid parsing & normalizing + $grid: susy-compile($grid, $context-only: true); + + // Color and gradient handling + $gradient: ''; + + @if (not $colors) { + $colors: susy-get('svg-grid-colors'); + } + + @if length($colors) > 1 { + $gradient: _susy-svg-gradient($colors); + $colors: 'url(%23susy-svg-gradient)'; + } @else { + $colors: _susy-svg-color($colors); + } + + // Get a default image-width + $span: ( + 'span': map-get($grid, 'columns'), + 'spread': map-get($grid, 'container-spread'), + ); + $span: map-merge($grid, $span); + $image-width: su-call('su-span', $span); + $image-width: if((type-of($image-width) == 'number'), $image-width, 100%); + + // SVG construction + $columns: map-get($grid, 'columns'); + $offset: $offset or _susy-svg-offset($grid); + + $attrs: 'fill="#{$colors}" width="#{$image-width}"'; + $svg: 'data:image/svg+xml,'; + $svg: $svg + '%3Csvg xmlns="http://www.w3.org/2000/svg" #{$attrs} %3E'; + $svg: $svg + $gradient; + + @for $column from 1 through length($columns) { + $width: susy-span(1 narrow at $column, $grid); + $x: _susy-svg-column-position($column, $grid); + + $svg: $svg + _susy-svg-rect($x, $width, $offset); + } + + @return url('#{$svg}%3C/svg%3E'); +} diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss new file mode 100644 index 0000000000..044801abe2 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-grid-math.scss @@ -0,0 +1,67 @@ +// SVG Grid Math +// ============= + + + +// SVG Column Position +// ------------------- +/// Determine the proper horizontal position +/// for a column rectangle +/// +/// @access private +/// +/// @param {Integer} $column - +/// 1-indexed column location on the grid +/// @param {Map} $grid - +/// Normalized settings map representing the current grid +/// +/// @return {Length} - +/// Horizontal position of svg column rectangle, +/// as distance from the grid edge +@function _susy-svg-column-position( + $column, + $grid +) { + $x: $column - 1; + + @if ($x > 0) { + $x: susy-span(first $x wide, $grid); + } + + @return $x; +} + + + +// SVG Offset +// ---------- +/// Determine if a grid image needs to be offset, +/// to account for edge gutters. +/// +/// @access private +/// +/// @param {Map} $grid - +/// Normalized settings map representing the current grid +/// +/// @return {Length | null} - +/// Expected distance from container edge to first column, +/// based on spread values and gutter-widths +@function _susy-svg-offset( + $grid +) { + $columns: su-valid-columns(map-get($grid, 'columns')); + $gutters: su-valid-gutters(map-get($grid, 'gutters')); + $container: su-valid-spread(map-get($grid, 'container-spread')) + 1; + + @if ($container == 0) { + @return null; + } + + $gutter: su-call('su-gutter', $grid); + + @if (type-of($gutter) == 'string') { + @return 'calc(#{$container} * #{$gutter} / 2)'; + } + + @return $container * $gutter / 2; +} diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss new file mode 100644 index 0000000000..3fcc91fbea --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-settings.scss @@ -0,0 +1,14 @@ +// SVG Settings +// ============ + + +// Susy SVG Defaults +// ================= +/// This plugin adds the `svg-grid-colors` property +/// and default value to `$_susy-defaults` — +/// you can override that value in `$susy` +/// or any other grid settings map. +/// @group plugin_svg-grid +$_susy-defaults: map-merge(( + 'svg-grid-colors': hsla(120, 50%, 50%, 0.5) hsla(120, 50%, 75%, 0.5), + ), $_susy-defaults); diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss new file mode 100644 index 0000000000..187157cfed --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-unprefix.scss @@ -0,0 +1,18 @@ +// Unprefix Susy SVG Grid +// ====================== + + + +// SVG Grid +// -------- +/// Un-prefixed alias for `susy-svg-grid` +/// +/// @group plugin_svg-grid +/// @alias susy-svg-grid +@function svg-grid( + $grid: $susy, + $colors: susy-get('svg-grid-colors'), + $offset: null +) { + @return susy-svg-grid($grid, $colors, $offset); +} diff --git a/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss new file mode 100644 index 0000000000..e4bf18ff5b --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/plugins/svg-grid/_svg-utilities.scss @@ -0,0 +1,133 @@ +// SVG Utilities +// ============= + + + +// SVG Validate Units +// ------------------ +/// Make sure a length is supported in svg +/// +/// @access private +/// +/// @param {Length} $length - +/// The length to validate +/// @param {String} $name [null] - +/// Optional name of length origin, +/// for error reporting +/// +/// @return {Length} - +/// An svg-validated length, or comparable valid length +@function _susy-svg-validate-units( + $length, + $name: null +) { + $_svg-units: ('em', 'ex', 'px', 'pt', 'pc', 'cm', 'mm', 'in', '%'); + $string: type-of($length) == 'string'; + + @if ($length == 0) or ($string) or index($_svg-units, unit($length)) { + @return $length; + } + + @return _susy-error( + '`#{unit($length)}` #{$name} units are not supported in SVG', + '_susy-svg-validate-units'); +} + + + +// SVG Rect +// -------- +/// Build a single svg rectangle +/// +/// @access private +/// +/// @param {Length} $x - +/// Horizontal position for the rectangle +/// @param {Length} $width - +/// Width of the rectangle +/// @param {Length} $offset [null] - +/// Offset the rectangle, to account for edge gutters +/// +/// @return {String} - +/// Escaped string representing one svg rectangle +@function _susy-svg-rect( + $x, + $width, + $offset: null +) { + $x: _susy-svg-validate-units($x); + $width: _susy-svg-validate-units($width); + $offset: if($offset == 0, null, $offset); + + @if (type-of($offset) == 'number') and (type-of($x) == 'number') { + @if comparable($x, $offset) { + $x: $x + $offset; + } @else { + $x: 'calc(#{$x} + #{$offset})'; + } + } @else if $offset and ($x != 0) { + $x: 'calc(#{$x} + #{$offset})'; + } @else if $offset { + $x: $offset; + } + + @return '%3Crect x="#{$x}" width="#{$width}" height="100%"/%3E'; +} + + + +// SVG Color +// --------- +/// Stringify colors, and escape hex symbol +/// +/// @access private +/// +/// @param {Color} $color - +/// Color to stringify and escape +/// +/// @return {String} - +/// Escaped string value of color +@function _susy-svg-color( + $color +) { + $color: inspect($color); // convert to string + + @if (str-index($color, '#') == 1) { + $color: '%23' + str-slice($color, 2); + } + + @return $color; +} + + + +// SVG Gradient +// ------------ +/// Create a multi-color svg gradient +/// +/// @access private +/// +/// @param {List} $colors - +/// List of colors to be equally spaced from `0%` to `100%` +/// in each column rectangle +/// +/// @return {String} - +/// Escaped string representing one svg gradient +/// (`id="susy-svg-gradient"`) +@function _susy-svg-gradient( + $colors +) { + $gradient: '%3Cdefs%3E%3ClinearGradient spreadMethod="pad"'; + $gradient: '#{$gradient} id="susy-svg-gradient"'; + $gradient: '#{$gradient} x1="0%" y1="0%" x2="100%" y2="0%"%3E'; + + @for $i from 1 through length($colors) { + $color: _susy-svg-color(nth($colors, $i)); + $offset: percentage(($i - 1) / (length($colors) - 1)); + $stop: '%3Cstop offset="#{$offset}" style="stop-color:#{$color};" /%3E'; + + $gradient: $gradient + $stop; + } + + @return $gradient + '%3C/linearGradient%3E%3C/defs%3E'; +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_api.scss b/_sass/minimal-mistakes/vendor/susy/susy/_api.scss new file mode 100644 index 0000000000..de8c9bdd8d --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_api.scss @@ -0,0 +1,318 @@ +/// Susy3 API Functions +/// =================== +/// These three functions form the core of Susy's +/// layout-building grid API. +/// +/// - Use `span()` and `gutter()` to return any grid-width, +/// and apply the results wherever you need them: +/// CSS `width`, `margin`, `padding`, `flex-basis`, `transform`, etc. +/// - For asymmetrical-fluid grids, +/// `slice()` can help manage your nesting context. +/// +/// All three functions come with an unprefixed alias by default, +/// using the `susy` import. +/// Import the `susy-prefix` partial instead, +/// if you only only want prefixed versions of the API. +/// +/// This is a thin syntax-sugar shell around +/// the "Su" core-math functions: `su-span`, `su-gutter`, and `su-slice`. +/// If you prefer the more constrained syntax of the math engine, +/// you are welcome to use those functions instead. +/// +/// @group b-api +/// @see susy-span +/// @see susy-gutter +/// @see susy-slice +/// @see su-span +/// @see su-gutter +/// @see su-slice + + + +/// ## Shorthand +/// +/// All functions draw on the same shorthand syntax in two parts, +/// seperated by the word `of`. +/// +/// ### Span Syntax: `` [`` ``] +/// The first part describes the +/// **span** width, location, and spread in any order. +/// Only the width is required: +/// +/// - `span(2)` will return the width of 2 columns. +/// - `span(3 wide)` will return 3-columns, with an additional gutter. +/// - location is only needed with asymmetrical grids, +/// where `span(3 at 2)` will return the width of +/// specific columns on the grid. +/// Since these are functions, they will not handle placement for you. +/// +/// ### Context Syntax: `[of ]` +/// The second half of Susy's shorthand +/// describes the grid-**context** – +/// available columns, container-spread, and optional gutter override – +/// in any order. +/// All of these settings have globally-defined defaults: +/// +/// - `span(2 of 6)` will set the context to +/// a slice of 6 columns from the global grid. +/// More details below. +/// - `span(2 of 12 wide)` changes the container-spread +/// as well as the column-context. +/// - `span(2 of 12 set-gutters 0.5em)` +/// will override the global gutters setting +/// for this one calculation. +/// +/// A single unitless number for `columns` +/// will be treated as a slice of the parent grid. +/// On a grid with `columns: susy-repeat(12, 120px)`, +/// the shorthand `of 4` will use the parent `120px` column-width. +/// You can also be more explicit, +/// and say `of susy-repeat(4, 100px)`. +/// If you are using asymmetrical grids, +/// like `columns: (1 1 2 3 5 8)`, +/// Susy can't slice it for you without knowing which columns you want. +/// The `slice` function accepts exactly the same syntax as `span`, +/// but returns a list of columns rather than a width. +/// Use it in your context like `of slice(first 3)`. +/// +/// @group b-api + + + +// Susy Span +// --------- +/// This is the primary function in Susy — +/// used to return the width of a span across one or more columns, +/// and any relevant gutters along the way. +/// With the default settings, +/// `span(3)` will return the width of 3 columns, +/// and the 2 intermediate gutters. +/// This can be used to set the `width` property of grid elements, +/// or `margin` and `padding` +/// to push, pull, and pad your elements. +/// +/// - This is a thin syntax-sugar shell around +/// the core-math `su-span()` function. +/// - The un-prefixed alias `span()` is available by default. +/// +/// @group b-api +/// @see su-span +/// @see $susy +/// +/// @param {list} $span - +/// Shorthand expression to define the width of the span, +/// optionally containing: +/// - a count, length, or column-list span. +/// - `at $n`, `first`, or `last` location on asymmetrical grids, +/// where `at 1 == first`, +/// and `last` will calculate the proper location +/// based on columns and span. +/// - `narrow`, `wide`, or `wider` for optionally spreading +/// across adjacent gutters. +/// - `of $n ` for available grid columns +/// and spread of the container. +/// Span counts like `of 6` are valid +/// in the context of symmetrical grids, +/// where Susy can safely infer a slice of the parent columns. +/// - and `set-gutters $n` to override global gutter settings. +/// +/// @param {map} $config [()] - +/// Optional map of Susy grid configuration settings. +/// See `$susy` documentation for details. +/// +/// @return {length} - +/// Calculated length value, using the units given, +/// or converting to `%` for fraction-based grids, +/// or a full `calc` function when units/fractions +/// are not comparable outside the browser. +/// +/// @example scss - span half the grid +/// .foo { +/// // the result is a bit under 50% to account for gutters +/// width: susy-span(6 of 12); +/// } +/// +/// @example scss - span a specific segment of asymmetrical grid +/// .foo { +/// width: susy-span(3 at 3 of (1 2 3 5 8)); +/// } +@function susy-span( + $span, + $config: () +) { + $output: susy-compile($span, $config); + + @if map-get($output, 'span') { + @return su-call('su-span', $output); + } + + $actual: '[#{type-of($span)}] `#{inspect($span)}`'; + @return _susy-error( + 'Unable to determine span value from #{$actual}.', + 'susy-span'); +} + + + +// Susy Gutter +// ----------- +/// The gutter function returns +/// the width of a single gutter on your grid, +/// to be applied where you see fit – +/// on `margins`, `padding`, `transform`, or element `width`. +/// +/// - This is a thin syntax-sugar shell around +/// the core-math `su-gutter()` function. +/// - The un-prefixed alias `gutter()` is available by default. +/// +/// @group b-api +/// @see su-gutter +/// @see $susy +/// +/// @param {list | number} $context [null] - +/// Optional context for nested gutters, +/// including shorthand for +/// `columns`, `gutters`, and `container-spread` +/// (additional shorthand will be ignored) +/// +/// @param {map} $config [()] - +/// Optional map of Susy grid configuration settings. +/// See `$susy` documentation for details. +/// +/// @return {length} - +/// Width of a gutter as `%` of current context, +/// or in the units defined by `column-width` when available +/// +/// @example scss - add gutters before or after an element +/// .floats { +/// float: left; +/// width: span(3 of 6); +/// margin-left: gutter(of 6); +/// } +/// +/// @example scss - add gutters to padding +/// .flexbox { +/// flex: 1 1 span(3 wide of 6 wide); +/// padding: gutter(of 6) / 2; +/// } +/// +@function susy-gutter( + $context: susy-get('columns'), + $config: () +) { + $context: susy-compile($context, $config, 'context-only'); + + @return su-call('su-gutter', $context); +} + + + +// Susy Slice +// ---------- +/// Working with asymmetrical grids (un-equal column widths) +/// can be challenging –  +/// expecially when they involve fluid/fractional elements. +/// Describing a context `of (15em 6em 6em 6em 15em)` is a lot +/// to put inside the span or gutter function shorthand. +/// This slice function returns a sub-slice of asymmetrical columns to use +/// for a nested context. +/// `slice(3 at 2)` will give you a subset of the global grid, +/// spanning 3 columns, starting with the second. +/// +/// - This is a thin syntax-sugar shell around +/// the core-math `su-slice()` function. +/// - The un-prefixed alias `slice()` is available by default. +/// +/// @group b-api +/// @see su-slice +/// @see $susy +/// +/// @param {list} $span - +/// Shorthand expression to define the subset span, optionally containing: +/// - `at $n`, `first`, or `last` location on asymmetrical grids; +/// - `of $n ` for available grid columns +/// and spread of the container +/// - Span-counts like `of 6` are only valid +/// in the context of symmetrical grids +/// - Valid spreads include `narrow`, `wide`, or `wider` +/// +/// @param {map} $config [()] - +/// Optional map of Susy grid configuration settings. +/// See `$susy` documentation for details. +/// +/// @return {list} - +/// Subset list of columns for use for a nested context +/// +/// @example scss - Return a nested segment of asymmetrical grid +/// $context: susy-slice(3 at 3 of (1 2 3 5 8)); +/// /* $context: #{$context}; */ +@function susy-slice( + $span, + $config: () +) { + $span: susy-compile($span, $config); + + @return su-call('su-slice', $span); +} + + + +/// ## Building Grids +/// The web has come a long way +/// since the days of double-margin-hacks +/// and inconsistent subpixel rounding. +/// In addition to floats and tables, +/// we can now use much more powerful tools, +/// like flexbox and CSS grid, +/// to build more interesting and responsive layouts. +/// +/// With Susy3, we hope you'll start moving in that direction. +/// You can still build classic 12-column Grid Systems, +/// and we'll help you get there, +/// but Susy3 is primarily designed for a grid-math-on-demand +/// approach to layout: +/// applying our functions only where you really need grid math. +/// Read the [intro article by OddBird][welcome] for more details. +/// +/// [welcome]: http://oddbird.net/2017/06/28/susy3/ +/// +/// @group b-api +/// @link http://oddbird.net/2017/06/28/susy3/ Article: Welcome to Susy3 +/// +/// @example scss - floats +/// .float { +/// width: span(3); +/// margin-right: gutter(); +/// } +/// +/// @example scss - flexbox +/// .flexbox { +/// flex: 1 1 span(3); +/// // half a gutter on either side… +/// padding: 0 gutter() / 2; +/// } +/// +/// @example scss - pushing and pulling +/// .push-3 { +/// margin-left: span(3 wide); +/// } +/// +/// .pull-3 { +/// margin-left: 0 - span(3 wide); +/// } +/// +/// @example scss - building an attribute system +/// // markup example:
+/// [data-span] { +/// float: left; +/// +/// &:not([data-span*='last']) { +/// margin-right: gutter(); +/// } +/// } +/// +/// @for $span from 1 through length(susy-get('columns')) { +/// [data-span*='#{$span}'] { +/// width: span($span); +/// } +/// } diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss b/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss new file mode 100644 index 0000000000..a988504c18 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_normalize.scss @@ -0,0 +1,261 @@ +/// Syntax Normalization +/// ==================== +/// Susy is divided into two layers: +/// "Su" provides the core math functions with a stripped-down syntax, +/// while "Susy" adds global settings, shorthand syntax, +/// and other helpers. +/// Each setting (e.g. span, location, columns, spread, etc.) +/// has a single canonical syntax in Su. +/// +/// This normalization module helps translate between those layers, +/// transforming parsed Susy input into +/// values that Su will understand. +/// +/// @group x-normal +/// +/// @see susy-normalize +/// @see susy-normalize-span +/// @see susy-normalize-columns +/// @see susy-normalize-spread +/// @see susy-normalize-location + + + +// Susy Normalize +// -------------- +/// Normalize the values in a configuration map. +/// In addition to the global `$susy` properties, +/// this map can include local span-related imformation, +/// like `span` and `location`. +/// +/// Normalization does not check that values are valid, +/// which will happen in the Su math layer. +/// These functions merely look for known Susy syntax – +/// returning a map with those shorthand values +/// converted into low-level data for Su. +/// For example `span: all` and `location: first` +/// will be converted into specific numbers. +/// +/// @group x-normal +/// @see $susy +/// @see susy-parse +/// +/// @param {map} $config - +/// Map of Susy configuration settings to normalize. +/// See `$susy` and `susy-parse()` documentation for details. +/// @param {map | null} $context [null] - +/// Map of Susy configuration settings to use as global reference, +/// or `null` to use global settings. +/// +/// @return {map} - +/// Map of Susy configuration settings, +/// with all values normalized for Su math functions. +@function susy-normalize( + $config, + $context: null +) { + // Spread + @each $setting in ('spread', 'container-spread') { + $value: map-get($config, $setting); + + @if $value { + $value: susy-normalize-spread($value); + $config: map-merge($config, ($setting: $value)); + } + } + + // Columns + $columns: map-get($config, 'columns'); + + @if $columns { + $columns: susy-normalize-columns($columns, $context); + $config: map-merge($config, ('columns': $columns)); + } + + @if not $columns { + $map: type-of($context) == 'map'; + $columns: if($map, map-get($context, 'columns'), null); + $columns: $columns or susy-get('columns'); + } + + // Span + $span: map-get($config, 'span'); + + @if $span { + $span: susy-normalize-span($span, $columns); + $config: map-merge($config, ('span': $span)); + } + + // Location + $location: map-get($config, 'location'); + + @if $location { + $location: susy-normalize-location($span, $location, $columns); + $config: map-merge($config, ('location': $location)); + } + + @return $config; +} + + + +// Normalize Span +// -------------- +/// Normalize `span` shorthand for Su. +/// Su span syntax allows an explicit length (e.g. `3em`), +/// unitless column-span number (e.g. `3` columns), +/// or an explicit list of columns (e.g. `(3 5 8)`). +/// +/// Susy span syntax also allows the `all` keyword, +/// which will be converted to a slice of the context +/// in normalization. +/// +/// @group x-normal +/// +/// @param {number | list | 'all'} $span - +/// Span value to normalize. +/// @param {list} $columns - +/// Normalized list of columns in the grid +/// +/// @return {number | list} - +/// Number or list value for `$span` +@function susy-normalize-span( + $span, + $columns: susy-get('columns') +) { + @if ($span == 'all') { + @return length($columns); + } + + @return $span; +} + + + +// Normalize Columns +// ----------------- +/// Normalize `column` shorthand for Su. +/// Su column syntax only allows column lists (e.g. `120px 1 1 1 120px`). +/// +/// Susy span syntax also allows a unitless `slice` number (e.g `of 5`), +/// which will be converted to a slice of the context +/// in normalization. +/// +/// @group x-normal +/// +/// @param {list | integer} $columns - +/// List of available columns, +/// or unitless integer representing a slice of +/// the available context. +/// @param {map | null} $context [null] - +/// Map of Susy configuration settings to use as global reference, +/// or `null` to access global settings. +/// +/// @return {list} - +/// Columns list value, normalized for Su input. +/// +/// @throws +/// when attempting to access a slice of asymmetrical context +@function susy-normalize-columns( + $columns, + $context: null +) { + $context: $context or susy-settings(); + + @if type-of($columns) == 'list' { + @return _susy-flatten($columns); + } + + @if (type-of($columns) == 'number') and (unitless($columns)) { + $span: $columns; + $context: map-get($context, 'columns'); + $symmetrical: susy-repeat(length($context), nth($context, 1)); + + @if ($context == $symmetrical) { + @return susy-repeat($span, nth($context, 1)); + } @else { + $actual: 'of `#{$span}`'; + $columns: 'grid-columns `#{$context}`'; + @return _susy-error( + 'context-slice #{$actual} can not be determined based on #{$columns}.', + 'susy-normalize-columns'); + } + } + + @return $columns; +} + + + +// Normalize Spread +// ---------------- +/// Normalize `spread` shorthand for Su. +/// Su spread syntax only allows the numbers `-1`, `0`, or `1` – +/// representing the number of gutters covered +/// in relation to columns spanned. +/// +/// Susy spread syntax also allows keywords for each value – +/// `narrow` for `-1`, `wide` for `0`, or `wider` for `1` – +/// which will be converted to their respective integers +/// in normalization. +/// +/// @group x-normal +/// +/// @param {0 | 1 | -1 | 'narrow' | 'wide' | 'wider'} $spread - +/// Spread across adjacent gutters, relative to a column-count — +/// either `narrow` (-1), `wide` (0), or `wider` (1) +/// +/// @return {number} - +/// Numeric value for `$spread` +@function susy-normalize-spread( + $spread +) { + $normal-spread: ( + 'narrow': -1, + 'wide': 0, + 'wider': 1, + ); + + @return map-get($normal-spread, $spread) or $spread; +} + + + +// Normalize Location +// ------------------ +/// Normalize `location` shorthand for Su. +/// Su location syntax requires the (1-indexed) number for a column. +/// +/// Susy also allows the `first` and `last` keywords, +/// where `first` is always `1`, +/// and `last` is calculated based on span and column values. +/// Both keywords are normalized into an integer index +/// in normalization. +/// +/// @group x-normal +/// +/// @param {number} $span - +/// Number of grid-columns to be spanned +/// @param {integer | 'first' | 'last'} $location - +/// Starting (1-indexed) column position of a span, +/// or a named location keyword. +/// @param {list} $columns - +/// Already-normalized list of columns in the grid. +/// +/// @return {integer} - +/// Numeric value for `$location` +@function susy-normalize-location( + $span, + $location, + $columns +) { + $count: length($columns); + $normal-locations: ( + 'first': 1, + 'alpha': 1, + 'last': $count - $span + 1, + 'omega': $count - $span + 1, + ); + + @return map-get($normal-locations, $location) or $location; +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss b/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss new file mode 100644 index 0000000000..98aa40a9fa --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_parse.scss @@ -0,0 +1,163 @@ +/// Shorthand Syntax Parser +/// ======================= +/// The syntax parser converts [shorthand syntax][short] +/// into a map of settings that can be compared/merged with +/// other config maps and global setting. +/// +/// [short]: b-api.html +/// +/// @group x-parser + + + +// Parse +// ----- +/// The `parse` function provides all the syntax-sugar in Susy, +/// converting user shorthand +/// into a usable map of keys and values +/// that can be normalized and passed to Su. +/// +/// @group x-parser +/// @see $susy +/// +/// @param {list} $shorthand - +/// Shorthand expression to define the width of the span, +/// optionally containing: +/// - a count, length, or column-list span; +/// - `at $n`, `first`, or `last` location on asymmetrical grids; +/// - `narrow`, `wide`, or `wider` for optionally spreading +/// across adjacent gutters; +/// - `of $n ` for available grid columns +/// and spread of the container +/// (span counts like `of 6` are only valid +/// in the context of symmetrical grids); +/// - and `set-gutters $n` to override global gutter settings +/// @param {bool} $context-only [false] - +/// Allow the parser to ignore span and span-spread values, +/// only parsing context and container-spread. +/// This makes it possible to accept spanless values, +/// like the `gutters()` syntax. +/// When parsing context-only, +/// the `of` indicator is optional. +/// +/// @return {map} - +/// Map of span and grid settings +/// parsed from shorthand input – +/// including all the properties available globally – +/// `columns`, `gutters`, `spread`, `container-spread` – +/// along with the span-specific properties +/// `span`, and `location`. +/// +/// @throw +/// when a shorthand value is not recognized +@function susy-parse( + $shorthand, + $context-only: false +) { + $parse-error: 'Unknown shorthand property:'; + $options: ( + 'first': 'location', + 'last': 'location', + 'alpha': 'location', + 'omega': 'location', + 'narrow': 'spread', + 'wide': 'spread', + 'wider': 'spread', + ); + + $return: (); + $span: null; + $columns: null; + + $of: null; + $next: false; + + // Allow context-only shorthand, without span + @if ($context-only) and (not index($shorthand, 'of')) { + @if su-valid-columns($shorthand, 'fail-silent') { + $shorthand: 'of' $shorthand; + } @else { + $shorthand: join('of', $shorthand); + } + } + + // loop through the shorthand list + @for $i from 1 through length($shorthand) { + $item: nth($shorthand, $i); + $type: type-of($item); + $error: false; + $details: '[#{$type}] `#{$item}`'; + + // if we know what's supposed to be coming next… + @if $next { + + // Add to the return map + $return: map-merge($return, ($next: $item)); + + // Reset next to `false` + $next: false; + + } @else { // If we don't know what's supposed to be coming… + + // Keywords… + @if ($type == 'string') { + // Check the map for keywords… + @if map-has-key($options, $item) { + $setting: map-get($options, $item); + + // Spread could be on the span or the container… + @if ($setting == 'spread') and ($of) { + $return: map-merge($return, ('container-spread': $item)); + } @else { + $return: map-merge($return, ($setting: $item)); + } + + } @else if ($item == 'all') { + // `All` is a span shortcut + $span: 'all'; + } @else if ($item == 'at') { + // Some keywords setup what's next… + $next: 'location'; + } @else if ($item == 'set-gutters') { + $next: 'gutters'; + } @else if ($item == 'of') { + $of: true; + } @else { + $error: true; + } + + } @else if ($type == 'number') or ($type == 'list') { // Numbers & lists… + + @if not ($span or $of) { + // We don't have a span, and we're not expecting context… + $span: $item; + } @else if ($of) and (not $columns) { + // We are expecting context… + $columns: $item; + } @else { + $error: true; + } + + } @else { + $error: true; + } + } + + @if $error { + @return _susy-error('#{$parse-error} #{$details}', 'susy-parse'); + } + } + + // If we have span, merge it in + @if $span { + $return: map-merge($return, ('span': $span)); + } + + // If we have columns, merge them in + @if $columns { + $return: map-merge($return, ('columns': $columns)); + } + + // Return the map of settings… + @return $return; +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss b/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss new file mode 100644 index 0000000000..b824477cf1 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_settings.scss @@ -0,0 +1,329 @@ +/// Susy3 Configuration +/// =================== +/// Susy3 has 4 core settings, in a single settings map. +/// You'll notice a few differences from Susy2: +/// +/// **Columns** no longer accept a single number, like `12`, +/// but use a syntax more similar to the new +/// CSS [grid-template-columns][columns] – +/// a list of relative sizes for each column on the grid. +/// Unitless numbers in Susy act very similar to `fr` units in CSS, +/// and the `susy-repeat()` function (similar to the css `repeat()`) +/// helps quickly establish equal-width columns. +/// +/// [columns]: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns +/// +/// - `susy-repeat(12)` will create 12 fluid, equal-width columns +/// - `susy-repeat(6, 120px)` will create 6 equal `120px`-wide columns +/// - `120px susy-repeat(4) 120px` will create 6 columns, +/// the first and last are `120px`, +/// while the middle 4 are equal fractions of the remainder. +/// Susy will output `calc()` values in order to achieve this. +/// +/// **Gutters** haven't changed – +/// a single fraction or explicit width – +/// but the `calc()` output feature +/// means you can now use any combination of units and fractions +/// to create static-gutters on a fluid grid, etc. +/// +/// **Spread** existed in the Susy2 API as a span option, +/// and was otherwise handled behind the scenes. +/// Now we're giving you full control over all spread issues. +/// You can find a more [detailed explanation of spread on the blog][spread]. +/// +/// [spread]: http://oddbird.net/2017/06/13/susy-spread/ +/// +/// You can access your global settings at any time +/// with the `susy-settings()` function, +/// or grab a single setting from the global scope +/// with `susy-get('columns')`, `susy-get('gutters')` etc. +/// +/// @group a-config +/// @link http://oddbird.net/2017/06/13/susy-spread/ +/// Article: Understanding Spread in Susy3 +/// +/// @see $susy +/// @see susy-settings +/// @see susy-get + + + +// Susy +// ---- +/// The grid is defined in a single map variable, +/// with four initial properties: +/// `columns`, `gutters`, `spread` and `container-spread`. +/// Anything you put in the root `$susy` variable map +/// will be treated as a global project default. +/// You can create similar configuration maps +/// under different variable names, +/// to override the defaults as-needed. +/// +/// @group a-config +/// @type Map +/// +/// @see $_susy-defaults +/// @see {function} susy-repeat +/// @link +/// https://codepen.io/mirisuzanne/pen/EgmJJp?editors=1100 +/// Spread examples on CodePen +/// +/// @prop {list} columns - +/// Columns are described by a list of numbers, +/// representing the relative width of each column. +/// The syntax is a simplified version of CSS native +/// `grid-template-columns`, +/// expecting a list of grid-column widths. +/// Unitless numbers create fractional fluid columns +/// (similar to the CSS-native `fr` unit), +/// while length values (united numbers) +/// are used to define static columns. +/// You can mix-and match units and fractions, +/// to create a mixed grid. +/// Susy will generate `calc()` values when necessary, +/// to make all your units work together. +/// +/// Use the `susy-repeat($count, $value)` function +/// to more easily repetative columns, +/// similar to the CSS-native `repeat()`. +/// +/// - `susy-repeat(8)`: +/// an 8-column, symmetrical, fluid grid. +///
Identical to `(1 1 1 1 1 1 1 1)`. +/// - `susy-repeat(6, 8em)`: +/// a 6-column, symmetrical, em-based grid. +///
Identical to `(8em 8em 8em 8em 8em 8em)`. +/// - `(300px susy-repeat(4) 300px)`: +/// a 6-column, asymmetrical, mixed fluid/static grid +/// using `calc()` output. +///
Identical to `(300px 1 1 1 1 300px)`. +/// +/// **NOTE** that `12` is no longer a valid 12-column grid definition, +/// and you must list all the columns individually +/// (or by using the `susy-repeat()` function). +/// +/// @prop {number} gutters - +/// Gutters are defined as a single width, +/// or fluid ratio, similar to the native-CSS +/// `grid-column-gap` syntax. +/// Similar to columns, +/// gutters can use any valid CSS length unit, +/// or unitless numbers to define a relative fraction. +/// +/// - `0.5`: +/// a fluid gutter, half the size of a single-fraction column. +/// - `1em`: +/// a static gutter, `1em` wide. +/// +/// Mix static gutters with fluid columns, or vice versa, +/// and Susy will generate the required `calc()` to make it work. +/// +/// @prop {string} spread [narrow] - +/// Spread of an element across adjacent gutters: +/// either `narrow` (none), `wide` (one), or `wider` (two) +/// +/// - Both spread settings default to `narrow`, +/// the most common use-case. +/// A `narrow` spread only has gutters *between* columns +/// (one less gutter than columns). +/// This is how all css-native grids work, +/// and most margin-based grid systems. +/// - A `wide` spread includes the same number of gutters as columns, +/// spanning across a single side-gutter. +/// This is how most padding-based grid systems often work, +/// and is also useful for pushing and pulling elements into place. +/// - The rare `wider` spread includes gutters +/// on both sides of the column-span +/// (one more gutters than columns). +/// +/// @prop {string} container-spread [narrow] - +/// Spread of a container around adjacent gutters: +/// either `narrow` (none), `wide` (one), or `wider` (two). +/// See `spread` property for details. +/// +/// @since 3.0.0-beta.1 - +/// `columns` setting no longer accepts numbers +/// (e.g. `12`) for symmetrical fluid grids, +/// or the initial `12 x 120px` syntax for +/// symmetrical fixed-unit grids. +/// Use `susy-repeat(12)` or `susy-repeat(12, 120px)` instead. +/// +/// @example scss - default values +/// // 4 symmetrical, fluid columns +/// // gutters are 1/4 the size of a column +/// // elements span 1 less gutter than columns +/// // containers span 1 less gutter as well +/// $susy: ( +/// 'columns': susy-repeat(4), +/// 'gutters': 0.25, +/// 'spread': 'narrow', +/// 'container-spread': 'narrow', +/// ); +/// +/// @example scss - inside-static gutters +/// // 6 symmetrical, fluid columns… +/// // gutters are static, triggering calc()… +/// // elements span equal columns & gutters… +/// // containers span equal columns & gutters… +/// $susy: ( +/// 'columns': susy-repeat(6), +/// 'gutters': 0.5em, +/// 'spread': 'wide', +/// 'container-spread': 'wide', +/// ); +$susy: () !default; + + + +// Susy Repeat +// ----------- +/// Similar to the `repeat(, )` function +/// that is available in native CSS Grid templates, +/// the `susy-repeat()` function helps generate repetative layouts +/// by repeating any value a given number of times. +/// Where Susy previously allowed `8` as a column definition +/// for 8 equal columns, you should now use `susy-repeat(8)`. +/// +/// @group a-config +/// +/// @param {integer} $count - +/// The number of repetitions, e.g. `12` for a 12-column grid. +/// @param {*} $value [1] - +/// The value to be repeated. +/// Technically any value can be repeated here, +/// but the function exists to repeat column-width descriptions: +/// e.g. the default `1` for single-fraction fluid columns, +/// `5em` for a static column, +/// or even `5em 120px` if you are alternating column widths. +/// +/// @return {list} - +/// List of repeated values +/// +/// @example scss +/// // 12 column grid, with 5em columns +/// $susy: ( +/// columns: susy-repeat(12, 5em), +/// ); +/// +/// @example scss +/// // asymmetrical 5-column grid +/// $susy: ( +/// columns: 20px susy-repeat(3, 100px) 20px, +/// ); +/// +/// /* result: #{susy-get('columns')} */ +@function susy-repeat( + $count, + $value: 1 +) { + $return: (); + + @for $i from 1 through $count { + $return: join($return, $value); + } + + @return $return; +} + + + +// Susy Defaults +// ------------- +/// Configuration map of Susy factory defaults. +/// Do not override this map directly – +/// use `$susy` for user and project setting overrides. +/// +/// @access private +/// @type Map +/// +/// @see $susy +/// +/// @prop {number | list} columns [susy-repeat(4)] +/// @prop {number} gutters [0.25] +/// @prop {string} spread ['narrow'] +/// @prop {string} container-spread ['narrow'] +$_susy-defaults: ( + 'columns': susy-repeat(4), + 'gutters': 0.25, + 'spread': 'narrow', + 'container-spread': 'narrow', +); + + + +// Susy Settings +// ------------- +/// Return a combined map of Susy settings, +/// based on the factory defaults (`$_susy-defaults`), +/// user-defined project configuration (`$susy`), +/// and any local overrides required – +/// such as a configuration map passed into a function. +/// +/// @group a-config +/// +/// @param {maps} $overrides… - +/// Optional map override of global configuration settings. +/// See `$susy` above for properties. +/// +/// @return {map} - +/// Combined map of Susy configuration settings, +/// in order of specificity: +/// any `$overrides...`, +/// then `$susy` project settings, +/// and finally the `$_susy-defaults` +/// +/// @example scss - global settings +/// @each $key, $value in susy-settings() { +/// /* #{$key}: #{$value} */ +/// } +/// +/// @example scss - local settings +/// $local: ('columns': 1 2 3 5 8); +/// +/// @each $key, $value in susy-settings($local) { +/// /* #{$key}: #{$value} */ +/// } +@function susy-settings( + $overrides... +) { + $settings: map-merge($_susy-defaults, $susy); + + @each $config in $overrides { + $settings: map-merge($settings, $config); + } + + @return $settings; +} + + + +// Susy Get +// -------- +/// Return the current global value of any Susy setting +/// +/// @group a-config +/// +/// @param {string} $key - +/// Setting to retrieve from the configuration. +/// +/// @return {*} - +/// Value mapped to `$key` in the configuration maps, +/// in order of specificity: +/// `$susy`, then `$_susy-defaults` +/// +/// @example scss - +/// /* columns: #{susy-get('columns')} */ +/// /* gutters: #{susy-get('gutters')} */ +@function susy-get( + $key +) { + $settings: susy-settings(); + + @if not map-has-key($settings, $key) { + @return _susy-error( + 'There is no Susy setting called `#{$key}`', + 'susy-get'); + } + + @return map-get($settings, $key); +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss b/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss new file mode 100644 index 0000000000..1e88528405 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_su-math.scss @@ -0,0 +1,441 @@ +/// Grid Math Engine +/// ================ +/// The `su` functions give you direct access to the math layer, +/// without any syntax-sugar like shorthand parsing, and normalization. +/// If you prefer named arguments, and stripped-down syntax, +/// you can use these functions directly in your code – +/// replacing `span`, `gutter`, and `slice`. +/// +/// These functions are also useful +/// for building mixins or other extensions to Susy. +/// Apply the Susy syntax to new mixins and functions, +/// using our "Plugin Helpers", +/// or write your own syntax and pass the normalized results along +/// to `su` for compilation. +/// +/// @group su-math +/// +/// @see su-span +/// @see su-gutter +/// @see su-slice +/// @ignore _su-sum +/// @ignore _su-calc-span +/// @ignore _su-calc-sum +/// @ignore _su-needs-calc-output + + + +// Su Span +// ------- +/// Calculates and returns a CSS-ready span width, +/// based on normalized span and context data – +/// a low-level version of `susy-span`, +/// with all of the logic and none of the syntax sugar. +/// +/// - Grids defined with unitless numbers will return `%` values. +/// - Grids defined with comparable units +/// will return a value in the units provided. +/// - Grids defined with a mix of units, +/// or a combination of untiless numbers and unit-lengths, +/// will return a `calc()` string. +/// +/// @group su-math +/// @see susy-span +/// +/// @param {number | list} $span - +/// Number or list of grid columns to span +/// @param {list} $columns - +/// List of columns available +/// @param {number} $gutters - +/// Width of a gutter in column-comparable units +/// @param {0 | 1 | -1} $spread - +/// Number of gutters spanned, +/// relative to `span` count +/// @param {0 | 1 | -1} $container-spread [$spread] - +/// Number of gutters spanned, +/// relative to `columns` count +/// @param {integer} $location [1] - +/// Optional position of sub-span among full set of columns +/// +/// @return {length} - +/// Relative or static length of a span on the grid +@function su-span( + $span, + $columns, + $gutters, + $spread, + $container-spread: $spread, + $location: 1 +) { + $span: su-valid-span($span); + $columns: su-valid-columns($columns); + $gutters: su-valid-gutters($gutters); + $spread: su-valid-spread($spread); + + @if (type-of($span) == 'number') { + @if (not unitless($span)) { + @return $span; + } + + $location: su-valid-location($span, $location, $columns); + $span: su-slice($span, $columns, $location, $validate: false); + } + + @if _su-needs-calc-output($span, $columns, $gutters, $spread, not 'validate') { + @return _su-calc-span($span, $columns, $gutters, $spread, $container-spread, not 'validate'); + } + + $span-width: _su-sum($span, $gutters, $spread, $validate: false); + + @if unitless($span-width) { + $container-spread: su-valid-spread($container-spread); + $container: _su-sum($columns, $gutters, $container-spread, $validate: false); + @return percentage($span-width / $container); + } + + @return $span-width; +} + + + +// Su Gutter +// --------- +/// Calculates and returns a CSS-ready gutter width, +/// based on normalized grid data – +/// a low-level version of `susy-gutter`, +/// with all of the logic and none of the syntax sugar. +/// +/// - Grids defined with unitless numbers will return `%` values. +/// - Grids defined with comparable units +/// will return a value in the units provided. +/// - Grids defined with a mix of units, +/// or a combination of untiless numbers and unit-lengths, +/// will return a `calc()` string. +/// +/// @group su-math +/// @see susy-gutter +/// +/// @param {list} $columns - +/// List of columns in the grid +/// @param {number} $gutters - +/// Width of a gutter in column-comparable units +/// @param {0 | 1 | -1} $container-spread - +/// Number of gutters spanned, +/// relative to `columns` count +/// +/// @return {length} - +/// Relative or static length of one gutter in a grid +@function su-gutter( + $columns, + $gutters, + $container-spread +) { + @if (type-of($gutters) == 'number') { + @if ($gutters == 0) or (not unitless($gutters)) { + @return $gutters; + } + } + + @if _su-needs-calc-output($gutters, $columns, $gutters, -1, not 'validate') { + @return _su-calc-span($gutters, $columns, $gutters, -1, $container-spread, not 'validate'); + } + + $container: _su-sum($columns, $gutters, $container-spread); + @return percentage($gutters / $container); +} + + + +// Su Slice +// -------- +/// Returns a list of columns +/// based on a given span/location slice of the grid – +/// a low-level version of `susy-slice`, +/// with all of the logic and none of the syntax sugar. +/// +/// @group su-math +/// @see susy-slice +/// +/// @param {number} $span - +/// Number of grid columns to span +/// @param {list} $columns - +/// List of columns in the grid +/// @param {number} $location [1] - +/// Starting index of a span in the list of columns +/// @param {bool} $validate [true] - +/// Check that arguments are valid before proceeding +/// +/// @return {list} - +/// Subset list of grid columns, based on span and location +@function su-slice( + $span, + $columns, + $location: 1, + $validate: true +) { + @if $validate { + $columns: su-valid-columns($columns); + $location: su-valid-location($span, $location, $columns); + } + + $floor: floor($span); + $sub-columns: (); + + @for $i from $location to ($location + $floor) { + $sub-columns: append($sub-columns, nth($columns, $i)); + } + + @if $floor != $span { + $remainder: $span - $floor; + $column: $location + $floor; + $sub-columns: append($sub-columns, nth($columns, $column) * $remainder); + } + + @return $sub-columns; +} + + + +// Su Sum +// ------ +/// Get the total sum of column-units in a layout. +/// +/// @group su-math +/// @access private +/// +/// @param {list} $columns - +/// List of columns in the grid +/// @param {number} $gutters - +/// Width of a gutter in column-comparable units +/// @param {0 | 1 | -1} $spread - +/// Number of gutters spanned, +/// relative to `columns` count +/// @param {bool} $validate [true] - +/// Check that arguments are valid before proceeding +/// +/// @return {number} - +/// Total sum of column-units in a grid +@function _su-sum( + $columns, + $gutters, + $spread, + $validate: true +) { + @if $validate { + $columns: su-valid-span($columns); + $gutters: su-valid-gutters($gutters); + $spread: su-valid-spread($spread); + } + + // Calculate column-sum + $column-sum: 0; + @each $column in $columns { + $column-sum: $column-sum + $column; + } + + $gutter-sum: (ceil(length($columns)) + $spread) * $gutters; + $total: if(($gutter-sum > 0), $column-sum + $gutter-sum, $column-sum); + + @return $total; +} + + + +// Su Calc +// ------- +/// Return a usable span width as a `calc()` function, +/// in order to create mixed-unit grids. +/// +/// @group su-math +/// @access private +/// +/// @param {number | list} $span - +/// Pre-sliced list of grid columns to span +/// @param {list} $columns - +/// List of columns available +/// @param {number} $gutters - +/// Width of a gutter in column-comparable units +/// @param {0 | 1 | -1} $spread - +/// Number of gutters spanned, +/// relative to `span` count +/// @param {0 | 1 | -1} $container-spread [$spread] - +/// Number of gutters spanned, +/// relative to `columns` count +/// @param {bool} $validate [true] - +/// Check that arguments are valid before proceeding +/// +/// @return {length} - +/// Relative or static length of a span on the grid +@function _su-calc-span( + $span, + $columns, + $gutters, + $spread, + $container-spread: $spread, + $validate: true +) { + @if $validate { + $span: su-valid-span($span); + $columns: su-valid-columns($columns); + $gutters: su-valid-gutters($gutters); + $spread: su-valid-spread($spread); + $container-spread: su-valid-spread($container-spread); + } + + // Span and context + $span: _su-calc-sum($span, $gutters, $spread, not 'validate'); + $context: _su-calc-sum($columns, $gutters, $container-spread, not 'validate'); + + // Fixed and fluid + $fixed-span: map-get($span, 'fixed'); + $fluid-span: map-get($span, 'fluid'); + $fixed-context: map-get($context, 'fixed'); + $fluid-context: map-get($context, 'fluid'); + + $calc: '#{$fixed-span}'; + $fluid-calc: '(100% - #{$fixed-context})'; + + // Fluid-values + @if (not $fluid-span) { + $fluid-calc: null; + } @else if ($fluid-span != $fluid-context) { + $fluid-span: '* #{$fluid-span}'; + $fluid-context: if($fluid-context, '/ #{$fluid-context}', ''); + $fluid-calc: '(#{$fluid-calc $fluid-context $fluid-span})'; + } + + @if $fluid-calc { + $calc: if(($calc != ''), '#{$calc} + ', ''); + $calc: '#{$calc + $fluid-calc}'; + } + + @return calc(#{unquote($calc)}); +} + + + +// Su Calc-Sum +// ----------- +/// Get the total sum of fixed and fluid column-units +/// for creating a mixed-unit layout with `calc()` values. +/// +/// @group su-math +/// @access private +/// +/// @param {list} $columns - +/// List of columns available +/// @param {number} $gutters - +/// Width of a gutter in column-comparable units +/// @param {0 | 1 | -1} $spread - +/// Number of gutters spanned, +/// relative to `span` count +/// @param {bool} $validate [true] - +/// Check that arguments are valid before proceeding +/// +/// @return {map} - +/// Map with `fixed` and `fluid` keys +/// containing the proper math as strings +@function _su-calc-sum( + $columns, + $gutters, + $spread, + $validate: true +) { + @if $validate { + $columns: su-valid-span($columns); + $gutters: su-valid-gutters($gutters); + $spread: su-valid-spread($spread); + } + + $fluid: 0; + $fixed: (); + $calc: null; + + // Gutters + $gutters: $gutters * (length($columns) + $spread); + + // Columns + @each $col in append($columns, $gutters) { + @if unitless($col) { + $fluid: $fluid + $col; + } @else { + $fixed: _su-map-add-units($fixed, $col); + } + } + + // Compile Fixed Units + @each $unit, $total in $fixed { + @if ($total != (0 * $total)) { + $calc: if($calc, '#{$calc} + #{$total}', '#{$total}'); + } + } + + // Calc null or string + @if $calc { + $calc: if(str-index($calc, '+'), '(#{$calc})', '#{$calc}'); + } + + // Fluid 0 => null + $fluid: if(($fluid == 0), null, $fluid); + + + // Return map + $return: ( + 'fixed': $calc, + 'fluid': $fluid, + ); + + @return $return; +} + + + +// Needs Calc +// ---------- +/// Check if `calc()` will be needed in defining a span, +/// if the necessary units in a grid are not comparable. +/// +/// @group su-math +/// @access private +/// +/// @param {list} $span - +/// Slice of columns to span +/// @param {list} $columns - +/// List of available columns in the grid +/// @param {number} $gutters - +/// Width of a gutter +/// @param {0 | 1 | -1} $spread - +/// Number of gutters spanned, +/// relative to `span` count +/// @param {bool} $validate [true] - +/// Check that arguments are valid before proceeding +/// +/// @return {bool} - +/// `True` when units do not match, and `calc()` will be required +@function _su-needs-calc-output( + $span, + $columns, + $gutters, + $spread, + $validate: true +) { + @if $validate { + $span: su-valid-span($span); + $columns: su-valid-columns($columns); + $gutters: su-valid-gutters($gutters); + } + + $has-gutter: if((length($span) > 1) or ($spread >= 0), true, false); + $check: if($has-gutter, append($span, $gutters), $span); + $safe-span: _su-is-comparable($check...); + + @if ($safe-span == 'static') { + @return false; + } @else if (not $safe-span) { + @return true; + } + + $safe-fluid: _su-is-comparable($gutters, $columns...); + + @return not $safe-fluid; +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss b/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss new file mode 100644 index 0000000000..5befad30fc --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_su-validate.scss @@ -0,0 +1,213 @@ +/// Validation +/// ========== +/// Each argument to Su has a single canonical syntax. +/// These validation functions check to ensure +/// that each argument is valid, +/// in order to provide useful errors +/// before attempting to calculate the results/ +/// +/// @group x-validation +/// +/// @see su-valid-columns +/// @see su-valid-gutters +/// @see su-valid-spread +/// @see su-valid-location + + + +// Valid Span +// ---------- +/// Check that the `span` argument +/// is a number, length, or column-list +/// +/// @group x-validation +/// +/// @param {number | list} $span - +/// Number of columns, or length of span +/// +/// @return {number | list} - +/// Validated `$span` number, length, or columns list +/// +/// @throw +/// when span value is not a number, or valid column list +@function su-valid-span( + $span +) { + $type: type-of($span); + @if ($type == 'number') { + @return $span; + } @else if ($type == 'list') and su-valid-columns($span, 'silent-failure') { + @return $span; + } + + $actual: '[#{type-of($span)}] `#{inspect($span)}`'; + @return _susy-error( + '#{$actual} is not a valid number, length, or column-list for $span.', + 'su-valid-span'); +} + + + +// Valid Columns +// ------------- +/// Check that the `columns` argument is a valid +/// list of column-lengths +/// +/// @group x-validation +/// +/// @param {list} $columns - +/// List of column-lengths +/// @param {bool} $silent-failure [true] - +/// Set false to return null on failure +/// +/// @return {list} - +/// Validated `$columns` list +/// +/// @throw +/// when column value is not a valid list of numbers +@function su-valid-columns( + $columns, + $silent-failure: false +) { + @if (type-of($columns) == 'list') { + $fail: false; + + @each $col in $columns { + @if (type-of($col) != 'number') { + $fail: true; + } + } + + @if not $fail { + @return $columns; + } + } + + // Silent Failure + @if $silent-failure { + @return null; + } + + // Error Message + $actual: '[#{type-of($columns)}] `#{inspect($columns)}`'; + + @return _susy-error( + '#{$actual} is not a valid list of numbers for $columns.', + 'su-valid-columns'); +} + + + +// Valid Gutters +// ------------- +/// Check that the `gutters` argument is a valid number +/// +/// @group x-validation +/// +/// @param {number} $gutters - +/// Width of a gutter +/// +/// @return {number} - +/// Validated `$gutters` number +/// +/// @throw +/// when gutter value is not a number +@function su-valid-gutters( + $gutters +) { + $type: type-of($gutters); + + @if ($type == 'number') { + @return $gutters; + } + + $actual: '[#{$type}] `#{inspect($gutters)}`'; + @return _susy-error( + '#{$actual} is not a number or length for $gutters.', + 'su-valid-gutters'); +} + + + +// Valid Spread +// ------------ +/// Check that the `spread` argument is a valid +/// intiger between `-1` and `1` +/// +/// @group x-validation +/// +/// @param {0 | 1 | -1} $spread - +/// Number of gutters to include in a span, +/// relative to the number columns +/// +/// @return {0 | 1 | -1} - +/// Validated `$spread` number +/// +/// @throw +/// when spread value is not a valid spread +@function su-valid-spread( + $spread +) { + @if index(0 1 -1, $spread) { + @return $spread; + } + + $actual: '[#{type-of($spread)}] `#{inspect($spread)}`'; + @return _susy-error( + '#{$actual} is not a normalized [0 | 1 | -1] value for `$spread`.', + 'su-valid-spread'); +} + + + +// Valid Location +// -------------- +/// Check that the `location` argument is a valid number, +/// within the scope of available columns +/// +/// @group x-validation +/// +/// @param {number} $span - +/// Number of grid-columns to be spanned +/// @param {integer | string} $location - +/// Starting (1-indexed) column-position of that span +/// @param {list} $columns - +/// List of available columns in the grid +/// +/// @return {integer} - +/// Validated `$location` intiger +/// +/// @throw +/// when location value is not a valid index, +/// given the context and span. +@function su-valid-location( + $span, + $location, + $columns +) { + $count: length($columns); + + @if $location { + @if (type-of($location) != 'number') or (not unitless($location)) { + $actual: '[#{type-of($location)}] `#{$location}`'; + @return _susy-error( + '#{$actual} is not a unitless number for $location.', + 'su-valid-location'); + } @else if (round($location) != $location) { + @return _susy-error( + 'Location (`#{$location}`) must be a 1-indexed intiger position.', + 'su-valid-location'); + } @else if ($location > $count) or ($location < 1) { + @return _susy-error( + 'Position `#{$location}` does not exist in grid `#{$columns}`.', + 'su-valid-location'); + } @else if ($location + $span - 1 > $count) { + $details: 'grid `#{$columns}` for span `#{$span}` at `#{$location}`'; + @return _susy-error( + 'There are not enough columns in #{$details}.', + 'su-valid-location'); + } + } + + @return $location; +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss b/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss new file mode 100644 index 0000000000..f6043eac7d --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_syntax-helpers.scss @@ -0,0 +1,191 @@ +/// Syntax Utilities for Extending Susy +/// =================================== +/// There are many steps involved +/// when translating between the Susy syntax layer, +/// and the Su core math. +/// That entire process can be condensed with these two functions. +/// For anyone that wants to access the full power of Susy, +/// and build their own plugins, functions, or mixins – +/// this is the primary API for compiling user input, +/// and accessing the core math. +/// +/// This is the same technique we use internally, +/// to keep our API layer simple and light-weight. +/// Every function accepts two arguments, +/// a "shorthand" description of the span or context, +/// and an optional settings-map to override global defaults. +/// +/// - Use `susy-compile()` to parse, merge, and normalize +/// all the user settings into a single map. +/// - Then use `su-call()` to call one of the core math functions, +/// with whatever data is needed for that function. +/// +/// @group plugin-utils +/// @see susy-compile +/// @see su-call +/// +/// @example scss - Susy API `gutter` function +/// @function susy-gutter( +/// $context: susy-get('columns'), +/// $config: () +/// ) { +/// // compile and normalize all user arguments and global settings +/// $context: susy-compile($context, $config, 'context-only'); +/// // call `su-gutter` with the appropriate data +/// @return su-call('su-gutter', $context); +/// } +/// +/// @example scss - Sample `span` mixin for floated grids +/// @mixin span( +/// $span, +/// $config: () +/// ) { +/// $context: susy-compile($span, $config); +/// width: su-call('su-span', $context); +/// +/// @if index($span, 'last') { +/// float: right; +/// } @else { +/// float: left; +/// margin-right: su-call('su-gutter', $context); +/// } +/// } + + + +// Compile +// ------- +/// Susy's syntax layer has various moving parts, +/// with syntax-parsing for the grid/span shorthand, +/// and normalization for each of the resulting values. +/// The compile function rolls this all together +/// in a single call – +/// for quick access from our internal API functions, +/// or any additional functions and mixins you add to your project. +/// Pass user input and configuration maps to the compiler, +/// and it will hand back a map of values ready for Su. +/// Combine this with the `su-call` function +/// to quickly parse, normalize, and process grid calculations. +/// +/// @group plugin-utils +/// @see su-call +/// +/// @param {list | map} $shorthand - +/// Shorthand expression to define the width of the span, +/// optionally containing: +/// - a count, length, or column-list span; +/// - `at $n`, `first`, or `last` location on asymmetrical grids; +/// - `narrow`, `wide`, or `wider` for optionally spreading +/// across adjacent gutters; +/// - `of $n ` for available grid columns +/// and spread of the container +/// (span counts like `of 6` are only valid +/// in the context of symmetrical grids); +/// - and `set-gutters $n` to override global gutter settings +/// @param {map} $config [null] - +/// Optional map of Susy grid configuration settings +/// @param {bool} $context-only [false] - +/// Allow the parser to ignore span and span-spread values, +/// only parsing context and container-spread +/// +/// @return {map} - +/// Parsed and normalized map of settings, +/// based on global and local configuration, +/// alongwith shorthad adjustments. +/// +/// @example scss - +/// $user-input: 3 wide of susy-repeat(6, 120px) set-gutters 10px; +/// $grid-data: susy-compile($user-input, $susy); +/// +/// @each $key, $value in $grid-data { +/// /* #{$key}: #{$value}, */ +/// } +@function susy-compile( + $short, + $config: null, + $context-only: false +) { + // Get and normalize config + $config: if($config, susy-settings($config), susy-settings()); + $normal-config: susy-normalize($config); + + // Parse and normalize shorthand + @if (type-of($short) != 'map') and (length($short) > 0) { + $short: susy-parse($short, $context-only); + } + + $normal-short: susy-normalize($short, $normal-config); + + // Merge and return + @return map-merge($normal-config, $normal-short); +} + + + +// Call +// ---- +/// The Susy parsing and normalization process +/// results in a map of configuration settings, +/// much like the global `$susy` settings map. +/// In order to pass that information along to Su math functions, +/// the proper values have to be picked out, +/// and converted to arguments. +/// +/// The `su-call` function streamlines that process, +/// weeding out the unnecessary data, +/// and passing the rest along to Su in the proper format. +/// Combine this with `susy-compile` to quickly parse, +/// normalize, and process grid calculations. +/// +/// @group plugin-utils +/// +/// @require su-span +/// @require su-gutter +/// @require su-slice +/// @see susy-compile +/// +/// @param {'su-span' | 'su-gutter' | 'su-slice'} $name - +/// Name of the Su math function to call. +/// @param {map} $config - +/// Parsed and normalized map of Susy configuration settings +/// to use for math-function arguments. +/// +/// @return {*} - +/// Results of the function being called. +/// +/// @example scss - +/// $user-input: 3 wide of susy-repeat(6, 120px) set-gutters 10px; +/// $grid-data: susy-compile($user-input, $susy); +/// +/// .su-span { +/// width: su-call('su-span', $grid-data); +/// } +@function su-call( + $name, + $config +) { + $grid-function-args: ( + 'su-span': ('span', 'columns', 'gutters', 'spread', 'container-spread', 'location'), + 'su-gutter': ('columns', 'gutters', 'container-spread'), + 'su-slice': ('span', 'columns', 'location'), + ); + + $args: map-get($grid-function-args, $name); + + @if not $args { + $options: 'Try one of these: #{map-keys($grid-function-args)}'; + @return _susy-error( + '#{$name} is not a public Su function. #{$options}', + 'su-call'); + } + + $call: if(function-exists('get-function'), get-function($name), $name); + $output: (); + + @each $arg in $args { + $value: map-get($config, $arg); + $output: if($value, map-merge($output, ($arg: $value)), $output); + } + + @return call($call, $output...); +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss b/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss new file mode 100644 index 0000000000..2cfd1b81a9 --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_unprefix.scss @@ -0,0 +1,56 @@ +// Unprefix Susy +// ============= + + +// Span +// ---- +/// Un-prefixed alias for `susy-span` +/// (available by default) +/// +/// @group api +/// @alias susy-span +/// +/// @param {list} $span +/// @param {map} $config [()] +@function span( + $span, + $config: () +) { + @return susy-span($span, $config); +} + + +// Gutter +// ------ +/// Un-prefixed alias for `susy-gutter` +/// (available by default) +/// +/// @group api +/// @alias susy-gutter +/// +/// @param {integer | list} $context [null] - +/// @param {map} $config [()] +@function gutter( + $context: susy-get('columns'), + $config: () +) { + @return susy-gutter($context, $config); +} + + +// Slice +// ----- +/// Un-prefixed alias for `susy-slice` +/// (available by default) +/// +/// @group api +/// @alias susy-slice +/// +/// @param {list} $span +/// @param {map} $config [()] +@function slice( + $span, + $config: () +) { + @return susy-slice($span, $config); +} diff --git a/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss b/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss new file mode 100644 index 0000000000..3c62de2d5a --- /dev/null +++ b/_sass/minimal-mistakes/vendor/susy/susy/_utilities.scss @@ -0,0 +1,167 @@ +// Sass Utilities +// ============== +// - Susy Error Output Override [variable] +// - Susy Error [function] + + + +// Susy Error Output Override +// -------------------------- +/// Turn off error output for testing +/// @group x-utility +/// @access private +$_susy-error-output-override: false !default; + + + +// Susy Error +// ---------- +/// Optionally return error messages without failing, +/// as a way to test error cases +/// +/// @group x-utility +/// @access private +/// +/// @param {string} $message - +/// A useful error message, explaining the problem +/// @param {string} $source - +/// The original source of the error for debugging +/// @param {bool} $override [$_susy-error-output-override] - +/// Optionally return the error rather than failing +/// @return {string} - +/// Combined error with source and message +/// @throws When `$override == true` +@function _susy-error( + $message, + $source, + $override: $_susy-error-output-override +) { + @if $override { + @return 'ERROR [#{$source}] #{$message}'; + } + + @error '[#{$source}] #{$message}'; +} + + +// Su Is Comparable +// ---------------- +/// Check that the units in a grid are comparable +/// +/// @group x-validation +/// @access private +/// +/// @param {numbers} $lengths… - +/// Arglist of all the number values to compare +/// (columns, gutters, span, etc) +/// +/// @return {'fluid' | 'static' | false} - +/// The type of span (fluid or static) when units match, +/// or `false` for mismatched units +@function _su-is-comparable( + $lengths... +) { + $first: nth($lengths, 1); + + @if (length($lengths) == 1) { + @return if(unitless($first), 'fluid', 'static'); + } + + @for $i from 2 through length($lengths) { + $comp: nth($lengths, $i); + + $fail: not comparable($first, $comp); + $fail: $fail or (unitless($first) and not unitless($comp)); + $fail: $fail or (unitless($comp) and not unitless($first)); + + @if $fail { + @return false; + } + } + + @return if(unitless($first), 'fluid', 'static'); +} + + +// Su Map Add Units +// ---------------- +/// The calc features use a map of units and values +/// to compile the proper algorythm. +/// This function adds a new value to any comparable existing unit/value, +/// or adds a new unit/value pair to the map +/// +/// @group x-utility +/// @access private +/// +/// @param {map} $map - +/// A map of unit/value pairs, e.g. ('px': 120px) +/// @param {length} $value - +/// A new length to be added to the map +/// @return {map} - +/// The updated map, with new value added +/// +/// @example scss - +/// $map: (0px: 120px); +/// $map: _su-map-add-units($map, 1in); // add a comparable unit +/// $map: _su-map-add-units($map, 3vw); // add a new unit +/// +/// @each $units, $value in $map { +/// /* #{$units}: #{$value} */ +/// } +@function _su-map-add-units( + $map, + $value +) { + $unit: $value * 0; + $has: map-get($map, $unit) or 0; + + @if ($has == 0) { + @each $try, $could in $map { + $match: comparable($try, $value); + $unit: if($match, $try, $unit); + $has: if($match, $could, $has); + } + } + + @return map-merge($map, ($unit: $has + $value)); +} + + +// Susy Flatten +// ------------ +/// Flatten a multidimensional list +/// +/// @group x-utility +/// @access private +/// +/// @param {list} $list - +/// The list to be flattened +/// @return {list} - +/// The flattened list +/// +/// @example scss - +/// $list: 120px (30em 30em) 120px; +/// /* #{_susy-flatten($list)} */ +@function _susy-flatten( + $list +) { + $flat: (); + + // Don't iterate over maps + @if (type-of($list) == 'map') { + @return $list; + } + + // Iterate over lists (or single items) + @each $item in $list { + @if (type-of($item) == 'list') { + $item: _susy-flatten($item); + $flat: join($flat, $item); + } @else { + $flat: append($flat, $item); + } + } + + // Return flattened list + @return $flat; +} diff --git a/_sass/vendor/susy/_susy.scss b/_sass/vendor/susy/_susy.scss deleted file mode 100644 index 224e98ad2b..0000000000 --- a/_sass/vendor/susy/_susy.scss +++ /dev/null @@ -1,4 +0,0 @@ -// Susy -// ==== - -@import 'susy/language/susy'; diff --git a/_sass/vendor/susy/_susyone.scss b/_sass/vendor/susy/_susyone.scss deleted file mode 100644 index 5b934c6886..0000000000 --- a/_sass/vendor/susy/_susyone.scss +++ /dev/null @@ -1,4 +0,0 @@ -// Susy -// ==== - -@import 'susy/language/susyone'; diff --git a/_sass/vendor/susy/susy/_su.scss b/_sass/vendor/susy/susy/_su.scss deleted file mode 100644 index a145415749..0000000000 --- a/_sass/vendor/susy/susy/_su.scss +++ /dev/null @@ -1,7 +0,0 @@ -// Su -// == - -@import "su/utilities"; -@import "su/settings"; -@import "su/validation"; -@import "su/grid"; diff --git a/_sass/vendor/susy/susy/language/_susy.scss b/_sass/vendor/susy/susy/language/_susy.scss deleted file mode 100644 index 0ee9cae2b3..0000000000 --- a/_sass/vendor/susy/susy/language/_susy.scss +++ /dev/null @@ -1,24 +0,0 @@ -// Susy Next Syntax -// ================ - -$susy-version: 2.1; - -@import "../su"; -@import "../output/float"; - -@import "susy/settings"; -@import "susy/validation"; -@import "susy/grids"; -@import "susy/box-sizing"; -@import "susy/context"; -@import "susy/background"; -@import "susy/container"; -@import "susy/span"; -@import "susy/gutters"; -@import "susy/isolate"; -@import "susy/gallery"; -@import "susy/rows"; -@import "susy/margins"; -@import "susy/padding"; -@import "susy/bleed"; -@import "susy/breakpoint-plugin"; diff --git a/_sass/vendor/susy/susy/language/_susyone.scss b/_sass/vendor/susy/susy/language/_susyone.scss deleted file mode 100644 index a783d3a82a..0000000000 --- a/_sass/vendor/susy/susy/language/_susyone.scss +++ /dev/null @@ -1,13 +0,0 @@ -// --------------------------------------------------------------------------- -// Partials - -$susy-version: 1.5; - -@import "susyone/settings"; -@import "susyone/functions"; -@import "susyone/grid"; -@import "susyone/isolation"; -@import "susyone/padding"; -@import "susyone/margin"; -@import "susyone/media"; -@import "susyone/background"; diff --git a/_sass/vendor/susy/susy/language/susy/_background.scss b/_sass/vendor/susy/susy/language/susy/_background.scss deleted file mode 100644 index d39dc7218c..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_background.scss +++ /dev/null @@ -1,385 +0,0 @@ -// Background Grid Syntax -// ====================== - -$susy-overlay-grid-head-exists: false; - - -// Show Grid/s -// ----------- -// Show grid on any element using either background or overlay. -// - [$grid] : -@mixin show-grid( - $grid: $susy -) { - $inspect: $grid; - $_output: debug-get(output, $grid); - - @include susy-inspect(show-grid, $inspect); - @if $_output == overlay and susy-get(debug image, $grid) != hide { - @include overlay-grid($grid); - } @else { - @include background-grid($grid); - } -} - -@mixin show-grids( - $grid: $susy -) { - @include show-grid($grid); -} - -// Background Grid -// --------------- -// Show a grid background on any element. -// - [$grid] : -@mixin background-grid( - $grid: $susy -) { - $inspect : $grid; - $_output : get-background($grid); - - @if length($_output) > 0 { - $_flow: susy-get(flow, $grid); - - $_image: (); - @each $name, $layer in map-get($_output, image) { - $_direction: if($name == baseline, to bottom, to to($_flow)); - $_image: append($_image, linear-gradient($_direction, $layer), comma); - } - $_output: map-merge($_output, (image: $_image)); - - @include background-grid-output($_output...); - @include susy-inspect(background-grid, $inspect); - } -} - - -// Overlay Grid -// ------------ -// Generate an icon to trigger grid-overlays on any given elements. -// $grids... : [] [, ]* -@mixin overlay-grid ( - $grid: $susy -) { - @if not($susy-overlay-grid-head-exists) { - @at-root head { @include overlay-head($grid); } - @at-root head:before { @include overlay-trigger; } - @at-root head:hover { @include overlay-trigger-hover; } - $susy-overlay-grid-head-exists: true !global; - } - - head:hover ~ &, - head:hover ~ body & { - position: relative; - &:before { - @include grid-overlay-base; - @include background-grid($grid); - } - } -} - - -// [Private] Overlay Trigger -// ------------------------- -@mixin overlay-trigger { - content: "|||"; - display: block; - padding: 5px 10px; - font: { - family: sans-serif; - size: 16px; - weight: bold; - } -} - - -// [Private] Overlay Trigger Hover -// ------------------------------- -@mixin overlay-trigger-hover { - background: rgba(white, .5); - color: red; -} - - -// [Private] Overlay Head -// ---------------------- -// styles to create grid overlay toggle -@mixin overlay-head ( - $grid: $susy -) { - $_toggle: debug-get(toggle, $grid); - $_horz: null; - $_vert: null; - - @each $side in $_toggle { - $_horz: if($side == left or $side == right, $side, $_horz); - $_vert: if($side == top or $side == bottom, $side, $_vert); - } - - display: block; - position: fixed; - #{$_horz}: 10px; - #{$_vert}: 10px; - z-index: 999; - color: #333; - background: rgba(white, .25); -} - - -// [Private] Grid Overlay Base -// --------------------------- -// Base styles for generating a grid overlay -@mixin grid-overlay-base() { - position: absolute; - top: 0; - left: 0; - bottom: 0; - right: 0; - content: " "; - z-index: 998; -} - - -// Get Symmetrical Background -// -------------------------- -// - $grid: -@function get-background-sym( - $grid -) { - $grid : parse-grid($grid); - $_gutters : susy-get(gutters, $grid); - $_column-width : susy-get(column-width, $grid); - $_math : susy-get(math, $grid); - - $_color : debug-get(color); - $_trans : transparent; - $_light : lighten($_color, 15%); - - $_end : 1 + $_gutters; - $_after : percentage(1/$_end); - $_stops : (); - $_size : span(1 $grid wide); - - @if is-inside($grid) { - $_stops: $_color, $_light; - } @else if is-split($grid) { - $_split: $_gutters/2; - $_before: percentage($_split/$_end); - $_after: percentage((1 + $_split)/$_end); - $_stops: $_trans $_before, $_color $_before, $_light $_after, $_trans $_after; - } @else { - $_stops: $_color, $_light $_after, $_trans $_after; - } - - @if $_math == static { - $_size: valid-column-math($_math, $_column-width) * $_end; - } - - $_output: ( - image: (columns: $_stops), - size: $_size, - ); - - @return $_output; -} - - -// Get Asymmetrical Inside -// ----------------------- -// - $grid: -@function get-asym-inside( - $grid -) { - $grid : parse-grid($grid); - $_columns : susy-get(columns, $grid); - - $_color : debug-get(color); - $_light : lighten($_color, 15%); - $_stops : (); - - @for $location from 1 through susy-count($_columns) { - $this-stop: (); - - @if $location == 1 { - $this-stop: append($this-stop, $_color, comma); - } @else { - $start: parse-span(1 at $location $grid); - $start: get-isolation($start); - $this-stop: append($this-stop, $_color $start, comma); - } - - @if $location == susy-count($_columns) { - $this-stop: append($this-stop, $_light, comma); - } @else { - $_end: parse-span(1 at ($location + 1) $grid); - $_end: get-isolation($_end); - $this-stop: append($this-stop, $_light $_end, comma); - } - - $_stops: join($_stops, $this-stop, comma); - } - - @return $_stops; -} - - -// Get Asymmetrical Split -// ---------------------- -// - $grid: -@function get-asym-split( - $grid -) { - $grid : parse-grid($grid); - $_columns : susy-get(columns, $grid); - - $_color : debug-get(color); - $_light : lighten($_color, 15%); - $_stops : (); - - @for $location from 1 through susy-count($_columns) { - $this-stop: (); - - $start: parse-span(1 at $location $grid); - $start: get-isolation($start); - $this-stop: append($this-stop, transparent $start, comma); - $this-stop: append($this-stop, $_color $start, comma); - - $_end: $start + span(1 at $location $grid); - $this-stop: append($this-stop, $_light $_end, comma); - $this-stop: append($this-stop, transparent $_end, comma); - - $_stops: join($_stops, $this-stop, comma); - } - - @return $_stops; -} - - -// Get Asymmetrical Outside -// ------------------------ -// - $grid: -@function get-asym-outside( - $grid -) { - $grid : parse-grid($grid); - $_columns : susy-get(columns, $grid); - - $_color : debug-get(color); - $_light : lighten($_color, 15%); - $_trans : transparent; - $_stops : (); - - @for $location from 1 through susy-count($_columns) { - $this-stop: (); - - @if $location == 1 { - $this-stop: append($this-stop, $_color, comma); - } @else { - $start: parse-span(1 at $location $grid); - $start: get-isolation($start); - $this-stop: append($this-stop, $_color $start, comma); - } - - @if $location == susy-count($_columns) { - $this-stop: append($this-stop, $_light, comma); - } @else { - $gutter: get-span-width(first $location $grid); - - $_end: parse-span(1 at ($location + 1) $grid); - $_end: get-isolation($_end); - - $gutter: $_light $gutter, $_trans $gutter, $_trans $_end; - $this-stop: join($this-stop, $gutter, comma); - } - - $_stops: join($_stops, $this-stop, comma); - } - - @return $_stops; -} - - -// Get Asymmetrical Background -// --------------------------- -// - $grid: -@function get-background-asym( - $grid -) { - $_stops: (); - - @if is-inside($grid) { - $_stops: get-asym-inside($grid); - } @else if is-split($grid) { - $_stops: get-asym-split($grid); - } @else { - $_stops: get-asym-outside($grid); - } - - @return (image: (columns: $_stops)); -} - - -// Get Background -// -------------- -// - $grid: -@function get-background( - $grid -) { - $grid : parse-grid($grid); - $_show : susy-get(debug image, $grid); - $_return : (); - - @if $_show and $_show != 'hide' { - $_columns: susy-get(columns, $grid); - - @if $_show != 'show-baseline' { - $_sym: is-symmetrical($_columns); - $_return: if($_sym, get-background-sym($grid), get-background-asym($grid)); - $_return: map-merge($_return, (clip: content-box)); - } - - @if $_show != 'show-columns' - and global-variable-exists(base-line-height) - and type-of($base-line-height) == 'number' - and not unitless($base-line-height) { - $_color: variable-exists('grid-background-baseline-color'); - $_color: if($_color, $grid-background-baseline-color, #000); - - $_image: map-get($_return, image); - $_size: map-get($_return, size); - $_baseline: (baseline: ($_color 1px, transparent 1px)); - $_baseline-size: 100% $base-line-height; - - $_return: map-merge($_return, ( - image: if($_image, map-merge($_image, $_baseline), $_baseline), - size: if($_size, ($_size, $_baseline-size), $_baseline-size), - )); - - @if $_show == 'show' { - $_clip: map-get($_return, clip); - $_return: map-merge($_return, (clip: join($_clip, border-box, comma))); - } - } @else if $_show == 'show-baseline' { - @warn 'Please provide a $base-line-height with the desired height and units'; - } - } - - @if map-get($_return, image) { - $_return: map-merge($_return, (flow: susy-get(flow, $grid))); - } - - @return $_return; -} - - -// Get Debug -// --------- -// Return the value of a debug setting -// - $key: -@function debug-get( - $key, - $grid: $susy -) { - $key: join(debug, $key, space); - @return susy-get($key, $grid); -} diff --git a/_sass/vendor/susy/susy/language/susy/_bleed.scss b/_sass/vendor/susy/susy/language/susy/_bleed.scss deleted file mode 100644 index 8ef5974322..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_bleed.scss +++ /dev/null @@ -1,200 +0,0 @@ -// Bleed Syntax -// ============ - -// Bleed -// ----- -// Add negative margins, and equal positive padding to create bleed. -// - $bleed : -@mixin bleed( - $bleed: 0 gutter() -) { - $inspect : $bleed; - $output : get-bleed($bleed); - - @if susy-get(global-box-sizing) != content-box { - $output: map-merge((box-sizing: content-box), $output); - } - - @include susy-inspect(bleed, $inspect); - @include output($output); -} - - -// Bleed-x -// ------- -// Shortcut for horizontal bleed. -// - $bleed : -@mixin bleed-x( - $bleed: gutter() -) { - $bleed : parse-span($bleed); - $trbl : susy-get(span, $bleed); - - @if length($trbl) == 1 { - $bleed: map-merge($bleed, (span: 0 nth($trbl, 1))); - } @else if length($trbl) == 2 { - $bleed: map-merge($bleed, (span: 0 nth($trbl, 2) 0 nth($trbl, 1))); - } @else { - @warn 'bleed-x only takes 2 lengths, but #{length($trbl)} were passed.'; - } - - @include bleed($bleed); -} - - -// Bleed-y -// ------- -// Shortcut for vertical bleed. -// - $bleed : -@mixin bleed-y( - $bleed: if(function-exists(rhythm), rhythm(1), 1em) -) { - $bleed : parse-span($bleed); - $trbl : susy-get(span, $bleed); - - @if length($trbl) == 1 { - $bleed: map-merge($bleed, (span: nth($trbl, 1) 0)); - } @else if length($trbl) == 2 { - $bleed: map-merge($bleed, (span: nth($trbl, 1) 0 nth($trbl, 2) 0)); - } @else { - @warn 'bleed-y only takes 2 lengths, but #{length($trbl)} were passed.'; - } - - @include bleed($bleed); -} - - -// Get Bleed -// --------- -// Return bleed output values -// - $bleed: -@function get-bleed( - $bleed -) { - $bleed : map-merge((spread: wide), parse-span($bleed)); - $trbl : susy-get(span, $bleed); - $short : null; - $output : (); - - @for $i from 1 through length($trbl) { - $this: nth($trbl, $i); - $new: (); - $margin: null; - $padding: null; - $padding-x: null; - - @if $this > 0 { - $this: map-merge($bleed, (span: $this)); - $margin: span($this); - $padding: $margin; - $padding-x: $padding; - } - - @if $margin and $margin > 0 { - $margin: - $margin; - - @if is-inside($this) { - $gutter: gutter($this); - $join: if($gutter and comparable($padding, $gutter), true, false); - $padding-x: if($join and $padding > 0, $padding + $gutter, $padding); - } - } - - @if $i == 1 { - $new: ( - margin-top: $margin, - padding-top: $padding, - margin-right: $margin, - padding-right: $padding-x, - margin-bottom: $margin, - padding-bottom: $padding, - margin-left: $margin, - padding-left: $padding-x, - ); - } @else if $i == 2 { - $new: ( - margin-right: $margin, - padding-right: $padding-x, - margin-left: $margin, - padding-left: $padding-x, - ); - } @else if $i == 3 { - $new: ( - margin-bottom: $margin, - padding-bottom: $padding, - ); - } @else if $i == 4 { - $new: ( - margin-left: $margin, - padding-left: $padding-x, - ); - } - - $output: map-merge($output, $new); - } - - @each $prop, $value in $output { - $output: if($value == 0, map-merge($output, ($prop: null)), $output); - } - - @return bleed-shorthand($output); -} - -// Bleed Shorthand -// --------------- -// Convert bleed output into shorthand when possible. -// - $bleed: -@function bleed-shorthand( - $bleed -) { - $margin: (); - $padding: (); - $return: (); - - @each $key, $value in $bleed { - @if str-index($key, margin) { - $margin: map-merge($margin, ($key: $value)); - } @else if str-index($key, padding) > 0 { - $padding: map-merge($padding, ($key: $value)); - } - } - - $props: ( - margin: $margin, - padding: $padding, - ); - - @each $name, $map in $props { - $four: if(length(map-keys($map)) == 4, true, false); - $null: if(index(map-values($map), null), true, false); - - @if $four and not($null) { - $top: map-get($map, '#{$name}-top'); - $right: map-get($map, '#{$name}-right'); - $bottom: map-get($map, '#{$name}-bottom'); - $left: map-get($map, '#{$name}-left'); - - $tb: if($top == $bottom, $top, null); - $rl: if($right == $left, $right, null); - $all: if($tb == $rl, $tb, null); - - $new: if($all, $all, null); - - @if not($new) { - @if $tb and $rl { - $new: $tb $rl; - } @else if $rl { - $new: $top $rl $bottom; - } @else { - $new: $top $right $bottom $left; - } - } - - $return: map-merge($return, ($name: $new)); - } @else { - $return: map-merge($return, $map); - } - } - - @return $return; -} diff --git a/_sass/vendor/susy/susy/language/susy/_box-sizing.scss b/_sass/vendor/susy/susy/language/susy/_box-sizing.scss deleted file mode 100644 index f551241de8..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_box-sizing.scss +++ /dev/null @@ -1,47 +0,0 @@ -// Susy Box Sizing -// ================= - -// Global Box Sizing -// ----------------- -// Set a box model globally on all elements. -// - [$box]: border-box | content-box -// - [$inherit]: true | false -@mixin global-box-sizing( - $box: susy-get(global-box-sizing), - $inherit: false -) { - $inspect: $box; - - @if $inherit { - @at-root { - html { @include output((box-sizing: $box)); } - *, *:before, *:after { box-sizing: inherit; } - } - } @else { - *, *:before, *:after { @include output((box-sizing: $box)); } - } - - @include susy-inspect(global-box-sizing, $inspect); - @include update-box-model($box); -} - -// Border Box Sizing -// ----------------- -// A legacy shortcut... -// - [$inherit]: true | false -@mixin border-box-sizing( - $inherit: false -) { - @include global-box-sizing(border-box, $inherit); -} - -// Update Box Model -// ---------------- -// PRIVATE: Updates global box model setting -@mixin update-box-model( - $box -) { - @if $box != susy-get(global-box-sizing) { - @include susy-set(global-box-sizing, $box); - } -} diff --git a/_sass/vendor/susy/susy/language/susy/_breakpoint-plugin.scss b/_sass/vendor/susy/susy/language/susy/_breakpoint-plugin.scss deleted file mode 100644 index 30de288bf7..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_breakpoint-plugin.scss +++ /dev/null @@ -1,185 +0,0 @@ -// Breakpoint Integration -// ====================== - -$susy-media: () !default; -$susy-media-fallback: false !default; - -$_susy-media-context: (); - - -// Susy Breakpoint -// --------------- -// Change grids at different media query breakpoints. -// - $query : [] | | -// - $layout : -// - $no-query : | -@mixin susy-breakpoint( - $query, - $layout: false, - $no-query: $susy-media-fallback -) { - @include susy-media-router($query, $no-query) { - @if $layout { - @include with-layout($layout) { - @content; - } - } @else { - @content; - } - } -} - - -// Susy Media -// ---------- -// - $query: [] | -// - $no-query: | -@mixin susy-media( - $query, - $no-query: $susy-media-fallback -) { - $old-context: $_susy-media-context; - $name: if(map-has-key($susy-media, $query), $query, null); - $query: susy-get-media($query); - $query: susy-parse-media($query); - - @include susy-media-context($query, $name); - - @if $no-query and type-of($no-query) != string { - @content; - } @else { - @media #{susy-render-media($query)} { - @content; - } - - @if type-of($no-query) == string { - #{$no-query} & { - @content; - } - } - } - - @include susy-media-context($old-context, $clean: true); -} - - -// Media Router -// ------------ -// Rout media arguments to the correct mixin. -@mixin susy-media-router( - $query, - $no-query: $susy-media-fallback -) { - @if susy-support(breakpoint, (mixin: breakpoint), $warn: false) { - @include breakpoint($query, $no-query) { - @content; - } - } @else { - @include susy-media($query, $no-query) { - @content; - } - } -} - - -// Update Context -// ------------- -// Set the new media context -@mixin susy-media-context( - $query, - $name: null, - $clean: false -) { - $query: map-merge((name: $name), $query); - - @if $clean { - $_susy-media-context: $query !global; - } @else { - $_susy-media-context: map-merge($_susy-media-context, $query) !global; - } -} - - -// Media Context -// ------------- -// Return the full media context, or a single media property (e.g. min-width) -@function susy-media-context( - $property: false -) { - @if $property { - @return map-get($_susy-media-context, $property); - } @else { - @return $_susy-media-context; - } -} - - -// Get Media -// --------- -// Return a named media-query from $susy-media. -// - $name: -@function susy-get-media( - $name -) { - @if map-has-key($susy-media, $name) { - $map-value: map-get($susy-media, $name); - @if ($name == $map-value) { - $name: $map-value; - } @else { - $name: susy-get-media($map-value); - } - } - - @return $name; -} - - -// Render Media -// ------------ -// Build a media-query string from various media settings -@function susy-render-media( - $query -) { - $output: null; - @each $property, $value in $query { - $string: null; - - @if $property == media { - $string: $value; - } @else { - $string: '(#{$property}: #{$value})'; - } - - $output: if($output, '#{$output} and #{$string}', $string); - } - - @return $output; -} - - -// Parse Media -// ----------- -// Return parsed media-query settings based on shorthand -@function susy-parse-media( - $query -) { - $mq: null; - @if type-of($query) == map { - $mq: $query; - } @else if type-of($query) == number { - $mq: (min-width: $query); - } @else if type-of($query) == list and length($query) == 2 { - @if type-of(nth($query, 1)) == number { - $mq: ( - min-width: min($query...), - max-width: max($query...), - ); - } @else { - $mq: (nth($query, 1): nth($query, 2)); - } - } @else { - $mq: (media: '#{$query}'); - } - - @return $mq; -} diff --git a/_sass/vendor/susy/susy/language/susy/_container.scss b/_sass/vendor/susy/susy/language/susy/_container.scss deleted file mode 100644 index e5f4a858a6..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_container.scss +++ /dev/null @@ -1,81 +0,0 @@ -// Container Syntax -// ================ - -// Container [mixin] -// ----------------- -// Set a container element -// - [$layout] : -@mixin container( - $layout: $susy -) { - $inspect : $layout; - $layout : parse-grid($layout); - - $_width : get-container-width($layout); - $_justify : parse-container-position(susy-get(container-position, $layout)); - $_property : if(susy-get(math, $layout) == static, width, max-width); - - $_box : susy-get(box-sizing, $layout); - - @if $_box { - @include output((box-sizing: $_box)); - } - - @include susy-inspect(container, $inspect); - @include float-container($_width, $_justify, $_property); - @include show-grid($layout); -} - -// Container [function] -// -------------------- -// Return container width -// - [$layout] : -@function container( - $layout: $susy -) { - $layout: parse-grid($layout); - @return get-container-width($layout); -} - -// Get Container Width -// ------------------- -// Calculate the container width -// - [$layout]: -@function get-container-width( - $layout: $susy -) { - $layout : parse-grid($layout); - $_width : susy-get(container, $layout); - $_column-width : susy-get(column-width, $layout); - $_math : susy-get(math, $layout); - - @if not($_width) or $_width == auto { - @if valid-column-math($_math, $_column-width) { - $_columns : susy-get(columns, $layout); - $_gutters : susy-get(gutters, $layout); - $_spread : if(is-split($layout), wide, narrow); - $_width : susy-sum($_columns, $_gutters, $_spread) * $_column-width; - } @else { - $_width: 100%; - } - } - - @return $_width; -} - -// Parse Container Position -// ------------------------ -// Parse the $container-position into margin values. -// - [$justify] : left | center | right | [] -@function parse-container-position( - $justify: map-get($susy-defaults, container-position) -) { - $_return: if($justify == left, 0, auto) if($justify == right, 0, auto); - - @if not(index(left right center, $justify)) { - $_return: nth($justify, 1); - $_return: $_return if(length($justify) > 1, nth($justify, 2), $_return); - } - - @return $_return; -} diff --git a/_sass/vendor/susy/susy/language/susy/_context.scss b/_sass/vendor/susy/susy/language/susy/_context.scss deleted file mode 100644 index 52e12a6ce1..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_context.scss +++ /dev/null @@ -1,36 +0,0 @@ -// Context Syntax -// ============== - -// Nested [function] -// ----------------- -// Return a subset grid for nested context. -// - $context : -@function nested( - $context -) { - $context : parse-span($context); - $span : susy-get(span, $context); - $location : get-location($context); - $columns : susy-get(columns, $context); - - @return susy-slice($span, $location, $columns); -} - -// Nested [mixin] -// -------------- -// Use a subset grid for a nested context -// - $context : -// - @content : -@mixin nested( - $context -) { - $inspect : $context; - $context : parse-span($context); - $old : susy-get(columns); - $susy : map-merge($susy, (columns: nested($context))) !global; - - @include susy-inspect(nested, $inspect); - @content; - - $susy : map-merge($susy, (columns: $old)) !global; -} diff --git a/_sass/vendor/susy/susy/language/susy/_gallery.scss b/_sass/vendor/susy/susy/language/susy/_gallery.scss deleted file mode 100644 index e59b9a0c67..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_gallery.scss +++ /dev/null @@ -1,94 +0,0 @@ -// Gallery Syntax -// ============== - -// Gallery -// ------- -// Create an isolated gallery -// - $span : -// - [$selector] : child | of-type -@mixin gallery( - $span, - $selector: child -) { - $inspect : $span; - $span : parse-span($span); - $span : map-merge($span, (location: 1)); - - $n : susy-get(span, $span); - $columns : susy-get(columns, $span); - $context : susy-count($columns); - $flow : susy-get(flow, $span); - - $inside : is-inside($span); - $from : from($flow); - $line : floor($context / $n); - $symmetrical : is-symmetrical($columns); - - $output: ( - width : null, - float : from, - margin-before : null, - margin-after : null, - padding-before : null, - padding-after : null, - flow : $flow, - ); - - @if $inside { - $gutters: get-gutters($span); - $output: map-merge($output, ( - padding-before: map-get($gutters, before), - padding-after: map-get($gutters, after), - )); - } - - @if $symmetrical { - $output: map-merge($output, (width: get-span-width($span))); - } - - $box : susy-get(box-sizing, $span); - $global-box : if(susy-get(global-box-sizing) == 'border-box', true, false); - - @include susy-inspect(gallery, $inspect); - - // Collective Output - @if $box == border-box or ($inside and not($box) and not($global-box)) { - @include output((box-sizing: border-box)); - } @else if $box == content-box { - @include output((box-sizing: content-box)); - } - - @include float-span-output($output...); - - // Individual Loop - @for $item from 1 through $line { - $nth: '#{$line}n + #{$item}'; - &:nth-#{$selector}(#{$nth}) { - // Individual Prep - $output: ( - width : if($symmetrical, null, get-span-width($span)), - float : null, - margin-before : get-isolation($span), - margin-after : -100%, - padding-before : null, - padding-after : null, - flow : $flow, - ); - - // Individual Output - @include float-span-output($output...); - - @if get-edge($span) == first { - @include break; - @include first($span); - } @else { - @include nobreak; - } - - // Individual Location Increment - $location: get-location($span) + $n; - $location: if($location > $context, 1, $location); - $span: map-merge($span, (location: $location)); - } - } -} diff --git a/_sass/vendor/susy/susy/language/susy/_grids.scss b/_sass/vendor/susy/susy/language/susy/_grids.scss deleted file mode 100644 index 4fa72edc5d..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_grids.scss +++ /dev/null @@ -1,64 +0,0 @@ -// Grid Syntax -// =========== - - -// Layout -// ------ -// Set a new layout using a shorthand -// - $layout: -// - $clean: boolean -@mixin layout( - $layout, - $clean: false -) { - $inspect : $layout; - $susy : _get-layout($layout, $clean) !global; - - @include susy-inspect(layout, $inspect); -} - - -// Use Grid -// -------- -// Use an arbitrary layout for a section of code -// - $layout: -// - $clean: boolean -@mixin with-layout( - $layout, - $clean: false -) { - $inspect : $layout; - $old : $susy; - $susy : _get-layout($layout, $clean) !global; - - @include susy-inspect(with-layout, $inspect); - - @content; - - $susy: $old !global; -} - - -// Layout -// ------ -// Return a parsed layout map based on shorthand syntax -// - $layout: -@function layout( - $layout: $susy -) { - @return parse-grid($layout); -} - - -// Get Layout -// ---------- -// Return a new layout based on current and given settings -// - $layout: -// - $clean: boolean -@function _get-layout( - $layout, - $clean: false -) { - $layout: layout($layout); - @return if($clean, $layout, _susy-deep-merge($susy, $layout)); -} diff --git a/_sass/vendor/susy/susy/language/susy/_gutters.scss b/_sass/vendor/susy/susy/language/susy/_gutters.scss deleted file mode 100644 index efe7ac2097..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_gutters.scss +++ /dev/null @@ -1,154 +0,0 @@ -// Gutter Syntax -// ============= - - -// Gutters -// ------- -// Set gutters on an element. -// - [$span] : -@mixin gutters( - $span: $susy -) { - $inspect : $span; - $span : parse-gutters($span); - $_gutters : get-gutters($span); - - $_output: ( - before: map-get($_gutters, before), - after: map-get($_gutters, after), - flow: susy-get(flow, $span), - ); - - @include susy-inspect(gutters, $inspect); - - @if is-inside($span) { - @include padding-output($_output...); - } @else { - @include margin-output($_output...); - } -} - -@mixin gutter( - $span: $susy -) { - @include gutters($span); -} - - -// Gutter -// ------ -// Return the width of a gutter. -// - [$span] : -@function gutter( - $span: $susy -) { - $span: parse-gutters($span); - - $_gutters: get-gutters($span); - $_gutters: map-get($_gutters, before) or map-get($_gutters, after); - - @return $_gutters; -} - -@function gutters( - $span: $susy -) { - @return gutter($span); -} - - -// Get Gutter Width -// ---------------- -// Return gutter width. -// - [$context]: -@function get-gutter-width( - $context: $susy -) { - $context : parse-gutters($context); - - $_gutters : susy-get(gutters, $context); - $_gutter : susy-get(gutter-override, $context); - - @if $_gutters and ($_gutters > 0) and not($_gutter) { - $_column-width: susy-get(column-width, $context); - $_math: gutter-math($context); - @if $_math == static { - $_gutter: $_gutters * valid-column-math($_math, $_column-width); - } @else { - $_columns : susy-get(columns, $context); - $_spread : if(is-split($context), wide, susy-get(spread, $context)); - $_gutter : percentage($_gutters / susy-sum($_columns, $_gutters, $_spread)); - } - } - - $_gutter: if($_gutter == 'no-gutters' or $_gutter == 'no-gutter', null, $_gutter); - - @return $_gutter; -} - - -// Get Gutters -// ----------- -// Return before and after gutter values. -// - [$context]: -@function get-gutters( - $context: $susy -) { - $context : parse-gutters($context); - - $_gutter-position : susy-get(gutter-position, $context); - $_gutter : get-gutter-width($context); - - $_return : (before: null, after: null); - - @if is-split($context) and $_gutter { - $_gutter: $_gutter / 2; - $_return: map-merge($_return, (before: $_gutter, after: $_gutter)); - } @else { - $_return: map-merge($_return, ($_gutter-position: $_gutter)); - } - - @return $_return; -} - - -// Is Inside -// --------- -// Returns true if gutters are inside. -// $context: -@function is-inside( - $context -) { - $_inside: inside inside-static; - $_gutter-position: susy-get(gutter-position, $context); - - @return if(index($_inside, $_gutter-position), true, false); -} - - -// Is Split -// -------- -// Returns true if gutters are split. -// $context: -@function is-split( - $context -) { - $_split: split inside inside-static; - $_gutter-position: susy-get(gutter-position, $context); - - @return if(index($_split, $_gutter-position), true, false); -} - - -// Gutter Math -// ----------- -// Return the math to use for gutter calculations -// $context: -@function gutter-math( - $context: $susy -) { - $_return : susy-get(math, $context); - $_return : if(susy-get(gutter-position, $context) == inside-static, static, $_return); - - @return $_return; -} diff --git a/_sass/vendor/susy/susy/language/susy/_isolate.scss b/_sass/vendor/susy/susy/language/susy/_isolate.scss deleted file mode 100644 index 7ddfd7f573..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_isolate.scss +++ /dev/null @@ -1,77 +0,0 @@ -// Isolation Syntax -// ================ - - -// Isolate [Mixin] -// --------------- -// Set isolation as an override. -// - $location: -@mixin isolate( - $isolate: 1 -) { - $inspect: $isolate; - - $output: ( - push: isolate($isolate), - flow: susy-get(flow, $isolate), - ); - - @include susy-inspect(isolate, $inspect); - @include isolate-output($output...); -} - - -// Isolate [function] -// ------------------ -// Return an isolation offset width. -// - $location: -@function isolate( - $isolate: 1 -) { - $isolate: parse-span($isolate); - $isolation: susy-get(span, $isolate); - - @if $isolation and not(get-location($isolate)) { - $new: ( - span: null, - location: $isolation, - ); - $isolate: map-merge($isolate, $new); - } - - @return get-isolation($isolate); -} - - -// Get Isolation -// ------------- -// Return the isolation offset width -// - $input: -@function get-isolation( - $input -) { - $location : get-location($input); - $columns : susy-get(columns, $input); - $width : null; - - @if type-of($location) == number and not(unitless($location)) { - $width: $location; - } @else if $location { - $push: $location - 1; - @if $push > 0 { - $push: map-merge($input, ( - span: $push, - location: 1, - spread: wide, - )); - $width: get-span-width($push); - } - } - - @if susy-get(gutter-position, $input) == split - and susy-get(gutters, $input) > 0 { - $width: if($width == null, gutters($input), $width + gutters($input)); - } - - @return $width or 0; -} diff --git a/_sass/vendor/susy/susy/language/susy/_margins.scss b/_sass/vendor/susy/susy/language/susy/_margins.scss deleted file mode 100644 index cb368399a8..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_margins.scss +++ /dev/null @@ -1,94 +0,0 @@ -// Margin Syntax -// ============= - -// Pre -// --- -// Add spanning-margins before an element. -// - $span : -@mixin pre( - $span -) { - $inspect: $span; - $span : map-merge((spread: wide), parse-span($span)); - $flow : susy-get(flow, $span); - $split : if(susy-get(gutter-position, $span) == split, true, false); - $gutter : gutter($span); - $span : span($span); - $width : if($split and $gutter, $span + $gutter, $span); - - @include susy-inspect(pre, $inspect); - @include margin-output($width, null, $flow); -} - -// Post -// ---- -// Add spanning-margins after an element. -// - $span : -@mixin post( - $span -) { - $inspect : $span; - $span : map-merge((spread: wide), parse-span($span)); - $flow : susy-get(flow, $span); - $split : if(susy-get(gutter-position, $span) == split, true, false); - $width : if($split, span($span) + gutter($span), span($span)); - - @include susy-inspect(post, $inspect); - @include margin-output(null, $width, $flow); -} - -// Push -// ---- -// Simple synonymn for pre. -// - $span : -@mixin push( - $span -) { - @include pre($span); -} - -// Pull -// ---- -// Add negative spanning-margins before an element. -// - $span : -@mixin pull( - $span -) { - $inspect : $span; - $span : map-merge((spread: wide), parse-span($span)); - $flow : susy-get(flow, $span); - $split : if(susy-get(gutter-position, $span) == split, true, false); - $width : if($split, 0 - span($span) + gutter($span), 0 - span($span)); - - @include susy-inspect(pull, $inspect); - @include margin-output($width, null, $flow); -} - -// Squish -// ------ -// Add spanning-margins before and after an element. -// - $pre : -// - [$post] : -@mixin squish( - $pre, - $post: false -) { - $inspect : ($pre, $post); - $pre : map-merge((spread: wide), parse-span($pre)); - - @if $post { - $post: map-merge((spread: wide), parse-span($post)); - } @else { - $span: susy-get(span, $pre); - @if length($span) > 1 { - $pre: map-merge($pre, (span: nth($span, 1))); - $post: map-merge($pre, (span: nth($span, 2))); - } @else { - $post: $pre; - } - } - - @include susy-inspect(squish, $inspect); - @include pre($pre); - @include post($post); -} diff --git a/_sass/vendor/susy/susy/language/susy/_padding.scss b/_sass/vendor/susy/susy/language/susy/_padding.scss deleted file mode 100644 index cdf75c8b03..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_padding.scss +++ /dev/null @@ -1,74 +0,0 @@ -// Padding Syntax -// ============== - -// Prefix -// ------ -// Add spanning-padding before an element. -// - $span : -@mixin prefix( - $span -) { - $inspect : $span; - $span : map-merge((spread: wide), parse-span($span)); - $flow : susy-get(flow, $span); - $width : span($span); - - @if is-inside($span) { - $gutter: gutter($span); - $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); - } - - @include susy-inspect(prefix, $inspect); - @include padding-output($width, null, $flow); -} - -// Suffix -// ------ -// Add spanning-padding after an element. -// - $span : -@mixin suffix( - $span -) { - $inspect : $span; - $span : map-merge((spread: wide), parse-span($span)); - $flow : susy-get(flow, $span); - $width : span($span); - - @if is-inside($span) { - $gutter: gutter($span); - $width: if($gutter and comparable($width, $gutter), $width + $gutter, $width); - } - - @include susy-inspect(suffix, $inspect); - @include padding-output(null, $width, $flow); -} - -// Pad -// --- -// Add spanning-padding before and after an element. -// - $pre : -// - [$post] : -@mixin pad( - $pre, - $post: false -) { - $inspect : ($pre, $post); - $pre : map-merge((spread: wide), parse-span($pre)); - - @if $post { - $post: map-merge((spread: wide), parse-span($post)); - } @else { - $span: susy-get(span, $pre); - @if length($span) > 1 { - $pre: map-merge($pre, (span: nth($span, 1))); - $post: map-merge($pre, (span: nth($span, 2))); - } @else { - $post: $pre; - } - } - - @include susy-inspect(pad, $inspect); - @include prefix($pre); - @include suffix($post); - -} diff --git a/_sass/vendor/susy/susy/language/susy/_rows.scss b/_sass/vendor/susy/susy/language/susy/_rows.scss deleted file mode 100644 index d7264313aa..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_rows.scss +++ /dev/null @@ -1,138 +0,0 @@ -// Row Start & End -// =============== - -// Break -// ----- -// Apply to any element that should force a line break. -@mixin break { - @include output((clear: both)); -} - - -// NoBreak -// ------- -// Cancel the break() effect, e.g. when using media queries. -@mixin nobreak { - @include output((clear: none)); -} - - -// Full -// ---- -// - [$context]: -@mixin full( - $context: $susy -) { - $inspect : $context; - @include susy-inspect(full, $inspect); - @include span(full of parse-grid($context) break); -} - - -// First -// ----- -// - [$context]: -@mixin first( - $context: $susy -) { - $inspect : $context; - $context : parse-grid($context); - $flow : susy-get(flow, $context); - - @include susy-inspect(first, $inspect); - @if not(is-split($context)) { - @include float-first($flow); - } -} - -@mixin alpha( - $context: $susy -) { - @include first($context); -} - - -// Last -// ---- -// - [$context]: -@mixin last( - $context: $susy -) { - $inspect : $context; - $context : parse-grid($context); - - @include susy-inspect(last, $inspect); - - $output: ( - flow: susy-get(flow, $context), - last-flow: susy-get(last-flow, $context), - margin: if(is-split($context), null, 0), - ); - - @include float-last($output...); -} - -@mixin omega( - $context: $susy -) { - @include last($context); -} - - -// Get Edge -// -------- -// Calculate edge value based on location, if possible -@function get-edge( - $span -) { - $span : parse-span($span); - $edge : susy-get(edge, $span); - - @if not($edge) { - $count: susy-count(susy-get(columns, $span)); - $location: susy-get(location, $span); - $n: susy-get(span, $span); - - $number: if(type-of($location) == number, true, false); - $index: if($number and unitless($location), true, false); - - @if $n == $count { - $edge: full; - } @else if $location and $n and $index { - @if $location == 1 { - $edge: if($n == $count, full, first); - } @else if $location + $n - 1 == $count { - $edge: last; - } - } - } - - @if $edge == alpha or $edge == omega { - $edge: if($edge == alpha, first, last); - } - - @return $edge; -} - - -// Get Location -// ------------ -// Calculate location value based on edge, if possible -@function get-location( - $span -) { - $span : parse-span($span); - $location : susy-get(location, $span); - $edge : get-edge($span); - $n : susy-get(span, $span); - - @if $edge and not($location) and type-of($n) == number and unitless($n) { - @if $edge == first { - $location: 1; - } @else if $edge == last { - $location: susy-count(susy-get(columns, $span)) - $n + 1; - } - } - - @return $location -} diff --git a/_sass/vendor/susy/susy/language/susy/_settings.scss b/_sass/vendor/susy/susy/language/susy/_settings.scss deleted file mode 100644 index 9b5d897d56..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_settings.scss +++ /dev/null @@ -1,216 +0,0 @@ -// Susy Settings -// ============= - -// Susy Language Defaults -// ---------------------- -// - PRIVATE -@include susy-defaults(( - container: auto, - math: fluid, - output: float, - container-position: center, - gutter-position: after, - global-box-sizing: content-box, - debug: ( - image: hide, - color: rgba(#66f, .25), - output: background, - toggle: top right, - ), -)); - - -// Valid Keyword Values -// -------------------- -// - PRIVATE: DONT'T TOUCH -$susy-keywords: ( - container: auto, - math: static fluid, - output: isolate float, - container-position: left center right, - flow: ltr rtl, - gutter-position: before after split inside inside-static, - box-sizing: border-box content-box, - span: full, - edge: first alpha last omega full, - spread: narrow wide wider, - gutter-override: no-gutters no-gutter, - role: nest, - clear: break nobreak, - debug image: show hide show-columns show-baseline, - debug output: background overlay, -); - - -// Parse Susy Keywords and Maps -// ---------------------------- -@function parse-settings( - $short: $susy -) { - $_return: (); - - @if type-of($short) == map { - $_return: $short; - } @else { - @each $item in $short { - // strings - @if type-of($item) == string { - @each $key, $value in $susy-keywords { - @if index($value, $item) { - $_key-value: append($key, $item); - $_return: _susy-deep-set($_return, $_key-value...); - } - } - // maps - } @else if type-of($item) == map { - $_return: map-merge($_return, $item); - } - } - } - - @return $_return; -} - - -// Parse Columns & Gutters -// ----------------------- -@function parse-layout( - $short -) { - $_return: (); - $_columns: (); - $_gutters: null; - - @if not(unitless(nth(nth($short, 1), 1))) { - $_gutters: nth($short, 1); - } @else { - $_columns: (columns: nth($short, 1)); - $_gutters: if(length($short) > 1, nth($short, 2), $_gutters); - } - - @if type-of($_gutters) == list and length($_gutters) > 0 { - $_gutters: ( - gutters: nth($_gutters, 2) / nth($_gutters, 1), - column-width: nth($_gutters, 1), - ); - } @else { - $_gutters: if($_gutters, (gutters: $_gutters), ()); - } - - $_return: map-merge($_return, $_columns); - $_return: map-merge($_return, $_gutters); - - @return $_return; -} - - -// Parse Grid/Context -// ------------------ -@function parse-grid( - $short: $susy -) { - $_return: parse-settings($short); - $_layout: (); - - @if type-of($short) == map { - $_return: $short; - } @else { - @each $item in $short { - // number or list - @if type-of($item) == number or type-of($item) == list { - @if type-of($item) == list or unitless($item) { - $_layout: append($_layout, $item); - } @else { - $_return: map-merge($_return, (container: $item)); - } - } - } - - $_layout: if(length($_layout) > 0, parse-layout($_layout), $_layout); - } - - @return map-merge($_return, $_layout); -} - - -// Parse Span -// ---------- -@function parse-span( - $short, - $key: span -) { - $_return: (); - - @if type-of($short) == map { - $_return: $short; - } @else { - $_at: index($short, at); - - @if $_at { - $_loci: $_at + 1; - $_location: nth($short, $_loci); - $_return: map-merge($_return, (location: $_location)); - $short: set-nth($short, $_at, null); - $short: set-nth($short, $_loci, null); - } - - $_i: 1; - $_span: (); - - @while $_i <= length($short) { - $_this: nth($short, $_i); - - @if type-of($_this) == number { - $_span: append($_span, $_this); - $short: set-nth($short, $_i, null); - } @else if $_this == of { - $short: set-nth($short, $_i, null); - $_i: length($short) + 1; - } - - $_i: $_i + 1; - } - - @if length($_span) > 0 { - $_span: if(length($_span) == 1, nth($_span, 1), $_span); - $_return: map-merge($_return, ($key: $_span)); - } - - $_return: map-merge($_return, parse-grid($short)); - } - - @return $_return; -} - - -// Parse Gutters -// ------------- -@function parse-gutters( - $short: $susy -) { - $_gutters: parse-span($short, gutter-override); - $_span: susy-get(gutter-override, $_gutters); - - @if $_span and not(map-get($_gutters, columns)) { - $_context: (); - $_new: (); - - @each $item in $_span { - @if type-of($item) == number and unitless($item) { - $_context: append($_context, $item); - } @else { - $_new: append($_new, $item); - } - } - - $_context: parse-grid($_context); - $_new: if(length($_new) == 0, null, $_new); - $_new: if(length($_new) == 1, nth($_new, 1), $_new); - $_new: (gutter-override: if($_new != $_span, $_new, $_span)); - - $_gutters: map-merge($_gutters, $_new); - $_gutters: map-merge($_gutters, $_context); - } - - @return $_gutters; -} diff --git a/_sass/vendor/susy/susy/language/susy/_span.scss b/_sass/vendor/susy/susy/language/susy/_span.scss deleted file mode 100644 index 86ccda9181..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_span.scss +++ /dev/null @@ -1,163 +0,0 @@ -// Span Syntax -// =========== - -// Span [mixin] -// ------------ -// Set a spanning element using shorthand syntax. -// - $span : -@mixin span( - $span -) { - $inspect: $span; - $span: parse-span($span); - $output: span-math($span); - $nesting: susy-get(span, $span); - $clear: susy-get(clear, $span); - - $box: susy-get(box-sizing, $span); - $content-box: if(susy-get(global-box-sizing) != 'border-box', true, false); - $box: $box or if(is-inside($span) and $content-box, border-box, null); - - @if $clear == break { - @include break; - } @else if $clear == nobreak { - @include nobreak; - } - - @include susy-inspect(span, $inspect); - @include output((box-sizing: $box)); - @include float-span-output($output...); - - @if valid-columns($nesting, silent) { - @include nested($span) { @content; } - } @else { - @content; - } -} - -// Span [function] -// --------------- -// Return the width of a span. -// - $span : -@function span( - $span -) { - @return get-span-width($span); -} - -// Span Math -// --------- -// Get all the span results. -// - $span: -@function span-math( - $span -) { - $nest : if(susy-get(role, $span) == nest, true, false); - $split-nest : if(is-split($span) and $nest, true, false); - $edge : get-edge($span); - $location : get-location($span); - - $float : from; - $padding-before : null; - $padding-after : null; - $margin-before : null; - $margin-after : null; - - // calculate widths - $spread: index(map-values($span), spread); - $span: if($split-nest and not($spread), map-merge($span, (spread: wide)), $span); - $width: get-span-width($span); - $gutters: get-gutters($span); - - // apply gutters - @if is-inside($span) { - @if not(susy-get(role, $span)) { - $padding-before: map-get($gutters, before); - $padding-after: map-get($gutters, after); - } - } @else { - @if not($split-nest) { - $margin-before: map-get($gutters, before); - $margin-after: map-get($gutters, after); - } - } - - // special margin handling - @if susy-get(output, $span) == isolate and $location { - $margin-before: get-isolation($span); - $margin-after: -100%; - } @else if $edge { - $is-split: is-split($span); - $pos: susy-get(gutter-position, $span); - - @if $edge == last { - $float: susy-get(last-flow, $span); - } - - @if not($is-split) { - @if $edge == full or ($edge == first and $pos == before) { - $margin-before: 0; - } - @if $edge == full or ($edge == last and $pos == after) { - $margin-after: 0; - } - } - - } - - @return ( - width : $width, - float : $float, - margin-before : $margin-before, - margin-after : $margin-after, - padding-before : $padding-before, - padding-after : $padding-after, - flow : susy-get(flow, $span), - ); -} - -// Get Span Width -// -------------- -// Return span width. -// - $span: -@function get-span-width( - $span -) { - $span : parse-span($span); - - $n : susy-get(span, $span); - $location : get-location($span); - $columns : susy-get(columns, $span); - $gutters : susy-get(gutters, $span); - $spread : susy-get(spread, $span); - - $context : null; - $span-sum : null; - $width : null; - - @if $n == 'full' { - $pos: susy-get(gutter-position, $span); - $role: susy-get(role, $span); - $n: if($pos == split and $role != nest, susy-count($columns), 100%); - } - - @if type-of($n) != number { - @warn "(#{type-of($n)}) #{$n} is not a valid span."; - } @else if unitless($n) { - $context: susy-sum($columns, $gutters, if(is-split($span), wide, narrow)); - $spread: if(is-inside($span), $spread or wide, $spread); - $span-sum: susy($n, $location, $columns, $gutters, $spread); - - $_math: susy-get(math, $span); - $_column-width: susy-get(column-width, $span); - @if $_math == static { - $width: $span-sum * valid-column-math($_math, $_column-width); - } @else { - $width: percentage($span-sum / $context); - } - } @else { - $width: $n; - } - - @return $width; -} diff --git a/_sass/vendor/susy/susy/language/susy/_validation.scss b/_sass/vendor/susy/susy/language/susy/_validation.scss deleted file mode 100644 index a235b176af..0000000000 --- a/_sass/vendor/susy/susy/language/susy/_validation.scss +++ /dev/null @@ -1,16 +0,0 @@ -// Validation -// ========== - - -// Validate Column Math -// -------------------- -@function valid-column-math( - $math, - $column-width -) { - @if $math == static and not($column-width) { - @error 'Static math requires a valid column-width setting.'; - } - - @return $column-width; -} diff --git a/_sass/vendor/susy/susy/language/susyone/_background.scss b/_sass/vendor/susy/susy/language/susyone/_background.scss deleted file mode 100644 index 38c6726b89..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_background.scss +++ /dev/null @@ -1,18 +0,0 @@ -// --------------------------------------------------------------------------- -// Imports - -@import "compass/layout/grid-background"; -@import "compass/css3/background-origin"; -@import "compass/css3/background-clip"; - -// --------------------------------------------------------------------------- -// Susy Grid Background -// -// A wrapper for the compass "column-grid-background" mixin -// Uses all your settings to create a grid background for a container element. -// Note: Sub-pixel rounding can lead to several pixels of variation between browsers. -@mixin susy-grid-background(){ - @include column-grid-background($total-columns, column(), gutter(), 0); - @include background-origin(content-box); - @include background-clip(content-box); -} diff --git a/_sass/vendor/susy/susy/language/susyone/_functions.scss b/_sass/vendor/susy/susy/language/susyone/_functions.scss deleted file mode 100644 index 681845890b..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_functions.scss +++ /dev/null @@ -1,377 +0,0 @@ -// --------------------------------------------------------------------------- -// Imports - -// We need access to some basic font settings for handling media-queries. -@import "compass/typography/vertical_rhythm"; - -// For now, we also need this... -$browser-default-font-size-px : 16px; -$browser-default-font-size-percent : 100%; -$browser-default-font-size-pt : 12pt; - -$rem-with-px-fallback : true !default; - -// --------------------------------------------------------------------------- -// Sass list Functions - -// Return a list with specific items removed -// -// filter($list, $target) -// - $list : The list to filter. -// - $target : An item to be removed from the list. -@function filter($list, $target) { - $clean: compact(); - @if index($list, $target) { - @each $item in $list { - $clean: if($item == $target, $clean, append($clean, $item)); - } - } @else { $clean: $list; } - @return $clean; -} - -// --------------------------------------------------------------------------- -// Don't use static output when it will break things - -// Switch element-level output to fluid, when container-width is wrong for static -// -// fix-static-misalignment([$style, $width]) -// - $style: $container-style. -// - $width: $container-width. -@function fix-static-misalignment( - $style: $container-style, - $width: $container-width -) { - @if $container-width and $container-width != container-outer-width($width: false) { - $style: fluid; - } - @return $style; -} - -// --------------------------------------------------------------------------- -// Grid Functions - -// Returns the full width of a grid based on your grid settings. -// -// $columns : The number of columns to get width for. -@function columns-width( - $columns : $total-columns -) { - @if round($columns) != $columns { - @warn "Susy works best with integer column-spans." + - "For partial-columns, you may need to finesse the math by hand using functions directly."; - } - @return ($columns * $column-width) + (if($columns >= 1, ceil($columns - 1), 0) * $gutter-width); -} - -// Return the grid width after adding or subtracting grid padding -// -// $width : the width of the grid without padding; -// $operation : ( add | subtract ) if padding should be added or subtracted; -@function handle-grid-padding( - $width, - $operation : subtract -) { - $pad: $grid-padding*2; - - @if comparable($width, $grid-padding) { - $width: if($operation == subtract, $width - $pad, $width + $pad); - } @else { - @warn "$grid-padding must be set in units comparable to the container width."; - } - - @return $width; -} - -// Return the full outer width of a Container element. -// -// $columns : The number of columns in the Grid Layout. -@function container-outer-width( - $columns : $total-columns, - $width : $container-width -) { - $outerwidth: if($width, $width, columns-width($columns)); - - @if $width { - @if not($border-box-sizing) { $outerwidth: handle-grid-padding($outerwidth, subtract); } - } @else { - @if $border-box-sizing { $outerwidth: handle-grid-padding($outerwidth, add); } - } - - @return $outerwidth; -} - -// Return the percentage width of a single column in a given 'context'. -// -// $context : The grid context in columns, if nested. -// $style : The container style to use. -@function column( - $context : $total-columns, - $style : fix-static-misalignment() -) { - @return if($style == static, $column-width, relative-width($column-width, $context)); -} - -// Return the percentage width of multiple 'columns' in a given 'context'. -// -// $columns : The number of columns to get relative width for. -// $context : The grid context in columns, if nested. -// $style : The container style to use. -@function columns( - $columns, - $context : $total-columns, - $style : fix-static-misalignment() -) { - @return if($style == static, columns-width($columns), relative-width(columns-width($columns), $context)); -} - -// Return the percentage width of a single gutter in a given 'context'. -// -// $context : The grid context in columns, if nested. -// $style : The container style to use. -@function gutter( - $context : $total-columns, - $style : fix-static-misalignment() -) { - @return if($style == static, $gutter-width, relative-width($gutter-width, $context)); -} - -// Return the percentage width of a given value in a given 'context'. -// -// $width : Any given width value. -// $context : The grid context in columns, if nested. -@function relative-width( - $width, - $context : $total-columns -) { - @return percentage($width / columns-width($context)); -} - -// Return the total space occupied by multiple columns and associated gutters. -// Useful for adding padding or margins (prefix, suffix, push, pull, etc.) -// -// $columns : The number of columns to get relative space for. -// $context : The grid context in columns, if nested. -// $style : The container style to use. -@function space( - $columns, - $context : $total-columns, - $style : fix-static-misalignment() -) { - @return columns($columns, $context, $style) + if($columns >= 1, gutter($context, $style), 0); -} - -// Accept a list including column-count and (optional) position. -// Return either the column count or the position alone. -// -// $columns : the list to split and interprate. -// $request : The value to return, either 'columns' or 'position'. -@function split-columns-value( - $columns, - $request : columns -) { - $pos : false; - $cols : false; - - @each $var in $columns { - @if (type-of($var) == 'string') { - $pos: $var; - } @else { - @if (type-of($var) == 'number') and (unitless($var)) { - $cols: $var; - } @else { - @warn '"#{$var}" is not a valid part of "$columns: #{$columns}" in the columns() mixin.'; - } - } - } - - @if $request == 'columns' { - @return $cols; - } @else { - @if $request == 'position' { - @return $pos; - } @else { - @warn '"#{$request}" is not a valid value for $request'; - } - } -} - -// Accept nth-selector variables, and format them as a valid CSS3 selector. -// -// $n : [first | only | last | ] -// $selector : [child | last-child | of-type | last-of-type ] -@function format-nth( - $n : last, - $selector : child -) { - @if ($n == 'last') or ($n =='first') or ($n =='only') { - $selector: '#{$n}-#{$selector}'; - } @else { - $selector: 'nth-#{$selector}(#{$n})'; - } - @return $selector; -} - -// --------------------------------------------------------------------------- -// Media Functions - -// Return an em value adjusted to match the browser default font size. -// Note: This only works if actual sizes are set relative to browser defaults. -// -// $ems : The initial value to be converted. -// $font-size : The current font-size in. -@function base-ems( - $ems, - $font-size: $base-font-size -){ - $font-size : if(unit($ems) == 'rem', $base-font-size, $font-size); - $unit : unit($font-size); - $mult : $ems / ($ems * 0 + 1); - - @if $unit == 'px' { - @return $font-size / $browser-default-font-size-px * $mult * 1em; - } - @else if $unit == '%' { - @return $font-size / $browser-default-font-size-percent * $mult * 1em; - } - @else if $unit == 'em' { - @return $font-size / 1em * $mult * 1em; - } - @else if $unit == 'pt' { - @return $font-size / $browser-default-font-size-pt * $mult * 1em; - } - @else { - @warn 'Variable $base-font-size does not have a valid font unit. Valid units for fonts in CSS are px, pt, em, and %.'; - } -} - -// This name will be deprecated... -@function absolute-ems( - $ems, - $font-size: $base-font-size -){ - @return base-ems( $ems, $font-size); - } - -// Return a length, after any em-values have been sent through absolute-ems(). -// -// $length : The length value to be checked and adjusted if necessary. -// $font-size : The current font-size in px. -@function fix-ems( - $length, - $font-size: $base-font-size -){ - @if $length { - @if (unit($length) == 'em') or (unit($length) == 'rem') { - $length: absolute-ems($length,$font-size); - } - } - @return $length; -} - -// Sort a list of arguments into "$min $layout $max $ie" order, and return the list. -// -// $media-layout : a list of values [$min $layout $max $ie] including... -// : - one unitless number (columns in a layout) -// : - two optional lengths (min and max-width media-query breakpoints). -// : - one optional boolean or string to trigger fallback support for IE. -// $font-size : [optional] The base font-size of your layout, if you are using ems. -// : - defaults to $base-font-size -@function medialayout( - $media-layout, - $font-size: $base-font-size -) { - $media : false; - $min : false; - $layout : false; - $max : false; - $ie : false; - $has-layout : false; - - @each $val in $media-layout { - @if (type-of($val) == "number") { - @if unitless($val) { - $layout : $val; - $has-layout : true; - } @else { - @if ($has-layout) and not($media) { - $max: $val; - } @else { - @if $media { - $media: join($media,$val); - } @else { - $media: $val; - } - } - } - } @else { - $ie: $val; - } - } - @if (length($media) > 0) { - @if (length($media) == 1) { - $min: nth($media,1); - } @else { - $min: nth($media,1); - $max: nth($media,2); - @if comparable($min, $max) { - @if ($min > $max) { - $max: nth($media,1); - $min: nth($media,2); - } - } @else { - @warn "Can't compare incompatible units." + - "Using #{$min} for min-width, and #{$max} for max-width"; - } - @if (length($media) > 2) { - @warn "You can only send two lengths: a min-width and an (optional) max-width." + - "You sent #{length($media)}: #{$media}"; - } - } - } - - // media-queries must be set in ems relative to the browser default - // rather than the font-size set in CSS. - $min: fix-ems($min,$font-size); - $max: fix-ems($max,$font-size); - - @return $min $layout $max $ie; -} - -// Return the nearest layout (column-count) above a given breakpoint. -// -// $min : The min-width media-query breakpoint above which to establish a new layout. -@function get-layout( - $min -) { - $min : fix-ems($min); - $return : false; - - @if comparable($min, $column-width) { - $return : ceil(($min + $gutter-width) / ($column-width + $gutter-width)); - } @else { - @warn "Can't determine a layout, becuse #{$min} and #{$column-width} are not comparable."; - } - - @return $return; -} - -// Check to see if a given $media-layout list is simply the default. -// -// $media-layout : a list of values including - -// : One unitless number (columns in a layout) -// : Two optional lengths (min and max-width media-query breakpoints). -// : One optional boolean or string to trigger fallback support for IE. -@function is-default-layout( - $media-layout -) { - $media-layout : medialayout($media-layout); - $min : nth($media-layout,1); - $layout-cols : nth($media-layout,2); - $max : nth($media-layout,3); - - @if $min or $max { - @return false; - } @else { - @return if($layout-cols == $total-columns,true,false); - } -} diff --git a/_sass/vendor/susy/susy/language/susyone/_grid.scss b/_sass/vendor/susy/susy/language/susyone/_grid.scss deleted file mode 100644 index 491c6229ef..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_grid.scss +++ /dev/null @@ -1,312 +0,0 @@ -// --------------------------------------------------------------------------- -// Imports - -@import "compass/utilities/general/clearfix"; -@import "compass/css3/box-sizing"; - -// --------------------------------------------------------------------------- -// Border-Box Sizing - -// Apply the border-box sizing model to all elements -// and adjust the grid math appropriately. -@mixin border-box-sizing { - $border-box-sizing: true !global; - * { @include box-sizing(border-box); } -} - -// --------------------------------------------------------------------------- -// Container - -// Set the width of a container -// -// $columns : The number of columns in the Grid Layout. -@mixin set-container-width( - $columns : $total-columns, - $style : $container-style, - $px-vals : $pixel-values-only -){ - $width: container-outer-width($columns); - - @if $style == 'static' { - @if $px-vals == true { - width: round(convert-length($width, px)); - } @else { - @include rem(width, $width); - } - } @else { - @if $style == 'fluid' { - @if unit($width) == '%' { - @if $px-vals == true { - width: round(convert-length($width, px)); - } @else { - @include rem(width, $width); - } - } - } @else { - @if $px-vals == true { - max-width: round(convert-length($width, px)); - } @else { - @include rem(max-width, $width); - } - - @include for-legacy-browser(ie,"6") { - @if unit($width) == 'rem' { - _width: round(convert-length($width, px)); - } @else { - _width: $width; - } - } - } - } -} - -// Set the outer grid-containing element(s). -// -// $columns : The number of columns in the container. -@mixin apply-container( - $columns : $total-columns, - $px-vals : $pixel-values-only -){ - @include pie-clearfix; - @include set-container-width($columns); - @if $px-vals == true { - padding-left: round(convert-length($grid-padding, px)); - padding-right: round(convert-length($grid-padding, px)); - } @else { - @include rem(padding-left, $grid-padding); - @include rem(padding-right, $grid-padding); - } - margin: { left: auto; right: auto; } -} - -// Set one or more layouts on a grid-containing element at any number of media-query breakpoints. -// -// $media-layout-1 : [default:$total-columns] A list of values including - -// : One unitless number (representing columns in a layout) -// : Two optional lengths (representing min and max-width media-query breakpoints). -// $media-layout-2 ...-10 : [optional] Same as $media-layout-1 -@mixin container( - $media-layouts... -){ - $media-layouts: if(length($media-layouts) > 0, $media-layouts, $total-columns); - - @each $ml in $media-layouts { - @if is-default-layout($ml) { - @include apply-container; - } @else { - @include at-breakpoint($ml) { - @include apply-container; - } - } - } -} - -// --------------------------------------------------------------------------- -// Columns - -// Create a grid element spanning any number of 'columns' in a grid 'context'. -// $columns : The number of columns to span. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $padding : [optional] Padding applied to the inside of individual grid columns. -// : Padding is only output if one or two values are specified (e.g. 1em or 10px 20px) -// : Padding values are applied only on the horizontal axis in from-to order -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin span-columns( - $columns, - $context : $total-columns, - $padding : false, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - $to : opposite-position($from); - $pos : split-columns-value($columns,position); - $cols : split-columns-value($columns,columns); - $pad-from : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context)); - $pad-to : if($style == static, 0 * $gutter-width, relative-width(0 * $gutter-width, $context)); - - @if $padding != false { - $pad-from : nth($padding, 1); - - @if length($padding) > 1 { - $pad-to: nth($padding, 2); - } @else { - $pad-to: $pad-from; - } - - $pad-from : if($style == static, $pad-from, relative-width($pad-from, $context)); - $pad-to : if($style == static, $pad-to, relative-width($pad-to, $context)); - - padding-#{$from}: $pad-from; - padding-#{$to}: $pad-to; - } - - width: columns($cols, $context, $style) - if($border-box-sizing, 0, $pad-to + $pad-from); - - @if ($pos == 'omega') { - @include omega($from); - } @else { - float: $from; - margin-#{$to}: gutter($context, $style); - @include for-legacy-browser(ie, "6") { - display: inline; - } - } -} - -// Apply to elements spanning the last column, to account for the page edge. -// Only needed as an override. Normally 'omega' can just be called by `columns`. -// -// $from : The start-direction for your document. -@mixin omega( - $from : $from-direction -) { - $from : unquote($from); - $to : opposite-position($from); - $hack : opposite-position($omega-float); - - float: $omega-float; - margin-#{$to}: 0; - - @include for-legacy-browser(ie, "6", "7") { - *margin-#{$hack}: - $gutter-width; - @include for-legacy-browser(ie, "6") { - display: inline; - } - } -} - -// Shortcut to apply omega to a specific subset of elements. -// -// $n : [first | only | last | ] -// $selector : [child | last-child | of-type | last-of-type ] -// $from : The start-direction for your document. -@mixin nth-omega( - $n : last, - $selector : child, - $from : $from-direction -) { - $from : unquote($from); - - &:#{format-nth($n,$selector)} { - @if $n == "first" { - @include omega($from); - } @else { - @include with-browser-ranges(css-sel3) { - @include omega($from); - } - } - } -} - - - -// --------------------------------------------------------------------------- -// Resets - -// Reset a '+columns' grid element to default block behavior -// -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -@mixin reset-columns( - $from: $from-direction -) { - $from : unquote($from); - $to : opposite-position($from); - $hack : opposite-position($omega-float); - - float: none; - width: auto; - margin-#{$to}: auto; - - @include for-legacy-browser(ie, "6", "7") { - *margin-#{$hack}: auto; - @include for-legacy-browser(ie, "6") { - display: block; - } - } -} - -// Apply to elements previously set as omega. -// This will return floats and margins back to non-omega settigns. -// -// $context : [optional] The context (columns spanned by parent). -// $from : The start-direction for your document. -// $style : The container style to use. -@mixin remove-omega( - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - $to : opposite-position($from); - $hack : opposite-position($omega-float); - - float: $from; - margin-#{$to}: gutter($context, $style); - - @include for-legacy-browser(ie, "6", "7") { - *margin-#{$hack}: auto; - } -} - -// Shortcut to apply remove-omega to a specific subset of elements. -// -// $n : [first | only | last | ] -// $selector : [child | last-child | of-type | last-of-type ] -// $context : [optional] The context (columns spanned by parent). -// $from : The start-direction for your document. -// $style : The container style to use. -@mixin remove-nth-omega( - $n : last, - $selector : child, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - - &:#{format-nth($n,$selector)} { - @if $n == "first" { - @include remove-omega($context, $from, $style); - } @else { - @include with-browser-ranges(css-sel3) { - @include remove-omega($context, $from, $style); - } - } - } -} - - -// --------------------------------------------------------------------------- -// Change Settings - -@mixin with-grid-settings( - $columns: $total-columns, - $width: $column-width, - $gutter: $gutter-width, - $padding: $grid-padding -) { - // keep the defaults around - $default-columns: $total-columns; - $default-width: $column-width; - $default-gutter: $gutter-width; - $default-padding: $grid-padding; - - // use the new settings - $total-columns: $columns !global; - $column-width: $width !global; - $gutter-width: $gutter !global; - $grid-padding: $padding !global; - - // apply to contents - @content; - - // re-instate the defaults - $total-columns: $default-columns !global; - $column-width: $default-width !global; - $gutter-width: $default-gutter !global; - $grid-padding: $default-padding !global; -} diff --git a/_sass/vendor/susy/susy/language/susyone/_isolation.scss b/_sass/vendor/susy/susy/language/susyone/_isolation.scss deleted file mode 100644 index 2b70038bb9..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_isolation.scss +++ /dev/null @@ -1,51 +0,0 @@ -// --------------------------------------------------------------------------- -// Isolation - -// Isolate the position of a grid element (use in addition to span-columns) -// -// $location : The grid column to isolate in, relative to the container; -// $context : [optional] The context (columns spanned by parent). -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -@mixin isolate( - $location, - $context: $total-columns, - $from: $from-direction, - $style: fix-static-misalignment() -) { - $to: opposite-position($from); - margin-#{$to}: -100%; - margin-#{$from}: space($location - 1, $context, $style); -} - -// Isolate a group of elements in a grid, using nth-child selectors -// -// $columns : The column-width of each item on the grid; -// $context : [optional] The context (columns spanned by parent). -// $selector : [child | of-type | last-of-type ] (default is 'child') -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -@mixin isolate-grid( - $columns, - $context: $total-columns, - $selector: 'child', - $from: $from-direction, - $style: fix-static-misalignment() -) { - $to: opposite-position($from); - $location: 1; - $line: floor($context / $columns); - - @include span-columns($columns, $context, $from: $from, $style: $style); - margin-#{$to}: -100%; - - @for $item from 1 through $line { - $nth: '#{$line}n + #{$item}'; - &:#{format-nth($nth,$selector)} { - margin-#{$from}: space($location - 1, $context, $style); - @if $location == 1 { clear: $from; } - @else { clear: none; } - - $location: $location + $columns; - @if $location > $context { $location: 1; } - } - } -} diff --git a/_sass/vendor/susy/susy/language/susyone/_margin.scss b/_sass/vendor/susy/susy/language/susyone/_margin.scss deleted file mode 100644 index accbbe65b4..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_margin.scss +++ /dev/null @@ -1,93 +0,0 @@ -// --------------------------------------------------------------------------- -// Margin Mixins - -// Apply 'columns' margin before an element to push it along the grid. -// -// $columns : The number of columns to span. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin pre( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - margin-#{$from}: space($columns, $context, $style); -} - -// 'push' is a synonymn for 'pre' -@mixin push( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - @include pre($columns, $context, $from, $style); -} - -// Apply negative 'columns' margin before an element to pull it along the grid. -// -// $columns : The number of columns to span. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin pull( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - margin-#{$from}: 0 - space($columns, $context, $style); -} - -// Apply 'columns' margin after an element to contain it in a grid. -// -// $columns : The number of columns to span. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin post( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - $to : opposite-position($from); - margin-#{$to}: space($columns, $context, $style); -} - -// Apply 'columns' before and/or after an element to contain it on a grid. -// -// $pre : The number of columns to add as margin before. -// $post : The number of columns to add as margin after. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin squish( - $pre : false, - $post : false, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - @if $pre { - @include pre($pre, $context, $from, $style) - } - @if $post { - @include post($post, $context, $from, $style) - } -} diff --git a/_sass/vendor/susy/susy/language/susyone/_media.scss b/_sass/vendor/susy/susy/language/susyone/_media.scss deleted file mode 100644 index ca860fc93d..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_media.scss +++ /dev/null @@ -1,105 +0,0 @@ -// --------------------------------------------------------------------------- -// Media Mixins - -// Create a new layout context for (@content) descendants. -// -// $layout-cols : a (unitless) number of columns to use for this layout. -@mixin layout( - $layout-cols -) { - // store default $total-columns setting for later, then change it. - $default-layout : $total-columns; - $total-columns : $layout-cols !global; - - // apply children in this new layout context. - @content; - - // return to default $total-columns setting. - $total-columns : $default-layout !global; -} - -// Nest a block of code inside a new media-query and layout context. -// -// $media-layout : a list of values [$min $layout $max $ie] including... -// : - one unitless number (columns in a layout) -// : - two optional lengths (min and max-width media-query breakpoints). -// : - one optional boolean or string to trigger fallback support for IE. -// $font-size : [optional] The base font-size of your layout, if you are using ems. -// : - defaults to $base-font-size -@mixin at-breakpoint( - $media-layout, - $font-size: $base-font-size -) { - $media-layout : medialayout($media-layout,$font-size); - $min : nth($media-layout,1); - $layout : nth($media-layout,2); - $max : nth($media-layout,3); - $ie : nth($media-layout,4); - - @if not($breakpoint-media-output) and not($breakpoint-ie-output) and not($breakpoint-raw-output) { - @warn "Either $breakpoint-media-output, $breakpoint-ie-output, or $breakpoint-raw-output must be true for at-breakpoint to work."; - } - - // We need to have either a min-width breakpoint or a layout in order to proceed. - @if $min or $layout or $max { - - // If we don't have a layout, we create one based on the min-width. - @if not($layout) { - $layout: get-layout($min); - } - - // If we still don't have a layout, we have a problem. - @if $layout { - // Set our new layout context. - @include layout($layout) { - @if $breakpoint-media-output { - @include with-browser-ranges(css-mediaqueries) { - @if $min and $max { - // Both $min and $max - @media (min-width: $min) and (max-width: $max) { - @content; - } - } @else { - @if not($min) and not($max) { - // Neither $min nor $max: - // We can create a breakpoint based on the number of columns in the layout. - $min: fix-ems(container-outer-width($width: false)); - } - @if $min { - // Min only: - @media (min-width: $min) { - @content; - } - } @else { - // Max only: - @media (max-width: $max) { - @content; - } - } - } - } - } - // Set an IE fallback - @if $ie and $breakpoint-ie-output { - @if (type-of($ie) == 'bool') { - $ie: 'lt-ie9'; - } - .#{$ie} & { - @content; - } - } - - @if $breakpoint-raw-output { - @content; - } - } - } @else { - @warn "We were unable to determine a layout for your breakpoint."; - } - - } @else { - @warn "You need to provide either a valid layout (number of columns)" - + "or a valid media-query min-width breakpoint (length)."; - } - -} diff --git a/_sass/vendor/susy/susy/language/susyone/_padding.scss b/_sass/vendor/susy/susy/language/susyone/_padding.scss deleted file mode 100644 index 8e6394a49c..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_padding.scss +++ /dev/null @@ -1,92 +0,0 @@ -// --------------------------------------------------------------------------- -// Padding Mixins - -// add empty colums as padding before an element. -// $columns : The number of columns to prefix. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin prefix( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - padding-#{$from}: space($columns, $context, $style); -} - -// add empty colums as padding after an element. -// $columns : The number of columns to suffix. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin suffix( - $columns, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - $to : opposite-position($from); - padding-#{$to}: space($columns, $context, $style); -} - -// add empty colums as padding before and after an element. -// $columns : The number of columns to pad. -// $context : [optional] The context (columns spanned by parent). -// : Context is required on any nested elements. -// : Context MUST NOT be declared on a root element. -// $from : The start direction of your layout (e.g. 'left' for ltr languages) -// $style : The container style to use. -@mixin pad( - $prefix : false, - $suffix : false, - $context : $total-columns, - $from : $from-direction, - $style : fix-static-misalignment() -) { - $from : unquote($from); - @if $prefix { - @include prefix($prefix, $context, $from, $style); - } - @if $suffix { - @include suffix($suffix, $context, $from, $style); - } -} - -// Bleed into colums with margin/padding on any side of an element. -// $width : The side of the bleed. -// : Any unit-length will be used directly. -// : Any unitless number will be used as a column-count. -// : Use "2 of 6" format to represent 2 cals in a 6-col nested context. -// $sides : One or more sides to bleed [ top | right | bottom | left | all ]. -// $style : The container style to use. -@mixin bleed( - $width: $grid-padding, - $sides: left right, - $style: fix-static-misalignment() -) { - @if $border-box-sizing { @include box-sizing(content-box) } - - @if type-of($width) == 'list' { - $width: filter($width, of); - $width: space(nth($width,1), nth($width,2), $style); - } @else if unitless($width) { - $width: space($width, $style: $style); - } - - @if $sides == 'all' { - margin: - $width; - padding: $width; - } @else { - @each $side in $sides { - margin-#{$side}: - $width; - padding-#{$side}: $width; - } - } -} diff --git a/_sass/vendor/susy/susy/language/susyone/_settings.scss b/_sass/vendor/susy/susy/language/susyone/_settings.scss deleted file mode 100644 index e8ff9c8453..0000000000 --- a/_sass/vendor/susy/susy/language/susyone/_settings.scss +++ /dev/null @@ -1,60 +0,0 @@ -// --------------------------------------------------------------------------- -// Susy Settings - -// The total number of columns in the grid -$total-columns : 12 !default; - -// The width of columns and gutters. -// These must all be set with the comparable units. -$column-width : 4em !default; -$gutter-width : 1em !default; - -// Padding on the left and right of a Grid Container. -$grid-padding : $gutter-width !default; - -// --------------------------------------------------------------------------- -// Advanced Settings - -// From Direction: -// Controls for right-to-left or bi-directional sites. -$from-direction : left !default; - -// Omega Float Direction: -// The direction that +omega elements are floated by deafult. -$omega-float : opposite-position($from-direction) !default; - -// Container Width: -// Override the total width of your grid, using any length (50em, 75%, etc.) -$container-width : false !default; - -// Container Style: -// 'magic' - Static (fixed or elastic) when there's enough space, -// fluid when there isn't. This is the SUSY MAGIC SAUCE(TM). -// 'static' - Forces the grid container to remain static at all times. -// 'fluid' - Forces the grid to remain fluid at all times. -// (this will overrule any static $container-width settings) -$container-style : magic !default; - -// Border-Box Sizing -// Adjust the grid math appropriately for box-sizing: border-box; -// Warning: This does not actually apply the new box model! -// In most cases you can ignore this setting, -// and simply apply the border-box-sizing mixin. -$border-box-sizing : false !default; - -// Pixel Values only: -// Make sure only pixel values are set for the container width. -$pixel-values-only : false !default; - -// --------------------------------------------------------------------------- -// IE Settings - -// When you are using a seperate IE stylesheet, -// you can use these settings to control the output of at-breakpoint. -// By default, at-breakpoint will output media-queries as well as -// any defined ie-fallback classes. -$breakpoint-media-output : true !default; -$breakpoint-ie-output : true !default; - -// Danger Zone! Only set as 'true' in IE-specific style sheets. -$breakpoint-raw-output : false !default; diff --git a/_sass/vendor/susy/susy/output/_float.scss b/_sass/vendor/susy/susy/output/_float.scss deleted file mode 100644 index 9c24051c92..0000000000 --- a/_sass/vendor/susy/susy/output/_float.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Float API -// ========= - -@import "shared"; - -@import "float/container"; -@import "float/span"; -@import "float/end"; -@import "float/isolate"; diff --git a/_sass/vendor/susy/susy/output/_shared.scss b/_sass/vendor/susy/susy/output/_shared.scss deleted file mode 100644 index dd9df4ed87..0000000000 --- a/_sass/vendor/susy/susy/output/_shared.scss +++ /dev/null @@ -1,15 +0,0 @@ -// Shared API -// ========== - -@import "support"; - -@import "shared/inspect"; -@import "shared/output"; -@import "shared/direction"; -@import "shared/background"; -@import "shared/container"; -@import "shared/margins"; -@import "shared/padding"; - - - diff --git a/_sass/vendor/susy/susy/output/_support.scss b/_sass/vendor/susy/susy/output/_support.scss deleted file mode 100644 index 53dbc9c3f0..0000000000 --- a/_sass/vendor/susy/susy/output/_support.scss +++ /dev/null @@ -1,9 +0,0 @@ -// Susy Browser Support -// ==================== - -@import "support/support"; -@import "support/prefix"; -@import "support/background"; -@import "support/box-sizing"; -@import "support/rem"; -@import "support/clearfix"; diff --git a/_sass/vendor/susy/susy/output/float/_container.scss b/_sass/vendor/susy/susy/output/float/_container.scss deleted file mode 100644 index 121eb11ae9..0000000000 --- a/_sass/vendor/susy/susy/output/float/_container.scss +++ /dev/null @@ -1,16 +0,0 @@ -// Float Container API -// =================== - -// Float Container -// --------------- -// - [$width] : -// - [$justify] : left | center | right -// - [$math] : fluid | static -@mixin float-container( - $width, - $justify: auto auto, - $property: max-width -) { - @include susy-clearfix; - @include container-output($width, $justify, $property); -} diff --git a/_sass/vendor/susy/susy/output/float/_end.scss b/_sass/vendor/susy/susy/output/float/_end.scss deleted file mode 100644 index 3369997fd0..0000000000 --- a/_sass/vendor/susy/susy/output/float/_end.scss +++ /dev/null @@ -1,40 +0,0 @@ -// Float Ends API -// ============== - -// Susy End Defaults -// ----------------- -// - PRIVATE -@include susy-defaults(( - last-flow: to, -)); - -// Float Last -// ---------- -// - [$flow] : ltr | rtl -@mixin float-last( - $flow: map-get($susy-defaults, flow), - $last-flow: map-get($susy-defaults, last-flow), - $margin: 0 -) { - $to: to($flow); - - $output: ( - float: if($last-flow == to, $to, null), - margin-#{$to}: $margin, - ); - - @include output($output); -} - -// Float First -// ----------- -// - [$flow] : ltr | rtl -@mixin float-first( - $flow: map-get($susy-defaults, flow) -) { - $output: ( - margin-#{from($flow)}: 0, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/float/_isolate.scss b/_sass/vendor/susy/susy/output/float/_isolate.scss deleted file mode 100644 index 4dd3c2309e..0000000000 --- a/_sass/vendor/susy/susy/output/float/_isolate.scss +++ /dev/null @@ -1,22 +0,0 @@ -// Float Isolation API -// =================== - -// Isolate Output -// -------------- -// - $push : -// - [$flow] : ltr | rtl -@mixin isolate-output( - $push, - $flow: map-get($susy-defaults, flow) -) { - $to: to($flow); - $from: from($flow); - - $output: ( - float: $from, - margin-#{$from}: $push, - margin-#{$to}: -100%, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/float/_span.scss b/_sass/vendor/susy/susy/output/float/_span.scss deleted file mode 100644 index 5b732ccb24..0000000000 --- a/_sass/vendor/susy/susy/output/float/_span.scss +++ /dev/null @@ -1,35 +0,0 @@ -// Float Span API -// ============== - -// Float Span Output -// ----------------- -// - $width : -// - [$float] : from | to -// - [$margin-before] : -// - [$margin-after] : -// - [$padding-before] : -// - [$padding-after] : -// - [$flow] : ltr | rtl -@mixin float-span-output( - $width, - $float : from, - $margin-before : null, - $margin-after : null, - $padding-before : null, - $padding-after : null, - $flow : map-get($susy-defaults, flow) -) { - $to : to($flow); - $from : from($flow); - - $output: ( - width: $width, - float: if($float == to, $to, null) or if($float == from, $from, null), - margin-#{$from}: $margin-before, - margin-#{$to}: $margin-after, - padding-#{$from}: $padding-before, - padding-#{$to}: $padding-after, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/shared/_background.scss b/_sass/vendor/susy/susy/output/shared/_background.scss deleted file mode 100644 index c230f61369..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_background.scss +++ /dev/null @@ -1,26 +0,0 @@ -// Grid Background API -// =================== -// - Sub-pixel rounding can lead to several pixels variation between browsers. - -// Grid Background Output -// ---------------------- -// - $image: background-image -// - $size: background-size -// - $clip: background-clip -// - [$flow]: ltr | rtl -@mixin background-grid-output ( - $image, - $size: null, - $clip: null, - $flow: map-get($susy-defaults, flow) -) { - $output: ( - background-image: $image, - background-size: $size, - background-origin: $clip, - background-clip: $clip, - background-position: from($flow) top, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/shared/_container.scss b/_sass/vendor/susy/susy/output/shared/_container.scss deleted file mode 100644 index 7c7d4f17e9..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_container.scss +++ /dev/null @@ -1,21 +0,0 @@ -// Shared Container API -// ==================== - -// Container Output -// ---------------- -// - [$width] : -// - [$justify] : left | center | right -// - [$math] : fluid | static -@mixin container-output( - $width, - $justify: auto auto, - $property: max-width -) { - $output: ( - #{$property}: $width or 100%, - margin-left: nth($justify, 1), - margin-right: nth($justify, 2), - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/shared/_direction.scss b/_sass/vendor/susy/susy/output/shared/_direction.scss deleted file mode 100644 index abb9c36fc4..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_direction.scss +++ /dev/null @@ -1,42 +0,0 @@ -// Direction Helpers -// ================= - -// Susy Flow Defaults -// ------------------ -// - PRIVATE -@include susy-defaults(( - flow: ltr, -)); - -// Get Direction -// ------------- -// Return the 'from' or 'to' direction of a ltr or rtl flow. -// - [$flow] : ltr | rtl -// - [$key] : from | to -@function get-direction( - $flow: map-get($susy-defaults, flow), - $key: from -) { - $return: if($flow == rtl, (from: right, to: left), (from: left, to: right)); - @return map-get($return, $key); -} - -// To -// -- -// Return the 'to' direction of a flow -// - [$flow] : ltr | rtl -@function to( - $flow: map-get($susy-defaults, flow) -) { - @return get-direction($flow, to); -} - -// From -// ---- -// Return the 'from' direction of a flow -// - [$flow] : ltr | rtl -@function from( - $flow: map-get($susy-defaults, flow) -) { - @return get-direction($flow, from); -} diff --git a/_sass/vendor/susy/susy/output/shared/_inspect.scss b/_sass/vendor/susy/susy/output/shared/_inspect.scss deleted file mode 100644 index b0af9b6d2b..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_inspect.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Debugging -// ========= - -// Susy Inspect -// ------------ -// Output arguments passed to a inspect. -// - $mixin : -// - $inspec : - -@mixin susy-inspect( - $mixin, - $inspect -) { - $show: false; - - @each $item in $inspect { - @if index($item, inspect) { - $show: true; - } - } - - @if $show or susy-get(debug inspect) { - -susy-#{$mixin}: inspect($inspect); - } -} diff --git a/_sass/vendor/susy/susy/output/shared/_margins.scss b/_sass/vendor/susy/susy/output/shared/_margins.scss deleted file mode 100644 index cd73e8cf15..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_margins.scss +++ /dev/null @@ -1,23 +0,0 @@ -// Margins API -// =========== - -// Margin Output -// ------------- -// - $before : -// - $after : -// - [$flow] : ltr | rtl -@mixin margin-output( - $before, - $after, - $flow: map-get($susy-defaults, flow) -) { - $to: to($flow); - $from: from($flow); - - $output: ( - margin-#{$from}: $before, - margin-#{$to}: $after, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/shared/_output.scss b/_sass/vendor/susy/susy/output/shared/_output.scss deleted file mode 100644 index 20fc2d6101..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_output.scss +++ /dev/null @@ -1,14 +0,0 @@ -// Output -// ====== - -// Output -// ------ -// Output CSS with proper browser support. -// - $styles : -@mixin output( - $styles -) { - @each $prop, $val in $styles { - @include susy-support($prop, $val); - } -} diff --git a/_sass/vendor/susy/susy/output/shared/_padding.scss b/_sass/vendor/susy/susy/output/shared/_padding.scss deleted file mode 100644 index 5069d0cbf0..0000000000 --- a/_sass/vendor/susy/susy/output/shared/_padding.scss +++ /dev/null @@ -1,23 +0,0 @@ -// Padding API -// =========== - -// Padding Output -// -------------- -// - $before : -// - $after : -// - [$flow] : ltr | rtl -@mixin padding-output( - $before, - $after, - $flow: map-get($susy-defaults, flow) -) { - $to: to($flow); - $from: from($flow); - - $output: ( - padding-#{$from}: $before, - padding-#{$to}: $after, - ); - - @include output($output); -} diff --git a/_sass/vendor/susy/susy/output/support/_background.scss b/_sass/vendor/susy/susy/output/support/_background.scss deleted file mode 100644 index b14150285c..0000000000 --- a/_sass/vendor/susy/susy/output/support/_background.scss +++ /dev/null @@ -1,58 +0,0 @@ -// Background Properties -// ===================== - -// Susy Background Image -// --------------------- -// Check for an existing support mixin, or provide a simple fallback. -// - $image: -@mixin susy-background-image( - $image -) { - @if susy-support(background-image, (mixin: background-image), $warn: false) { - @include background-image($image...); - } @else { - background-image: $image; - } -} - -// Susy Background Size -// --------------------- -// Check for an existing support mixin, or provide a simple fallback. -// - $image: -@mixin susy-background-size( - $size -) { - @if susy-support(background-options, (mixin: background-size)) { - @include background-size($size); - } @else { - background-size: $size; - } -} - -// Susy Background Origin -// ---------------------- -// Check for an existing support mixin, or provide a simple fallback. -// - $image: -@mixin susy-background-origin( - $origin -) { - @if susy-support(background-options, (mixin: background-origin)) { - @include background-origin($origin); - } @else { - background-origin: $origin; - } -} - -// Susy Background Clip -// -------------------- -// Check for an existing support mixin, or provide a simple fallback. -// - $image: -@mixin susy-background-clip( - $clip -) { - @if susy-support(background-options, (mixin: background-clip)) { - @include background-clip($clip); - } @else { - background-clip: $clip; - } -} diff --git a/_sass/vendor/susy/susy/output/support/_box-sizing.scss b/_sass/vendor/susy/susy/output/support/_box-sizing.scss deleted file mode 100644 index bf50bbc9cd..0000000000 --- a/_sass/vendor/susy/susy/output/support/_box-sizing.scss +++ /dev/null @@ -1,19 +0,0 @@ -// Box Sizing -// ========== - -// Box Sizing -// ---------- -// Check for an existing support mixin, or provide a simple fallback. -// - $model: -@mixin susy-box-sizing( - $model: content-box -) { - @if $model { - @if susy-support(box-sizing, (mixin: box-sizing), $warn: false) { - @include box-sizing($model); - } @else { - $prefix: (moz, webkit, official); - @include susy-prefix(box-sizing, $model, $prefix); - } - } -} diff --git a/_sass/vendor/susy/susy/output/support/_clearfix.scss b/_sass/vendor/susy/susy/output/support/_clearfix.scss deleted file mode 100644 index 48c6e7b790..0000000000 --- a/_sass/vendor/susy/susy/output/support/_clearfix.scss +++ /dev/null @@ -1,18 +0,0 @@ -// Susy Fallback Clearfix -// ====================== - - -// Clearfix -// -------- -// Check for an existing support mixin, or provide a simple fallback. -@mixin susy-clearfix { - @if susy-support(clearfix, (mixin: clearfix)) { - @include clearfix; - } @else { - &:after { - content: " "; - display: block; - clear: both; - } - } -} diff --git a/_sass/vendor/susy/susy/output/support/_prefix.scss b/_sass/vendor/susy/susy/output/support/_prefix.scss deleted file mode 100644 index f4e26ecc50..0000000000 --- a/_sass/vendor/susy/susy/output/support/_prefix.scss +++ /dev/null @@ -1,19 +0,0 @@ -// Susy Prefix -// =========== - -// Prefix -// ------ -// Output simple prefixed properties. -// - $prop : -// - $val : -// - [$prefix] : -@mixin susy-prefix( - $prop, - $val, - $prefix: official -) { - @each $fix in $prefix { - $fix: if($fix == official or not($fix), $prop, '-#{$fix}-#{$prop}'); - @include susy-rem($fix, $val); - } -} diff --git a/_sass/vendor/susy/susy/output/support/_rem.scss b/_sass/vendor/susy/susy/output/support/_rem.scss deleted file mode 100644 index 0a807f79cc..0000000000 --- a/_sass/vendor/susy/susy/output/support/_rem.scss +++ /dev/null @@ -1,22 +0,0 @@ -// rem Support -// =========== - -// rem -// --- -// Check for an existing support mixin, or output directly. -// - $prop : -// - $val : -@mixin susy-rem( - $prop, - $val -) { - $_reqs: ( - variable: rhythm-unit rem-with-px-fallback, - mixin: rem, - ); - @if susy-support(rem, $_reqs, $warn: false) and $rhythm-unit == rem { - @include rem($prop, $val); - } @else { - #{$prop}: $val; - } -} diff --git a/_sass/vendor/susy/susy/output/support/_support.scss b/_sass/vendor/susy/susy/output/support/_support.scss deleted file mode 100644 index 9699113553..0000000000 --- a/_sass/vendor/susy/susy/output/support/_support.scss +++ /dev/null @@ -1,85 +0,0 @@ -// Browser Support -// =============== - -// Susy Support Defaults -// --------------------- -@include susy-defaults(( - use-custom: ( - clearfix: false, - background-image: true, - background-options: false, - breakpoint: true, - box-sizing: true, - rem: true, - ), -)); - - -// Susy Support [mixin] -// -------------------- -// Send property-value pairs to the proper support modules. -// - $prop : -// - $val : -@mixin susy-support( - $prop, - $val -) { - // Background Support - @if $prop == background-image { - @include susy-background-image($val); - } @else if $prop == background-size { - @include susy-background-size($val); - } @else if $prop == background-origin { - @include susy-background-origin($val); - } @else if $prop == background-clip { - @include susy-background-clip($val); - } - - // Box-Sizing Support - @else if $prop == box-sizing { - @include susy-box-sizing($val); - } - - // Rem Support - @else { - @include susy-rem($prop, $val); - } -} - - -// Susy Support [function] -// ----------------------- -// Check for support of a feature. -// - $feature : -// - e.g "rem" or "box-sizing" -// - $requirements : -// - e.g (variable: rem-with-px-fallback, mixin: rem) -// - $warn : -@function susy-support( - $feature, - $requirements: (), - $warn: true -) { - $_support: susy-get(use-custom $feature); - - @if $_support { - $_fail: false; - - @each $_type, $_req in $requirements { - @each $_i in $_req { - $_pass: call(unquote("#{$_type}-exists"), $_i); - - @if not($_pass) { - $_fail: true; - @if $warn { - @warn "You requested custom support of #{$feature}, but the #{$_i} #{$_type} is not available."; - } - } - } - } - - $_support: if($_fail, false, $_support); - } - - @return $_support; -} diff --git a/_sass/vendor/susy/susy/su/_grid.scss b/_sass/vendor/susy/susy/su/_grid.scss deleted file mode 100644 index 7fe2a02d09..0000000000 --- a/_sass/vendor/susy/susy/su/_grid.scss +++ /dev/null @@ -1,103 +0,0 @@ -// Column math -// =========== - - -// Is Symmetrical -// -------------- -// Returns true if a grid is symmetrical. -// - [$columns] : | -@function is-symmetrical( - $columns: susy-get(columns) -) { - $columns: valid-columns($columns); - @return if(type-of($columns) == number, $columns, null); -} - - -// Susy Count -// ---------- -// Find the number of columns in a given layout -// - [$columns] : | -@function susy-count( - $columns: susy-get(columns) -) { - $columns: valid-columns($columns); - @return is-symmetrical($columns) or length($columns); -} - - -// Susy Sum -// -------- -// Find the total sum of column-units in a layout -// - [$columns] : | -// - [$gutters] : -// - [$spread] : false/narrow | wide | wider -@function susy-sum( - $columns : susy-get(columns), - $gutters : susy-get(gutters), - $spread : false -) { - $columns: valid-columns($columns); - $gutters: valid-gutters($gutters); - - $spread: if($spread == wide, 0, if($spread == wider, 1, -1)); - $gutter-sum: (susy-count($columns) + $spread) * $gutters; - $column-sum: is-symmetrical($columns); - - @if not($column-sum) { - @each $column in $columns { - $column-sum: ($column-sum or 0) + $column; - } - } - - @return $column-sum + $gutter-sum; -} - - -// Susy Slice -// ---------- -// Return a subset of columns at a given location. -// - $span : -// - $location : -// - [$columns] : | -@function susy-slice( - $span, - $location, - $columns: susy-get(columns) -) { - $columns: valid-columns($columns); - $sub-columns: $span; - - @if not(is-symmetrical($columns)) { - $location: $location or 1; - $sub-columns: (); - @for $i from $location to ($location + $span) { - $sub-columns: append($sub-columns, nth($columns, $i)); - } - } - - @return $sub-columns; -} - - -// Susy -// ---- -// Find the sum of a column-span. -// - $span : -// - $location : -// - [$columns] : | -// - [$gutters] : -// - [$spread] : false/narrow | wide | wider -@function susy( - $span, - $location : false, - $columns : susy-get(columns), - $gutters : susy-get(gutters), - $spread : false -) { - $columns: valid-columns($columns); - $gutters: valid-gutters($gutters); - $span: susy-slice($span, $location, $columns); - - @return susy-sum($span, $gutters, $spread); -} diff --git a/_sass/vendor/susy/susy/su/_settings.scss b/_sass/vendor/susy/susy/su/_settings.scss deleted file mode 100644 index 8b439aaaf1..0000000000 --- a/_sass/vendor/susy/susy/su/_settings.scss +++ /dev/null @@ -1,73 +0,0 @@ -// Settings -// ======== - -// Version -// ------- -$su-version: 1.1; - - -// Default Settings -// ---------------- -// PRIVATE: The basic settings -$susy-defaults: ( - columns: 4, - gutters: .25, -); - - -// User Settings -// ------------- -// - Define the $susy variable with a map of your own settings. -// - Set EITHER $column-width OR $container -// - Use $column-width for static layouts -$susy: () !default; - - -// Susy Defaults -// ------------- -// PRIVATE: Add defaults to Susy -@mixin susy-defaults( - $defaults -) { - $susy-defaults: map-merge($susy-defaults, $defaults) !global; -} - - -// Susy Set -// -------- -// Change one setting -// - $key : setting name -// - $value : setting value -@mixin susy-set( - $key-value... -) { - $susy: _susy-deep-set($susy, $key-value...) !global; -} - - -// Susy Get -// -------- -// Return one setting from a grid -// - $key : -// - $layout : -@function susy-get( - $key, - $layout: map-merge($susy-defaults, $susy) -) { - $layout: parse-grid($layout); - $_options: $layout $susy $susy-defaults; - $_break: false; - $_return: null; - - @each $opt in $_options { - @if type-of($opt) == map and not($_break) { - $_keyset: _susy-deep-has-key($opt, $key...); - @if $_keyset { - $_return: _susy-deep-get($opt, $key...); - $_break: true; - } - } - } - - @return $_return; -} diff --git a/_sass/vendor/susy/susy/su/_utilities.scss b/_sass/vendor/susy/susy/su/_utilities.scss deleted file mode 100644 index b737f21297..0000000000 --- a/_sass/vendor/susy/susy/su/_utilities.scss +++ /dev/null @@ -1,111 +0,0 @@ -// Map Functions -// ============= - - -// Truncate List -// ------------- -// - Return a list, truncated to a given length -@function _susy-truncate-list( - $list, - $length -) { - $_return: (); - - @for $i from 1 through length($list) { - $_return: if($i <= $length, append($_return, nth($list, $i)), $_return); - } - - @return $_return; -} - - -// Deep Get -// -------- -// - Return a value deep in nested maps -@function _susy-deep-get( - $map, - $keys... -) { - $_return: $map; - - @each $key in $keys { - @if type-of($_return) == map { - $_return: map-get($_return, $key); - } - } - - @return $_return; -} - - -// Deep Set -// -------- -// - Set a value deep in nested maps -@function _susy-deep-set( - $map, - $keys-value... -) { - $_value: nth($keys-value, -1); - $_keys: _susy-truncate-list($keys-value, length($keys-value) - 1); - $_length: length($_keys); - $_return: (); - - @for $i from 1 through $_length { - $_n: 0 - $i; - $_level: _susy-truncate-list($_keys, $_length + $_n); - $_level: _susy-deep-get($map, $_level...); - $_merge: nth($_keys, $_n); - $_merge: ($_merge: $_value); - $_return: if($_level, map-merge($_level, $_merge), $_merge); - $_value: $_return; - } - - @return $_return; -} - - -// Deep Merge -// ---------- -// Return 2 objects of any depth, merged -@function _susy-deep-merge( - $map1, - $map2 -) { - - @if type-of($map1) != map or type-of($map2) != map { - $map1: $map2; - } @else { - @each $key, $value in $map2 { - $_new: ($key: _susy_deep-merge(map-get($map1, $key), $value)); - $map1: map-merge($map1, $_new); - } - } - - @return $map1; -} - - -// Deep Has-Key -// ------------ -// - Return true if a deep key exists -@function _susy-deep-has-key( - $map, - $keys... -) { - $_return: null; - $_stop: false; - - @each $key in $keys { - @if not($_stop) { - $_return: map-has-key($map, $key); - } - - @if $_return { - $map: map-get($map, $key); - } @else { - $_stop: true; - } - } - - @return $_return; -} diff --git a/_sass/vendor/susy/susy/su/_validation.scss b/_sass/vendor/susy/susy/su/_validation.scss deleted file mode 100644 index 4c6ab8dac0..0000000000 --- a/_sass/vendor/susy/susy/su/_validation.scss +++ /dev/null @@ -1,57 +0,0 @@ -// Math Validation -// =============== - - -// Valid Columns -// ------------- -// Check that a column setting is valid. -@function valid-columns( - $columns, - $silent: false -) { - $type: type-of($columns); - $return: null; - - @if $type == number and unitless($columns) { - $return: $columns; - } @else if $type == list { - $fail: null; - @each $col in $columns { - @if type-of($col) == number { - $fail: $fail or if(unitless($col), null, true); - } @else { - $fail: true; - } - } - $return: if($fail, $return, $columns); - } - - @if $return != $columns and not($silent) { - $return: null; - $warn: '$columns must be a unitless number or list of unitless numbers.'; - @warn $warn + ' Current value [#{$type}]: #{$columns}'; - } - - @return $return; -} - - -// Valid Gutters -// ------------- -// Check that a gutter setting is valid. -@function valid-gutters( - $gutters, - $silent: false -) { - $type: type-of($gutters); - $return: null; - - @if $type == number and unitless($gutters) { - $return: $gutters; - } @else if not($silent) { - $warn: '$gutters must be a unitless number.'; - @warn $warn + ' Current value [#{$type}]: #{$gutters}'; - } - - @return $return; -} diff --git a/assets/css/main.scss b/assets/css/main.scss index fab1b1f0bf..80ba817c03 100644 --- a/assets/css/main.scss +++ b/assets/css/main.scss @@ -1,79 +1,8 @@ --- +# Only the main Sass file needs front matter (the dashes are enough) --- -/* - * Minimal Mistakes Jekyll Theme - * - * - Michael Rose - * - mademistakes.com - * - https://twitter.com/mmistakes - * -*/ +@charset "utf-8"; -/* - Variables - ========================================================================== */ - -@import "variables"; - - -/* - Vendor - ========================================================================== */ - -/* Breakpoint - media query mixins */ -@import "vendor/breakpoint/breakpoint"; -@include breakpoint-set("to ems", true); - -/* Font Awesome - icon font set */ -@import "vendor/font-awesome/font-awesome"; - -/* Magnific Popup - responsive lightbox */ -@import "vendor/magnific-popup/magnific-popup"; // Magnific Popup - -/* Susy - grid mixins */ -$susy: ( - columns: 12, - gutters: 1/4, - math: fluid, - output: float, - gutter-position: after, - container: $large, - global-box-sizing: border-box, - // debug: ( - // image: show, - // color: blue, - // output: overlay, - // toggle: top right, - // ), -); -@import "vendor/susy/susy"; - - -/* - Base - ========================================================================== */ - -@import "mixins"; -@import "reset"; -@import "base"; -@import "utilities"; -@import "animations"; -@import "tables"; -@import "buttons"; -@import "notices"; -@import "masthead"; -@import "navigation"; -@import "footer"; -@import "syntax"; -@import "forms"; - - -/* - Layout specific - ========================================================================== */ - -@import "page"; -@import "archive"; -@import "sidebar"; -@import "print"; +@import "minimal-mistakes/skins/{{ site.minimal_mistakes_skin | default: 'default' }}"; // skin +@import "minimal-mistakes"; // main partials diff --git a/assets/fonts/FontAwesome.otf b/assets/fonts/FontAwesome.otf index d4de13e832..401ec0f36e 100644 Binary files a/assets/fonts/FontAwesome.otf and b/assets/fonts/FontAwesome.otf differ diff --git a/assets/fonts/fontawesome-webfont.eot b/assets/fonts/fontawesome-webfont.eot index c7b00d2ba8..e9f60ca953 100644 Binary files a/assets/fonts/fontawesome-webfont.eot and b/assets/fonts/fontawesome-webfont.eot differ diff --git a/assets/fonts/fontawesome-webfont.svg b/assets/fonts/fontawesome-webfont.svg index 8b66187fe0..855c845e53 100644 --- a/assets/fonts/fontawesome-webfont.svg +++ b/assets/fonts/fontawesome-webfont.svg @@ -1,685 +1,2671 @@ - - + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/fonts/fontawesome-webfont.ttf b/assets/fonts/fontawesome-webfont.ttf index f221e50a2e..35acda2fa1 100644 Binary files a/assets/fonts/fontawesome-webfont.ttf and b/assets/fonts/fontawesome-webfont.ttf differ diff --git a/assets/fonts/fontawesome-webfont.woff b/assets/fonts/fontawesome-webfont.woff index 6e7483cf61..400014a4b0 100644 Binary files a/assets/fonts/fontawesome-webfont.woff and b/assets/fonts/fontawesome-webfont.woff differ diff --git a/assets/fonts/fontawesome-webfont.woff2 b/assets/fonts/fontawesome-webfont.woff2 index 7eb74fd127..4d13fc6040 100644 Binary files a/assets/fonts/fontawesome-webfont.woff2 and b/assets/fonts/fontawesome-webfont.woff2 differ diff --git a/assets/js/_main.js b/assets/js/_main.js index 704d6c30ee..cc9cc25e4f 100644 --- a/assets/js/_main.js +++ b/assets/js/_main.js @@ -25,38 +25,10 @@ $(document).ready(function(){ // FitVids init $("#main").fitVids(); - // init sticky sidebar - $(".sticky").Stickyfill(); - - var stickySideBar = function(){ - var show = $(".author__urls-wrapper #toggle-nav").length === 0 ? $(window).width() > 1024 : !$(".author__urls-wrapper #toggle-nav").is(":visible"); - // console.log("has button: " + $(".author__urls-wrapper #toggle-nav").length === 0); - // console.log("Window Width: " + windowWidth); - // console.log("show: " + show); - //old code was if($(window).width() > 1024) - if (show) { - // fix - Stickyfill.rebuild(); - Stickyfill.init(); - $(".author__urls").show(); - } else { - // unfix - Stickyfill.stop(); - $(".author__urls").hide(); - } - }; - - stickySideBar(); - - $(window).resize(function(){ - stickySideBar(); - }); - // Follow menu drop down - - $(".author__urls-wrapper #toggle-nav").on("click", function() { - $(".author__urls").fadeToggle("fast", function() {}); - $(".author__urls-wrapper #toggle-nav").toggleClass("open"); + $(".author__urls-wrapper button").on("click", function() { + $(".author__urls").toggleClass("is--visible"); + $(".author__urls-wrapper button").toggleClass("open"); }); // init smooth scroll @@ -98,19 +70,150 @@ $(document).ready(function(){ }); if((window.location.href.indexOf("/he_IL/") > -1) || (window.location.href.indexOf("/ar_SA/") > -1)) { - $(".nav-selector").css("left", "3rem"); - $(".lang-selector").css("left", "0"); - $(".links-menu").css("right", "auto"); - $(".lang-menu").css("right", "auto"); - $(".links-menu").css("left", "3rem"); - $(".lang-menu").css("left", "0"); - $('.greedy-nav').prepend(''); - $('.greedy-nav').prepend(''); - $('.greedy-nav').prepend(''); - $('.greedy-nav').prepend(''); - $(".masthead__menu-item--lg").css("padding-right", "inherit"); - $(".masthead__menu-item--lg").css("padding-left", "2em"); - document.body.style.direction = "rtl"; + $("body").css("direction", "rtl"); + + $("nav.greedy-nav .nav-selector").css("left", "2.5rem"); + $("nav.greedy-nav .lang-selector").css("left", ".2rem"); + + $("nav.greedy-nav .links-menu").css("right", "auto"); + $("nav.greedy-nav .lang-menu").css("right", "auto"); + + $("nav.greedy-nav .links-menu").css("left", "2.5rem"); + $("nav.greedy-nav .lang-menu").css("left", ".2rem"); + + $("nav.greedy-nav .visible-links").css("padding-right", "0"); + $("nav.greedy-nav .visible-links").css("padding-left", "2rem"); + + $("nav.greedy-nav .visible-links li:first-child a").css("margin-right", "0"); + $("nav.greedy-nav .visible-links li:first-child a").css("margin-left", "1rem"); + + $("nav.greedy-nav .visible-links li:first-child").css("padding-right", "0"); + $("nav.greedy-nav .visible-links li:first-child").css("padding-left", "2em"); + + $("nav.greedy-nav .visible-links li:last-child a").css("margin-right", "1rem"); + $("nav.greedy-nav .visible-links li:last-child a").css("margin-left", "0"); + + // for some reason js cannot directly modify :before and :after pseudo-elements' css + $('nav.greedy-nav').prepend(''); + $('nav.greedy-nav').prepend(''); + + $('nav.greedy-nav').prepend(''); + $('nav.greedy-nav').prepend(''); } + var sidebar_shown = true; + var sidebar_hidden_pages = ["a9lh-to-b9s", "credits", "donations", "f3-(linux)", "f3x-(mac)", + "faq", "file-extensions-(windows)", "get-started", "h2testw-(windows)", + "region-changing", "site-navigation", "troubleshooting", "uninstall-cfw", + "updating-b9s", "why-ads"]; + + for(var i = 0; i < sidebar_hidden_pages.length; i++){ + if(window.location.href.indexOf(sidebar_hidden_pages[i]) > -1) { + sidebar_shown = false; + } + } + + var devices = { + "get-started-(old-3ds)": "0", + "get-started-(new-3ds)": "1", + }; + + var methods = { + "installing-boot9strap-(2xrsa)": "0", + "installing-boot9strap-(mset)": "1", + "installing-boot9strap-(browser)": "2", + "homebrew-launcher-(soundhax)": "3", + "homebrew-launcher-(alternatives)": "4", + "installing-boot9strap-(dsiware)": "5", + "installing-boot9strap-(dsiware-game-injection)": "6", + "installing-boot9strap-(dsiware-save-injection)": "7", + "ntr-and-cubic-ninja": "8", + "ntrboot": "9", + "flashing-ntrboot-(3ds-single-system)": "10", + "flashing-ntrboot-(3ds-multi-system)": "11", + "flashing-ntrboot-(dsi)": "12", + "flashing-ntrboot-(nds)": "13", + "flashing-ntrboot-(powersaves)": "14", + "installing-boot9strap-(hardmod)": "15", + }; + + for(var device in devices){ + if(window.location.href.indexOf(device) > -1) { + localStorage.setItem('device', devices[device]); + } + } + + for(var method in methods){ + if(window.location.href.indexOf(method) > -1) { + localStorage.setItem('method', methods[method]); + } + } + + var device, method; + if(!((device = localStorage.getItem('device')) && (method = localStorage.getItem('method')))){ + sidebar_shown = false; + } + + if(sidebar_shown){ + var unhide = []; + var device_old = { + "0": ["installing-boot9strap-(2xrsa)", "finalizing-setup"], + "1": ["installing-boot9strap-(mset)", "finalizing-setup"], + "2": ["installing-boot9strap-(browser)", "finalizing-setup"], + "3": ["homebrew-launcher-(soundhax)", "installing-boot9strap-(homebrew-launcher)", "finalizing-setup"], + "4": ["homebrew-launcher-(alternatives)", "installing-boot9strap-(homebrew-launcher)", "finalizing-setup"], + "5": ["installing-boot9strap-(dsiware)"], + "6": ["installing-boot9strap-(dsiware)", "installing-boot9strap-(dsiware-game-injection)", "finalizing-setup"], + "7": ["installing-boot9strap-(dsiware)", "installing-boot9strap-(dsiware-save-injection)", "finalizing-setup"], + "9": ["ntrboot", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "10": ["ntrboot", "flashing-ntrboot-(3ds-single-system)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "11": ["ntrboot", "flashing-ntrboot-(3ds-multi-system)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "12": ["ntrboot", "flashing-ntrboot-(dsi)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "13": ["ntrboot", "flashing-ntrboot-(nds)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "14": ["ntrboot", "flashing-ntrboot-(powersaves)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "15": ["installing-boot9strap-(hardmod)", "finalizing-setup"], + }; + var device_new = { + "0": ["installing-boot9strap-(2xrsa)", "godmode9-usage#restoring-a-nand-backup", "finalizing-setup"], + "3": ["homebrew-launcher-(soundhax)", "installing-boot9strap-(homebrew-launcher)", "finalizing-setup"], + "4": ["homebrew-launcher-(alternatives)", "installing-boot9strap-(homebrew-launcher)", "finalizing-setup"], + "5": ["installing-boot9strap-(dsiware)"], + "6": ["installing-boot9strap-(dsiware)", "installing-boot9strap-(dsiware-game-injection)", "finalizing-setup"], + "7": ["installing-boot9strap-(dsiware)", "installing-boot9strap-(dsiware-save-injection)", "finalizing-setup"], + "8": ["ntr-and-cubic-ninja", "installing-boot9strap-(homebrew-launcher)", "finalizing-setup"], + "9": ["ntrboot", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "10": ["ntrboot", "flashing-ntrboot-(3ds-single-system)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "11": ["ntrboot", "flashing-ntrboot-(3ds-multi-system)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "12": ["ntrboot", "flashing-ntrboot-(dsi)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "13": ["ntrboot", "flashing-ntrboot-(nds)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "14": ["ntrboot", "flashing-ntrboot-(powersaves)", "installing-boot9strap-(ntrboot)", "finalizing-setup"], + "15": ["installing-boot9strap-(hardmod)", "finalizing-setup"], + }; + var route = { + "0": device_old, + "1": device_new, + } + unhide = unhide.concat(route[device][method]); + if(typeof unhide !== 'undefined' && unhide.length > 0){ + unhide.push("home"); + if(device == "0"){ + unhide.push("get-started-(old-3ds)"); + } else if (device == "1"){ + unhide.push("get-started-(new-3ds)"); + } + var ol = $('.sidebar.sticky .nav__list .nav__items ol'); + for (var i = 0; i < unhide.length; i++){ + ol.children('li[data-name="' + unhide[i] + '"]').css("display", ""); + } + ol.children().each(function(idx, li) { + var link = $(li).find("a").attr('href'); + if(window.location.href.indexOf(link) > -1 && link !== "/"){ + $(li).addClass("active"); + return false; + } + $(li).addClass("completed"); + }); + $('.sidebar.sticky').css("display", "inherit"); + } + } }); diff --git a/assets/js/main.min.js b/assets/js/main.min.js index 262e3693f9..bfc30ff6bf 100644 --- a/assets/js/main.min.js +++ b/assets/js/main.min.js @@ -1,5 +1,6 @@ -function updateNav(){var e=$btn.hasClass("hidden")?$nav.width():$nav.width()-$btn.width()-80;$vlinks.width()>e?(breaks.push($vlinks.width()),$vlinks.children().last().prependTo($hlinks),$btn.hasClass("hidden")&&$btn.removeClass("hidden")):(e>breaks[breaks.length-1]&&($hlinks.children().first().appendTo($vlinks),breaks.pop()),breaks.length<1&&($btn.addClass("hidden"),$hlinks.addClass("hidden"))),$btn.attr("count",breaks.length),$vlinks.width()>e&&updateNav()}!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function i(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,i){return!!t.call(e,i,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Te.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function r(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(Ae)||[],function(e,n){t[n]=!0}),t}function a(){ie.addEventListener?(ie.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(ie.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(ie.addEventListener||"load"===e.event.type||"complete"===ie.readyState)&&(a(),pe.ready())}function l(e,t,n){if(void 0===n&&1===e.nodeType){var i="data-"+t.replace(He,"-$1").toLowerCase();if(n=e.getAttribute(i),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:De.test(n)?pe.parseJSON(n):n)}catch(e){}pe.data(e,t,n)}else n=void 0}return n}function u(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,i){if(Ie(e)){var r,o,a=pe.expando,s=e.nodeType,l=s?pe.cache:e,u=s?e[a]:e[a]&&a;if(u&&l[u]&&(i||l[u].data)||void 0!==n||"string"!=typeof t)return u||(u=s?e[a]=ne.pop()||pe.guid++:a),l[u]||(l[u]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(i?l[u]=pe.extend(l[u],t):l[u].data=pe.extend(l[u].data,t)),o=l[u],i||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(r=o[t],null==r&&(r=o[pe.camelCase(t)])):r=o,r}}function d(e,t,n){if(Ie(e)){var i,r,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(i=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in i?t=[t]:(t=pe.camelCase(t),t=t in i?[t]:t.split(" ")),r=t.length;for(;r--;)delete i[t[r]];if(n?!u(i):!pe.isEmptyObject(i))return}(n||(delete a[s].data,u(a[s])))&&(o?pe.cleanData([e],!0):de.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function f(e,t,n,i){var r,o=1,a=20,s=i?function(){return i.cur()}:function(){return pe.css(e,t,"")},l=s(),u=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==u&&+l)&&Me.exec(pe.css(e,t));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do o=o||".5",c/=o,pe.style(e,t,c+u);while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(c=+c||+l||0,r=n[1]?c+(n[1]+1)*n[2]:+n[2],i&&(i.unit=u,i.start=c,i.end=r)),r}function p(e){var t=We.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,i,r=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(i=n[r]);r++)!t||pe.nodeName(i,t)?o.push(i):pe.merge(o,h(i,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function m(e,t){for(var n,i=0;null!=(n=e[i]);i++)pe._data(n,"globalEval",!t||pe._data(t[i],"globalEval"))}function g(e){Fe.test(e.type)&&(e.defaultChecked=e.checked)}function v(e,t,n,i,r){for(var o,a,s,l,u,c,d,f=e.length,v=p(t),y=[],b=0;f>b;b++)if(a=e[b],a||0===a)if("object"===pe.type(a))pe.merge(y,a.nodeType?[a]:a);else if(Ye.test(a)){for(l=l||v.appendChild(t.createElement("div")),u=(qe.exec(a)||["",""])[1].toLowerCase(),d=Xe[u]||Xe._default,l.innerHTML=d[1]+pe.htmlPrefilter(a)+d[2],o=d[0];o--;)l=l.lastChild;if(!de.leadingWhitespace&&Re.test(a)&&y.push(t.createTextNode(Re.exec(a)[0])),!de.tbody)for(a="table"!==u||Ue.test(a)?"
"!==d[1]||Ue.test(a)?0:l:l.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(y,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=v.lastChild}else y.push(t.createTextNode(a));for(l&&v.removeChild(l),de.appendChecked||pe.grep(h(y,"input"),g),b=0;a=y[b++];)if(i&&pe.inArray(a,i)>-1)r&&r.push(a);else if(s=pe.contains(a.ownerDocument,a),l=h(v.appendChild(a),"script"),s&&m(l),n)for(o=0;a=l[o++];)ze.test(a.type||"")&&n.push(a);return l=null,v}function y(){return!0}function b(){return!1}function x(){try{return ie.activeElement}catch(e){}}function w(e,t,n,i,r,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(i=i||n,n=void 0);for(s in t)w(e,s,n,i,t[s],o);return e}if(null==i&&null==r?(r=n,i=n=void 0):null==r&&("string"==typeof n?(r=i,i=void 0):(r=i,i=n,n=void 0)),r===!1)r=b;else if(!r)return e;return 1===o&&(a=r,r=function(e){return pe().off(e),a.apply(this,arguments)},r.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,r,i,n)})}function C(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function T(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function k(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function E(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,i,r,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(i=0,r=s[n].length;r>i;i++)pe.event.add(t,n,s[n][i])}a.data&&(a.data=pe.extend({},a.data))}}function S(e,t){var n,i,r;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!de.noCloneEvent&&t[pe.expando]){r=pe._data(t);for(i in r.events)pe.removeEvent(t,i,r.handle);t.removeAttribute(pe.expando)}"script"===n&&t.text!==e.text?(T(t).text=e.text,k(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),de.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Fe.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function N(e,t,n,i){t=oe.apply([],t);var r,o,a,s,l,u,c=0,d=e.length,f=d-1,p=t[0],m=pe.isFunction(p);if(m||d>1&&"string"==typeof p&&!de.checkClone&&it.test(p))return e.each(function(r){var o=e.eq(r);m&&(t[0]=p.call(this,r,o.html())),N(o,t,n,i)});if(d&&(u=v(t,e[0].ownerDocument,!1,e,i),r=u.firstChild,1===u.childNodes.length&&(u=r),r||i)){for(s=pe.map(h(u,"script"),T),a=s.length;d>c;c++)o=u,c!==f&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,"script"))),n.call(e[c],o,c);if(a)for(l=s[s.length-1].ownerDocument,pe.map(s,k),c=0;a>c;c++)o=s[c],ze.test(o.type||"")&&!pe._data(o,"globalEval")&&pe.contains(l,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ot,"")));u=r=null}return e}function L(e,t,n){for(var i,r=t?pe.filter(t,e):e,o=0;null!=(i=r[o]);o++)n||1!==i.nodeType||pe.cleanData(h(i)),i.parentNode&&(n&&pe.contains(i.ownerDocument,i)&&m(h(i,"script")),i.parentNode.removeChild(i));return e}function A(e,t){var n=pe(t.createElement(e)).appendTo(t.body),i=pe.css(n[0],"display");return n.detach(),i}function j(e){var t=ie,n=ut[e];return n||(n=A(e,t),"none"!==n&&n||(lt=(lt||pe("',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(z),T("BeforeChange",function(e,t,n){t!==n&&(t===z?W():n===z&&W(!0))}),T(l+"."+z,function(){W()})},getIframe:function(n,i){var r=n.src,o=t.st.iframe;e.each(o.patterns,function(){if(r.indexOf(this.index)>-1)return this.id&&(r="string"==typeof this.id?r.substr(r.lastIndexOf(this.id)+this.id.length,r.length):this.id.call(this,r)),r=this.src.replace("%id%",r),!1});var a={};return o.srcAction&&(a[o.srcAction]=r),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var X=function(e){var n=t.items.length;return e>n-1?e-n:e<0?n+e:e},Y=function(e,t,n){return e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var n=t.st.gallery,i=".mfp-gallery",o=Boolean(e.fn.mfpFastClick);return t.direction=!0,!(!n||!n.enabled)&&(a+=" mfp-gallery",T(p+i,function(){n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function(){if(t.items.length>1)return t.next(),!1}),r.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),T("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),T(f+i,function(e,i,r,o){var a=t.items.length;r.counter=a>1?Y(n.tCounter,o.index,a):""}),T("BuildControls"+i,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var i=n.arrowMarkup,r=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(b),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(b),s=o?"mfpFastClick":"click";r[s](function(){t.prev()}),a[s](function(){t.next()}),t.isIE7&&(k("b",r[0],!1,!0),k("a",r[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(r.add(a))}}),T(h+i,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),void T(l+i,function(){r.off(i),t.wrap.off("click"+i),t.arrowLeft&&o&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null}))},next:function(){t.direction=!0,t.index=X(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=X(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),r=Math.min(n[1],t.items.length);for(e=1;e<=(t.direction?r:i);e++)t._preloadItem(t.index+e);for(e=1;e<=(t.direction?i:r);e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=X(n),!t.items[n].preloaded){var i=t.items[n];i.parsed||(i=t.parseEl(n)),E("LazyLoad",i),"image"===i.type&&(i.img=e('').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,E("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(T("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),T("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function(){var t=1e3,n="ontouchstart"in window,i=function(){C.off("touchmove"+o+" touchend"+o)},r="mfpFastClick",o="."+r;e.fn.mfpFastClick=function(r){return e(this).each(function(){var a,s=e(this);if(n){var l,u,c,d,f,p;s.on("touchstart"+o,function(e){d=!1,p=1,f=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],u=f.clientX,c=f.clientY,C.on("touchmove"+o,function(e){f=e.originalEvent?e.originalEvent.touches:e.touches,p=f.length,f=f[0],(Math.abs(f.clientX-u)>10||Math.abs(f.clientY-c)>10)&&(d=!0,i())}).on("touchend"+o,function(e){i(),d||p>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function(){a=!1},t),r())})})}s.on("click"+o,function(){a||r()})})},e.fn.destroyMfpFastClick=function(){e(this).off("touchstart"+o+" click"+o),n&&C.off("touchmove"+o+" touchend"+o)}}(),N()}(window.jQuery||window.Zepto),!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(e){var t="1.7.2",n={},i={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},r=function(t){var n=[],i=!1,r=t.dir&&"left"===t.dir?"scrollLeft":"scrollTop";return this.each(function(){var t=e(this);if(this!==document&&this!==window)return!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(t[r]()>0?n.push(this):(t[r](1),i=t[r]()>0,i&&n.push(this),t[r](0))):(n.push(document.scrollingElement),!1)}),n.length||this.each(function(){this===document.documentElement&&"smooth"===e(this).css("scrollBehavior")&&(n=[this]),n.length||"BODY"!==this.nodeName||(n=[this])}),"first"===t.el&&n.length>1&&(n=[n[0]]),n};e.fn.extend({scrollable:function(e){var t=r.call(this,{dir:e});return this.pushStack(t)},firstScrollable:function(e){var t=r.call(this,{el:"first",dir:e});return this.pushStack(t)},smoothScroll:function(t,n){if(t=t||{},"options"===t)return n?this.each(function(){var t=e(this),i=e.extend(t.data("ssOpts")||{},n);e(this).data("ssOpts",i)}):this.first().data("ssOpts");var i=e.extend({},e.fn.smoothScroll.defaults,t),r=function(t){var n=function(e){return e.replace(/(:|\.|\/)/g,"\\$1")},r=this,o=e(this),a=e.extend({},i,o.data("ssOpts")||{}),s=i.exclude,l=a.excludeWithin,u=0,c=0,d=!0,f={},p=e.smoothScroll.filterPath(location.pathname),h=e.smoothScroll.filterPath(r.pathname),m=location.hostname===r.hostname||!r.hostname,g=a.scrollTarget||h===p,v=n(r.hash);if(v&&!e(v).length&&(d=!1),a.scrollTarget||m&&g&&v){for(;d&&u=0;e--)u(D[e])}function u(e){if(e.inited){var t=_.top<=e.limit.start?0:_.top>=e.limit.end?2:1;e.mode!=t&&m(e,t)}}function c(){for(var e=D.length-1;e>=0;e--)if(D[e].inited){var t=Math.abs(b(D[e].clone)-D[e].docOffsetTop),n=Math.abs(D[e].parent.node.offsetHeight-D[e].parent.height);if(t>=2||n>=2)return!1}return!0}function d(e){isNaN(parseFloat(e.computed.top))||e.isCell||"none"==e.computed.display||(e.inited=!0,e.clone||g(e),"absolute"!=e.parent.computed.position&&"relative"!=e.parent.computed.position&&(e.parent.node.style.position="relative"),u(e),e.parent.height=e.parent.node.offsetHeight,e.docOffsetTop=b(e.clone))}function f(e){var t=!0;e.clone&&v(e),i(e.node.style,e.css);for(var n=D.length-1;n>=0;n--)if(D[n].node!==e.node&&D[n].parent.node===e.parent.node){t=!1;break}t&&(e.parent.node.style.position=e.parent.css.position),e.mode=-1}function p(){for(var e=D.length-1;e>=0;e--)d(D[e])}function h(){for(var e=D.length-1;e>=0;e--)f(D[e])}function m(e,t){var n=e.node.style;switch(t){case 0:n.position="absolute",n.left=e.offset.left+"px",n.right=e.offset.right+"px",n.top=e.offset.top+"px",n.bottom="auto",n.width="auto",n.marginLeft=0,n.marginRight=0,n.marginTop=0;break;case 1:n.position="fixed",n.left=e.box.left+"px",n.right=e.box.right+"px",n.top=e.css.top,n.bottom="auto",n.width="auto",n.marginLeft=0,n.marginRight=0,n.marginTop=0;break;case 2:n.position="absolute",n.left=e.offset.left+"px",n.right=e.offset.right+"px",n.top="auto",n.bottom=0,n.width="auto",n.marginLeft=0,n.marginRight=0}e.mode=t}function g(e){e.clone=document.createElement("div");var t=e.node.nextSibling||e.node,n=e.clone.style;n.height=e.height+"px",n.width=e.width+"px",n.marginTop=e.computed.marginTop,n.marginBottom=e.computed.marginBottom,n.marginLeft=e.computed.marginLeft,n.marginRight=e.computed.marginRight,n.padding=n.border=n.borderSpacing=0,n.fontSize="1em",n.position="static",n.cssFloat=e.computed.cssFloat,e.node.parentNode.insertBefore(e.clone,t)}function v(e){e.clone.parentNode.removeChild(e.clone),e.clone=void 0}function y(e){var t=getComputedStyle(e),n=e.parentNode,i=getComputedStyle(n),o=e.style.position;e.style.position="relative";var a={top:t.top,marginTop:t.marginTop,marginBottom:t.marginBottom,marginLeft:t.marginLeft,marginRight:t.marginRight,cssFloat:t.cssFloat,display:t.display},s={top:r(t.top),marginBottom:r(t.marginBottom),paddingLeft:r(t.paddingLeft),paddingRight:r(t.paddingRight),borderLeftWidth:r(t.borderLeftWidth),borderRightWidth:r(t.borderRightWidth)};e.style.position=o;var l={position:e.style.position,top:e.style.top,bottom:e.style.bottom,left:e.style.left,right:e.style.right,width:e.style.width,marginTop:e.style.marginTop,marginLeft:e.style.marginLeft,marginRight:e.style.marginRight},u=x(e),c=x(n),d={node:n,css:{position:n.style.position},computed:{position:i.position -},numeric:{borderLeftWidth:r(i.borderLeftWidth),borderRightWidth:r(i.borderRightWidth),borderTopWidth:r(i.borderTopWidth),borderBottomWidth:r(i.borderBottomWidth)}},f={node:e,box:{left:u.win.left,right:O.clientWidth-u.win.right},offset:{top:u.win.top-c.win.top-d.numeric.borderTopWidth,left:u.win.left-c.win.left-d.numeric.borderLeftWidth,right:-u.win.right+c.win.right-d.numeric.borderRightWidth},css:l,isCell:"table-cell"==t.display,computed:a,numeric:s,width:u.win.right-u.win.left,height:u.win.bottom-u.win.top,mode:-1,inited:!1,parent:d,limit:{start:u.doc.top-s.top,end:c.doc.top+n.offsetHeight-d.numeric.borderBottomWidth-e.offsetHeight-s.top-s.marginBottom}};return f}function b(e){for(var t=0;e;)t+=e.offsetTop,e=e.offsetParent;return t}function x(e){var n=e.getBoundingClientRect();return{doc:{top:n.top+t.pageYOffset,left:n.left+t.pageXOffset},win:n}}function w(){I=setInterval(function(){!c()&&E()},500)}function C(){clearInterval(I)}function T(){H&&(document[$]?C():w())}function k(){H||(o(),p(),t.addEventListener("scroll",a),t.addEventListener("wheel",s),t.addEventListener("resize",E),t.addEventListener("orientationchange",E),e.addEventListener(P,T),w(),H=!0)}function E(){if(H){h();for(var e=D.length-1;e>=0;e--)D[e]=y(D[e].node);p()}}function S(){t.removeEventListener("scroll",a),t.removeEventListener("wheel",s),t.removeEventListener("resize",E),t.removeEventListener("orientationchange",E),e.removeEventListener(P,T),C(),H=!1}function N(){S(),h()}function L(){for(N();D.length;)D.pop()}function A(e){for(var t=D.length-1;t>=0;t--)if(D[t].node===e)return;var n=y(e);D.push(n),H?d(n):k()}function j(e){for(var t=D.length-1;t>=0;t--)D[t].node===e&&(f(D[t]),D.splice(t,1))}var _,I,D=[],H=!1,O=e.documentElement,M=function(){},$="hidden",P="visibilitychange";void 0!==e.webkitHidden&&($="webkitHidden",P="webkitvisibilitychange"),t.getComputedStyle||n();for(var B=["","-webkit-","-moz-","-ms-"],F=document.createElement("div"),q=B.length-1;q>=0;q--){try{F.style.position=B[q]+"sticky"}catch(e){}""!=F.style.position&&n()}o(),t.Stickyfill={stickies:D,add:A,remove:j,init:k,rebuild:E,pause:S,stop:N,kill:L}}(document,window),window.jQuery&&!function(e){e.fn.Stickyfill=function(e){return this.each(function(){Stickyfill.add(this)}),this}}(window.jQuery),$(document).ready(function(){var e=function(){$("body").css("margin-bottom",$(".page__footer").outerHeight(!0))},t=!1;e(),$(window).resize(function(){t=!0}),setInterval(function(){t&&(t=!1,e())},250),$("#main").fitVids(),$(".sticky").Stickyfill();var n=function(){var e=0===$(".author__urls-wrapper #toggle-nav").length?$(window).width()>1024:!$(".author__urls-wrapper #toggle-nav").is(":visible");e?(Stickyfill.rebuild(),Stickyfill.init(),$(".author__urls").show()):(Stickyfill.stop(),$(".author__urls").hide())};n(),$(window).resize(function(){n()}),$(".author__urls-wrapper #toggle-nav").on("click",function(){$(".author__urls").fadeToggle("fast",function(){}),$(".author__urls-wrapper #toggle-nav").toggleClass("open")}),$("a").smoothScroll({offset:-20}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']").addClass("image-popup"),$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0}),(window.location.href.indexOf("/he_IL/")>-1||window.location.href.indexOf("/ar_SA/")>-1)&&($(".nav-selector").css("left","3rem"),$(".lang-selector").css("left","0"),$(".links-menu").css("right","auto"),$(".lang-menu").css("right","auto"),$(".links-menu").css("left","3rem"),$(".lang-menu").css("left","0"),$(".greedy-nav").prepend(""),$(".greedy-nav").prepend(""),$(".greedy-nav").prepend(""),$(".greedy-nav").prepend(""),$(".masthead__menu-item--lg").css("padding-right","inherit"),$(".masthead__menu-item--lg").css("padding-left","2em"),document.body.style.direction="rtl")}); \ No newline at end of file +/*! + * Minimal Mistakes Jekyll Theme 4.6.0 by Michael Rose + * Copyright 2017 Michael Rose - mademistakes.com | @mmistakes + * Licensed under MIT + */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";function n(e,t){var n=(t=t||te).createElement("script");n.text=e,t.head.appendChild(n).parentNode.removeChild(n)}function r(e){var t=!!e&&"length"in e&&e.length,n=he.type(e);return"function"!==n&&!he.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function i(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}function o(e,t,n){return he.isFunction(t)?he.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?he.grep(e,function(e){return e===t!==n}):"string"!=typeof t?he.grep(e,function(e){return ae.call(t,e)>-1!==n}):ke.test(t)?he.filter(t,e,n):(t=he.filter(t,e),he.grep(e,function(e){return ae.call(t,e)>-1!==n&&1===e.nodeType}))}function a(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return he.each(e.match(Ae)||[],function(e,n){t[n]=!0}),t}function l(e){return e}function u(e){throw e}function c(e,t,n,r){var i;try{e&&he.isFunction(i=e.promise)?i.call(e).done(t).fail(n):e&&he.isFunction(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}function f(){te.removeEventListener("DOMContentLoaded",f),e.removeEventListener("load",f),he.ready()}function d(){this.expando=he.expando+d.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:He.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Fe,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=p(n)}catch(e){}qe.set(e,t,n)}else n=void 0;return n}function m(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return he.css(e,t,"")},l=s(),u=n&&n[3]||(he.cssNumber[t]?"":"px"),c=(he.cssNumber[t]||"px"!==u&&+l)&&$e.exec(he.css(e,t));if(c&&c[3]!==u){u=u||c[3],n=n||[],c=+l||1;do{o=o||".5",c/=o,he.style(e,t,c+u)}while(o!==(o=s()/l)&&1!==o&&--a)}return n&&(c=+c||+l||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=u,r.start=c,r.end=i)),i}function g(e){var t,n=e.ownerDocument,r=e.nodeName,i=Re[r];return i||(t=n.body.appendChild(n.createElement(r)),i=he.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),Re[r]=i,i)}function v(e,t){for(var n,r,i=[],o=0,a=e.length;o-1)i&&i.push(o);else if(u=he.contains(o.ownerDocument,o),a=y(f.appendChild(o),"script"),u&&b(a),n)for(c=0;o=a[c++];)Xe.test(o.type||"")&&n.push(o);return f}function w(){return!0}function C(){return!1}function T(){try{return te.activeElement}catch(e){}}function k(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)k(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=C;else if(!i)return e;return 1===o&&(a=i,i=function(e){return he().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=he.guid++)),e.each(function(){he.event.add(this,t,i,r,n)})}function S(e,t){return i(e,"table")&&i(11!==t.nodeType?t:t.firstChild,"tr")?he(">tbody",e)[0]||e:e}function E(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function j(e){var t=nt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){var n,r,i,o,a,s,l,u;if(1===t.nodeType){if(Pe.hasData(e)&&(o=Pe.access(e),a=Pe.set(t,o),u=o.events)){delete a.handle,a.events={};for(i in u)for(n=0,r=u[i].length;n1&&"string"==typeof h&&!de.checkClone&&tt.test(h))return e.each(function(n){var o=e.eq(n);m&&(t[0]=h.call(this,n,o.html())),I(o,t,r,i)});if(d&&(o=x(t,e[0].ownerDocument,!1,e,i),a=o.firstChild,1===o.childNodes.length&&(o=a),a||i)){for(l=(s=he.map(y(o,"script"),E)).length;f=0&&nw.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[M]=!0,e}function i(e){var t=D.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&Ce(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&void 0!==e.getElementsByTagName&&e}function c(){}function f(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function h(e,n,r){for(var i=0,o=n.length;i-1&&(r[u]=!(a[u]=f))}}else b=m(b===a?b.splice(g,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function v(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=d(function(e){return e===t},a,!0),u=d(function(e){return Q(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==j)||((t=n).nodeType?l(e,n,r):u(e,n,r));return t=null,i}];s1&&p(c),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(oe,"$1"),n,s0,o=e.length>0,a=function(r,a,s,l,u){var c,f,d,p=0,h="0",g=r&&[],v=[],y=j,b=r||o&&w.find.TAG("*",u),x=_+=null==y?1:Math.random()||.1,C=b.length;for(u&&(j=a===D||a||u);h!==C&&null!=(c=b[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===D||(I(c),s=!O);d=e[f++];)if(d(c,a||D,s)){l.push(c);break}u&&(_=x)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,v,a,s);if(r){if(p>0)for(;h--;)g[h]||v[h]||(v[h]=Y.call(l));v=m(v)}Z.apply(l,v),u&&!r&&v.length>0&&p+n.length>1&&t.uniqueSort(l)}return u&&(_=x,j=y),g};return i?r(a):a}var b,x,w,C,T,k,S,E,j,N,A,I,D,L,O,P,q,H,F,M="sizzle"+1*new Date,$=e.document,_=0,z=0,B=n(),R=n(),W=n(),U=function(e,t){return e===t&&(A=!0),0},X={}.hasOwnProperty,V=[],Y=V.pop,G=V.push,Z=V.push,K=V.slice,Q=function(e,t){for(var n=0,r=e.length;n+~]|"+ee+")"+ee+"*"),le=new RegExp("="+ee+"*([^\\]'\"]*?)"+ee+"*\\]","g"),ue=new RegExp(re),ce=new RegExp("^"+te+"$"),fe={ID:new RegExp("^#("+te+")"),CLASS:new RegExp("^\\.("+te+")"),TAG:new RegExp("^("+te+"|[*])"),ATTR:new RegExp("^"+ne),PSEUDO:new RegExp("^"+re),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ee+"*(even|odd|(([+-]|)(\\d*)n|)"+ee+"*(?:([+-]|)"+ee+"*(\\d+)|))"+ee+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+ee+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ee+"*((?:-\\d)?\\d*)"+ee+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,pe=/^h\d$/i,he=/^[^{]+\{\s*\[native \w/,me=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ge=/[+~]/,ve=new RegExp("\\\\([\\da-f]{1,6}"+ee+"?|("+ee+")|.)","ig"),ye=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},be=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,xe=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},we=function(){I()},Ce=d(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{Z.apply(V=K.call($.childNodes),$.childNodes),V[$.childNodes.length].nodeType}catch(e){Z={apply:V.length?function(e,t){G.apply(e,K.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}x=t.support={},T=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},I=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:$;return r!==D&&9===r.nodeType&&r.documentElement?(D=r,L=D.documentElement,O=!T(D),$!==D&&(n=D.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",we,!1):n.attachEvent&&n.attachEvent("onunload",we)),x.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),x.getElementsByTagName=i(function(e){return e.appendChild(D.createComment("")),!e.getElementsByTagName("*").length}),x.getElementsByClassName=he.test(D.getElementsByClassName),x.getById=i(function(e){return L.appendChild(e).id=M,!D.getElementsByName||!D.getElementsByName(M).length}),x.getById?(w.filter.ID=function(e){var t=e.replace(ve,ye);return function(e){return e.getAttribute("id")===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&O){var n=t.getElementById(e);return n?[n]:[]}}):(w.filter.ID=function(e){var t=e.replace(ve,ye);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},w.find.ID=function(e,t){if(void 0!==t.getElementById&&O){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),w.find.TAG=x.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):x.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=x.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&O)return t.getElementsByClassName(e)},q=[],P=[],(x.qsa=he.test(D.querySelectorAll))&&(i(function(e){L.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&P.push("[*^$]="+ee+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||P.push("\\["+ee+"*(?:value|"+J+")"),e.querySelectorAll("[id~="+M+"-]").length||P.push("~="),e.querySelectorAll(":checked").length||P.push(":checked"),e.querySelectorAll("a#"+M+"+*").length||P.push(".#.+[+~]")}),i(function(e){e.innerHTML="";var t=D.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&P.push("name"+ee+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&P.push(":enabled",":disabled"),L.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&P.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),P.push(",.*:")})),(x.matchesSelector=he.test(H=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){x.disconnectedMatch=H.call(e,"*"),H.call(e,"[s!='']:x"),q.push("!=",re)}),P=P.length&&new RegExp(P.join("|")),q=q.length&&new RegExp(q.join("|")),t=he.test(L.compareDocumentPosition),F=t||he.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return A=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!x.sortDetached&&t.compareDocumentPosition(e)===n?e===D||e.ownerDocument===$&&F($,e)?-1:t===D||t.ownerDocument===$&&F($,t)?1:N?Q(N,e)-Q(N,t):0:4&n?-1:1)}:function(e,t){if(e===t)return A=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],l=[t];if(!i||!o)return e===D?-1:t===D?1:i?-1:o?1:N?Q(N,e)-Q(N,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)l.unshift(n);for(;s[r]===l[r];)r++;return r?a(s[r],l[r]):s[r]===$?-1:l[r]===$?1:0},D):D},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==D&&I(e),n=n.replace(le,"='$1']"),x.matchesSelector&&O&&!W[n+" "]&&(!q||!q.test(n))&&(!P||!P.test(n)))try{var r=H.call(e,n);if(r||x.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,D,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==D&&I(e),F(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==D&&I(e);var n=w.attrHandle[t.toLowerCase()],r=n&&X.call(w.attrHandle,t.toLowerCase())?n(e,t,!O):void 0;return void 0!==r?r:x.attributes||!O?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(be,xe)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!x.detectDuplicates,N=!x.sortStable&&e.slice(0),e.sort(U),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return N=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},(w=t.selectors={cacheLength:50,createPseudo:r,match:fe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(ve,ye),e[3]=(e[3]||e[4]||e[5]||"").replace(ve,ye),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return fe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&ue.test(n)&&(t=k(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(ve,ye).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=B[e+" "];return t||(t=new RegExp("(^|"+ee+")"+e+"("+ee+"|$)"))&&B(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ie," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,f,d,p,h,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s,b=!1;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;h=m="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?g.firstChild:g.lastChild],a&&y){for(b=(p=(u=(c=(f=(d=g)[M]||(d[M]={}))[d.uniqueID]||(f[d.uniqueID]={}))[e]||[])[0]===_&&u[1])&&u[2],d=p&&g.childNodes[p];d=++p&&d&&d[m]||(b=p=0)||h.pop();)if(1===d.nodeType&&++b&&d===t){c[e]=[_,p,b];break}}else if(y&&(d=t,f=d[M]||(d[M]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),u=c[e]||[],p=u[0]===_&&u[1],b=p),!1===b)for(;(d=++p&&d&&d[m]||(b=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++b||(y&&(f=d[M]||(d[M]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[_,b]),d!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,n){var i,o=w.pseudos[e]||w.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[M]?o(n):o.length>1?(i=[e,e,"",n],w.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=Q(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(oe,"$1"));return i[M]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(ve,ye),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return ce.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(ve,ye).toLowerCase(),function(t){var n;do{if(n=O?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:s(!1),disabled:s(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return pe.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&9===t.nodeType&&O&&w.relative[o[1].type]){if(!(t=(w.find.ID(a.matches[0].replace(ve,ye),t)||[])[0]))return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=fe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(ve,ye),ge.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&f(o)))return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!O,n,!t||ge.test(e)&&u(t.parentNode)||t),n},x.sortStable=M.split("").sort(U).join("")===M,x.detectDuplicates=!!A,I(),x.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("fieldset"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),x.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(J,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);he.find=be,he.expr=be.selectors,he.expr[":"]=he.expr.pseudos,he.uniqueSort=he.unique=be.uniqueSort,he.text=be.getText,he.isXMLDoc=be.isXML,he.contains=be.contains,he.escapeSelector=be.escape;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&he(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Ce=he.expr.match.needsContext,Te=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,ke=/^.[^:#\[\.,]*$/;he.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?he.find.matchesSelector(r,e)?[r]:[]:he.find.matches(e,he.grep(t,function(e){return 1===e.nodeType}))},he.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(he(e).filter(function(){for(t=0;t1?he.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Ce.test(e)?he(e):e||[],!1).length}});var Se,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(he.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Se,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof he?t[0]:t,he.merge(this,he.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Te.test(r[1])&&he.isPlainObject(t))for(r in t)he.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=te.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):he.isFunction(e)?void 0!==n.ready?n.ready(e):e(he):he.makeArray(e,this)}).prototype=he.fn,Se=he(te);var je=/^(?:parents|prev(?:Until|All))/,Ne={children:!0,contents:!0,next:!0,prev:!0};he.fn.extend({has:function(e){var t=he(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&he.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?he.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?ae.call(he(e),this[0]):ae.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(he.uniqueSort(he.merge(this.get(),he(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),he.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return a(e,"nextSibling")},prev:function(e){return a(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return i(e,"iframe")?e.contentDocument:(i(e,"template")&&(e=e.content||e),he.merge([],e.childNodes))}},function(e,t){he.fn[e]=function(n,r){var i=he.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=he.filter(r,i)),this.length>1&&(Ne[e]||he.uniqueSort(i),je.test(e)&&i.reverse()),this.pushStack(i)}});var Ae=/[^\x20\t\r\n\f]+/g;he.Callbacks=function(e){e="string"==typeof e?s(e):he.extend({},e);var t,n,r,i,o=[],a=[],l=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;l=-1)for(n=a.shift();++l-1;)o.splice(n,1),n<=l&&l--}),this},has:function(e){return e?he.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},he.extend({Deferred:function(t){var n=[["notify","progress",he.Callbacks("memory"),he.Callbacks("memory"),2],["resolve","done",he.Callbacks("once memory"),he.Callbacks("once memory"),0,"resolved"],["reject","fail",he.Callbacks("once memory"),he.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return he.Deferred(function(t){he.each(n,function(n,r){var i=he.isFunction(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&he.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){function o(t,n,r,i){return function(){var s=this,c=arguments,f=function(){var e,f;if(!(t=a&&(r!==u&&(s=void 0,c=[e]),n.rejectWith(s,c))}};t?d():(he.Deferred.getStackHook&&(d.stackTrace=he.Deferred.getStackHook()),e.setTimeout(d))}}var a=0;return he.Deferred(function(e){n[0][3].add(o(0,e,he.isFunction(i)?i:l,e.notifyWith)),n[1][3].add(o(0,e,he.isFunction(t)?t:l)),n[2][3].add(o(0,e,he.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?he.extend(e,i):i}},o={};return he.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[0][2].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=re.call(arguments),o=he.Deferred(),a=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?re.call(arguments):n,--t||o.resolveWith(r,i)}};if(t<=1&&(c(e,o.done(a(n)).resolve,o.reject,!t),"pending"===o.state()||he.isFunction(i[n]&&i[n].then)))return o.then();for(;n--;)c(i[n],a(n),o.reject);return o.promise()}});var Ie=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;he.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&Ie.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},he.readyException=function(t){e.setTimeout(function(){throw t})};var De=he.Deferred();he.fn.ready=function(e){return De.then(e).catch(function(e){he.readyException(e)}),this},he.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--he.readyWait:he.isReady)||(he.isReady=!0,!0!==e&&--he.readyWait>0||De.resolveWith(te,[he]))}}),he.ready.then=De.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(he.ready):(te.addEventListener("DOMContentLoaded",f),e.addEventListener("load",f));var Le=function(e,t,n,r,i,o,a){var s=0,l=e.length,u=null==n;if("object"===he.type(n)){i=!0;for(s in n)Le(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,he.isFunction(r)||(a=!0),u&&(a?(t.call(e,r),t=null):(u=t,t=function(e,t,n){return u.call(he(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){qe.remove(this,e)})}}),he.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Pe.get(e,t),n&&(!r||Array.isArray(n)?r=Pe.access(e,t,he.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=he.queue(e,t),r=n.length,i=n.shift(),o=he._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){he.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Pe.get(e,n)||Pe.access(e,n,{empty:he.Callbacks("once memory").add(function(){Pe.remove(e,[t+"queue",n])})})}}),he.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Xe=/^$|\/(?:java|ecma)script/i,Ve={option:[1,""],thead:[1,"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Ve.optgroup=Ve.option,Ve.tbody=Ve.tfoot=Ve.colgroup=Ve.caption=Ve.thead,Ve.th=Ve.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment().appendChild(te.createElement("div")),t=te.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),de.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",de.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var Ge=te.documentElement,Ze=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Qe=/^([^.]*)(?:\.(.+)|)/;he.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Pe.get(e);if(g)for(n.handler&&(o=n,n=o.handler,i=o.selector),i&&he.find.matchesSelector(Ge,i),n.guid||(n.guid=he.guid++),(l=g.events)||(l=g.events={}),(a=g.handle)||(a=g.handle=function(t){return void 0!==he&&he.event.triggered!==t.type?he.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(Ae)||[""]).length;u--;)s=Qe.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p&&(f=he.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=he.event.special[p]||{},c=he.extend({type:p,origType:m,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&he.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=l[p])||(d=l[p]=[],d.delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(p,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),he.event.global[p]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,u,c,f,d,p,h,m,g=Pe.hasData(e)&&Pe.get(e);if(g&&(l=g.events)){for(u=(t=(t||"").match(Ae)||[""]).length;u--;)if(s=Qe.exec(t[u])||[],p=m=s[1],h=(s[2]||"").split(".").sort(),p){for(f=he.event.special[p]||{},d=l[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)c=d[o],!i&&m!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,g.handle)||he.removeEvent(e,p,g.handle),delete l[p])}else for(p in l)he.event.remove(e,p+t[u],n,r,!0);he.isEmptyObject(l)&&Pe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=he.event.fix(e),l=new Array(arguments.length),u=(Pe.get(this,"events")||{})[s.type]||[],c=he.event.special[s.type]||{};for(l[0]=s,t=1;t=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==e.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:he.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,l\x20\t\r\n\f]*)[^>]*)\/>/gi,et=/\s*$/g;he.extend({htmlPrefilter:function(e){return e.replace(Je,"<$1>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),l=he.contains(e.ownerDocument,e);if(!(de.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||he.isXMLDoc(e)))for(a=y(s),o=y(e),r=0,i=o.length;r0&&b(a,!l&&y(e,"script")),s},cleanData:function(e){for(var t,n,r,i=he.event.special,o=0;void 0!==(n=e[o]);o++)if(Oe(n)){if(t=n[Pe.expando]){if(t.events)for(r in t.events)i[r]?he.event.remove(n,r):he.removeEvent(n,r,t.handle);n[Pe.expando]=void 0}n[qe.expando]&&(n[qe.expando]=void 0)}}}),he.fn.extend({detach:function(e){return D(this,e,!0)},remove:function(e){return D(this,e)},text:function(e){return Le(this,function(e){return void 0===e?he.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return I(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||S(this,e).appendChild(e)})},prepend:function(){return I(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=S(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return I(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(he.cleanData(y(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return he.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!et.test(e)&&!Ve[(Ue.exec(e)||["",""])[1].toLowerCase()]){e=he.htmlPrefilter(e);try{for(;n1)}}),he.Tween=$,$.prototype={constructor:$,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||he.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(he.cssNumber[n]?"":"px")},cur:function(){var e=$.propHooks[this.prop];return e&&e.get?e.get(this):$.propHooks._default.get(this)},run:function(e){var t,n=$.propHooks[this.prop];return this.options.duration?this.pos=t=he.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):$.propHooks._default.set(this),this}},$.prototype.init.prototype=$.prototype,$.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=he.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){he.fx.step[e.prop]?he.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[he.cssProps[e.prop]]&&!he.cssHooks[e.prop]?e.elem[e.prop]=e.now:he.style(e.elem,e.prop,e.now+e.unit)}}},$.propHooks.scrollTop=$.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},he.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},he.fx=$.prototype.init,he.fx.step={};var pt,ht,mt=/^(?:toggle|show|hide)$/,gt=/queueHooks$/;he.Animation=he.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return m(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){he.isFunction(e)?(t=e,e=["*"]):e=e.match(Ae);for(var n,r=0,i=e.length;r1)},removeAttr:function(e){return this.each(function(){he.removeAttr(this,e)})}}),he.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?he.prop(e,t,n):(1===o&&he.isXMLDoc(e)||(i=he.attrHooks[t.toLowerCase()]||(he.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void he.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=he.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!de.radioValue&&"radio"===t&&i(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(Ae);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return!1===t?he.removeAttr(e,n):e.setAttribute(n,n),n}},he.each(he.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||he.find.attr;yt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=yt[a],yt[a]=i,i=null!=n(e,t,r)?a:null,yt[a]=o),i}});var bt=/^(?:input|select|textarea|button)$/i,xt=/^(?:a|area)$/i;he.fn.extend({prop:function(e,t){return Le(this,he.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[he.propFix[e]||e]})}}),he.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&he.isXMLDoc(e)||(t=he.propFix[t]||t,i=he.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=he.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||xt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),de.optSelected||(he.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),he.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){he.propFix[this.toLowerCase()]=this}),he.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(he.isFunction(e))return this.each(function(t){he(this).addClass(e.call(this,t,V(this)))});if("string"==typeof e&&e)for(t=e.match(Ae)||[];n=this[l++];)if(i=V(n),r=1===n.nodeType&&" "+X(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=X(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(he.isFunction(e))return this.each(function(t){he(this).removeClass(e.call(this,t,V(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(Ae)||[];n=this[l++];)if(i=V(n),r=1===n.nodeType&&" "+X(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=X(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):he.isFunction(e)?this.each(function(n){he(this).toggleClass(e.call(this,n,V(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=he(this),o=e.match(Ae)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||((t=V(this))&&Pe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":Pe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+X(V(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;he.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=he.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,he(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=he.map(i,function(e){return null==e?"":e+""})),(t=he.valHooks[this.type]||he.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))})):i?(t=he.valHooks[i.type]||he.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(wt,""):null==n?"":n:void 0}}),he.extend({valHooks:{option:{get:function(e){var t=he.find.attr(e,"value");return null!=t?t:X(he.text(e))}},select:{get:function(e){var t,n,r,o=e.options,a=e.selectedIndex,s="select-one"===e.type,l=s?null:[],u=s?a+1:o.length;for(r=a<0?u:s?a:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),he.each(["radio","checkbox"],function(){he.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=he.inArray(he(e).val(),t)>-1}},de.checkOn||(he.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Ct=/^(?:focusinfocus|focusoutblur)$/;he.extend(he.event,{trigger:function(t,n,r,i){var o,a,s,l,u,c,f,d=[r||te],p=ue.call(t,"type")?t.type:t,h=ue.call(t,"namespace")?t.namespace.split("."):[];if(a=s=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Ct.test(p+he.event.triggered)&&(p.indexOf(".")>-1&&(h=p.split("."),p=h.shift(),h.sort()),u=p.indexOf(":")<0&&"on"+p,t=t[he.expando]?t:new he.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:he.makeArray(n,[t]),f=he.event.special[p]||{},i||!f.trigger||!1!==f.trigger.apply(r,n))){if(!i&&!f.noBubble&&!he.isWindow(r)){for(l=f.delegateType||p,Ct.test(l+p)||(a=a.parentNode);a;a=a.parentNode)d.push(a),s=a;s===(r.ownerDocument||te)&&d.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=d[o++])&&!t.isPropagationStopped();)t.type=o>1?l:f.bindType||p,(c=(Pe.get(a,"events")||{})[t.type]&&Pe.get(a,"handle"))&&c.apply(a,n),(c=u&&a[u])&&c.apply&&Oe(a)&&(t.result=c.apply(a,n),!1===t.result&&t.preventDefault());return t.type=p,i||t.isDefaultPrevented()||f._default&&!1!==f._default.apply(d.pop(),n)||!Oe(r)||u&&he.isFunction(r[p])&&!he.isWindow(r)&&((s=r[u])&&(r[u]=null),he.event.triggered=p,r[p](),he.event.triggered=void 0,s&&(r[u]=s)),t.result}},simulate:function(e,t,n){var r=he.extend(new he.Event,n,{type:e,isSimulated:!0});he.event.trigger(r,null,t)}}),he.fn.extend({trigger:function(e,t){return this.each(function(){he.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return he.event.trigger(e,t,n,!0)}}),he.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){he.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),he.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),de.focusin="onfocusin"in e,de.focusin||he.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){he.event.simulate(t,e.target,he.event.fix(e))};he.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=Pe.access(r,t);i||r.addEventListener(e,n,!0),Pe.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Pe.access(r,t)-1;i?Pe.access(r,t,i):(r.removeEventListener(e,n,!0),Pe.remove(r,t))}}});var Tt=e.location,kt=he.now(),St=/\?/;he.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||he.error("Invalid XML: "+t),n};var Et=/\[\]$/,jt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;he.param=function(e,t){var n,r=[],i=function(e,t){var n=he.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!he.isPlainObject(e))he.each(e,function(){i(this.name,this.value)});else for(n in e)Y(n,e[n],t,i);return r.join("&")},he.fn.extend({serialize:function(){return he.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=he.prop(this,"elements");return e?he.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!he(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!We.test(e))}).map(function(e,t){var n=he(this).val();return null==n?null:Array.isArray(n)?he.map(n,function(e){return{name:t.name,value:e.replace(jt,"\r\n")}}):{name:t.name,value:n.replace(jt,"\r\n")}}).get()}});var It=/%20/g,Dt=/#.*$/,Lt=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ft={},Mt={},$t="*/".concat("*"),_t=te.createElement("a");_t.href=Tt.href,he.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:Pt.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":he.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?K(K(e,he.ajaxSettings),t):K(he.ajaxSettings,e)},ajaxPrefilter:G(Ft),ajaxTransport:G(Mt),ajax:function(t,n){function r(t,n,r,s){var u,d,p,x,w,C=n;c||(c=!0,l&&e.clearTimeout(l),i=void 0,a=s||"",T.readyState=t>0?4:0,u=t>=200&&t<300||304===t,r&&(x=Q(h,T,r)),x=J(h,x,T,u),u?(h.ifModified&&((w=T.getResponseHeader("Last-Modified"))&&(he.lastModified[o]=w),(w=T.getResponseHeader("etag"))&&(he.etag[o]=w)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=x.state,d=x.data,p=x.error,u=!p)):(p=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",u?v.resolveWith(m,[d,C,T]):v.rejectWith(m,[T,C,p]),T.statusCode(b),b=void 0,f&&g.trigger(u?"ajaxSuccess":"ajaxError",[T,h,u?d:p]),y.fireWith(m,[T,C]),f&&(g.trigger("ajaxComplete",[T,h]),--he.active||he.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,l,u,c,f,d,p,h=he.ajaxSetup({},n),m=h.context||h,g=h.context&&(m.nodeType||m.jquery)?he(m):he.event,v=he.Deferred(),y=he.Callbacks("once memory"),b=h.statusCode||{},x={},w={},C="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s)for(s={};t=Ot.exec(a);)s[t[1].toLowerCase()]=t[2];t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,x[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)T.always(e[T.status]);else for(t in e)b[t]=[b[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),r(0,t),this}};if(v.promise(T),h.url=((t||h.url||Tt.href)+"").replace(Ht,Tt.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(Ae)||[""],null==h.crossDomain){u=te.createElement("a");try{u.href=h.url,u.href=u.href,h.crossDomain=_t.protocol+"//"+_t.host!=u.protocol+"//"+u.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=he.param(h.data,h.traditional)),Z(Ft,h,n,T),c)return T;(f=he.event&&h.global)&&0==he.active++&&he.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!qt.test(h.type),o=h.url.replace(Dt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(It,"+")):(p=h.url.slice(o.length),h.data&&(o+=(St.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Lt,"$1"),p=(St.test(o)?"&":"?")+"_="+kt+++p),h.url=o+p),h.ifModified&&(he.lastModified[o]&&T.setRequestHeader("If-Modified-Since",he.lastModified[o]),he.etag[o]&&T.setRequestHeader("If-None-Match",he.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&T.setRequestHeader("Content-Type",h.contentType),T.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(d in h.headers)T.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(!1===h.beforeSend.call(m,T,h)||c))return T.abort();if(C="abort",y.add(h.complete),T.done(h.success),T.fail(h.error),i=Z(Mt,h,n,T)){if(T.readyState=1,f&&g.trigger("ajaxSend",[T,h]),c)return T;h.async&&h.timeout>0&&(l=e.setTimeout(function(){T.abort("timeout")},h.timeout));try{c=!1,i.send(x,r)}catch(e){if(c)throw e;r(-1,e)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return he.get(e,t,n,"json")},getScript:function(e,t){return he.get(e,void 0,t,"script")}}),he.each(["get","post"],function(e,t){he[t]=function(e,n,r,i){return he.isFunction(n)&&(i=i||r,r=n,n=void 0),he.ajax(he.extend({url:e,type:t,dataType:i,data:n,success:r},he.isPlainObject(e)&&e))}}),he._evalUrl=function(e){return he.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},he.fn.extend({wrapAll:function(e){var t;return this[0]&&(he.isFunction(e)&&(e=e.call(this[0])),t=he(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return he.isFunction(e)?this.each(function(t){he(this).wrapInner(e.call(this,t))}):this.each(function(){var t=he(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=he.isFunction(e);return this.each(function(n){he(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){he(this).replaceWith(this.childNodes)}),this}}),he.expr.pseudos.hidden=function(e){return!he.expr.pseudos.visible(e)},he.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},he.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var zt={0:200,1223:204},Bt=he.ajaxSettings.xhr();de.cors=!!Bt&&"withCredentials"in Bt,de.ajax=Bt=!!Bt,he.ajaxTransport(function(t){var n,r;if(de.cors||Bt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(zt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),he.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),he.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return he.globalEval(e),e}}}),he.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),he.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=he("