├── app
├── .gitignore
├── src
│ └── main
│ │ ├── res
│ │ ├── values
│ │ │ ├── strings.xml
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_launcher_round.png
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── layout
│ │ │ ├── activity_index.xml
│ │ │ └── activity_main.xml
│ │ ├── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ └── drawable
│ │ │ └── ic_launcher_background.xml
│ │ ├── assets
│ │ ├── images
│ │ │ ├── header.jpg
│ │ │ ├── ygs_small.jpg
│ │ │ ├── cropped-ryg.png
│ │ │ ├── cropped-ryg-1-32x32.png
│ │ │ ├── cropped-ryg-1-192x192.png
│ │ │ ├── 0d572f5dce2fba1175f7970c9e76a47f.png
│ │ │ ├── 2f7b11077e5c22320f3d8fbb40f2604c.png
│ │ │ ├── 457c3796dba92ea464ad55a25a9c1027.png
│ │ │ ├── 4bb4fde28ff305c350cb97791ec8c147.png
│ │ │ ├── 527fb8232d1c925833c1a74c9a338228.png
│ │ │ ├── 70696ed7df0fb375cab28a8c197a7643.png
│ │ │ ├── 762784f64563e97d7eebe580f425e7bc.png
│ │ │ ├── 799e623541ac888a6b45444180503e14.png
│ │ │ ├── 7b8f5227da6477a4e2a7aebe9f65b0a3.png
│ │ │ ├── 8500d206dec8a7ca186836bfa670bb6e.png
│ │ │ ├── 95ccef9f30cd0ef2e2f3b4b577c7f9a5.png
│ │ │ ├── 9ec347970e814fad30eac681216dcc5e.png
│ │ │ ├── a317bc3fcb4234e8b2743b8ea7e18ebd.png
│ │ │ ├── d14f2d0d63934af4abd8253b020b3625.png
│ │ │ ├── f5bbf272059f28d7c8a522e48bc37157.png
│ │ │ └── fab6cf9350832e789a511146e11e3698.png
│ │ └── css
│ │ │ └── style.css
│ │ ├── java
│ │ └── me
│ │ │ └── mundane
│ │ │ └── acceleratedwebview
│ │ │ ├── ui
│ │ │ ├── IndexActivity.java
│ │ │ └── YuGangShuoWebActivity.java
│ │ │ ├── utils
│ │ │ ├── WebViewUtil.java
│ │ │ ├── DataHelper.java
│ │ │ └── ACache.java
│ │ │ └── DemoApplication.java
│ │ └── AndroidManifest.xml
├── build.gradle
└── proguard-rules.pro
├── README.md
├── settings.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitignore
├── gradlew.bat
└── gradlew
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AcceleratedWebView
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AcceleratedWebView
3 |
4 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/assets/images/header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/header.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/images/ygs_small.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/ygs_small.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/images/cropped-ryg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/cropped-ryg.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/cropped-ryg-1-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/cropped-ryg-1-32x32.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/cropped-ryg-1-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/cropped-ryg-1-192x192.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/0d572f5dce2fba1175f7970c9e76a47f.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/0d572f5dce2fba1175f7970c9e76a47f.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/2f7b11077e5c22320f3d8fbb40f2604c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/2f7b11077e5c22320f3d8fbb40f2604c.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/457c3796dba92ea464ad55a25a9c1027.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/457c3796dba92ea464ad55a25a9c1027.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/4bb4fde28ff305c350cb97791ec8c147.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/4bb4fde28ff305c350cb97791ec8c147.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/527fb8232d1c925833c1a74c9a338228.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/527fb8232d1c925833c1a74c9a338228.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/70696ed7df0fb375cab28a8c197a7643.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/70696ed7df0fb375cab28a8c197a7643.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/762784f64563e97d7eebe580f425e7bc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/762784f64563e97d7eebe580f425e7bc.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/799e623541ac888a6b45444180503e14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/799e623541ac888a6b45444180503e14.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/7b8f5227da6477a4e2a7aebe9f65b0a3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/7b8f5227da6477a4e2a7aebe9f65b0a3.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/8500d206dec8a7ca186836bfa670bb6e.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/8500d206dec8a7ca186836bfa670bb6e.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/95ccef9f30cd0ef2e2f3b4b577c7f9a5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/95ccef9f30cd0ef2e2f3b4b577c7f9a5.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/9ec347970e814fad30eac681216dcc5e.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/9ec347970e814fad30eac681216dcc5e.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/a317bc3fcb4234e8b2743b8ea7e18ebd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/a317bc3fcb4234e8b2743b8ea7e18ebd.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/d14f2d0d63934af4abd8253b020b3625.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/d14f2d0d63934af4abd8253b020b3625.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/f5bbf272059f28d7c8a522e48bc37157.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/f5bbf272059f28d7c8a522e48bc37157.png
--------------------------------------------------------------------------------
/app/src/main/assets/images/fab6cf9350832e789a511146e11e3698.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mundane799699/AcceleratedWebView/HEAD/app/src/main/assets/images/fab6cf9350832e789a511146e11e3698.png
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sat Aug 25 22:09:35 CST 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/ui/IndexActivity.java:
--------------------------------------------------------------------------------
1 | package me.mundane.acceleratedwebview.ui;
2 |
3 | import android.os.Bundle;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.view.View;
6 | import me.mundane.acceleratedwebview.R;
7 |
8 | public class IndexActivity extends AppCompatActivity {
9 |
10 | @Override
11 | protected void onCreate(Bundle savedInstanceState) {
12 | super.onCreate(savedInstanceState);
13 | setContentView(R.layout.activity_index);
14 | }
15 |
16 | public void yugangshuoBeforeOptimize(View view) {
17 | YuGangShuoWebActivity.go2YuGangShuoActivity(this, false);
18 | }
19 |
20 | public void yugangshuoAfterOptimize(View view) {
21 | YuGangShuoWebActivity.go2YuGangShuoActivity(this, true);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 25
5 | defaultConfig {
6 | applicationId "me.mundane.acceleratedwebview"
7 | minSdkVersion 16
8 | targetSdkVersion 25
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | implementation fileTree(dir: 'libs', include: ['*.jar'])
23 | implementation 'com.android.support:appcompat-v7:25.3.1'
24 | implementation 'com.android.support.constraint:constraint-layout:1.1.2'
25 | }
26 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/utils/WebViewUtil.java:
--------------------------------------------------------------------------------
1 | package me.mundane.acceleratedwebview.utils;
2 |
3 | import android.os.Build;
4 | import android.view.ViewGroup;
5 | import android.view.ViewParent;
6 | import android.webkit.WebSettings;
7 | import android.webkit.WebView;
8 |
9 | /**
10 | * Created by mundane on 2018/8/26 上午12:50
11 | */
12 |
13 | public class WebViewUtil {
14 | public static void configWebView(WebView webView) {
15 | WebSettings webSettings = webView.getSettings();
16 | webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);
17 | webSettings.setGeolocationEnabled(true);
18 | if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
19 | webSettings.setMixedContentMode(android.webkit.WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
20 | }
21 | }
22 |
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_index.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
18 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
35 |
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the ART/Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | out/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Android Studio Navigation editor temp files
30 | .navigation/
31 |
32 | # Android Studio captures folder
33 | captures/
34 |
35 | # IntelliJ
36 | *.iml
37 | .idea/workspace.xml
38 | .idea/tasks.xml
39 | .idea/gradle.xml
40 | .idea/assetWizardSettings.xml
41 | .idea/dictionaries
42 | .idea/libraries
43 | .idea/caches
44 |
45 | # Keystore files
46 | # Uncomment the following line if you do not want to check your keystore files in.
47 | #*.jks
48 |
49 | # External native build folder generated in Android Studio 2.2 and later
50 | .externalNativeBuild
51 |
52 | # Google Services (e.g. APIs or Firebase)
53 | google-services.json
54 |
55 | # Freeline
56 | freeline.py
57 | freeline/
58 | freeline_project_description.json
59 |
60 | # fastlane
61 | fastlane/report.xml
62 | fastlane/Preview.html
63 | fastlane/screenshots
64 | fastlane/test_output
65 | fastlane/readme.md
66 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/DemoApplication.java:
--------------------------------------------------------------------------------
1 | package me.mundane.acceleratedwebview;
2 |
3 | import android.app.Application;
4 | import android.webkit.WebView;
5 | import android.webkit.WebViewClient;
6 |
7 | /**
8 | * Created by mundane on 2018/8/26 下午8:24
9 | */
10 |
11 | public class DemoApplication extends Application {
12 | private final String YU_GANG_SHUO_URL = "http://renyugang.io/post/75";
13 | private static WebView mWebView;
14 |
15 | @Override
16 | public void onCreate() {
17 | super.onCreate();
18 | mWebView = new WebView(this);
19 | mWebView.setWebViewClient(new WebViewClient() {
20 | @Override
21 | public boolean shouldOverrideUrlLoading(WebView view, String url) {
22 | view.loadUrl(url);
23 | return true;
24 | }
25 | });
26 |
27 | //destroyWebView(webView);
28 | }
29 |
30 | public static WebView getWebView() {
31 | return mWebView;
32 | }
33 |
34 | public static void destroyWebView(WebView webView) {
35 | if (webView != null) {
36 | webView.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
37 | webView.clearHistory();
38 | webView.destroy();
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ##############################################################################
4 | ##
5 | ## Gradle start up script for UN*X
6 | ##
7 | ##############################################################################
8 |
9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
10 | DEFAULT_JVM_OPTS=""
11 |
12 | APP_NAME="Gradle"
13 | APP_BASE_NAME=`basename "$0"`
14 |
15 | # Use the maximum available, or set MAX_FD != -1 to use that value.
16 | MAX_FD="maximum"
17 |
18 | warn ( ) {
19 | echo "$*"
20 | }
21 |
22 | die ( ) {
23 | echo
24 | echo "$*"
25 | echo
26 | exit 1
27 | }
28 |
29 | # OS specific support (must be 'true' or 'false').
30 | cygwin=false
31 | msys=false
32 | darwin=false
33 | case "`uname`" in
34 | CYGWIN* )
35 | cygwin=true
36 | ;;
37 | Darwin* )
38 | darwin=true
39 | ;;
40 | MINGW* )
41 | msys=true
42 | ;;
43 | esac
44 |
45 | # Attempt to set APP_HOME
46 | # Resolve links: $0 may be a link
47 | PRG="$0"
48 | # Need this for relative symlinks.
49 | while [ -h "$PRG" ] ; do
50 | ls=`ls -ld "$PRG"`
51 | link=`expr "$ls" : '.*-> \(.*\)$'`
52 | if expr "$link" : '/.*' > /dev/null; then
53 | PRG="$link"
54 | else
55 | PRG=`dirname "$PRG"`"/$link"
56 | fi
57 | done
58 | SAVED="`pwd`"
59 | cd "`dirname \"$PRG\"`/" >/dev/null
60 | APP_HOME="`pwd -P`"
61 | cd "$SAVED" >/dev/null
62 |
63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
64 |
65 | # Determine the Java command to use to start the JVM.
66 | if [ -n "$JAVA_HOME" ] ; then
67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
68 | # IBM's JDK on AIX uses strange locations for the executables
69 | JAVACMD="$JAVA_HOME/jre/sh/java"
70 | else
71 | JAVACMD="$JAVA_HOME/bin/java"
72 | fi
73 | if [ ! -x "$JAVACMD" ] ; then
74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
75 |
76 | Please set the JAVA_HOME variable in your environment to match the
77 | location of your Java installation."
78 | fi
79 | else
80 | JAVACMD="java"
81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
82 |
83 | Please set the JAVA_HOME variable in your environment to match the
84 | location of your Java installation."
85 | fi
86 |
87 | # Increase the maximum file descriptors if we can.
88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
89 | MAX_FD_LIMIT=`ulimit -H -n`
90 | if [ $? -eq 0 ] ; then
91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
92 | MAX_FD="$MAX_FD_LIMIT"
93 | fi
94 | ulimit -n $MAX_FD
95 | if [ $? -ne 0 ] ; then
96 | warn "Could not set maximum file descriptor limit: $MAX_FD"
97 | fi
98 | else
99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
100 | fi
101 | fi
102 |
103 | # For Darwin, add options to specify how the application appears in the dock
104 | if $darwin; then
105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
106 | fi
107 |
108 | # For Cygwin, switch paths to Windows format before running java
109 | if $cygwin ; then
110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
112 | JAVACMD=`cygpath --unix "$JAVACMD"`
113 |
114 | # We build the pattern for arguments to be converted via cygpath
115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
116 | SEP=""
117 | for dir in $ROOTDIRSRAW ; do
118 | ROOTDIRS="$ROOTDIRS$SEP$dir"
119 | SEP="|"
120 | done
121 | OURCYGPATTERN="(^($ROOTDIRS))"
122 | # Add a user-defined pattern to the cygpath arguments
123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
125 | fi
126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
127 | i=0
128 | for arg in "$@" ; do
129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
131 |
132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
134 | else
135 | eval `echo args$i`="\"$arg\""
136 | fi
137 | i=$((i+1))
138 | done
139 | case $i in
140 | (0) set -- ;;
141 | (1) set -- "$args0" ;;
142 | (2) set -- "$args0" "$args1" ;;
143 | (3) set -- "$args0" "$args1" "$args2" ;;
144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
150 | esac
151 | fi
152 |
153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
154 | function splitJvmOpts() {
155 | JVM_OPTS=("$@")
156 | }
157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
159 |
160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
161 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
16 |
21 |
26 |
31 |
36 |
41 |
46 |
51 |
56 |
61 |
66 |
71 |
76 |
81 |
86 |
91 |
96 |
101 |
106 |
111 |
116 |
121 |
126 |
131 |
136 |
141 |
146 |
151 |
156 |
161 |
166 |
171 |
172 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/utils/DataHelper.java:
--------------------------------------------------------------------------------
1 | package me.mundane.acceleratedwebview.utils;
2 |
3 | import android.content.Context;
4 | import android.text.TextUtils;
5 | import android.webkit.WebResourceResponse;
6 | import java.io.InputStream;
7 | import java.util.HashMap;
8 | import java.util.Map;
9 |
10 | /**
11 | * Created by mundane on 2018/8/26 上午11:46
12 | */
13 |
14 | public class DataHelper {
15 |
16 | // http://renyugang.io/post/75
17 | // http://renyugang.io/wp-content/themes/twentyseventeen/style.css?ver=4.9.8
18 | // http://renyugang.io/wp-content/themes/twentyseventeen/assets/images/header.jpg
19 | // http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg.png
20 | // http://renyugang.io/wp-content/uploads/2018/05/ygs_small.jpg
21 | // http://0.gravatar.com/avatar/9ec347970e814fad30eac681216dcc5e?s=200&d=monsterid&r=g
22 | // http://2.gravatar.com/avatar/527fb8232d1c925833c1a74c9a338228?s=200&d=monsterid&r=g
23 | // http://0.gravatar.com/avatar/f5bbf272059f28d7c8a522e48bc37157?s=200&d=monsterid&r=g
24 | // http://1.gravatar.com/avatar/799e623541ac888a6b45444180503e14?s=200&d=monsterid&r=g
25 | // http://1.gravatar.com/avatar/762784f64563e97d7eebe580f425e7bc?s=200&d=monsterid&r=g
26 | // http://1.gravatar.com/avatar/d14f2d0d63934af4abd8253b020b3625?s=200&d=monsterid&r=g
27 | // http://0.gravatar.com/avatar/95ccef9f30cd0ef2e2f3b4b577c7f9a5?s=200&d=monsterid&r=g
28 | // http://1.gravatar.com/avatar/457c3796dba92ea464ad55a25a9c1027?s=200&d=monsterid&r=g
29 | // http://0.gravatar.com/avatar/fab6cf9350832e789a511146e11e3698?s=200&d=monsterid&r=g
30 | // http://0.gravatar.com/avatar/0d572f5dce2fba1175f7970c9e76a47f?s=200&d=monsterid&r=g
31 | // http://2.gravatar.com/avatar/2f7b11077e5c22320f3d8fbb40f2604c?s=200&d=monsterid&r=g
32 | // http://2.gravatar.com/avatar/8500d206dec8a7ca186836bfa670bb6e?s=200&d=monsterid&r=g
33 | // http://1.gravatar.com/avatar/a317bc3fcb4234e8b2743b8ea7e18ebd?s=200&d=monsterid&r=g
34 | // http://1.gravatar.com/avatar/7b8f5227da6477a4e2a7aebe9f65b0a3?s=200&d=monsterid&r=g
35 | // http://1.gravatar.com/avatar/4bb4fde28ff305c350cb97791ec8c147?s=200&d=monsterid&r=g
36 | // http://1.gravatar.com/avatar/70696ed7df0fb375cab28a8c197a7643?s=200&d=monsterid&r=g
37 | // http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg-1-192x192.png
38 | // http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg-1-32x32.png
39 |
40 | private Map mMap;
41 |
42 | public DataHelper() {
43 | mMap = new HashMap<>();
44 | initData();
45 | }
46 |
47 | public WebResourceResponse getReplacedWebResourceResponse(Context context, String url) {
48 | String localResourcePath = mMap.get(url);
49 | if (TextUtils.isEmpty(localResourcePath)) {
50 | return null;
51 | }
52 | InputStream is = null;
53 | try {
54 | is = context.getApplicationContext().getAssets().open(localResourcePath);
55 | } catch (Exception e) {
56 | e.printStackTrace();
57 | return null;
58 | }
59 | String mimeType;
60 | if (url.contains("css")) {
61 | mimeType = "text/css";
62 | } else if (url.contains("jpg")) {
63 | mimeType = "image/jpeg";
64 | } else {
65 | mimeType = "image/png";
66 | }
67 | WebResourceResponse response = new WebResourceResponse(mimeType, "utf-8", is);
68 | return response;
69 | }
70 |
71 | public boolean hasLocalResource(String url) {
72 | return mMap.containsKey(url);
73 | }
74 |
75 | private void initData() {
76 | String imageDir = "images/";
77 | String pngSuffix = ".png";
78 | mMap.put("http://renyugang.io/wp-content/themes/twentyseventeen/style.css?ver=4.9.8",
79 | "css/style.css");
80 | mMap.put("http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg.png",
81 | imageDir + "cropped-ryg.png");
82 | mMap.put("http://renyugang.io/wp-content/themes/twentyseventeen/assets/images/header.jpg",
83 | imageDir + "header.jpg");
84 | mMap.put("http://renyugang.io/wp-content/uploads/2018/05/ygs_small.jpg",
85 | imageDir + "ygs_small.jpg");
86 | mMap.put(
87 | "http://0.gravatar.com/avatar/9ec347970e814fad30eac681216dcc5e?s=200&d=monsterid&r=g",
88 | imageDir + "9ec347970e814fad30eac681216dcc5e" + pngSuffix);
89 | mMap.put(
90 | "http://2.gravatar.com/avatar/527fb8232d1c925833c1a74c9a338228?s=200&d=monsterid&r=g",
91 | imageDir + "527fb8232d1c925833c1a74c9a338228" + pngSuffix);
92 | mMap.put(
93 | "http://0.gravatar.com/avatar/f5bbf272059f28d7c8a522e48bc37157?s=200&d=monsterid&r=g",
94 | imageDir + "f5bbf272059f28d7c8a522e48bc37157" + pngSuffix);
95 | mMap.put(
96 | "http://1.gravatar.com/avatar/799e623541ac888a6b45444180503e14?s=200&d=monsterid&r=g",
97 | imageDir + "799e623541ac888a6b45444180503e14" + pngSuffix);
98 | mMap.put(
99 | "http://1.gravatar.com/avatar/762784f64563e97d7eebe580f425e7bc?s=200&d=monsterid&r=g",
100 | imageDir + "762784f64563e97d7eebe580f425e7bc" + pngSuffix);
101 | mMap.put(
102 | "http://1.gravatar.com/avatar/d14f2d0d63934af4abd8253b020b3625?s=200&d=monsterid&r=g",
103 | imageDir + "d14f2d0d63934af4abd8253b020b3625" + pngSuffix);
104 | mMap.put(
105 | "http://0.gravatar.com/avatar/95ccef9f30cd0ef2e2f3b4b577c7f9a5?s=200&d=monsterid&r=g",
106 | imageDir + "95ccef9f30cd0ef2e2f3b4b577c7f9a5" + pngSuffix);
107 | mMap.put(
108 | "http://1.gravatar.com/avatar/457c3796dba92ea464ad55a25a9c1027?s=200&d=monsterid&r=g",
109 | imageDir + "457c3796dba92ea464ad55a25a9c1027" + pngSuffix);
110 | mMap.put(
111 | "http://0.gravatar.com/avatar/fab6cf9350832e789a511146e11e3698?s=200&d=monsterid&r=g",
112 | imageDir + "fab6cf9350832e789a511146e11e3698" + pngSuffix);
113 |
114 | mMap.put(
115 | "http://0.gravatar.com/avatar/0d572f5dce2fba1175f7970c9e76a47f?s=200&d=monsterid&r=g",
116 | imageDir + "0d572f5dce2fba1175f7970c9e76a47f" + pngSuffix);
117 | mMap.put(
118 | "http://2.gravatar.com/avatar/2f7b11077e5c22320f3d8fbb40f2604c?s=200&d=monsterid&r=g",
119 | imageDir + "2f7b11077e5c22320f3d8fbb40f2604c" + pngSuffix);
120 | mMap.put(
121 | "http://2.gravatar.com/avatar/8500d206dec8a7ca186836bfa670bb6e?s=200&d=monsterid&r=g",
122 | imageDir + "8500d206dec8a7ca186836bfa670bb6e" + pngSuffix);
123 | mMap.put(
124 | "http://1.gravatar.com/avatar/a317bc3fcb4234e8b2743b8ea7e18ebd?s=200&d=monsterid&r=g",
125 | imageDir + "a317bc3fcb4234e8b2743b8ea7e18ebd" + pngSuffix);
126 | mMap.put(
127 | "http://1.gravatar.com/avatar/7b8f5227da6477a4e2a7aebe9f65b0a3?s=200&d=monsterid&r=g",
128 | imageDir + "7b8f5227da6477a4e2a7aebe9f65b0a3" + pngSuffix);
129 | mMap.put(
130 | "http://1.gravatar.com/avatar/4bb4fde28ff305c350cb97791ec8c147?s=200&d=monsterid&r=g",
131 | imageDir + "4bb4fde28ff305c350cb97791ec8c147" + pngSuffix);
132 | mMap.put(
133 | "http://1.gravatar.com/avatar/70696ed7df0fb375cab28a8c197a7643?s=200&d=monsterid&r=g",
134 | imageDir + "70696ed7df0fb375cab28a8c197a7643" + pngSuffix);
135 | mMap.put("http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg-1-192x192.png",
136 | imageDir + "cropped-ryg-1-192x192.png");
137 | mMap.put("http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg-1-32x32.png",
138 | imageDir + "cropped-ryg-1-32x32.png");
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/ui/YuGangShuoWebActivity.java:
--------------------------------------------------------------------------------
1 | package me.mundane.acceleratedwebview.ui;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.graphics.Bitmap;
7 | import android.net.http.SslError;
8 | import android.os.Build.VERSION_CODES;
9 | import android.os.Bundle;
10 | import android.support.annotation.NonNull;
11 | import android.support.annotation.RequiresApi;
12 | import android.support.v7.app.AppCompatActivity;
13 | import android.util.Log;
14 | import android.view.KeyEvent;
15 | import android.view.ViewGroup;
16 | import android.view.ViewParent;
17 | import android.webkit.SslErrorHandler;
18 | import android.webkit.WebChromeClient;
19 | import android.webkit.WebResourceRequest;
20 | import android.webkit.WebResourceResponse;
21 | import android.webkit.WebView;
22 | import android.webkit.WebViewClient;
23 | import android.widget.TextView;
24 | import java.io.IOException;
25 | import java.io.InputStream;
26 | import me.mundane.acceleratedwebview.R;
27 | import me.mundane.acceleratedwebview.utils.DataHelper;
28 | import me.mundane.acceleratedwebview.utils.WebViewUtil;
29 |
30 | public class YuGangShuoWebActivity extends AppCompatActivity {
31 |
32 | private static final String TAG = "MainActivity";
33 | private final String IP_DOT_CN = "https://ip.cn/";
34 | private final String BAI_DU = "https://www.baidu.com/";
35 | private final String PNG_URL = "http://renyugang.io/wp-content/uploads/2018/06/cropped-ryg.png";
36 | private final String YU_GANG_SHUO_URL = "http://renyugang.io/post/75";
37 | private WebView mWebview;
38 | private TextView mTvLoadingTime;
39 | private long mStartTime;
40 | private long mEndTime;
41 | private static final String KEY_IS_LOAD_LOCAL = "is_load_local";
42 | private boolean mIsLoadLocal;
43 | private DataHelper mDataHelper;
44 |
45 | @Override
46 | protected void onCreate(Bundle savedInstanceState) {
47 | super.onCreate(savedInstanceState);
48 | setContentView(R.layout.activity_main);
49 | // 获取从外面带过来的标记
50 | mIsLoadLocal = getIntent().getBooleanExtra(KEY_IS_LOAD_LOCAL, false);
51 |
52 | mWebview = (WebView) findViewById(R.id.web_view);
53 | mTvLoadingTime = (TextView) findViewById(R.id.tv_loading_time);
54 | WebViewUtil.configWebView(mWebview);
55 | mDataHelper = new DataHelper();
56 | mWebview.setWebViewClient(new WebViewClient() {
57 |
58 | @Override
59 | public void onPageStarted(WebView view, String url, Bitmap favicon) {
60 | }
61 |
62 | @Override
63 | public void onPageFinished(WebView view, String url) {
64 | mEndTime = System.currentTimeMillis();
65 | long loadingTime = mEndTime - mStartTime;
66 | mTvLoadingTime.setText(String.format("加载耗时%d毫秒", loadingTime));
67 | mStartTime = 0;
68 | mEndTime = 0;
69 | }
70 |
71 | // 设置不用系统浏览器打开,直接显示在当前Webview
72 | @Override
73 | public boolean shouldOverrideUrlLoading(WebView view, String url) {
74 | Log.d(TAG, "shouldOverrideUrlLoading1: url = " + url);
75 | view.loadUrl(url);
76 | return true;
77 | }
78 |
79 | // 该方法在5.0版本上可使用
80 | @RequiresApi(api = VERSION_CODES.LOLLIPOP)
81 | @Override
82 | public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
83 | Log.d(TAG, "shouldOverrideUrlLoading1: url = " + request.getUrl());
84 | return super.shouldOverrideUrlLoading(view, request);
85 | }
86 |
87 | @Override
88 | public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
89 | Log.d(TAG, "shouldInterceptRequest1: url = " + url);
90 | if (!mIsLoadLocal) {
91 | return super.shouldInterceptRequest(view, url);
92 | }
93 | if (mDataHelper.hasLocalResource(url)) {
94 | Log.d(TAG, "shouldInterceptRequest1: 资源命中");
95 | WebResourceResponse response =
96 | mDataHelper.getReplacedWebResourceResponse(getApplicationContext(),
97 | url);
98 | if (response != null) {
99 | return response;
100 | }
101 | }
102 | return super.shouldInterceptRequest(view, url);
103 | }
104 |
105 | @TargetApi(VERSION_CODES.LOLLIPOP)
106 | @Override
107 | public WebResourceResponse shouldInterceptRequest(WebView view,
108 | WebResourceRequest request) {
109 | String url = request.getUrl().toString();
110 | Log.d(TAG, "shouldInterceptRequest2: url = " + url);
111 | if (!mIsLoadLocal) {
112 | return super.shouldInterceptRequest(view, request);
113 | }
114 | if (mDataHelper.hasLocalResource(url)) {
115 | Log.d(TAG, "shouldInterceptRequest2: 资源命中");
116 | WebResourceResponse response =
117 | mDataHelper.getReplacedWebResourceResponse(getApplicationContext(),
118 | url);
119 | if (response != null) {
120 | return response;
121 | }
122 | }
123 | return super.shouldInterceptRequest(view, request);
124 | }
125 |
126 | @Override
127 | public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
128 | handler.proceed();
129 | }
130 | });
131 |
132 | // 设置WebChromeClient类
133 | mWebview.setWebChromeClient(new WebChromeClient() {
134 | // 获取网站标题
135 | @Override
136 | public void onReceivedTitle(WebView view, String title) {
137 | }
138 |
139 | @Override
140 | public void onProgressChanged(WebView view, int newProgress) {
141 | if (newProgress < 100) {
142 | String progress = newProgress + "%";
143 | } else if (newProgress == 100) {
144 | String progress = newProgress + "%";
145 | }
146 | }
147 | });
148 | String url = YU_GANG_SHUO_URL;
149 | mWebview.loadUrl(url);
150 | mStartTime = System.currentTimeMillis();
151 | }
152 |
153 | @NonNull
154 | private WebResourceResponse getReplacedWebResourceResponse() {
155 | InputStream is = null;
156 | // 步骤2:创建一个输入流
157 | try {
158 | is = getApplicationContext().getAssets().open("images/cropped-ryg.png");
159 | } catch (IOException e) {
160 | e.printStackTrace();
161 | }
162 | // 步骤4:替换资源
163 | WebResourceResponse response = new WebResourceResponse("image/png", "utf-8", is);
164 | return response;
165 | }
166 |
167 | // 点击返回上一页面而不是退出浏览器
168 | @Override
169 | public boolean onKeyDown(int keyCode, KeyEvent event) {
170 | if (keyCode == KeyEvent.KEYCODE_BACK && mWebview.canGoBack()) {
171 | mWebview.goBack();
172 | return true;
173 | }
174 |
175 | return super.onKeyDown(keyCode, event);
176 | }
177 |
178 | // 销毁Webview
179 | @Override
180 | protected void onDestroy() {
181 | if (mWebview != null) {
182 | mWebview.loadDataWithBaseURL(null, "", "text/html", "utf-8", null);
183 | mWebview.clearHistory();
184 |
185 | ViewParent parent = mWebview.getParent();
186 | if (parent != null) {
187 | ((ViewGroup) parent).removeView(mWebview);
188 | }
189 | mWebview.destroy();
190 | mWebview = null;
191 | }
192 | super.onDestroy();
193 | }
194 |
195 | /**
196 | * @param isLoadLocal 是否从本地加载资源
197 | */
198 | public static void go2YuGangShuoActivity(Context context, boolean isLoadLocal) {
199 | Intent intent = new Intent(context, YuGangShuoWebActivity.class);
200 | intent.putExtra(KEY_IS_LOAD_LOCAL, isLoadLocal);
201 | context.startActivity(intent);
202 | }
203 | }
204 |
--------------------------------------------------------------------------------
/app/src/main/java/me/mundane/acceleratedwebview/utils/ACache.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) 2012-2013, Michael Yang 杨福海 (www.yangfuhai.com).
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package me.mundane.acceleratedwebview.utils;
17 |
18 | import android.content.Context;
19 | import android.graphics.Bitmap;
20 | import android.graphics.BitmapFactory;
21 | import android.graphics.Canvas;
22 | import android.graphics.PixelFormat;
23 | import android.graphics.drawable.BitmapDrawable;
24 | import android.graphics.drawable.Drawable;
25 | import java.io.BufferedReader;
26 | import java.io.BufferedWriter;
27 | import java.io.ByteArrayInputStream;
28 | import java.io.ByteArrayOutputStream;
29 | import java.io.File;
30 | import java.io.FileOutputStream;
31 | import java.io.FileReader;
32 | import java.io.FileWriter;
33 | import java.io.IOException;
34 | import java.io.ObjectInputStream;
35 | import java.io.ObjectOutputStream;
36 | import java.io.RandomAccessFile;
37 | import java.io.Serializable;
38 | import java.util.Collections;
39 | import java.util.HashMap;
40 | import java.util.Map;
41 | import java.util.Map.Entry;
42 | import java.util.Set;
43 | import java.util.concurrent.atomic.AtomicInteger;
44 | import java.util.concurrent.atomic.AtomicLong;
45 | import org.json.JSONArray;
46 | import org.json.JSONObject;
47 |
48 | /**
49 | * @author Michael Yang(www.yangfuhai.com) update at 2013.08.07
50 | */
51 | public class ACache {
52 | public static final int TIME_HOUR = 60 * 60;
53 | public static final int TIME_DAY = TIME_HOUR * 24;
54 | private static final int MAX_SIZE = 1000 * 1000 * 50; // 50 mb
55 | private static final int MAX_COUNT = Integer.MAX_VALUE; // 不限制存放数据的数量
56 | private static Map mInstanceMap = new HashMap();
57 | private ACacheManager mCache;
58 |
59 | public static ACache get(Context ctx) {
60 | return get(ctx, "ACache");
61 | }
62 |
63 | public static ACache get(Context ctx, String cacheName) {
64 | File f = new File(ctx.getCacheDir(), cacheName);
65 | return get(f, MAX_SIZE, MAX_COUNT);
66 | }
67 |
68 | public static ACache get(File cacheDir) {
69 | return get(cacheDir, MAX_SIZE, MAX_COUNT);
70 | }
71 |
72 | public static ACache get(Context ctx, long max_zise, int max_count) {
73 | File f = new File(ctx.getCacheDir(), "ACache");
74 | return get(f, max_zise, max_count);
75 | }
76 |
77 | public static ACache get(File cacheDir, long max_zise, int max_count) {
78 | ACache manager = mInstanceMap.get(cacheDir.getAbsoluteFile() + myPid());
79 | if (manager == null) {
80 | manager = new ACache(cacheDir, max_zise, max_count);
81 | mInstanceMap.put(cacheDir.getAbsolutePath() + myPid(), manager);
82 | }
83 | return manager;
84 | }
85 |
86 | private static String myPid() {
87 | return "_" + android.os.Process.myPid();
88 | }
89 |
90 | private ACache(File cacheDir, long max_size, int max_count) {
91 | if (!cacheDir.exists() && !cacheDir.mkdirs()) {
92 | throw new RuntimeException("can't make dirs in "
93 | + cacheDir.getAbsolutePath());
94 | }
95 | mCache = new ACacheManager(cacheDir, max_size, max_count);
96 | }
97 |
98 | // =======================================
99 | // ============ String数据 读写 ==============
100 | // =======================================
101 | /**
102 | * 保存 String数据 到 缓存中
103 | *
104 | * @param key
105 | * 保存的key
106 | * @param value
107 | * 保存的String数据
108 | */
109 | public void put(String key, String value) {
110 | File file = mCache.newFile(key);
111 | BufferedWriter out = null;
112 | try {
113 | out = new BufferedWriter(new FileWriter(file), 1024);
114 | out.write(value);
115 | } catch (IOException e) {
116 | e.printStackTrace();
117 | } finally {
118 | if (out != null) {
119 | try {
120 | out.flush();
121 | out.close();
122 | } catch (IOException e) {
123 | e.printStackTrace();
124 | }
125 | }
126 | mCache.put(file);
127 | }
128 | }
129 |
130 | /**
131 | * 保存 String数据 到 缓存中
132 | *
133 | * @param key
134 | * 保存的key
135 | * @param value
136 | * 保存的String数据
137 | * @param saveTime
138 | * 保存的时间,单位:秒
139 | */
140 | public void put(String key, String value, int saveTime) {
141 | put(key, Utils.newStringWithDateInfo(saveTime, value));
142 | }
143 |
144 | /**
145 | * 读取 String数据
146 | *
147 | * @param key
148 | * @return String 数据
149 | */
150 | public String getAsString(String key) {
151 | File file = mCache.get(key);
152 | if (!file.exists())
153 | return null;
154 | boolean removeFile = false;
155 | BufferedReader in = null;
156 | try {
157 | in = new BufferedReader(new FileReader(file));
158 | String readString = "";
159 | String currentLine;
160 | while ((currentLine = in.readLine()) != null) {
161 | readString += currentLine;
162 | }
163 | if (!Utils.isDue(readString)) {
164 | return Utils.clearDateInfo(readString);
165 | } else {
166 | removeFile = true;
167 | return null;
168 | }
169 | } catch (IOException e) {
170 | e.printStackTrace();
171 | return null;
172 | } finally {
173 | if (in != null) {
174 | try {
175 | in.close();
176 | } catch (IOException e) {
177 | e.printStackTrace();
178 | }
179 | }
180 | if (removeFile)
181 | remove(key);
182 | }
183 | }
184 |
185 | // =======================================
186 | // ============= JSONObject 数据 读写 ==============
187 | // =======================================
188 | /**
189 | * 保存 JSONObject数据 到 缓存中
190 | *
191 | * @param key
192 | * 保存的key
193 | * @param value
194 | * 保存的JSON数据
195 | */
196 | public void put(String key, JSONObject value) {
197 | put(key, value.toString());
198 | }
199 |
200 | /**
201 | * 保存 JSONObject数据 到 缓存中
202 | *
203 | * @param key
204 | * 保存的key
205 | * @param value
206 | * 保存的JSONObject数据
207 | * @param saveTime
208 | * 保存的时间,单位:秒
209 | */
210 | public void put(String key, JSONObject value, int saveTime) {
211 | put(key, value.toString(), saveTime);
212 | }
213 |
214 | /**
215 | * 读取JSONObject数据
216 | *
217 | * @param key
218 | * @return JSONObject数据
219 | */
220 | public JSONObject getAsJSONObject(String key) {
221 | String JSONString = getAsString(key);
222 | try {
223 | JSONObject obj = new JSONObject(JSONString);
224 | return obj;
225 | } catch (Exception e) {
226 | e.printStackTrace();
227 | return null;
228 | }
229 | }
230 |
231 | // =======================================
232 | // ============ JSONArray 数据 读写 =============
233 | // =======================================
234 | /**
235 | * 保存 JSONArray数据 到 缓存中
236 | *
237 | * @param key
238 | * 保存的key
239 | * @param value
240 | * 保存的JSONArray数据
241 | */
242 | public void put(String key, JSONArray value) {
243 | put(key, value.toString());
244 | }
245 |
246 | /**
247 | * 保存 JSONArray数据 到 缓存中
248 | *
249 | * @param key
250 | * 保存的key
251 | * @param value
252 | * 保存的JSONArray数据
253 | * @param saveTime
254 | * 保存的时间,单位:秒
255 | */
256 | public void put(String key, JSONArray value, int saveTime) {
257 | put(key, value.toString(), saveTime);
258 | }
259 |
260 | /**
261 | * 读取JSONArray数据
262 | *
263 | * @param key
264 | * @return JSONArray数据
265 | */
266 | public JSONArray getAsJSONArray(String key) {
267 | String JSONString = getAsString(key);
268 | try {
269 | JSONArray obj = new JSONArray(JSONString);
270 | return obj;
271 | } catch (Exception e) {
272 | e.printStackTrace();
273 | return null;
274 | }
275 | }
276 |
277 | // =======================================
278 | // ============== byte 数据 读写 =============
279 | // =======================================
280 | /**
281 | * 保存 byte数据 到 缓存中
282 | *
283 | * @param key
284 | * 保存的key
285 | * @param value
286 | * 保存的数据
287 | */
288 | public void put(String key, byte[] value) {
289 | File file = mCache.newFile(key);
290 | FileOutputStream out = null;
291 | try {
292 | out = new FileOutputStream(file);
293 | out.write(value);
294 | } catch (Exception e) {
295 | e.printStackTrace();
296 | } finally {
297 | if (out != null) {
298 | try {
299 | out.flush();
300 | out.close();
301 | } catch (IOException e) {
302 | e.printStackTrace();
303 | }
304 | }
305 | mCache.put(file);
306 | }
307 | }
308 |
309 | /**
310 | * 保存 byte数据 到 缓存中
311 | *
312 | * @param key
313 | * 保存的key
314 | * @param value
315 | * 保存的数据
316 | * @param saveTime
317 | * 保存的时间,单位:秒
318 | */
319 | public void put(String key, byte[] value, int saveTime) {
320 | put(key, Utils.newByteArrayWithDateInfo(saveTime, value));
321 | }
322 |
323 | /**
324 | * 获取 byte 数据
325 | *
326 | * @param key
327 | * @return byte 数据
328 | */
329 | public byte[] getAsBinary(String key) {
330 | RandomAccessFile RAFile = null;
331 | boolean removeFile = false;
332 | try {
333 | File file = mCache.get(key);
334 | if (!file.exists())
335 | return null;
336 | RAFile = new RandomAccessFile(file, "r");
337 | byte[] byteArray = new byte[(int) RAFile.length()];
338 | RAFile.read(byteArray);
339 | if (!Utils.isDue(byteArray)) {
340 | return Utils.clearDateInfo(byteArray);
341 | } else {
342 | removeFile = true;
343 | return null;
344 | }
345 | } catch (Exception e) {
346 | e.printStackTrace();
347 | return null;
348 | } finally {
349 | if (RAFile != null) {
350 | try {
351 | RAFile.close();
352 | } catch (IOException e) {
353 | e.printStackTrace();
354 | }
355 | }
356 | if (removeFile)
357 | remove(key);
358 | }
359 | }
360 |
361 | // =======================================
362 | // ============= 序列化 数据 读写 ===============
363 | // =======================================
364 | /**
365 | * 保存 Serializable数据 到 缓存中
366 | *
367 | * @param key
368 | * 保存的key
369 | * @param value
370 | * 保存的value
371 | */
372 | public void put(String key, Serializable value) {
373 | put(key, value, -1);
374 | }
375 |
376 | /**
377 | * 保存 Serializable数据到 缓存中
378 | *
379 | * @param key
380 | * 保存的key
381 | * @param value
382 | * 保存的value
383 | * @param saveTime
384 | * 保存的时间,单位:秒
385 | */
386 | public void put(String key, Serializable value, int saveTime) {
387 | ByteArrayOutputStream baos = null;
388 | ObjectOutputStream oos = null;
389 | try {
390 | baos = new ByteArrayOutputStream();
391 | oos = new ObjectOutputStream(baos);
392 | oos.writeObject(value);
393 | byte[] data = baos.toByteArray();
394 | if (saveTime != -1) {
395 | put(key, data, saveTime);
396 | } else {
397 | put(key, data);
398 | }
399 | } catch (Exception e) {
400 | e.printStackTrace();
401 | } finally {
402 | try {
403 | oos.close();
404 | } catch (IOException e) {
405 | }
406 | }
407 | }
408 |
409 | /**
410 | * 读取 Serializable数据
411 | *
412 | * @param key
413 | * @return Serializable 数据
414 | */
415 | public Object getAsObject(String key) {
416 | byte[] data = getAsBinary(key);
417 | if (data != null) {
418 | ByteArrayInputStream bais = null;
419 | ObjectInputStream ois = null;
420 | try {
421 | bais = new ByteArrayInputStream(data);
422 | ois = new ObjectInputStream(bais);
423 | Object reObject = ois.readObject();
424 | return reObject;
425 | } catch (Exception e) {
426 | e.printStackTrace();
427 | return null;
428 | } finally {
429 | try {
430 | if (bais != null)
431 | bais.close();
432 | } catch (IOException e) {
433 | e.printStackTrace();
434 | }
435 | try {
436 | if (ois != null)
437 | ois.close();
438 | } catch (IOException e) {
439 | e.printStackTrace();
440 | }
441 | }
442 | }
443 | return null;
444 |
445 | }
446 |
447 | // =======================================
448 | // ============== bitmap 数据 读写 =============
449 | // =======================================
450 | /**
451 | * 保存 bitmap 到 缓存中
452 | *
453 | * @param key
454 | * 保存的key
455 | * @param value
456 | * 保存的bitmap数据
457 | */
458 | public void put(String key, Bitmap value) {
459 | put(key, Utils.Bitmap2Bytes(value));
460 | }
461 |
462 | /**
463 | * 保存 bitmap 到 缓存中
464 | *
465 | * @param key
466 | * 保存的key
467 | * @param value
468 | * 保存的 bitmap 数据
469 | * @param saveTime
470 | * 保存的时间,单位:秒
471 | */
472 | public void put(String key, Bitmap value, int saveTime) {
473 | put(key, Utils.Bitmap2Bytes(value), saveTime);
474 | }
475 |
476 | /**
477 | * 读取 bitmap 数据
478 | *
479 | * @param key
480 | * @return bitmap 数据
481 | */
482 | public Bitmap getAsBitmap(String key) {
483 | if (getAsBinary(key) == null) {
484 | return null;
485 | }
486 | return Utils.Bytes2Bimap(getAsBinary(key));
487 | }
488 |
489 | // =======================================
490 | // ============= drawable 数据 读写 =============
491 | // =======================================
492 | /**
493 | * 保存 drawable 到 缓存中
494 | *
495 | * @param key
496 | * 保存的key
497 | * @param value
498 | * 保存的drawable数据
499 | */
500 | public void put(String key, Drawable value) {
501 | put(key, Utils.drawable2Bitmap(value));
502 | }
503 |
504 | /**
505 | * 保存 drawable 到 缓存中
506 | *
507 | * @param key
508 | * 保存的key
509 | * @param value
510 | * 保存的 drawable 数据
511 | * @param saveTime
512 | * 保存的时间,单位:秒
513 | */
514 | public void put(String key, Drawable value, int saveTime) {
515 | put(key, Utils.drawable2Bitmap(value), saveTime);
516 | }
517 |
518 | /**
519 | * 读取 Drawable 数据
520 | *
521 | * @param key
522 | * @return Drawable 数据
523 | */
524 | public Drawable getAsDrawable(String key) {
525 | if (getAsBinary(key) == null) {
526 | return null;
527 | }
528 | return Utils.bitmap2Drawable(Utils.Bytes2Bimap(getAsBinary(key)));
529 | }
530 |
531 | /**
532 | * 获取缓存文件
533 | *
534 | * @param key
535 | * @return value 缓存的文件
536 | */
537 | public File file(String key) {
538 | File f = mCache.newFile(key);
539 | if (f.exists())
540 | return f;
541 | return null;
542 | }
543 |
544 | /**
545 | * 移除某个key
546 | *
547 | * @param key
548 | * @return 是否移除成功
549 | */
550 | public boolean remove(String key) {
551 | return mCache.remove(key);
552 | }
553 |
554 | /**
555 | * 清除所有数据
556 | */
557 | public void clear() {
558 | mCache.clear();
559 | }
560 |
561 | /**
562 | * @title 缓存管理器
563 | * @author 杨福海(michael) www.yangfuhai.com
564 | * @version 1.0
565 | */
566 | public class ACacheManager {
567 | private final AtomicLong cacheSize;
568 | private final AtomicInteger cacheCount;
569 | private final long sizeLimit;
570 | private final int countLimit;
571 | private final Map lastUsageDates = Collections
572 | .synchronizedMap(new HashMap());
573 | protected File cacheDir;
574 |
575 | private ACacheManager(File cacheDir, long sizeLimit, int countLimit) {
576 | this.cacheDir = cacheDir;
577 | this.sizeLimit = sizeLimit;
578 | this.countLimit = countLimit;
579 | cacheSize = new AtomicLong();
580 | cacheCount = new AtomicInteger();
581 | calculateCacheSizeAndCacheCount();
582 | }
583 |
584 | /**
585 | * 计算 cacheSize和cacheCount
586 | */
587 | private void calculateCacheSizeAndCacheCount() {
588 | new Thread(new Runnable() {
589 | @Override
590 | public void run() {
591 | int size = 0;
592 | int count = 0;
593 | File[] cachedFiles = cacheDir.listFiles();
594 | if (cachedFiles != null) {
595 | for (File cachedFile : cachedFiles) {
596 | size += calculateSize(cachedFile);
597 | count += 1;
598 | lastUsageDates.put(cachedFile,
599 | cachedFile.lastModified());
600 | }
601 | cacheSize.set(size);
602 | cacheCount.set(count);
603 | }
604 | }
605 | }).start();
606 | }
607 |
608 | private void put(File file) {
609 | int curCacheCount = cacheCount.get();
610 | while (curCacheCount + 1 > countLimit) {
611 | long freedSize = removeNext();
612 | cacheSize.addAndGet(-freedSize);
613 |
614 | curCacheCount = cacheCount.addAndGet(-1);
615 | }
616 | cacheCount.addAndGet(1);
617 |
618 | long valueSize = calculateSize(file);
619 | long curCacheSize = cacheSize.get();
620 | while (curCacheSize + valueSize > sizeLimit) {
621 | long freedSize = removeNext();
622 | curCacheSize = cacheSize.addAndGet(-freedSize);
623 | }
624 | cacheSize.addAndGet(valueSize);
625 |
626 | Long currentTime = System.currentTimeMillis();
627 | file.setLastModified(currentTime);
628 | lastUsageDates.put(file, currentTime);
629 | }
630 |
631 | private File get(String key) {
632 | File file = newFile(key);
633 | Long currentTime = System.currentTimeMillis();
634 | file.setLastModified(currentTime);
635 | lastUsageDates.put(file, currentTime);
636 |
637 | return file;
638 | }
639 |
640 | private File newFile(String key) {
641 | return new File(cacheDir, key.hashCode() + "");
642 | }
643 |
644 | private boolean remove(String key) {
645 | File image = get(key);
646 | return image.delete();
647 | }
648 |
649 | private void clear() {
650 | lastUsageDates.clear();
651 | cacheSize.set(0);
652 | File[] files = cacheDir.listFiles();
653 | if (files != null) {
654 | for (File f : files) {
655 | f.delete();
656 | }
657 | }
658 | }
659 |
660 | /**
661 | * 移除旧的文件
662 | *
663 | * @return
664 | */
665 | private long removeNext() {
666 | if (lastUsageDates.isEmpty()) {
667 | return 0;
668 | }
669 |
670 | Long oldestUsage = null;
671 | File mostLongUsedFile = null;
672 | Set> entries = lastUsageDates.entrySet();
673 | synchronized (lastUsageDates) {
674 | for (Entry entry : entries) {
675 | if (mostLongUsedFile == null) {
676 | mostLongUsedFile = entry.getKey();
677 | oldestUsage = entry.getValue();
678 | } else {
679 | Long lastValueUsage = entry.getValue();
680 | if (lastValueUsage < oldestUsage) {
681 | oldestUsage = lastValueUsage;
682 | mostLongUsedFile = entry.getKey();
683 | }
684 | }
685 | }
686 | }
687 |
688 | long fileSize = calculateSize(mostLongUsedFile);
689 | if (mostLongUsedFile.delete()) {
690 | lastUsageDates.remove(mostLongUsedFile);
691 | }
692 | return fileSize;
693 | }
694 |
695 | private long calculateSize(File file) {
696 | return file.length();
697 | }
698 | }
699 |
700 | /**
701 | * @title 时间计算工具类
702 | * @author 杨福海(michael) www.yangfuhai.com
703 | * @version 1.0
704 | */
705 | private static class Utils {
706 |
707 | /**
708 | * 判断缓存的String数据是否到期
709 | *
710 | * @param str
711 | * @return true:到期了 false:还没有到期
712 | */
713 | private static boolean isDue(String str) {
714 | return isDue(str.getBytes());
715 | }
716 |
717 | /**
718 | * 判断缓存的byte数据是否到期
719 | *
720 | * @param data
721 | * @return true:到期了 false:还没有到期
722 | */
723 | private static boolean isDue(byte[] data) {
724 | String[] strs = getDateInfoFromDate(data);
725 | if (strs != null && strs.length == 2) {
726 | String saveTimeStr = strs[0];
727 | while (saveTimeStr.startsWith("0")) {
728 | saveTimeStr = saveTimeStr
729 | .substring(1, saveTimeStr.length());
730 | }
731 | long saveTime = Long.valueOf(saveTimeStr);
732 | long deleteAfter = Long.valueOf(strs[1]);
733 | if (System.currentTimeMillis() > saveTime + deleteAfter * 1000) {
734 | return true;
735 | }
736 | }
737 | return false;
738 | }
739 |
740 | private static String newStringWithDateInfo(int second, String strInfo) {
741 | return createDateInfo(second) + strInfo;
742 | }
743 |
744 | private static byte[] newByteArrayWithDateInfo(int second, byte[] data2) {
745 | byte[] data1 = createDateInfo(second).getBytes();
746 | byte[] retdata = new byte[data1.length + data2.length];
747 | System.arraycopy(data1, 0, retdata, 0, data1.length);
748 | System.arraycopy(data2, 0, retdata, data1.length, data2.length);
749 | return retdata;
750 | }
751 |
752 | private static String clearDateInfo(String strInfo) {
753 | if (strInfo != null && hasDateInfo(strInfo.getBytes())) {
754 | strInfo = strInfo.substring(strInfo.indexOf(mSeparator) + 1,
755 | strInfo.length());
756 | }
757 | return strInfo;
758 | }
759 |
760 | private static byte[] clearDateInfo(byte[] data) {
761 | if (hasDateInfo(data)) {
762 | return copyOfRange(data, indexOf(data, mSeparator) + 1,
763 | data.length);
764 | }
765 | return data;
766 | }
767 |
768 | private static boolean hasDateInfo(byte[] data) {
769 | return data != null && data.length > 15 && data[13] == '-'
770 | && indexOf(data, mSeparator) > 14;
771 | }
772 |
773 | private static String[] getDateInfoFromDate(byte[] data) {
774 | if (hasDateInfo(data)) {
775 | String saveDate = new String(copyOfRange(data, 0, 13));
776 | String deleteAfter = new String(copyOfRange(data, 14,
777 | indexOf(data, mSeparator)));
778 | return new String[] { saveDate, deleteAfter };
779 | }
780 | return null;
781 | }
782 |
783 | private static int indexOf(byte[] data, char c) {
784 | for (int i = 0; i < data.length; i++) {
785 | if (data[i] == c) {
786 | return i;
787 | }
788 | }
789 | return -1;
790 | }
791 |
792 | private static byte[] copyOfRange(byte[] original, int from, int to) {
793 | int newLength = to - from;
794 | if (newLength < 0)
795 | throw new IllegalArgumentException(from + " > " + to);
796 | byte[] copy = new byte[newLength];
797 | System.arraycopy(original, from, copy, 0,
798 | Math.min(original.length - from, newLength));
799 | return copy;
800 | }
801 |
802 | private static final char mSeparator = ' ';
803 |
804 | private static String createDateInfo(int second) {
805 | String currentTime = System.currentTimeMillis() + "";
806 | while (currentTime.length() < 13) {
807 | currentTime = "0" + currentTime;
808 | }
809 | return currentTime + "-" + second + mSeparator;
810 | }
811 |
812 | /*
813 | * Bitmap → byte[]
814 | */
815 | private static byte[] Bitmap2Bytes(Bitmap bm) {
816 | if (bm == null) {
817 | return null;
818 | }
819 | ByteArrayOutputStream baos = new ByteArrayOutputStream();
820 | bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
821 | return baos.toByteArray();
822 | }
823 |
824 | /*
825 | * byte[] → Bitmap
826 | */
827 | private static Bitmap Bytes2Bimap(byte[] b) {
828 | if (b.length == 0) {
829 | return null;
830 | }
831 | return BitmapFactory.decodeByteArray(b, 0, b.length);
832 | }
833 |
834 | /*
835 | * Drawable → Bitmap
836 | */
837 | private static Bitmap drawable2Bitmap(Drawable drawable) {
838 | if (drawable == null) {
839 | return null;
840 | }
841 | // 取 drawable 的长宽
842 | int w = drawable.getIntrinsicWidth();
843 | int h = drawable.getIntrinsicHeight();
844 | // 取 drawable 的颜色格式
845 | Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
846 | : Bitmap.Config.RGB_565;
847 | // 建立对应 bitmap
848 | Bitmap bitmap = Bitmap.createBitmap(w, h, config);
849 | // 建立对应 bitmap 的画布
850 | Canvas canvas = new Canvas(bitmap);
851 | drawable.setBounds(0, 0, w, h);
852 | // 把 drawable 内容画到画布中
853 | drawable.draw(canvas);
854 | return bitmap;
855 | }
856 |
857 | /*
858 | * Bitmap → Drawable
859 | */
860 | @SuppressWarnings("deprecation")
861 | private static Drawable bitmap2Drawable(Bitmap bm) {
862 | if (bm == null) {
863 | return null;
864 | }
865 | return new BitmapDrawable(bm);
866 | }
867 | }
868 |
869 | }
870 |
--------------------------------------------------------------------------------
/app/src/main/assets/css/style.css:
--------------------------------------------------------------------------------
1 | /*
2 | Theme Name: Twenty Seventeen
3 | Theme URI: https://wordpress.org/themes/twentyseventeen/
4 | Author: the WordPress team
5 | Author URI: https://wordpress.org/
6 | Description: Twenty Seventeen brings your site to life with header video and immersive featured images. With a focus on business sites, it features multiple sections on the front page as well as widgets, navigation and social menus, a logo, and more. Personalize its asymmetrical grid with a custom color scheme and showcase your multimedia content with post formats. Our default theme for 2017 works great in many languages, for any abilities, and on any device.
7 | Version: 1.5
8 | License: GNU General Public License v2 or later
9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html
10 | Text Domain: twentyseventeen
11 | Tags: one-column, two-columns, right-sidebar, flexible-header, accessibility-ready, custom-colors, custom-header, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, post-formats, rtl-language-support, sticky-post, theme-options, threaded-comments, translation-ready
12 |
13 | This theme, like WordPress, is licensed under the GPL.
14 | Use it to make something cool, have fun, and share what you've learned with others.
15 | */
16 |
17 | /*--------------------------------------------------------------
18 | >>> TABLE OF CONTENTS:
19 | ----------------------------------------------------------------
20 | 1.0 Normalize
21 | 2.0 Accessibility
22 | 3.0 Alignments
23 | 4.0 Clearings
24 | 5.0 Typography
25 | 6.0 Forms
26 | 7.0 Formatting
27 | 8.0 Lists
28 | 9.0 Tables
29 | 10.0 Links
30 | 11.0 Featured Image Hover
31 | 12.0 Navigation
32 | 13.0 Layout
33 | 13.1 Header
34 | 13.2 Front Page
35 | 13.3 Regular Content
36 | 13.4 Posts
37 | 13.5 Pages
38 | 13.6 Footer
39 | 14.0 Comments
40 | 15.0 Widgets
41 | 16.0 Media
42 | 16.1 Galleries
43 | 17.0 Customizer
44 | 18.0 SVGs Fallbacks
45 | 19.0 Media Queries
46 | 20.0 Print
47 | --------------------------------------------------------------*/
48 |
49 | /*--------------------------------------------------------------
50 | 1.0 Normalize
51 | Styles based on Normalize v5.0.0 @link https://github.com/necolas/normalize.css
52 | --------------------------------------------------------------*/
53 |
54 | html {
55 | font-family: sans-serif;
56 | line-height: 1.15;
57 | -ms-text-size-adjust: 100%;
58 | -webkit-text-size-adjust: 100%;
59 | }
60 |
61 | body {
62 | margin: 0;
63 | }
64 |
65 | article,
66 | aside,
67 | footer,
68 | header,
69 | nav,
70 | section {
71 | display: block;
72 | }
73 |
74 | h1 {
75 | font-size: 2em;
76 | margin: 0.67em 0;
77 | }
78 |
79 | figcaption,
80 | figure,
81 | main {
82 | display: block;
83 | }
84 |
85 | figure {
86 | margin: 1em 0;
87 | }
88 |
89 | hr {
90 | -webkit-box-sizing: content-box;
91 | -moz-box-sizing: content-box;
92 | box-sizing: content-box;
93 | height: 0;
94 | overflow: visible;
95 | }
96 |
97 | pre {
98 | font-family: monospace, monospace;
99 | font-size: 1em;
100 | }
101 |
102 | a {
103 | background-color: transparent;
104 | -webkit-text-decoration-skip: objects;
105 | }
106 |
107 | a:active,
108 | a:hover {
109 | outline-width: 0;
110 | }
111 |
112 | abbr[title] {
113 | border-bottom: 1px #767676 dotted;
114 | text-decoration: none;
115 | }
116 |
117 | b,
118 | strong {
119 | font-weight: inherit;
120 | }
121 |
122 | b,
123 | strong {
124 | font-weight: 700;
125 | }
126 |
127 | code,
128 | kbd,
129 | samp {
130 | font-family: monospace, monospace;
131 | font-size: 1em;
132 | }
133 |
134 | dfn {
135 | font-style: italic;
136 | }
137 |
138 | mark {
139 | background-color: #eee;
140 | color: #222;
141 | }
142 |
143 | small {
144 | font-size: 80%;
145 | }
146 |
147 | sub,
148 | sup {
149 | font-size: 75%;
150 | line-height: 0;
151 | position: relative;
152 | vertical-align: baseline;
153 | }
154 |
155 | sub {
156 | bottom: -0.25em;
157 | }
158 |
159 | sup {
160 | top: -0.5em;
161 | }
162 |
163 | audio,
164 | video {
165 | display: inline-block;
166 | }
167 |
168 | audio:not([controls]) {
169 | display: none;
170 | height: 0;
171 | }
172 |
173 | img {
174 | border-style: none;
175 | }
176 |
177 | svg:not(:root) {
178 | overflow: hidden;
179 | }
180 |
181 | button,
182 | input,
183 | optgroup,
184 | select,
185 | textarea {
186 | font-family: sans-serif;
187 | font-size: 100%;
188 | line-height: 1.15;
189 | margin: 0;
190 | }
191 |
192 | button,
193 | input {
194 | overflow: visible;
195 | }
196 |
197 | button,
198 | select {
199 | text-transform: none;
200 | }
201 |
202 | button,
203 | html [type="button"],
204 | [type="reset"],
205 | [type="submit"] {
206 | -webkit-appearance: button;
207 | }
208 |
209 | button::-moz-focus-inner,
210 | [type="button"]::-moz-focus-inner,
211 | [type="reset"]::-moz-focus-inner,
212 | [type="submit"]::-moz-focus-inner {
213 | border-style: none;
214 | padding: 0;
215 | }
216 |
217 | button:-moz-focusring,
218 | [type="button"]:-moz-focusring,
219 | [type="reset"]:-moz-focusring,
220 | [type="submit"]:-moz-focusring {
221 | outline: 1px dotted ButtonText;
222 | }
223 |
224 | fieldset {
225 | border: 1px solid #bbb;
226 | margin: 0 2px;
227 | padding: 0.35em 0.625em 0.75em;
228 | }
229 |
230 | legend {
231 | -webkit-box-sizing: border-box;
232 | -moz-box-sizing: border-box;
233 | box-sizing: border-box;
234 | color: inherit;
235 | display: table;
236 | max-width: 100%;
237 | padding: 0;
238 | white-space: normal;
239 | }
240 |
241 | progress {
242 | display: inline-block;
243 | vertical-align: baseline;
244 | }
245 |
246 | textarea {
247 | overflow: auto;
248 | }
249 |
250 | [type="checkbox"],
251 | [type="radio"] {
252 | -webkit-box-sizing: border-box;
253 | -moz-box-sizing: border-box;
254 | box-sizing: border-box;
255 | padding: 0;
256 | }
257 |
258 | [type="number"]::-webkit-inner-spin-button,
259 | [type="number"]::-webkit-outer-spin-button {
260 | height: auto;
261 | }
262 |
263 | [type="search"] {
264 | -webkit-appearance: textfield;
265 | outline-offset: -2px;
266 | }
267 |
268 | [type="search"]::-webkit-search-cancel-button,
269 | [type="search"]::-webkit-search-decoration {
270 | -webkit-appearance: none;
271 | }
272 |
273 | ::-webkit-file-upload-button {
274 | -webkit-appearance: button;
275 | font: inherit;
276 | }
277 |
278 | details,
279 | menu {
280 | display: block;
281 | }
282 |
283 | summary {
284 | display: list-item;
285 | }
286 |
287 | canvas {
288 | display: inline-block;
289 | }
290 |
291 | template {
292 | display: none;
293 | }
294 |
295 | [hidden] {
296 | display: none;
297 | }
298 |
299 | /*--------------------------------------------------------------
300 | 2.0 Accessibility
301 | --------------------------------------------------------------*/
302 |
303 | /* Text meant only for screen readers. */
304 |
305 | .screen-reader-text {
306 | clip: rect(1px, 1px, 1px, 1px);
307 | height: 1px;
308 | overflow: hidden;
309 | position: absolute !important;
310 | width: 1px;
311 | word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */
312 | }
313 |
314 | .screen-reader-text:focus {
315 | background-color: #f1f1f1;
316 | -webkit-border-radius: 3px;
317 | border-radius: 3px;
318 | -webkit-box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
319 | box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
320 | clip: auto !important;
321 | color: #21759b;
322 | display: block;
323 | font-size: 14px;
324 | font-size: 0.875rem;
325 | font-weight: 700;
326 | height: auto;
327 | left: 5px;
328 | line-height: normal;
329 | padding: 15px 23px 14px;
330 | text-decoration: none;
331 | top: 5px;
332 | width: auto;
333 | z-index: 100000; /* Above WP toolbar. */
334 | }
335 |
336 | /*--------------------------------------------------------------
337 | 3.0 Alignments
338 | --------------------------------------------------------------*/
339 |
340 | .alignleft {
341 | display: inline;
342 | float: left;
343 | margin-right: 1.5em;
344 | }
345 |
346 | .alignright {
347 | display: inline;
348 | float: right;
349 | margin-left: 1.5em;
350 | }
351 |
352 | .aligncenter {
353 | clear: both;
354 | display: block;
355 | margin-left: auto;
356 | margin-right: auto;
357 | }
358 |
359 | /*--------------------------------------------------------------
360 | 4.0 Clearings
361 | --------------------------------------------------------------*/
362 |
363 | .clear:before,
364 | .clear:after,
365 | .entry-content:before,
366 | .entry-content:after,
367 | .entry-footer:before,
368 | .entry-footer:after,
369 | .comment-content:before,
370 | .comment-content:after,
371 | .site-header:before,
372 | .site-header:after,
373 | .site-content:before,
374 | .site-content:after,
375 | .site-footer:before,
376 | .site-footer:after,
377 | .nav-links:before,
378 | .nav-links:after,
379 | .pagination:before,
380 | .pagination:after,
381 | .comment-author:before,
382 | .comment-author:after,
383 | .widget-area:before,
384 | .widget-area:after,
385 | .widget:before,
386 | .widget:after,
387 | .comment-meta:before,
388 | .comment-meta:after {
389 | content: "";
390 | display: table;
391 | table-layout: fixed;
392 | }
393 |
394 | .clear:after,
395 | .entry-content:after,
396 | .entry-footer:after,
397 | .comment-content:after,
398 | .site-header:after,
399 | .site-content:after,
400 | .site-footer:after,
401 | .nav-links:after,
402 | .pagination:after,
403 | .comment-author:after,
404 | .widget-area:after,
405 | .widget:after,
406 | .comment-meta:after {
407 | clear: both;
408 | }
409 |
410 | /*--------------------------------------------------------------
411 | 5.0 Typography
412 | --------------------------------------------------------------*/
413 |
414 | body,
415 | button,
416 | input,
417 | select,
418 | textarea {
419 | color: #333;
420 | font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;
421 | font-size: 15px;
422 | font-size: 0.9375rem;
423 | font-weight: 400;
424 | line-height: 1.66;
425 | }
426 |
427 | h1,
428 | h2,
429 | h3,
430 | h4,
431 | h5,
432 | h6 {
433 | clear: both;
434 | line-height: 1.4;
435 | margin: 0 0 0.75em;
436 | padding: 1.5em 0 0;
437 | }
438 |
439 | h1:first-child,
440 | h2:first-child,
441 | h3:first-child,
442 | h4:first-child,
443 | h5:first-child,
444 | h6:first-child {
445 | padding-top: 0;
446 | }
447 |
448 | h1 {
449 | font-size: 24px;
450 | font-size: 1.5rem;
451 | font-weight: 300;
452 | }
453 |
454 | h2,
455 | .home.blog .entry-title {
456 | color: #666;
457 | font-size: 20px;
458 | font-size: 1.25rem;
459 | font-weight: 300;
460 | }
461 |
462 | h3 {
463 | color: #333;
464 | font-size: 18px;
465 | font-size: 1.125rem;
466 | font-weight: 300;
467 | }
468 |
469 | h4 {
470 | color: #333;
471 | font-size: 16px;
472 | font-size: 1rem;
473 | font-weight: 800;
474 | }
475 |
476 | h5 {
477 | color: #767676;
478 | font-size: 13px;
479 | font-size: 0.8125rem;
480 | font-weight: 800;
481 | letter-spacing: 0.15em;
482 | text-transform: uppercase;
483 | }
484 |
485 | h6 {
486 | color: #333;
487 | font-size: 15px;
488 | font-size: 0.9375rem;
489 | font-weight: 800;
490 | }
491 |
492 | p {
493 | margin: 0 0 1.5em;
494 | padding: 0;
495 | }
496 |
497 | dfn,
498 | cite,
499 | em,
500 | i {
501 | font-style: italic;
502 | }
503 |
504 | blockquote {
505 | color: #666;
506 | font-size: 18px;
507 | font-size: 1.125rem;
508 | font-style: italic;
509 | line-height: 1.7;
510 | margin: 0;
511 | overflow: hidden;
512 | padding: 0;
513 | }
514 |
515 | blockquote cite {
516 | display: block;
517 | font-style: normal;
518 | font-weight: 600;
519 | margin-top: 0.5em;
520 | }
521 |
522 | address {
523 | margin: 0 0 1.5em;
524 | }
525 |
526 | pre {
527 | background: #eee;
528 | font-family: "Courier 10 Pitch", Courier, monospace;
529 | font-size: 15px;
530 | font-size: 0.9375rem;
531 | line-height: 1.6;
532 | margin-bottom: 1.6em;
533 | max-width: 100%;
534 | overflow: auto;
535 | padding: 1.6em;
536 | }
537 |
538 | code,
539 | kbd,
540 | tt,
541 | var {
542 | font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
543 | font-size: 15px;
544 | font-size: 0.9375rem;
545 | }
546 |
547 | abbr,
548 | acronym {
549 | border-bottom: 1px dotted #666;
550 | cursor: help;
551 | }
552 |
553 | mark,
554 | ins {
555 | background: #eee;
556 | text-decoration: none;
557 | }
558 |
559 | big {
560 | font-size: 125%;
561 | }
562 |
563 | blockquote {
564 | quotes: "" "";
565 | }
566 |
567 | q {
568 | quotes: "“" "”" "‘" "’";
569 | }
570 |
571 | blockquote:before,
572 | blockquote:after {
573 | content: "";
574 | }
575 |
576 | :focus {
577 | outline: none;
578 | }
579 |
580 | /* Typography for Arabic Font */
581 |
582 | html[lang="ar"] body,
583 | html[lang="ar"] button,
584 | html[lang="ar"] input,
585 | html[lang="ar"] select,
586 | html[lang="ar"] textarea,
587 | html[lang="ary"] body,
588 | html[lang="ary"] button,
589 | html[lang="ary"] input,
590 | html[lang="ary"] select,
591 | html[lang="ary"] textarea,
592 | html[lang="azb"] body,
593 | html[lang="azb"] button,
594 | html[lang="azb"] input,
595 | html[lang="azb"] select,
596 | html[lang="azb"] textarea,
597 | html[lang="fa-IR"] body,
598 | html[lang="fa-IR"] button,
599 | html[lang="fa-IR"] input,
600 | html[lang="fa-IR"] select,
601 | html[lang="fa-IR"] textarea,
602 | html[lang="haz"] body,
603 | html[lang="haz"] button,
604 | html[lang="haz"] input,
605 | html[lang="haz"] select,
606 | html[lang="haz"] textarea,
607 | html[lang="ps"] body,
608 | html[lang="ps"] button,
609 | html[lang="ps"] input,
610 | html[lang="ps"] select,
611 | html[lang="ps"] textarea,
612 | html[lang="ur"] body,
613 | html[lang="ur"] button,
614 | html[lang="ur"] input,
615 | html[lang="ur"] select,
616 | html[lang="ur"] textarea {
617 | font-family: Tahoma, Arial, sans-serif;
618 | }
619 |
620 | html[lang="ar"] h1,
621 | html[lang="ar"] h2,
622 | html[lang="ar"] h3,
623 | html[lang="ar"] h4,
624 | html[lang="ar"] h5,
625 | html[lang="ar"] h6,
626 | html[lang="ary"] h1,
627 | html[lang="ary"] h2,
628 | html[lang="ary"] h3,
629 | html[lang="ary"] h4,
630 | html[lang="ary"] h5,
631 | html[lang="ary"] h6,
632 | html[lang="azb"] h1,
633 | html[lang="azb"] h2,
634 | html[lang="azb"] h3,
635 | html[lang="azb"] h4,
636 | html[lang="azb"] h5,
637 | html[lang="azb"] h6,
638 | html[lang="fa-IR"] h1,
639 | html[lang="fa-IR"] h2,
640 | html[lang="fa-IR"] h3,
641 | html[lang="fa-IR"] h4,
642 | html[lang="fa-IR"] h5,
643 | html[lang="fa-IR"] h6,
644 | html[lang="haz"] h1,
645 | html[lang="haz"] h2,
646 | html[lang="haz"] h3,
647 | html[lang="haz"] h4,
648 | html[lang="haz"] h5,
649 | html[lang="haz"] h6,
650 | html[lang="ps"] h1,
651 | html[lang="ps"] h2,
652 | html[lang="ps"] h3,
653 | html[lang="ps"] h4,
654 | html[lang="ps"] h5,
655 | html[lang="ps"] h6,
656 | html[lang="ur"] h1,
657 | html[lang="ur"] h2,
658 | html[lang="ur"] h3,
659 | html[lang="ur"] h4,
660 | html[lang="ur"] h5,
661 | html[lang="ur"] h6 {
662 | font-weight: 700;
663 | }
664 |
665 | /* Typography for Chinese Font */
666 |
667 | html[lang^="zh-"] body,
668 | html[lang^="zh-"] button,
669 | html[lang^="zh-"] input,
670 | html[lang^="zh-"] select,
671 | html[lang^="zh-"] textarea {
672 | font-family: "PingFang TC", "Helvetica Neue", Helvetica, STHeitiTC-Light, Arial, sans-serif;
673 | }
674 |
675 | html[lang="zh-CN"] body,
676 | html[lang="zh-CN"] button,
677 | html[lang="zh-CN"] input,
678 | html[lang="zh-CN"] select,
679 | html[lang="zh-CN"] textarea {
680 | font-family: "PingFang SC", "Helvetica Neue", Helvetica, STHeitiSC-Light, Arial, sans-serif;
681 | }
682 |
683 | html[lang^="zh-"] h1,
684 | html[lang^="zh-"] h2,
685 | html[lang^="zh-"] h3,
686 | html[lang^="zh-"] h4,
687 | html[lang^="zh-"] h5,
688 | html[lang^="zh-"] h6 {
689 | font-weight: 700;
690 | }
691 |
692 | /* Typography for Cyrillic Font */
693 |
694 | html[lang="bg-BG"] body,
695 | html[lang="bg-BG"] button,
696 | html[lang="bg-BG"] input,
697 | html[lang="bg-BG"] select,
698 | html[lang="bg-BG"] textarea,
699 | html[lang="ru-RU"] body,
700 | html[lang="ru-RU"] button,
701 | html[lang="ru-RU"] input,
702 | html[lang="ru-RU"] select,
703 | html[lang="ru-RU"] textarea,
704 | html[lang="uk"] body,
705 | html[lang="uk"] button,
706 | html[lang="uk"] input,
707 | html[lang="uk"] select,
708 | html[lang="uk"] textarea {
709 | font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, sans-serif;
710 | }
711 |
712 | html[lang="bg-BG"] h1,
713 | html[lang="bg-BG"] h2,
714 | html[lang="bg-BG"] h3,
715 | html[lang="bg-BG"] h4,
716 | html[lang="bg-BG"] h5,
717 | html[lang="bg-BG"] h6,
718 | html[lang="ru-RU"] h1,
719 | html[lang="ru-RU"] h2,
720 | html[lang="ru-RU"] h3,
721 | html[lang="ru-RU"] h4,
722 | html[lang="ru-RU"] h5,
723 | html[lang="ru-RU"] h6,
724 | html[lang="uk"] h1,
725 | html[lang="uk"] h2,
726 | html[lang="uk"] h3,
727 | html[lang="uk"] h4,
728 | html[lang="uk"] h5,
729 | html[lang="uk"] h6 {
730 | font-weight: 700;
731 | line-height: 1.2;
732 | }
733 |
734 | /* Typography for Devanagari Font */
735 |
736 | html[lang="bn-BD"] body,
737 | html[lang="bn-BD"] button,
738 | html[lang="bn-BD"] input,
739 | html[lang="bn-BD"] select,
740 | html[lang="bn-BD"] textarea,
741 | html[lang="hi-IN"] body,
742 | html[lang="hi-IN"] button,
743 | html[lang="hi-IN"] input,
744 | html[lang="hi-IN"] select,
745 | html[lang="hi-IN"] textarea,
746 | html[lang="mr-IN"] body,
747 | html[lang="mr-IN"] button,
748 | html[lang="mr-IN"] input,
749 | html[lang="mr-IN"] select,
750 | html[lang="mr-IN"] textarea {
751 | font-family: Arial, sans-serif;
752 | }
753 |
754 | html[lang="bn-BD"] h1,
755 | html[lang="bn-BD"] h2,
756 | html[lang="bn-BD"] h3,
757 | html[lang="bn-BD"] h4,
758 | html[lang="bn-BD"] h5,
759 | html[lang="bn-BD"] h6,
760 | html[lang="hi-IN"] h1,
761 | html[lang="hi-IN"] h2,
762 | html[lang="hi-IN"] h3,
763 | html[lang="hi-IN"] h4,
764 | html[lang="hi-IN"] h5,
765 | html[lang="hi-IN"] h6,
766 | html[lang="mr-IN"] h1,
767 | html[lang="mr-IN"] h2,
768 | html[lang="mr-IN"] h3,
769 | html[lang="mr-IN"] h4,
770 | html[lang="mr-IN"] h5,
771 | html[lang="mr-IN"] h6 {
772 | font-weight: 700;
773 | }
774 |
775 | /* Typography for Greek Font */
776 |
777 | html[lang="el"] body,
778 | html[lang="el"] button,
779 | html[lang="el"] input,
780 | html[lang="el"] select,
781 | html[lang="el"] textarea {
782 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
783 | }
784 |
785 | html[lang="el"] h1,
786 | html[lang="el"] h2,
787 | html[lang="el"] h3,
788 | html[lang="el"] h4,
789 | html[lang="el"] h5,
790 | html[lang="el"] h6 {
791 | font-weight: 700;
792 | line-height: 1.3;
793 | }
794 |
795 | /* Typography for Gujarati Font */
796 |
797 | html[lang="gu-IN"] body,
798 | html[lang="gu-IN"] button,
799 | html[lang="gu-IN"] input,
800 | html[lang="gu-IN"] select,
801 | html[lang="gu-IN"] textarea {
802 | font-family: Arial, sans-serif;
803 | }
804 |
805 | html[lang="gu-IN"] h1,
806 | html[lang="gu-IN"] h2,
807 | html[lang="gu-IN"] h3,
808 | html[lang="gu-IN"] h4,
809 | html[lang="gu-IN"] h5,
810 | html[lang="gu-IN"] h6 {
811 | font-weight: 700;
812 | }
813 |
814 | /* Typography for Hebrew Font */
815 |
816 | html[lang="he-IL"] body,
817 | html[lang="he-IL"] button,
818 | html[lang="he-IL"] input,
819 | html[lang="he-IL"] select,
820 | html[lang="he-IL"] textarea {
821 | font-family: "Arial Hebrew", Arial, sans-serif;
822 | }
823 |
824 | html[lang="he-IL"] h1,
825 | html[lang="he-IL"] h2,
826 | html[lang="he-IL"] h3,
827 | html[lang="he-IL"] h4,
828 | html[lang="he-IL"] h5,
829 | html[lang="he-IL"] h6 {
830 | font-weight: 700;
831 | }
832 |
833 | /* Typography for Japanese Font */
834 |
835 | html[lang="ja"] body,
836 | html[lang="ja"] button,
837 | html[lang="ja"] input,
838 | html[lang="ja"] select,
839 | html[lang="ja"] textarea {
840 | font-family: "Hiragino Kaku Gothic Pro", Meiryo, sans-serif;
841 | }
842 |
843 | html[lang="ja"] h1,
844 | html[lang="ja"] h2,
845 | html[lang="ja"] h3,
846 | html[lang="ja"] h4,
847 | html[lang="ja"] h5,
848 | html[lang="ja"] h6 {
849 | font-weight: 700;
850 | }
851 |
852 | /* Typography for Korean font */
853 |
854 | html[lang="ko-KR"] body,
855 | html[lang="ko-KR"] button,
856 | html[lang="ko-KR"] input,
857 | html[lang="ko-KR"] select,
858 | html[lang="ko-KR"] textarea {
859 | font-family: "Apple SD Gothic Neo", "Malgun Gothic", "Nanum Gothic", Dotum, sans-serif;
860 | }
861 |
862 | html[lang="ko-KR"] h1,
863 | html[lang="ko-KR"] h2,
864 | html[lang="ko-KR"] h3,
865 | html[lang="ko-KR"] h4,
866 | html[lang="ko-KR"] h5,
867 | html[lang="ko-KR"] h6 {
868 | font-weight: 600;
869 | }
870 |
871 | /* Typography for Thai Font */
872 |
873 | html[lang="th"] h1,
874 | html[lang="th"] h2,
875 | html[lang="th"] h3,
876 | html[lang="th"] h4,
877 | html[lang="th"] h5,
878 | html[lang="th"] h6 {
879 | line-height: 1.65;
880 | font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif;
881 | }
882 |
883 | html[lang="th"] body,
884 | html[lang="th"] button,
885 | html[lang="th"] input,
886 | html[lang="th"] select,
887 | html[lang="th"] textarea {
888 | line-height: 1.8;
889 | font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif;
890 | }
891 |
892 | /* Remove letter-spacing for all non-latin alphabets */
893 |
894 | html[lang="ar"] *,
895 | html[lang="ary"] *,
896 | html[lang="azb"] *,
897 | html[lang="haz"] *,
898 | html[lang="ps"] *,
899 | html[lang^="zh-"] *,
900 | html[lang="bg-BG"] *,
901 | html[lang="ru-RU"] *,
902 | html[lang="uk"] *,
903 | html[lang="bn-BD"] *,
904 | html[lang="hi-IN"] *,
905 | html[lang="mr-IN"] *,
906 | html[lang="el"] *,
907 | html[lang="gu-IN"] *,
908 | html[lang="he-IL"] *,
909 | html[lang="ja"] *,
910 | html[lang="ko-KR"] *,
911 | html[lang="th"] * {
912 | letter-spacing: 0 !important;
913 | }
914 |
915 | /*--------------------------------------------------------------
916 | 6.0 Forms
917 | --------------------------------------------------------------*/
918 |
919 | label {
920 | color: #333;
921 | display: block;
922 | font-weight: 800;
923 | margin-bottom: 0.5em;
924 | }
925 |
926 | fieldset {
927 | margin-bottom: 1em;
928 | }
929 |
930 | input[type="text"],
931 | input[type="email"],
932 | input[type="url"],
933 | input[type="password"],
934 | input[type="search"],
935 | input[type="number"],
936 | input[type="tel"],
937 | input[type="range"],
938 | input[type="date"],
939 | input[type="month"],
940 | input[type="week"],
941 | input[type="time"],
942 | input[type="datetime"],
943 | input[type="datetime-local"],
944 | input[type="color"],
945 | textarea {
946 | color: #666;
947 | background: #fff;
948 | background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));
949 | border: 1px solid #bbb;
950 | -webkit-border-radius: 3px;
951 | border-radius: 3px;
952 | display: block;
953 | padding: 0.7em;
954 | width: 100%;
955 | }
956 |
957 | input[type="text"]:focus,
958 | input[type="email"]:focus,
959 | input[type="url"]:focus,
960 | input[type="password"]:focus,
961 | input[type="search"]:focus,
962 | input[type="number"]:focus,
963 | input[type="tel"]:focus,
964 | input[type="range"]:focus,
965 | input[type="date"]:focus,
966 | input[type="month"]:focus,
967 | input[type="week"]:focus,
968 | input[type="time"]:focus,
969 | input[type="datetime"]:focus,
970 | input[type="datetime-local"]:focus,
971 | input[type="color"]:focus,
972 | textarea:focus {
973 | color: #222;
974 | border-color: #333;
975 | }
976 |
977 | select {
978 | border: 1px solid #bbb;
979 | -webkit-border-radius: 3px;
980 | border-radius: 3px;
981 | height: 3em;
982 | max-width: 100%;
983 | }
984 |
985 | input[type="radio"],
986 | input[type="checkbox"] {
987 | margin-right: 0.5em;
988 | }
989 |
990 | input[type="radio"] + label,
991 | input[type="checkbox"] + label {
992 | font-weight: 400;
993 | }
994 |
995 | button,
996 | input[type="button"],
997 | input[type="submit"] {
998 | background-color: #222;
999 | border: 0;
1000 | -webkit-border-radius: 2px;
1001 | border-radius: 2px;
1002 | -webkit-box-shadow: none;
1003 | box-shadow: none;
1004 | color: #fff;
1005 | cursor: pointer;
1006 | display: inline-block;
1007 | font-size: 14px;
1008 | font-size: 0.875rem;
1009 | font-weight: 800;
1010 | line-height: 1;
1011 | padding: 1em 2em;
1012 | text-shadow: none;
1013 | -webkit-transition: background 0.2s;
1014 | transition: background 0.2s;
1015 | }
1016 |
1017 | input + button,
1018 | input + input[type="button"],
1019 | input + input[type="submit"] {
1020 | padding: 0.75em 2em;
1021 | }
1022 |
1023 | button.secondary,
1024 | input[type="reset"],
1025 | input[type="button"].secondary,
1026 | input[type="reset"].secondary,
1027 | input[type="submit"].secondary {
1028 | background-color: #ddd;
1029 | color: #222;
1030 | }
1031 |
1032 | button:hover,
1033 | button:focus,
1034 | input[type="button"]:hover,
1035 | input[type="button"]:focus,
1036 | input[type="submit"]:hover,
1037 | input[type="submit"]:focus {
1038 | background: #767676;
1039 | }
1040 |
1041 | button.secondary:hover,
1042 | button.secondary:focus,
1043 | input[type="reset"]:hover,
1044 | input[type="reset"]:focus,
1045 | input[type="button"].secondary:hover,
1046 | input[type="button"].secondary:focus,
1047 | input[type="reset"].secondary:hover,
1048 | input[type="reset"].secondary:focus,
1049 | input[type="submit"].secondary:hover,
1050 | input[type="submit"].secondary:focus {
1051 | background: #bbb;
1052 | }
1053 |
1054 | /* Placeholder text color -- selectors need to be separate to work. */
1055 | ::-webkit-input-placeholder {
1056 | color: #333;
1057 | font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;
1058 | }
1059 |
1060 | :-moz-placeholder {
1061 | color: #333;
1062 | font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;
1063 | }
1064 |
1065 | ::-moz-placeholder {
1066 | color: #333;
1067 | font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;
1068 | opacity: 1;
1069 | /* Since FF19 lowers the opacity of the placeholder by default */
1070 | }
1071 |
1072 | :-ms-input-placeholder {
1073 | color: #333;
1074 | font-family: "Libre Franklin", "Helvetica Neue", helvetica, arial, sans-serif;
1075 | }
1076 |
1077 | /*--------------------------------------------------------------
1078 | 7.0 Formatting
1079 | --------------------------------------------------------------*/
1080 |
1081 | hr {
1082 | background-color: #bbb;
1083 | border: 0;
1084 | height: 1px;
1085 | margin-bottom: 1.5em;
1086 | }
1087 |
1088 | /*--------------------------------------------------------------
1089 | 8.0 Lists
1090 | --------------------------------------------------------------*/
1091 |
1092 | ul,
1093 | ol {
1094 | margin: 0 0 1.5em;
1095 | padding: 0;
1096 | }
1097 |
1098 | ul {
1099 | list-style: disc;
1100 | }
1101 |
1102 | ol {
1103 | list-style: decimal;
1104 | }
1105 |
1106 | li > ul,
1107 | li > ol {
1108 | margin-bottom: 0;
1109 | margin-left: 1.5em;
1110 | }
1111 |
1112 | dt {
1113 | font-weight: 700;
1114 | }
1115 |
1116 | dd {
1117 | margin: 0 1.5em 1.5em;
1118 | }
1119 |
1120 | /*--------------------------------------------------------------
1121 | 9.0 Tables
1122 | --------------------------------------------------------------*/
1123 |
1124 | table {
1125 | border-collapse: collapse;
1126 | margin: 0 0 1.5em;
1127 | width: 100%;
1128 | }
1129 |
1130 | thead th {
1131 | border-bottom: 2px solid #bbb;
1132 | padding-bottom: 0.5em;
1133 | }
1134 |
1135 | th {
1136 | padding: 0.4em;
1137 | text-align: left;
1138 | }
1139 |
1140 | tr {
1141 | border-bottom: 1px solid #eee;
1142 | }
1143 |
1144 | td {
1145 | padding: 0.4em;
1146 | }
1147 |
1148 | th:first-child,
1149 | td:first-child {
1150 | padding-left: 0;
1151 | }
1152 |
1153 | th:last-child,
1154 | td:last-child {
1155 | padding-right: 0;
1156 | }
1157 |
1158 | /*--------------------------------------------------------------
1159 | 10.0 Links
1160 | --------------------------------------------------------------*/
1161 |
1162 | a {
1163 | color: #222;
1164 | text-decoration: none;
1165 | }
1166 |
1167 | a:focus {
1168 | outline: thin dotted;
1169 | }
1170 |
1171 | a:hover,
1172 | a:active {
1173 | color: #000;
1174 | outline: 0;
1175 | }
1176 |
1177 | /* Hover effects */
1178 |
1179 | .entry-content a,
1180 | .entry-summary a,
1181 | .comment-content a,
1182 | .widget a,
1183 | .site-footer .widget-area a,
1184 | .posts-navigation a,
1185 | .widget_authors a strong {
1186 | -webkit-box-shadow: inset 0 -1px 0 rgba(15, 15, 15, 1);
1187 | box-shadow: inset 0 -1px 0 rgba(15, 15, 15, 1);
1188 | -webkit-transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
1189 | transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
1190 | transition: color 80ms ease-in, box-shadow 130ms ease-in-out;
1191 | transition: color 80ms ease-in, box-shadow 130ms ease-in-out, -webkit-box-shadow 130ms ease-in-out;
1192 | }
1193 |
1194 | .entry-title a,
1195 | .entry-meta a,
1196 | .page-links a,
1197 | .page-links a .page-number,
1198 | .entry-footer a,
1199 | .entry-footer .cat-links a,
1200 | .entry-footer .tags-links a,
1201 | .edit-link a,
1202 | .post-navigation a,
1203 | .logged-in-as a,
1204 | .comment-navigation a,
1205 | .comment-metadata a,
1206 | .comment-metadata a.comment-edit-link,
1207 | .comment-reply-link,
1208 | a .nav-title,
1209 | .pagination a,
1210 | .comments-pagination a,
1211 | .site-info a,
1212 | .widget .widget-title a,
1213 | .widget ul li a,
1214 | .site-footer .widget-area ul li a,
1215 | .site-footer .widget-area ul li a {
1216 | -webkit-box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 1);
1217 | box-shadow: inset 0 -1px 0 rgba(255, 255, 255, 1);
1218 | text-decoration: none;
1219 | -webkit-transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
1220 | transition: color 80ms ease-in, -webkit-box-shadow 130ms ease-in-out;
1221 | transition: color 80ms ease-in, box-shadow 130ms ease-in-out;
1222 | transition: color 80ms ease-in, box-shadow 130ms ease-in-out, -webkit-box-shadow 130ms ease-in-out;
1223 | }
1224 |
1225 | .entry-content a:focus,
1226 | .entry-content a:hover,
1227 | .entry-summary a:focus,
1228 | .entry-summary a:hover,
1229 | .comment-content a:focus,
1230 | .comment-content a:hover,
1231 | .widget a:focus,
1232 | .widget a:hover,
1233 | .site-footer .widget-area a:focus,
1234 | .site-footer .widget-area a:hover,
1235 | .posts-navigation a:focus,
1236 | .posts-navigation a:hover,
1237 | .comment-metadata a:focus,
1238 | .comment-metadata a:hover,
1239 | .comment-metadata a.comment-edit-link:focus,
1240 | .comment-metadata a.comment-edit-link:hover,
1241 | .comment-reply-link:focus,
1242 | .comment-reply-link:hover,
1243 | .widget_authors a:focus strong,
1244 | .widget_authors a:hover strong,
1245 | .entry-title a:focus,
1246 | .entry-title a:hover,
1247 | .entry-meta a:focus,
1248 | .entry-meta a:hover,
1249 | .page-links a:focus .page-number,
1250 | .page-links a:hover .page-number,
1251 | .entry-footer a:focus,
1252 | .entry-footer a:hover,
1253 | .entry-footer .cat-links a:focus,
1254 | .entry-footer .cat-links a:hover,
1255 | .entry-footer .tags-links a:focus,
1256 | .entry-footer .tags-links a:hover,
1257 | .post-navigation a:focus,
1258 | .post-navigation a:hover,
1259 | .pagination a:not(.prev):not(.next):focus,
1260 | .pagination a:not(.prev):not(.next):hover,
1261 | .comments-pagination a:not(.prev):not(.next):focus,
1262 | .comments-pagination a:not(.prev):not(.next):hover,
1263 | .logged-in-as a:focus,
1264 | .logged-in-as a:hover,
1265 | a:focus .nav-title,
1266 | a:hover .nav-title,
1267 | .edit-link a:focus,
1268 | .edit-link a:hover,
1269 | .site-info a:focus,
1270 | .site-info a:hover,
1271 | .widget .widget-title a:focus,
1272 | .widget .widget-title a:hover,
1273 | .widget ul li a:focus,
1274 | .widget ul li a:hover {
1275 | color: #000;
1276 | -webkit-box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), 0 3px 0 rgba(0, 0, 0, 1);
1277 | box-shadow: inset 0 0 0 rgba(0, 0, 0, 0), 0 3px 0 rgba(0, 0, 0, 1);
1278 | }
1279 |
1280 | /* Fixes linked images */
1281 | .entry-content a img,
1282 | .comment-content a img,
1283 | .widget a img {
1284 | -webkit-box-shadow: 0 0 0 8px #fff;
1285 | box-shadow: 0 0 0 8px #fff;
1286 | }
1287 |
1288 | .post-navigation a:focus .icon,
1289 | .post-navigation a:hover .icon {
1290 | color: #222;
1291 | }
1292 |
1293 | /*--------------------------------------------------------------
1294 | 11.0 Featured Image Hover
1295 | --------------------------------------------------------------*/
1296 |
1297 | .post-thumbnail {
1298 | margin-bottom: 1em;
1299 | }
1300 |
1301 | .post-thumbnail a img {
1302 | -webkit-backface-visibility: hidden;
1303 | -webkit-transition: opacity 0.2s;
1304 | transition: opacity 0.2s;
1305 | }
1306 |
1307 | .post-thumbnail a:hover img,
1308 | .post-thumbnail a:focus img {
1309 | opacity: 0.7;
1310 | }
1311 |
1312 | /*--------------------------------------------------------------
1313 | 12.0 Navigation
1314 | --------------------------------------------------------------*/
1315 |
1316 | .navigation-top {
1317 | background: #fff;
1318 | border-bottom: 1px solid #eee;
1319 | border-top: 1px solid #eee;
1320 | font-size: 16px;
1321 | font-size: 1rem;
1322 | position: relative;
1323 | }
1324 |
1325 | .navigation-top .wrap {
1326 | max-width: 1000px;
1327 | padding: 0;
1328 | }
1329 |
1330 | .navigation-top a {
1331 | color: #222;
1332 | font-weight: 600;
1333 | -webkit-transition: color 0.2s;
1334 | transition: color 0.2s;
1335 | }
1336 |
1337 | .navigation-top .current-menu-item > a,
1338 | .navigation-top .current_page_item > a {
1339 | color: #767676;
1340 | }
1341 |
1342 | .main-navigation {
1343 | clear: both;
1344 | display: block;
1345 | }
1346 |
1347 | .main-navigation ul {
1348 | background: #fff;
1349 | list-style: none;
1350 | margin: 0;
1351 | padding: 0 1.5em;
1352 | text-align: left;
1353 | }
1354 |
1355 | /* Hide the menu on small screens when JavaScript is available.
1356 | * It only works with JavaScript.
1357 | */
1358 |
1359 | .js .main-navigation ul,
1360 | .main-navigation .menu-item-has-children > a > .icon,
1361 | .main-navigation .page_item_has_children > a > .icon,
1362 | .main-navigation ul a > .icon {
1363 | display: none;
1364 | }
1365 |
1366 | .main-navigation > div > ul {
1367 | border-top: 1px solid #eee;
1368 | padding: 0.75em 1.695em;
1369 | }
1370 |
1371 | .js .main-navigation.toggled-on > div > ul {
1372 | display: block;
1373 | }
1374 |
1375 | .main-navigation ul ul {
1376 | padding: 0 0 0 1.5em;
1377 | }
1378 |
1379 | .main-navigation ul ul.toggled-on {
1380 | display: block;
1381 | }
1382 |
1383 | .main-navigation ul ul a {
1384 | letter-spacing: 0;
1385 | padding: 0.4em 0;
1386 | position: relative;
1387 | text-transform: none;
1388 | }
1389 |
1390 | .main-navigation li {
1391 | border-bottom: 1px solid #eee;
1392 | position: relative;
1393 | }
1394 |
1395 | .main-navigation li li,
1396 | .main-navigation li:last-child {
1397 | border: 0;
1398 | }
1399 |
1400 | .main-navigation a {
1401 | display: block;
1402 | padding: 0.5em 0;
1403 | text-decoration: none;
1404 | }
1405 |
1406 | .main-navigation a:hover {
1407 | color: #767676;
1408 | }
1409 |
1410 | /* Menu toggle */
1411 |
1412 | .menu-toggle {
1413 | background-color: transparent;
1414 | border: 0;
1415 | -webkit-box-shadow: none;
1416 | box-shadow: none;
1417 | color: #222;
1418 | display: none;
1419 | font-size: 14px;
1420 | font-size: 0.875rem;
1421 | font-weight: 800;
1422 | line-height: 1.5;
1423 | margin: 1px auto 2px;
1424 | padding: 1em;
1425 | text-shadow: none;
1426 | }
1427 |
1428 | /* Display the menu toggle when JavaScript is available. */
1429 |
1430 | .js .menu-toggle {
1431 | display: block;
1432 | }
1433 |
1434 | .main-navigation.toggled-on ul.nav-menu {
1435 | display: block;
1436 | }
1437 |
1438 | .menu-toggle:hover,
1439 | .menu-toggle:focus {
1440 | background-color: transparent;
1441 | -webkit-box-shadow: none;
1442 | box-shadow: none;
1443 | }
1444 |
1445 | .menu-toggle:focus {
1446 | outline: thin solid;
1447 | }
1448 |
1449 | .menu-toggle .icon {
1450 | margin-right: 0.5em;
1451 | top: -2px;
1452 | }
1453 |
1454 | .toggled-on .menu-toggle .icon-bars,
1455 | .menu-toggle .icon-close {
1456 | display: none;
1457 | }
1458 |
1459 | .toggled-on .menu-toggle .icon-close {
1460 | display: inline-block;
1461 | }
1462 |
1463 | /* Dropdown Toggle */
1464 |
1465 | .dropdown-toggle {
1466 | background-color: transparent;
1467 | border: 0;
1468 | -webkit-box-shadow: none;
1469 | box-shadow: none;
1470 | color: #222;
1471 | display: block;
1472 | font-size: 16px;
1473 | right: -0.5em;
1474 | line-height: 1.5;
1475 | margin: 0 auto;
1476 | padding: 0.5em;
1477 | position: absolute;
1478 | text-shadow: none;
1479 | top: 0;
1480 | }
1481 |
1482 | .dropdown-toggle:hover,
1483 | .dropdown-toggle:focus {
1484 | background: transparent;
1485 | }
1486 |
1487 | .dropdown-toggle:focus {
1488 | outline: thin dotted;
1489 | }
1490 |
1491 | .dropdown-toggle.toggled-on .icon {
1492 | -ms-transform: rotate(-180deg); /* IE 9 */
1493 | -webkit-transform: rotate(-180deg); /* Chrome, Safari, Opera */
1494 | transform: rotate(-180deg);
1495 | }
1496 |
1497 | /* Scroll down arrow */
1498 |
1499 | .site-header .menu-scroll-down {
1500 | display: none;
1501 | }
1502 |
1503 | /*--------------------------------------------------------------
1504 | 13.0 Layout
1505 | --------------------------------------------------------------*/
1506 |
1507 | html {
1508 | -webkit-box-sizing: border-box;
1509 | -moz-box-sizing: border-box;
1510 | box-sizing: border-box;
1511 | }
1512 |
1513 | *,
1514 | *:before,
1515 | *:after {
1516 | /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
1517 | -webkit-box-sizing: inherit;
1518 | -moz-box-sizing: inherit;
1519 | box-sizing: inherit;
1520 | }
1521 |
1522 | body {
1523 | background: #fff;
1524 | /* Fallback for when there is no custom background color defined. */
1525 | }
1526 |
1527 | #page {
1528 | position: relative;
1529 | word-wrap: break-word;
1530 | }
1531 |
1532 | .wrap {
1533 | margin-left: auto;
1534 | margin-right: auto;
1535 | max-width: 700px;
1536 | padding-left: 2em;
1537 | padding-right: 2em;
1538 | }
1539 |
1540 | .wrap:after {
1541 | clear: both;
1542 | content: "";
1543 | display: block;
1544 | }
1545 |
1546 | /*--------------------------------------------------------------
1547 | 13.1 Header
1548 | --------------------------------------------------------------*/
1549 |
1550 | #masthead .wrap {
1551 | position: relative;
1552 | }
1553 |
1554 | .site-header {
1555 | background-color: #fafafa;
1556 | position: relative;
1557 | }
1558 |
1559 | /* Site branding */
1560 |
1561 | .site-branding {
1562 | padding: 1em 0;
1563 | position: relative;
1564 | -webkit-transition: margin-bottom 0.2s;
1565 | transition: margin-bottom 0.2s;
1566 | z-index: 3;
1567 | }
1568 |
1569 | .site-branding a {
1570 | text-decoration: none;
1571 | -webkit-transition: opacity 0.2s;
1572 | transition: opacity 0.2s;
1573 | }
1574 |
1575 | .site-branding a:hover,
1576 | .site-branding a:focus {
1577 | opacity: 0.7;
1578 | }
1579 |
1580 | .site-title {
1581 | clear: none;
1582 | font-size: 24px;
1583 | font-size: 1.5rem;
1584 | font-weight: 800;
1585 | line-height: 1.25;
1586 | letter-spacing: 0.08em;
1587 | margin: 0;
1588 | padding: 0;
1589 | text-transform: uppercase;
1590 | }
1591 |
1592 | .site-title,
1593 | .site-title a {
1594 | color: #222;
1595 | opacity: 1; /* Prevent opacity from changing during selective refreshes in the customize preview */
1596 | }
1597 |
1598 | body.has-header-image .site-title,
1599 | body.has-header-video .site-title,
1600 | body.has-header-image .site-title a,
1601 | body.has-header-video .site-title a {
1602 | color: #fff;
1603 | }
1604 |
1605 | .site-description {
1606 | color: #666;
1607 | font-size: 13px;
1608 | font-size: 0.8125rem;
1609 | margin-bottom: 0;
1610 | }
1611 |
1612 | body.has-header-image .site-description,
1613 | body.has-header-video .site-description {
1614 | color: #fff;
1615 | opacity: 0.8;
1616 | }
1617 |
1618 | .custom-logo-link {
1619 | display: inline-block;
1620 | padding-right: 1em;
1621 | vertical-align: middle;
1622 | width: auto;
1623 | }
1624 |
1625 | .custom-logo-link img {
1626 | display: inline-block;
1627 | max-height: 80px;
1628 | width: auto;
1629 | }
1630 |
1631 | body.home.title-tagline-hidden.has-header-image .custom-logo-link img,
1632 | body.home.title-tagline-hidden.has-header-video .custom-logo-link img {
1633 | max-height: 200px;
1634 | max-width: 100%;
1635 | }
1636 |
1637 | .custom-logo-link a:hover,
1638 | .custom-logo-link a:focus {
1639 | opacity: 0.9;
1640 | }
1641 |
1642 | body:not(.title-tagline-hidden) .site-branding-text {
1643 | display: inline-block;
1644 | vertical-align: middle;
1645 | }
1646 |
1647 | .custom-header {
1648 | position: relative;
1649 | }
1650 |
1651 | .has-header-image.twentyseventeen-front-page .custom-header,
1652 | .has-header-video.twentyseventeen-front-page .custom-header,
1653 | .has-header-image.home.blog .custom-header,
1654 | .has-header-video.home.blog .custom-header {
1655 | display: table;
1656 | height: 300px;
1657 | height: 75vh;
1658 | width: 100%;
1659 | }
1660 |
1661 | .custom-header-media {
1662 | bottom: 0;
1663 | left: 0;
1664 | overflow: hidden;
1665 | position: absolute;
1666 | right: 0;
1667 | top: 0;
1668 | width: 100%;
1669 | }
1670 |
1671 | .custom-header-media:before {
1672 | /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#000000+0,000000+100&0+0,0.3+75 */
1673 | background: -moz-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 75%, rgba(0, 0, 0, 0.3) 100%); /* FF3.6-15 */
1674 | background: -webkit-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 75%, rgba(0, 0, 0, 0.3) 100%); /* Chrome10-25,Safari5.1-6 */
1675 | background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 75%, rgba(0, 0, 0, 0.3) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
1676 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000", endColorstr="#4d000000", GradientType=0); /* IE6-9 */
1677 | bottom: 0;
1678 | content: "";
1679 | display: block;
1680 | height: 100%;
1681 | left: 0;
1682 | position: absolute;
1683 | right: 0;
1684 | z-index: 2;
1685 | }
1686 |
1687 | .has-header-image .custom-header-media img,
1688 | .has-header-video .custom-header-media video,
1689 | .has-header-video .custom-header-media iframe {
1690 | position: fixed;
1691 | height: auto;
1692 | left: 50%;
1693 | max-width: 1000%;
1694 | min-height: 100%;
1695 | min-width: 100%;
1696 | min-width: 100vw; /* vw prevents 1px gap on left that 100% has */
1697 | width: auto;
1698 | top: 50%;
1699 | padding-bottom: 1px; /* Prevent header from extending beyond the footer */
1700 | -ms-transform: translateX(-50%) translateY(-50%);
1701 | -moz-transform: translateX(-50%) translateY(-50%);
1702 | -webkit-transform: translateX(-50%) translateY(-50%);
1703 | transform: translateX(-50%) translateY(-50%);
1704 | }
1705 |
1706 | .wp-custom-header .wp-custom-header-video-button { /* Specificity prevents .color-dark button overrides */
1707 | background-color: rgba(34, 34, 34, 0.5);
1708 | border: 1px solid rgba(255, 255, 255, 0.6);
1709 | color: rgba(255, 255, 255, 0.6);
1710 | height: 45px;
1711 | overflow: hidden;
1712 | padding: 0;
1713 | position: fixed;
1714 | right: 30px;
1715 | top: 30px;
1716 | -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
1717 | transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
1718 | width: 45px;
1719 | }
1720 |
1721 | .wp-custom-header .wp-custom-header-video-button:hover,
1722 | .wp-custom-header .wp-custom-header-video-button:focus { /* Specificity prevents .color-dark button overrides */
1723 | border-color: rgba(255, 255, 255, 0.8);
1724 | background-color: rgba(34, 34, 34, 0.8);
1725 | color: #fff;
1726 | }
1727 |
1728 | .admin-bar .wp-custom-header-video-button {
1729 | top: 62px;
1730 | }
1731 |
1732 | .has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media img {
1733 | bottom: 0;
1734 | position: absolute;
1735 | top: auto;
1736 | -ms-transform: translateX(-50%) translateY(0);
1737 | -moz-transform: translateX(-50%) translateY(0);
1738 | -webkit-transform: translateX(-50%) translateY(0);
1739 | transform: translateX(-50%) translateY(0);
1740 | }
1741 |
1742 | /* For browsers that support 'object-fit' */
1743 | @supports ( object-fit: cover ) {
1744 | .has-header-image .custom-header-media img,
1745 | .has-header-video .custom-header-media video,
1746 | .has-header-video .custom-header-media iframe,
1747 | .has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media img {
1748 | height: 100%;
1749 | left: 0;
1750 | -o-object-fit: cover;
1751 | object-fit: cover;
1752 | top: 0;
1753 | -ms-transform: none;
1754 | -moz-transform: none;
1755 | -webkit-transform: none;
1756 | transform: none;
1757 | width: 100%;
1758 | }
1759 | }
1760 |
1761 | /* Hides div in Customizer preview when header images or videos change. */
1762 |
1763 | body:not(.has-header-image):not(.has-header-video) .custom-header-media {
1764 | display: none;
1765 | }
1766 |
1767 | .has-header-image.twentyseventeen-front-page .site-branding,
1768 | .has-header-video.twentyseventeen-front-page .site-branding,
1769 | .has-header-image.home.blog .site-branding,
1770 | .has-header-video.home.blog .site-branding {
1771 | display: table-cell;
1772 | height: 100%;
1773 | vertical-align: bottom;
1774 | }
1775 |
1776 | /*--------------------------------------------------------------
1777 | 13.2 Front Page
1778 | --------------------------------------------------------------*/
1779 |
1780 | .twentyseventeen-front-page .site-content {
1781 | padding: 0;
1782 | }
1783 |
1784 | .twentyseventeen-panel {
1785 | overflow: hidden;
1786 | position: relative;
1787 | }
1788 |
1789 | .panel-image {
1790 | background-position: center center;
1791 | background-repeat: no-repeat;
1792 | -webkit-background-size: cover;
1793 | background-size: cover;
1794 | position: relative;
1795 | }
1796 |
1797 | .panel-image:before {
1798 | /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#000000+0,000000+100&0+0,0.3+100 */ /* FF3.6-15 */
1799 | background: -webkit-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 100%); /* Chrome10-25,Safari5.1-6 */
1800 | background: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0)), to(rgba(0, 0, 0, 0.3)));
1801 | background: -webkit-linear-gradient(to top, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 100%);
1802 | background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
1803 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000", endColorstr="#4d000000", GradientType=0); /* IE6-9 */
1804 | bottom: 0;
1805 | content: "";
1806 | left: 0;
1807 | right: 0;
1808 | position: absolute;
1809 | top: 100px;
1810 | }
1811 |
1812 | .twentyseventeen-front-page article:not(.has-post-thumbnail):not(:first-child) {
1813 | border-top: 1px solid #ddd;
1814 | }
1815 |
1816 | .panel-content {
1817 | position: relative;
1818 | }
1819 |
1820 | .panel-content .wrap {
1821 | padding-bottom: 0.5em;
1822 | padding-top: 1.75em;
1823 | }
1824 |
1825 | /* Panel edit link */
1826 |
1827 | .twentyseventeen-panel .edit-link {
1828 | display: block;
1829 | margin: 0.3em 0 0;
1830 | }
1831 |
1832 | .twentyseventeen-panel .entry-header .edit-link {
1833 | font-size: 14px;
1834 | font-size: 0.875rem;
1835 | }
1836 |
1837 | /* Front Page - Recent Posts */
1838 |
1839 | .twentyseventeen-front-page .panel-content .recent-posts article {
1840 | border: 0;
1841 | color: #333;
1842 | margin-bottom: 3em;
1843 | }
1844 |
1845 | .recent-posts .entry-header {
1846 | margin-bottom: 1.2em;
1847 | }
1848 |
1849 | .page .panel-content .recent-posts .entry-title {
1850 | font-size: 20px;
1851 | font-size: 1.25rem;
1852 | font-weight: 300;
1853 | letter-spacing: 0;
1854 | text-transform: none;
1855 | }
1856 |
1857 | .twentyseventeen-panel .recent-posts .entry-header .edit-link {
1858 | color: #222;
1859 | display: inline-block;
1860 | font-size: 11px;
1861 | font-size: 0.6875rem;
1862 | margin-left: 1em;
1863 | }
1864 |
1865 | /*--------------------------------------------------------------
1866 | 13.3 Regular Content
1867 | --------------------------------------------------------------*/
1868 |
1869 | .site-content-contain {
1870 | background-color: #fff;
1871 | position: relative;
1872 | }
1873 |
1874 | .site-content {
1875 | padding: 2.5em 0 0;
1876 | }
1877 |
1878 | /*--------------------------------------------------------------
1879 | 13.4 Posts
1880 | --------------------------------------------------------------*/
1881 |
1882 | /* Post Landing Page */
1883 |
1884 | .sticky {
1885 | position: relative;
1886 | }
1887 |
1888 | .post:not(.sticky) .icon-thumb-tack {
1889 | display: none;
1890 | }
1891 |
1892 | .sticky .icon-thumb-tack {
1893 | display: block;
1894 | height: 18px;
1895 | left: -1.5em;
1896 | position: absolute;
1897 | top: 1.65em;
1898 | width: 20px;
1899 | }
1900 |
1901 | .page .panel-content .entry-title,
1902 | .page-title,
1903 | body.page:not(.twentyseventeen-front-page) .entry-title {
1904 | color: #222;
1905 | font-size: 14px;
1906 | font-size: 0.875rem;
1907 | font-weight: 800;
1908 | letter-spacing: 0.14em;
1909 | text-transform: uppercase;
1910 | }
1911 |
1912 | .entry-header .entry-title {
1913 | margin-bottom: 0.25em;
1914 | }
1915 |
1916 | .entry-title a {
1917 | color: #333;
1918 | text-decoration: none;
1919 | margin-left: -2px;
1920 | }
1921 |
1922 | .entry-title:not(:first-child) {
1923 | padding-top: 0;
1924 | }
1925 |
1926 | .entry-meta {
1927 | color: #767676;
1928 | font-size: 11px;
1929 | font-size: 0.6875rem;
1930 | font-weight: 800;
1931 | letter-spacing: 0.1818em;
1932 | padding-bottom: 0.25em;
1933 | text-transform: uppercase;
1934 | }
1935 |
1936 | .entry-meta a {
1937 | color: #767676;
1938 | }
1939 |
1940 | .byline,
1941 | .updated:not(.published) {
1942 | display: none;
1943 | }
1944 |
1945 | .single .byline,
1946 | .group-blog .byline {
1947 | display: inline;
1948 | }
1949 |
1950 | .pagination,
1951 | .comments-pagination {
1952 | border-top: 1px solid #eee;
1953 | font-size: 14px;
1954 | font-size: 0.875rem;
1955 | font-weight: 800;
1956 | padding: 2em 0 3em;
1957 | text-align: center;
1958 | }
1959 |
1960 | .pagination .icon,
1961 | .comments-pagination .icon {
1962 | width: 0.666666666em;
1963 | height: 0.666666666em;
1964 | }
1965 |
1966 | .comments-pagination {
1967 | border: 0;
1968 | }
1969 |
1970 | .page-numbers {
1971 | display: none;
1972 | padding: 0.5em 0.75em;
1973 | }
1974 |
1975 | .page-numbers.current {
1976 | color: #767676;
1977 | display: inline-block;
1978 | }
1979 |
1980 | .page-numbers.current .screen-reader-text {
1981 | clip: auto;
1982 | height: auto;
1983 | overflow: auto;
1984 | position: relative !important;
1985 | width: auto;
1986 | }
1987 |
1988 | .prev.page-numbers,
1989 | .next.page-numbers {
1990 | background-color: #ddd;
1991 | -webkit-border-radius: 2px;
1992 | border-radius: 2px;
1993 | display: inline-block;
1994 | font-size: 24px;
1995 | font-size: 1.5rem;
1996 | line-height: 1;
1997 | padding: 0.25em 0.5em 0.4em;
1998 | }
1999 |
2000 | .prev.page-numbers,
2001 | .next.page-numbers {
2002 | -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2003 | transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2004 | }
2005 |
2006 | .prev.page-numbers:focus,
2007 | .prev.page-numbers:hover,
2008 | .next.page-numbers:focus,
2009 | .next.page-numbers:hover {
2010 | background-color: #767676;
2011 | color: #fff;
2012 | }
2013 |
2014 | .prev.page-numbers {
2015 | float: left;
2016 | }
2017 |
2018 | .next.page-numbers {
2019 | float: right;
2020 | }
2021 |
2022 | /* Aligned blockquotes */
2023 |
2024 | .entry-content blockquote.alignleft,
2025 | .entry-content blockquote.alignright {
2026 | color: #666;
2027 | font-size: 13px;
2028 | font-size: 0.8125rem;
2029 | width: 48%;
2030 | }
2031 |
2032 | /* Blog landing, search, archives */
2033 |
2034 | .blog .site-main > article,
2035 | .archive .site-main > article,
2036 | .search .site-main > article {
2037 | padding-bottom: 2em;
2038 | }
2039 |
2040 | body:not(.twentyseventeen-front-page) .entry-header {
2041 | padding: 1em 0;
2042 | }
2043 |
2044 | body:not(.twentyseventeen-front-page) .entry-header,
2045 | body:not(.twentyseventeen-front-page) .entry-content,
2046 | body:not(.twentyseventeen-front-page) #comments {
2047 | margin-left: auto;
2048 | margin-right: auto;
2049 | }
2050 |
2051 | body:not(.twentyseventeen-front-page) .entry-header {
2052 | padding-top: 0;
2053 | }
2054 |
2055 | .blog .entry-meta a.post-edit-link,
2056 | .archive .entry-meta a.post-edit-link,
2057 | .search .entry-meta a.post-edit-link {
2058 | color: #222;
2059 | display: inline-block;
2060 | margin-left: 1em;
2061 | white-space: nowrap;
2062 | }
2063 |
2064 | .search .page .entry-meta a.post-edit-link {
2065 | margin-left: 0;
2066 | white-space: nowrap;
2067 | }
2068 |
2069 | .taxonomy-description {
2070 | color: #666;
2071 | font-size: 13px;
2072 | font-size: 0.8125rem;
2073 | }
2074 |
2075 | /* More tag */
2076 |
2077 | .entry-content .more-link:before {
2078 | content: "";
2079 | display: block;
2080 | margin-top: 1.5em;
2081 | }
2082 |
2083 | /* Single Post */
2084 |
2085 | .single-post:not(.has-sidebar) #primary,
2086 | .page.page-one-column:not(.twentyseventeen-front-page) #primary,
2087 | .archive.page-one-column:not(.has-sidebar) .page-header,
2088 | .archive.page-one-column:not(.has-sidebar) #primary {
2089 | margin-left: auto;
2090 | margin-right: auto;
2091 | max-width: 740px;
2092 | }
2093 |
2094 | .single-featured-image-header {
2095 | background-color: #fafafa;
2096 | border-bottom: 1px solid #eee;
2097 | }
2098 |
2099 | .single-featured-image-header img {
2100 | display: block;
2101 | margin: auto;
2102 | }
2103 |
2104 | .page-links {
2105 | font-size: 14px;
2106 | font-size: 0.875rem;
2107 | font-weight: 800;
2108 | padding: 2em 0 3em;
2109 | }
2110 |
2111 | .page-links .page-number {
2112 | color: #767676;
2113 | display: inline-block;
2114 | padding: 0.5em 1em;
2115 | }
2116 |
2117 | .page-links a {
2118 | display: inline-block;
2119 | }
2120 |
2121 | .page-links a .page-number {
2122 | color: #222;
2123 | }
2124 |
2125 | /* Entry footer */
2126 |
2127 | .entry-footer {
2128 | border-bottom: 1px solid #eee;
2129 | border-top: 1px solid #eee;
2130 | margin-top: 2em;
2131 | padding: 2em 0;
2132 | }
2133 |
2134 | .entry-footer .cat-links,
2135 | .entry-footer .tags-links {
2136 | display: block;
2137 | font-size: 11px;
2138 | font-size: 0.6875rem;
2139 | font-weight: 800;
2140 | letter-spacing: 0.1818em;
2141 | padding-left: 2.5em;
2142 | position: relative;
2143 | text-transform: uppercase;
2144 | }
2145 |
2146 | .entry-footer .cat-links + .tags-links {
2147 | margin-top: 1em;
2148 | }
2149 |
2150 | .entry-footer .cat-links a,
2151 | .entry-footer .tags-links a {
2152 | color: #333;
2153 | }
2154 |
2155 | .entry-footer .cat-links .icon,
2156 | .entry-footer .tags-links .icon {
2157 | color: #767676;
2158 | left: 0;
2159 | margin-right: 0.5em;
2160 | position: absolute;
2161 | top: 2px;
2162 | }
2163 |
2164 | .entry-footer .edit-link {
2165 | display: inline-block;
2166 | }
2167 |
2168 | .entry-footer .edit-link a.post-edit-link {
2169 | background-color: #222;
2170 | -webkit-border-radius: 2px;
2171 | border-radius: 2px;
2172 | -webkit-box-shadow: none;
2173 | box-shadow: none;
2174 | color: #fff;
2175 | display: inline-block;
2176 | font-size: 14px;
2177 | font-size: 0.875rem;
2178 | font-weight: 800;
2179 | margin-top: 2em;
2180 | padding: 0.7em 2em;
2181 | -webkit-transition: background-color 0.2s ease-in-out;
2182 | transition: background-color 0.2s ease-in-out;
2183 | white-space: nowrap;
2184 | }
2185 |
2186 | .entry-footer .edit-link a.post-edit-link:hover,
2187 | .entry-footer .edit-link a.post-edit-link:focus {
2188 | background-color: #767676;
2189 | }
2190 |
2191 | /* Post Formats */
2192 |
2193 | .blog .format-status .entry-title,
2194 | .archive .format-status .entry-title,
2195 | .blog .format-aside .entry-title,
2196 | .archive .format-aside .entry-title {
2197 | display: none;
2198 | }
2199 |
2200 | .format-quote blockquote {
2201 | color: #333;
2202 | font-size: 20px;
2203 | font-size: 1.25rem;
2204 | font-weight: 300;
2205 | overflow: visible;
2206 | position: relative;
2207 | }
2208 |
2209 | .format-quote blockquote .icon {
2210 | display: block;
2211 | height: 20px;
2212 | left: -1.25em;
2213 | position: absolute;
2214 | top: 0.4em;
2215 | -webkit-transform: scale(-1, 1);
2216 | -ms-transform: scale(-1, 1);
2217 | transform: scale(-1, 1);
2218 | width: 20px;
2219 | }
2220 |
2221 | /* Post Navigation */
2222 |
2223 | .post-navigation {
2224 | font-weight: 800;
2225 | margin: 3em 0;
2226 | }
2227 |
2228 | .post-navigation .nav-links {
2229 | padding: 1em 0;
2230 | }
2231 |
2232 | .nav-subtitle {
2233 | background: transparent;
2234 | color: #767676;
2235 | display: block;
2236 | font-size: 11px;
2237 | font-size: 0.6875rem;
2238 | letter-spacing: 0.1818em;
2239 | margin-bottom: 1em;
2240 | text-transform: uppercase;
2241 | }
2242 |
2243 | .nav-title {
2244 | color: #333;
2245 | font-size: 15px;
2246 | font-size: 0.9375rem;
2247 | }
2248 |
2249 | .post-navigation .nav-next {
2250 | margin-top: 1.5em;
2251 | }
2252 |
2253 | .nav-links .nav-previous .nav-title .nav-title-icon-wrapper {
2254 | margin-right: 0.5em;
2255 | }
2256 |
2257 | .nav-links .nav-next .nav-title .nav-title-icon-wrapper {
2258 | margin-left: 0.5em;
2259 | }
2260 |
2261 | /*--------------------------------------------------------------
2262 | 13.5 Pages
2263 | --------------------------------------------------------------*/
2264 |
2265 | .page-header {
2266 | padding-bottom: 2em;
2267 | }
2268 |
2269 | .page .entry-header .edit-link {
2270 | font-size: 14px;
2271 | font-size: 0.875rem;
2272 | }
2273 |
2274 | .search .page .entry-header .edit-link {
2275 | font-size: 11px;
2276 | font-size: 0.6875rem;
2277 | }
2278 |
2279 | .page-links {
2280 | clear: both;
2281 | margin: 0 0 1.5em;
2282 | }
2283 |
2284 | .page:not(.home) #content {
2285 | padding-bottom: 1.5em;
2286 | }
2287 |
2288 | /* 404 page */
2289 |
2290 | .error404 .page-content {
2291 | padding-bottom: 4em;
2292 | }
2293 |
2294 | .error404 .page-content .search-form,
2295 | .search .page-content .search-form {
2296 | margin-bottom: 3em;
2297 | }
2298 |
2299 | /*--------------------------------------------------------------
2300 | 13.6 Footer
2301 | --------------------------------------------------------------*/
2302 |
2303 | .site-footer {
2304 | border-top: 1px solid #eee;
2305 | }
2306 |
2307 | .site-footer .wrap {
2308 | padding-bottom: 1.5em;
2309 | padding-top: 2em;
2310 | }
2311 |
2312 | /* Footer widgets */
2313 |
2314 | .site-footer .widget-area {
2315 | padding-bottom: 2em;
2316 | padding-top: 2em;
2317 | }
2318 |
2319 | /* Social nav */
2320 |
2321 | .social-navigation {
2322 | font-size: 16px;
2323 | font-size: 1rem;
2324 | margin-bottom: 1em;
2325 | }
2326 |
2327 | .social-navigation ul {
2328 | list-style: none;
2329 | margin-bottom: 0;
2330 | margin-left: 0;
2331 | }
2332 |
2333 | .social-navigation li {
2334 | display: inline;
2335 | }
2336 |
2337 | .social-navigation a {
2338 | background-color: #767676;
2339 | -webkit-border-radius: 40px;
2340 | border-radius: 40px;
2341 | color: #fff;
2342 | display: inline-block;
2343 | height: 40px;
2344 | margin: 0 1em 0.5em 0;
2345 | text-align: center;
2346 | width: 40px;
2347 | }
2348 |
2349 | .social-navigation a:hover,
2350 | .social-navigation a:focus {
2351 | background-color: #333;
2352 | }
2353 |
2354 | .social-navigation .icon {
2355 | height: 16px;
2356 | top: 12px;
2357 | width: 16px;
2358 | vertical-align: top;
2359 | }
2360 |
2361 | /* Site info */
2362 |
2363 | .site-info {
2364 | font-size: 14px;
2365 | font-size: 0.875rem;
2366 | margin-bottom: 1em;
2367 | }
2368 |
2369 | .site-info a {
2370 | color: #666;
2371 | }
2372 |
2373 | .site-info .sep {
2374 | margin: 0;
2375 | display: block;
2376 | visibility: hidden;
2377 | height: 0;
2378 | width: 100%;
2379 | }
2380 |
2381 | /*--------------------------------------------------------------
2382 | 14.0 Comments
2383 | --------------------------------------------------------------*/
2384 |
2385 | #comments {
2386 | clear: both;
2387 | padding: 2em 0 0.5em;
2388 | }
2389 |
2390 | .comments-title {
2391 | font-size: 20px;
2392 | font-size: 1.25rem;
2393 | margin-bottom: 1.5em;
2394 | }
2395 |
2396 | .comment-list,
2397 | .comment-list .children {
2398 | list-style: none;
2399 | margin: 0;
2400 | padding: 0;
2401 | }
2402 |
2403 | .comment-list li:before {
2404 | display: none;
2405 | }
2406 |
2407 | .comment-body {
2408 | margin-left: 65px;
2409 | }
2410 |
2411 | .comment-author {
2412 | font-size: 16px;
2413 | font-size: 1rem;
2414 | margin-bottom: 0.4em;
2415 | position: relative;
2416 | z-index: 2;
2417 | }
2418 |
2419 | .comment-author .avatar {
2420 | height: 50px;
2421 | left: -65px;
2422 | position: absolute;
2423 | width: 50px;
2424 | }
2425 |
2426 | .comment-author .says {
2427 | display: none;
2428 | }
2429 |
2430 | .comment-meta {
2431 | margin-bottom: 1.5em;
2432 | }
2433 |
2434 | .comment-metadata {
2435 | color: #767676;
2436 | font-size: 10px;
2437 | font-size: 0.625rem;
2438 | font-weight: 800;
2439 | letter-spacing: 0.1818em;
2440 | text-transform: uppercase;
2441 | }
2442 |
2443 | .comment-metadata a {
2444 | color: #767676;
2445 | }
2446 |
2447 | .comment-metadata a.comment-edit-link {
2448 | color: #222;
2449 | margin-left: 1em;
2450 | }
2451 |
2452 | .comment-body {
2453 | color: #333;
2454 | font-size: 14px;
2455 | font-size: 0.875rem;
2456 | margin-bottom: 4em;
2457 | }
2458 |
2459 | .comment-reply-link {
2460 | font-weight: 800;
2461 | position: relative;
2462 | }
2463 |
2464 | .comment-reply-link .icon {
2465 | color: #222;
2466 | left: -2em;
2467 | height: 1em;
2468 | position: absolute;
2469 | top: 0;
2470 | width: 1em;
2471 | }
2472 |
2473 | .children .comment-author .avatar {
2474 | height: 30px;
2475 | left: -45px;
2476 | width: 30px;
2477 | }
2478 |
2479 | .bypostauthor > .comment-body > .comment-meta > .comment-author .avatar {
2480 | border: 1px solid #333;
2481 | padding: 2px;
2482 | }
2483 |
2484 | .no-comments,
2485 | .comment-awaiting-moderation {
2486 | color: #767676;
2487 | font-size: 14px;
2488 | font-size: 0.875rem;
2489 | font-style: italic;
2490 | }
2491 |
2492 | .comments-pagination {
2493 | margin: 2em 0 3em;
2494 | }
2495 |
2496 | .form-submit {
2497 | text-align: right;
2498 | }
2499 |
2500 | /*--------------------------------------------------------------
2501 | 15.0 Widgets
2502 | --------------------------------------------------------------*/
2503 |
2504 | #secondary {
2505 | padding: 1em 0 2em;
2506 | }
2507 |
2508 | .widget {
2509 | padding-bottom: 3em;
2510 | }
2511 |
2512 | h2.widget-title {
2513 | color: #222;
2514 | font-size: 13px;
2515 | font-size: 0.8125rem;
2516 | font-weight: 800;
2517 | letter-spacing: 0.1818em;
2518 | margin-bottom: 1.5em;
2519 | text-transform: uppercase;
2520 | }
2521 |
2522 | .widget-title a {
2523 | color: inherit;
2524 | }
2525 |
2526 | /* widget forms */
2527 |
2528 | .widget select {
2529 | width: 100%;
2530 | }
2531 |
2532 |
2533 | /* widget lists */
2534 |
2535 | .widget ul {
2536 | list-style: none;
2537 | margin: 0;
2538 | }
2539 |
2540 | .widget ul li,
2541 | .widget ol li {
2542 | border-bottom: 1px solid #ddd;
2543 | border-top: 1px solid #ddd;
2544 | padding: 0.5em 0;
2545 | }
2546 |
2547 | .widget:not(.widget_tag_cloud) ul li + li {
2548 | margin-top: -1px;
2549 | }
2550 |
2551 | .widget ul li ul {
2552 | margin: 0 0 -1px;
2553 | padding: 0;
2554 | position: relative;
2555 | }
2556 |
2557 | .widget ul li li {
2558 | border: 0;
2559 | padding-left: 24px;
2560 | padding-left: 1.5rem;
2561 | }
2562 |
2563 | /* Widget lists of links */
2564 |
2565 | .widget_top-posts ul li ul,
2566 | .widget_rss_links ul li ul,
2567 | .widget-grofile ul.grofile-links li ul,
2568 | .widget_pages ul li ul,
2569 | .widget_meta ul li ul {
2570 | bottom: 0;
2571 | }
2572 |
2573 | .widget_nav_menu ul li li,
2574 | .widget_top-posts ul li,
2575 | .widget_top-posts ul li li,
2576 | .widget_rss_links ul li,
2577 | .widget_rss_links ul li li,
2578 | .widget-grofile ul.grofile-links li,
2579 | .widget-grofile ul.grofile-links li li {
2580 | padding-bottom: 0.25em;
2581 | padding-top: 0.25em;
2582 | }
2583 |
2584 | .widget_rss ul li {
2585 | padding-bottom: 1em;
2586 | padding-top: 1em;
2587 | }
2588 |
2589 | /* Widget markup */
2590 |
2591 | .widget .post-date,
2592 | .widget .rss-date {
2593 | font-size: 0.81em;
2594 | }
2595 |
2596 | /* Text widget */
2597 |
2598 | .widget_text {
2599 | word-wrap: break-word;
2600 | }
2601 |
2602 | .widget_text ul {
2603 | list-style: disc;
2604 | margin: 0 0 1.5em 1.5em;
2605 | }
2606 |
2607 | .widget_text ol {
2608 | list-style: decimal;
2609 | }
2610 |
2611 | .widget_text ul li,
2612 | .widget_text ol li {
2613 | border: none;
2614 | }
2615 |
2616 | .widget_text ul li:last-child,
2617 | .widget_text ol li:last-child {
2618 | padding-bottom: 0;
2619 | }
2620 |
2621 | .widget_text ul li ul {
2622 | margin: 0 0 0 1.5em;
2623 | }
2624 |
2625 | .widget_text ul li li {
2626 | padding-left: 0;
2627 | padding-right: 0;
2628 | }
2629 |
2630 | .widget_text ol li {
2631 | list-style-position: inside;
2632 | }
2633 |
2634 | .widget_text ol li + li {
2635 | margin-top: -1px;
2636 | }
2637 |
2638 | /* RSS Widget */
2639 |
2640 | .widget_rss .widget-title .rsswidget:first-child {
2641 | float: right;
2642 | }
2643 |
2644 | .widget_rss .widget-title .rsswidget:first-child:hover {
2645 | background-color: transparent;
2646 | }
2647 |
2648 | .widget_rss .widget-title .rsswidget:first-child img {
2649 | display: block;
2650 | }
2651 |
2652 | .widget_rss ul li {
2653 | padding: 2.125em 0;
2654 | }
2655 |
2656 | .widget_rss ul li:first-child {
2657 | border-top: none;
2658 | padding-top: 0;
2659 | }
2660 |
2661 | .widget_rss li .rsswidget {
2662 | font-size: 22px;
2663 | font-size: 1.375rem;
2664 | font-weight: 300;
2665 | line-height: 1.4;
2666 | }
2667 |
2668 | .widget_rss .rss-date,
2669 | .widget_rss li cite {
2670 | color: #767676;
2671 | display: block;
2672 | font-size: 10px;
2673 | font-size: 0.625rem;
2674 | font-style: normal;
2675 | font-weight: 800;
2676 | letter-spacing: 0.18em;
2677 | line-height: 1.5;
2678 | text-transform: uppercase;
2679 | }
2680 |
2681 | .widget_rss .rss-date {
2682 | margin: 0.5em 0 1.5em;
2683 | padding: 0;
2684 | }
2685 |
2686 | .widget_rss .rssSummary {
2687 | margin-bottom: 0.5em;
2688 | }
2689 |
2690 | /* Contact Info Widget */
2691 |
2692 | .widget_contact_info .contact-map {
2693 | margin-bottom: 0.5em;
2694 | }
2695 |
2696 | /* Gravatar */
2697 |
2698 | .widget-grofile h4 {
2699 | font-size: 16px;
2700 | font-size: 1rem;
2701 | margin-bottom: 0;
2702 | }
2703 |
2704 | /* Recent Comments */
2705 |
2706 | .widget_recent_comments table,
2707 | .widget_recent_comments th,
2708 | .widget_recent_comments td {
2709 | border: 0;
2710 | }
2711 |
2712 | /* Recent Posts widget */
2713 |
2714 | .widget_recent_entries .post-date {
2715 | display: block;
2716 | }
2717 |
2718 | /* Search */
2719 |
2720 | .search-form {
2721 | position: relative;
2722 | }
2723 |
2724 | .search-form .search-submit {
2725 | bottom: 3px;
2726 | padding: 0.5em 1em;
2727 | position: absolute;
2728 | right: 3px;
2729 | top: 3px;
2730 | }
2731 |
2732 | .search-form .search-submit .icon {
2733 | height: 24px;
2734 | top: -2px;
2735 | width: 24px;
2736 | }
2737 |
2738 | /* Tag cloud widget */
2739 |
2740 | .tagcloud ul li {
2741 | float: left;
2742 | border-top: 0;
2743 | border-bottom: 0;
2744 | padding: 0;
2745 | margin: 4px 4px 0 0;
2746 | }
2747 |
2748 | .tagcloud,
2749 | .widget_tag_cloud,
2750 | .wp_widget_tag_cloud {
2751 | line-height: 1.5;
2752 | }
2753 |
2754 | .widget .tagcloud a,
2755 | .widget.widget_tag_cloud a,
2756 | .wp_widget_tag_cloud a {
2757 | border: 1px solid #ddd;
2758 | -webkit-box-shadow: none;
2759 | box-shadow: none;
2760 | display: block;
2761 | padding: 4px 10px 5px;
2762 | position: relative;
2763 | -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2764 | transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2765 | width: auto;
2766 | word-wrap: break-word;
2767 | z-index: 0;
2768 | }
2769 |
2770 | .widget .tagcloud a:hover,
2771 | .widget .tagcloud a:focus,
2772 | .widget.widget_tag_cloud a:hover,
2773 | .widget.widget_tag_cloud a:focus,
2774 | .wp_widget_tag_cloud a:hover,
2775 | .wp_widget_tag_cloud a:focus {
2776 | border-color: #bbb;
2777 | -webkit-box-shadow: none;
2778 | box-shadow: none;
2779 | text-decoration: none;
2780 | }
2781 |
2782 | /* Calendar widget */
2783 |
2784 | .widget_calendar th,
2785 | .widget_calendar td {
2786 | text-align: center;
2787 | }
2788 |
2789 | .widget_calendar tfoot td {
2790 | border: 0;
2791 | }
2792 |
2793 | /* Gallery widget */
2794 |
2795 | .gallery-columns-5 .gallery-caption,
2796 | .gallery-columns-6 .gallery-caption,
2797 | .gallery-columns-7 .gallery-caption,
2798 | .gallery-columns-8 .gallery-caption,
2799 | .gallery-columns-9 .gallery-caption {
2800 | display: none;
2801 | }
2802 |
2803 | /*--------------------------------------------------------------
2804 | 16.0 Media
2805 | --------------------------------------------------------------*/
2806 |
2807 | img,
2808 | video {
2809 | height: auto; /* Make sure images are scaled correctly. */
2810 | max-width: 100%; /* Adhere to container width. */
2811 | }
2812 |
2813 | img.alignleft,
2814 | img.alignright {
2815 | float: none;
2816 | margin: 0;
2817 | }
2818 |
2819 | .page-content .wp-smiley,
2820 | .entry-content .wp-smiley,
2821 | .comment-content .wp-smiley {
2822 | border: none;
2823 | margin-bottom: 0;
2824 | margin-top: 0;
2825 | padding: 0;
2826 | }
2827 |
2828 | /* Make sure embeds and iframes fit their containers. */
2829 |
2830 | embed,
2831 | iframe,
2832 | object {
2833 | margin-bottom: 1.5em;
2834 | max-width: 100%;
2835 | }
2836 |
2837 | /* Remove bottom on embeds that wrapped in paragraphs via wpautop. */
2838 |
2839 | p > embed:only-child,
2840 | p > iframe:only-child,
2841 | p > object:only-child {
2842 | margin-bottom: 0;
2843 | }
2844 |
2845 | .wp-caption,
2846 | .gallery-caption {
2847 | color: #666;
2848 | font-size: 13px;
2849 | font-size: 0.8125rem;
2850 | font-style: italic;
2851 | margin-bottom: 1.5em;
2852 | max-width: 100%;
2853 | }
2854 |
2855 | .wp-caption img[class*="wp-image-"] {
2856 | display: block;
2857 | margin-left: auto;
2858 | margin-right: auto;
2859 | }
2860 |
2861 | .wp-caption .wp-caption-text {
2862 | margin: 0.8075em 0;
2863 | }
2864 |
2865 | /* Media Elements */
2866 |
2867 | .mejs-container {
2868 | margin-bottom: 1.5em;
2869 | }
2870 |
2871 | /* Audio Player */
2872 |
2873 | .mejs-controls a.mejs-horizontal-volume-slider,
2874 | .mejs-controls a.mejs-horizontal-volume-slider:focus,
2875 | .mejs-controls a.mejs-horizontal-volume-slider:hover {
2876 | background: transparent;
2877 | border: 0;
2878 | }
2879 |
2880 | /* Playlist Color Overrides: Light */
2881 |
2882 | .site-content .wp-playlist-light {
2883 | border-color: #eee;
2884 | color: #222;
2885 | }
2886 |
2887 | .site-content .wp-playlist-light .wp-playlist-current-item .wp-playlist-item-album {
2888 | color: #333;
2889 | }
2890 |
2891 | .site-content .wp-playlist-light .wp-playlist-current-item .wp-playlist-item-artist {
2892 | color: #767676;
2893 | }
2894 |
2895 | .site-content .wp-playlist-light .wp-playlist-item {
2896 | border-bottom: 1px dotted #eee;
2897 | -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2898 | transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2899 | }
2900 |
2901 | .site-content .wp-playlist-light .wp-playlist-item:hover,
2902 | .site-content .wp-playlist-light .wp-playlist-item:focus {
2903 | border-bottom-color: rgba(0, 0, 0, 0);
2904 | background-color: #767676;
2905 | color: #fff;
2906 | }
2907 |
2908 | .site-content .wp-playlist-light a.wp-playlist-caption:hover,
2909 | .site-content .wp-playlist-light .wp-playlist-item:hover a,
2910 | .site-content .wp-playlist-light .wp-playlist-item:focus a {
2911 | color: #fff;
2912 | }
2913 |
2914 | /* Playlist Color Overrides: Dark */
2915 |
2916 | .site-content .wp-playlist-dark {
2917 | background: #222;
2918 | border-color: #333;
2919 | }
2920 |
2921 | .site-content .wp-playlist-dark .mejs-container .mejs-controls {
2922 | background-color: #333;
2923 | }
2924 |
2925 | .site-content .wp-playlist-dark .wp-playlist-caption {
2926 | color: #fff;
2927 | }
2928 |
2929 | .site-content .wp-playlist-dark .wp-playlist-current-item .wp-playlist-item-album {
2930 | color: #eee;
2931 | }
2932 |
2933 | .site-content .wp-playlist-dark .wp-playlist-current-item .wp-playlist-item-artist {
2934 | color: #aaa;
2935 | }
2936 |
2937 | .site-content .wp-playlist-dark .wp-playlist-playing {
2938 | background-color: #333;
2939 | }
2940 |
2941 | .site-content .wp-playlist-dark .wp-playlist-item {
2942 | border-bottom: 1px dotted #555;
2943 | -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2944 | transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
2945 | }
2946 |
2947 | .site-content .wp-playlist-dark .wp-playlist-item:hover,
2948 | .site-content .wp-playlist-dark .wp-playlist-item:focus {
2949 | border-bottom-color: rgba(0, 0, 0, 0);
2950 | background-color: #aaa;
2951 | color: #222;
2952 | }
2953 |
2954 | .site-content .wp-playlist-dark a.wp-playlist-caption:hover,
2955 | .site-content .wp-playlist-dark .wp-playlist-item:hover a,
2956 | .site-content .wp-playlist-dark .wp-playlist-item:focus a {
2957 | color: #222;
2958 | }
2959 |
2960 | /* Playlist Style Overrides */
2961 |
2962 | .site-content .wp-playlist {
2963 | padding: 0.625em 0.625em 0.3125em;
2964 | }
2965 |
2966 | .site-content .wp-playlist-current-item .wp-playlist-item-title {
2967 | font-weight: 700;
2968 | }
2969 |
2970 | .site-content .wp-playlist-current-item .wp-playlist-item-album {
2971 | font-style: normal;
2972 | }
2973 |
2974 | .site-content .wp-playlist-current-item .wp-playlist-item-artist {
2975 | font-size: 10px;
2976 | font-size: 0.625rem;
2977 | font-weight: 800;
2978 | letter-spacing: 0.1818em;
2979 | text-transform: uppercase;
2980 | }
2981 |
2982 | .site-content .wp-playlist-item {
2983 | padding: 0 0.3125em;
2984 | cursor: pointer;
2985 | }
2986 |
2987 | .site-content .wp-playlist-item:last-of-type {
2988 | border-bottom: none;
2989 | }
2990 |
2991 | .site-content .wp-playlist-item a {
2992 | padding: 0.3125em 0;
2993 | border-bottom: none;
2994 | }
2995 |
2996 | .site-content .wp-playlist-item a,
2997 | .site-content .wp-playlist-item a:focus,
2998 | .site-content .wp-playlist-item a:hover {
2999 | -webkit-box-shadow: none;
3000 | box-shadow: none;
3001 | background: transparent;
3002 | }
3003 |
3004 | .site-content .wp-playlist-item-length {
3005 | top: 5px;
3006 | }
3007 |
3008 | /* SVG Icons base styles */
3009 |
3010 | .icon {
3011 | display: inline-block;
3012 | fill: currentColor;
3013 | height: 1em;
3014 | position: relative; /* Align more nicely with capital letters */
3015 | top: -0.0625em;
3016 | vertical-align: middle;
3017 | width: 1em;
3018 | }
3019 |
3020 | /*--------------------------------------------------------------
3021 | 16.1 Galleries
3022 | --------------------------------------------------------------*/
3023 |
3024 | .gallery-item {
3025 | display: inline-block;
3026 | text-align: left;
3027 | vertical-align: top;
3028 | margin: 0 0 1.5em;
3029 | padding: 0 1em 0 0;
3030 | width: 50%;
3031 | }
3032 |
3033 | .gallery-columns-1 .gallery-item {
3034 | width: 100%;
3035 | }
3036 |
3037 | .gallery-columns-2 .gallery-item {
3038 | max-width: 50%;
3039 | }
3040 |
3041 | .gallery-item a,
3042 | .gallery-item a:hover,
3043 | .gallery-item a:focus,
3044 | .widget-area .gallery-item a,
3045 | .widget-area .gallery-item a:hover,
3046 | .widget-area .gallery-item a:focus {
3047 | -webkit-box-shadow: none;
3048 | box-shadow: none;
3049 | background: none;
3050 | display: inline-block;
3051 | max-width: 100%;
3052 | }
3053 |
3054 | .gallery-item a img {
3055 | display: block;
3056 | -webkit-transition: -webkit-filter 0.2s ease-in;
3057 | transition: -webkit-filter 0.2s ease-in;
3058 | transition: filter 0.2s ease-in;
3059 | transition: filter 0.2s ease-in, -webkit-filter 0.2s ease-in;
3060 | -webkit-backface-visibility: hidden;
3061 | backface-visibility: hidden;
3062 | }
3063 |
3064 | .gallery-item a:hover img,
3065 | .gallery-item a:focus img {
3066 | -webkit-filter: opacity(60%);
3067 | filter: opacity(60%);
3068 | }
3069 |
3070 | .gallery-caption {
3071 | display: block;
3072 | text-align: left;
3073 | padding: 0 10px 0 0;
3074 | margin-bottom: 0;
3075 | }
3076 |
3077 | /*--------------------------------------------------------------
3078 | 17.0 Customizer
3079 | --------------------------------------------------------------*/
3080 |
3081 | .highlight-front-sections.twentyseventeen-customizer.twentyseventeen-front-page .twentyseventeen-panel:after {
3082 | border: 2px dashed #0085ba; /* Matches visible edit shortcuts. */
3083 | bottom: 1em;
3084 | content: "";
3085 | display: block;
3086 | left: 1em;
3087 | position: absolute;
3088 | right: 1em;
3089 | top: 1em;
3090 | z-index: 1;
3091 | }
3092 |
3093 | .highlight-front-sections.twentyseventeen-customizer.twentyseventeen-front-page .twentyseventeen-panel .panel-content {
3094 | z-index: 2; /* Prevent :after from preventing interactions within the section */
3095 | }
3096 |
3097 | /* Used for placeholder text */
3098 | .twentyseventeen-customizer.twentyseventeen-front-page .twentyseventeen-panel .twentyseventeen-panel-title {
3099 | display: block;
3100 | font-size: 14px;
3101 | font-size: 0.875rem;
3102 | font-weight: 700;
3103 | letter-spacing: 1px;
3104 | padding: 3em;
3105 | text-transform: uppercase;
3106 | text-align: center;
3107 | }
3108 |
3109 | /* Show borders on the custom page panels only when the front page sections are being edited */
3110 | .highlight-front-sections.twentyseventeen-customizer.twentyseventeen-front-page .twentyseventeen-panel:nth-of-type(1):after {
3111 | border: none;
3112 | }
3113 |
3114 | .twentyseventeen-front-page.twentyseventeen-customizer #primary article.panel-placeholder {
3115 | border: 0;
3116 | }
3117 |
3118 | /* Add some space around the visual edit shortcut buttons. */
3119 | .twentyseventeen-panel > .customize-partial-edit-shortcut > button {
3120 | top: 30px;
3121 | left: 30px;
3122 | }
3123 |
3124 | /* Ensure that placeholder icons are visible. */
3125 | .twentyseventeen-panel .customize-partial-edit-shortcut-hidden:before {
3126 | visibility: visible;
3127 | }
3128 |
3129 | /*--------------------------------------------------------------
3130 | 18.0 SVGs Fallbacks
3131 | --------------------------------------------------------------*/
3132 |
3133 | .svg-fallback {
3134 | display: none;
3135 | }
3136 |
3137 | .no-svg .svg-fallback {
3138 | display: inline-block;
3139 | }
3140 |
3141 | .no-svg .dropdown-toggle {
3142 | padding: 0.5em 0 0;
3143 | right: 0;
3144 | text-align: center;
3145 | width: 2em;
3146 | }
3147 |
3148 | .no-svg .dropdown-toggle .svg-fallback.icon-angle-down {
3149 | font-size: 20px;
3150 | font-size: 1.25rem;
3151 | font-weight: 400;
3152 | line-height: 1;
3153 | -webkit-transform: rotate(180deg); /* Chrome, Safari, Opera */
3154 | -ms-transform: rotate(180deg); /* IE 9 */
3155 | transform: rotate(180deg);
3156 | }
3157 |
3158 | .no-svg .dropdown-toggle.toggled-on .svg-fallback.icon-angle-down {
3159 | -webkit-transform: rotate(0); /* Chrome, Safari, Opera */
3160 | -ms-transform: rotate(0); /* IE 9 */
3161 | transform: rotate(0);
3162 | }
3163 |
3164 | .no-svg .dropdown-toggle .svg-fallback.icon-angle-down:before {
3165 | content: "\005E";
3166 | }
3167 |
3168 | /* Social Menu fallbacks */
3169 |
3170 | .no-svg .social-navigation a {
3171 | background: transparent;
3172 | color: #222;
3173 | height: auto;
3174 | width: auto;
3175 | }
3176 |
3177 | /* Show screen reader text in some cases */
3178 |
3179 | .no-svg .next.page-numbers .screen-reader-text,
3180 | .no-svg .prev.page-numbers .screen-reader-text,
3181 | .no-svg .social-navigation li a .screen-reader-text,
3182 | .no-svg .search-submit .screen-reader-text {
3183 | clip: auto;
3184 | font-size: 16px;
3185 | font-size: 1rem;
3186 | font-weight: 400;
3187 | height: auto;
3188 | position: relative !important; /* overrides previous !important styles */
3189 | width: auto;
3190 | }
3191 |
3192 | /*--------------------------------------------------------------
3193 | 19.0 Media Queries
3194 | --------------------------------------------------------------*/
3195 |
3196 | /* Adjust positioning of edit shortcuts, override style in customize-preview.css */
3197 | @media screen and (min-width: 20em) {
3198 |
3199 | body.customize-partial-edit-shortcuts-shown .site-header .site-title {
3200 | padding-left: 0;
3201 | }
3202 | }
3203 |
3204 | @media screen and (min-width: 30em) {
3205 |
3206 | /* Typography */
3207 |
3208 | body,
3209 | button,
3210 | input,
3211 | select,
3212 | textarea {
3213 | font-size: 18px;
3214 | font-size: 1.125rem;
3215 | }
3216 |
3217 | h1 {
3218 | font-size: 30px;
3219 | font-size: 1.875rem;
3220 | }
3221 |
3222 | h2,
3223 | .home.blog .entry-title,
3224 | .page .panel-content .recent-posts .entry-title {
3225 | font-size: 26px;
3226 | font-size: 1.625rem;
3227 | }
3228 |
3229 | h3 {
3230 | font-size: 22px;
3231 | font-size: 1.375rem;
3232 | }
3233 |
3234 | h4 {
3235 | font-size: 18px;
3236 | font-size: 1.125rem;
3237 | }
3238 |
3239 | h5 {
3240 | font-size: 13px;
3241 | font-size: 0.8125rem;
3242 | }
3243 |
3244 | h6 {
3245 | font-size: 16px;
3246 | font-size: 1rem;
3247 | }
3248 |
3249 | .entry-content blockquote.alignleft,
3250 | .entry-content blockquote.alignright {
3251 | font-size: 14px;
3252 | font-size: 0.875rem;
3253 | }
3254 |
3255 | /* Fix image alignment */
3256 | img.alignleft {
3257 | float: left;
3258 | margin-right: 1.5em;
3259 | }
3260 |
3261 | img.alignright {
3262 | float: right;
3263 | margin-left: 1.5em;
3264 | }
3265 |
3266 | /* Site Branding */
3267 |
3268 | .site-branding {
3269 | padding: 3em 0;
3270 | }
3271 |
3272 | /* Front Page */
3273 |
3274 | .panel-content .wrap {
3275 | padding-bottom: 2em;
3276 | padding-top: 3.5em;
3277 | }
3278 |
3279 | .page-one-column .panel-content .wrap {
3280 | max-width: 740px;
3281 | }
3282 |
3283 | .panel-content .entry-header {
3284 | margin-bottom: 4.5em;
3285 | }
3286 |
3287 | .panel-content .recent-posts .entry-header {
3288 | margin-bottom: 0;
3289 | }
3290 |
3291 | /* Blog Index, Archive, Search */
3292 |
3293 | .taxonomy-description {
3294 | font-size: 14px;
3295 | font-size: 0.875rem;
3296 | }
3297 |
3298 | .page-numbers.current {
3299 | font-size: 16px;
3300 | font-size: 1rem;
3301 | }
3302 |
3303 | /* Site Footer */
3304 |
3305 | .site-footer {
3306 | font-size: 16px;
3307 | font-size: 1rem;
3308 | }
3309 |
3310 | /* Gallery Columns */
3311 |
3312 | .gallery-item {
3313 | max-width: 25%;
3314 | }
3315 |
3316 | .gallery-columns-1 .gallery-item {
3317 | max-width: 100%;
3318 | }
3319 |
3320 | .gallery-columns-2 .gallery-item {
3321 | max-width: 50%;
3322 | }
3323 |
3324 | .gallery-columns-3 .gallery-item {
3325 | max-width: 33.33%;
3326 | }
3327 |
3328 | .gallery-columns-4 .gallery-item {
3329 | max-width: 25%;
3330 | }
3331 | }
3332 |
3333 | @media screen and (min-width: 48em) {
3334 |
3335 | /* Typography */
3336 |
3337 | body,
3338 | button,
3339 | input,
3340 | select,
3341 | textarea {
3342 | font-size: 16px;
3343 | font-size: 1rem;
3344 | line-height: 1.5;
3345 | }
3346 |
3347 | .entry-content blockquote.alignleft,
3348 | .entry-content blockquote.alignright {
3349 | font-size: 13px;
3350 | font-size: 0.8125rem;
3351 | }
3352 |
3353 | /* Layout */
3354 |
3355 | .wrap {
3356 | max-width: 1000px;
3357 | padding-left: 3em;
3358 | padding-right: 3em;
3359 | }
3360 |
3361 | .has-sidebar:not(.error404) #primary {
3362 | float: left;
3363 | width: 58%;
3364 | }
3365 |
3366 | .has-sidebar #secondary {
3367 | float: right;
3368 | padding-top: 0;
3369 | width: 36%;
3370 | }
3371 |
3372 | .error404 #primary {
3373 | float: none;
3374 | }
3375 |
3376 | /* Site Branding */
3377 |
3378 | .site-branding {
3379 | margin-bottom: 0;
3380 | }
3381 |
3382 | .has-header-image.twentyseventeen-front-page .site-branding,
3383 | .has-header-video.twentyseventeen-front-page .site-branding,
3384 | .has-header-image.home.blog .site-branding,
3385 | .has-header-video.home.blog .site-branding {
3386 | bottom: 0;
3387 | display: block;
3388 | left: 0;
3389 | height: auto;
3390 | padding-top: 0;
3391 | position: absolute;
3392 | width: 100%;
3393 | }
3394 |
3395 | .has-header-image.twentyseventeen-front-page .custom-header,
3396 | .has-header-video.twentyseventeen-front-page .custom-header,
3397 | .has-header-image.home.blog .custom-header,
3398 | .has-header-video.home.blog .custom-header {
3399 | display: block;
3400 | height: auto;
3401 | }
3402 |
3403 | .custom-header-media {
3404 | height: 165px;
3405 | position: relative;
3406 | }
3407 |
3408 | .twentyseventeen-front-page.has-header-image .custom-header-media,
3409 | .twentyseventeen-front-page.has-header-video .custom-header-media,
3410 | .home.blog.has-header-image .custom-header-media,
3411 | .home.blog.has-header-video .custom-header-media {
3412 | height: 0;
3413 | position: relative;
3414 | }
3415 |
3416 | .has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media,
3417 | .has-header-video:not(.twentyseventeen-front-page):not(.home) .custom-header-media {
3418 | bottom: 0;
3419 | height: auto;
3420 | left: 0;
3421 | position: absolute;
3422 | right: 0;
3423 | top: 0;
3424 | }
3425 |
3426 | .custom-logo-link {
3427 | padding-right: 2em;
3428 | }
3429 |
3430 | .custom-logo-link img,
3431 | body.home.title-tagline-hidden.has-header-image .custom-logo-link img,
3432 | body.home.title-tagline-hidden.has-header-video .custom-logo-link img {
3433 | max-width: 350px;
3434 | }
3435 |
3436 | .title-tagline-hidden.home.has-header-image .custom-logo-link img,
3437 | .title-tagline-hidden.home.has-header-video .custom-logo-link img {
3438 | max-height: 200px;
3439 | }
3440 |
3441 | .site-title {
3442 | font-size: 36px;
3443 | font-size: 2.25rem;
3444 | }
3445 |
3446 | .site-description {
3447 | font-size: 16px;
3448 | font-size: 1rem;
3449 | }
3450 |
3451 | /* Navigation */
3452 |
3453 | .navigation-top {
3454 | bottom: 0;
3455 | font-size: 14px;
3456 | font-size: 0.875rem;
3457 | left: 0;
3458 | position: absolute;
3459 | right: 0;
3460 | width: 100%;
3461 | z-index: 3;
3462 | }
3463 |
3464 | .navigation-top .wrap {
3465 | max-width: 1000px;
3466 | /* The font size is 14px here and we need 50px padding in ems */
3467 | padding: 0.75em 3.4166666666667em;
3468 | }
3469 |
3470 | .navigation-top nav {
3471 | margin-left: -1.25em;
3472 | }
3473 |
3474 | .site-navigation-fixed.navigation-top {
3475 | bottom: auto;
3476 | position: fixed;
3477 | left: 0;
3478 | right: 0;
3479 | top: 0;
3480 | width: 100%;
3481 | z-index: 7;
3482 | }
3483 |
3484 | .admin-bar .site-navigation-fixed.navigation-top {
3485 | top: 32px;
3486 | }
3487 |
3488 | /* Main Navigation */
3489 |
3490 | .js .menu-toggle,
3491 | .js .dropdown-toggle {
3492 | display: none;
3493 | }
3494 |
3495 | .main-navigation {
3496 | width: auto;
3497 | }
3498 |
3499 | .js .main-navigation ul,
3500 | .js .main-navigation ul ul,
3501 | .js .main-navigation > div > ul {
3502 | display: block;
3503 | }
3504 |
3505 | .main-navigation ul {
3506 | background: transparent;
3507 | padding: 0;
3508 | }
3509 |
3510 | .main-navigation > div > ul {
3511 | border: 0;
3512 | margin-bottom: 0;
3513 | padding: 0;
3514 | }
3515 |
3516 | .main-navigation li {
3517 | border: 0;
3518 | display: inline-block;
3519 | }
3520 |
3521 | .main-navigation li li {
3522 | display: block;
3523 | }
3524 |
3525 | .main-navigation a {
3526 | padding: 1em 1.25em;
3527 | }
3528 |
3529 | .main-navigation ul ul {
3530 | background: #fff;
3531 | border: 1px solid #bbb;
3532 | left: -999em;
3533 | padding: 0;
3534 | position: absolute;
3535 | top: 100%;
3536 | z-index: 99999;
3537 | }
3538 |
3539 | .main-navigation ul li.menu-item-has-children:before,
3540 | .main-navigation ul li.menu-item-has-children:after,
3541 | .main-navigation ul li.page_item_has_children:before,
3542 | .main-navigation ul li.page_item_has_children:after {
3543 | border-style: solid;
3544 | border-width: 0 6px 6px;
3545 | content: "";
3546 | display: none;
3547 | height: 0;
3548 | position: absolute;
3549 | right: 1em;
3550 | bottom: -1px;
3551 | width: 0;
3552 | z-index: 100000;
3553 | }
3554 |
3555 | .main-navigation ul li.menu-item-has-children.focus:before,
3556 | .main-navigation ul li.menu-item-has-children:hover:before,
3557 | .main-navigation ul li.menu-item-has-children.focus:after,
3558 | .main-navigation ul li.menu-item-has-children:hover:after,
3559 | .main-navigation ul li.page_item_has_children.focus:before,
3560 | .main-navigation ul li.page_item_has_children:hover:before,
3561 | .main-navigation ul li.page_item_has_children.focus:after,
3562 | .main-navigation ul li.page_item_has_children:hover:after {
3563 | display: block;
3564 | }
3565 |
3566 | .main-navigation ul li.menu-item-has-children:before,
3567 | .main-navigation ul li.page_item_has_children:before {
3568 | border-color: transparent transparent #bbb;
3569 | bottom: 0;
3570 | }
3571 |
3572 | .main-navigation ul li.menu-item-has-children:after,
3573 | .main-navigation ul li.page_item_has_children:after {
3574 | border-color: transparent transparent #fff;
3575 | }
3576 |
3577 | .main-navigation ul ul li:hover > ul,
3578 | .main-navigation ul ul li.focus > ul {
3579 | left: 100%;
3580 | right: auto;
3581 | }
3582 |
3583 | .main-navigation ul ul a {
3584 | padding: 0.75em 1.25em;
3585 | width: 16em;
3586 | }
3587 |
3588 | .main-navigation li li {
3589 | -webkit-transition: background-color 0.2s ease-in-out;
3590 | transition: background-color 0.2s ease-in-out;
3591 | }
3592 |
3593 | .main-navigation li li:hover,
3594 | .main-navigation li li.focus {
3595 | background: #767676;
3596 | }
3597 |
3598 | .main-navigation li li a {
3599 | -webkit-transition: color 0.3s ease-in-out;
3600 | transition: color 0.3s ease-in-out;
3601 | }
3602 |
3603 | .main-navigation li li.focus > a,
3604 | .main-navigation li li:focus > a,
3605 | .main-navigation li li:hover > a,
3606 | .main-navigation li li a:hover,
3607 | .main-navigation li li a:focus,
3608 | .main-navigation li li.current_page_item a:hover,
3609 | .main-navigation li li.current-menu-item a:hover,
3610 | .main-navigation li li.current_page_item a:focus,
3611 | .main-navigation li li.current-menu-item a:focus {
3612 | color: #fff;
3613 | }
3614 |
3615 | .main-navigation ul li:hover > ul,
3616 | .main-navigation ul li.focus > ul {
3617 | left: 0.5em;
3618 | right: auto;
3619 | }
3620 |
3621 | .main-navigation .menu-item-has-children > a > .icon,
3622 | .main-navigation .page_item_has_children > a > .icon {
3623 | display: inline;
3624 | left: 5px;
3625 | position: relative;
3626 | top: -1px;
3627 | }
3628 |
3629 | .main-navigation ul ul .menu-item-has-children > a > .icon,
3630 | .main-navigation ul ul .page_item_has_children > a > .icon {
3631 | margin-top: -9px;
3632 | left: auto;
3633 | position: absolute;
3634 | right: 1em;
3635 | top: 50%;
3636 | -webkit-transform: rotate(-90deg); /* Chrome, Safari, Opera */
3637 | -ms-transform: rotate(-90deg); /* IE 9 */
3638 | transform: rotate(-90deg);
3639 | }
3640 |
3641 | .main-navigation ul ul ul {
3642 | left: -999em;
3643 | margin-top: -1px;
3644 | top: 0;
3645 | }
3646 |
3647 | .main-navigation ul ul li.menu-item-has-children.focus:before,
3648 | .main-navigation ul ul li.menu-item-has-children:hover:before,
3649 | .main-navigation ul ul li.menu-item-has-children.focus:after,
3650 | .main-navigation ul ul li.menu-item-has-children:hover:after,
3651 | .main-navigation ul ul li.page_item_has_children.focus:before,
3652 | .main-navigation ul ul li.page_item_has_children:hover:before,
3653 | .main-navigation ul ul li.page_item_has_children.focus:after,
3654 | .main-navigation ul ul li.page_item_has_children:hover:after {
3655 | display: none;
3656 | }
3657 |
3658 | .site-header .site-navigation-fixed .menu-scroll-down {
3659 | display: none;
3660 | }
3661 |
3662 | /* Scroll down arrow */
3663 |
3664 | .site-header .menu-scroll-down {
3665 | display: block;
3666 | padding: 1em;
3667 | position: absolute;
3668 | right: 0;
3669 | }
3670 |
3671 | .site-header .menu-scroll-down .icon {
3672 | -webkit-transform: rotate(90deg); /* Chrome, Safari, Opera */
3673 | -ms-transform: rotate(90deg); /* IE 9 */
3674 | transform: rotate(90deg);
3675 | }
3676 |
3677 | .site-header .menu-scroll-down {
3678 | color: #fff;
3679 | top: 2em;
3680 | }
3681 |
3682 | .site-header .navigation-top .menu-scroll-down {
3683 | color: #767676;
3684 | top: 0.7em;
3685 | }
3686 |
3687 | .menu-scroll-down:focus {
3688 | outline: thin dotted;
3689 | }
3690 |
3691 | .menu-scroll-down .icon {
3692 | height: 18px;
3693 | width: 18px;
3694 | }
3695 |
3696 | /* Front Page */
3697 |
3698 | .twentyseventeen-front-page.has-header-image .site-branding,
3699 | .twentyseventeen-front-page.has-header-video .site-branding,
3700 | .home.blog.has-header-image .site-branding,
3701 | .home.blog.has-header-video .site-branding {
3702 | margin-bottom: 70px;
3703 | }
3704 |
3705 | .twentyseventeen-front-page.has-header-image .custom-header-media,
3706 | .twentyseventeen-front-page.has-header-video .custom-header-media,
3707 | .home.blog.has-header-image .custom-header-media,
3708 | .home.blog.has-header-video .custom-header-media {
3709 | height: 1200px;
3710 | height: 100vh;
3711 | max-height: 100%;
3712 | overflow: hidden;
3713 | }
3714 |
3715 | .twentyseventeen-front-page.has-header-image .custom-header-media:before,
3716 | .twentyseventeen-front-page.has-header-video .custom-header-media:before,
3717 | .home.blog.has-header-image .custom-header-media:before,
3718 | .home.blog.has-header-video .custom-header-media:before {
3719 | height: 33%;
3720 | }
3721 |
3722 | .admin-bar.twentyseventeen-front-page.has-header-image .custom-header-media,
3723 | .admin-bar.twentyseventeen-front-page.has-header-video .custom-header-media,
3724 | .admin-bar.home.blog.has-header-image .custom-header-media,
3725 | .admin-bar.home.blog.has-header-video .custom-header-media {
3726 | height: calc(100vh - 32px);
3727 | }
3728 |
3729 | .panel-content .wrap {
3730 | padding-bottom: 4.5em;
3731 | padding-top: 6em;
3732 | }
3733 |
3734 | .panel-image {
3735 | height: 100vh;
3736 | max-height: 1200px;
3737 | }
3738 |
3739 | /* With panel images 100% of the screen height, we're going to fix the background image where supported to create a parallax-like effect. */
3740 | .background-fixed .panel-image {
3741 | background-attachment: fixed;
3742 | }
3743 |
3744 | .page-two-column .panel-content .entry-header {
3745 | float: left;
3746 | width: 36%;
3747 | }
3748 |
3749 | .page-two-column .panel-content .entry-content {
3750 | float: right;
3751 | width: 58%;
3752 | }
3753 |
3754 | /* Front Page - Recent Posts */
3755 |
3756 | .page-two-column .panel-content .recent-posts {
3757 | clear: right;
3758 | float: right;
3759 | width: 58%;
3760 | }
3761 |
3762 | .panel-content .recent-posts article {
3763 | margin-bottom: 4em;
3764 | }
3765 |
3766 | .panel-content .recent-posts .entry-header,
3767 | .page-two-column #primary .panel-content .recent-posts .entry-header,
3768 | .panel-content .recent-posts .entry-content,
3769 | .page-two-column #primary .panel-content .recent-posts .entry-content {
3770 | float: none;
3771 | width: 100%;
3772 | }
3773 |
3774 | .panel-content .recent-posts .entry-header {
3775 | margin-bottom: 1.5em;
3776 | }
3777 |
3778 | .page .panel-content .recent-posts .entry-title {
3779 | font-size: 26px;
3780 | font-size: 1.625rem;
3781 | }
3782 |
3783 | /* Posts */
3784 |
3785 | .site-content {
3786 | padding: 5.5em 0 0;
3787 | }
3788 |
3789 | .single-post .entry-title,
3790 | .page .entry-title {
3791 | font-size: 26px;
3792 | font-size: 1.625rem;
3793 | }
3794 |
3795 | .comments-pagination,
3796 | .post-navigation {
3797 | clear: both;
3798 | }
3799 |
3800 | .post-navigation .nav-previous {
3801 | float: left;
3802 | width: 50%;
3803 | }
3804 |
3805 | .post-navigation .nav-next {
3806 | float: right;
3807 | text-align: right;
3808 | width: 50%;
3809 | }
3810 |
3811 | .nav-next,
3812 | .post-navigation .nav-next {
3813 | margin-top: 0;
3814 | }
3815 |
3816 | /* Blog, archive, search */
3817 |
3818 | .sticky .icon-thumb-tack {
3819 | height: 23px;
3820 | left: -2.5em;
3821 | top: 1.5em;
3822 | width: 32px;
3823 | }
3824 |
3825 | body:not(.has-sidebar):not(.page-one-column) .page-header,
3826 | body.has-sidebar.error404 #primary .page-header,
3827 | body.page-two-column:not(.archive) #primary .entry-header,
3828 | body.page-two-column.archive:not(.has-sidebar) #primary .page-header {
3829 | float: left;
3830 | width: 36%;
3831 | }
3832 |
3833 | .blog:not(.has-sidebar) #primary article,
3834 | .archive:not(.page-one-column):not(.has-sidebar) #primary article,
3835 | .search:not(.has-sidebar) #primary article,
3836 | .error404:not(.has-sidebar) #primary .page-content,
3837 | .error404.has-sidebar #primary .page-content,
3838 | body.page-two-column:not(.archive) #primary .entry-content,
3839 | body.page-two-column #comments {
3840 | float: right;
3841 | width: 58%;
3842 | }
3843 |
3844 | .blog .site-main > article,
3845 | .archive .site-main > article,
3846 | .search .site-main > article {
3847 | padding-bottom: 4em;
3848 | }
3849 |
3850 | .navigation.pagination {
3851 | clear: both;
3852 | float: right;
3853 | width: 58%;
3854 | }
3855 |
3856 | .has-sidebar .navigation.pagination,
3857 | .archive.page-one-column:not(.has-sidebar) .navigation.pagination {
3858 | float: none;
3859 | width: 100%;
3860 | }
3861 |
3862 | .entry-footer {
3863 | display: table;
3864 | width: 100%;
3865 | }
3866 |
3867 | .entry-footer .cat-tags-links {
3868 | display: table-cell;
3869 | vertical-align: middle;
3870 | width: 100%;
3871 | }
3872 |
3873 | .entry-footer .edit-link {
3874 | display: table-cell;
3875 | text-align: right;
3876 | vertical-align: middle;
3877 | }
3878 |
3879 | .entry-footer .edit-link a.post-edit-link {
3880 | margin-top: 0;
3881 | margin-left: 1em;
3882 | }
3883 |
3884 | /* Entry content */
3885 |
3886 | /* without sidebar */
3887 |
3888 | :not(.has-sidebar) .entry-content blockquote.alignleft {
3889 | margin-left: -17.5%;
3890 | width: 48%;
3891 | }
3892 |
3893 | :not(.has-sidebar) .entry-content blockquote.alignright {
3894 | margin-right: -17.5%;
3895 | width: 48%;
3896 | }
3897 |
3898 | /* with sidebar */
3899 |
3900 | .has-sidebar .entry-content blockquote.alignleft {
3901 | margin-left: 0;
3902 | width: 34%;
3903 | }
3904 |
3905 | .has-sidebar .entry-content blockquote.alignright {
3906 | margin-right: 0;
3907 | width: 34%;
3908 | }
3909 |
3910 | .has-sidebar #primary .entry-content blockquote.alignright.below-entry-meta {
3911 | margin-right: -72.5%;
3912 | width: 62%;
3913 | }
3914 |
3915 | /* blog and archive */
3916 |
3917 | .blog:not(.has-sidebar) .entry-content blockquote.alignleft,
3918 | .twentyseventeen-front-page.page-two-column .entry-content blockquote.alignleft,
3919 | .archive:not(.has-sidebar) .entry-content blockquote.alignleft,
3920 | .page-two-column .entry-content blockquote.alignleft {
3921 | margin-left: -72.5%;
3922 | width: 62%;
3923 | }
3924 |
3925 | .blog:not(.has-sidebar) .entry-content blockquote.alignright,
3926 | .twentyseventeen-front-page.page-two-column .entry-content blockquote.alignright,
3927 | .archive:not(.has-sidebar) .entry-content blockquote.alignright,
3928 | .page-two-column .entry-content blockquote.alignright {
3929 | margin-right: 0;
3930 | width: 36%;
3931 | }
3932 |
3933 | /* Post formats */
3934 |
3935 | .format-quote blockquote .icon {
3936 | left: -1.5em;
3937 | }
3938 |
3939 | /* Pages */
3940 |
3941 | .page.page-one-column .entry-header,
3942 | .twentyseventeen-front-page.page-one-column .entry-header,
3943 | .archive.page-one-column:not(.has-sidebar) .page-header {
3944 | margin-bottom: 4em;
3945 | }
3946 |
3947 | .page:not(.home) #content {
3948 | padding-bottom: 3.25em;
3949 | }
3950 |
3951 | /* 404 page */
3952 |
3953 | .error404 .page-content {
3954 | padding-bottom: 9em;
3955 | }
3956 |
3957 | /* Comments */
3958 |
3959 | #comments {
3960 | padding-top: 5em;
3961 | }
3962 |
3963 | .comments-title {
3964 | margin-bottom: 2.5em;
3965 | }
3966 |
3967 | ol.children .children {
3968 | padding-left: 2em;
3969 | }
3970 |
3971 | /* Posts pagination */
3972 |
3973 | .nav-links .nav-title {
3974 | position: relative;
3975 | }
3976 |
3977 | .nav-title-icon-wrapper {
3978 | position: absolute;
3979 | text-align: center;
3980 | width: 2em;
3981 | }
3982 |
3983 | .nav-links .nav-previous .nav-title .nav-title-icon-wrapper {
3984 | left: -2em;
3985 | }
3986 |
3987 | .nav-links .nav-next .nav-title .nav-title-icon-wrapper {
3988 | right: -2em;
3989 | }
3990 |
3991 | /* Secondary */
3992 |
3993 | #secondary {
3994 | font-size: 14px;
3995 | font-size: 0.875rem;
3996 | line-height: 1.6;
3997 | }
3998 |
3999 | /* Widgets */
4000 |
4001 | h2.widget-title {
4002 | font-size: 11px;
4003 | font-size: 0.6875rem;
4004 | margin-bottom: 2em;
4005 | }
4006 |
4007 | /* Footer */
4008 |
4009 | .site-footer {
4010 | font-size: 14px;
4011 | font-size: 0.875rem;
4012 | line-height: 1.6;
4013 | margin-top: 3em;
4014 | }
4015 |
4016 | .site-footer .widget-column.footer-widget-1 {
4017 | float: left;
4018 | width: 36%;
4019 | }
4020 |
4021 | .site-footer .widget-column.footer-widget-2 {
4022 | float: right;
4023 | width: 58%;
4024 | }
4025 |
4026 | .social-navigation {
4027 | clear: left;
4028 | float: left;
4029 | margin-bottom: 0;
4030 | width: 36%;
4031 | }
4032 |
4033 | .site-info {
4034 | float: left;
4035 | padding: 0.7em 0 0;
4036 | width: 58%;
4037 | }
4038 |
4039 | .social-navigation + .site-info {
4040 | margin-left: 6%;
4041 | }
4042 |
4043 | .site-info .sep {
4044 | margin: 0 0.5em;
4045 | display: inline;
4046 | visibility: visible;
4047 | height: auto;
4048 | width: auto;
4049 | }
4050 |
4051 | /* Gallery Columns */
4052 |
4053 | .gallery-columns-5 .gallery-item {
4054 | max-width: 20%;
4055 | }
4056 |
4057 | .gallery-columns-6 .gallery-item {
4058 | max-width: 16.66%;
4059 | }
4060 |
4061 | .gallery-columns-7 .gallery-item {
4062 | max-width: 14.28%;
4063 | }
4064 |
4065 | .gallery-columns-8 .gallery-item {
4066 | max-width: 12.5%;
4067 | }
4068 |
4069 | .gallery-columns-9 .gallery-item {
4070 | max-width: 11.11%;
4071 | }
4072 | }
4073 |
4074 | @media screen and ( min-width: 67em ) {
4075 |
4076 | /* Layout */
4077 |
4078 | /* Navigation */
4079 | .navigation-top .wrap {
4080 | padding: 0.75em 2em;
4081 | }
4082 |
4083 | .navigation-top nav {
4084 | margin-left: 0;
4085 | }
4086 |
4087 | /* Sticky posts */
4088 |
4089 | .sticky .icon-thumb-tack {
4090 | font-size: 32px;
4091 | font-size: 2rem;
4092 | height: 22px;
4093 | left: -1.25em;
4094 | top: 0.75em;
4095 | width: 32px;
4096 | }
4097 |
4098 | /* Pagination */
4099 |
4100 | .page-numbers {
4101 | display: inline-block;
4102 | }
4103 |
4104 | .page-numbers.current {
4105 | font-size: 15px;
4106 | font-size: 0.9375rem;
4107 | }
4108 |
4109 | .page-numbers.current .screen-reader-text {
4110 | clip: rect(1px, 1px, 1px, 1px);
4111 | height: 1px;
4112 | overflow: hidden;
4113 | position: absolute !important;
4114 | width: 1px;
4115 | }
4116 |
4117 | /* Comments */
4118 |
4119 | .comment-body {
4120 | margin-left: 0;
4121 | }
4122 | }
4123 |
4124 | @media screen and ( min-width: 79em ) {
4125 |
4126 | .has-sidebar .entry-content blockquote.alignleft {
4127 | margin-left: -20%;
4128 | }
4129 |
4130 | .blog:not(.has-sidebar) .entry-content blockquote.alignright,
4131 | .archive:not(.has-sidebar) .entry-content blockquote.alignright,
4132 | .page-two-column .entry-content blockquote.alignright,
4133 | .twentyseventeen-front-page .entry-content blockquote.alignright {
4134 | margin-right: -20%;
4135 | }
4136 | }
4137 |
4138 | @media screen and ( max-width: 48.875em ) and ( min-width: 48em ) {
4139 |
4140 | .admin-bar .site-navigation-fixed.navigation-top,
4141 | .admin-bar .site-navigation-hidden.navigation-top {
4142 | top: 46px;
4143 | }
4144 | }
4145 |
4146 | /*--------------------------------------------------------------
4147 | 20.0 Print
4148 | --------------------------------------------------------------*/
4149 |
4150 | @media print {
4151 |
4152 | /* Hide elements */
4153 |
4154 | form,
4155 | button,
4156 | input,
4157 | select,
4158 | textarea,
4159 | .navigation-top,
4160 | .social-navigation,
4161 | #secondary,
4162 | .content-bottom-widgets,
4163 | .header-image,
4164 | .panel-image-prop,
4165 | .icon-thumb-tack,
4166 | .page-links,
4167 | .edit-link,
4168 | .post-navigation,
4169 | .pagination.navigation,
4170 | .comments-pagination,
4171 | .comment-respond,
4172 | .comment-edit-link,
4173 | .comment-reply-link,
4174 | .comment-metadata .edit-link,
4175 | .pingback .edit-link,
4176 | .site-footer aside.widget-area,
4177 | .site-info {
4178 | display: none !important;
4179 | }
4180 |
4181 | .entry-footer,
4182 | #comments,
4183 | .site-footer,
4184 | .single-featured-image-header {
4185 | border: 0;
4186 | }
4187 |
4188 | /* Font sizes */
4189 |
4190 | body {
4191 | font-size: 12pt;
4192 | }
4193 |
4194 | h1 {
4195 | font-size: 24pt;
4196 | }
4197 |
4198 | h2 {
4199 | font-size: 22pt;
4200 | }
4201 |
4202 | h3 {
4203 | font-size: 17pt;
4204 | }
4205 |
4206 | h4 {
4207 | font-size: 12pt;
4208 | }
4209 |
4210 | h5 {
4211 | font-size: 11pt;
4212 | }
4213 |
4214 | h6 {
4215 | font-size: 12pt;
4216 | }
4217 |
4218 | .page .panel-content .entry-title,
4219 | .page-title,
4220 | body.page:not(.twentyseventeen-front-page) .entry-title {
4221 | font-size: 10pt;
4222 | }
4223 |
4224 | /* Layout */
4225 |
4226 | .wrap {
4227 | padding-left: 5% !important;
4228 | padding-right: 5% !important;
4229 | max-width: none;
4230 | }
4231 |
4232 | /* Site Branding */
4233 |
4234 | .site-header {
4235 | background: transparent;
4236 | padding: 0;
4237 | }
4238 |
4239 | .custom-header-media {
4240 | padding: 0;
4241 | }
4242 |
4243 | .twentyseventeen-front-page.has-header-image .site-branding,
4244 | .twentyseventeen-front-page.has-header-video .site-branding,
4245 | .home.blog.has-header-image .site-branding,
4246 | .home.blog.has-header-video .site-branding {
4247 | position: relative;
4248 | }
4249 |
4250 | .site-branding {
4251 | margin-top: 0;
4252 | margin-bottom: 1.75em !important; /* override styles added by JavaScript */
4253 | }
4254 |
4255 | .site-title {
4256 | font-size: 25pt;
4257 | }
4258 |
4259 | .site-description {
4260 | font-size: 12pt;
4261 | opacity: 1;
4262 | }
4263 |
4264 | /* Posts */
4265 |
4266 | .single-featured-image-header {
4267 | background: transparent;
4268 | }
4269 |
4270 | .entry-meta {
4271 | font-size: 9pt;
4272 | }
4273 |
4274 | /* Colors */
4275 |
4276 | body,
4277 | .site {
4278 | background: none !important; /* Brute force since user agents all print differently. */
4279 | }
4280 |
4281 | body,
4282 | a,
4283 | .site-title a,
4284 | .twentyseventeen-front-page.has-header-image .site-title,
4285 | .twentyseventeen-front-page.has-header-video .site-title,
4286 | .twentyseventeen-front-page.has-header-image .site-title a,
4287 | .twentyseventeen-front-page.has-header-video .site-title a {
4288 | color: #222 !important; /* Make sure color schemes don't affect to print */
4289 | }
4290 |
4291 | h2,
4292 | h5,
4293 | blockquote,
4294 | .site-description,
4295 | .twentyseventeen-front-page.has-header-image .site-description,
4296 | .twentyseventeen-front-page.has-header-video .site-description,
4297 | .entry-meta,
4298 | .entry-meta a {
4299 | color: #777 !important; /* Make sure color schemes don't affect to print */
4300 | }
4301 |
4302 | .entry-content blockquote.alignleft,
4303 | .entry-content blockquote.alignright {
4304 | font-size: 11pt;
4305 | width: 34%;
4306 | }
4307 |
4308 | .site-footer {
4309 | padding: 0;
4310 | }
4311 | }
4312 |
--------------------------------------------------------------------------------