getPresenter();
-
- @Override public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(MODEL, Parcels.wrap(getPresenter().getModel()));
- }
-
- @Override public void onStart() {
- super.onStart();
- getPresenter().subscribe(this);
- }
-
- @Override public void onStop() {
- getPresenter().pause();
- super.onStop();
- }
-
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpFragment.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpFragment.java
deleted file mode 100644
index 4d6dd01..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpFragment.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package it.cosenonjaviste.lib.mvp;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-
-import org.parceler.Parcels;
-
-import it.cosenonjaviste.lib.mvp.utils.PresenterSaverFragment;
-
-public abstract class MvpFragment, M> extends Fragment implements MvpView {
-
- private static final String PRESENTER_ID = "presenterId";
- public static final String MODEL = "model";
-
- protected P presenter;
-
- @Override public void onCreate(Bundle state) {
- super.onCreate(state);
-
- long presenterId = 0;
- M restoredModel = null;
- if (state != null) {
- presenterId = state.getLong(PRESENTER_ID, 0);
- restoredModel = Parcels.unwrap(state.getParcelable(MODEL));
- }
- if (restoredModel == null && getArguments() != null) {
- restoredModel = Parcels.unwrap(getArguments().getParcelable(MODEL));
- }
-
- presenter = PresenterSaverFragment.load(getFragmentManager(), presenterId);
- if (presenter == null) {
- presenter = createPresenter();
- }
- presenter.init(restoredModel);
-
- PresenterSaverFragment.save(getFragmentManager(), presenter);
- }
-
- @Override public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
- outState.putParcelable(MODEL, Parcels.wrap(presenter.getModel()));
- outState.putLong(PRESENTER_ID, presenter.getId());
- }
-
- @Override public void onStart() {
- super.onStart();
- presenter.subscribe(this);
- }
-
- @Override public void onStop() {
- presenter.pause();
- super.onStop();
- }
-
- protected abstract P createPresenter();
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpPresenter.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpPresenter.java
deleted file mode 100644
index a73f3ea..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpPresenter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package it.cosenonjaviste.lib.mvp;
-
-import java.util.concurrent.atomic.AtomicLong;
-
-public abstract class MvpPresenter {
- protected M model;
-
- protected MvpView view;
-
- private long id;
-
- private static AtomicLong sequence = new AtomicLong(1);
-
- protected MvpPresenter() {
- id = sequence.getAndIncrement();
- }
-
- public void init(M model) {
- this.model = model;
- }
-
- public void initAndSubscribe(M model, MvpView view) {
- init(model);
- subscribe(view);
- }
-
- public long getId() {
- return id;
- }
-
- public M getModel() {
- return model;
- }
-
- public void destroy() {
- }
-
- public void subscribe(MvpView view) {
- this.view = view;
- view.update(model);
- }
-
- public void pause() {
- view = null;
- }
-
- public MvpView getView() {
- return view;
- }
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpView.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpView.java
deleted file mode 100644
index 48f24d3..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/MvpView.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package it.cosenonjaviste.lib.mvp;
-
-public interface MvpView {
- void update(M model);
-
- void open(Class extends MvpView> viewClass, MM model);
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/RxMvpPresenter.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/RxMvpPresenter.java
deleted file mode 100644
index 79e69e1..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/RxMvpPresenter.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package it.cosenonjaviste.lib.mvp;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import rx.Observable;
-import rx.Subscriber;
-import rx.functions.Action0;
-import rx.functions.Action1;
-import rx.functions.Actions;
-import rx.functions.Func0;
-import rx.observables.ConnectableObservable;
-import rx.subscriptions.CompositeSubscription;
-
-public abstract class RxMvpPresenter extends MvpPresenter {
-
- private SchedulerManager schedulerManager;
-
- private final CompositeSubscription connectableSubscriptions = new CompositeSubscription();
-
- private CompositeSubscription subscriptions = new CompositeSubscription();
-
- private final List observables = new ArrayList<>();
-
- public RxMvpPresenter(SchedulerManager schedulerManager) {
- this.schedulerManager = schedulerManager;
- }
-
- public void pause() {
- super.pause();
- subscriptions.unsubscribe();
- subscriptions = new CompositeSubscription();
- }
-
- @Override public void subscribe(MvpView view) {
- super.subscribe(view);
- for (ObservableWithFactory> observableWithFactory : observables) {
- subscribe(observableWithFactory);
- }
- }
-
- public void destroy() {
- connectableSubscriptions.unsubscribe();
- }
-
- protected void subscribe(Observable observable, Action0 onAttach, Action1 super T> onNext, Action1 onError) {
- ConnectableObservable replay = schedulerManager.bindObservable(observable).replay();
- connectableSubscriptions.add(replay.connect());
- Func0> factory = () -> new Subscriber() {
- @Override public void onStart() {
- if (onAttach != null) {
- onAttach.call();
- }
- }
-
- @Override public void onCompleted() {
-
- }
-
- @Override public void onError(Throwable e) {
- if (onError != null) {
- onError.call(e);
- }
- }
-
- @Override public void onNext(T t) {
- if (onNext != null) {
- onNext.call(t);
- }
- }
- };
- ObservableWithFactory observableWithFactory = new ObservableWithFactory<>(replay, factory);
- observables.add(observableWithFactory);
- subscribe(observableWithFactory);
- }
-
- private void subscribe(ObservableWithFactory observableWithFactory) {
- Observable observable = observableWithFactory.observable;
- Subscriber subscriber = observableWithFactory.subscriberFactory.call();
- subscriptions.add(observable.subscribe(
- Actions.empty(),
- t -> observables.remove(observableWithFactory),
- () -> observables.remove(observableWithFactory)));
- subscriptions.add(observable.subscribe(subscriber));
- }
-
- public static class ObservableWithFactory {
- public final Observable observable;
-
- public final Func0> subscriberFactory;
-
- ObservableWithFactory(Observable observable, Func0> subscriberFactory) {
- this.observable = observable;
- this.subscriberFactory = subscriberFactory;
- }
- }
-}
\ No newline at end of file
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalItem.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalItem.java
deleted file mode 100644
index c0c5791..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalItem.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package it.cosenonjaviste.lib.mvp.utils;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import org.parceler.Parcels;
-import org.parceler.Transient;
-
-import rx.functions.Action0;
-import rx.functions.Action1;
-
-public class OptionalItem implements Parcelable {
-
- @Transient
- T object;
-
- Throwable throwable;
-
- public OptionalItem() {
- }
-
- public OptionalItem(T object) {
- this.object = object;
- }
-
- public OptionalItem(T object, Throwable throwable) {
- this.object = object;
- this.throwable = throwable;
- }
-
- public T getObject() {
- return object;
- }
-
- public void done(T object) {
- throwable = null;
- this.object = object;
- }
-
- public Throwable getThrowable() {
- return throwable;
- }
-
- public void error(Throwable throwable) {
- this.throwable = throwable;
- }
-
- public boolean isEmpty() {
- return throwable == null && object == null;
- }
-
- public boolean isError() {
- return throwable != null;
- }
-
- public boolean isValueAvalaible() {
- return !isError() && !isEmpty();
- }
-
- public OptionalItem call(Action1 action) {
- if (!isEmpty() && !isError()) {
- action.call(object);
- }
- return this;
- }
-
- public OptionalItem whenEmpty(Action0 action) {
- if (isEmpty()) {
- action.call();
- }
- return this;
- }
-
- public OptionalItem whenError(Action1 action) {
- if (isError()) {
- action.call(throwable);
- }
- return this;
- }
-
- @Override public int describeContents() {
- return 0;
- }
-
- @Override public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeParcelable(Parcels.wrap(object), 0);
- parcel.writeSerializable(throwable);
- }
-
- protected void readFromParcel(Parcel in) {
- object = Parcels.unwrap(in.readParcelable(getClass().getClassLoader()));
- throwable = (Throwable) in.readSerializable();
- }
-
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public OptionalItem createFromParcel(Parcel in) {
- OptionalItem person = new OptionalItem<>();
- person.readFromParcel(in);
- return person;
- }
-
- public OptionalItem[] newArray(int size) {
- return new OptionalItem[size];
- }
- };
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalList.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalList.java
deleted file mode 100644
index 80b8503..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/OptionalList.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package it.cosenonjaviste.lib.mvp.utils;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class OptionalList extends OptionalItem> implements Parcelable {
- public OptionalList() {
- this(new ArrayList<>());
- }
-
- public OptionalList(List object) {
- super(object);
- }
-
- public OptionalList(List object, Throwable throwable) {
- super(object, throwable);
- }
-
- @Override public boolean isEmpty() {
- return super.isEmpty() || getObject().isEmpty();
- }
-
- public int size() {
- if (isValueAvalaible()) {
- return getObject().size();
- } else {
- return 0;
- }
- }
-
- public T get(int index) {
- if (isValueAvalaible()) {
- return getObject().get(index);
- } else {
- return null;
- }
- }
-
- public void append(List object) {
- throwable = null;
- this.object.addAll(object);
- }
-
- public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
- public OptionalList createFromParcel(Parcel in) {
- OptionalList person = new OptionalList<>();
- person.readFromParcel(in);
- return person;
- }
-
- public OptionalList[] newArray(int size) {
- return new OptionalList[size];
- }
- };
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/PresenterSaverFragment.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/PresenterSaverFragment.java
deleted file mode 100644
index 54ab192..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/PresenterSaverFragment.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package it.cosenonjaviste.lib.mvp.utils;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-
-public class PresenterSaverFragment extends Fragment {
-
- private static final String TAG = PresenterSaverFragment.class.getName();
-
- private Map> presenters = new HashMap<>();
-
- public PresenterSaverFragment() {
- setRetainInstance(true);
- }
-
- public static void save(FragmentManager fragmentManager, MvpPresenter> presenter) {
- PresenterSaverFragment fragment = getPresenterSaverFragment(fragmentManager);
- fragment.presenters.put(presenter.getId(), presenter);
- }
-
- private static PresenterSaverFragment getPresenterSaverFragment(FragmentManager fragmentManager) {
- PresenterSaverFragment fragment = (PresenterSaverFragment) fragmentManager.findFragmentByTag(TAG);
- if (fragment == null) {
- fragment = new PresenterSaverFragment();
- fragmentManager.beginTransaction().add(fragment, TAG).commit();
- }
- return fragment;
- }
-
- public static > P load(FragmentManager fragmentManager, long id) {
- if (id != 0) {
- PresenterSaverFragment fragment = getPresenterSaverFragment(fragmentManager);
- return (P) fragment.presenters.get(id);
- } else {
- return null;
- }
- }
-
- @Override public void onDestroy() {
- super.onDestroy();
- for (MvpPresenter> presenter : presenters.values()) {
- presenter.destroy();
- }
- }
-}
diff --git a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/SchedulerManager.java b/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/SchedulerManager.java
deleted file mode 100644
index 66814b0..0000000
--- a/androidMvp/src/main/java/it/cosenonjaviste/lib/mvp/utils/SchedulerManager.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package it.cosenonjaviste.lib.mvp.utils;
-
-import rx.Observable;
-import rx.Scheduler;
-import rx.schedulers.Schedulers;
-
-import static rx.android.schedulers.AndroidSchedulers.mainThread;
-
-public class SchedulerManager {
- public static Scheduler io = Schedulers.io();
-
- public static Observable background(Observable observable) {
- return observable.subscribeOn(io).observeOn(mainThread());
- }
-
- public static void setIo(Scheduler io) {
- SchedulerManager.io = io;
- }
-
- public Observable bindObservable(Observable observable) {
- return background(observable);
- }
-}
diff --git a/app/build.gradle b/app/build.gradle
index 0c9255a..1e89460 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,23 +1,24 @@
repositories {
mavenCentral()
+ maven { url 'https://maven.fabric.io/public' }
}
buildscript {
repositories {
mavenCentral()
+ maven { url 'https://maven.fabric.io/public' }
}
dependencies {
- classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x'
+ classpath 'io.fabric.tools:gradle:1.+'
}
}
apply plugin: 'com.android.application'
+apply plugin: 'io.fabric'
apply plugin: 'me.tatarka.retrolambda'
-apply plugin: 'com.neenbedankt.android-apt'
-
apply plugin: "jacoco"
apply plugin: 'com.github.kt3k.coveralls'
@@ -28,11 +29,11 @@ retrolambda {
}
jacoco {
- toolVersion = "0.7.2.201409121644"
+ toolVersion = "0.7.5.201505241946"
}
-coveralls.jacocoReportPath = 'build/reports/jacoco/jacocoTestReport/jacocoTestReport.xml'
+coveralls.jacocoReportPath = 'build/reports/jacoco/jacocoUnitTestReport/jacocoUnitTestReport.xml'
android {
compileOptions {
@@ -41,22 +42,24 @@ android {
}
jacoco {
- version = '0.7.2.201409121644'
+ version = '0.7.5.201505241946'
}
- compileSdkVersion 21
- buildToolsVersion "21.1.2"
+ compileSdkVersion 25
+ buildToolsVersion '25.0.2'
defaultConfig {
applicationId "it.cosenonjaviste"
minSdkVersion 14
- targetSdkVersion 21
- versionCode 11
- versionName "2.0"
+ targetSdkVersion 25
+ versionCode 14
+ versionName "2.1.2"
buildConfigField "String", "CONSUMER_KEY", project.oauth_consumerKey
buildConfigField "String", "CONSUMER_SECRET", project.oauth_consumerSecret
buildConfigField "String", "ACCESS_TOKEN", project.oauth_accessToken
buildConfigField "String", "ACCESS_TOKEN_SECRET", project.oauth_accessTokenSecret
+ buildConfigField "String", "MAILJET_USERNAME", project.mailjet_userName
+ buildConfigField "String", "MAILJET_PASSWORD", project.mailJetPassword
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
@@ -72,44 +75,87 @@ android {
exclude 'META-INF/services/javax.annotation.processing.Processor'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
+ exclude 'META-INF/rxjava.properties'
exclude 'LICENSE.txt'
}
lintOptions {
abortOnError false
}
+ sourceSets {
+ androidTest.java.srcDirs = ['src/androidTest/java', 'src/sharedTest/java']
+ test.java.srcDirs = ['src/test/java', 'src/sharedTest/java']
+ }
+ dataBinding {
+ enabled = true
+ }
}
dependencies {
- compile project(':androidMvp')
- compile project(':SuperListviewLibrary')
- compile 'com.squareup.okhttp:okhttp:2.0.0'
- compile 'com.squareup.retrofit:retrofit:1.9.0'
- compile 'com.google.dagger:dagger:2.0'
- compile 'org.twitter4j:twitter4j-core:4.0.2'
- compile 'com.android.support:cardview-v7:21.0.3'
- compile 'io.reactivex:rxandroid-framework:0.24.0'
- compile 'com.jakewharton:butterknife:6.1.0'
+ annotationProcessor 'com.github.fabioCollini.lifecyclebinder:lifecyclebinder-processor:0.3.3'
+ compile 'com.github.fabioCollini.lifecyclebinder:lifecyclebinder-lib:0.3.3'
+ compile 'com.squareup.okhttp3:okhttp:3.6.0'
+ compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
+ compile 'io.reactivex.rxjava2:rxjava:2.0.8'
+ compile 'com.android.support:cardview-v7:25.3.1'
compile 'com.squareup.picasso:picasso:2.5.0'
+ compile 'com.android.support:recyclerview-v7:25.3.1'
+ compile 'com.android.support:design:25.3.1'
+ compile 'com.google.dagger:dagger:2.10'
compile 'org.glassfish:javax.annotation:10.0-b28'
- apt 'com.google.dagger:dagger-compiler:2.0'
- apt 'org.parceler:parceler:0.2.14'
+ annotationProcessor 'com.google.dagger:dagger-compiler:2.10'
+ compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.2'
+ annotationProcessor 'com.hannesdorfmann.parcelableplease:processor:1.0.2'
+ provided 'com.google.auto.value:auto-value:1.3'
+ annotationProcessor 'com.google.auto.value:auto-value:1.3'
+ annotationProcessor 'com.ryanharter.auto.value:auto-value-gson:0.4.5'
+ provided 'com.ryanharter.auto.value:auto-value-gson:0.4.5'
+ annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'
+ compile 'com.ryanharter.auto.value:auto-value-parcel-adapter:0.2.5'
+
+ compile 'com.squareup.retrofit2:retrofit:2.2.0'
+ compile 'com.squareup.retrofit2:converter-gson:2.1.0'
+ compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
+ compile 'org.twitter4j:twitter4j-core:4.0.2'
+ compile 'com.annimon:stream:1.0.3'
+
+ compile 'com.nytimes.android:store2:0.0.1-SNAPSHOT'
+ compile 'com.nytimes.android:cache:0.0.1-SNAPSHOT'
+ compile 'com.nytimes.android:middleware2:0.0.1-SNAPSHOT'
+ compile 'com.nytimes.android:filesystem2:0.0.1-SNAPSHOT'
+
+// debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
+ debugCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
+ releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
+
+ testCompile 'junit:junit:4.12'
+ testCompile 'org.mockito:mockito-core:1.9.5'
+ testCompile 'org.assertj:assertj-core:1.7.0'
+ testCompile 'com.github.fabioCollini:DaggerMock:0.6.3'
- androidTestApt 'com.google.dagger:dagger-compiler:2.0'
- androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
- androidTestCompile('com.google.dexmaker:dexmaker-mockito:1.0') {
+ androidTestCompile 'com.github.fabioCollini:DaggerMock:0.6.3'
+ androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
+ androidTestCompile('com.google.dexmaker:dexmaker-mockito:1.2') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
androidTestCompile 'com.squareup.spoon:spoon-client:1.0.5'
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.0') {
+ androidTestCompile 'com.android.support.test:runner:0.5'
+ androidTestCompile 'com.android.support.test:rules:0.5'
+ androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'javax.inject', module: 'javax.inject'
exclude group: 'com.squareup', module: 'javawriter'
}
- androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
- androidTestCompile 'com.squareup.okhttp:mockwebserver:2.0.0'
-
- testCompile 'junit:junit:4.12'
- testCompile 'org.mockito:mockito-core:1.9.5'
- testCompile 'org.assertj:assertj-core:1.7.0'
+ androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') {
+ exclude group: 'com.android.support', module: 'support-v4'
+ exclude group: 'com.android.support', module: 'appcompat-v7'
+ exclude group: 'com.android.support', module: 'design'
+ exclude group: 'com.android.support', module: 'recyclerview-v7'
+ exclude group: 'com.android.support.test.espresso', module: 'espresso-core'
+ }
+ androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.2'
+ androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.6.0'
+ compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') {
+ transitive = true;
+ }
}
// Define coverage source.
@@ -126,19 +172,23 @@ task jacocoUnitTestReport(type: JacocoReport) {
xml.enabled = true // coveralls plugin depends on xml format report
html.enabled = true
}
- // class R is used, but usage will not be covered, so ignore this class from report
- // This differs per plugin version (0.10 -> 0.11)
- // have very different fileTrees.
- // I have added rules to Ignore Dagger/Butterknife
classDirectories = fileTree(
dir: './build/intermediates/classes/debug',
- excludes: ['it/cosenonjaviste/R*.class',
- '**/*$InjectAdapter.class',
- '**/*$ModuleAdapter.class',
- '**/*$ViewInjector*.class'
+ excludes: ['**/R.class',
+ '**/R$*.class',
+ '**/BR.class',
+ '**/BuildConfig.class',
+ 'it/cosenonjaviste/databinding/**/*.class',
+ 'com/android/**/*.class',
+ 'android/**/*.class',
+ '**/*_MembersInjector.class',
+ '**/*_Factory.class',
+ '**/*_Provide*.class',
+ '**/*ParcelablePlease.class',
+ 'it/cosenonjaviste/ui/**/*.class',
])
sourceDirectories = files(coverageSourceDirs)
- executionData = files('build/jacoco/testDebug.exec')
+ executionData = files('build/jacoco/testDebugUnitTest.exec')
// Bit hacky but fixes https://code.google.com/p/android/issues/detail?id=69174.
// We iterate through the compiled .class tree and rename $$ to $.
doFirst {
@@ -148,17 +198,13 @@ task jacocoUnitTestReport(type: JacocoReport) {
}
}
}
- afterEvaluate {
- // just clean up coveralls dashboard, following reports are not of interest
- testDebug.reports.junitXml.enabled = false
- }
}
task mergeTestCodeCoverageResults(type: JacocoMerge) {
description = 'Merge test code coverage results from junit and instrumentation test'
destinationFile = file("build/outputs/code-coverage/merged-coverage.exec")
doFirst {delete destinationFile}
- executionData = files('build/outputs/code-coverage/connected/coverage.ec', 'build/jacoco/testDebug.exec')
+ executionData = files('build/outputs/code-coverage/connected/coverage.ec', 'build/jacoco/testDebugUnitTest.exec')
}
task jacocoTestReport(type: JacocoReport) {
@@ -169,23 +215,22 @@ task jacocoTestReport(type: JacocoReport) {
html.enabled = true
}
classDirectories = fileTree(
- dir: 'build/intermediates/classes',
+ dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
- '**/BuildConfig.*',
- '**/Manifest*.*',
- '**/*$InjectAdapter.class',
- '**/*$ModuleAdapter.class',
- '**/*$ViewInjector*.class',
- '**/*$Provide*.class',
- '**/*Parceler$*.class',
- '**/*$Parcelable*.class',
- '**/androidtest/**/*.class'
- ]
- )
+ '**/BR.class',
+ '**/BuildConfig.class',
+ 'it/cosenonjaviste/databinding/**/*.class',
+ 'com/android/**/*.class',
+ 'android/**/*.class',
+ '**/*_MembersInjector.class',
+ '**/*_Factory.class',
+ '**/*_Provide*.class',
+ '**/*ParcelablePlease.class'
+ ])
sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
- executionData = files('build/outputs/code-coverage/merged-coverage.exec')
+ executionData = files('build/outputs/code-coverage/connected/coverage.ec')
// Bit hacky but fixes https://code.google.com/p/android/issues/detail?id=69174.
// We iterate through the compiled .class tree and rename $$ to $.
doFirst {
diff --git a/app/gradle.properties b/app/gradle.properties
index 0facf18..b344a2f 100644
--- a/app/gradle.properties
+++ b/app/gradle.properties
@@ -1,4 +1,6 @@
oauth_consumerKey="123"
oauth_consumerSecret="456"
oauth_accessToken="789"
-oauth_accessTokenSecret="012"
\ No newline at end of file
+oauth_accessTokenSecret="012"
+mailjet_userName=""
+mailJetPassword=""
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/AuthorListTest.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/AuthorListTest.java
deleted file mode 100644
index cbfbaa6..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/AuthorListTest.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package it.cosenonjaviste.androidtest;
-
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-import org.junit.runner.RunWith;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.TestData;
-import it.cosenonjaviste.androidtest.base.DaggerRule;
-import it.cosenonjaviste.androidtest.base.FragmentRule;
-import it.cosenonjaviste.author.AuthorListFragment;
-import it.cosenonjaviste.author.AuthorListModel;
-import it.cosenonjaviste.model.WordPressService;
-
-import static org.mockito.Mockito.when;
-
-@RunWith(AndroidJUnit4.class)
-public class AuthorListTest {
-
- @Inject WordPressService wordPressService;
-
- private final FragmentRule fragmentRule = FragmentRule.create(AuthorListFragment.class, new AuthorListModel());
-
- private final DaggerRule daggerRule = new DaggerRule(component -> {
- component.inject(this);
- when(wordPressService.listAuthors())
- .thenReturn(TestData.authorResponse(2));
- });
-
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
-
- @Test
- public void testAuthorList() {
-// showUi();
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/CategoryListTest.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/CategoryListTest.java
deleted file mode 100644
index 1eddee7..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/CategoryListTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package it.cosenonjaviste.androidtest;
-
-import org.junit.Rule;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.TestData;
-import it.cosenonjaviste.androidtest.base.DaggerRule;
-import it.cosenonjaviste.androidtest.base.FragmentRule;
-import it.cosenonjaviste.author.AuthorListFragment;
-import it.cosenonjaviste.author.AuthorListModel;
-import it.cosenonjaviste.model.WordPressService;
-
-import static org.mockito.Mockito.when;
-
-public class CategoryListTest {
-
- @Inject WordPressService wordPressService;
-
- private final FragmentRule fragmentRule = FragmentRule.create(AuthorListFragment.class, new AuthorListModel());
-
- private final DaggerRule daggerRule = new DaggerRule(component -> {
- component.inject(this);
- when(wordPressService.listCategories())
- .thenReturn(TestData.categoryResponse(3));
- });
-
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
-
- public void testCategoryList() throws InterruptedException {
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/MainActivityTest.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/MainActivityTest.java
deleted file mode 100644
index faba389..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/MainActivityTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package it.cosenonjaviste.androidtest;
-
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-import org.junit.runner.RunWith;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.MainActivity;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.TestData;
-import it.cosenonjaviste.androidtest.base.ActivityRule;
-import it.cosenonjaviste.androidtest.base.DaggerRule;
-import it.cosenonjaviste.androidtest.base.MockWebServerWrapper;
-import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.model.WordPressService;
-
-import static android.support.test.espresso.Espresso.onData;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withClassName;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.hamcrest.Matchers.endsWith;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.mockito.Matchers.anyInt;
-import static org.mockito.Matchers.anyLong;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.when;
-
-@RunWith(AndroidJUnit4.class)
-public class MainActivityTest {
- @Inject WordPressService wordPressService;
-
- @Inject MockWebServerWrapper server;
-
- @Inject TwitterService twitterService;
-
- private final ActivityRule fragmentRule = new ActivityRule<>(MainActivity.class);
-
- private final DaggerRule daggerRule = new DaggerRule(component -> {
- component.inject(this);
-
- when(wordPressService.listPosts(eq(1)))
- .thenReturn(TestData.postResponse(10));
- when(wordPressService.listCategories())
- .thenReturn(TestData.categoryResponse(3));
- when(wordPressService.listAuthors())
- .thenReturn(TestData.authorResponse(2));
- when(wordPressService.listAuthorPosts(anyLong(), anyInt()))
- .thenReturn(TestData.postResponse(1));
-
- when(twitterService.loadTweets(eq(1)))
- .thenReturn(TestData.tweets());
-
- server.initDispatcher("CoseNonJaviste");
- });
-
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
-
- @Test public void showMainActivity() {
- }
-
- @Test public void showCategories() {
- clickOnDrawer(1);
- onView(withText("cat 0")).check(matches(isDisplayed()));
- }
-
- @Test public void showAuthors() {
- clickOnDrawer(2);
- onView(withText("name 0")).check(matches(isDisplayed()));
- }
-
- @Test public void showTweets() {
- clickOnDrawer(3);
- onView(withText("tweet text 1")).check(matches(isDisplayed()));
- }
-
- @Test public void showContactForm() {
- clickOnDrawer(4);
- }
-
- private void clickOnDrawer(int position) {
- onView(withClassName(endsWith("ImageButton"))).perform(click());
- try {
- Thread.sleep(500);
- } catch (InterruptedException ignored) {
- }
- onData(is(instanceOf(String.class))).inAdapterView(withId(R.id.left_drawer))
- .atPosition(position).perform(click());
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/PageTest.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/PageTest.java
deleted file mode 100644
index 4b29889..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/PageTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package it.cosenonjaviste.androidtest;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.androidtest.base.DaggerRule;
-import it.cosenonjaviste.androidtest.base.FragmentRule;
-import it.cosenonjaviste.androidtest.base.MockWebServerWrapper;
-import it.cosenonjaviste.page.PageFragment;
-import it.cosenonjaviste.page.PageModel;
-
-public class PageTest {
-
- @Inject MockWebServerWrapper server;
-
- private final FragmentRule fragmentRule = FragmentRule.create(PageFragment.class, new PageModel("url"));
-
- private final DaggerRule daggerRule = new DaggerRule(component -> {
- component.inject(this);
- server.initDispatcher("CoseNonJaviste");
- });
-
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
-
- @Test public void testDetailFragment() {
-// showUi();
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/PostListTest.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/PostListTest.java
deleted file mode 100644
index c7458d3..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/PostListTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package it.cosenonjaviste.androidtest;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.TestData;
-import it.cosenonjaviste.androidtest.base.DaggerRule;
-import it.cosenonjaviste.androidtest.base.FragmentRule;
-import it.cosenonjaviste.model.Post;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.post.PostListFragment;
-import it.cosenonjaviste.post.PostListModel;
-
-import static android.support.test.espresso.Espresso.onData;
-import static android.support.test.espresso.Espresso.onView;
-import static android.support.test.espresso.action.ViewActions.click;
-import static android.support.test.espresso.assertion.ViewAssertions.matches;
-import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
-import static android.support.test.espresso.matcher.ViewMatchers.withId;
-import static android.support.test.espresso.matcher.ViewMatchers.withText;
-import static org.hamcrest.Matchers.instanceOf;
-import static org.hamcrest.Matchers.is;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.when;
-
-public class PostListTest {
-
- @Inject WordPressService wordPressService;
-
- private final FragmentRule fragmentRule = FragmentRule.create(PostListFragment.class, new PostListModel());
-
- private final DaggerRule daggerRule = new DaggerRule(component -> {
- component.inject(this);
- when(wordPressService.listPosts(eq(1)))
- .thenReturn(TestData.postResponse(0, 10));
- when(wordPressService.listPosts(eq(2)))
- .thenReturn(TestData.postResponse(10, 10));
- });
-
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
-
- @Test public void testPostList() throws InterruptedException {
- onView(withText("post title 1")).check(matches(isDisplayed()));
- }
-
- @Test public void testGoToPostDetail() {
- onData(is(instanceOf(Post.class))).inAdapterView(withId(android.R.id.list))
- .atPosition(3).perform(click());
- }
-
- @Test public void testLoadMore() {
- onData(is(instanceOf(Post.class))).inAdapterView(withId(android.R.id.list))
- .atPosition(9).check(matches(isDisplayed()));
- onView(withText("post title 10")).check(matches(isDisplayed()));
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/ActivityRule.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/ActivityRule.java
deleted file mode 100644
index a39fd0a..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/ActivityRule.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2015 Jake Wharton
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package it.cosenonjaviste.androidtest.base;
-
-import android.app.Activity;
-import android.app.Instrumentation;
-import android.content.Intent;
-import android.support.test.InstrumentationRegistry;
-
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-/**
- * A JUnit {@link Rule @Rule} which launches an activity when your test starts. Stop extending
- * gross {@code ActivityInstrumentationBarfCase2}!
- *
- * Usage:
- *
{@code
- * @Rule
- * public final ActivityRule example =
- * new ActivityRule<>(ExampleActivity.class);
- * }
- *
- * This will automatically launch the activity for each test method. The instance will also be
- * created sooner should you need to use it in a {@link Before @Before} method.
- *
- * You can also customize the way in which the activity is launched by overriding
- * {@link #getLaunchIntent(String, Class)} and customizing or replacing the {@link Intent}.
- *
{@code
- * @Rule
- * public final ActivityRule example =
- * new ActivityRule(ExampleActivity.class) {
- * @Override
- * protected Intent getLaunchIntent(String packageName, Class activityClass) {
- * Intent intent = super.getLaunchIntent(packageName, activityClass);
- * intent.putExtra("Hello", "World!");
- * return intent;
- * }
- * };
- * }
- */
-public class ActivityRule implements TestRule {
- private final Class activityClass;
-
- private T activity;
- private Instrumentation instrumentation;
-
- public ActivityRule(Class activityClass) {
- this.activityClass = activityClass;
- }
-
- protected Intent getLaunchIntent(String targetPackage, Class activityClass) {
- Intent intent = new Intent(Intent.ACTION_MAIN);
- intent.setClassName(targetPackage, activityClass.getName());
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- return intent;
- }
-
- /**
- * Get the running instance of the specified activity. This will launch it if it is not already
- * running.
- */
- public final T get() {
- launchActivity();
- return activity;
- }
-
- /** Get the {@link Instrumentation} instance for this test. */
- public final Instrumentation instrumentation() {
- launchActivity();
- return instrumentation;
- }
-
- @Override public final Statement apply(final Statement base, Description description) {
- return new Statement() {
- @Override public void evaluate() throws Throwable {
- launchActivity();
-
- base.evaluate();
-
- if (!activity.isFinishing()) {
- activity.finish();
- }
- activity = null; // Eager reference kill in case someone leaked our reference.
- }
- };
- }
-
- private Instrumentation fetchInstrumentation() {
- Instrumentation result = instrumentation;
- return result != null ? result
- : (instrumentation = InstrumentationRegistry.getInstrumentation());
- }
-
- @SuppressWarnings("unchecked") // Guarded by generics at the constructor.
- private void launchActivity() {
- if (activity != null) return;
-
- Instrumentation instrumentation = fetchInstrumentation();
-
- String targetPackage = instrumentation.getTargetContext().getPackageName();
- Intent intent = getLaunchIntent(targetPackage, activityClass);
-
- activity = (T) instrumentation.startActivitySync(intent);
- instrumentation.waitForIdleSync();
- }
-}
\ No newline at end of file
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerRule.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerRule.java
deleted file mode 100644
index 5419664..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerRule.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package it.cosenonjaviste.androidtest.base;
-
-import org.junit.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-import org.mockito.MockitoAnnotations;
-
-import it.cosenonjaviste.CoseNonJavisteApp;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import rx.functions.Action1;
-import rx.schedulers.Schedulers;
-
-import static android.support.test.espresso.Espresso.registerIdlingResources;
-
-public class DaggerRule implements TestRule {
-
- private Action1 afterInjectAction;
-
- public DaggerRule(Action1 afterInjectAction) {
- this.afterInjectAction = afterInjectAction;
- }
-
- @Override public Statement apply(Statement base, Description description) {
- return new Statement() {
- @Override public void evaluate() throws Throwable {
-
- setupDexmaker();
-
- //TODO
- MockitoAnnotations.initMocks(this);
-
- final EspressoExecutor espressoExecutor = EspressoExecutor.newCachedThreadPool();
-
- TestComponent component = DaggerUtils.getComponent();
- if (afterInjectAction != null) {
- afterInjectAction.call(component);
- }
- CoseNonJavisteApp.component = component;
-
-// ObjectGraphHolder.forceObjectGraphCreator(app -> {
-// Object[] modules = mergeArrays(app.getModules(), new Object[]{testModule});
-// ObjectGraph objectGraph = ObjectGraph.create(modules);
-// if (afterInjectAction != null) {
-// afterInjectAction.call(objectGraph);
-// }
-// return objectGraph;
-// });
-
- registerIdlingResources(espressoExecutor);
-
- SchedulerManager.setIo(Schedulers.from(espressoExecutor));
-
- base.evaluate();
-
- }
- };
- }
-
- /**
- * Workaround for Mockito and JB-MR2 incompatibility to avoid
- * java.lang.IllegalArgumentException: dexcache == null
- *
- * @see
- * https://code.google.com/p/dexmaker/issues/detail?id=2
- */
- private void setupDexmaker() {
-// // Explicitly set the Dexmaker cache, so tests that use mockito work
-// final String dexCache = getInstrumentation().getTargetContext().getCacheDir().getPath();
-// System.setProperty("dexmaker.dexcache", dexCache);
- }
-
- private Object[] mergeArrays(Object[] appModules, Object[] testModules) {
- Object[] modules = new Object[testModules.length + appModules.length];
- System.arraycopy(appModules, 0, modules, 0, appModules.length);
- System.arraycopy(testModules, 0, modules, appModules.length, testModules.length);
- return modules;
- }
-
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerUtils.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerUtils.java
deleted file mode 100644
index 9163503..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/DaggerUtils.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package it.cosenonjaviste.androidtest.base;
-
-public class DaggerUtils {
- public static TestComponent getComponent() {
- return DaggerTestComponent.builder().build();
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/EspressoExecutor.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/EspressoExecutor.java
deleted file mode 100644
index 010b11b..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/EspressoExecutor.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package it.cosenonjaviste.androidtest.base;
-
-import android.support.test.espresso.IdlingResource;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-public class EspressoExecutor extends ThreadPoolExecutor implements IdlingResource {
-
- private int runningTasks;
- private ResourceCallback resourceCallback;
-
- private static EspressoExecutor singleton;
-
- public EspressoExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue) {
- super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
- }
-
- public static EspressoExecutor newCachedThreadPool() {
- if (singleton == null) {
- singleton = new EspressoExecutor(0, Integer.MAX_VALUE,
- 60L, TimeUnit.SECONDS,
- new SynchronousQueue());
- }
- return singleton;
- }
-
- @Override public void execute(final Runnable command) {
- super.execute(new Runnable() {
- @Override public void run() {
- try {
- incrementRunningTasks();
- command.run();
- } finally {
- decrementRunningTasks();
- }
- }
- });
- }
-
- private synchronized void decrementRunningTasks() {
- runningTasks--;
- if (runningTasks == 0 && resourceCallback != null) {
- resourceCallback.onTransitionToIdle();
- }
- }
-
- private synchronized void incrementRunningTasks() {
- runningTasks++;
- }
-
- @Override public String getName() {
- return "EspressoExecutor";
- }
-
- @Override public boolean isIdleNow() {
- return runningTasks == 0;
- }
-
- @Override
- public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
- this.resourceCallback = resourceCallback;
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/FragmentRule.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/FragmentRule.java
index 8ff73ad..68f9a47 100644
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/FragmentRule.java
+++ b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/FragmentRule.java
@@ -1,32 +1,43 @@
package it.cosenonjaviste.androidtest.base;
+import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.rule.ActivityTestRule;
+import android.support.v4.app.Fragment;
-import org.parceler.Parcels;
+import it.cosenonjaviste.core.base.ViewModel;
+import it.cosenonjaviste.ui.utils.SingleFragmentActivity;
-import it.cosenonjaviste.lib.mvp.MvpFragment;
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.utils.SingleFragmentActivity;
+public class FragmentRule extends ActivityTestRule {
+ private Class extends Fragment> fragmentClass;
-public class FragmentRule extends ActivityRule {
-
- private final Class extends MvpView>> viewClass;
+ public FragmentRule(Class extends Fragment> fragmentClass) {
+ super(SingleFragmentActivity.class, false, false);
+ this.fragmentClass = fragmentClass;
+ }
- private Object model;
+ public SingleFragmentActivity launchFragment() {
+ return launchFragment(null);
+ }
- public static FragmentRule create(Class extends MvpView> viewClass, M model) {
- return new FragmentRule(viewClass, model);
+ public void launchFragment(Parcelable model) {
+ Bundle bundle = new Bundle();
+ bundle.putParcelable(ViewModel.MODEL, model);
+ launchFragment(bundle);
}
- private FragmentRule(Class extends MvpView>> viewClass, Object model) {
- super(SingleFragmentActivity.class);
- this.viewClass = viewClass;
- this.model = model;
+ public SingleFragmentActivity launchFragment(Bundle b) {
+ Intent intent = SingleFragmentActivity.populateIntent(new Intent(), fragmentClass);
+ if (b != null) {
+ intent.putExtras(b);
+ }
+ return launchActivity(intent);
}
- @Override protected Intent getLaunchIntent(String targetPackage, Class activityClass) {
- Intent intent = SingleFragmentActivity.populateIntent(super.getLaunchIntent(targetPackage, activityClass), viewClass);
- intent.putExtra(MvpFragment.MODEL, Parcels.wrap(model));
- return intent;
+ public T getApplication() {
+ return (T) InstrumentationRegistry.getTargetContext().getApplicationContext();
}
}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MockWebServerWrapper.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MockWebServerWrapper.java
index 8301895..7910f2d 100644
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MockWebServerWrapper.java
+++ b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MockWebServerWrapper.java
@@ -1,34 +1,30 @@
package it.cosenonjaviste.androidtest.base;
-import com.squareup.okhttp.mockwebserver.Dispatcher;
-import com.squareup.okhttp.mockwebserver.MockResponse;
-import com.squareup.okhttp.mockwebserver.MockWebServer;
-import com.squareup.okhttp.mockwebserver.RecordedRequest;
import java.io.IOException;
import java.util.LinkedList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.function.Function;
-import javax.inject.Inject;
-import javax.inject.Singleton;
+import okhttp3.mockwebserver.Dispatcher;
+import okhttp3.mockwebserver.MockResponse;
+import okhttp3.mockwebserver.MockWebServer;
+import okhttp3.mockwebserver.RecordedRequest;
-import rx.functions.Func1;
-
-@Singleton
public class MockWebServerWrapper {
private static MockWebServer server;
private static LinkedList requests = new LinkedList<>();
- private static Func1 dispatchFunction;
+ private static Function dispatchFunction;
- @Inject public MockWebServerWrapper() {
+ public MockWebServerWrapper() {
if (server == null) {
server = new MockWebServer();
try {
- server.play();
+ server.start();
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -36,7 +32,7 @@ public class MockWebServerWrapper {
}
}
- public static void initDispatcher(Func1 dispatchFunction) {
+ public static void initDispatcher(Function dispatchFunction) {
MockWebServerWrapper.dispatchFunction = dispatchFunction;
}
@@ -49,7 +45,7 @@ private void initDispatcher() {
server.setDispatcher(new Dispatcher() {
@Override public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
requests.add(request);
- return dispatchFunction.call(request);
+ return dispatchFunction.apply(request);
}
});
}
@@ -68,7 +64,7 @@ public String getUrl(boolean initInBackgroundThread) {
}
private String getUrlSync() {
- return server.getUrl("/").toString();
+ return server.url("/").toString();
}
public void shutdown() {
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MvpEspressoTestModule.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MvpEspressoTestModule.java
deleted file mode 100644
index 74cb1da..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/MvpEspressoTestModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package it.cosenonjaviste.androidtest.base;
-
-import org.mockito.Mockito;
-
-import javax.inject.Singleton;
-
-import dagger.Module;
-import dagger.Provides;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.page.PageUrlManager;
-
-@Module
-public class MvpEspressoTestModule {
-
- @Provides @Singleton WordPressService provideWordPressService(MockWebServerWrapper mockWebServer) {
- return Mockito.mock(WordPressService.class);
- }
-
- @Provides @Singleton SchedulerManager provideSchedulerManager() {
- return new SchedulerManager();
- }
-
- @Provides @Singleton PageUrlManager providePostDetailUrlManager(MockWebServerWrapper server) {
- return new PageUrlManager() {
- @Override public String getUrl(String url) {
- return server.getUrl(true) + url;
- }
- };
- }
-
- @Provides @Singleton TwitterService provideTwitterService() {
- return Mockito.mock(TwitterService.class);
- }
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/OrientationChangeAction.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/OrientationChangeAction.java
new file mode 100644
index 0000000..988a44a
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/OrientationChangeAction.java
@@ -0,0 +1,80 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 - Nathan Barraille
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ */
+package it.cosenonjaviste.androidtest.base;
+
+import android.app.Activity;
+import android.content.pm.ActivityInfo;
+import android.support.test.espresso.UiController;
+import android.support.test.espresso.ViewAction;
+import android.support.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
+import android.support.test.runner.lifecycle.Stage;
+import android.view.View;
+
+import org.hamcrest.Matcher;
+
+import java.util.Collection;
+
+import static android.support.test.espresso.matcher.ViewMatchers.isRoot;
+
+/**
+ * An Espresso ViewAction that changes the orientation of the screen
+ */
+public class OrientationChangeAction implements ViewAction {
+ private final int orientation;
+
+ private OrientationChangeAction(int orientation) {
+ this.orientation = orientation;
+ }
+
+ @Override
+ public Matcher getConstraints() {
+ return isRoot();
+ }
+
+ @Override
+ public String getDescription() {
+ return "change orientation to " + orientation;
+ }
+
+ @Override
+ public void perform(UiController uiController, View view) {
+ uiController.loopMainThreadUntilIdle();
+ final Activity activity = (Activity) view.getContext();
+ activity.setRequestedOrientation(orientation);
+
+ Collection resumedActivities = ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(Stage.RESUMED);
+ if (resumedActivities.isEmpty()) {
+ throw new RuntimeException("Could not change orientation");
+ }
+ }
+
+ public static ViewAction orientationLandscape() {
+ return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+ }
+
+ public static ViewAction orientationPortrait() {
+ return new OrientationChangeAction(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+ }
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/TestComponent.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/TestComponent.java
deleted file mode 100644
index 7e12514..0000000
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/base/TestComponent.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package it.cosenonjaviste.androidtest.base;
-
-import javax.inject.Singleton;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.BaseModule;
-import it.cosenonjaviste.androidtest.AuthorListTest;
-import it.cosenonjaviste.androidtest.CategoryListTest;
-import it.cosenonjaviste.androidtest.MainActivityTest;
-import it.cosenonjaviste.androidtest.PageTest;
-import it.cosenonjaviste.androidtest.PostListTest;
-import it.cosenonjaviste.androidtest.TweetListTest;
-
-@Singleton
-@Component(modules = {MvpEspressoTestModule.class, BaseModule.class})
-public interface TestComponent extends ApplicationComponent {
-
- void inject(AuthorListTest authorListTest);
-
- void inject(MainActivityTest mainActivityTest);
-
- void inject(PageTest pageTest);
-
- void inject(CategoryListTest categoryListTest);
-
- void inject(PostListTest postListTest);
-
- void inject(TweetListTest tweetListTest);
-}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/utils/TestUtils.java b/app/src/androidTest/java/it/cosenonjaviste/androidtest/utils/TestUtils.java
new file mode 100644
index 0000000..d07329b
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/androidtest/utils/TestUtils.java
@@ -0,0 +1,18 @@
+package it.cosenonjaviste.androidtest.utils;
+
+
+import com.annimon.stream.function.Consumer;
+
+public class TestUtils {
+
+ public static Consumer sleepAction() {
+ return o -> sleep(1);
+ }
+
+ public static void sleep(int seconds) {
+// try {
+// Thread.sleep(seconds * 1000);
+// } catch (InterruptedException ignored) {
+// }
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/CnjDaggerRule.java b/app/src/androidTest/java/it/cosenonjaviste/ui/CnjDaggerRule.java
new file mode 100644
index 0000000..663128a
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/CnjDaggerRule.java
@@ -0,0 +1,48 @@
+package it.cosenonjaviste.ui;
+
+import android.os.AsyncTask;
+import android.support.test.InstrumentationRegistry;
+
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.Statement;
+
+import io.reactivex.Scheduler;
+import io.reactivex.plugins.RxJavaPlugins;
+import io.reactivex.schedulers.Schedulers;
+import it.cosenonjaviste.daggermock.DaggerMockRule;
+import it.cosenonjaviste.model.TwitterService;
+import it.cosenonjaviste.model.WordPressService;
+
+public class CnjDaggerRule extends DaggerMockRule {
+ public CnjDaggerRule() {
+ super(ApplicationComponent.class, new AppModule(getApp()));
+ providesMock(WordPressService.class, TwitterService.class);
+ set(component -> getApp().setComponent(component));
+ }
+
+ public static CoseNonJavisteApp getApp() {
+ return (CoseNonJavisteApp) InstrumentationRegistry.getInstrumentation().getTargetContext().getApplicationContext();
+ }
+
+ @Override public Statement apply(Statement base, FrameworkMethod method, Object target) {
+ Statement superStatement = super.apply(base, method, target);
+ Scheduler asyncTaskScheduler =
+ Schedulers.from(AsyncTask.THREAD_POOL_EXECUTOR);
+ return new Statement() {
+ @Override public void evaluate() throws Throwable {
+ RxJavaPlugins.setIoSchedulerHandler(
+ scheduler -> asyncTaskScheduler);
+ RxJavaPlugins.setComputationSchedulerHandler(
+ scheduler -> asyncTaskScheduler);
+ RxJavaPlugins.setNewThreadSchedulerHandler(
+ scheduler -> asyncTaskScheduler);
+
+ try {
+ superStatement.evaluate();
+ } finally {
+ RxJavaPlugins.reset();
+ }
+ }
+ };
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/MainActivityTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/MainActivityTest.java
new file mode 100644
index 0000000..94f7455
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/MainActivityTest.java
@@ -0,0 +1,63 @@
+package it.cosenonjaviste.ui;
+
+//@RunWith(AndroidJUnit4.class)
+public class MainActivityTest {
+// @Inject WordPressService wordPressService;
+//
+// @Inject MockWebServerWrapper server;
+//
+// @Inject TwitterService twitterService;
+//
+// @Rule public ActivityTestRule activityRule = new ActivityTestRule<>(MainActivity.class, false, false);
+//
+// @Before public void setUp() {
+// DaggerUtils.createTestComponent().inject(this);
+//
+// when(wordPressService.listPosts(eq(1)))
+// .thenReturn(TestData.postResponse(10));
+// when(wordPressService.listCategories())
+// .thenReturn(TestData.categoryResponse(3));
+// when(wordPressService.listAuthors())
+// .thenReturn(TestData.authorResponse(2));
+// when(wordPressService.listAuthorPosts(anyLong(), anyInt()))
+// .thenReturn(TestData.postResponse(1));
+//
+// when(twitterService.loadTweets(eq(1)))
+// .thenReturn(TestData.tweets());
+//
+// server.initDispatcher("CoseNonJaviste");
+// }
+//
+// @Test public void showMainActivity() {
+// activityRule.launchActivity(null);
+// }
+//
+// @Test public void showCategories() {
+// activityRule.launchActivity(null);
+// clickOnDrawer(R.string.categories);
+//// onView(withText("cat 0")).check(matches(isDisplayed()));
+// }
+//
+// @Test public void showAuthors() {
+// activityRule.launchActivity(null);
+// clickOnDrawer(R.string.authors);
+//// onView(withText("name 0")).check(matches(isDisplayed()));
+// }
+//
+// @Test public void showTweets() {
+// activityRule.launchActivity(null);
+// clickOnDrawer(R.string.twitter);
+//// onView(withText("tweet text 1")).check(matches(isDisplayed()));
+// }
+//
+// @Test public void showContactForm() {
+// activityRule.launchActivity(null);
+// clickOnDrawer(R.string.contacts);
+// }
+//
+// private void clickOnDrawer(int text) {
+// onView(withClassName(endsWith("ImageButton"))).perform(click());
+//
+//// onView(withText(text)).perform(click());
+// }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/author/AuthorListFragmentTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/author/AuthorListFragmentTest.java
new file mode 100644
index 0000000..6f6ab20
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/author/AuthorListFragmentTest.java
@@ -0,0 +1,36 @@
+package it.cosenonjaviste.ui.author;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import it.cosenonjaviste.TestData;
+import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.core.author.AuthorListModel;
+import it.cosenonjaviste.model.WordPressService;
+import it.cosenonjaviste.ui.CnjDaggerRule;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static org.mockito.Mockito.when;
+
+public class AuthorListFragmentTest {
+
+ @Mock WordPressService wordPressService;
+
+ @Rule public FragmentRule fragmentRule = new FragmentRule(AuthorListFragment.class);
+
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
+
+ @Test
+ public void testAuthorList() {
+ when(wordPressService.listAuthors())
+ .thenReturn(TestData.authorResponse(8));
+
+ fragmentRule.launchFragment(new AuthorListModel());
+
+ onView(withText("name 1")).check(matches(isDisplayed()));
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/category/CategoryListFragmentTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/category/CategoryListFragmentTest.java
new file mode 100644
index 0000000..672c1d8
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/category/CategoryListFragmentTest.java
@@ -0,0 +1,48 @@
+package it.cosenonjaviste.ui.category;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import java.io.IOException;
+
+import io.reactivex.Single;
+import it.cosenonjaviste.TestData;
+import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.core.category.CategoryListModel;
+import it.cosenonjaviste.model.WordPressService;
+import it.cosenonjaviste.ui.CnjDaggerRule;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+public class CategoryListFragmentTest {
+
+ @Mock WordPressService wordPressService;
+
+ @Rule public FragmentRule fragmentRule = new FragmentRule(CategoryListFragment.class);
+
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
+
+ @Test public void testCategoryList() {
+ when(wordPressService.listCategories())
+ .thenReturn(TestData.categoryResponse(3));
+
+ fragmentRule.launchFragment(new CategoryListModel());
+
+ onView(withText("cat 1")).check(matches(isDisplayed()));
+ }
+
+ @Test public void testCategoryError() {
+ when(wordPressService.listCategories())
+ .thenReturn(Single.error(new IOException("bla bla bla")));
+
+ fragmentRule.launchFragment(new CategoryListModel());
+
+ verify(wordPressService).listCategories();
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/contact/ContactFragmentTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/contact/ContactFragmentTest.java
new file mode 100644
index 0000000..bca4df7
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/contact/ContactFragmentTest.java
@@ -0,0 +1,44 @@
+package it.cosenonjaviste.ui.contact;
+
+import android.support.test.espresso.action.ViewActions;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import io.reactivex.Completable;
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.model.MailJetService;
+import it.cosenonjaviste.ui.CnjDaggerRule;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.action.ViewActions.scrollTo;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.when;
+
+public class ContactFragmentTest {
+ @Rule public FragmentRule fragmentRule = new FragmentRule(ContactFragment.class);
+
+ @Mock MailJetService mailJetService;
+
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
+
+ @Before public void setUp() {
+ when(mailJetService.sendEmail(anyString(), anyString(), anyString(), anyString()))
+ .thenReturn(Completable.complete());
+ }
+
+ @Test public void testContactFragment() {
+ fragmentRule.launchFragment();
+
+ onView(withId(R.id.name)).perform(ViewActions.typeText("name"));
+ onView(withId(R.id.email)).perform(ViewActions.typeText("email@email.it"));
+ onView(withId(R.id.message)).perform(ViewActions.typeText("message"));
+
+ onView(withId(R.id.send_button)).perform(scrollTo(), click());
+ }
+}
\ No newline at end of file
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/page/PageFragmentTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/page/PageFragmentTest.java
new file mode 100644
index 0000000..f494177
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/page/PageFragmentTest.java
@@ -0,0 +1,29 @@
+package it.cosenonjaviste.ui.page;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import it.cosenonjaviste.TestData;
+import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.androidtest.base.MockWebServerWrapper;
+import it.cosenonjaviste.androidtest.utils.TestUtils;
+import it.cosenonjaviste.ui.CnjDaggerRule;
+
+public class PageFragmentTest {
+
+ MockWebServerWrapper server = new MockWebServerWrapper();
+
+ @Rule public FragmentRule fragmentRule = new FragmentRule(PageFragment.class);
+
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
+
+ @Before public void setUp() {
+ server.initDispatcher("CoseNonJaviste A A A A A A A A A A A A A A A A A A A A A A A A A A");
+ }
+
+ @Test public void testDetailFragment() {
+ fragmentRule.launchFragment(TestData.createPost(1, server.getUrl(false) + "abc"));
+ TestUtils.sleep(100);
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/ui/post/PostListFragmentTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/post/PostListFragmentTest.java
new file mode 100644
index 0000000..a5da543
--- /dev/null
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/post/PostListFragmentTest.java
@@ -0,0 +1,53 @@
+package it.cosenonjaviste.ui.post;
+
+import android.support.test.espresso.contrib.RecyclerViewActions;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.TestData;
+import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.core.post.PostListModel;
+import it.cosenonjaviste.model.WordPressService;
+import it.cosenonjaviste.ui.CnjDaggerRule;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static android.support.test.espresso.matcher.ViewMatchers.withId;
+import static android.support.test.espresso.matcher.ViewMatchers.withText;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.when;
+
+public class PostListFragmentTest {
+
+ @Mock WordPressService wordPressService;
+
+ @Rule public FragmentRule fragmentRule = new FragmentRule(PostListFragment.class);
+
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
+
+ @Before public void setUp() {
+ when(wordPressService.listPosts(eq(1)))
+ .thenReturn(TestData.postResponse(0, 10));
+ when(wordPressService.listPosts(eq(2)))
+ .thenReturn(TestData.postResponse(10, 10));
+ }
+
+ @Test public void testPostList() throws InterruptedException {
+ fragmentRule.launchFragment(new PostListModel());
+
+ onView(withText("post title 1")).check(matches(isDisplayed()));
+ }
+
+ @Test public void testGoToPostDetail() {
+ fragmentRule.launchFragment(new PostListModel());
+
+ onView(withId(R.id.list))
+ .perform(RecyclerViewActions.actionOnItemAtPosition(3, click()));
+ }
+}
diff --git a/app/src/androidTest/java/it/cosenonjaviste/androidtest/TweetListTest.java b/app/src/androidTest/java/it/cosenonjaviste/ui/twitter/TweetListFragmentTest.java
similarity index 51%
rename from app/src/androidTest/java/it/cosenonjaviste/androidtest/TweetListTest.java
rename to app/src/androidTest/java/it/cosenonjaviste/ui/twitter/TweetListFragmentTest.java
index 740aebf..e85d40b 100644
--- a/app/src/androidTest/java/it/cosenonjaviste/androidtest/TweetListTest.java
+++ b/app/src/androidTest/java/it/cosenonjaviste/ui/twitter/TweetListFragmentTest.java
@@ -1,21 +1,17 @@
-package it.cosenonjaviste.androidtest;
+package it.cosenonjaviste.ui.twitter;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Rule;
import org.junit.Test;
-import org.junit.rules.RuleChain;
-import org.junit.rules.TestRule;
import org.junit.runner.RunWith;
-
-import javax.inject.Inject;
+import org.mockito.Mock;
import it.cosenonjaviste.TestData;
-import it.cosenonjaviste.androidtest.base.DaggerRule;
import it.cosenonjaviste.androidtest.base.FragmentRule;
+import it.cosenonjaviste.core.twitter.TweetListModel;
import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.twitter.TweetListFragment;
-import it.cosenonjaviste.twitter.TweetListModel;
+import it.cosenonjaviste.ui.CnjDaggerRule;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.assertion.ViewAssertions.matches;
@@ -25,21 +21,20 @@
import static org.mockito.Mockito.when;
@RunWith(AndroidJUnit4.class)
-public class TweetListTest {
+public class TweetListFragmentTest {
+
+ @Mock TwitterService twitterService;
- @Inject TwitterService twitterService;
+ @Rule public FragmentRule fragmentRule = new FragmentRule(TweetListFragment.class);
- private final FragmentRule fragmentRule = FragmentRule.create(TweetListFragment.class, new TweetListModel());
+ @Rule public final CnjDaggerRule daggerRule = new CnjDaggerRule();
- private final DaggerRule daggerRule = new DaggerRule(objectGraph -> {
- objectGraph.inject(this);
+ @Test public void testTweetList() {
when(twitterService.loadTweets(eq(1)))
- .thenReturn(TestData.tweets());
- });
+ .thenReturn(TestData.tweets(10));
- @Rule public TestRule chain = RuleChain.outerRule(daggerRule).around(fragmentRule);
+ fragmentRule.launchFragment(new TweetListModel());
- @Test public void testPostList() {
onView(withText("tweet text 1")).check(matches(isDisplayed()));
}
}
diff --git a/app/src/debug/java/it/cosenonjaviste/TestData.java b/app/src/debug/java/it/cosenonjaviste/TestData.java
deleted file mode 100644
index e6ee352..0000000
--- a/app/src/debug/java/it/cosenonjaviste/TestData.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package it.cosenonjaviste;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import it.cosenonjaviste.model.Author;
-import it.cosenonjaviste.model.AuthorResponse;
-import it.cosenonjaviste.model.Category;
-import it.cosenonjaviste.model.CategoryResponse;
-import it.cosenonjaviste.model.Post;
-import it.cosenonjaviste.model.PostResponse;
-import it.cosenonjaviste.model.Tweet;
-import rx.Observable;
-
-public class TestData {
-
- public static Observable postResponse(int size) {
- return postResponse(0, size);
- }
-
- public static Observable postResponse(int start, int size) {
- List posts = new ArrayList<>();
- for (int i = start; i < start + size; i++) {
- posts.add(new Post(i, createAuthor(i), "post title " + i, new Date(), "url " + i, "excerpt " + i));
- }
- return Observable.just(new PostResponse(posts));
- }
-
- public static Author createAuthor(int i) {
- return new Author(i, "name " + i, "last name " + i, "desc " + i);
- }
-
- public static Observable authorResponse(int size) {
- List authors = new ArrayList<>();
- for (int i = 0; i < size; i++) {
- authors.add(createAuthor(i));
- }
- return Observable.just(new AuthorResponse(authors));
- }
-
- public static Observable categoryResponse(int size) {
- List categories = new ArrayList<>();
- for (int i = 0; i < size; i++) {
- categories.add(createCategory(i));
- }
- return Observable.just(new CategoryResponse(categories));
- }
-
- private static Category createCategory(int i) {
- return new Category(i, "cat " + i, 10 + i);
- }
-
- public static Observable> tweets() {
- List list = new ArrayList<>();
- for (int i = 0; i < 10; i++) {
- list.add(new Tweet(123, "tweet text " + i, new Date(), "image", "author"));
- }
- return Observable.just(list);
- }
-}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5c1cd9c..0afa3b2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,19 +7,22 @@
-
+
-
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/style.css b/app/src/main/assets/style.css
index cdc7236..0b80cd6 100644
--- a/app/src/main/assets/style.css
+++ b/app/src/main/assets/style.css
@@ -1,7217 +1,3972 @@
-#top-bar {
- display: none;
+#cookie-notice {
+ display: none !important;
}
-
-#header-section {
- display: none;
-}
-
-div.nr_related_placeholder {
- display: none;
-}
-
-div.yarpp-related {
- display: none;
-}
-
-div.share-links {
- display: none;
-}
-
-div.related-wrap {
- display: none;
-}
-
-div.pagination-wrap.blog-pagination {
- display: none;
-}
-
-aside.sidebar.right-sidebar {
- display: none;
-}
-
-#footer {
- display: none;
-}
-
-#comment-area {
- display: none;
-}
-
-#copyright {
- display: none;
-}
-
-div.author-info-wrap.clearfix {
- display: none;
-}
-
-div.inner-page-wrap.has-right-sidebar.has-one-sidebar.row.clearfix {
- margin-top: 0px;
-}
-
-div.page-heading h1 {
- font-size: 24px;
- line-height: 32px;
-}
-
-/* LICENSE & DETAILS
- ==================================================
-
- Theme Name: Flexform
- Theme URI: http://flexform.swiftideas.net
- Description: A Retina Responsive Multi-Purpose WordPress Theme - Designed & Developed by Swift Ideas ( www.swiftideas.net )
- License: GNU General Public License version 3.0
- License URI: http://www.gnu.org/licenses/gpl-3.0.html
- Version: 1.62
- Author: Swift Ideas
- Author URI: www.swiftideas.net
-
- All files, unless otherwise stated, are released under the GNU General Public License
- version 3.0 (http://www.gnu.org/licenses/gpl-3.0.html)
-
- ==================================================
-*/
-
-/* Table of Contents
-==================================================
-
- #Custom Boostrap Classes
- #Page Builder Override Classes
- #General
- #Header
- #Footer
- #Home
- #Swift Slider
- #Portfolio
- #Blog
- #Team
- #Sidebar
- #Comments
- #Contact
- #Shortcodes
- #WooCommerce
- #Retina Styles
- #Responsive Styles
-
- ==================================================
-*/
-
-/* #Custom Bootstrap Classes
-==================================================
- Support for columns width sidebars
-================================================== */
-
-.span-third {
- width: 193px;
-}
-.span-twothirds {
- width: 407px;
-}
-.span-bs-quarter {
- width: 100px;
-}
-.span-bs-threequarter {
- width: 340px;
-}
-
-@media only screen and (min-width: 1200px) {
- .span-third {
- width: 236px;
- }
- .span-twothirds {
- width: 504px;
- }
- .span-bs-quarter {
- width: 120px;
- }
- .span-bs-threequarter {
- width: 420px;
- }
-}
-
-@media only screen and (max-width: 979px) and (min-width: 768px) {
-
- .span-third {
- width: 145px;
- }
- .span-twothirds {
- width: 310px;
- }
-
- .span-bs-quarter, .span-bs-threequarter {
- width: 342px;
- }
-
-}
-
-@media only screen and (max-width: 979px) {
-
- .span-third {
- width: 100%;
- }
- .span-twothirds {
- width: 100%;
- }
- .span-bs-quarter {
- width: 100%;
- }
- .span-bs-threequarter {
- width: 100%;
- }
-
-}
-
-/* #Page Builder Override Classes
-==================================================
- Classes to override asset styling
-================================================== */
-
-.mt0 { /* Clear Margin Top */
- margin-top: 0!important;
-}
-.mb0 { /* Clear Margin Bottom */
- margin-bottom: 0!important;
-}
-.mr0 { /* Clear Margin Right */
- margin-right: 0!important;
-}
-.ml0 { /* Clear Margin Left */
- margin-left: 0!important;
-}
-.pt0 { /* Clear Padding Top */
- padding-top: 0!important;
-}
-.pb0 { /* Clear Padding Bottom */
- padding-bottom: 0!important;
-}
-.pr0 { /* Clear Padding Right */
- padding-right: 0!important;
-}
-.pl0 { /* Clear Padding Left */
- padding-left: 0!important;
-}
-.bt0 { /* Clear Border Top */
- border-top: 0!important;
-}
-.bb0 { /* Clear Border Bottom */
- border-bottom: 0!important;
-}
-.no-arrow:after { /* Clear Full Width Text Arrow */
- display: none!important;
-}
-.pmb0 p { /* Clear Inner p Tags Margin Bottom */
- margin-bottom: 0!important;
-}
-
-
-/* #General
-================================================== */
-
-body {
- padding: 0;
- margin: 0;
- font-size: 14px;
-}
-body * {
- -webkit-font-smoothing: antialiased !important;
- text-rendering: optimizelegibility;
-}
-a {
- transition: all 0.2s ease-in-out;
- -moz-transition: all 0.2s ease-in-out;
- -webkit-transition: all 0.2s ease-in-out;
- -o-transition: all 0.2s ease-in-out;
-}
-a:hover {
- text-decoration: none;
-}
-body, h1, h2, h3, h4, h5, h6 {
- font-family: "Myriad Pro", Arial, Helvetica, Tahoma, sans-serif;
- font-weight: 300;
-}
-h1 {
- font-size: 30px;
- line-height: 42px;
-}
-h2 {
- font-size: 24px;
- line-height: 32px;
-}
-h3 {
- font-size: 18px;
- line-height: 24px;
- font-weight: normal;
- margin-bottom: 15px;
-}
-h4 {
- font-size: 16px;
- font-weight: normal;
- line-height: 20px;
- margin-bottom: 15px;
-}
-h5 {
- font-size: 14px;
- font-weight: normal;
- line-height: 18px;
- margin-bottom: 15px;
-}
-h6 {
- font-size: 12px;
- font-weight: bold;
- line-height: 16px;
- margin-bottom: 10px;
- text-transform: uppercase;
-}
-p {
- font-size: 14px;
- line-height: 170%;
-}
-ul {
- list-style: none;
- margin: 0 0 20px;
-}
-p:empty {
- /*display: none;
- margin-bottom: 0;*/
-}
-.wf-loading p, .wf-loading a, .wf-loading h1, .wf-loading h2, .wf-loading h3, .wf-loading h4, .wf-loading h5, .wf-loading h6 {
- visibility: hidden;
-}
-.wf-inactive p, .wf-inactive a, .wf-inactive h1, .wf-inactive h2, .wf-inactive h3, .wf-inactive h4, .wf-inactive h5, .wf-inactive h6 {
- visibility: visible;
-}
-.wf-active p, .wf-active a, .wf-active h1, .wf-active h2, .wf-active h3, .wf-active h4, .wf-active h5, .wf-active h6 {
- visibility: visible;
-}
-ul ul, ul ol, ol ol, ol ul {
- margin-left: 0;
-}
-.no-js-alert {
- background: none repeat scroll 0 0 #222222;
- color: #FFFFFF;
- font-size: 24px;
- height: 100%;
- left: 0;
- opacity: 0.95;
- -moz-opacity: 0.95;
- filter:alpha(opacity= 95);
- padding: 20% 5% 0;
- position: fixed;
- text-align: center;
- top: 0;
- width: 90%;
- z-index: 9999;
-}
-#container {
- position: relative;
-}
-#page-bg-image {
- position: fixed;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- z-index: 1;
-}
-input {
- border: 0;
-}
-input:focus, textarea:focus {
- box-shadow: none!important;
-}
-iframe {
- border: 0;
-}
-
-/* --------------------------------------------
- STANDARD MEDIA STYLING
--------------------------------------------- */
-
-figure {
- margin: 0;
-}
-figure img {
- width: 100%;
- height: auto;
-}
-figure a {
- display: block;
-}
-figure .overlay {
- width: 100%;
- height: 100%;
- position: absolute;
- display: block;
- z-index: 4;
- opacity: 0;
- -moz-opacity: 0;
- filter:alpha(opacity=0);
- -webkit-transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- -ms-transition: all 0.3s ease-in-out;
- transition: all 0.3s ease-in-out;
- margin-left: -0.6px;
- padding-right: 0.6px;
-}
-figure:hover > a > .overlay {
- opacity: 0.9;
- -moz-opacity: 0.9;
- filter:alpha(opacity=90);
- margin-top: -1.6px; /* GAP FIX */
- padding-bottom: 1.6px; /* GAP FIX */
-}
-figure .thumb-info {
- position: absolute;
- width: 100%;
- height: 100%;
- opacity: 0;
- -moz-opacity: 0;
- filter:alpha(opacity=0);
- -webkit-transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- -ms-transition: all 0.3s ease-in-out;
- transition: all 0.3s ease-in-out;
- -webkit-transform: scale(0);
- -moz-transform: scale(0);
- -o-transform: scale(0);
- -ms-transform: scale(0);
- transform: scale(0);
- -webkit-backface-visibility: hidden; /*for a smooth font */
-}
-figure:hover .overlay .thumb-info {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity=100);
- -webkit-transform: scale(1);
- -moz-transform: scale(1);
- -o-transform: scale(1);
- -ms-transform: scale(1);
- transform: scale(1);
-}
-.overlay .thumb-info h4 {
- position: absolute;
- top: 53%;
- line-height: 20px;
- padding: 0 10%;
- width: 80%;
- text-align: center;
- -moz-text-shadow: 0 0 5px rgba(0,0,0,.2);
- -webkit-text-shadow: 0 0 5px rgba(0,0,0,.2);
- text-shadow: 0 0 5px rgba(0,0,0,.2);
-}
-.overlay .thumb-info i {
- width: 100%;
- position: absolute;
- top: 50%;
- font-size: 44px;
- margin-top: -15px;
- height: 30px;
- line-height: 33px;
- -moz-text-shadow: 0 0 5px rgba(0,0,0,.2);
- -webkit-text-shadow: 0 0 5px rgba(0,0,0,.2);
- text-shadow: 0 0 5px rgba(0,0,0,.2);
- text-align: center;
-}
-.overlay .thumb-info i.small-icon {
- font-size: 32px;
- top: 42%;
-}
-
-/* --------------------------------------------
- FLEXSLIDER / REVSLIDER
--------------------------------------------- */
-
-/* Browser Resets */
-.wooslider-container a:active,
-.wooslider a:active,
-.wooslider-container a:focus,
-.wooslider a:focus {outline: none;}
-.slides,
-.wooslider-control-nav,
-.wooslider-direction-nav {margin: 0; padding: 0; list-style: none;}
-
-/* wooslider Necessary Styles
-*********************************/
-.wooslider {margin: 0; padding: 0;}
-.wooslider .slides > li { display: none; -webkit-backface-visibility: hidden; width: 100%; } /* Hide the slides before the JS is loaded. Avoids image jumping */
-.wooslider .slides img {width: 100%; display: block;}
-.wooslider-pauseplay span {text-transform: capitalize;}
-
-/* Clearfix for the .slides element */
-.wooslider .slides:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; }
-html[xmlns] .wooslider .slides { display: block; }
-* html .wooslider .slides { height: 1%; }
-
-/* No JavaScript Fallback */
-/* If you are not using another script, such as Modernizr, make sure you
- * include js that eliminates this class on page load */
-.no-js .wooslider .slides > li:first-child { display: block; }
-
-
-/* wooslider Default Theme
-*********************************/
-.wooslider {margin: 0 0 60px; background: #fff; border: 4px solid #fff; position: relative; -webkit-border-radius: 4px; -moz-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 4px rgba(0,0,0,.2); -moz-box-shadow: 0 1px 4px rgba(0,0,0,.2); -o-box-shadow: 0 1px 4px rgba(0,0,0,.2); box-shadow: 0 1px 4px rgba(0,0,0,.2); zoom: 1; overflow: visible!important;}
-.wooslider-viewport {max-height: 2000px; -webkit-transition: all 1s ease; -moz-transition: all 1s ease; transition: all 1s ease;}
-.loading .wooslider-viewport {max-height: 300px;}
-.wooslider .slides {zoom: 1;}
-
-.wooslider .carousel li { margin-right: 5px; }
-
-/* Direction Nav */
-.wooslider-direction-nav a {width: 30px; height: 30px; margin: -20px 0 0; display: block; background: url(../images/bg_direction_nav.png) no-repeat 0 0; position: absolute; top: 50%; cursor: pointer; text-indent: -9999px; opacity: 0; -webkit-transition: all .3s ease; -moz-transition: all .3s ease; -o-transition: all .3s ease; transition: all .3s ease;}
-.wooslider-direction-nav .wooslider-next {background-position: 100% 0; right: -36px; }
-.wooslider-direction-nav .wooslider-prev {left: -36px;}
-.wooslider:hover .wooslider-next {opacity: 0.8; right: 5px;}
-.wooslider:hover .wooslider-prev {opacity: 0.8; left: 5px;}
-.wooslider:hover .wooslider-next:hover, .wooslider:hover .wooslider-prev:hover {opacity: 1;}
-.wooslider-direction-nav .disabled {opacity: .3!important; filter:alpha(opacity=30); cursor: default;}
-
-/* Pause/Play */
-.wooslider-pauseplay a { width: 30px; height: 30px; text-indent: -9999px; background: url(../images/bg_play_pause.png) no-repeat 110% 0; position: absolute; bottom: 5px; left: 5px; opacity: 0.8; z-index: 9999; cursor: pointer; }
-.wooslider-pauseplay a:hover { opacity: 1; }
-.wooslider-pauseplay a.wooslider-play { background-position: 0 0; }
-
-/* Control Nav */
-.wooslider-control-nav {width: 100%; position: absolute; top: 100%; margin-top: 10px!important; text-align: center; z-index: 9999; }
-.wooslider-control-nav li {margin: 0 6px; display: inline-block; zoom: 1; *display: inline;}
-.wooslider-control-paging li a {width: 11px; height: 11px; display: block; background: #666; background: rgba(0,0,0,0.5); cursor: pointer; text-indent: -9999px; -webkit-border-radius: 20px; -moz-border-radius: 20px; -o-border-radius: 20px; border-radius: 20px; box-shadow: inset 0 0 3px rgba(0,0,0,0.3);}
-.wooslider-control-paging li a:hover { background: #333; background: rgba(0,0,0,0.7); }
-.wooslider-control-paging li a.wooslider-active { background: #000; background: rgba(0,0,0,0.9); cursor: default; }
-
-.wooslider-control-thumbs {margin: 5px 0 0; position: static; overflow: hidden;}
-.wooslider-control-thumbs li {width: 25%; float: left; margin: 0;}
-.wooslider-control-thumbs img {width: 100%; display: block; opacity: .7; cursor: pointer;}
-.wooslider-control-thumbs img:hover {opacity: 1;}
-.wooslider-control-thumbs .wooslider-active {opacity: 1; cursor: default;}
-
-@media screen and (max-width: 860px) {
- .wooslider-direction-nav .wooslider-prev {opacity: 1; left: 0;}
- .wooslider-direction-nav .wooslider-next {opacity: 1; right: 0;}
-}
-
-/* Basic reset for better theme compatibility. */
-.wooslider .slides > li { list-style: none; float: left; margin: 0; padding: 0; }
-.wooslider .slides > li img { border: 0; box-shadow: none; }
-.wooslider .wooslider-control-nav > li { margin: 0 6px; padding: 0; }
-
-body .wooslider.wooslider-type-posts img, body .wooslider.wooslider-type-attachments img { border: 0; padding: 0; margin: 0; height: auto; }
-body .wooslider .slides, body .wooslider .wooslider-control-nav, body .wooslider .wooslider-direction-nav { padding: 0; margin: 0; }
-body .wooslider .wooslider-control-nav li, body .wooslider .wooslider-direction-nav li { list-style: none; }
-
-/* Layout styles for the "Posts" slideshow type. */
-/* Text Left and Text Right Options */
-.wooslider .layout-text-left img { float: right; width: 40%; }
-.wooslider .layout-text-left .slide-excerpt { float: left; width: 50%; }
-
-.wooslider .layout-text-right img { float: left; width: 40%; }
-.wooslider .layout-text-right .slide-excerpt { float: right; width: 50%; }
-
-/* Full overlay enabled */
-.wooslider .overlay-full { position: relative; }
-.wooslider .overlay-full .slide-excerpt { background: #000; opacity: 0.8; color: #FFF; position: absolute; padding: 1em; }
-.wooslider .overlay-full .slide-excerpt .slide-title { color: #FFF; }
-.wooslider .overlay-full img { float: none; width: 100%; height: auto; }
-
-body .wooslider .overlay-full.layout-text-left .slide-excerpt { left: 0; top: 0; bottom: 0; width: 30%; padding: 1em; overflow: hidden; }
-body .wooslider .overlay-full.layout-text-right .slide-excerpt { right: 0; top: 0; bottom: 0; width: 30%; padding: 1em; overflow: hidden; }
-body .wooslider .overlay-full.layout-text-top .slide-excerpt { left: 0; right: 0; top: 0; height: auto; padding: 1em; overflow: hidden; }
-body .wooslider .overlay-full.layout-text-bottom .slide-excerpt { left: 0; right: 0; bottom: 0; height: auto; padding: 1em; overflow: hidden; }
-
-/* Natural overlay enabled */
-.wooslider .overlay-natural { position: relative; }
-.wooslider .overlay-natural .slide-excerpt { color: #FFF; position: absolute; float: left; padding: 0; }
-.wooslider .overlay-natural .slide-excerpt .slide-title { color: #FFF; background: #000; opacity: 0.8; float: left; padding: 0.5em 1em; margin: 0; }
-.wooslider .overlay-natural .slide-excerpt p { color: #FFF; background: #000; opacity: 0.8; float: left; padding: 0.5em 1em; }
-.wooslider .overlay-natural img { float: none; width: 100%; height: auto; }
-
-body .wooslider .overlay-natural.layout-text-left .slide-excerpt { left: 0; top: 10%; overflow: hidden; }
-body .wooslider .overlay-natural.layout-text-right .slide-excerpt { float: right; right: 0; top: 10%; overflow: hidden; }
-body .wooslider .overlay-natural.layout-text-right .slide-excerpt .slide-title,
-body .wooslider .overlay-natural.layout-text-right .slide-excerpt p { float: right; }
-body .wooslider .overlay-natural.layout-text-top .slide-excerpt { left: 0; top: 0; overflow: hidden; }
-body .wooslider .overlay-natural.layout-text-bottom .slide-excerpt { left: 0; bottom: 0; overflow: hidden; }
-
-/* "Slides" slideshow type */
-body .wooslider .slide-content { margin: 0.5em; padding: 0; border: 0; width: auto; height: auto; }
-
-/* Slide widget */
-.widget_wooslider_slideshow_attachments .wooslider-direction-nav a { padding: 0; }
-
-body .wooslider.wooslider-type-posts img, body .wooslider.wooslider-type-attachments img { max-width: 100%; border: none; }
-body .wooslider-control-nav { margin: 0; padding: 0; }
-body .wooslider-control-nav img { border: 0; background: none; margin: 0; padding: 0; }
-body .wooslider-direction-nav, body .wooslider-direction-nav li { list-style: none; margin: 0; padding: 0; }
-body .wooslider.wooslider-type-slides .has-featured-image img.featured-image { max-width: 100%; height: auto; }
-body .wooslider.wooslider-type-slides img { max-width: 100%; }
-
-.flexslider {
- background: transparent;
- border: 0;
- width: 100%;
- z-index: 2;
- display: block;
- position: relative;
- overflow: hidden;
-}
-.flexslider ul.slides {
- background: #222;
- margin: 0;
- height: auto;
- overflow: hidden;
- list-style: none!important;
-}
-.flexslider .slides > li {
- position: relative;
- text-align: center;
- overflow: hidden;
- margin: 0;
- display: none;
- -webkit-backface-visibility: hidden;
-}
-.flexslider .slides li img {
- max-width: 100%;
- width: 100%;
- height: auto;
- display: block!important;
-}
-.flex-direction-nav, .flex-direction-nav li, .wooslider-direction-nav, .wooslider-direction-nav li {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-.flex-direction-nav a, .wooslider-direction-nav a {
- width: 36px;
- height: 36px;
- margin: -18px 0 0;
- display: block;
- background: transparent url('images/showcase-nav.png') no-repeat center left;
- position: absolute;
- top: 50%;
- cursor: pointer;
- text-indent: -9999px;
- opacity: 0;
- filter: alpha(opacity=0);
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- z-index: 999;
-}
-.flex-direction-nav .flex-next, .wooslider-direction-nav .wooslider-next {
- background-position: center right;
- right: -36px;
-}
-.flex-direction-nav .flex-prev, .wooslider-direction-nav .wooslider-prev {
- left: -36px;
-}
-.rev_slider_wrapper .tp-leftarrow, .rev_slider_wrapper .tp-leftarrow.large, .rev_slider_wrapper .tp-leftarrow.square, .rev_slider_wrapper .tp-leftarrow.round, .rev_slider_wrapper .tp-leftarrow.default {
- background: transparent url('images/showcase-nav.png') no-repeat center left;
- width: 36px;
- height: 36px;
- display: block;
- margin: 0;
- position: absolute;
- top: 50%!important;
- left: -36px!important;
- margin-top: -18px;
- cursor: pointer;
- text-indent: -9999px;
- opacity: 0;
- filter:alpha(opacity=0);
- -webkit-transition: all .3s ease;
-}
-.rev_slider_wrapper .tp-rightarrow, .rev_slider_wrapper .tp-rightarrow.large, .rev_slider_wrapper .tp-rightarrow.square, .rev_slider_wrapper .tp-rightarrow.round, .rev_slider_wrapper .tp-rightarrow.default {
- background: transparent url('images/showcase-nav.png') no-repeat 100% 0;
- width: 36px;
- height: 36px;
- display: block;
- margin: 0;
- position: absolute;
- top: 50%!important;
- right: -36px!important;
- margin-top: -18px;
- left: auto!important;
- cursor: pointer;
- text-indent: -9999px;
- opacity: 0;
- filter:alpha(opacity=0);
- -webkit-transition: all .3s ease;
-}
-.rev_slider_wrapper {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.tp-bannertimer {
- z-index: 20!important;
-}
-.rev_slider iframe {
- z-index: 999;
-}
-.content-slider {
- position: static;
-}
-.content-slider .flex-direction-nav .flex-next {
- right: 20px!important;
-}
-.content-slider .flex-direction-nav .flex-prev {
- left: 20px!important;
-}
-.flexslider:hover .flex-next, .wooslider:hover .wooslider-next, .wpb_testimonial_slider_widget:hover .flexslider .flex-next {
- opacity: 1;
- filter:alpha(opacity=100);
- right: 20px!important;
-}
-.rev_slider_wrapper:hover > .tp-rightarrow {
- opacity: 1;
- filter:alpha(opacity=100);
- right: 50px!important;
-}
-.flexslider:hover .flex-prev, .wooslider:hover .wooslider-prev, .wpb_testimonial_slider_widget:hover .flexslider .flex-prev {
- opacity: 1;
- filter:alpha(opacity=100);
- left: 20px!important;
-}
-.rev_slider_wrapper:hover > .tp-leftarrow {
- opacity: 1;
- filter:alpha(opacity=100);
- left: 50px!important;
-}
-.tp-caption a.sf-button {
- font-size: inherit;
- padding: 6% 14%;
- line-height: auto;
-}
-.tp-caption a.sf-button.medium {
- font-size: inherit;
- padding: 7% 16%;
- line-height: auto;
-}
-.tp-caption a.sf-button.large {
- font-size: inherit;
- padding: 8% 18%;
- line-height: auto;
-}
-.flex-direction-nav .disabled {
- opacity: .3!important;
- filter:alpha(opacity=30);
- cursor: default;
-}
-.thumb-slider .flex-direction-nav a {
- height: 37px;
- background: transparent url('images/showcase-nav.png') no-repeat center left;
-}
-.thumb-slider .flex-direction-nav a.flex-next {
- background-position: center right;
-}
-.thumb-slider:hover .flex-direction-nav a.flex-prev {
- opacity: 0.8;
- -moz-opacity: 0.8;
- filter: alpha(opacity=80);
-}
-.thumb-slider:hover .flex-direction-nav a.flex-next {
- opacity: 0.8;
- -moz-opacity: 0.8;
- filter: alpha(opacity=80);
-}
-.thumb-slider .open-item a {
- width: 26px;
- position: absolute;
- right: 0;
- bottom: 0;
- opacity: 0.5;
- -moz-opacity: 0.5;
- filter: alpha(opacity=50);
- display: block;
- z-index: 99;
- background-color: rgb(33, 33, 33);
- background-color: rgba(33, 33, 33, 1);
- color: white;
- text-decoration: none;
- text-align: center;
- padding: 4px 0 2px;
-}
-.open-item a i {
- vertical-align: 0;
-}
-.thumb-slider .open-item:hover > a {
- opacity: 1!important;
- -moz-opacity: 1!important;
- filter:alpha(opacity=100)!important;
-}
-.flex-control-nav {
- position: absolute;
- bottom: 20px;
- left: 40px;
- margin: 0;
- z-index: 4;
- list-style: none!important;
-}
-.flex-control-nav li {
- float: left;
- display: inline-block;
- margin-right: 5px;
- margin-bottom: 0;
-}
-.flex-control-nav li a {
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
- background: #fff;
- width: 10px;
- height: 10px;
- display: block;
- webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- opacity: 0.5;
- -moz-opacity: 0.5;
- filter:alpha(opacity=50);
-}
-.flex-control-nav li a:hover {
- cursor: pointer;
-}
-.flex-control-nav li a.flex-active {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity=100);
-}
-.flex-pauseplay {
- position: absolute;
- color: #fff;
- bottom: 18px;
- left: 20px;
- font-size: 13px;
- height: 13px;
-}
-.flex-pauseplay span:before {
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
-}
-.flex-pauseplay .pause:before {
- content: "\f04c";
-}
-.flex-pauseplay .play:before {
- content: "\f04b";
-}
-.blog-slider .flex-pauseplay, .thumb-slider .flex-pauseplay {
- bottom: 16px;
- font-size: 11px;
- height: 13px;
-}
-.flex-pauseplay:hover {
- cursor: pointer;
-}
-.flex-pauseplay span {
- height: 11px;
- display: block;
- line-height: 13px;
-}
-.thumb-slider .flex-control-nav, .thumb-slider .flex-pauseplay {
- display: none;
-}
-.tp-bullets {
- width: 80%;
- margin: 0 auto;
- text-align: center;
- z-index: 20;
-}
-.tp-bullets.simplebullets.round {
- bottom: 25px!important;
-}
-.tp-bullets.simplebullets.round .bullet {
- cursor: pointer;
- position: relative;
- background: white;
- width: 10px;
- height: 10px;
- margin-right: 7px;
- float: none;
- display: inline-block;
- margin-top: 0;
- webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- opacity: 0.5;
- border-radius: 5px;
- opacity: 0.5;
- -moz-opacity: 0.5;
- filter:alpha(opacity=50);
- -webkit-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2);
- -moz-box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2);
- box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.2);
- margin-bottom: 13px;
-}
-.tp-bullets.simplebullets.round .bullet.selected {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity=100);
-}
-.tp-bullets .tp-leftarrow {
- float: none!important;
- display: inline-block;
- margin-right: 10px;
- width: 36px;
- height: 36px;
-}
-.tp-bullets .tp-rightarrow {
- float: none!important;
- display: inline-block;
- margin-left: 12px;
- width: 36px;
- height: 36px;
- background: top right;
-}
-.wooslider {
- background: transparent!important;
- border: 0!important;
- -webkit-border-radius: 0!important;
- -moz-border-radius: 0!important;
- -o-border-radius: 0!important;
- border-radius: 0!important;
-}
-body .wooslider .slide-content {
- margin: 0!important;
-}
-.wooslider li .slide-content > p {
- margin-bottom: 0;
-}
-.wooslider .slide-title {
- font-size: 18px;
- line-height: 24px;
-}
-.wooslider .slide-title a {
- color: #fff;
- text-decoration: none;
-}
-.wooslider-control-thumbs {
- position: absolute;
- z-index: 99;
- text-align: center;
-}
-.wooslider-control-thumbs li {
- width: 6%;
- float: none;
- min-height: 50px;
- max-height: 50px;
-}
-body .wooslider-control-thumbs li > img {
- border: 2px solid #fff!important;
- min-height: 34px;
- max-height: 34px;
-}
-p.flex-caption {
- text-shadow: none;
- background: rgba(0, 0, 0, .4);
-}
-.custom-caption {
- position: absolute;
- z-index: 2;
- top: 60px;
- left: 60px;
- width: auto;
- max-width: 500px
-}
-.custom-caption p {
- text-align: left;
- width: auto;
- font-size: 24px;
- padding: 0px 4px 2px;
- line-height: 28px;
- margin-bottom: 0;
- text-decoration: underline;
- text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
-}
-
-/* --------------------------------------------
- WORDPRESS ASSET STYLING
--------------------------------------------- */
-
-.sticky, .bypostauthor {}
-img.size-full {
- max-width: 100%;
- height: auto;
-}
-.aligncenter, div.aligncenter {
- display:block;
- margin: 5px auto 5px auto;
-}
-.alignright {
- float:right;
- margin: 5px 0 20px 20px;
-}
-.alignleft {
- float:left;
- margin: 5px 20px 20px 0;
-}
-.aligncenter {
- display: block;
- margin: 5px auto 5px auto;
-}
-a img.alignright {
- float:right;
- margin: 5px 0 20px 20px;
-}
-a img.alignleft {
- float:left;
- margin: 5px 20px 20px 0;
-}
-a img.aligncenter {
- display: block;
- margin-left: auto;
- margin-right: auto
-}
-.wp-caption {
- background: #fff;
- border: 1px solid #f0f0f0;
- max-width: 96%; /* Image does not overflow the content area */
- padding: 5px 3px 10px;
- text-align: center;
-}
-.wp-caption.alignnone {
- margin: 5px 20px 20px 0;
-}
-.wp-caption.alignleft {
- margin: 5px 20px 20px 0;
-}
-.wp-caption.alignright {
- margin: 5px 0 20px 20px;
-}
-.wp-caption img {
- border: 0 none;
- height: auto;
- margin:0;
- max-width: 98.5%;
- padding:0;
- width: auto;
-}
-.align-left {
- text-align: left;
-}
-.align-right {
- text-align: right;
-}
-.no-margin {
- margin: 0;
-}
-.img-link {
- display: block;
-}
-.wp-caption-text, .gallery-caption {
- font-size: 1.2em;
- padding: 10px 0;
-}
-
-/* --------------------------------------------
- ISOTOPE
--------------------------------------------- */
-
-.isotope-item {
- z-index: 2;
-}
-.isotope-hidden.isotope-item {
- pointer-events: none;
- z-index: 1;
-}
-.isotope,
-.isotope .isotope-item {
- /* change duration value to whatever you like */
- -webkit-transition-duration: 0.6s;
- -moz-transition-duration: 0.6s;
- -ms-transition-duration: 0.6s;
- -o-transition-duration: 0.6s;
- transition-duration: 0.6s;
-}
-.isotope {
- -webkit-transition-property: height, width;
- -moz-transition-property: height, width;
- -ms-transition-property: height, width;
- -o-transition-property: height, width;
- transition-property: height, width;
-}
-.isotope .isotope-item {
- -webkit-transition-property: -webkit-transform, opacity;
- -moz-transition-property: -moz-transform, opacity;
- -ms-transition-property: -ms-transform, opacity;
- -o-transition-property: top, left, opacity;
- transition-property: transform, opacity;
-}
-
-/**** disabling Isotope CSS3 transitions ****/
-
-.isotope.no-transition,
-.isotope.no-transition .isotope-item,
-.isotope .isotope-item.no-transition {
- -webkit-transition-duration: 0s;
- -moz-transition-duration: 0s;
- -ms-transition-duration: 0s;
- -o-transition-duration: 0s;
- transition-duration: 0s;
-}
-
-/* --------------------------------------------
- PRETTYPHOTO
--------------------------------------------- */
-
-div.pp_default .pp_top,div.pp_default .pp_top .pp_middle,div.pp_default .pp_top .pp_left,div.pp_default .pp_top .pp_right,div.pp_default .pp_bottom,div.pp_default .pp_bottom .pp_left,div.pp_default .pp_bottom .pp_middle,div.pp_default .pp_bottom .pp_right{height:13px}
-div.pp_default .pp_top .pp_left{background:url(images/prettyPhoto/default/sprite.png) -78px -93px no-repeat}
-div.pp_default .pp_top .pp_middle{background:url(images/prettyPhoto/default/sprite_x.png) top left repeat-x}
-div.pp_default .pp_top .pp_right{background:url(images/prettyPhoto/default/sprite.png) -112px -93px no-repeat}
-div.pp_default .pp_content .ppt{color:#f8f8f8}
-div.pp_default .pp_content_container .pp_left{background:url(images/prettyPhoto/default/sprite_y.png) -7px 0 repeat-y;padding-left:13px}
-div.pp_default .pp_content_container .pp_right{background:url(images/prettyPhoto/default/sprite_y.png) top right repeat-y;padding-right:13px}
-div.pp_default .pp_next:hover{background:url(images/prettyPhoto/default/sprite_next.png) center right no-repeat;cursor:pointer}
-div.pp_default .pp_previous:hover{background:url(images/prettyPhoto/default/sprite_prev.png) center left no-repeat;cursor:pointer}
-div.pp_default .pp_expand{background:url(images/prettyPhoto/default/sprite.png) 0 -29px no-repeat;cursor:pointer;width:28px;height:28px}
-div.pp_default .pp_expand:hover{background:url(images/prettyPhoto/default/sprite.png) 0 -56px no-repeat;cursor:pointer}
-div.pp_default .pp_contract{background:url(images/prettyPhoto/default/sprite.png) 0 -84px no-repeat;cursor:pointer;width:28px;height:28px}
-div.pp_default .pp_contract:hover{background:url(images/prettyPhoto/default/sprite.png) 0 -113px no-repeat;cursor:pointer}
-div.pp_default .pp_close{width:30px;height:30px;background:url(images/prettyPhoto/default/sprite.png) 2px 1px no-repeat;cursor:pointer}
-div.pp_default .pp_gallery ul li a{background:url(images/prettyPhoto/default/default_thumb.png) center center #f8f8f8;border:1px solid #aaa}
-div.pp_default .pp_social{margin-top:7px}
-div.pp_default .pp_gallery a.pp_arrow_previous,div.pp_default .pp_gallery a.pp_arrow_next{position:static;left:auto}
-div.pp_default .pp_nav .pp_play,div.pp_default .pp_nav .pp_pause{background:url(images/prettyPhoto/default/sprite.png) -51px 1px no-repeat;height:30px;width:30px}
-div.pp_default .pp_nav .pp_pause{background-position:-51px -29px}
-div.pp_default a.pp_arrow_previous,div.pp_default a.pp_arrow_next{background:url(images/prettyPhoto/default/sprite.png) -31px -3px no-repeat;height:20px;width:20px;margin:4px 0 0}
-div.pp_default a.pp_arrow_next{left:52px;background-position:-82px -3px}
-div.pp_default .pp_content_container .pp_details{margin-top:5px}
-div.pp_default .pp_nav{clear:none;height:30px;width:110px;position:relative}
-div.pp_default .pp_nav .currentTextHolder{font-family:Georgia;font-style:italic;color:#999;font-size:11px;left:75px;line-height:25px;position:absolute;top:2px;margin:0;padding:0 0 0 10px}
-div.pp_default .pp_close:hover,div.pp_default .pp_nav .pp_play:hover,div.pp_default .pp_nav .pp_pause:hover,div.pp_default .pp_arrow_next:hover,div.pp_default .pp_arrow_previous:hover{opacity:0.7}
-div.pp_default .pp_description{font-size:11px;font-weight:700;line-height:14px;margin:5px 50px 5px 0}
-div.pp_default .pp_bottom .pp_left{background:url(images/prettyPhoto/default/sprite.png) -78px -127px no-repeat}
-div.pp_default .pp_bottom .pp_middle{background:url(images/prettyPhoto/default/sprite_x.png) bottom left repeat-x}
-div.pp_default .pp_bottom .pp_right{background:url(images/prettyPhoto/default/sprite.png) -112px -127px no-repeat}
-div.pp_default .pp_loaderIcon{background:url(images/prettyPhoto/default/loader.gif) center center no-repeat}
-div.light_rounded .pp_top .pp_left{background:url(images/prettyPhoto/light_rounded/sprite.png) -88px -53px no-repeat}
-div.light_rounded .pp_top .pp_right{background:url(images/prettyPhoto/light_rounded/sprite.png) -110px -53px no-repeat}
-div.light_rounded .pp_next:hover{background:url(images/prettyPhoto/light_rounded/btnNext.png) center right no-repeat;cursor:pointer}
-div.light_rounded .pp_previous:hover{background:url(images/prettyPhoto/light_rounded/btnPrevious.png) center left no-repeat;cursor:pointer}
-div.light_rounded .pp_expand{background:url(images/prettyPhoto/light_rounded/sprite.png) -31px -26px no-repeat;cursor:pointer}
-div.light_rounded .pp_expand:hover{background:url(images/prettyPhoto/light_rounded/sprite.png) -31px -47px no-repeat;cursor:pointer}
-div.light_rounded .pp_contract{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -26px no-repeat;cursor:pointer}
-div.light_rounded .pp_contract:hover{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -47px no-repeat;cursor:pointer}
-div.light_rounded .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/light_rounded/sprite.png) -1px -1px no-repeat;cursor:pointer}
-div.light_rounded .pp_nav .pp_play{background:url(images/prettyPhoto/light_rounded/sprite.png) -1px -100px no-repeat;height:15px;width:14px}
-div.light_rounded .pp_nav .pp_pause{background:url(images/prettyPhoto/light_rounded/sprite.png) -24px -100px no-repeat;height:15px;width:14px}
-div.light_rounded .pp_arrow_previous{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -71px no-repeat}
-div.light_rounded .pp_arrow_next{background:url(images/prettyPhoto/light_rounded/sprite.png) -22px -71px no-repeat}
-div.light_rounded .pp_bottom .pp_left{background:url(images/prettyPhoto/light_rounded/sprite.png) -88px -80px no-repeat}
-div.light_rounded .pp_bottom .pp_right{background:url(images/prettyPhoto/light_rounded/sprite.png) -110px -80px no-repeat}
-div.dark_rounded .pp_top .pp_left{background:url(images/prettyPhoto/dark_rounded/sprite.png) -88px -53px no-repeat}
-div.dark_rounded .pp_top .pp_right{background:url(images/prettyPhoto/dark_rounded/sprite.png) -110px -53px no-repeat}
-div.dark_rounded .pp_content_container .pp_left{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y}
-div.dark_rounded .pp_content_container .pp_right{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y}
-div.dark_rounded .pp_next:hover{background:url(images/prettyPhoto/dark_rounded/btnNext.png) center right no-repeat;cursor:pointer}
-div.dark_rounded .pp_previous:hover{background:url(images/prettyPhoto/dark_rounded/btnPrevious.png) center left no-repeat;cursor:pointer}
-div.dark_rounded .pp_expand{background:url(images/prettyPhoto/dark_rounded/sprite.png) -31px -26px no-repeat;cursor:pointer}
-div.dark_rounded .pp_expand:hover{background:url(images/prettyPhoto/dark_rounded/sprite.png) -31px -47px no-repeat;cursor:pointer}
-div.dark_rounded .pp_contract{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -26px no-repeat;cursor:pointer}
-div.dark_rounded .pp_contract:hover{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -47px no-repeat;cursor:pointer}
-div.dark_rounded .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/dark_rounded/sprite.png) -1px -1px no-repeat;cursor:pointer}
-div.dark_rounded .pp_description{margin-right:85px;color:#fff}
-div.dark_rounded .pp_nav .pp_play{background:url(images/prettyPhoto/dark_rounded/sprite.png) -1px -100px no-repeat;height:15px;width:14px}
-div.dark_rounded .pp_nav .pp_pause{background:url(images/prettyPhoto/dark_rounded/sprite.png) -24px -100px no-repeat;height:15px;width:14px}
-div.dark_rounded .pp_arrow_previous{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -71px no-repeat}
-div.dark_rounded .pp_arrow_next{background:url(images/prettyPhoto/dark_rounded/sprite.png) -22px -71px no-repeat}
-div.dark_rounded .pp_bottom .pp_left{background:url(images/prettyPhoto/dark_rounded/sprite.png) -88px -80px no-repeat}
-div.dark_rounded .pp_bottom .pp_right{background:url(images/prettyPhoto/dark_rounded/sprite.png) -110px -80px no-repeat}
-div.dark_rounded .pp_loaderIcon{background:url(images/prettyPhoto/dark_rounded/loader.gif) center center no-repeat}
-div.dark_square .pp_left,div.dark_square .pp_middle,div.dark_square .pp_right,div.dark_square .pp_content{background:#000}
-div.dark_square .pp_description{color:#fff;margin:0 85px 0 0}
-div.dark_square .pp_loaderIcon{background:url(images/prettyPhoto/dark_square/loader.gif) center center no-repeat}
-div.dark_square .pp_expand{background:url(images/prettyPhoto/dark_square/sprite.png) -31px -26px no-repeat;cursor:pointer}
-div.dark_square .pp_expand:hover{background:url(images/prettyPhoto/dark_square/sprite.png) -31px -47px no-repeat;cursor:pointer}
-div.dark_square .pp_contract{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -26px no-repeat;cursor:pointer}
-div.dark_square .pp_contract:hover{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -47px no-repeat;cursor:pointer}
-div.dark_square .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/dark_square/sprite.png) -1px -1px no-repeat;cursor:pointer}
-div.dark_square .pp_nav{clear:none}
-div.dark_square .pp_nav .pp_play{background:url(images/prettyPhoto/dark_square/sprite.png) -1px -100px no-repeat;height:15px;width:14px}
-div.dark_square .pp_nav .pp_pause{background:url(images/prettyPhoto/dark_square/sprite.png) -24px -100px no-repeat;height:15px;width:14px}
-div.dark_square .pp_arrow_previous{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -71px no-repeat}
-div.dark_square .pp_arrow_next{background:url(images/prettyPhoto/dark_square/sprite.png) -22px -71px no-repeat}
-div.dark_square .pp_next:hover{background:url(images/prettyPhoto/dark_square/btnNext.png) center right no-repeat;cursor:pointer}
-div.dark_square .pp_previous:hover{background:url(images/prettyPhoto/dark_square/btnPrevious.png) center left no-repeat;cursor:pointer}
-div.light_square .pp_expand{background:url(images/prettyPhoto/light_square/sprite.png) -31px -26px no-repeat;cursor:pointer}
-div.light_square .pp_expand:hover{background:url(images/prettyPhoto/light_square/sprite.png) -31px -47px no-repeat;cursor:pointer}
-div.light_square .pp_contract{background:url(images/prettyPhoto/light_square/sprite.png) 0 -26px no-repeat;cursor:pointer}
-div.light_square .pp_contract:hover{background:url(images/prettyPhoto/light_square/sprite.png) 0 -47px no-repeat;cursor:pointer}
-div.light_square .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/light_square/sprite.png) -1px -1px no-repeat;cursor:pointer}
-div.light_square .pp_nav .pp_play{background:url(images/prettyPhoto/light_square/sprite.png) -1px -100px no-repeat;height:15px;width:14px}
-div.light_square .pp_nav .pp_pause{background:url(images/prettyPhoto/light_square/sprite.png) -24px -100px no-repeat;height:15px;width:14px}
-div.light_square .pp_arrow_previous{background:url(images/prettyPhoto/light_square/sprite.png) 0 -71px no-repeat}
-div.light_square .pp_arrow_next{background:url(images/prettyPhoto/light_square/sprite.png) -22px -71px no-repeat}
-div.light_square .pp_next:hover{background:url(images/prettyPhoto/light_square/btnNext.png) center right no-repeat;cursor:pointer}
-div.light_square .pp_previous:hover{background:url(images/prettyPhoto/light_square/btnPrevious.png) center left no-repeat;cursor:pointer}
-div.facebook .pp_top .pp_left{background:url(images/prettyPhoto/facebook/sprite.png) -88px -53px no-repeat}
-div.facebook .pp_top .pp_middle{background:url(images/prettyPhoto/facebook/contentPatternTop.png) top left repeat-x}
-div.facebook .pp_top .pp_right{background:url(images/prettyPhoto/facebook/sprite.png) -110px -53px no-repeat}
-div.facebook .pp_content_container .pp_left{background:url(images/prettyPhoto/facebook/contentPatternLeft.png) top left repeat-y}
-div.facebook .pp_content_container .pp_right{background:url(images/prettyPhoto/facebook/contentPatternRight.png) top right repeat-y}
-div.facebook .pp_expand{background:url(images/prettyPhoto/facebook/sprite.png) -31px -26px no-repeat;cursor:pointer}
-div.facebook .pp_expand:hover{background:url(images/prettyPhoto/facebook/sprite.png) -31px -47px no-repeat;cursor:pointer}
-div.facebook .pp_contract{background:url(images/prettyPhoto/facebook/sprite.png) 0 -26px no-repeat;cursor:pointer}
-div.facebook .pp_contract:hover{background:url(images/prettyPhoto/facebook/sprite.png) 0 -47px no-repeat;cursor:pointer}
-div.facebook .pp_close{width:22px;height:22px;background:url(images/prettyPhoto/facebook/sprite.png) -1px -1px no-repeat;cursor:pointer}
-div.facebook .pp_description{margin:0 37px 0 0}
-div.facebook .pp_loaderIcon{background:url(images/prettyPhoto/facebook/loader.gif) center center no-repeat}
-div.facebook .pp_arrow_previous{background:url(images/prettyPhoto/facebook/sprite.png) 0 -71px no-repeat;height:22px;margin-top:0;width:22px}
-div.facebook .pp_arrow_previous.disabled{background-position:0 -96px;cursor:default}
-div.facebook .pp_arrow_next{background:url(images/prettyPhoto/facebook/sprite.png) -32px -71px no-repeat;height:22px;margin-top:0;width:22px}
-div.facebook .pp_arrow_next.disabled{background-position:-32px -96px;cursor:default}
-div.facebook .pp_nav{margin-top:0}
-div.facebook .pp_nav p{font-size:15px;padding:0 3px 0 4px}
-div.facebook .pp_nav .pp_play{background:url(images/prettyPhoto/facebook/sprite.png) -1px -123px no-repeat;height:22px;width:22px}
-div.facebook .pp_nav .pp_pause{background:url(images/prettyPhoto/facebook/sprite.png) -32px -123px no-repeat;height:22px;width:22px}
-div.facebook .pp_next:hover{background:url(images/prettyPhoto/facebook/btnNext.png) center right no-repeat;cursor:pointer}
-div.facebook .pp_previous:hover{background:url(images/prettyPhoto/facebook/btnPrevious.png) center left no-repeat;cursor:pointer}
-div.facebook .pp_bottom .pp_left{background:url(images/prettyPhoto/facebook/sprite.png) -88px -80px no-repeat}
-div.facebook .pp_bottom .pp_middle{background:url(images/prettyPhoto/facebook/contentPatternBottom.png) top left repeat-x}
-div.facebook .pp_bottom .pp_right{background:url(images/prettyPhoto/facebook/sprite.png) -110px -80px no-repeat}
-div.pp_pic_holder a:focus{outline:none}
-div.pp_overlay{background:#000;display:none;left:0;position:absolute;top:0;width:100%;z-index:9500}
-div.pp_pic_holder{display:none;position:absolute;width:100px;z-index:10000}
-.pp_content{height:40px;min-width:40px}
-* html .pp_content{width:40px}
-.pp_content_container{position:relative;text-align:left;width:100%}
-.pp_content_container .pp_left{padding-left:20px}
-.pp_content_container .pp_right{padding-right:20px}
-.pp_content_container .pp_details{float:left;margin:10px 0 2px}
-.pp_description{display:none;margin:0}
-.pp_social{float:left;margin:0}
-.pp_social .facebook{float:left;margin-left:5px;width:55px;overflow:hidden}
-.pp_social .twitter{float:left}
-.pp_nav{clear:right;float:left;margin:3px 10px 0 0}
-.pp_nav p{float:left;white-space:nowrap;margin:2px 4px}
-.pp_nav .pp_play,.pp_nav .pp_pause{float:left;margin-right:4px;text-indent:-10000px}
-a.pp_arrow_previous,a.pp_arrow_next{display:block;float:left;height:15px;margin-top:3px;overflow:hidden;text-indent:-10000px;width:14px}
-.pp_hoverContainer{position:absolute;top:0;width:100%;z-index:2000}
-.pp_gallery{display:none;left:50%;margin-top:-50px;position:absolute;z-index:10000}
-.pp_gallery div{float:left;overflow:hidden;position:relative}
-.pp_gallery ul{float:left;height:35px;position:relative;white-space:nowrap;margin:0 0 0 5px;padding:0}
-.pp_gallery ul a{border:1px rgba(0,0,0,0.5) solid;display:block;float:left;height:33px;overflow:hidden}
-.pp_gallery ul a img{border:0}
-.pp_gallery li{display:block;float:left;margin:0 5px 0 0;padding:0}
-.pp_gallery li.default a{background:url(images/prettyPhoto/facebook/default_thumbnail.gif) 0 0 no-repeat;display:block;height:33px;width:50px}
-.pp_gallery .pp_arrow_previous,.pp_gallery .pp_arrow_next{margin-top:7px!important}
-a.pp_next{background:url(images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;display:block;float:right;height:100%;text-indent:-10000px;width:49%}
-a.pp_previous{background:url(images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;display:block;float:left;height:100%;text-indent:-10000px;width:49%}
-a.pp_expand,a.pp_contract{cursor:pointer;display:none;height:20px;position:absolute;right:30px;text-indent:-10000px;top:10px;width:20px;z-index:20000}
-a.pp_close{position:absolute;right:0;top:0;display:block;line-height:22px;text-indent:-10000px}
-.pp_loaderIcon{display:block;height:24px;left:50%;position:absolute;top:50%;width:24px;margin:-12px 0 0 -12px}
-#pp_full_res{line-height:1!important}
-#pp_full_res .pp_inline{text-align:left}
-#pp_full_res .pp_inline p{margin:0 0 15px}
-div.ppt{color:#fff;display:none;font-size:17px;z-index:9999;margin:0 0 5px 15px}
-div.pp_default .pp_content,div.light_rounded .pp_content{background-color:#fff}
-div.pp_default #pp_full_res .pp_inline,div.light_rounded .pp_content .ppt,div.light_rounded #pp_full_res .pp_inline,div.light_square .pp_content .ppt,div.light_square #pp_full_res .pp_inline,div.facebook .pp_content .ppt,div.facebook #pp_full_res .pp_inline{color:#000}
-div.pp_default .pp_gallery ul li a:hover,div.pp_default .pp_gallery ul li.selected a,.pp_gallery ul a:hover,.pp_gallery li.selected a{border-color:#fff}
-div.pp_default .pp_details,div.light_rounded .pp_details,div.dark_rounded .pp_details,div.dark_square .pp_details,div.light_square .pp_details,div.facebook .pp_details{position:relative}
-div.light_rounded .pp_top .pp_middle,div.light_rounded .pp_content_container .pp_left,div.light_rounded .pp_content_container .pp_right,div.light_rounded .pp_bottom .pp_middle,div.light_square .pp_left,div.light_square .pp_middle,div.light_square .pp_right,div.light_square .pp_content,div.facebook .pp_content{background:#fff}
-div.light_rounded .pp_description,div.light_square .pp_description{margin-right:85px}
-div.light_rounded .pp_gallery a.pp_arrow_previous,div.light_rounded .pp_gallery a.pp_arrow_next,div.dark_rounded .pp_gallery a.pp_arrow_previous,div.dark_rounded .pp_gallery a.pp_arrow_next,div.dark_square .pp_gallery a.pp_arrow_previous,div.dark_square .pp_gallery a.pp_arrow_next,div.light_square .pp_gallery a.pp_arrow_previous,div.light_square .pp_gallery a.pp_arrow_next{margin-top:12px!important}
-div.light_rounded .pp_arrow_previous.disabled,div.dark_rounded .pp_arrow_previous.disabled,div.dark_square .pp_arrow_previous.disabled,div.light_square .pp_arrow_previous.disabled{background-position:0 -87px;cursor:default}
-div.light_rounded .pp_arrow_next.disabled,div.dark_rounded .pp_arrow_next.disabled,div.dark_square .pp_arrow_next.disabled,div.light_square .pp_arrow_next.disabled{background-position:-22px -87px;cursor:default}
-div.light_rounded .pp_loaderIcon,div.light_square .pp_loaderIcon{background:url(images/prettyPhoto/light_rounded/loader.gif) center center no-repeat}
-div.dark_rounded .pp_top .pp_middle,div.dark_rounded .pp_content,div.dark_rounded .pp_bottom .pp_middle{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat}
-div.dark_rounded .currentTextHolder,div.dark_square .currentTextHolder{color:#c4c4c4}
-div.dark_rounded #pp_full_res .pp_inline,div.dark_square #pp_full_res .pp_inline{color:#fff}
-.pp_top,.pp_bottom{height:20px;position:relative}
-* html .pp_top,* html .pp_bottom{padding:0 20px}
-.pp_top .pp_left,.pp_bottom .pp_left{height:20px;left:0;position:absolute;width:20px}
-.pp_top .pp_middle,.pp_bottom .pp_middle{height:20px;left:20px;position:absolute;right:20px}
-* html .pp_top .pp_middle,* html .pp_bottom .pp_middle{left:0;position:static}
-.pp_top .pp_right,.pp_bottom .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}
-.pp_fade,.pp_gallery li.default a img{display:none}
-
-/* --------------------------------------------
- LAYOUT
--------------------------------------------- */
-
-.boxed-layout {
- width: 1000px;
- margin: 0px auto;
- background: #fff;
-}
-.page-shadow .boxed-layout {
- -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, .3);
- -moz-box-shadow: 0 0 4px rgba(0, 0, 0, .3);
- box-shadow: 0 0 4px rgba(0, 0, 0, .3);
-}
-#not-found .page-text p {
- margin-bottom: 50px;
-}
-#main-container {
- display: block;
- overflow: hidden;
- position: relative;
-}
-.inner-page-wrap {
- margin-top: 50px;
- margin-bottom: 50px;
-}
-.single-portfolio .inner-page-wrap, .inner-page-wrap.no-bottom-spacing {
- margin-bottom: 0;
-}
-.single-portfolio .media-wrap {
- margin-top: 50px;
- margin-bottom: 0;
-}
-.inner-page-wrap.no-top-spacing {
- margin-top: 0;
-}
-.has-left-sidebar aside.sidebar {
- float: left;
-}
-.has-left-sidebar article, .has-left-sidebar .type-page, .has-left-sidebar .archive-page, .has-left-sidebar > .type-product {
- float: right!important;
-}
-.has-both-sidebars aside.left-sidebar {
- float: left;
-}
-.has-both-sidebars aside.right-sidebar {
- float: right;
-}
-.has-both-sidebars article, .has-both-sidebars .type-page, .has-both-sidebars .archive-page, .has-both-sidebars > .type-product {
- float: left;
-}
-.has-both-sidebars .page-content {
- float: right!important;
-}
-.page-content {
- border-bottom: 0 solid transparent;
-}
-.page-content > ul {
- list-style: disc inside none;
-}
-.has-both-sidebars aside.sidebar {
- padding-top: 0;
-}
-.alt-bg {
- margin: 40px 0;
- margin-left: -180px;
- padding-top: 30px;
- padding-bottom: 30px;
- padding-left: 200px;
- padding-right: 200px;
- border-top: 1px solid transparent;
- border-bottom: 1px solid transparent;
-}
-.pb-margin-bottom {
- margin-bottom: 30px;
-}
-.pb-border-bottom {
- border-bottom: 1px solid transparent;
-}
-.pb-border-top {
- border-top: 1px solid transparent;
-}
-.wpb_wrapper .row-fluid {
- border-bottom: 0;
- margin-bottom: 10px;
-}
-.heading-wrap i {
- font-size: 28px;
- margin-right: 15px;
- line-height: 30px;
- float: left;
- display: inline-block;
-}
-.slider-wrap .heading-wrap {
- text-align: center;
- margin-bottom: 10px;
-}
-h3.wpb_heading {
- display: inline-block;
- font-weight: normal;
- margin-top: 0;
- margin-bottom: 20px;
- padding-bottom: 4px;
- border-bottom: 2px solid transparent;
-}
-.help-text {
- font-size: 18px;
- line-height: 26px;
- margin-bottom: 60px;
-}
-.help-text .search-form {
- margin-bottom: 40px;
-}
-.help-text .search-form input {
- font-size: 12px;
-}
-
-/* --------------------------------------------
- PAGE HEADING
--------------------------------------------- */
-
-.page-heading {
- padding-top: 30px;
- padding-bottom: 30px;
- margin-top: 0;
- margin-bottom: 0!important;
- position: relative;
- text-align: center;
- border-bottom: 1px solid transparent;
- border-top: 0!important;
-}
-.page-heading h1 {
- margin-top: 0;
- margin-bottom: 0;
-}
-.page-heading h3 {
- margin-bottom: 0;
-}
-#breadcrumbs {
- font-size: 11px;
- line-height: 22px;
- margin-top: 0;
- margin-bottom: 0;
- border-top: 0;
- padding-top: 6px;
- padding-bottom: 6px;
- z-index: 28;
- position: relative;
-}
-#breadcrumbs a {
- text-decoration: none;
-}
-#breadcrumbs i, .widget_breadcrumb_navxt i {
- padding: 0 8px;
- font-size: 11px;
- width: 5px;
-}
-
-/* --------------------------------------------
- PAGINATION
--------------------------------------------- */
-
-.pagination-wrap {
- margin-top: 30px;
-}
-.single .pagination-wrap {
- margin: 0;
- padding: 15px 0;
- margin-bottom: 20px;
- margin-top: 10px!important;
- border-bottom: 1px solid transparent;
-}
-.single .pagination-wrap.portfolio-pagination {
- border-bottom: 0;
- margin: 10px 0;
-}
-.single.single-team .portfolio-pagination.pagination-wrap {
- border-top-width: 1px;
- border-top-style: solid;
-}
-
-/* --------------------------------------------
- SEARCH FORM
--------------------------------------------- */
-
-.search-form input {
- border: 1px solid #ccc;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background: transparent;
- width: 85%;
- padding: 10px;
- margin-top: 40px;
-}
-
-/* --------------------------------------------
- TOOLTIPS
--------------------------------------------- */
-
-span.tooltip {
- display: block;
- background: #222;
- color: #f7f7f7;
- position: absolute;
- left: 50%;
- bottom: 25px;
- padding: 3px 10px;
- width: auto;
- line-height: 20px;
- white-space: nowrap;
- z-index: 8;
- opacity: 0;
- -moz-opacity: 0;
- filter:alpha(opacity=0);
-}
-span.tooltip .arrow {
- position: absolute;
- left: 50%;
- bottom: -4px;
- margin-left: -6px;
- width: 0;
- height: 0;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- border-top: 5px solid #222;
-}
-.grid-image span.tooltip {
- bottom: 65px;
-}
-
-/* #Header
-================================================== */
-
-.hide-header #top-bar, .hide-header #header-section, .hide-header #mini-header {
- display: none;
-}
-
-/* --------------------------------------------
- TOP BAR
--------------------------------------------- */
-
-#top-bar {
- border-bottom: 1px solid transparent;
-}
-#top-bar #top-bar-menu {
- position: relative;
- z-index: 32;
-}
-#top-bar.top-bar-menu-right .top-menu {
- float: right;
-}
-#top-bar.top-bar-menu-right .menu {
- float: right;
-}
-.top-bar-menu-right #top-bar-menu > div {
- float: right;
-}
-#top-bar.top-bar-menu-left #top-bar-menu > div {
- float: left;
- margin-left: 0;
-}
-#top-bar .menu > li {
- font-size: 11px;
- border-left: 1px solid transparent;
-}
-#top-bar .menu > li:first-child {
- border-left-width: 0;
- border-top-width: 1px;
-}
-#top-bar #aux-nav .menu > li:first-child {
- border-left-width: 1px;
-}
-#top-bar.top-bar-menu-left #aux-nav .menu > li {
- border-left: 0;
- border-right: 1px solid #e4e4e4;
-}
-#top-bar .menu > li:before {
- display: none;
-}
-#top-bar .menu > li.parent:after {
- content: "\f107";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: block;
- font-size: 12px;
- position: absolute;
- top: 50%;
- margin-top: -9px;
- right: 9px;
-}
-#top-bar .menu > li.parent {
- padding-right: 15px;
-}
-#top-bar .menu > li > a {
- padding: 3px 10px 3px;
- margin: 0;
-}
-nav#top-bar-menu .menu > li > ul {
- top: 30px;
- min-width: auto;
-}
-#top-bar.top-bar-menu-right .menu > li > ul {
- left: auto;
- right: -1px;
-}
-nav#mobile-top-bar-menu {
- display: none;
-}
-
-/* --------------------------------------------
- TOP BAR SOCIAL
--------------------------------------------- */
-
-.top-bar-menu-right #top-bar-social {
- float: left;
-}
-.top-bar-menu-left #top-bar-social {
- float: right;
-}
-#top-bar-social {
- font-size: 11px;
- line-height: 30px;
- text-align: right;
-}
-#top-bar-social > ul {
- float: right;
- margin-top: 3px;
- margin-bottom: 0;
- -moz-opacity: 0.5;
- filter: alpha(opacity= 50);
- opacity: 0.5;
-}
-.top-bar-menu-right #top-bar-social > ul {
- float: left;
-}
-#top-bar-social ul li {
- margin-bottom: 0;
-}
-.top-bar-menu-right #top-bar-social {
- text-align: left;
-}
-
-/* --------------------------------------------
- TOP BAR SUBSCRIBE
--------------------------------------------- */
-
-#header-subscribe form {
- margin: 20px;
- height: auto;
- overflow: hidden;
-}
-#header-subscribe label {
- font-size: 12px;
-}
-#header-subscribe input {
- font-size: 12px;
-}
-#header-subscribe .sf-button {
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- float: right;
- padding: 6px 12px;
- margin-top: 5px;
-}
-#header-subscribe .sf-button:hover {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
-}
-
-
-/* --------------------------------------------
- TOP BAR LOGIN
--------------------------------------------- */
-
-#header-login form {
- margin: 20px;
-}
-#header-login label {
- font-size: 12px;
-}
-#header-login input {
- font-size: 12px;
-}
-#header-login input#password {
- margin-bottom: 15px;
-}
-#header-login .sf-button {
- -moz-border-radius: 8px;
- -webkit-border-radius: 8px;
- border-radius: 8px;
- float: right;
- padding: 6px 12px;
- margin-top: 5px;
-}
-#header-login .sf-button:hover {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
-}
-#header-login a {
- display: inline;
- padding: 0 5px;
- line-height: 24px;
-}
-#header-login .logout-wrap {
- margin: 20px;
-}
-
-/* --------------------------------------------
- TOP BAR LANGUAGE SELECTOR
--------------------------------------------- */
-
-.aux-languages .languages-menu-item > img {
- margin-right: 8px;
- vertical-align: -2px;
-}
-#header-languages > li > a, #header-languages > li > div {
- padding: 8px 12px;
- display: block;
- white-space: nowrap;
-}
-#header-languages img {
- margin-right: 10px;
- width: 18px;
- height: 12px;
- display: inline-block;
- margin-top: -2px;
-}
-
-
-/* --------------------------------------------
- TOP BAR CART VIEW
--------------------------------------------- */
-
-#header-cart > li > div {
- padding: 8px 12px;
- display: block;
- white-space: nowrap;
-}
-
-
-/* --------------------------------------------
- MAIN HEADER
--------------------------------------------- */
-
-#header-section {
- padding: 15px 0;
- border-bottom: 1px solid #e4e4e4;
-}
-#header-section .header-spacer {
- display: block;
- height: 20px;
-}
-#logo a, #mini-logo a {
- height: auto;
- overflow: hidden;
- display: block;
-}
-#logo img, #mini-logo img {
- display: block;
- max-width: 100%;
-}
-.logo-fade #logo img {
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-#logo img.retina, #mini-logo img.retina {
- display: none;
- max-width: 100%;
-}
-#mini-logo img {
- max-height: 60px;
- width: auto!important;
- padding: 5px 0;
-}
-.logo-right #logo {
- float: right;
-}
-.logo-right #logo img {
- float: right;
-}
-.logo-fade #logo a:hover img {
- -moz-opacity: 0.6;
- filter: alpha(opacity= 60);
- opacity: 0.6;
-}
-#nav-section {
- min-height: 50px;
- position: relative;
- z-index: 30;
-}
-#nav-section.nav-shadow {
- -moz-box-shadow: 0 2px 4px -2px rgba(0,0,0,.1);
- -webkit-box-shadow: 0 2px 4px -2px rgba(0,0,0,.1);
- box-shadow: 0 2px 4px -2px rgba(0,0,0,.1);
-}
-#main-navigation {
- float: left;
- margin-top: 1px;
- position: relative;
-}
-.logo-right #main-navigation, .logo-right #mini-navigation {
- margin-left: -10px;
-}
-.logo-left .nav-wrap {
- float: right;
-}
-#main-navigation > div {
- margin-left: 0;
-}
-#nav-pointer {
- position: absolute;
- bottom: 3px;
- left: 0;
- width: 0;
- height: 2px;
- display: none;
- z-index: 2;
-}
-.nav-indicator #nav-pointer {
- display: block;
-}
-.single #nav-pointer {
- display: none;
-}
-.error404 #nav-pointer {
- display: none;
-}
-nav .menu {
- height: auto;
- margin: 0;
- position: relative;
- padding: 0;
-}
-nav .menu li {
- float: left;
- display: inline-block;
- margin: 0;
- font-size: 14px;
- padding: 2px 0;
- position: relative;
- z-index: 3;
-}
-nav .menu li:first-child {
- background: none;
-}
-.menu-dividers nav .menu .sub-menu li {
- background: none;
-}
-nav .menu li a {
- text-decoration: none;
- padding: 12px 0;
- margin: 0 15px;
- display: block;
- white-space: nowrap;
- background: transparent;
-}
-.menu-dividers nav .menu > li:before {
- content: '';
- position: absolute;
- left: 0;
- top: 50%;
- margin-left: -3px;
- margin-top: -3px;
- background: #ccc;
- width: 6px;
- height: 6px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
-}
-nav .menu > li:first-child > a {
- padding-left: 0;
-}
-nav .menu > li:first-child:before {
- display: none;
-}
-nav .menu ul {
- border: 1px solid transparent;
- position: absolute;
- height: auto;
- z-index: 9995;
- margin: 0;
- top: 45px;
- left: 15px;
- min-width: 100px;
- display: none;
-}
-nav .menu ul li {
- width: 100%;
- position: relative;
- display: block;
- background: none repeat scroll 0 0 transparent;
- border-bottom: 1px solid transparent;
- float: none;
- margin: 0;
- padding: 0;
- font-weight: normal;
- font-size: 11px;
- text-transform: none;
- height: auto;
- z-index: 42;
-}
-nav .menu .sub-menu .parent > a:after {
- content: '';
- width: 0;
- height: 0;
- border-top: 4px solid transparent;
- border-bottom: 4px solid transparent;
- border-left: 4px solid #CCC;
- position: absolute;
- right: 10px;
- top: 50%;
- margin-top: -4px;
-}
-nav .menu ul ul {
- top: -1px;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
-}
-nav .menu ul ul li:first-child:after {
- left: -8px;
- top: 32%;
- margin-top: 0;
- border-top: 6px solid transparent;
- border-right: 6px solid #444;
- border-bottom: 6px solid transparent;
-}
-nav .menu ul li:last-child {
- border: 0;
-}
-nav .menu ul li a {
- padding: 8px 12px;
- display: block;
- margin: 0;
- white-space: nowrap;
- max-width: 220px;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-nav .menu ul li.parent a {
- padding-right: 24px;
-}
-nav .menu li:hover ul li a {
- background-color: transparent;
-}
-.show-menu {
- margin: 0 auto;
- font-size: 12px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- padding: 10px 15px;
- line-height: 20px;
-}
-#top-bar .show-menu {
- width: 60%;
- padding: 6px 10px;
-}
-.show-menu:hover {
- text-decoration: none;
-}
-.show-menu i {
- float: right;
- line-height: 20px;
- font-size: 18px;
-}
-#nav-search {
- display: block;
- text-decoration: none;
- float: left;
- border-radius: 30px;
- padding: 4px 9px;
- line-height: 11px;
- height: 21px;
- margin-top: 10px;
- margin-left: 10px;
-}
-.logo-right #nav-search {
- margin-left: 5px;
- margin-right: 0;
-}
-#nav-search a {
- text-decoration: none;
- float: left;
- padding-top: 4px;
-}
-#nav-search i {
- display: inline-block;
- font-size: 12px;
-}
-#nav-search form {
- float: right;
- margin-bottom: 0;
-}
-#nav-search input {
- float: right;
- width: 1px;
- max-width: none;
- text-align: left;
- height: 18px;
- border: 0;
- margin: 0;
- box-shadow: none;
- padding: 0!important;
- background: none;
- font-size: 12px;
- line-height: 18px;
-}
-#nav-search input:focus {
- outline: none;
- border: 0;
- padding: 2px 5px 0!important;
- box-shadow: none;
-}
-#header-shadow {
- background: transparent url('images/header-shadow.png') no-repeat center top;
- background-size: 100% auto;
- width: 100%;
- height: 30px;
- position: absolute;
- top: 0;
- left: 0;
- z-index: 27;
-}
-
-/* --------------------------------------------
- MINI HEADER
--------------------------------------------- */
-
-#mini-header {
- border-bottom: 1px solid #e4e4e4;
- display: block;
- position: fixed;
- top: -120px;
- z-index: 999;
- width: 100%;
-}
-.boxed-layout #mini-header {
- width: auto;
- padding: 0 30px;
-}
-#mini-header #logo img {
- height: 32px;
- width: auto!important;
- padding: 8px 0;
-}
-#mini-navigation {
- float: left;
-}
-#mini-navigation .menu > li > ul {
- top: 48px;
- left: 0!important;
-}
-#mini-navigation .menu ul li ul {
- top: 0;
-}
-#mini-search {
- display: block;
- text-decoration: none;
- float: left;
- border-radius: 30px;
- padding: 4px 9px;
- line-height: 11px;
- height: 21px;
- margin-top: 10px;
- margin-left: 10px;
-}
-.logo-right #mini-search {
- margin-left: 5px;
- margin-right: 0;
-}
-#mini-search a {
- text-decoration: none;
- float: left;
- padding-top: 4px;
-}
-#mini-search i {
- display: inline-block;
- font-size: 12px;
-}
-#mini-search form {
- float: right;
- margin-bottom: 0;
-}
-#mini-search input {
- float: right;
- display: none;
- width: 1px;
- max-width: none;
- text-align: left;
- height: 18px;
- border: 0;
- margin: 0;
- box-shadow: none;
- padding: 0!important;
- background: none;
- font-size: 12px;
- line-height: 18px;
-}
-#mini-search input:focus {
- outline: none;
- border: 0;
- padding: 2px 5px 0!important;
- box-shadow: none;
-}
-
-/* #Widgets
-================================================== */
-
-.widget {
- padding-bottom: 45px;
-}
-.widget ul {
- margin: 0;
- list-style: none;
-}
-.widget ul li {
- margin-bottom: 0;
- line-height: 16px;
-}
-.widget_recent_comments ul li {
- padding: 10px;
-}
-.widget ul li > a {
- padding: 5px 0;
- display: block;
-}
-.widget ul.flickr_images li a {
- padding: 0;
-}
-.widget a {
- text-decoration: none;
-}
-.widget a:hover {
- text-decoration: underline;
-}
-.widget_categories ul, .widget_archive ul, .widget_nav_menu ul, .widget_recent_comments ul, .widget_meta ul, .widget_recent_entries ul, .widget_product_categories ul {
- border: 1px solid #ececec; /* stroke */
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
-}
-.widget_categories ul > li, .widget_archive ul > li, .widget_nav_menu ul > li, .widget_recent_comments ul > li, .widget_meta ul > li, .widget_recent_entries ul > li, .widget_product_categories ul > li {
- border-top: 1px solid transparent;
-}
-.widget_categories ul > li:first-child, .widget_archive ul > li:first-child, .widget_nav_menu ul > li:first-child, .widget_recent_comments ul > li:first-child, .widget_meta ul > li:first-child, .widget_recent_entries ul > li:first-child, .widget_product_categories ul > li:first-child {
- border-top: 0;
-}
-.widget_categories ul > li a, .widget_archive ul > li a, .widget_nav_menu ul > li a, .widget_meta ul > li a, .widget_recent_entries ul > li a, .widget_product_categories ul > li a {
- padding: 10px 15px;
-}
-.widget_categories ul > li a:hover, .widget_archive ul > li a:hover, .widget_nav_menu ul > li a:hover, .widget_meta ul > li a:hover, .widget_recent_entries ul > li a:hover, .widget_product_categories ul > li a:hover {
- text-decoration: none;
-}
-.widget_categories ul > li a:before, .widget_archive ul > li a:before, .widget_nav_menu ul > li a:before, .widget_meta ul > li a:before, .widget_recent_entries ul > li a:before, .widget_product_categories ul > li a:before {
- content: "\f105";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
- font-size: 14px;
- padding-right: 10px;
-}
-.widget_nav_menu ul.sub-menu {
- -moz-border-radius: 0;
- -webkit-border-radius: 0;
- border-radius: 0; /* border radius */
- border-left: 0;
- border-right: 0;
- border-bottom: 0;
-}
-.widget_nav_menu ul.sub-menu li {
- padding-left: 15px;
-}
-.widget .wp-tag-cloud {
- margin: 0;
- padding: 0;
- list-style: none;
- height: auto;
- overflow: hidden;
-}
-.widget .wp-tag-cloud li {
- float: left;
- margin-bottom: 4px;
-}
-.widget ul.wp-tag-cloud li > a {
- margin-right: 4px;
- padding: 6px 8px;
- text-decoration: none;
- moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- border: 1px solid #e4e4e4;
- font-size: 14px!important;
-}
-.widget .wp-tag-cloud li > a:hover {
- border-color: transparent;
-}
-.widget-video iframe {
- width: 100%;
-}
-.widget_search form {
- position: relative;
- margin-bottom: 0;
-}
-.widget_search form input {
- margin: 0;
- border: 0;
- width: 100%;
- height: 32px;
- font-size: 12px;
- moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background-color: #e4e4e4;
- -moz-box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.widget_search form:after {
- content: "\f002";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
- font-size: 14px;
- padding-right: 10px;
- position: absolute;
- float: right;
- top: 5px;
- right: 0;
- opacity: 0.3;
- -moz-opacity: 0.3;
- filter:alpha(opacity=30);
-}
-ul.recent-posts {
- list-style: none;
-}
-.recent-post {
- height: auto;
- overflow: hidden;
- float: left;
- margin-bottom: 20px;
- -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- box-shadow: 0 1px 0 rgba(0,0,0,.1);
-}
-.recent-post figure {
- width: 100%;
- height: auto;
- position: relative;
- background-color: #212121;
- overflow: hidden;
-}
-.recent-post figure img {
- width: 100%;
- height: auto;
- position: relative;
- z-index: 3;
- display: block!important;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.recent-post figure iframe {
- display: block;
- width: 100%;
-}
-.recent-post figure:hover img {
- -moz-transform: scale(1.2);
- -webkit-transform: scale(1.2);
- -o-transform: scale(1.2);
- -ms-transform: scale(1.2);
- transform: scale(1.2);
-}
-.recent-post .details-wrap {
- display: inline-block;
- vertical-align: top;
- padding: 15px;
-}
-.recent-post .post-item-details {
- padding: 15px;
- border-top: 1px dashed transparent;
-}
-.recent-post .post-item-details .comments-likes, .recent-post .post-item-details .comments-likes i, .recent-post .post-item-details .comments-likes span {
- font-weight: normal;
-}
-.recent-post .post-item-details .comments-likes .icon-comments {
- margin-right: 3px;
-}
-.wpb_recent_posts_widget .recent-post .details-wrap, .wpb_posts_carousel_widget .recent-post .details-wrap {
- padding: 15px 0;
-}
-.wpb_recent_posts_widget .recent-post .post-item-details, .wpb_posts_carousel_widget .recent-post .post-item-details {
- padding: 15px 0;
-}
-.recent-post h4 {
- margin-top: 0;
- margin-bottom: 6px;
-}
-.recent-post h4 a {
- text-decoration: none;
-}
-.recent-post .excerpt p {
- margin-bottom: 0;
-}
-.recent-post.format-chat .chat {
- margin-top: 20px;
-}
-.recent-post figure.quote {
- background: transparent!important;
-}
-.blog-item.format-quote h2, .blog-item.format-status h2, .blog-item.format-aside h2, .blog-item.format-quote h3, .blog-item.format-status h3, .blog-item.format-aside h3, .blog-item.format-quote h4, .blog-item.format-status h4, .blog-item.format-aside h4 {
- display: none;
-}
-.recent-post .post-date {
- margin-right: 4px;
-}
-.read-more {
- text-decoration: none;
- display: block;
- margin-top: 15px;
-}
-.read-more i, .read-more em {
- margin-left: 4px;
- margin-right: 6px;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- font-size: 0px;
-}
-.read-more i:before, .read-more em:before {
- font-size: 12px!important;
-}
-.read-more:hover i, .read-more:hover em {
- margin-left: 8px;
-}
-.read-more:hover {
- text-decoration: none;
-}
-.read-more-link {
- text-decoration: none;
- margin-top: 5px;
- font-weight: bold;
- display: block;
-}
-.item-link {
- text-decoration: none;
-}
-.item-link i {
- margin-left: 5px;
-}
-.wpb_impact_text {
- background: transparent;
- clear: both;
- height: auto;
- overflow: hidden;
-}
-.wpb_impact_text.alt-bg {
- padding-top: 20px;
- padding-bottom: 20px;
-}
-.impact-text-wrap {
- position: relative;
-}
-.wpb_impact_text.cta_align_right a.sf-button {
- margin-right: 0;
-}
-.wpb_impact_text .wpb_call_text, .impact-text {
- font-size: 24px;
- line-height: 32px;
- font-weight: 300;
- margin-bottom: 0;
-}
-.wpb_impact_text .wpb_button {
- margin-bottom: 0;
-}
-.cta_align_left .wpb_call_text, .cta_align_right .wpb_call_text {
- width: 83%;
-}
-.cta_align_left .wpb_button {
- position: absolute;
- left: 0;
- top: 50%;
- margin-top: -15px;
- max-width: 12%;
- max-width: 15%;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- word-wrap: break-word;
-}
-.cta_align_right .wpb_button {
- position: absolute;
- right: 0;
- top: 50%;
- margin-top: -15px;
- max-width: 12%;
-}
-.cta_align_left .wpb_button.large, .cta_align_right .wpb_button.large {
- margin-top: -23px;
-}
-.cta_align_bottom .wpb_button {
- margin: 15px 0 0 0;
-}
-.wpb_latest_tweet_bar_widget {
- padding: 25px 0;
-}
-.wpb_latest_tweet_bar_widget .twitter-bird {
- font-size: 14px;
- line-height: 24px;
- float: left;
- margin-right: 10px;
-}
-.wpb_latest_tweet_bar_widget .tweet-text {
- line-height: 24px;
- display: block;
- float: left;
- margin-right: 5px;
-}
-.wpb_latest_tweet_bar_widget .tweet-text a {
- font-weight: bold;
- text-decoration: none;
-}
-.wpb_latest_tweet_bar_widget .twitter_intents {
- display: inline-block;
- line-height: 24px;
- margin-left: 10px;
-}
-.wpb_latest_tweet_bar_widget .twitter_intents a {
- margin-left: 5px;
-}
-.carousel-wrap {
- position: relative;
- overflow: hidden;
-}
-.carousel-wrap .heading-wrap {
- height: auto;
- overflow: hidden;
- min-height: 50px;
-}
-.carousel-wrap .heading-wrap .carousel-nav {
- position: absolute;
- right: 0;
- top: 0;
-}
-.carousel-wrap .carousel-items {
- display: none;
- list-style: none;
-}
-.caroufredsel_wrapper {
- margin-left: -20px!important;
-}
-.carousel-wrap .carousel-items > li {
- margin-bottom: 10px;
- float: left;
-}
-.carousel-wrap a.prev {
- position: absolute;
- top: 14px;
- right: 18px;
-}
-.carousel-wrap a.next {
- position: absolute;
- top: 14px;
- right: 0;
-}
-.carousel-wrap a.hidden {
- display: none;
-}
-.carousel-wrap > a:hover {
- text-decoration: none;
-}
-.carousel-wrap > a > i {
- font-size: 16px;
-}
-.wpb_single_image .wpb_wrapper.shadow {
- padding: 0 0 1.8%;
- background: transparent url('images/box_shadow_effect.png') no-repeat center bottom;
- background-size: 100% auto;
-}
-.wpb_single_image {
- margin-bottom: 30px;
-}
-.wpb_single_image img {
- width: 100%;
- height: auto;
- display: block;
-}
-.wpb_single_image .image-caption {
- text-align: center;
- margin: 10px 0 20px;
- font-style: italic;
-}
-.wpb_video_widget .wpb_wrapper.shadow {
- padding: 0 0 1.6%;
- margin-bottom: 20px;
- background: transparent url('images/box_shadow_effect.png') no-repeat center bottom;
- background-size: 100% auto;
-}
-figure.lightbox {
- position: relative;
-}
-.widget.widget_lip_most_loved_widget li {
- height: auto;
- overflow: hidden;
- margin-bottom: 10px;
-}
-.widget_lip_most_loved_widget .loved-item a {
- line-height: 28px;
- padding: 0;
- display: block;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-.loved-item > br {
- display: none;
-}
-.loved-item .loved-count {
- background: #ccc;
- float: left;
- margin-right: 10px;
- -moz-border-radius: 12px;
- -webkit-border-radius: 12px;
- border-radius: 12px;
- padding: 6px 10px 6px 7px;
- line-height: 16px;
- font-weight: normal;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.loved-item .loved-count > i {
- vertical-align: 0px;
- font-size: 13px;
- margin-right: 2px;
-}
-.loved-item .loved-count > span {
- margin-right: 5px;
- vertical-align: 1px;
-}
-.widget .recent-posts-list > li {
- height: auto;
- overflow: hidden;
- margin-bottom: 0;
- padding-bottom: 10px;
-}
-.recent-posts-list li .recent-post-image {
- padding: 0;
- float: left;
- width: 94px;
- height: auto;
- min-height: 70px;
- background: #222;
- border: 3px solid #fff; /* stroke */
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
- background-color: #212121; /* layer fill content */
- -moz-box-shadow: 0 1px 1px rgba(0,0,0,.4); /* drop shadow */
- -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.4); /* drop shadow */
- box-shadow: 0 1px 1px rgba(0,0,0,.4); /* drop shadow */
-}
-.recent-posts-list li .recent-post-image img {
- display: block;
- width: 100%;
- height: auto;
-}
-.recent-posts-list li .recent-post-details {
- padding: 8px 10px;
- margin-left: 100px;
-}
-.recent-posts-list li .recent-post-title {
- display: block;
- margin-bottom: 5px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-.recent-posts-list li .recent-post-details > span {
- font-size: 12px;
- font-style: italic;
-}
-.recent-posts-list li .recent-post-details .comments-likes {
- float: none;
- margin-top: 5px;
- font-size: 12px!important;
-}
-.recentcomments {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-}
-.flickr_images {
- margin-right: -2px;
- margin-bottom: 30px;
-}
-.widget.flickr-widget li {
- height: 77px;
- width: 77px;
- padding: 0;
- border: 0;
- overflow: hidden;
- float: left;
- display: inline-block;
- margin: 0 10px 10px 0;
- background-image: url("images/plus-icon.png");
- background-repeat: no-repeat;
- background-position: center center;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
-}
-.flickr-widget li img {
- height: 77px;
- width: auto;
- min-height: 77px;
- min-width: 77px;
- display: block;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.flickr-widget li:hover img {
- opacity: 0.2;
- -moz-opacity: 0.2;
- filter:alpha(opacity=20);
-}
-.twitter-widget {
- margin: 0;
-}
-.widget.twitter-widget li {
- margin-bottom: 20px;
- font-size: 12px;
-}
-.widget.twitter-widget li:before {
- content: "\f10d";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: block;
- text-decoration: inherit;
- font-size: 20px;
- width: 30px;
- height: auto;
- float: left;
- margin-top: 5px;
-}
-.twitter-widget .tweet-text {
- padding-left: 30px;
-}
-.twitter-widget .twitter_intents {
- margin: 10px 0 0 30px;
-}
-.twitter-date a, .twitter-link a, .widget .twitter-link a:hover {
- text-decoration: none;
-}
-.twitter-link a {
- display: inline-block;
- font-weight: bold;
- padding: 4px 12px;
- line-height: 25px;
- -moz-border-radius: 15px;
- -webkit-border-radius: 15px;
- border-radius: 15px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.twitter-link a:hover {
- text-decoration: none!important;
- -moz-border-radius: 0;
- -webkit-border-radius: 0;
- border-radius: 0;
-}
-.sidebar .rev_slider_wrapper {
- overflow: hidden;
- padding-bottom: 40px!important;
-}
-.subscribers-list {
- text-align: center;
- padding: 15px 15px 9px;
- border: 1px solid #e4e4e4; /* stroke */
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
- background-color: #fff; /* layer fill content */
-}
-.subscribers-list li {
- display: inline-block;
- width: 64px;
- margin-left: 10px;
-}
-.subscribers-list li:first-child {
- margin-left: 0;
-}
-.subscribers-list li > a.social-circle {
- font-size: 27px;
- background: #222;
- -moz-border-radius: 40px;
- -webkit-border-radius: 40px;
- border-radius: 40px;
- padding: 11px 7px;
- width: 35px;
- text-align: center;
- margin: 0 auto 5px;
-}
-.subscribers-list li:hover > a.social-circle {
- text-decoration: none;
-}
-.subscribers-list li > a.social-circle i {
- width: 30px;
-}
-.subscribers-list li span {
- display: block;
- text-align: center;
- font-size: 12px;
-}
-.subscribers-list li span.social-count {
- font-weight: bold;
- font-size: 14px;
- margin-bottom: 4px;
-}
-.sidebar-ad-grid {
- padding: 15px;
- -moz-box-shadow: inset 0 0 10px rgba(0,0,0,.15); /* inner glow */
- -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,.15); /* inner glow */
- box-shadow: inset 0 0 10px rgba(0,0,0,.15); /* inner glow */
-}
-.sidebar-ad-grid ul > li {
- float: left;
- margin: 5px;
- max-width: 125px;
-}
-.sidebar-ad-grid ul > li img {
- display: block;
-}
-.widget input[type="email"] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- width: 100%;
- padding-right: 20px;
-}
-.widget #mc_embed_signup > form {
- position: relative;
-}
-.widget #mc_embed_signup > form:after {
- content: "\f0e0";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
- font-size: 14px;
- padding-right: 10px;
- position: absolute;
- float: right;
- top: 5px;
- right: 0;
- opacity: 0.3;
- -moz-opacity: 0.3;
- filter:alpha(opacity=30);
-}
-#mc_embed_signup .clear {
- display: block;
- visibility: visible;
- width: auto;
- height: auto;
-}
-.widget_sf_infocus_widget .infocus-item {
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background-color: #fff;
- -moz-box-shadow: 0 0 5px rgba(0,0,0,.1);
- -webkit-box-shadow: 0 0 5px rgba(0,0,0,.1);
- box-shadow: 0 0 5px rgba(0,0,0,.1);
-}
-.widget_sf_infocus_widget .infocus-item iframe {
- display: block;
-}
-.infocus-item figure {
- position: relative;
- overflow: hidden;
-}
-.widget_sf_infocus_widget .infocus-item img {
- display: block;
- height: auto;
- width: 100%;
-}
-.widget_sf_infocus_widget .infocus-item .infocus-title {
- position: relative;
-}
-.widget_sf_infocus_widget .infocus-item .infocus-title:before {
- content: '';
- width: 15px;
- height: 10px;
- background-color: #fff;
- position: absolute;
- top: -3px;
- left: 16px;
- z-index: 99;
- -webkit-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- transform: rotate(45deg);
-}
-.widget_sf_infocus_widget .infocus-item h5 {
- font-weight: normal;
- margin: 0!important;
- padding: 12px 16px;
- max-width: 80%;
- float: left;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- border: 0!important;
-}
-.widget.widget_sf_infocus_widget .infocus-item h5 a:hover {
- text-decoration: none;
-}
-.infocus-title .love-it-wrapper {
- display: block;
- float: right;
- margin: 10px 16px 10px 0;
-}
-.portfolio-grid li {
- float: left;
- height: 82px;
- position: relative;
- margin: 0 10px 10px 0!important;
- background-image: url("images/plus-icon.png");
- background-repeat: no-repeat;
- background-position: center center;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
-}
-.portfolio-grid li a {
- padding: 0!important;
-}
-.portfolio-grid li a img {
- width: 82px;
- height: 82px;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.portfolio-grid li:hover img {
- opacity: 0.2;
- -moz-opacity: 0.2;
- filter:alpha(opacity=20);
-}
-
-/* #Footer
-================================================== */
-
-.hide-header #footer, .hide-header #copyright {
- display: none;
-}
-#footer {
- padding: 30px 0 0;
- border-top: 0 solid transparent;
-}
-#footer.footer-divider {
- border-top-width: 1px;
-}
-#footer h5 {
- display: inline-block;
- margin-bottom: 20px;
- font-weight: normal;
- border-bottom: 2px solid transparent;
- padding-bottom: 3px;
-}
-#footer a, #footer a:hover {
- text-decoration: none;
-}
-#footer-widgets .widget {
- padding-bottom: 30px;
-}
-#copyright {
- padding: 15px 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- height: auto;
- overflow: hidden;
- font-size: 12px;
- border-top: 0 solid transparent;
-}
-#copyright.copyright-divider {
- border-top-width: 1px;
-}
-#copyright p {
- font-size: 11px;
- float: left;
- margin-bottom: 0;
-}
-#copyright a, #copyright a:hover {
- text-decoration: none;
-}
-#copyright .beam-me-up {
- float: right;
- text-align: right;
-}
-.beam-me-up a {
- text-decoration: none!important;
- margin-right: 5px;
- font-weight: bold;
-}
-.beam-me-up i {
- margin-left: 4px;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-
-
-/* #Swift Slider
-================================================== */
-
-#swift-slider {
- margin-bottom: 0;
- position: relative;
-}
-#swift-slider .swift-slider-loading {
- background:url('images/loader.gif') no-repeat center center;
- background-color:#fff;
- margin:-22px -22px;
- top:50%;
- left:50%;
- z-index:10000;
- position:absolute;
- width:44px;
- height:44px;
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
-}
-#swift-slider, #swift-slider ul.slides, #swift-slider ul.slides > li {
- min-height: 450px;
- max-height: 450px;
-}
-#swift-slider {
- overflow: visible!important;
-}
-#swift-slider .slide-caption-container {
- position: absolute;
- right: 50%;
- width: 940px;
- height: 100%;
- margin-right: -470px;
-}
-#swift-slider .flex-caption {
- z-index: 99;
- position: absolute;
- bottom: -300px;
- height: auto;
- display: block;
- text-align: left;
- transition: all 0.5s ease-in-out;
- -moz-transition: all 0.5s ease-in-out;
- -webkit-transition: all 0.5s ease-in-out;
- -o-transition: all 0.5s ease-in-out;
- transition-delay: 1s;
- -moz-transition-delay: 1s;
- -webkit-transition-delay: 1s;
- -o-transition-delay: 1s;
-}
-#swift-slider .flex-caption .flex-caption-details {
- display: block;
- -webkit-perspective: 500px;
- -moz-perspective: 500px;
- -ms-perspective: 500px;
- -o-perspective: 500px;
- perspective: 500px;
-}
-#swift-slider .flex-caption .flex-caption-details .caption-details-inner {
- width: 100%;
- padding: 15px 20px 20px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- background: #fff;
- height: auto;
- overflow: hidden;
- opacity: 0;
- -moz-opacity: 0;
- filter:alpha(opacity= 0);
- -webkit-transform-origin: 0 100%;
- -moz-transform-origin: 0 100%;
- -ms-transform-origin: 0 100%;
- -o-transform-origin: 0 100%;
- transform-origin: 0 100%;
- -webkit-transform: rotateX(97deg);
- -moz-transform: rotateX(97deg);
- -ms-transform: rotateX(97deg);
- -o-transform: rotateX(97deg);
- transform: rotateX(97deg);
- -webkit-transition: -webkit-transform .2s linear;
- -moz-transition: -moz-transform .2s linear;
- -ms-transition: -ms-transform .2s linear;
- -o-transition: -o-transform .2s linear;
- transition: transform .2s linear;
- position: relative;
- border-bottom: 1px dashed #e4e4e4;
-}
-#swift-slider .flex-caption .flex-caption-details.open .caption-details-inner, .browser-ie #swift-slider .flex-caption .flex-caption-details .caption-details-inner {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
- -webkit-transform: rotateX(0);
- -moz-transform: rotateX(0);
- -ms-transform: rotateX(0);
- -o-transform: rotateX(0);
- transform: rotateX(0);
-}
-#swift-slider .flex-caption .flex-caption-details.closing .caption-details-inner {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
- -webkit-transform: rotateX(97deg);
- -moz-transform: rotateX(97deg);
- -ms-transform: rotateX(97deg);
- -o-transform: rotateX(97deg);
- transform: rotateX(97deg);
-}
-#swift-slider.flexslider:hover .flex-next {
- right: 60px!important;
-}
-#swift-slider.flexslider:hover .flex-prev {
- left: 60px!important;
-}
-.caption-details-inner .details, .flex-caption-large .details {
- float: left;
- margin-top: 5px;
-}
-.caption-details-inner .details {
- max-width: 50%;
-}
-.caption-details-inner .details span, .flex-caption-large .details span {
- display: block;
-}
-.caption-details-inner .details span a:hover, .flex-caption-large .details span a:hover {
- text-decoration: none;
-}
-.caption-details-inner .details span.item-client, .flex-caption-large .details span.item-client, .caption-details-inner .details span.item-author, .flex-caption-large .details span.item-author {
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-#swift-slider .flex-caption .chart {
- position: relative;
- text-align: center;
- float: right;
-}
-#swift-slider .flex-caption-large .chart {
- position: relative;
- text-align: center;
- margin-right: 15px;
-}
-#swift-slider .flex-caption .chart canvas, #swift-slider .flex-caption-large .chart canvas {
- position: absolute;
- top: 0;
- left: 0;
- -webkit-transform: rotate(217deg);
- -moz-transform: rotate(217deg);
- -ms-transform: rotate(217deg);
- -o-transform: rotate(217deg);
- transform: rotate(217deg);
-}
-#swift-slider .flex-caption .chart span, #swift-slider .flex-caption-large .chart span {
- font-size: 24px;
- vertical-align: 0px;
-}
-#swift-slider .flex-caption .chart i, #swift-slider .flex-caption-large .chart i {
- position: absolute;
- bottom: 0;
- text-align: center;
- display: block;
- width: 100%;
- font-size: 16px;
- -webkit-transform: scale(0);
- -moz-transform: scale(0);
- -ms-transform: scale(0);
- -o-transform: scale(0);
- transform: scale(0);
- transition: all 0.25s ease-in-out;
- -moz-transition: all 0.25s ease-in-out;
- -webkit-transition: all 0.25s ease-in-out;
- -o-transition: all 0.25s ease-in-out;
- transition-delay: 1.25s;
- -moz-transition-delay: 1.25s;
- -webkit-transition-delay: 1.25s;
- -o-transition-delay: 1.25s;
-}
-#swift-slider .flex-caption-large .chart i {
- transition-delay: 2s;
- -moz-transition-delay: 2s;
- -webkit-transition-delay: 2s;
- -o-transition-delay: 2s;
-}
-#swift-slider .flex-caption .flex-caption-details.open .caption-details-inner .chart i, #swift-slider .flex-active-slide .flex-caption-large .chart i, .browser-ie #swift-slider .flex-active-slide .flex-caption-large .chart i {
- -webkit-transform: scale(1);
- -moz-transform: scale(1);
- -ms-transform: scale(1);
- -o-transform: scale(1);
- transform: scale(1);
-}
-#swift-slider .flex-caption .flex-caption-details.closing .caption-details-inner .chart i {
- -webkit-transform: scale(0);
- -moz-transform: scale(0);
- -ms-transform: scale(0);
- -o-transform: scale(0);
- transform: scale(0);
- transition-delay: 0s;
- -moz-transition-delay: 0s;
- -webkit-transition-delay: 0s;
- -o-transition-delay: 0s;
-}
-#swift-slider .flex-caption .flex-caption-headline {
- background: #fff;
- padding: 18px 20px;
-}
-#swift-slider .flex-caption .flex-caption-headline h4 {
- margin: 0;
-}
-.flex-caption.caption-right {
- right: 0;
- width: 370px;
-}
-.flex-caption.caption-left {
- left: 0;
- width: 370px;
-}
-#swift-slider .flex-active-slide .flex-caption {
- bottom: 0;
-}
-#swift-slider .flex-caption h4 {
- width: 100%;
-}
-#swift-slider .flex-caption h4 span {
- text-decoration: none;
- display: block;
- text-overflow: ellipsis;
- white-space: nowrap;
- width: 88%;
- overflow: hidden;
- float: left;
-}
-#swift-slider .flex-caption h4 i {
- float: right;
- font-size: 20px;
- opacity: 0.4;
- -moz-opacity: 0.4;
- filter:alpha(opacity= 40);
-}
-#swift-slider .flex-caption-large {
- margin: 11% 20% 0;
- text-align: left;
-}
-#swift-slider .flex-caption-large h1 a, #swift-slider .flex-caption-large h1 a:hover {
- text-decoration: none;
-}
-#swift-slider .flex-caption-large .cl-charts {
- float: left;
- font-weight: normal;
-}
-#swift-slider .flex-caption-large .cl-charts .chart {
- float: left;
-}
-#swift-slider .flex-control-nav {
- position: relative;
- margin: 0 auto;
- list-style: none!important;
- width: 940px;
- height: auto;
- padding: 12px 0;
- text-align: center;
- bottom: 0;
- left: 0;
- z-index: 1;
-}
-#swift-slider .flex-control-nav li {
- float: none;
-}
-#swift-slider .flex-control-nav li a {
- width: 6px;
- height: 6px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
- background-color: #cbcbcb; /* layer fill content */
- -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.15); /* inner shadow */
- -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.15); /* inner shadow */
- box-shadow: inset 0 1px 1px rgba(0,0,0,.15); /* inner shadow */
-}
-#swift-slider .flex-control-nav li a.flex-active {
- background: #222;
-}
-#swift-slider .slider-shadow {
- position: absolute;
- left: 50%;
- margin-left: -499px;
- bottom: -63px;
-}
-
-/* #Portfolio
-================================================== */
-
-.filter-wrap {
- display: block;
- margin-bottom: 20px;
-}
-.filter-wrap .select {
- line-height: 30px;
- margin-bottom: 10px;
- display: block;
- position: relative;
- outline: none;
-}
-.has-no-sidebar .filter-wrap .select {
- text-align: center;
- padding-left: 20px;
-}
-.has-no-sidebar .wpb_portfolio_widget .filter-wrap {
- margin-bottom: 40px;
-}
-.has-no-sidebar .wpb_portfolio_widget .filter-wrap .filter-slide-wrap {
- margin-bottom: 20px;
-}
-.filter-wrap .select:hover {
- text-decoration: none;
-}
-.filter-wrap .select i {
- margin-right: 10px;
-}
-.filter-wrap .select:after {
- content: '';
- width: 16px;
- height: 10px;
- position: absolute;
- top: 34px;
- left: 22px;
- z-index: 99;
- -webkit-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- transform: rotate(45deg);
-}
-.has-no-sidebar .filter-wrap .select:after {
- left: 50%;
- margin-left: 5px;
-}
-.filter-wrap .filter-slide-wrap {
- display: none;
- margin-top: 0;
- padding-bottom: 12px;
-}
-.filter-wrap ul {
- font-size: 13px;
- list-style: none;
- margin-top: 0;
- margin-bottom: 0;
-}
-.filter-wrap ul.wp-tag-cloud li a {
- font-size: 13px!important;
-}
-.filter-wrap ul li {
- margin-bottom: 20px;
- display: none;
- float: left;
- border-bottom: 1px solid #333;
-}
-.filter-wrap ul li.selected {
- border-bottom-color: transparent;
-}
-.filter-wrap ul li.all, .filter-wrap ul li.has-items {
- display: inline-block;
-}
-.filter-wrap ul li a {
- display: block;
- white-space: nowrap;
- padding: 6px 12px;
- text-decoration: none;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- overflow: hidden;
- outline: none;
-}
-.filter-wrap ul li a span.item-name {
- max-width: 80%;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- display: inline-block;
- float: left;
-}
-.filter-wrap ul li a span.item-count {
- float: right;
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-ul.portfolio-items {
- margin-bottom: 0;
- list-style: none;
-}
-.portfolio-items > li {
- margin-bottom: 30px;
-}
-.portfolio-items.single-column > li {
- margin-bottom: 100px;
-}
-.portfolio-items > li figure {
- position: relative;
-}
-.portfolio-items:not(.single-column) > li figure:hover img {
- -moz-transform: scale(1.2);
- -webkit-transform: scale(1.2);
- -o-transform: scale(1.2);
- -ms-transform: scale(1.2);
- transform: scale(1.2);
-}
-.masonry-items .portfolio-item {
- border-bottom: 0;
- padding-bottom: 0;
-}
-.wpb_portfolio_carousel_widget {
- padding-bottom: 50px;
-}
-.wpb_portfolio_carousel_widget .portfolio-item {
- height: auto;
- overflow: hidden;
- -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- box-shadow: 0 1px 0 rgba(0,0,0,.1);
-}
-.wpb_portfolio_carousel_widget .portfolio-item figure {
- margin-bottom: 0;
-}
-.wpb_portfolio_carousel_widget .portfolio-item .item-details {
- padding: 12px 15px 7px;
-}
-.wpb_portfolio_carousel_widget .portfolio-item h4.portfolio-item-title {
- margin: 0 0 5px;
- text-align: left;
-}
-.wpb_portfolio_carousel_widget .portfolio-item h4.portfolio-item-title a {
- display: block;
- height: auto;
- overflow: hidden;
-}
-.wpb_portfolio_carousel_widget .portfolio-item h4 span {
- display: inline-block;
- float: left;
- max-width: 82%;
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow: hidden;
-}
-.wpb_portfolio_carousel_widget .portfolio-item h4.portfolio-item-title a:hover {
- text-decoration: none;
-}
-.wpb_portfolio_carousel_widget .portfolio-item h4.portfolio-item-title a > i {
- float: right;
- text-align: right;
- line-height: 20px;
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-.portfolio-item.gallery {
- border-bottom: 0;
- padding-bottom: 0;
- padding-top: 0;
-}
-.portfolio-item.gallery figure, .masonry-items .portfolio-item.standard figure {
- margin-bottom: 0;
-}
-.portfolio-item figure {
- margin-bottom: 16px;
- overflow: hidden;
-}
-.single-column .portfolio-item figure {
- margin-bottom: 30px;
-}
-.portfolio-item figure > a {
- position: relative;
-}
-.portfolio-item figure img {
- width: 100%;
- height: auto;
- position: relative;
- z-index: 3;
- display: block!important;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.portfolio-item h4.portfolio-item-title {
- font-weight: normal;
- margin-bottom: 5px;
- text-align: center;
- margin-top: 6px;
-}
-.portfolio-item h1.portfolio-item-title {
- font-weight: normal;
- margin-bottom: 4px;
- text-align: center;
- margin-top: 10px;
-}
-.portfolio-item-title a:hover {
- text-decoration: none;
-}
-.portfolio-item h5.portfolio-subtitle {
- display: block;
- margin-bottom: 5px;
- text-align: center;
- margin-top: 0;
-}
-.portfolio-item h3.portfolio-subtitle {
- display: block;
- text-align: center;
- margin-top: 0;
- margin-bottom: 8px;
-}
-.portfolio-item .portfolio-item-excerpt {
- font-size: 12px;
- margin-bottom: 20px;
- text-align: center;
-}
-.portfolio-item.carousel-item .portfolio-item-excerpt {
- text-align: left;
- margin-top: 10px;
- margin-bottom: 5px;
-}
-.single-column .portfolio-item .portfolio-item-excerpt {
- margin-top: 15px;
-}
-.portfolio-item .portfolio-item-permalink {
- font-size: 12px;
- font-weight: bold;
- display: block;
- text-decoration: none;
-}
-.portfolio-details-wrap {
- padding-bottom: 18px;
- border-bottom: 1px solid transparent;
-}
-.portfolio-details-wrap .client, .portfolio-details-wrap .date {
- margin-right: 20px;
-}
-.portfolio-details-wrap .item-link {
- float: right;
- margin-top: 0;
-}
-.portfolio-details-wrap .item-link:hover {
- text-decoration: none;
-}
-.portfolio-details-wrap .item-link i {
- margin-right: 5px;
-}
-.body-text {
- margin-bottom: 30px;
-}
-.body-text ul {
- list-style: disc inside;
-}
-.body-text .link-pages, .page-content .link-pages {
- margin-top: 15px;
-}
-.body-text .link-pages:empty, .page-content .link-pages:empty {
- display: none;
-}
-article.type-portfolio .body-text {
- margin-top: 30px;
-}
-article.type-team .body-text > p {
- margin-left: 0;
-}
-
-/* PORTFOLIO MASONRY */
-
-#home-masonry-elements {
- margin: 10px auto;
-}
-#home-masonry-elements li {
- margin: 5px;
- width: 300px;
-}
-#home-masonry-elements li figure {
- width: 300px;
- background: #f4f4f4;
-}
-
-/* #Blog
-================================================== */
-
-ul.blog-items {
- list-style: none;
-}
-.blog-wrap .heading-wrap {
- margin-bottom: 5px;
-}
-.blog-item {
- margin-bottom: 60px;
- padding-top: 60px;
- border-top: 1px solid transparent;
- height: auto;
- overflow: hidden;
-}
-.blog-item:first-child {
- border-top: 0;
- padding-top: 0;
-}
-.has-both-sidebars .blog-item, .mini-items .blog-item {
- margin-bottom: 50px;
-}
-.mini-items .blog-item h3 {
- margin-top: 0;
-}
-.mini-items .blog-item-details {
- margin-bottom: 5px;
- padding-bottom: 0;
-}
-.mini-items .comments-likes {
- float: none;
- margin-bottom: 15px;
-}
-
-/* --------------------------------------------
- BLOG AUX
--------------------------------------------- */
-
-.blog-aux-wrap {
- margin-bottom: 5px;
-}
-.blog-aux-options {
- text-align: center;
- margin-bottom: 0;
-}
-.blog-aux-options li {
- display: inline-block;
- margin-left: 15px;
- margin-bottom: 15px;
-}
-.blog-aux-options li:first-child {
- margin-left: 0;
-}
-.blog-aux-options li a {
- display: block;
- font-size: 14px;
- padding: 6px 10px;
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background-color: #e4e4e4;
- -moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.1);
- box-shadow: inset 0 -1px 0 rgba(0,0,0,.1);
-}
-.blog-aux-options li a i {
- margin-right: 5px;
-}
-.blog-aux-options li a:hover {
- text-decoration: none;
-}
-.blog-aux-options li form {
- margin: 0;
- position: relative;
-}
-.blog-aux-options li form input {
- margin: 0;
- border: 0;
- height: 32px;
- width: 200px;
- font-size: 12px;
- moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- background-color: #e4e4e4;
- -moz-box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- box-shadow: inset 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.blog-aux-options li form:after {
- content: "\f002";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
- font-size: 14px;
- padding-right: 10px;
- position: absolute;
- float: right;
- top: 5px;
- right: 0;
- opacity: 0.3;
- -moz-opacity: 0.3;
- filter:alpha(opacity=30);
-}
-.blog-filter-wrap {
- margin-bottom: 20px;
-}
-.blog-filter-wrap.filter-wrap ul li {
- display: block;
-}
-.blog-filter-wrap.filter-wrap ul li a {
- padding: 6px 25px 6px 12px;
- text-overflow: ellipsis;
- max-width: 100%;
- position: relative;
-}
-.blog-filter-wrap.filter-wrap ul li a span {
- position: absolute;
- right: 10px;
-}
-
-/* --------------------------------------------
- STANDARD
--------------------------------------------- */
-
-.standard-post-author .author-avatar {
- float: none;
- margin-right: 0;
- margin-bottom: 15px;
-}
-.standard-post-author .author-avatar img {
- width: 100%;
- height: auto;
-}
-.standard-post-author .standard-post-author-name {
- text-align: center;
- display: block;
-}
-.standard-post-content h1 {
- margin-top: 0;
-}
-.standard-post-content h1 a:hover {
- text-decoration: none;
-}
-.standard-post-details .standard-post-author {
- margin-bottom: 15px;
- padding-bottom: 15px;
- border-bottom: 1px solid #e4e4e4;
-}
-.standard-post-details .standard-post-date {
- text-transform: uppercase;
- margin-bottom: 15px;
- display: block;
- width:75px;
- -ms-word-break: break-all;
- word-break: break-all;
- word-break: break-word;
- -webkit-hyphens: auto;
- -moz-hyphens: auto;
- hyphens: auto;
-}
-.standard-post-details .comments-likes {
- float: none;
- font-weight: normal;
-}
-.standard-post-details .comments-likes span.love-count {
- font-weight: normal;
-}
-.standard-post-details .comments-likes .love-it-wrapper {
- margin-left: 0;
- margin-top: 5px;
-}
-
-/* --------------------------------------------
- MASONRY
--------------------------------------------- */
-
-.blog-items.masonry-items {
- opacity: 0;
- -moz-opacity: 0;
- filter:alpha(opacity=0);
-}
-.masonry-items .blog-item {
- margin-bottom: 30px;
- padding-top: 0;
- border-top: 0;
-}
-.has-both-sidebars .masonry-items .blog-item {
- margin-bottom: 30px;
-}
-.masonry-items .blog-item .quote-excerpt {
- font-size: 12px;
- line-height: 20px;
-}
-
-/* --------------------------------------------
- BLOG MEDIA DISPLAY
--------------------------------------------- */
-
-.blog-item .quote-display {
- text-align: center;
- padding: 20px 10px 0;
- font-size: 42px;
-}
-.standard-items .blog-item .quote-display {
- padding: 0 10px 20px;
-}
-.blog-item figure {
- position: relative;
-}
-.blog-item figure:empty {
- display: none;
-}
-.blog-item figure img {
- display: block;
-}
-.blog-items.standard-items .blog-item figure {
- margin-bottom: 30px;
-}
-.mini-items .blog-item figure {
- float: left;
- width: 290px;
- margin-right: 20px;
-}
-.has-no-sidebar .mini-items .blog-item figure {
- width: 446px;
-}
-.mini-items .blog-item figure.quote {
- float: none;
- width: 100%;
-}
-figure.media-wrap {
- height: auto;
- overflow: hidden;
- margin-bottom: 20px;
- position: relative;
-}
-figure.media-wrap.full-width-detail {
- margin-bottom: 30px;
-}
-figure.media-wrap a {
- display: block;
-}
-figure.media-wrap img {
- height: auto!important;
- width: 100%;
-}
-figure.media-wrap iframe {
- display: block;
- width: 100%;
-}
-
-/* --------------------------------------------
- DETAILS
--------------------------------------------- */
-
-.blog-item h2 {
- margin-top: 0;
-}
-.blog-item h3 {
- margin-bottom: 5px;
-}
-.blog-item h3 a, .blog-item h4 a {
- text-decoration: none;
-}
-.blog-item-details {
- font-style: italic;
- padding-bottom: 11px;
-}
-.blog-item-details a {
- text-decoration: none;
-}
-.blog-item-details a:hover {
- text-decoration: underline;
-}
-.standard-items .blog-item-details {
- padding-bottom: 15px;
-}
-.comments-likes {
- float: right;
- font-weight: bold;
-}
-.comments-likes a, .comments-likes a:hover {
- text-decoration: none;
-}
-.comments-likes .icon-comments {
- margin-right: 5px;
-}
-.comments-likes .love-it-wrapper {
- display: inline-block;
-}
-.comments-likes .love-it-wrapper a:hover, .comments-likes .love-it-wrapper span:hover {
- cursor: pointer;
-}
-.comments-likes .love-it-wrapper .loved span:hover {
- cursor: default;
-}
-.love-it-wrapper:hover {
- cursor: default;
-}
-.love-it-wrapper a {
- text-decoration: none;
-}
-.comments-likes .love-it-wrapper {
- margin-left: 5px;
-}
-.comments-likes .love-it-wrapper a {
- text-decoration: none;
-}
-.comments-likes a span, .comments-likes a i {
- margin: 0;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.comments-likes .love-it-wrapper .loved {
- margin: 0;
-}
-span.love-count {
- font-weight: bold;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.comments-likes span.love-count {
- margin-left: 1px;
-}
-.blog-item .excerpt {
- line-height: 22px;
-}
-.excerpt ul {
- list-style: disc inside;
-}
-.blog-item .read-more {
- text-decoration: none;
- clear: both;
- display: inline-block;
- margin-top: 5px;
-}
-.blog-item .read-more-bar {
- height: auto;
- overflow: hidden;
- margin-top: 20px;
-}
-.blog-item .read-more-bar .read-more {
- margin-top: 0;
-}
-.blog-item .quote-excerpt {
- font-style: italic;
- padding-bottom: 15px;
-}
-
-/* --------------------------------------------
- POST
--------------------------------------------- */
-
-.body-content.quote {
- font-size: 14px;
- text-transform: uppercase;
- margin-bottom: 20px;
-}
-.body-content.quote p {
- margin-bottom: 3px;
-}
-.body-content.quote cite {
- font-weight: bold;
- text-transform: uppercase;
-}
-.article-content.aside, .item-details.aside {
- margin-top: 10px;
-}
-figure.media-wrap:empty, figure.media-wrap.full-width-detail:empty {
- margin: 0;
-}
-figure.quote blockquote {
- margin-bottom: 0;
-}
-.format-link figure.media-wrap {
- text-align: center;
- margin: 0 0 30px;
-}
-.format-link .link-post-link {
- font-size: 18px;
- line-height: 24px;
- display: inline-block;
-}
-.format-link .link-post-link i {
- margin-right: 8px;
- vertical-align: -1px;
-}
-.format-chat figure.media-wrap {
- margin-bottom: 40px;
-}
-.format-chat .chat {
- margin-top: 0;
-}
-.format-chat .chat .chat-timestamp {
- float: right;
- font-size: 12px;
- font-weight: normal;
- margin: 0 10px;
-}
-.format-chat .chat .chat-text {
- margin: 0 0 20px;
-}
-.format-status .body-text p {
- font-size: 18px;
- font-style: italic;
- line-height: 24px;
-}
-.format-status .excerpt {
- font-size: 18px;
- font-style: italic;
- line-height: 24px;
-}
-.single-format-aside .page-heading {
- display: none;
-}
-.blog-excerpt p {
- margin-bottom: 10px;
-}
-.navigation {
- margin-top: 10px;
- margin-bottom: 50px;
- border-top: 1px solid #e4e4e4;
- border-bottom: 1px solid #e4e4e4;
- padding: 15px 0;
-}
-.blog-navigation {
- border-bottom: 0;
- margin-bottom: 0;
- padding-bottom: 0;
-}
-.pagination-wrap.masonry-pagination {
- display: none;
-}
-.pagination-wrap ul {
- height: auto;
- overflow: hidden;
- margin: 15px 0;
-}
-.pagination-wrap li {
- float: left;
- display: inline-block;
- margin-bottom: 0;
-}
-.pagination-wrap li:first-child {
- border-left: 0;
-}
-.pagination-wrap li a, .pagination-wrap li span {
- padding: 10px 16px;
- border: 1px solid transparent;
- display: block;
- margin-right: -1px;
- text-decoration: none;
-}
-.pagination-wrap li.next a {
- margin-left: -1px;
-}
-.pagination-wrap li i {
- width: 10px;
-}
-.pagination-wrap a, .pagination-wrap a:hover {
- text-decoration: none;
-}
-.has-no-sidebar .pagination-wrap ul {
- text-align: center;
-}
-.has-no-sidebar .pagination-wrap ul li {
- float: none;
-}
-.pagination-wrap .nav-previous {
- text-align: left;
- float: left;
- max-width: 45%;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-}
-.nav-next i, .nav-previous i {
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.single .blog-pagination div > a > i {
- transition: all 0s ease-in-out;
- -moz-transition: all 0s ease-in-out;
- -webkit-transition: all 0s ease-in-out;
- -o-transition: all 0s ease-in-out;
-}
-.blog-pagination {
- border-top: 1px solid transparent;
- margin-top: 30px!important;
-}
-.nav-previous i {
- margin-right: 5px;
-}
-.nav-next i {
- margin-left: 8px;
-}
-.pagination-wrap .nav-next {
- text-align: right;
- float: right;
- max-width: 45%;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
-}
-.author-info-wrap {
- border-top: 1px solid transparent;
- padding-top: 40px;
- margin-bottom: 40px;
-}
-.author-avatar {
- float: left;
- margin-right: 20px;
-}
-.author-avatar img {
- width: 82px;
- height: 82px;
-}
-.author-avatar img, .comment-avatar img {
- -moz-border-radius: 50px;
- -webkit-border-radius: 50px;
- border-radius: 50px;
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- -moz-box-shadow: inset 0 0 10px rgba(0,0,0,.1);
- -webkit-box-shadow: inset 0 0 10px rgba(0,0,0,.1);
- box-shadow: inset 0 0 10px rgba(0,0,0,.1);
- display: block;
-}
-.post-info {
- float: left;
- width: 45%;
- margin: 18px 0;
-}
-.post-info .author-name {
- font-size: 18px;
- margin-right: 10px;
-}
-.post-info .author-name a {
- margin-left: 4px;
- text-decoration: none;
-}
-.post-info .post-date {
- margin-bottom: 2px;
-}
-.related-wrap {
- border-top: 1px solid transparent;
- height: auto;
- overflow: hidden;
- padding-top: 30px;
-}
-.related-wrap h4 {
- border-bottom: 2px solid #000;
- display: inline-block;
- padding-bottom: 3px;
- margin-bottom: 20px;
-}
-.related-item figure {
- width: 100%;
- min-height: 68px;
- position: relative;
- overflow: hidden;
-}
-.related-item figure img {
- display: block;
-}
-.related-item h5 {
- font-size: 14px;
-}
-.related-item h5 a {
- text-decoration: none;
-}
-.share-links {
- border-top: 1px solid #ccc;
- padding: 20px 0 10px;
-}
-.single-portfolio .share-links {
- border-bottom: 1px solid #ccc;
-}
-.share-links .share-text {
- float: left;
- margin-right: 10px;
- line-height: 24px;
-}
-.share-links .share-text i {
- margin-right: 5px;
-}
-.share-links > .share-buttons {
- float: left;
- margin-right: 12px;
-}
-.share-links > .share-buttons > span {
- display: inline-block;
- margin-bottom: 5px;
-}
-.has-one-sidebar .share-buttons, .has-both-sidebars .share-buttons {
- margin-bottom: 5px;
-}
-.share-links .email-link {
- display: inline-block;
- float: left;
- line-height: 26px;
- margin-right: 15px;
- margin-bottom: 10px;
- font-size: 16px;
-}
-.share-links .permalink {
- display: inline-block;
- float: left;
- line-height: 26px;
- margin-right: 15px;
- margin-bottom: 10px;
- font-size: 16px;
-}
-.share-links a:hover {
- text-decoration: none;
-}
-.tags-link-wrap {
- border-top: 1px solid #ccc;
- padding: 20px 0;
-}
-.tags-link-wrap .tags-wrap {
- float: left;
-}
-.tags-link-wrap .comments-likes {
- float: right;
- text-align: right;
- font-weight: normal;
- width: 20%;
-}
-.tags-link-wrap .comments-likes .love-it-wrapper {
- margin-left: 15px;
- float: right;
-}
-.tags-link-wrap .comments-likes .love-it-wrapper span.love-count {
- font-weight: normal;
-}
-.tags-link-wrap .comments-likes .comments-wrapper {
- display: inline-block;
- float: right;
-}
-.tags-wrap i {
- margin-right: 5px;
-}
-.tags-wrap .tags {
- margin-left: 5px;
-}
-.tags-wrap a:hover {
- text-decoration: none;
-}
-.carousel-items .blog-item {
- margin-bottom: 0;
- padding-top: 0;
- border-top: 0;
-}
-.carousel-items .blog-item h4.blog-item-title {
- font-weight: normal;
- margin-bottom: 8px;
- border-bottom: 0;
- padding-bottom: 0;
-}
-.carousel-items .blog-item figure {
- margin-bottom: 16px;
-}
-.carousel-items .blog-item .blog-item-date {
- display: block;
- margin-bottom: 15px;
-}
-.carousel-items .blog-item .blog-item-excerpt {
- margin-bottom: 20px;
-}
-
-/* #Team
-================================================== */
-
-ul.team-members {
- list-style: none;
-}
-.team_list_widget .team-members > li, .carousel-wrap .carousel-items.has-show-hide > li {
- margin-bottom: 40px;
-}
-.team-member figure {
- margin-bottom: 17px;
-}
-.team-member .team-member-name {
- font-weight: bold;
- margin: 0 0 5px 0;
-}
-.team-member .team-member-position {
- font-weight: normal;
- margin: 0 0 15px 0;
-}
-.team-member .team-member-bio {
- margin-bottom: 15px;
- padding-bottom: 10px;
- border-bottom: 1px solid #e4e4e4;
-}
-.team-member .member-contact {
- margin-bottom: 10px;
- font-size: 12px;
-}
-article.type-team {
- margin-bottom: 50px;
-}
-article.type-team .article-body-wrap {
- width: 50%;
- float: left;
- margin-right: 30px;
-}
-article.type-team .article-body-wrap .body-text {
- margin-top: 0;
-}
-article.type-team .member-position {
- margin: 0 0 20px;
-}
-article.type-team .profile-image-wrap {
- float: right;
- width: 46%;
-}
-ul.member-contact {
- margin-left: 0;
- margin-bottom: 25px;
- list-style: none;
-}
-ul.member-contact li span {
- font-weight: bold;
- margin-right: 7px;
-}
-ul.member-contact li a {
- text-decoration: none;
- margin-left: -2px;
-}
-.team-member-details-wrap ul.social-icons.small {
- margin-bottom: 15px;
-}
-
-
-/* #Sidebar
-================================================== */
-
-.sidebar {
- padding-bottom: 40px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.sidebar.left-sidebar {
- padding-right: 20px;
-}
-.sidebar.right-sidebar {
- padding-left: 20px;
-}
-.sidebar .widget_heading {
- margin-top: -6px;
-}
-.sidebar .widget-heading h4 {
- display: inline-block;
- margin-top: 0;
- margin-bottom: 20px;
- font-weight: normal;
- border-bottom: 2px solid transparent;
- padding-bottom: 3px;
-}
-.sidebar object, .sidebar object > img .sidebar embed {
- width: 100%;
- max-width: 100%;
-}
-.sidebar object > img {
- height: auto;
-}
-.sidebar a:hover {
- text-decoration: none;
-}
-.sidebar .widget #lang_sel a {
- padding: 2px 10px;
-}
-
-
-/* #Comments
-================================================== */
-
-#comment-area a {
- text-decoration: none;
-}
-#comments-list > h4 {
- border-bottom: 2px solid #000;
- display: inline-block;
- padding-bottom: 3px;
- margin-bottom: 0;
-}
-#comments-list ol {
- list-style: none;
- margin: 0 0 -10px;
-}
-#comments-list ol li {
- margin-bottom: 0;
-}
-.comment .comment-wrap {
- position: relative;
- height: auto;
- border-bottom: 1px dotted #ccc;
- padding: 20px 0;
-}
-.comment-wrap .comment-avatar {
- float: left;
- position: relative;
-}
-.comment-wrap .comment-avatar img {
- height: 50px;
- width: 50px;
- display: block;
-}
-#comments-list li ul {
- list-style: none;
- margin: 0 0 0 30px;
- font-size: 100%;
-}
-.comment-content {
- margin-left: 70px;
-}
-.comment-content .comment-body p {
- margin-bottom: 10px;
-}
-.comment-meta {
- margin-bottom: 5px;
-}
-.comment-meta .comment-author {
- font-weight: bold;
-}
-.comment-meta .comment-date {
- margin-left: 2px;
- font-size: 12px;
-}
-.comment-meta .edit-link {
- margin-left: 5px;
- font-weight: normal;
- font-size: 12px;
-}
-.comment-meta .meta-sep {
- margin: 0 0 0 1px;
- color: #ccc;
-}
-.comment-meta .comment-reply {
- font-size: 12px;
-}
-#comment-area .edit-link a:hover, #comment-area .comment-reply a:hover {
- text-decoration: underline;
-}
-.comment-avatar .is-author {
- text-align: center;
- font-size: 10px;
- text-transform: uppercase;
- color: #ccc;
-}
-.comment-meta cite {
- font-style: normal;
+#masthead{
+ display: none !important;
}
-.comment-meta a.comment-reply-link {
- font-weight: normal;
+div.post-title.box {
+ display: none !important;
}
-
-/* Trackbacks */
-#trackbacks-list span {
- font-size: 12px;
-}
-#trackbacks-list ol li {
- margin-bottom: 10px;
+div.entry-image {
+ display: none !important;
}
-#trackbacks-list .comment-author {
- font-size: 12px;
- margin-bottom: 5px;
+div#main {
+ padding: 0px;
}
-#trackbacks-list .comment-content p {
- font-size: 14px;
+div.single-pagination, div.author-meta,div#disqus_thread, #related-posts {
+ display: none !important;
}
-
-/* --------------------------------------------
- COMMENT FORM
--------------------------------------------- */
-
-#respond-wrap {
- padding-bottom: 20px;
- position: relative;
- z-index: 1;
- margin-bottom: 30px;
-}
-#respond {
- margin: 30px 0 0;
- padding: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- border: 1px solid transparent;
-}
-#respond h3 {
- margin-top: 0;
-}
-#respond-wrap h3 {
- margin-top: 0;
- margin-bottom: 5px;
- border-bottom: 2px solid #000;
- display: inline-block;
- padding-bottom: 2px;
-}
-.comment-form-author, .comment-form-email, .comment-form-url {
- width: 235px;
- margin-bottom: 0;
-}
-#commentform {
- margin-top: 10px;
- margin-bottom: 0;
-}
-#commentform p.comment-notes span.required {
- float: none;
-}
-#commentform p span.required {
- float: right;
-}
-#commentform label {
- font-size: 12px;
- font-weight: normal;
- margin-bottom: 4px;
-}
-#commentform input {
- margin-bottom: 12px;
-}
-#commentform textarea {
- width: 100%;
- max-width: 100%;
- min-width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- height: 200px;
-}
-#commentform p.form-allowed-tags {
- display: none;
-}
-#commentform p.form-allowed-tags code {
- color: #444;
-}
-.comment #respond h3#reply-title {
- display: block;
- margin: 0px 0 10px;
-}
-#reply-title small {
- margin-top: 5px;
- font-size: 14px;
- display: block;
-}
-#reply-title small a, #reply-title small a:hover {
- text-decoration: none;
-}
-p.form-submit {
- height: auto;
- overflow: hidden;
- margin-bottom: 0;
-}
-article.type-post #respond .form-submit input#submit {
- margin: 0;
- border: 0;
- background: none;
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
- padding: 8px 11px;
-}
-article.type-post #respond .form-submit input#submit:hover {
- border: 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+aside#side-bar, footer#colophon {
+ display: none !important;
}
-
-/* #Contact
-================================================== */
-
-.contact-map {
- margin-bottom: 30px;
-}
-.contact-form h6 {
- margin-bottom: 10px;
-}
-.contact-form p.thanks {
- display: none;
-}
-.contact-form label {
- font-weight: normal;
- font-size: 12px;
- margin-bottom: 6px;
+/*
+Theme Name: Bliss by Bluthemes
+Author: Bluthemes
+Author URI: http://bluthemes.com
+Description: Simplicity is Bliss
+Version: 3.1.1
+Tags: two-columns, theme-options, right-sidebar, custom-background, custom-menu, post-formats, threaded-comments
+*/
+*{
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-font-smoothing:antialiased;
+}
+iframe{ max-width: 100%; }
+html,body{
+ height: 100%;
+}
+body{
+ font-family: "Lato",Helvetica,sans-serif;
+ font-weight: 300;
+ line-height: 1.75;
+ background: #E9F0F4;
+ overflow-x: hidden;
+ position: relative;
+ font-size: 14px;
+ left: 0;
+ width: 100%;
}
-.contact-form input, .contact-form textarea {
- width: 96%;
+body.nomargin #main{
+ padding-top: 75px;
+ margin-bottom: 0;
}
-.contact-form textarea {
- height: 189px;
+body.nomargin #content{
+ margin-bottom:0;
}
-.contact-form h5 {
- margin-bottom: 10px;
+body.nomargin .widget-area{
+ padding-top: 25px;
}
-.button, button, input[type="submit"], input[type="reset"], input[type="button"] {
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
+h1,h2,h3,h4{
+ font-family: 'Merriweather',serif;
+ font-weight: 400;
}
-
-
-/* #Shortcodes
-================================================== */
-
-/* --------------------------------------------
- TEXT BLOCK SHORTCODE
--------------------------------------------- */
-
-.wpb_text_column ul, .box-content-wrap ul {
- list-style: disc inside none;
-}
-.wpb_text_column {
- margin-bottom: 10px;
-}
-.wpb_text_column h3.wpb_heading {
- display: block;
- padding-bottom: 0;
- border-bottom-width: 0;
-}
-.wpb_text_column h3.wpb_text_heading {
- border-bottom-width: 2px;
- display: inline-block;
- padding-bottom: 4px;
-}
-.full-width-text {
- padding-top: 50px;
- padding-bottom: 50px;
- position: relative;
-}
-.full-width-text:after {
- content: '';
- width: 0;
- height: 0;
- border-top: 50px solid transparent;
- border-right: 60px solid transparent;
- border-left: 60px solid transparent;
- position: absolute;
- left: 50%;
- margin-left: -60px;
- bottom: -25px;
-}
-.full-width-text .heading-wrap {
- text-align: center;
-}
-.full-width-text h3.wpb_heading {
- display: inline-block;
-}
-.full-width-text p {
- line-height: 28px;
- margin-bottom: 30px;
+a:focus{
+ outline: none;
}
-
-/* --------------------------------------------
- SHOWCASE SHORTCODE
--------------------------------------------- */
-
-.fullwidth-layout .wpb_showcase_widget.full-width {
- margin: 0!important;
- width: 100%!important;
+a, a:hover, a:focus, a:active{
+ text-decoration: none!important;
+ /*color: #F69087;*/
+}
+.lightbox img{
+ -webkit-transition: opacity .3s ease-in-out;
+ -moz-transition: opacity .3s ease-in-out;
+ -o-transition: opacity .3s ease-in-out;
+ -ms-transition: opacity .3s ease-in-out;
+ transition: opacity .3s ease-in-out;
+ opacity: 1;
+ border-radius:2px;
+}
+.lightbox img:hover{
+ opacity: 0.8;
+}
+
+/*.entry-content p a:before {
+ border-bottom: 2px solid rgba(0,0,0,0.5);
+ color: rgba(0,0,0,0.5);
+ content: attr(data-hover);
+ left: 0;
+ max-width: 0;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ top: -5px;
+ white-space: nowrap;
+ -webkit-transition: all .3s ease-in-out;
+ -moz-transition: all .3s ease-in-out;
+ -o-transition: all .3s ease-in-out;
+ -ms-transition: all .3s ease-in-out;
+ transition: all .3s ease-in-out;
+}
+.entry-content p a {
+ position:relative;
+ padding: 0;
+ text-shadow: none;
+}
+.entry-content p a:hover:before, .entry-content p a:focus:before {
+ max-width: 100%;
+}*/
+
+.above_content{
+ margin-bottom: 30px;
+ text-align: center;
+}
+#main{
+ margin-bottom: 50px;
+ padding-top: 25px;
+}
+header{
+ display: block;
+}
+
+#primary.both_side #content{
+ float: none;
+ display: inline-block;
+}
+#primary.both_side .widget-area{
+ float: left;
+}
+#primary.both_side .widget-area + .widget-area{
+ float: right;
+}
+
+#primary.left_side .widget-area{
+ float: left;
+}
+#primary.left_side #content{
+ float: right;
+}
+#primary.right_side .widget-area{
+ float: right;
+}
+#primary.right_side #content{
+ float: left;
+}
+aside.widget-area {
+ /*width: 300px;*/
+ /*margin-left: 30px;*/
+}
+.span9 {
+ width: 610px;
+}
+#page{
+ position: relative;
+ overflow-x: hidden;
+}
+.top-line{
+ height:3px;
+ position:absolute;
+ top:0;
+ width:100%;
+ left:0;
+ border-radius:2px 2px 0 0;
+ overflow:hidden;
+}
+.top-line div{
+ display: inline-block;
+ float: left;
+ height: 100%;
+ position: relative;
+ top: 0;
+ width: 25%;
+}
+#masthead{
+ background: #2E3641;
+ z-index: 999;
+ /*height: 75px;*/
+ /*margin-bottom: 50px;*/
+ position: relative;
+ top: 0;
+ width: 100%;
+}
+#masthead .top-banner{
+ height:70px;
+ background-color: inherit;
+ position: relative;
+}
+#masthead .top-banner > .container{
+ position: relative;
+ }
+
+#masthead .image-overflow{
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+ position: absolute;
+}
+
+#masthead .header-background-image{
+ position: absolute;
+ overflow: hidden;
+ z-index: -1;
+ top: 0;
+ left: -50%;
+ width: 200%;
+ height: 100%;
+}
+#masthead .header-background-image img{
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ min-width: 50%;
+ min-height: 50%;
+}
+
+#masthead .top-banner .top-banner-social {
+ line-height: 70px;
+}
+#masthead .top-banner .top-banner-social a {
+ padding: 5px;
+ font-size: 18px;
+ opacity: 1;
+
+ -webkit-transition: opacity 0.4s ease-in-out;
+ -moz-transition: opacity 0.4s ease-in-out;
+ -o-transition: opacity 0.4s ease-in-out;
+ -ms-transition: opacity 0.4s ease-in-out;
+ transition: opacity 0.4s ease-in-out;
+}
+#masthead .top-banner .top-banner-social a:hover {
+ opacity: 0.7;
+}
+/*#masthead .top-banner .banner-overlay{
+ display: block;
+ position: absolute;
+ left: 0;
+ height: 100%;
+ width: 100%;
+ content: '';
+ top: 0;
+ background-color:rgba(0,0,0,0.05);
+}*/
+
+#masthead .brand{
+ float: left;
+ position: relative;
+ z-index: 1;
}
-
-
-/* --------------------------------------------
- CLIENTS SHORTCODE
--------------------------------------------- */
-
-ul.clients-items {
- margin: 0 -25px 0 0;
- list-style: none;
-}
-.client-item {
- float: left;
- width: 124px;
- margin-right: 25px;
- margin-bottom: 25px;
-}
-.client-item figure {
- position: relative;
- width: 100%;
- height: 124px;
- border: 1px solid transparent;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- opacity: 0.75;
- -moz-opacity: 0.75;
- filter:alpha(opacity= 75);
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-.client-item figure:hover {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
-}
-.client-item figure img {
- margin:auto;
- position:absolute;
- top:0;
- bottom:0;
- left:0;
- right:0;
- max-height:100%;
- max-width:100%;
- width: auto;
- display: block;
-}
-.wpb_featured_clients_widget.alt-bg {
- padding-top: 22px;
- padding-bottom: 12px;
-}
-.wpb_featured_clients_widget li {
- margin-bottom: 10px;
-}
-.wpb_featured_clients_widget h4 {
- line-height: 60px;
- margin-top: 0;
- margin-bottom: 0;
- font-weight: normal;
-}
-.featured-clients-items {
- margin-bottom: 0;
-}
-.featured-clients-items li a {
- text-align: center;
-}
-.featured-clients-items li img {
- max-height: 60px;
- width: auto;
-}
-.featured-clients-items:hover li a {
- opacity: 0.5;
- -moz-opacity: 0.5;
- filter:alpha(opacity= 50);
-}
-.featured-clients-items li:hover a {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
+#masthead .brand h1{
+ margin-top:13px;
+ position: relative;
+ font-size: 28px;
+ float: left;
+}
+#masthead .brand.brand-image h1{
+ float: left;
+}
+#masthead .brand.brand-image h1 small{
+ margin: 0 10px;
+}
+#masthead .brand small{
+ font-size: 15px;
+ font-weight: normal;
+ margin: 12px 15px;
+ opacity: 0.7;
+ color: #DFDFDF;
+}
+
+#masthead .brand img{
+ height: 50px;
+ margin: 10px 0;
+ float: left;
+}
+#mobile-menu {
+ position: absolute;
+ right: 5px;
+ top: 3px;
+}
+#mobile-menu select {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
+ border: none!important;
+ outline: none!important;
+ text-indent: 10000px;
+ position: relative;
}
-
-/* --------------------------------------------
- BOXED CONTENT SHORTCODE
--------------------------------------------- */
-
-.wpb_box_text .box-content-wrap {
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- padding: 16px 20px 10px;
- -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- box-shadow: 0 1px 0 rgba(0,0,0,.1);
-}
-.wpb_box_text.whitestroke .box-content-wrap {
- border: 1px solid transparent;
+#mobile-menu:before {
+ content: '\f0c9';
+ font-family: 'fontello';
+ color: #333333;
+ position: absolute;
+ top: 7px;
+ right: 0;
+ font-size: 25px;
+ width: 40px;
+ height: 40px;
+ display: block;
}
-
-/* --------------------------------------------
- CONTACT FORM SHORTCODE
--------------------------------------------- */
-
-.wpcf7 p {
- clear: both;
- height: auto;
- overflow: hidden;
- margin-bottom: 0;
-}
-span.wpcf7-form-control-wrap {
- display: block;
-}
-.wpcf7 span.wpcf7-not-valid-tip {
- top: 3px;
- left: 5px;
- background: transparent;
- color: red;
- border: 0;
-}
-.wpcf7 .wpcf7-captchar + span.wpcf7-not-valid-tip {
- top: 10px;
- left: 78px;
-}
-.wpcf7 input[type="text"], .wpcf7 input[type="email"], .wpcf7 textarea, .wpcf7 select, input[type="email"], input[type="tel"] {
- width: 95%;
- margin-top: 6px;
- margin-bottom: 20px;
-}
-.sidebar .wpcf7 input[type="text"], .sidebar .wpcf7 input[type="email"], .sidebar .wpcf7 textarea, .sidebar .wpcf7 select {
- width: 88%;
-}
-.wpcf7 textarea {
- max-width: 95%;
-}
-.wpcf7 .wpcf7-captchac {
- float: left;
- border: 1px solid #CCC;
- padding: 3px 0 4px;
- margin: 6px 10px 0 0;
-}
-.wpcf7 input.wpcf7-captchar {
- float: left;
- width: 45%;
-}
-.wpcf7 input.wpcf7-submit[type="submit"] {
- display: inline-block;
- font-size: 14px;
- line-height: 18px;
- height: auto;
- padding: 8px 28px 7px 14px;
- background-image: url('images/button-arrow.png');
- background-position: 83% center;
- background-repeat: no-repeat;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
- border: 0;
- -webkit-border-radius: 10px;
- -moz-border-radius: 10px;
- border-radius: 10px;
-
-}
-.wpcf7 input.wpcf7-submit[type="submit"]:hover {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+#masthead .bluth-navigation .container{ position: relative; }
+#masthead .bluth-navigation{
+ opacity: 1;
+ background-color: inherit;
+ box-shadow: 0 1px 0 rgba(0,0,0,0.1) inset, 0 -1px 0 rgba(0,0,0,0.1) inset;
+ min-height: 46px;
+ -webkit-transition: top 0.3s ease-in-out;
+ -moz-transition: top 0.3s ease-in-out;
+ -o-transition: top 0.3s ease-in-out;
+ -ms-transition: top 0.3s ease-in-out;
+ transition: top 0.3s ease-in-out;
+}
+#masthead .bluth-navigation .navbar .nav > li > a {
+ line-height:25px;
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ -ms-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+ /*padding: 13px 20px;*/
+
+}
+#masthead .bluth-navigation.shrunk .navbar .nav > li > a {
+ line-height:25px;
+
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ -ms-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+#masthead .bluth-navigation.fixed{
+ opacity: 0.95;
+ margin-bottom: 0;
+ width: 100%;
+ top: 0;
+ left: 0;
+ position: fixed;
+}
+#masthead .bluth-navigation:hover{
+ opacity: 1;
+}
+#masthead .bluth-navigation .mini-logo{
+ display: inline-block;
+ top: 6px;
+ float: left;
+ text-align: right;
+ overflow: hidden;
+
+ max-width:0;
+ opacity:0;
+
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ -ms-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+#masthead .bluth-navigation.shrunk .mini-logo{
+ max-width:200px;
+ opacity: 1;
+
+ -webkit-transition: all 0.3s ease-in-out 0.3s;
+ -moz-transition: all 0.3s ease-in-out 0.3s;
+ -o-transition: all 0.3s ease-in-out 0.3s;
+ -ms-transition: all 0.3s ease-in-out 0.3s;
+ transition: all 0.3s ease-in-out 0.3s;
+}
+#masthead .bluth-navigation .mini-logo h1, #masthead .bluth-navigation .mini-logo img{
+ font-size: 18px;
+ position: relative;
+ line-height: 23px;
+ max-height: 25px;
+ border-right: 2px solid rgba(0, 0, 0, 0.05);
+ padding-right: 5px;
+ /*min-width:100px;*/
+
+ top:0;
+ left:-100%;
+
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ -ms-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+#masthead .bluth-navigation.shrunk .mini-logo h1, #masthead .bluth-navigation.shrunk .mini-logo img{
+ left:0;
+
+ -webkit-transition: all 0.3s ease-in-out 0.2s;
+ -moz-transition: all 0.3s ease-in-out 0.2s;
+ -o-transition: all 0.3s ease-in-out 0.2s;
+ -ms-transition: all 0.3s ease-in-out 0.2s;
+ transition: all 0.3s ease-in-out 0.2s;
+}
+#masthead .bluth-navigation .mini-logo img{ max-height:45px; position: static; }
+#masthead .bluth-navigation .navbar-inner{
+ /*margin-left: 0;*/
+ padding: 0;
+ background: transparent;
+}
+#masthead .bluth-navigation.shrunk .navbar-inner{
+}
+/* search form */
+#masthead .bluth-navigation .bl_search {
+
+ margin: 10px 0;
+ position: static;
+ right: 0;
+ -webkit-transition: all 0.3s ease-in-out 0.3s;
+ -moz-transition: all 0.3s ease-in-out 0.3s;
+ -o-transition: all 0.3s ease-in-out 0.3s;
+ -ms-transition: all 0.3s ease-in-out 0.3s;
+ transition: all 0.3s ease-in-out 0.3s;
+}
+#masthead .bluth-navigation.shrunk .bl_search {
+ margin: 10px 0;
+
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ -ms-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+#masthead .bluth-navigation .bl_search form{
+ margin: 0;
+}
+
+/* HEADER BIG LOGO */
+#masthead.header_big_logo .top-banner{
+ height: auto;
+ text-align: center;
+}
+
+#masthead.header_big_logo .brand{
+ float: none;
+ display: inline-block;
+}
+#masthead.header_big_logo .brand img{
+ float:none;
+ height: auto;
+ margin-bottom: 0;
+}
+#masthead.header_big_logo .brand h1{
+ margin-top: 0;
+}
+#masthead.header_big_logo .brand.brand-image h1 {
+ float: none;
+ display: block;
+}
+#masthead.header_big_logo .brand.brand-text h1{
+ font-size: 48px;
+ margin-top: 35px;
+}
+#masthead.header_big_logo .brand.brand-text h1 small{
+ display: block;
+}
+#masthead.header_big_logo .top-banner .top-banner-social {
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.admin-bar{
+ /*padding-top: 28px;*/
+}
+.admin-bar .bluth-navigation.fixed{
+ margin-top: 28px;
+}
+.cleanwidget{
+ background: transparent!important;
+ border: none!important;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+.cleanwidget .widget-head{
+ margin: 0;
+}
+.widget-area .cleanwidget .widget-head{
+ margin: -15px -15px 0;
+}
+.nopadding, .nopadding .widget-body{
+ padding: 0!important;
+}
+.nopadding > h3{
+ margin: 0!important;
+}
+.box{
+ background: none repeat scroll 0 0 #FFFFFF;
+ -moz-border-radius: 2px 2px 2px 2px;
+ -webkit-border-radius: 2px 2px 2px 2px;
+ border-radius: 2px 2px 2px 2px;
+}
+.relative{
+ position:relative!important;
+}
+.between_posts{
+ text-align: center;
+ /*margin-bottom: 30px;*/
+}
+.between_posts.box{
+ padding: 10px;
+ margin-bottom: 30px;
+}
+.bl_background{
+ position: fixed;
+ z-index: -1;
+ top: -50%;
+ left: -50%;
+ width: 200%;
+ height: 200%;
+}
+.bl_background img{
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: auto;
+ min-width: 50%;
+ min-height: 50%;
+}
+#stripe {
+ background: url("assets/img/stripe.png") repeat scroll 0 0 transparent;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+#background_pattern {
+ background-repeat: repeat;
+ height: 100%;
+ left: 0;
+ position: fixed;
+ top: 0;
+ width: 100%;
+ z-index: -1;
+}
+.input-append .btn{
+ box-shadow: none;
+}
+#content{
+ margin-bottom: 30px;
+}
+.page #content{
+}
+.page #content article.type-page{
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ background: #fff;
+}
+.page #content article .the-content{
+ opacity: 0;
+}
+
+.twocolumn .columns{ margin-left: -5px; margin-right: -5px; }
+.twocolumn article, .twocolumn article.type-post{ width: 49.9999%; padding:0 5px; margin-bottom: 10px; }
+.twocolumn article.format-audio .entry-audio { margin-top: 0; }
+.twocolumn article.format-gallery .swiper-gallery{ max-height: 150px; overflow:hidden; }
+.twocolumn article .entry-content{ padding: 15px; position: relative; height: auto; }
+.twocolumn article .post-title { position: static; padding: 15px 85px 15px 15px; }
+.twocolumn article .post-title h1, .twocolumn article .entry-image a h1{ font-size: 20px; }
+.twocolumn article .post-meta { position: relative; padding: 0; bottom: 0; font-size: 10px; width: 100%; margin: 0; text-align: left; left: 0; line-height: 1.7; }
+.twocolumn article .post-meta ul li:first-child{ display: block; float: none; font-size: 12px; }
+.twocolumn article .post-meta ul li:first-child + li{ display: none; }
+.twocolumn article .post-meta ul li{ margin-right: 3px; }
+/*.twocolumn article .entry-meta{ padding: 15px!important; }*/
+.twocolumn article.format-quote footer.entry-meta > *, .twocolumn article.format-status footer.entry-meta > *{ padding: 17px 15px;}
+
+.threecolumn .columns{ margin-left: -5px; margin-right: -5px; }
+.threecolumn article, .threecolumn article.type-post{ width: 33.333%; padding:0 5px; margin-bottom: 10px; }
+.threecolumn article.format-audio .entry-audio { margin-top: 0; }
+.threecolumn article.format-gallery .swiper-gallery{ max-height: 150px; overflow:hidden; }
+.threecolumn article .entry-content{ padding: 15px; position: relative; }
+.threecolumn article .post-title { position: static; padding: 15px 85px 15px 15px;}
+.threecolumn article .post-title .author-image img{ height: 25px; }
+.threecolumn article .post-title h1, .threecolumn article .entry-image a h1{ font-size: 20px; }
+.threecolumn article .post-meta { position: relative; padding: 0; bottom: 0; font-size: 10px; width: 100%; margin: 0; text-align: left; left: 0; line-height: 1.7; }
+.threecolumn article .post-meta ul li:first-child{ display: block; float: none; font-size: 12px; }
+.threecolumn article .post-meta ul li:first-child + li{ display: none; }
+.threecolumn article .post-meta ul li{ margin-right: 3px; }
+/*.threecolumn article .entry-meta{ padding: 15px!important; }*/
+.threecolumn article.format-quote footer.entry-meta > *, .threecolumn article.format-status footer.entry-meta > *{ padding: 17px 15px;}
+
+/*****
+ CONTENT LIST
+******/
+ #content.list .entry-image, #content.list .entry-image img{
+ height: 150px;
+ left: 0;
+ position: absolute;
+ width: 150px;
+ z-index: 1;
+ }
+ #content.list .entry-container{
+ max-height: 150px;
+ overflow: hidden;
+ padding: 50px;
+ }
+ #content.list .entry-image + .entry-container{
+ padding: 20px 20px 20px 180px;
+ }
+ #content.list .entry-content{
+ padding: 0;
+ }
+
+.bl_alert {
+ background: none repeat scroll 0 0 #fff;
+ height: 75px;
+ padding: 5px 0;
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ z-index: 1000;
+ border-top: 1px solid #ddd;
+ display: none;
+}
+.bl_alert > h4 {
+ margin: 22px 0;
+}
+.radiustop{
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.radiusbottom{
+ -moz-border-radius: 0 0 2px 2px;
+ -webkit-border-radius: 0 0 2px 2px;
+ border-radius: 0 0 2px 2px;
+}
+/* page */
+article.type-page .the-content, article.type-page .title{
+ padding: 45px;
+}
+article.type-page .title + .the-content{
+ padding-top: 10px;
+}
+article.type-page .entry-image{
+ overflow: hidden;
+ max-height: 400px;
+ position: relative;
+}
+.entry-content:after,.entry-content:before, article.type-page:before, article.type-page:after {
+ content: "";
+ display: table;
+ line-height: 0;
+}
+.entry-content:after, article.type-page:after {
+ clear: both;
+}
+article.type-page .title {
+ /*margin: 0 0 20px;*/
+ border-bottom: 1px solid #eaeaea;
+ margin:0;
+ padding-top: 30px;
+ padding-bottom: 30px;
+}
+article.type-page .title small{
+ display: inline-block;
+ font-size: 16px;
+ margin-left: 15px;
+ position: relative;
+ top: -8px;
+}
+article.type-page .entry-image .title {
+ position: absolute;
+ color: #FFFFFF;
+ text-shadow: 1px 1px 2px rgba(0,0,0,0.4);
+ top: 0;
+ left: 0;
+ width: 100%;
+ text-align: center;
+ border-bottom: none;
+ padding-top: 125px;
+ font-weight: 600;
+ /*line-height: 200px;*/
+}
+article.type-page .entry-image .title small{
+ margin: 0;
+ display: block;
+ width: 100%;
+ text-align: center;
+ line-height: 40px;
+ color: #FFFFFF;
+ opacity: 0.8;
+}
+.the-content {
+ font-size: 16px;
+}
+.the-content p{
+ font-size: 16px;
+}
+.the-content p.lead{
+ font-size: 21px;
+}
+.site-footer{
+ box-shadow: 0 1px 0 rgba(0,0,0,0.1) inset;
+ background: #2E3641;
+ position: relative;
+ color: #fff;
+}
+.site-footer .box{
+ color: #333;
+}
+.site-footer .container{
+ padding: 40px 0;
+}
+.site-footer #footer-bottom{
+ background: rgba(0,0,0,0.1);
+ color: #B8B8B8;
+ font-size: 12px;
+ padding: 5px 0;
+ text-align: center;
+}
+.site-footer #footer-body{
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+.site-footer #footer-body ul{
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+#footer-body > div[class*="span"] ul li a{
+ font-size: 16px;
+ text-decoration: none;
+ display: inline-block;
+ padding: 2px 4px;
+ border: none;
+ -webkit-transition: transform 0.2s ease-in-out;
+ -moz-transition: transform 0.2s ease-in-out;
+ -o-transition: transform 0.2s ease-in-out;
+ -ms-transition: transform 0.2s ease-in-out;
+ transition: transform 0.2s ease-in-out;
+}
+#footer-body .widget-head{
+ background: transparent;
+ border: none;
+ margin: 0;
+ padding: 0;
+}
+#footer-body .box .widget-head{
+ background: #272F3A;
+ border: none;
+ padding: 0 15px;
+}
+#footer-body .widget_nav_menu,
+#footer-body .widget_archive,
+#footer-body .widget_tag_cloud,
+#footer-body .widget_recent_entries,
+#footer-body .widget_meta,
+#footer-body .widget_categories,
+#footer-body .widget_pages,
+#footer-body .widget_rss{
+ background: transparent;
+ border: none;
+ padding: 0;
+}
+.site-footer .badge{
+ display: none;
+}
+.site-footer #footer-body .widget_nav_menu a:hover,
+.site-footer #footer-body .widget_archive a:hover,
+.site-footer #footer-body .widget_tag_cloud a:hover,
+.site-footer #footer-body .widget_recent_entries a:hover,
+.site-footer #footer-body .widget_meta a:hover,
+.site-footer #footer-body .widget_categories a:hover,
+.site-footer #footer-body .widget_pages a:hover{
+ background: #F69087;
+/* transform: scale(1.04);
+ -ms-transform: scale(1.04);
+ -webkit-transform: scale(1.04); */
+ color: #fff!important;
+}
+.site-title {
+ font-size: 22px;
+ line-height: 35px;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
+ margin: 0;
}
-
-/* --------------------------------------------
- CODE SHORTCODE
--------------------------------------------- */
-
-code {
- display: block;
- padding: 5px 20px 20px;
- border: 1px solid #e4e4e4;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- background: #f7f7f7;
- font: 11px Consolas, "Andale Mono", Courier, "Courier New", monospace;
- line-height: 16px;
- overflow: auto;
- overflow-y: hidden;
- white-space: pre;
- white-space: pre-wrap;
- word-wrap: break-word;
-}
-code p {
- font-size: 11px;
- margin-bottom: 12px;
+.pad15{
+ padding: 15px;
+}
+.pad25{
+ padding: 25px;
+}
+.nobg{
+ background-color: transparent!important;
+}
+.full-width{
+ width: 100%;
+ display: block;
+}
+select, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input {
+ height: 30px;
+ line-height: 30px;
+}
+.popover{
+ min-width: 220px;
+}
+.entry-image{
+ overflow: hidden;
+ background: #F4F4F4;
+ max-height: 400px;
+ position: relative;
+}
+/*.entry-image h2{
+ color: #FFFFFF;
+ font-family: lato;
+ font-size: 90px;
+ font-weight: 900;
+ line-height: 100%;
+ margin-left: 15px;
+ opacity: 0.15;
+ position: absolute;
+ width: 50%;
+ word-wrap: break-word;
+ z-index: 1;
+}*/
+.entry-image img {
+ width: 100%;
+}
+.entry-meta time{
+ color: #666;
+ font-size: 20px;
+}
+.entry-audio {
+ margin-top: -120px;
+}
+.entry-audio.no-image {
+ margin-top: -50px;
+}
+.entry-video {
+ line-height: 0;
+}
+.entry-video iframe, .entry-video object{
+ /*min-height: 433px;*/
+ min-width: 100%;
+}
+.threecolumn .entry-video iframe, .threecolumn .entry-video object{
+ /*min-height: 150px;*/
+}
+.twocolumn .entry-video iframe, .twocolumn .entry-video object{
+ /*min-height: 211px;*/
+
+}
+.pagination{
+ text-align: center;
+}
+.pagination > * {
+ font-size:18px;
+ margin-right: 10px;
+ padding: 5px 13px;
+ display:inline-block;
+}
+.pagination > a {
+ background: none repeat scroll 0 0 #FFFFFF;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ text-decoration:none;
+ -webkit-transition: all .1s ease-in-out;
+ -moz-transition: all .1s ease-in-out;
+ -o-transition: all .1s ease-in-out;
+ transition: all .1s ease-in-out;
+}
+.pagination > a:hover {
+ -webkit-transform: scale(1.1);
+ -moz-transform: scale(1.1);
+ -ms-transform: scale(1.1);
+ -o-transform: scale(1.1);
+ transform: scale(1.1);
+}
+.single-pagination{
+ margin-top:25px;
+ padding: 0 25px;
+ position: relative;
+ direction: ltr;
+}
+.single-pagination .box{
+ width:100%;
+ height: 70px;
+ border-radius:2px;
+}
+.single-pagination a{
+ position: relative;
+ top: 0;
+ height: 70px;
+ width: 50%;
+}
+.single-pagination a.nav-previous{
+ border-right:1px solid rgba(0,0,0,0.15);
+}
+.single-pagination a.nav-previous, .single-pagination a.nav-previous > span, .single-pagination a.nav-previous > .bgimage, .single-pagination a.nav-previous > .tab_icon, .single-pagination a.nav-previous > .bgfallback{
+ left: 0;
+ z-index: 1;
}
-
-/* --------------------------------------------
- TABLE SHORTCODE
--------------------------------------------- */
-
-table.sf-table {
- width: 100%;
- display: table;
+.single-pagination a.nav-next, .single-pagination a.nav-next > span, .single-pagination a.nav-next > .bgimage, .single-pagination a.nav-next > .tab_icon, .single-pagination a.nav-next > .bgfallback{
+ right: 0;
+ z-index: 1;
}
-table.striped_minimal tr:nth-of-type(even), table.striped_bordered tr:nth-of-type(even) {
- background-color: #f7f7f7;
+.single-pagination a.nav-next > span, .single-pagination a.nav-next > .bgimage, .single-pagination a.nav-next > .tab_icon, .single-pagination a.nav-next > .bgfallback{
+ left:100%;
}
-table.sf-table th {
- padding: 10px 20px;
- text-transform: uppercase;
- letter-spacing: 1px;
- font-weight: bold;
- vertical-align: middle;
- text-align: left;
+.single-pagination a > .bgfallback{
+ background-color:#ffffff;
+ position: absolute;
+ top: 50%;
+ width: 88px;
+ height: 88px;
+ margin: -44px 0 0 -44px;
+ border-radius: 500px;
+}
+.single-pagination a > span{
+ width: 46px;
+ height: 46px;
+ display: block;
+ -moz-border-radius: 23px;
+ -webkit-border-radius: 23px;
+ border-radius: 23px;
+ cursor: pointer;
+ opacity: 0.9;
+ position: absolute;
+ top: 50%;
+ background-size: 17px 25px;
+ margin: -23px 0 0 -23px;
+ -webkit-transition: all 0.4s ease;
+ -moz-transition: all 0.4s ease;
+ -o-transition: all 0.4s ease;
+ -ms-transition: all 0.4s ease;
+ transition: all 0.4s ease;
+}
+.single-pagination a:hover > span{
+ width: 100px;
+ height: 100px;
+ -moz-border-radius: 50px;
+ -webkit-border-radius: 50px;
+ border-radius: 50px;
+ /*opacity: 0;*/
+ margin: -50px 0 0 -50px;
+ background-size: 22px 32px;
+ background-color:#a8872d;
+}
+.single-pagination a > .bgimage{
+ width: 0px;
+ height: 0px;
+ position: absolute;
+ top: 50%;
+ overflow: hidden;
+ background-size: 100% 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+ margin: 0px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+}
+.single-pagination a:hover > .bgimage{
+ width: 90px;
+ height: 90px;
+ background-size: 120% 120%;
+ margin: -45px 0 0 -45px;
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+}
+.single-pagination a > .tab_icon{
+ width: 90px;
+ height: 90px;
+ position: absolute;
+ top: 50%;
+ overflow: hidden;
+ background-size: 100% 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+ margin: -45px 0 0 -45px;
+ border-radius: 500px;
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+}
+.single-pagination a:hover > .tab_icon{
+ width: 0px;
+ height: 0px;
+ margin: 0;
}
-table.sf-table td {
- padding: 10px 20px;
+.single-pagination a > .tab_icon i{
+ width: 100%;
+ height: 100%;
+ padding-top:3px;
+ font-size:35px;
}
-table.standard_minimal th {
- padding: 10px 30px 10px 0;
- border-bottom: 2px solid #e4e4e4;
+.single-pagination a:hover > .tab_icon i{
+ padding-bottom:20px;
}
-table.striped_minimal th {
- border-bottom: 2px solid #e4e4e4;
+.single-pagination a.nav-previous h5{
+ display: block;
+ height: 50px;
+ overflow: hidden;
+ padding: 15px 15px 15px 60px;
+ position: absolute;
+ white-space: nowrap;
+ width: 95%;
}
-table.standard_minimal td {
- padding: 10px 30px 10px 0;
- border-bottom: 1px solid #e4e4e4;
+.single-pagination a.nav-next h5{
+ display: block;
+ height: 50px;
+ overflow: hidden;
+ padding: 15px 60px 15px 15px;
+ position: absolute;
+ white-space: nowrap;
+ width: 100%;
+ text-align:right;
+}
+/*.single-pagination > span{
+ width:50%;
+}
+.single-pagination > span a:hover{
+ background-color:#FAFAFA;
+ outline:none;
+ text-decoration: none;
+ box-shadow:-2px 2px 0 0 rgba(0,0,0,0.05) inset;
+}
+.single-pagination > span a:hover span{
+ color: #6D6D6D;
+}
+.single-pagination a{
+ color: #999999;
+ font-style:italic;
+ font-weight: 200;
+}
+.single-pagination a span{
+ color: #717171;
+ font-style:normal;
+ font-weight: bold;
+}*/
+.nav-previous{ float:left; }
+.nav-previous .tab_attachment{ float:left; }
+.nav-previous a[rel="prev"]{
+ display: block;
+ padding: 20px;
+ position: relative;
+ text-align: left;
}
-table.standard_bordered, table.striped_bordered {
- border: 1px solid #e4e4e4;
+.nav-next{ float:right; }
+.nav-next .tab_attachment{ float:right; }
+.nav-next a[rel="next"]{
+ display: block;
+ padding: 20px;
+ position: relative;
+ text-align: right;
+}
+footer.entry-meta {
+ bottom: 20px;
+ margin-top: 25px;
+ position: relative;
+ border-radius:0 0 2px 2px;
+}
+
+footer.entry-meta ul{
+ color: rgba(0,0,0,0.3);
+ list-style: none;
+ margin:0;
+}
+footer.entry-meta ul a{
+ color: rgba(0,0,0,0.3);
+}
+footer.entry-meta .up_arrow:after, footer.entry-meta .up_arrow:before {
+ border-color: transparent transparent #FCFCFC ;
+ border-style: solid;
+ border-width: 15px;
+ content: "";
+ height: 0;
+ left: 40px;
+ position: absolute;
+ top: -30px;
+ width: 0;
+}
+footer.entry-meta .up_arrow:before {
+ top: -31px;
+ border-color: transparent transparent #DDDDDD;
+}
+footer.entry-meta .avatar {
+ -moz-border-radius: 150px;
+ -webkit-border-radius: 150px;
+ border-radius: 150px;
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+footer.entry-meta h4 a{
+ color: #878787;
+ font-weight: normal;
+ text-shadow: 0 1px 0 #FFFFFF;
+ text-decoration: none;
+}
+.author-meta{
+ position: relative;
+ text-align: center;
+ margin-top: 30px;
+}
+.author-meta .author-header{
+ margin-bottom: 40px;
+ background-color: #333333;
+}
+.author-meta .author-header .author-image{
+ border: 5px solid #FFFFFF;
+ border-radius: 500px 500px 500px 500px;
+ bottom: -40px;
+ display: inline-block;
+ position: relative;
+ text-align: center;
+}
+.author-meta .author-header .author-image img{
+ height: 90px;
+ width: 90px;
+ border-radius: 500px 500px 500px 500px;
+
+}
+.author-meta .author-body{
+ padding: 0px 75px 25px;
+}
+.author-meta .author-body p{
+ font-size: 16px;
+ opacity: 0.6;
+}
+.widget-area > div{
+ padding: 15px;
+ margin-bottom: 30px;
+ position:relative;
+}
+.widget-area > div > form{
+ margin: 0;
+}
+.widget-area div.bl_tweets,
+.widget-area div.bl_likebox,
+.widget-area div.bl_instagram,
+.widget-area div.bl_tabs,
+.widget-area div.bl_socialbox,
+.widget-area div.widget_calendar,
+.widget-area div.widget_pages,
+.widget-area div.widget_archive,
+.widget-area div.widget_calendar,
+.widget-area div.widget_nav_menu,
+.widget-area div.widget_tag_cloud,
+.widget-area div.widget_recent_entries,
+.widget-area div.widget_meta,
+.widget-area div.widget_categories,
+.widget-area div.bl_flickr,
+.widget-area div.widget_rss,
+.widget-area div.bl_author,
+.widget-area div.bl_imagebox,
+.widget-area div.bl_newsletter,
+.widget-area div.widget_search{
+ padding: 0;
+}
+.widget-area div.bl_tweets .widget-head,
+.widget-area div.bl_likebox .widget-head,
+.bl_instagram .widget-head,
+.widget-area div.bl_newsletter .widget-head,
+.widget-area div.bl_tabs .widget-head,
+.widget-area div.bl_socialbox .widget-head,
+.widget-area div.widget_calendar .widget-head,
+.widget-area div.widget_pages .widget-head,
+.widget-area div.widget_archive .widget-head,
+.widget-area div.widget_calendar .widget-head,
+.widget-area div.widget_nav_menu .widget-head,
+.widget-area div.widget_tag_cloud .widget-head,
+.widget-area div.widget_recent_entries .widget-head,
+.widget-area div.widget_meta .widget-head,
+.widget-area div.widget_categories .widget-head,
+.widget-area div.bl_flickr .widget-head,
+.widget-area div.bl_author .widget-head,
+.widget-area div.bl_imagebox .widget-head,
+.widget-area div.widget_rss .widget-head,
+.widget-area div.widget_search .widget-head{
+ margin: 0;
+}
+.widget-area > div.box > select {
+ margin: 15px;
+ width: 270px;
+}
+.nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus{
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ border: none;
+}
+.nav-tabs{
+ border-bottom: none;
+}
+.nav-tabs > li{
+ display: table-cell;
+ width: 1%;
+ float: none;
+}
+.nav-tabs > li a{
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+.nav-tabs > li:nth-child(2) a{
+ /*background: #9EB2C0;*/
+}
+
+.bl_google_ads{
+ padding: 0!important;
+}
+.bl_google_ads article{
+ padding: 15px;
+}
+.bl_google_ads h3{
+ margin: 0;
+}
+
+ /***************/
+ /* TWEETS WIDGET
+ /***************/
+
+ .bl_tweets .box{
+ padding: 0;
+ background-color: transparent;
+ }
+ .bl_tweets .widget-body{
+ background: #FFFFFF;
+ border-radius: 3px;
+ }
+ .bl_tweets .twitter-user-info{
+ background: none repeat scroll 0 0 #1BB2E9;
+ background-size: cover;
+ background-position: center center;
+ border-bottom: 1px solid #EEEEEE;
+ color: #FFFFFF;
+ min-height: 86px;
+ padding: 15px 15px 15px 80px;
+ position: relative;
+ text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
+ border-radius: 2px 2px 0 0;
+ }
+ .bl_tweets .twitter-user-info .user-image{
+ position: absolute;
+ left:15px;
+ border-radius: 5px;
+ border: 3px solid #FFFFFF;
+ }
+ .bl_tweets .twitter-user-info .user-image img{
+ border-radius: 5px;
+ }
+ .bl_tweets .twitter-user-info .user-name .uname{
+ margin-bottom: 0;
+ font-size: 19px;
+ }
+ .bl_tweets .twitter-user-info .user-description{
+ opacity: 0.7;
+ font-size: 13px;
+ }
+ .bl_tweets .twitter-user-info .user-description p{
+ margin-bottom: 0;
+ }
+ .bl_tweets .twitter-user-info .user-location{
+ opacity: 0.7;
+ font-size: 11px;
+ }
+ .bl_tweets .twitter-user-info .user-location p{
+ margin-bottom: 0;
+ }
+ .bl_tweets .twitter-status{
+ background-color: #ffffff;
+ color: #222222;
+ padding: 15px;
+ border-bottom: 1px dashed #EEEEEE;
+ }
+ .bl_tweets .twitter-status:last-child{
+ border-bottom: none;
+ }
+ .bl_tweets .twitter-status time{
+ opacity: 0.5;
+ font-size: 12px;
+ }
+ .bl_tweets .twitter-status .reply-to{
+ font-size: 13px;
+ color: #1BB2E9;
+ }
+
+.site-footer #footer-body .nav-tabs > li > a, .nav-tabs > li > a{
+ background: rgba(255,255,255,0.5);
+ border: medium none!important;
+ color: rgba(0,0,0,0.5);
+ font-size: 15px;
+ font-weight: bold;
+ text-align: center;
+ border-radius: 0;
+ margin: 0;
+ padding: 8px 0;
+ display: block;
+}
+.nav-tabs > li > a:hover{
+ background: rgba(255,255,255,1);
+ color: #333333;
+}
+.site-footer #footer-body #bl_side_tabs .active a, #bl_side_tabs .active a{
+ color: #333333;
+ background: #fff!important;
+ display: block;
+}
+.widget-area h3, #footer-body h3{
+ /*color: #333333;*/
+ padding: 5px 15px;
+ font-size: 18px;
+ box-shadow: 0 -1px 0 rgba(0,0,0,0.06) inset;
+}
+.widget-area h3 * {
+ font-size: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ color: inherit;
+}
+.top-color {
+ width: 100%;
+ position: relative;
+ z-index: 999;
+}
+.top-color div {
+ float: left;
+ height: 5px;
+ width: 25%;
+}
+.above_header{
+ padding: 5px 0;
+ text-align: center;
+ background: #2E3641;
+}
+.format-status .post-title{
+ border-bottom: 1px solid #DDDDDD;
+}
+.format-status .entry-content{
+ padding: 0;
+ border-bottom: 1px solid #DDDDDD;
+}
+.format-status .entry-container.bl_facebook .entry-content, .format-status .entry-container.bl_twitter .entry-content{
+ padding: 0;
+ background-color: #F4F5F8;
+}
+.format-status iframe{
+ /*border: none!important;*/
+ box-shadow: none!important;
+ -moz-box-shadow: none!important;
+ -webkit-box-shadow: none!important;
+ max-width: none!important;
+ /*min-width: 100%!important;*/
+}
+.format-status iframe.twitter-tweet{
+ margin: 25px auto !important;
+ /*padding-left:25px!important;*/
+}
+.format-status .fb-post{
+ text-align: center;
+ width: 100%;
+}
+.format-status .fb-post span {
+ margin: 25px 0;
+ max-width: 100%;
+ overflow-y: hidden;
+}
+.format-status .entry-container.bl_google .entry-content{
+ padding: 0;
+ padding-top: 15px;
+ padding-bottom: 15px;
+ background-color: #F4F5F8;
+ text-align: center;
+}
+.format-status .entry-container.bl_google .entry-content div{
+ display: inline-block;
+}
+/*.format-status .post-meta{
+ border-bottom: 1px solid #DDDDDD;
+ margin-bottom: 10px;
+ padding: 25px 35px;
+ padding-top: 25px;
+ padding-left: 45px;
+}*/
+.format-status .facebook-fallback{
+ display: block;
+ padding: 25px 0;
+ text-align: center;
+ background-color: #46629E;
+ color: #FFFFFF;
+ font-size: 20px;
+ margin: -5px 0;
+}
+.format-link .entry-image .post-format-badge{
+ display:block;
+ position: relative;
+ width: 100%;
+ height: 150px;
+ padding: 30px;
+ background: #333333;
+ right: auto;
+ text-align: center;
+}
+.format-link .entry-image .post-format-badge > a{
+ z-index: 1;
}
-table.standard_bordered tr, table.striped_bordered tr {
- border-top: 1px dotted #e4e4e4;
+.format-link .entry-image .post-format-badge > div i{
+ opacity: 1;
+ font-size: 60px;
+ display: inline;
+}
+.format-link .entry-image .post-format-badge .background-link {
+ position: absolute;
+ left: 50%;
+ top: 5%;
+ opacity: 0.05;
+ color: #FFFFFF;
+ font-size:190px;
+ z-index: 0;
+}
+.format-link .entry-image .post-format-badge span{
+ display:block;
+ font-size:11px;
+ opacity: 0.7;
+}
+.home .format-quote .entry-container{
+ display: none;
+}
+.format-quote .quote-area{
+ opacity: 0;
+ position: absolute;
+ width: 100%;
+ top: 50%;
+ left: 0;
+ text-align: center;
+ z-index: 10;
+ text-shadow: 1px 1px 2px rgba(0,0,0,0.25);
+ padding: 0 15px;
+
+ -webkit-transition: opacity .80s ease-in-out; -moz-transition: opacity .80s ease-in-out; -o-transition: opacity .80s ease-in-out; transition: opacity .80s ease-in-out;
+
+}
+.format-quote .no-image .quote-area{
+ position: relative;
+ margin:0!important;
+ top: auto;
+ background-color: #FFFFFF;
+ text-shadow:none;
+}
+.format-quote .no-image .quote-area .quote-text{
+ color: #333333;
+ padding: 30px 0;
+}
+.format-quote .no-image .quote-area .quote-author a{
+ color: #333333;
+}
+.format-quote .quote-area .quote-text{
+ margin:0;
+ line-height: 1.2;
+ font-size: 60px;
+ font-weight: bold;
+ font-style: italic;
+ color: #FFFFFF;
+}
+.format-quote .quote-area .quote-author a{
+ color: #FFFFFF;
+}
+.format-quote .entry-image > a:after{
+ opacity: 0.2;
+}
+.format-quote .entry-image:hover > a:after{
+ opacity: 0.4;
+}
+.format-quote footer.entry-meta, .format-status footer.entry-meta {
+ bottom: auto;
+ top: 0;
+ margin: 0;
+ padding:0;
+}
+.format-quote footer.entry-meta > *, .format-status footer.entry-meta > *{
+ padding: 17px 50px;
+}
+.format-quote footer.entry-meta .share-story-container, .format-status footer.entry-meta .share-story-container{
+ margin: 0;
+}
+/*.format-quote footer.entry-meta .share-story-container h4{
+ margin: 10px 0;
+}
+.format-quote footer.entry-meta ul{
+ padding:10px 50px;
+}*/
+.entry-container{
+ background: none repeat scroll 0 0 #FFFFFF;
+ position: relative;
+}
+.entry-content {
+ padding: 35px 50px;
+}
+.entry-content iframe {
+ max-width: 100%;
}
-table.standard_bordered th, table.standard_bordered td, table.striped_bordered th, table.striped_bordered td {
- border-left: 1px dotted #e4e4e4;
+.post-title{
+ border-radius: 2px 2px 0 0;
+ padding: 35px 105px 25px 45px;
+ margin:0;
+}
+.post-title h1{
+ display: block;
+ text-align: left;
+ font-size:25px;
+}
+.post-title .author-image {
+ margin-right:15px;
+}
+.post-title .author-image img{
+ border-radius:500px;
+ height:50px;
+}
+.entry-title{
+ margin: 0;
+ text-align: center;
+ line-height:120%;
+}
+.entry-title a{
+ color: #333;
+}
+.entry-container a:hover{
+ text-decoration: none;
+}
+.entry-content > p a:hover{
+ text-decoration: underline;
+}
+.entry-title a i{
+ opacity:0.2;
+ font-size:30px;
+ margin-left:-30px;
+}
+/*.format-quote a.more-link:hover{ background-color:#85A9B3; }
+.format-standard a.more-link:hover{ background-color:#F69087; }
+.format-gallery a.more-link:hover{ background-color:#00ACED; }
+.format-image a.more-link:hover{ background-color:#B0CB7A; }
+.format-link a.more-link:hover{ background-color:#9664B5; }
+.format-video a.more-link:hover{ background-color:#85CCB1; }
+.format-audio a.more-link:hover{ background-color:#EF7336; }*/
+/*#content .entry-content a.more-link:hover {
+ color: #FFFFFF;
+ text-decoration: none;
+}*/
+.entry-content p, .entry-content ul li, .entry-content ol li{
+ font-size: 18px;
+ line-height: 2;
+ color: #525252;
+}
+.entry-content p *{
+ max-width: 100%;
+}
+/* =Plug-in Fixes
+-------------------------------------------------------------- */
+.mfp-bg{ z-index: 1000!important; }
+.mfp-wrap{ z-index: 1005!important; }
+.nivo-directionNav a{ top: 0!important; font-size: 20px!important; opacity: 1; display:block!important; }
+/* =WordPress Core
+-------------------------------------------------------------- */
+.entry-content p.wp-caption-text, .entry-content p.gallery-caption, article.type-page .the-content p.wp-caption-text, article.type-page .the-content p.gallery-caption {
+ color: #999999;
+ font-size: 12px;
+ text-align: center;
+}
+.gallery-item img{
+ border: none!important;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+.gallery-item
+.alignnone {
+ margin: 5px 20px 20px 0;
}
-/* --------------------------------------------
- PRICING TABLE SHORTCODE
--------------------------------------------- */
-
-.pricing-table-wrap {
- height: auto;
- overflow: hidden;
- clear: both;
- padding-bottom: 20px;
-}
-.pricing-table-column {
- float: left;
- border: 1px solid #e4e4e4;
- border-left-width: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.pricing-table-column:first-child {
- border-left: 1px solid #e4e4e4;
-}
-.columns-5 .pricing-table-column {
- width: 20%;
-}
-.columns-4 .pricing-table-column {
- width: 25%;
-}
-.columns-3 .pricing-table-column {
- width: 33.3%;
-}
-.columns-2 .pricing-table-column {
- width: 50%;
-}
-.columns-1 .pricing-table-column {
- width: 100%;
-}
-.pricing-table-column:first-child, .pricing-table-wrap.bordered .pricing-table-column, .pricing-table-wrap.bordered_alt .pricing-table-column {
- border-left: 1px solid #e4e4e4;
-}
-.pricing-table-price {
- padding: 18px 30px 10px;
- font-size: 36px;
- line-height: 36px;
- font-weight: bold;
- border-bottom: 2px solid #e4e4e4;
-}
-.pricing-table-price span {
- font-size: 12px;
- font-weight: normal;
- margin-left: 4px;
-}
-.pricing-table-package {
- padding: 20px 30px;
- font-size: 18px;
- border-bottom: 1px dotted #e4e4e4;
-}
-.column-highlight .pricing-table-package {
- font-weight: bold;
-}
-.pricing-table-details {
- padding: 20px 30px;
-}
-.pricing-table-column .button {
- margin-top: 10px;
- margin-bottom: 0;
-}
-.pricing-table-wrap.bordered, .pricing-table-wrap.bordered_alt {
- margin: 0 -10px;
-}
-.pricing-table-wrap.bordered .pricing-table-column, .pricing-table-wrap.bordered_alt .pricing-table-column {
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- margin: 0 10px;
-}
-.bordered.columns-4 .pricing-table-column, .bordered_alt.columns-4 .pricing-table-column {
- width: 22.7%;
-}
-.bordered.columns-3 .pricing-table-column, .bordered_alt.columns-3 .pricing-table-column {
- width: 31%;
-}
-.bordered.columns-2 .pricing-table-column, .bordered_alt.columns-2 .pricing-table-column {
- width: 47.6%;
-}
-.bordered.columns-1 .pricing-table-column, .bordered_alt.columns-1 .pricing-table-column {
- width: 97.2%;
-}
-.pricing-table-wrap.bordered .pricing-table-package {
- padding: 20px;
- font-size: 16px;
- line-height: 18px;
-}
-.pricing-table-wrap.bordered .pricing-table-price {
- padding: 0;
- float: right;
- font-size: 18px;
- line-height: 18px;
- border-bottom: 0;
-}
-.pricing-table-wrap.bordered_alt .pricing-table-price {
- border-bottom: 1px dotted #e4e4e4;
-}
-.labelled-pricing-table .pricing-table-column {
- margin-top: 15px;
- border: 0;
- padding-left: 1px;
-}
-.labelled-pricing-table .pricing-table-column.column-highlight {
- margin-top: 0;
- position: relative;
- padding-left: 0;
- -moz-box-shadow: 0 0 5px rgba(0,0,0,.1);
- -webkit-box-shadow: 0 0 5px rgba(0,0,0,.1);
- box-shadow: 0 0 5px rgba(0,0,0,.1);
-}
-.labelled-pricing-table .pricing-table-column.column-highlight + .pricing-table-column {
- padding-left: 0;
-}
-.labelled-pricing-table .pricing-table-column.label-column {
- margin-top: 104px;
-}
-.labelled-pricing-table .pricing-table-price {
- font-size: 14px;
- font-weight: bold;
- line-height: 18px;
- text-align: center;
- padding: 12px;
- border: 0;
-}
-.labelled-pricing-table .pricing-table-price span {
- font-weight: normal;
-}
-.labelled-pricing-table .pricing-table-package {
- font-size: 24px;
- font-weight: normal;
- line-height: 30px;
- text-align: center;
- padding: 9px 5px 8px;
- border: 0;
-}
-.labelled-pricing-table .column-highlight .pricing-table-package {
- padding-top: 16px;
- padding-bottom: 16px;
-}
-.labelled-pricing-table.columns-5 .pricing-table-package {
- font-size: 20px;
-}
-.labelled-pricing-table .pricing-table-label-row, .labelled-pricing-table .pricing-table-row {
- text-align: center;
- padding: 12px;
-}
-.labelled-pricing-table .alt-row {
- background: #ccc;
-}
-.labelled-pricing-table .pricing-table-label-row {
- display: none;
- font-weight: bold;
-}
-.labelled-pricing-table .label-column .pricing-table-label-row {
- display: block;
- font-weight: normal;
-}
-.labelled-pricing-table .lpt-button-wrap {
- padding: 20px 10px;
- text-align: center;
-}
-.labelled-pricing-table .column-highlight .lpt-button-wrap {
- padding: 30px 10px;
-}
-.labelled-pricing-table .lpt-button-wrap a {
- display: inline-block;
- margin: 0;
+.aligncenter,
+div.aligncenter {
+ display: block;
+ margin: 5px auto 5px auto;
}
-/* --------------------------------------------
- DIVIDER SHORTCODE
--------------------------------------------- */
-
-.wpb_divider {
- display: block;
- border-bottom-width: 1px;
- margin-bottom: 30px;
-}
-.wpb_divider.alt-bg {
- border-top: 0;
- margin-top: 0;
- padding-top: 0;
- padding-bottom: 0;
-}
-.wpb_divider.standard {
- border-bottom-style: solid;
- border-bottom-width: 2px;
-}
-.wpb_divider.thin {
- border-bottom-style: solid;
-}
-.wpb_divider.dotted {
- border-bottom-style: dotted;
-}
-.wpb_divider.go_to_top a {
- text-align: right;
- display: block;
- text-decoration: none;
- border-bottom: 1px solid transparent;
- margin-bottom: 30px;
-}
-.wpb_divider.go_to_top_icon1 {
- position: relative;
- height: 9px;
- border-bottom: 1px solid transparent;
-}
-.wpb_divider.go_to_top_icon2 {
- position: relative;
- height: 10px;
- border-bottom: 1px solid transparent;
-}
-.wpb_divider.go_to_top_icon1 a, .wpb_divider.go_to_top_icon2 a {
- position: absolute;
- right: 0;
- display: block;
- padding: 0 0 0 10px;
- text-decoration: none;
-}
-.wpb_divider.go_to_top_icon2 a i {
- padding-left: 6px;
+.alignright {
+ float:right;
+ margin: 5px 0 20px 20px;
}
-/* --------------------------------------------
- BUTTON SHORTCODE
--------------------------------------------- */
-
-a.sf-button {
- display: inline-block;
- font-size: 12px;
- line-height: 18px;
- height: auto;
- padding: 6px 12px;
- margin: 0 20px 20px 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- -webkit-transition: all .3s ease-out;
- -moz-transition: all .3s ease-out;
- transition: all .3s ease-out;
- border: 0;
- outline: none;
- text-shadow: none;
- text-decoration: none;
- font-weight: normal;
-}
-a.sf-button:hover {
- border: 0!important;
- box-shadow:0 2px 3px 0 rgba(0,0,0,.2);
- text-decoration: none!important;
-}
-a.sf-button.medium {
- font-size: 14px;
- line-height: 20px;
- padding: 10px 16px;
-}
-a.sf-button.large {
- font-size: 18px;
- line-height: 26px;
- padding: 10px 22px;
-}
-a.sf-button .arrow {
- background-image: url('images/button-arrow.png');
- background-repeat: no-repeat;
- display: inline-block;
- width: 6px;
- height: 9px;
- margin-left: 7px;
- transition: all 0.3s ease-in-out;
- -moz-transition: all 0.3s ease-in-out;
- -webkit-transition: all 0.3s ease-in-out;
- -o-transition: all 0.3s ease-in-out;
-}
-a.sf-button.medium .arrow {
- vertical-align: 0;
-}
-a.sf-button.large .arrow {
- vertical-align: 1px;
-}
-a.sf-button.lightgrey .arrow, a.sf-button.green .arrow, a.sf-button.limegreen .arrow, a.sf-button.white .arrow {
- background-image: url('images/button-arrow2.png');
-}
-a.sf-button.slightlyrounded, a.sf-button.slightlyroundedarrow {
- -webkit-border-radius: 8px;
- -moz-border-radius: 8px;
- border-radius: 8px;
-}
-a.sf-button.rounded, a.sf-button.roundedarrow {
- -moz-border-radius: 20px;
- -webkit-border-radius: 20px;
- border-radius: 20px;
-}
-a.sf-button.slightlyrounded:hover, a.sf-button.slightlyroundedarrow:hover, a.sf-button.rounded:hover, a.sf-button.roundedarrow:hover {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- box-shadow: none;
-}
-a.sf-button.outerglow {
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- -moz-box-shadow: 0 0 4px rgba(0,0,0,.3);
- -webkit-box-shadow: 0 0 4px rgba(0,0,0,.3);
- box-shadow: 0 0 4px rgba(0,0,0,.3);
-}
-a.sf-button.dropshadow {
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- -moz-box-shadow: 1px 1px 0.6px 0 rgba(0,0,0,.75);
- -webkit-box-shadow: 1px 1px 0.6px 0 rgba(0,0,0,.75);
- box-shadow: 1px 1px 0.6px 0 rgba(0,0,0,.75);
-}
-a.sf-button.black {
- background-color: #212121;
- color: #fff;
-}
-a.sf-button.white {
- background-color: #fff;
- color: #212121;
-}
-a.sf-button.blue {
- background-color: #0000cc;
- color: #fff;
-}
-a.sf-button.grey {
- background-color: #656565;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-a.sf-button.lightgrey {
- background-color: #cbcbcb;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
-}
-a.sf-button.purple {
- background-color: #5f5ba7;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-a.sf-button.lightblue {
- background-color: #00adef;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-a.sf-button.turquoise {
- background-color: #1bbbb3;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-a.sf-button.green {
- background-color: #65cb00;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
-}
-a.sf-button.limegreen {
- background-color: #cbff00;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
-}
-a.sf-button.orange {
- background-color: #f90;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-a.sf-button.pink {
- background-color: #ed135a;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSI1MCUiIHkxPSIxMDAlIiB4Mj0iNTAlIiB5Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwLjE1Ii8+CjxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjZjdmN2Y3IiBzdG9wLW9wYWNpdHk9IjAiLz4KPHN0b3Agb2Zmc2V0PSI1MCUiIHN0b3AtY29sb3I9IiNmN2Y3ZjciIHN0b3Atb3BhY2l0eT0iMCIvPgogICA8L2xpbmVhckdyYWRpZW50PgoKPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiIGZpbGw9InVybCgjaGF0MCkiIC8+Cjwvc3ZnPg==);
- background-image: -moz-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -o-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: -webkit-linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- background-image: linear-gradient(90deg, rgba(255,255,255,.15) 0%, rgba(247,247,247,0) 50%, rgba(247,247,247,0) 50.12%);
- color: #fff;
-}
-.sf-button.lightblue:hover {
- background: #0099ff;
-}
-.sf-button.pink:hover {
- background: #ad2043;
-}
-.sf-button.purple:hover {
- background: #7400e9;
-}
-.sf-button.grey:hover {
- background: #444;
-}
-.sf-button.lightgrey:hover {
- background: #aaa;
-}
-.sf-button.accent {
- background: none;
- background-image: none;
+.alignleft {
+ float: left;
+ margin: 5px 20px 20px 0;
}
-/* --------------------------------------------
- ALERT SHORTCODE
--------------------------------------------- */
-
-.alert {
- height: auto;
- font-size: 12px;
- line-height: 16px;
- overflow: hidden;
- padding: 12px 15px;
- text-align: left;
- margin-bottom: 20px;
- font-weight: normal;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- clear: both;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1);
- box-shadow: 0 1px 0 rgba(0,0,0,.1);
- border: 0;
- background-color: #fbf7e3;
-}
-.alert .messagebox_text {
- background: none;
- padding-left: 0;
-}
-.alert .messagebox_text p {
- float: left;
-}
-.alert .messagebox_text:before {
- content: "\f06a";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: block;
- text-decoration: inherit;
- width: 10px;
- height: auto;
- float: left;
- margin-right: 13px;
- margin-top: 4px;
- font-size: 16px;
- text-indent: 0;
-}
-.alert.alert-info .messagebox_text:before {
- content: "\f05a";
-}
-.alert.alert-error .messagebox_text:before {
- content: "\f071";
-}
-.alert.alert-success .messagebox_text:before {
- content: "\f00c";
-}
-.alert.alert-info {
- background-color: #d9edf7;
-}
-.alert.alert-error {
- background-color: #f1dddd;
-}
-.alert.alert-success {
- background-color: #dfefd7;
+.aligncenter {
+ display: block;
+ margin: 5px auto 5px auto;
}
-/* --------------------------------------------
- IMAGE SHORTCODE
--------------------------------------------- */
-
-.glowframe img {
- border: 6px solid transparent;
- -moz-box-shadow: 0 0 4px rgba(0,0,0,.2);
- -webkit-box-shadow: 0 0 4px rgba(0,0,0,.2);
- box-shadow: 0 0 4px rgba(0,0,0,.2);
- width: 96%;
-}
-.borderframe img {
- border: 6px solid transparent;
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.shadowframe img {
- -moz-box-shadow: 0 2px 2px rgba(0,0,0,.15);
- -webkit-box-shadow: 0 2px 2px rgba(0,0,0,.15);
- box-shadow: 0 2px 2px rgba(0,0,0,.15);
+a img.alignright {
+ float: right;
+ margin: 5px 0 20px 20px;
}
-/* --------------------------------------------
- TESTIMONIALS SHORTCODE
--------------------------------------------- */
-
-.testimonial-wrap {
- margin-bottom: 20px;
-}
-.testimonial-wrap.large .testimonial-text {
- font-size: 16px;
-}
-ul.testimonials {
- margin-bottom: 0;
- list-style: none;
-}
-.testimonials > li {
- padding-top: 30px;
- margin-bottom: 30px;
- border-top: 1px solid transparent;
- height: auto;
-}
-.testimonials > li:first-child {
- padding-top: 0;
- border-top: 0;
-}
-.testimonial-text {
- margin-bottom: 5px;
-}
-.testimonial-wrap.large .testimonial-text {
- margin-bottom: 10px;
-}
-.testimonial-text p {
- margin-bottom: 10px;
-}
-.testimonial-wrap cite, .wpb_testimonial_carousel_widget cite, .testimonials-slider cite {
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-.testimonial .pagination-wrap {
- display: none;
-}
-.span12.testimonial .pagination-wrap {
- display: block;
-}
-.testimonials.carousel-items li {
- padding-top: 0;
- border: 1px solid #e4e4e4;
- margin-bottom: 20px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- padding: 15px;
- position: relative;
-}
-.testimonials.carousel-items li:after {
- content: '';
- width: 0;
- height: 0;
- border-top: 1px solid #fff;
- border-bottom: 12px solid transparent;
- border-left: 15px solid #fff;
- position: absolute;
- left: 30px;
- bottom: -13px;
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-.alt-bg.wpb_testimonial_slider_widget {
- padding-top: 60px;
- padding-bottom: 45px;
-}
-.slider-wrap {
- margin-bottom: 10px;
- position: relative;
-}
-.testimonials-slider {
- padding-bottom: 15px;
-}
-.flexslider.content-slider ul.slides {
- background: transparent;
-}
-.testimonials-slider .testimonial-text {
- padding: 0 15%;
- margin-bottom: 15px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.testimonials-slider .testimonial-text.text-large {
- font-size: 24px;
- line-height: 32px;
-}
-.testimonials-slider .flex-control-nav {
- position: absolute;
- bottom: 0;
- left: 0;
- margin: 0;
- z-index: 4;
- list-style: none!important;
- width: 100%;
- text-align: center;
-}
-.testimonials-slider .flex-control-nav li {
- float: none;
+a img.alignnone {
+ margin: 5px 20px 20px 0;
}
-/* --------------------------------------------
- JOBS SHORTCODE
--------------------------------------------- */
-
-ul.jobs {
- list-style: none;
-}
-.jobs > li {
- padding-top: 30px;
- margin-bottom: 30px;
- border-top: 1px solid transparent;
-}
-.jobs > li:first-child {
- padding-top: 0;
- border-top: 0;
-}
-.jobs .sf-list {
- margin-top: 15px;
- margin-bottom: 10px;
-}
-.jobs a.button {
- margin-top: 10px;
-}
-.jobs-overview {
- list-style: disc inside none;
-}
-.jobs-overview .job {
- margin-bottom: 4px;
-}
-.jobs-overview .job a {
- text-decoration: none;
+a img.alignleft {
+ float: left;
+ margin: 5px 20px 20px 0;
}
-/* --------------------------------------------
- SEARCH SHORTCODE
--------------------------------------------- */
-
-.search-widget {
- margin-bottom: 0;
-}
-.search-widget input {
- margin: 25px 0;
- width: 80%;
- padding: 10px 5% 10px 30px;
+a img.aligncenter {
+ display: block;
+ margin-left: auto;
+ margin-right: auto
}
-/* --------------------------------------------
- FAQS SHORTCODE
--------------------------------------------- */
+.wp-caption {
+ background: none repeat scroll 0 0 #ECECEC;
+ max-width: 100%;
+ padding: 5px;
+ text-align: center;
+ border-radius: 2px 2px 2px 2px;
+ border: 1px solid #DDDDDD;
+}
-ul.faqs-nav {
- padding-bottom: 30px;
- border-bottom: 2px solid #f4f4f4;
- margin-bottom: 40px;
- list-style: none;
-}
-.faqs-nav li {
- float: left;
- width: 44%;
- padding: 10px 10px 10px 10px;
- border: 1px solid #F4F4F4;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
- margin: 0 10px 10px 0;
-}
-.faqs-nav li a {
- text-decoration: none;
-}
-.faqs-nav li i {
- margin-right: 8px;
-}
-.faqs-nav li .count {
- float: right;
- opacity: 0.6;
- -moz-opacity: 0.6;
- filter:alpha(opacity= 60);
-}
-h3.faq-section-title {
- border-bottom: 1px solid #ccc;
- padding-bottom: 20px;
- margin-bottom: 40px;
-}
-ul.faqs-section {
- margin-bottom: 60px;
- list-style: none;
-}
-.faq-item h6 {
- margin-bottom: 15px;
-}
-.faq-item {
- padding-top: 40px;
- border-top: 1px solid #ccc;
- margin-bottom: 40px;
-}
-.faq-item:first-child {
- border-top: 0;
- padding-top: 0;
+.wp-caption.alignnone {
+ margin: 5px 20px 20px 0;
}
-/* --------------------------------------------
- COLUMN SHORTCODE
--------------------------------------------- */
+.wp-caption.alignleft {
+ margin: 5px 20px 20px 0;
+}
-.one_half {
- width: 48%;
+.wp-caption.alignright {
+ margin: 5px 0 20px 20px;
}
-.one_third {
- width: 30.66%;
+
+.wp-caption img {
+ border: 0 none;
+ height: auto;
+ margin: 0;
+ max-width: 100%;
+ padding: 0;
+ width: auto;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
}
-.two_third {
- width: 65.33%;
+
+.wp-caption p.wp-caption-text, article.type-page .the-content .wp-caption p.wp-caption-text {
+ font-size: 11px;
+ line-height: 17px;
+ margin: 0;
+ padding: 8px 0 0;
+}
+
+article.type-post p a {
+ color: #FFFFFF;
+ max-width: 100%;
+ display: inline-block;
+ margin-left: 2px;
+ margin-right: 4px;
+ position: relative;
+ padding: 0 5px;
+ line-height: 26px;
+ -webkit-transition: all .10s ease-in-out; -moz-transition: all .10s ease-in-out; -o-transition: all .10s ease-in-out; transition: all .10s ease-in-out;
+}
+article.type-post p a:hover {
+ transform: scale(1.03);
+ -ms-transform: scale(1.03);
+ -webkit-transform: scale(1.03);
+}
+article.type-post p a.lightbox {
+ background: none;
+ padding: auto;
+ margin: auto;
+}
+article.type-post, article.type-post .entry-header {
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+
+article.type-post:first-child, article.type-post:first-child .entry-header {
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+article.type-post:last-child, article.type-post:last-child .entry-container, article.type-post:last-child .entry-container .entry-content {
+ -moz-border-radius: 0 0 2px 2px;
+ -webkit-border-radius: 0 0 2px 2px;
+ border-radius: 0 0 2px 2px;
+}
+article.type-post{
+ /*overflow: hidden;*/
+ position: relative;
+ margin-bottom: 30px;
+}
+.entry-header{
+ background: #f0f0f0;
+ border-radius: 2px 2px 0 0;
+ height: 120px;
+ position: relative;
+}
+.post-format-badge {
+ position: absolute;
+ right: 0;
+ top: 0;
+/* border-radius: 500px 500px 500px 500px;
+ bottom: -40px;
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
+ height: 80px;
+ left: 60px;
+ margin: 0 -50px;
+ overflow: hidden;
+ position: absolute;
+ text-align: center;
+ width: 80px;
+ z-index: 500;*/
+}
+.post-format-badge .avatar-share {
+/* border-radius: 500px;
+ display: block;
+ height: 80px;
+ overflow: hidden;
+ width: 80px;
+ z-index: 500;*/
+}
+.post-format-badge .avatar-share:hover {
+ overflow: hidden;
+ border-radius: 500px;
+}
+.entry-header .post-format-badge {
+ bottom: -30px;
+ top: auto !important;
+}
+article.format-standard{
+ overflow: visible;
+}
+article.format-standard .entry-content{
+ /*padding: 40px 90px 50px;*/
+}
+.format-standard .post-format-badge{
+ /*bottom: -40px;*/
+}
+.format-standard .entry-container.noimg .entry-content{
+ padding-top: 15px;
+}
+.share-story-container {
+ margin-top: 25px;
+}
+.share-story-container h4{
+ margin: 0;
+ font-size: 14px;
+ padding-right: 15px;
+ display: block;
+ width: 100%;
+ float: none;
+ line-height: 40px;
+ border-bottom: 1px solid rgba(0,0,0,0.1);
+}
+.share-story li{
+ display: table-cell;
+ width: 1%;
+}
+.share-story li a {
+ height: 40px;
+ display: block;
+ text-align: center;
+}
+.share-story li i {
+ line-height: 50px;
+ font-size: 20px;
+ height: 50px;
+}
+.bl-author-footer{
+ display: block;
+ border-top: 1px solid rgba(0,0,0,0.05);
+ height: 50px;
+ margin-top:25px;
+}
+.bl-author-footer .author-header img{
+ border: 5px solid #FFFFFF;
+ border-radius: 500px 500px 500px 500px;
+ height: 80px;
+ position: relative;
}
-.one_fourth {
- width: 22%;
+.entry-container > .post-format-badge {
+ top: -40px;
}
-.three_fourth {
- width: 74%;
+.post-format-badge i {
+ display: block;
+ font-size: 27px;
+ height: 80px;
+ line-height: 117px;
+ opacity: 0.35;
+ text-align: center;
+ width: 110px;
}
-.one_half, .one_third, .two_third, .three_fourth, .one_fourth {
- position: relative;
- margin-right: 4%;
- float: left;
+.post-format-badge img{
+ max-width:80px;
+ margin:auto;
+ display:inline-block;
+ position:relative;
+ left: 0;
+ top: 0;
+ border-radius: 500px;
}
-.last {
- margin-right: 0 !important;
- clear:right;
+.format-link .post-format-badge i {
+ line-height: 70px;
}
-.clearboth {
- clear: both;
- display: block;
- font-size: 0;
- height: 0;
- line-height: 0;
- width: 100%;
+.post-format-quote{
+ color: #85A9B3;
}
-
-/* --------------------------------------------
- SITEMAP SHORTCODE
--------------------------------------------- */
-
-.sitemap-wrap {
- margin-bottom: 20px;
+.post-format-image{
+ color: #B0CB7A;
}
-.sitemap-col {
- float: left;
- width: 28%;
- margin-left: 7%;
+.post-format-gallery{
+ color: #00ACED;
}
-.sitemap-col:first-child {
- margin-left: 0;
+.post-format-standard{
+ color: #F69087;
}
-.sitemap-col h6 {
- margin-bottom: 15px;
+.post-format-video{
+ color: #85CCB1;
}
-.sitemap-col ul {
- margin-bottom: 40px;
- list-style: none!important;
+.post-format-audio{
+ color: #EF7336;
}
-.sitemap-col ul li {
- margin-bottom: 8px;
+.post-format-link{
+ color: #9664B5;
}
-.sitemap-col ul li a {
- text-decoration: none;
+.sticky .post-format-badge{
+ color: #2999C4;
}
-
-/* --------------------------------------------
- MAP SHORTCODE
--------------------------------------------- */
-
-.wpb_gmaps_widget {
- margin-bottom: 20px;
+.post-meta{
+ color: #9a9a9a;
+ text-align: left;
+ padding: 0px 0;
+ margin-bottom: 0;
+ line-height: 14px;
}
-.wpb_gmaps_widget .wpb_map_wrapper {
- padding: 0;
+.post-meta time{
+ display: inline-block;
}
-.wpb_wrapper.shadow .wpb_map_wrapper {
- padding: 0 0 1.6%;
- margin-bottom: 30px;
- background: transparent url('images/box_shadow_effect.png') no-repeat center bottom;
- background-size: 100% auto;
+.post-meta ul{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ display: inline-block;
+ z-index: 10;
}
-.map-canvas img {
- max-width: none;
+.post-meta ul li{
+ float: left;
+ margin-right: 15px;
}
-
-
-/* --------------------------------------------
- PARALLAX SHORTCODE
--------------------------------------------- */
-
-.spb_parallax_asset {
- padding-top: 80px;
- padding-bottom: 80px;
- overflow: hidden;
- background-attachment: fixed;
- -webkit-background-size: cover;
- -moz-background-size: cover;
- -o-background-size: cover;
- background-size: cover;
- background-repeat: no-repeat;
- background-position: center center;
- box-shadow: inset 0px 0px 20px rgba(0, 0, 0, 0.3);
-}
-.spb_parallax_asset.bg-type-pattern {
- background-repeat: repeat;
- background-size: auto;
-}
-.spb_parallax_asset .spb_content_wrapper {
- position: relative;
-}
-.spb_parallax_asset .heading-wrap {
- text-align: center;
- margin-bottom: 10px;
+.post-meta ul li:last-child {
+ margin: 0;
}
-
-/* --------------------------------------------
- HR SHORTCODE
--------------------------------------------- */
-
-.horizontal-break {
- height: 2px;
- width: 50px;
- margin: 20px auto 25px;
+.post-meta ul li a{
+ color: #9a9a9a;
}
-
-/* --------------------------------------------
- CLIENT BOX SHORTCODE
--------------------------------------------- */
-
-.client-box {
- width: 228px;
- height: auto;
- background-color: #fafafa;
- background-position: center center;
- background-repeat: no-repeat;
- float: left;
- margin: 0 2px 7px 5px;
-}
-.client-box img {
- width: 100%;
- height: auto;
- display: block;
+.post-meta:before, .post-meta:after {
+ content: "";
+ display: table;
+ line-height: 0;
}
-
-/* --------------------------------------------
- GOOGLE CHART SHORTCODE
--------------------------------------------- */
-
-.googlechart {
- margin-bottom: 30px;
- width: 100%;
+.post-meta:after {
+ clear:both;
}
-
-/* --------------------------------------------
- ICON SHORTCODE
--------------------------------------------- */
-
-.sf-icon {
- font-size: 22px;
- line-height: 26px;
- padding: 0 5px 6px 0;
- width: auto;
- height: 24px;
- background-image: none;
-}
-.sf-icon.icon-medium {
- font-size: 38px;
- line-height: 40px;
- width: auto;
- height: 38px;
- padding: 0px 10px 2px 0;
-}
-.sf-icon-cont.cont-small .sf-icon {
- line-height: 30px;
-}
-.sf-icon-cont.cont-medium .sf-icon {
- line-height: 48px;
-}
-.sf-icon.icon-large {
- font-size: 50px;
- line-height: 69px;
- width: auto;
- height: 56px;
- padding: 0px 12px 6px 0;
-}
-.sf-icon-cont.cont-large .sf-icon {
- line-height: 80px;
-}
-.sf-icon-cont .sf-icon {
- padding: 0;
-}
-.sf-icon-cont {
- background-image: none;
- padding: 18px;
- border-radius: 50%;
- text-align: center;
- vertical-align: middle;
- margin-bottom: 20px;
- margin-right: 20px;
- height: 28px;
- width: 28px;
- line-height: 12px;
-}
-.sf-icon-cont.cont-small {
- padding: 8px;
-}
-.sf-icon-cont.cont-medium {
- background-image: none;
- padding: 25px;
- border-radius: 50%;
- text-align: center;
- vertical-align: middle;
- margin-bottom: 20px;
- width: 48px;
- height: 48px;
- line-height: 12px;
-}
-.sf-icon-cont.cont-large {
- background-image: none;
- padding: 37px;
- border-radius: 50%;
- text-align: center;
- vertical-align: middle;
- width: 77px;
- height: 77px;
-}
-.sf-icon.icon-large:before {
- font-size: 72px;
-}
-.sf-icon-float-left {
- float: left;
- padding: 5px 10px 0 0;
-}
-.sf-icon-float-right {
- float: right;
- padding: 5px 0 0 10px;
-}
-.sf-icon-float-none {
- display: inline-block;
+/* input focus */
+textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus {
+ border: 1px solid rgba(126, 201, 172,0.8);
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ outline: 0 none;
}
-/* --------------------------------------------
- TYPOGRAPHY SHORTCODE
--------------------------------------------- */
-span.highlighted {
- padding: 1px 3px;
- border-radius: 1px;
- margin-right: 2px;
- color: #fff;
-}
-span.dropcap1, span.dropcap2 {
- float: left;
- padding: 11px 0px 9px;
- margin-right: 8px;
- font-size: 46px;
- font-family: serif;
- font-style: normal;
-}
-span.dropcap3, span.dropcap4 {
- float: left;
- font-family: serif;
- font-style: normal;
- font-size: 18px;
- padding: 4px 10px 4px 11px;
- margin: 4px 10px 2px 0;
- -webkit-border-radius: 2px;
- -moz-border-radius: 2px;
- border-radius: 2px;
-}
-span.dropcap4 {
- -webkit-border-radius: 30px;
- -moz-border-radius: 30px;
- border-radius: 30px;
-}
-blockquote {
- border-left: 0;
- padding: 10px 0;
-}
-blockquote, blockquote p {
- font-size: 18px;
- line-height: 28px;
- font-style: italic;
-}
-blockquote.blockquote1, blockquote.blockquote1 p, blockquote.pullquote, blockquote.pullquote p {
- font-size: 14px;
- line-height: 20px;
-}
-blockquote.blockquote2, blockquote.blockquote1 p {
- font-size: 14px;
- line-height: 22px;
-}
-blockquote.pullquote {
- border-left: 1px dotted transparent;
- padding: 0 0 0 20px;
-}
-.decorative-ampersand {
- font-family: 'Vidaloka', serif;
- font-size: 24px;
-}
-/* --------------------------------------------
- LIST SHORTCODE
--------------------------------------------- */
+/* entry */
-.sf-list {
- margin-left: 0;
- list-style: none!important;
-}
-.sf-list li {
- padding: 0 0 0 20px;
-}
-.list-add_bw li {
- background: transparent url('images/list-icons/add_b&w.png') no-repeat 2px 3px;
-}
-.list-add li {
- background: transparent url('images/list-icons/add_colour.png') no-repeat 2px 3px;
-}
-.list-arrow_bw li {
- background: transparent url('images/list-icons/arrow_b&w.png') no-repeat left 3px;
-}
-.list-arrow li {
- background: transparent url('images/list-icons/arrow_colour.png') no-repeat left 3px;
+/* comments */
+.commentlist{
+ list-style: none;
+ margin: 0;
}
-.list-article li {
- background: transparent url('images/list-icons/article_b&w.png') no-repeat left 3px;
+.commentlist ul{
+ list-style: none;
+ margin: 0;
}
-.list-bar li {
- background: transparent url('images/list-icons/bar_b&w.png') no-repeat left 6px;
+.commentlist .pingback {
+ padding: 4px 20px;
}
-.list-bolt_bw li {
- background: transparent url('images/list-icons/bolt_b&w.png') no-repeat 2px 3px;
+.comments-title, #reply-title{
+ text-shadow: 0 1px 0 #fff;
+ color: #585858;
}
-.list-bolt li {
- background: transparent url('images/list-icons/bolt_colour.png') no-repeat 2px 3px;
+.comments-title{
+ padding: 0 25px 10px;
+ text-align: center;
}
-.list-date li {
- background: transparent url('images/list-icons/date_b&w.png') no-repeat left 3px;
-}
-.list-delete_bw li {
- background: transparent url('images/list-icons/delete_b&w.png') no-repeat 1px 4px;
-}
-.list-delete li {
- background: transparent url('images/list-icons/delete_colour.png') no-repeat 1px 4px;
-}
-.list-dot li {
- background: transparent url('images/list-icons/dot_b&w.png') no-repeat 2px 5px;
-}
-.list-like_bw li {
- background: transparent url('images/list-icons/like_b&w.png') no-repeat left 3px;
+.commentlist article.comment{
+ background: #FFFFFF;
+ border-bottom: 1px solid #F4F4F4;
+ padding: 20px 10px 20px 80px;
+ position: relative;
}
-.list-like li {
- background: transparent url('images/list-icons/like_colour.png') no-repeat left 3px;
+.commentlist .children article.comment{
+ padding-left: 110px;
}
-.list-pen li {
- background: transparent url('images/list-icons/pen_b&w.png') no-repeat left 3px;
+.commentlist .children .children > li > article{
+ padding-left: 140px;
}
-.list-question_bw li {
- background: transparent url('images/list-icons/questionMark_b&w.png') no-repeat left 3px;
+.commentlist .children .children .children > li > article{
+ padding-left: 170px;
}
-.list-question li {
- background: transparent url('images/list-icons/questionMark_colour.png') no-repeat left 3px;
+.commentlist .children .children .children .children > li > article{
+ padding-left: 200px;
}
-.list-settings_bw li {
- background: transparent url('images/list-icons/settings_b&w.png') no-repeat left 3px;
+.comment-author{
+ margin-bottom: 10px;
+ position: relative;
}
-.list-settings li {
- background: transparent url('images/list-icons/settings_colour.png') no-repeat left 3px;
+article.comment .avatar{
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+ position: absolute;
+ left: -60px;
+ top: 0;
}
-.list-star_bw li {
- background: transparent url('images/list-icons/star_b&w.png') no-repeat left 3px;
+.bypostauthor > article.comment .commenter a{
+ color: #1ABC9C;
+}
+article.comment cite.commenter{
+ color: #717171;
+ font-size: 15px;
+ font-weight: bold;
+}
+article.comment .reply a{
+ color: #999;
+ font-size:12px;
+}
+.form-submit #submit{
+ background-color: #eeeeee;
+ border: 1px solid #ddd;
+ padding: 10px 20px;
+}
+.form-allowed-tags{
+ display: none;
+}
+.comments-area{
+ background: #fff;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ padding: 10px 0; margin-top: 30px;
+}
+.comments-area-facebook{
+ padding: 20px;
+}
+.fb-comments, .fb-comments span, .fb-comments.fb_iframe_widget span iframe {
+ width: 100% !important;
+}
+.comment-notes{
+ display: none;
+}
+#commentform input[type="text"], #commentform textarea{
+ background: #EFEFEF;
+ border-radius: 2px 2px 2px 2px;
+ border:none;
+ box-shadow: none;
+ font-size: 16px;
+ height: 35px;
+ width: 100%;
}
-.list-star li {
- background: transparent url('images/list-icons/star_colour.png') no-repeat left 3px;
+#respond{
+ padding: 20px 20px 0;
}
-.list-tick_bw li {
- background: transparent url('images/list-icons/tick_b&w.png') no-repeat left 3px;
+#commentform textarea{
+ height: 200px;
}
-.list-tick li {
- background: transparent url('images/list-icons/tick_colour.png') no-repeat left 3px;
+#commentform > p {
+ width: 50%;
}
-.list-user li {
- background: transparent url('images/list-icons/user_b&w.png') no-repeat left 3px;
+.comment-form-author{
+ float: left;
}
-.list-warning_bw li {
- background: transparent url('images/list-icons/warning_b&w.png') no-repeat left 3px;
+.comment-form-email{
+ float: left;
+ padding-left: 25px;
}
-.list-warning li {
- background: transparent url('images/list-icons/warning_colour.png') no-repeat left 3px;
+#commentform .comment-form-comment{
+ width: 100%;
}
-/* --------------------------------------------
- SOCIAL SHORTCODE
--------------------------------------------- */
-ul.social-icons {
- height: auto;
- overflow: hidden;
- margin-right: -12px;
- list-style: none!important;;
-}
-ul.social-icons li {
- float: left;
- display: inline-block;
- width: 32px;
- height: 32px;
- margin-right: 12px;
- background: none;
- padding: 0!important;
- line-height: 32px!important;
- border: 0!important;
- -webkit-transition: opacity 0.3s ease;
- -moz-transition: opacity 0.3s ease;
- -o-transition: opacity 0.3s ease;
- transition: opacity 0.3s ease;
- -webkit-transition-delay: 0.1s;
- -moz-transition-delay: 0.1s;
- -o-transition-delay: 0.1s;
- transition-delay: 0.1s;
-}
-ul.social-icons li a {
- background: transparent url(images/social-icons.png) no-repeat 0 0;
- display: block;
- width: 32px;
- height: 32px;
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
- padding: 0;
-}
-ul.social-icons.dark li a {
- background-image: url(images/social-icons-mono.png);
-}
-ul.social-icons.dark.small li a {
- background-image: url(images/social-icons-mono-small.png);
-}
-ul.social-icons.light li a {
- background-image: url(images/social-icons-mono-light.png);
-}
-ul.social-icons.light.small li a {
- background-image: url(images/social-icons-mono-light-small.png);
-}
-ul.social-icons:hover li, ul.social-icons.small:hover li {
- opacity: 0.5;
- -moz-opacity: 0.5;
- filter:alpha(opacity= 50);
-}
-ul.social-icons li:hover, ul.social-icons.small li:hover {
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
-}
-ul.social-icons li a:hover {
- color: transparent;
-}
-ul.social-icons li.twitter a {
- background-position: 0 0;
-}
-ul.social-icons li.facebook a {
- background-position: -32px 0;
-}
-ul.social-icons li.dribbble a {
- background-position: -64px 0;
-}
-ul.social-icons li.vimeo a {
- background-position: -96px 0;
-}
-ul.social-icons li.tumblr a {
- background-position: -128px 0;
-}
-ul.social-icons li.spotify a {
- background-position: -160px 0;
-}
-ul.social-icons li.linkedin a {
- background-position: -192px 0;
-}
-ul.social-icons li.lastfm a {
- background-position: -224px 0;
-}
-ul.social-icons li.googleplus a {
- background-position: -256px 0;
-}
-ul.social-icons li.flickr a {
- background-position: -288px 0;
-}
-ul.social-icons li.youtube a {
- background-position: -320px 0;
-}
-ul.social-icons li.behance a {
- background-position: -352px 0;
-}
-ul.social-icons li.pinterest a {
- background-position: -384px 0;
-}
-ul.social-icons li.instagram a {
- background-position: -416px 0;
-}
-ul.social-icons li.yelp a {
- background-position: -448px 0;
-}
-ul.social-icons li.skype a {
- background-position: -480px 0;
-}
-ul.social-icons.small {
- height: auto;
- overflow: hidden;
- margin-right: -5px;
- list-style: none!important;
-}
-ul.social-icons.small li {
- width: 24px;
- height: 24px;
- margin: 0 5px 0 0;
- float: left;
- display: inline-block;
- background: none;
- padding: 0!important;
- line-height: 24px!important;
- border: 0!important;
- -webkit-transition: opacity 0.3s ease;
- -moz-transition: opacity 0.3s ease;
- -o-transition: opacity 0.3s ease;
- transition: opacity 0.3s ease;
- -webkit-transition-delay: 0.1s;
- -moz-transition-delay: 0.1s;
- -o-transition-delay: 0.1s;
- transition-delay: 0.1s;
-}
-ul.social-icons.small li a {
- background: transparent url(images/social-icons-small.png) no-repeat 0 0;
- display: block;
- width: 24px;
- height: 24px;
- text-indent: 100%;
- white-space: nowrap;
- overflow: hidden;
- padding: 0;
-}
-ul.social-icons.small li.twitter a {
- background-position: 0 0;
-}
-ul.social-icons.small li.facebook a {
- background-position: -24px 0;
+/* Buttons */
+
+.page-links > a, button:hover, html input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover, .btn:hover{
+ background-position:0;
}
-ul.social-icons.small li.dribbble a {
- background-position: -48px 0;
+.page-links > a:active, button:active, html input[type="button"]:active, input[type="reset"]:active, input[type="submit"]:active,button:focus, html input[type="button"]:focus, input[type="reset"]:focus, input[type="submit"]:focus, .btn:active, .btn:focus{
+ /*box-shadow:0 2px 0 0 rgba(0, 0, 0, 0.1) inset;*/
+ /*padding: 10px 20px 8px;*/
}
-ul.social-icons.small li.vimeo a {
- background-position: -72px 0;
+.page-links > span,.btn.disabled{
+ /*box-shadow:0 -2px 0 0 rgba(0, 0, 0, 0.1) inset;*/
+ color:#cacaca;
+ /*padding:4px 12px 4px;*/
}
-ul.social-icons.small li.tumblr a {
- background-position: -96px 0;
+/*.btn:focus{
+ outline:none!important;
}
-ul.social-icons.small li.spotify a {
- background-position: -120px 0;
+.btn.btn-large {
+ padding: 13px 20px 15px;
+ font-size: 18px;
}
-ul.social-icons.small li.linkedin a {
- background-position: -144px 0;
+.btn.btn-large:active, .btn.btn-large:focus {
+ padding: 15px 20px 13px;
}
-ul.social-icons.small li.lastfm a {
- background-position: -168px 0;
+.btn.btn-small {
+ min-height: 20px;
+ padding: 2px 8px 4px;
}
-ul.social-icons.small li.googleplus a {
- background-position: -192px 0;
+.btn.btn-small:active, .btn.btn-small:focus {
+ padding: 4px 8px 2px;
}
-ul.social-icons.small li.flickr a {
- background-position: -216px 0;
+.btn.btn-mini {
+ min-height: 10px;
+ padding: 2px 8px 4px;
}
-ul.social-icons.small li.youtube a {
- background-position: -240px 0;
+.btn.btn-mini:active, .btn.btn-mini:focus {
+ padding: 4px 8px 2px;
}
-ul.social-icons.small li.behance a {
- background-position: -264px 0;
+.btn:hover, article.post .entry-content a.btn:hover{
+ background-color: #E6E6E6;
}
-ul.social-icons.small li.pinterest a {
- background-position: -288px 0;
+.btn:active, .btn:focus, article.post .entry-content a.btn:active,article.post .entry-content a.btn:focus{
+ background-color: #E6E6E6;
}
-ul.social-icons.small li.instagram a {
- background-position: -312px 0;
+.btn.dropdown-toggle:after {
+ content: "\e83f ";
+ display: inline-block;
+ font-family: fontello;
+ font-size: 12px;
+ margin-right: 10px;
+ padding-right: 0;
+ position: relative;
+ width: 1px;
}
-ul.social-icons.small li.yelp a {
- background-position: -336px 0;
+.btn-primary, .label-primary, #commentform #submit, .widget_search input[type="submit"], article.post .entry-content a.btn-primary{
+ background-color: #1ABC9C;
+ color: #fff;
}
-ul.social-icons.small li.skype a {
- background-position: -360px 0;
+.btn-primary:hover, #commentform #submit:hover, article.post .entry-content a.btn-primary:hover{
+ background-color: #48C9B0;
}
-
-/* --------------------------------------------
- PROGRESS SHORTCODE
--------------------------------------------- */
-
-.progress {
- height: 42px;
- margin-bottom: 10px;
-}
-.progress .bar {
- position: relative;
-}
-.progress .bar-text {
- position: absolute;
- top: 0;
- left: 0;
- line-height: 42px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- padding: 0 20px;
- color: #fff;
- font-weight: bold;
- width: 100%;
- text-align: left;
- display: none;
-}
-.progress .bar-text > span {
- float: right;
- display: block;
-}
-.progress .bar {
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+.btn-primary:active, .btn-primary:focus, #commentform #submit:active, #commentform #submit:focus, article.post .entry-content a.btn-primary:active,article.post .entry-content a.btn-primary:focus{
+ background-color: #16A085;
}
-/* --------------------------------------------
- CHART SHORTCODE
--------------------------------------------- */
-
-.chart-shortcode {
- position: relative;
- text-align: center;
-}
-.chart-shortcode.chart-center {
- margin: 0 auto;
-}
-.chart-shortcode canvas {
- position: absolute;
- top: 0;
- left: 0;
-}
-.chart-shortcode span {
- font-size: 14px;
- vertical-align: -1px;
+.btn-info, .label-info, article.post .entry-content a.btn-info{
+ background-color: #3498DB;
+ color: #ffffff;
}
-.chart-shortcode.chart-170 span {
- font-size: 36px;
- vertical-align: 0px;
+.btn-info:hover, article.post .entry-content a.btn-info:hover{
+ background-color: #5DADE2;
}
-.chart-shortcode.chart-170 span i {
- vertical-align: -4px;
+.btn-info:active, .btn-info:focus, article.post .entry-content a.btn-info:focus, article.post .entry-content a.btn-info:active{
+ background-color: #2C81BA;
}
-
-/* --------------------------------------------
- LATEST TWEET SHORTCODE
--------------------------------------------- */
-
-.latest-tweet ul {
- margin-bottom: 10px;
- list-style: none!important;
-}
-.latest-tweet ul li {
- margin-left: 0;
-}
-.latest-tweet p {
- margin-bottom: 0;
+.btn-danger, .label-danger, article.post .entry-content a.btn-danger{
+ background-color: #E74C3C;
+ color: #ffffff;
}
-.latest-tweet .tweet-author {
- margin-right: 4px;
- font-weight: bold;
+.btn-danger:hover, article.post .entry-content a.btn-danger:hover{
+ background-color: #EC7063;
}
-.latest-tweet .tweet-date {
- text-decoration: none;
- color: #999;
- margin-left: 5px;
- display: inline-block;
+.btn-danger:active, .btn-danger:focus, article.post .entry-content a.btn-danger:active, article.post .entry-content a.btn-danger:focus{
+ background-color: #C54133;
}
-/* --------------------------------------------
- TWEET SLIDER SHORTCODE
--------------------------------------------- */
-
-.alt-bg.wpb_tweets_slider_widget {
- padding-top: 60px;
- padding-bottom: 60px;
-}
-.wpb_tweets_slider_widget .tweet-text {
- padding: 0 15%;
- text-align: center;
+.btn-success, .label-success, article.post .entry-content a.btn-success{
+ background-color: #2ECC71;
+ color: #ffffff;
}
-.wpb_tweets_slider_widget .text-normal .tweet-text {
- font-size: 18px;
- line-height: 26px;
+.btn-success:hover, article.post .entry-content a.btn-success:hover{
+ background-color: #58D68D;
}
-.wpb_tweets_slider_widget .text-large .tweet-text {
- font-size: 24px;
- line-height: 36px;
+.btn-success:active, .btn-success:focus, article.post .entry-content a.btn-success:active, article.post .entry-content a.btn-success:focus{
+ background-color: #27AE60;
}
-.wpb_tweets_slider_widget .twitter_intents {
- margin-top: 20px;
- display: block;
- padding: 0 15%;
+
+.page-links > a, .btn-inverse, .label-inverse, article.post .entry-content a.btn-inverse{
+ background-color: #34495E;
+ color: #ffffff;
}
-.wpb_tweets_slider_widget .twitter_intents a {
- margin: 0 4px;
- position: relative;
+.page-links > a:hover, .btn-inverse:hover, article.post .entry-content a.btn-inverse:hover{
+ background-color: #415B76;
}
-.wpb_tweets_slider_widget a:hover {
- text-decoration: none;
+.page-links > a:active, .btn-inverse:active, .btn-inverse:focus, article.post .entry-content a.btn-inverse:active, article.post .entry-content a.btn-inverse:focus{
+ background-color: #2C3E50;
}
-/* --------------------------------------------
- GALLERY SHORTCODE
--------------------------------------------- */
-
-.gallery {
- padding-top: 10px;
-}
-.gallery .gallery-item {
- width: auto;
- float: left;
- display: inline;
- margin: 0 14px 14px;
- width: 17%;
-}
-.gallery-item .gallery-icon {
- background: #222 url(images/view-image.png) no-repeat center center;
- width: 100%;
- height: auto;
-}
-.gallery-item .gallery-icon a {
- display: block;
- opacity: 1;
- -moz-opacity: 1;
- filter:alpha(opacity= 100);
-}
-.gallery-icon a img {
- display: block;
- width: 100%;
- height: auto;
-}
-.gallery-item .gallery-icon a:hover {
- opacity: 0.1;
- -moz-opacity: 0.1;
- filter:alpha(opacity= 10);
+.btn-warning, .label-warning, article.post .entry-content a.btn-warning{
+ background-color: #F39C12;
+ color: #ffffff;
}
-
-/* --------------------------------------------
- ACCORDION SHORTCODE
--------------------------------------------- */
-
-.wpb_accordion .wpb_accordion_wrapper {
- margin-bottom: 30px;
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.wpb_accordion .wpb_accordion_section {
- margin-bottom: 6px;
- border: 1px solid transparent;
-}
-.wpb_accordion_section > h3 {
- font-size: 14px;
- font-weight: normal;
- outline: 0!important;
-}
-.wpb_accordion .wpb_accordion_section > h3 a {
- display: block;
- text-decoration: none;
- padding: 12px 15px;
- -webkit-transition: all 0.3s ease;
- -moz-transition: all 0.3s ease;
- -o-transition: all 0.3s ease;
- transition: all 0.3s ease;
- -webkit-transition-delay: 0.1s;
- -moz-transition-delay: 0.1s;
- -o-transition-delay: 0.1s;
- transition-delay: 0.1s;
-}
-.ui-accordion .ui-accordion-header .ui-icon {
- position: absolute!important;
- right: 15px;
- top: 14px!important;
- margin-top: 0!important;
- background-image: none!important;
- left: auto!important;
- width: 12px;
- -webkit-transition: all 0.3s ease;
- -moz-transition: all 0.3s ease;
- -o-transition: all 0.3s ease;
- transition: all 0.3s ease;
- -webkit-transition-delay: 0.1s;
- -moz-transition-delay: 0.1s;
- -o-transition-delay: 0.1s;
- transition-delay: 0.1s;
-}
-.wpb_accordion_section > h3 .ui-icon:before {
- content: "\f067";
- font-family: FontAwesome;
- font-weight: normal;
- font-style: normal;
- display: inline-block;
- text-decoration: inherit;
- width: 10px;
- height: 10px;
- float: left;
- margin-right: 10px;
- margin-top: -1px;
- font-size: 14px;
- text-indent: 0;
-}
-.wpb_accordion_section h3.ui-state-active .ui-icon:before {
- content: "\f068";
-}
-.wpb_accordion .ui-state-active, .wpb_accordion .ui-state-default {
- border: 0!important;
- background: none!important;
- margin-top: 0;
-}
-.wpb_accordion .ui-accordion .ui-accordion-content {
- border: 0;
- padding: 3px 15px 15px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.wpb_accordion .ui-accordion .ui-accordion-content .row {
- margin-left: 0!important;
-}
-.wpb_accordion .ui-accordion .ui-accordion-content.row-fluid [class*="span"] {
- width: 100%!important;
-}
-.wpb_accordion .ui-accordion .ui-accordion-header {
- position: relative;
- margin-top: 0;
-}
-.ui-accordion-content .wpb_wrapper p:last-child {
- margin-bottom: 0;
-}
-.ui-accordion-content .wpb_wrapper .box-content-wrap p:last-child {
- margin-bottom:20px;
+.btn-warning:hover, article.post .entry-content a.btn-warning:hover{
+ background-color: #F6B517;
}
+.btn-warning:active, .btn-warning:focus, article.post .entry-content a.btn-warning:active, article.post .entry-content a.btn-warning:focus{
+ background-color: #CF850F;
+}*/
-/* --------------------------------------------
- TABS SHORTCODE
--------------------------------------------- */
-
-.wpb_tabs .wpb_tour_tabs_wrapper {
- margin-bottom: 30px;
-}
-.tabbed-asset {
- overflow: hidden;
- margin-bottom: 20px;
-}
-.tab-content {
- padding: 10px;
- background-color: #f7f7f7;
- color: #222;
-}
-.tab-content.ui-tabs-hide {
- display: none;
-}
-.ui-widget :active {
- outline: none;
-}
-.ui-tabs .ui-tabs-nav li {
- font-weight: normal;
- border-left-width: 0;
- margin: 0!important;
-}
-.ui-tabs .ui-tabs-nav li:first-child {
- border-left-width: 1px;
-}
-.wpb_accordion_section .ui-accordion-content {
- height: auto;
- overflow: hidden;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
-}
-.wpb_tabs .ui-tabs .ui-tabs-panel {
- height: auto;
- overflow: hidden;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- padding: 0;
-}
-.wpb_tabs .ui-tabs .ui-tabs-panel .row, .wpb_tabs .ui-tabs .ui-tabs-panel .row [class*="span"] {
- width: 100%!important;
- margin-left: 0!important;
-}
-.wpb_tabs .ui-tabs .ui-tabs-panel .row [class*="span"] {
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- padding: 15px;
-}
-.wpb_tabs .ui-tabs .ui-tabs-nav li a {
- padding: 12px 15px;
-}
-.wpb_content_element .ui-widget-header .ui-state-default {
- background: transparent;
+/* search form */
+#searchform label, #searchform input[type="submit"]{
+ display: none;
}
-
-/* --------------------------------------------
- TOUR SHORTCODE
--------------------------------------------- */
-
-.wpb_tour .wpb_tour_tabs_wrapper {
- margin-bottom: 30px;
-}
-.wpb_tour .ui-tabs .ui-tabs-nav {
- width: 20%;
- z-index: 2;
-}
-.wpb_tour .ui-tabs .ui-tabs-nav li {
- border-bottom: 1px solid #e4e4e4!important;
- border-width: 1px;
- border-color: transparent!important;
- top: 0!important;
- float: none;
- width: 100%;
-}
-.wpb_tour .ui-tabs .ui-tabs-nav li.ui-state-active {
- border-right: 0;
-}
-.wpb_tour .ui-tabs .ui-tabs-panel {
- border: 1px solid #e4e4e4;
- padding: 12px;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
- min-height: 100px;
- margin-left: 0!important;
- z-index: 1;
- width: 78%;
-}
-.wpb_tour_next_prev_nav {
- margin-left: 0;
-}
-.wpb_tour .ui-tabs .ui-tabs-panel .row {
- margin-left: 0!important;
-}
-.wpb_tour .ui-tabs .ui-tabs-panel.row-fluid [class*="span"] {
- width: 100%!important;
- margin-left: 0!important;
-}
-.wpb_tour.span3 .ui-tabs .ui-tabs-nav {
- width: auto;
- float: none;
-}
-.wpb_tour.span3 .ui-tabs .ui-tabs-nav li {
- margin-bottom: 4px!important;
- border-width: 1px!important;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- box-sizing: border-box;
-}
-.wpb_tour.span3 .ui-tabs .ui-tabs-panel {
- width: 100%;
+.widget-area #searchform input[type="submit"]{
+ display: inline-block;
+ width: 28%;
}
-
-/* --------------------------------------------
- CALENDAR WIDGET
--------------------------------------------- */
-
-.widget_calendar #calendar_wrap {
- border: 1px solid #e4e4e4; /* stroke */
- -moz-border-radius: 2px;
- -webkit-border-radius: 2px;
- border-radius: 2px; /* border radius */
- -moz-background-clip: padding;
- -webkit-background-clip: padding-box;
- background-clip: padding-box; /* prevents bg color from leaking outside the border */
- background-color: #fff; /* layer fill content */
- overflow: hidden;
-}
-#calendar_wrap caption {
- border-bottom: 2px solid #222;
- padding: 7px 0;
-}
-.widget_calendar table {
- display: table;
- width: 100%;
- table-layout: fixed;
- border-collapse: collapse;
- position: relative;
- margin-bottom: -2px;
-}
-.widget_calendar th {
- text-align: center;
- width: 26px;
- height: 35px;
- border: 1px solid #e4e4e4;
- border-bottom: 0;
- vertical-align: middle;
-}
-.widget_calendar th:first-child {
- border-left: 0;
-}
-.widget_calendar th:last-child {
- border-right: 0;
-}
-.widget_calendar tbody tr {
- height: 35px;
-}
-.widget_calendar tbody tr > td {
- color: #444;
- text-align: center;
- border: 1px solid #e4e4e4;
- vertical-align: middle;
- padding: 0;
-}
-.widget_calendar tbody tr > td:first-child {
- border-left: 0;
-}
-.widget_calendar tbody tr > td:last-child {
- border-right: 0;
-}
-.widget_calendar tbody tr > td a {
- padding: 6px 0;
- display: block;
-}
-.sidebar .widget_calendar tbody tr > td a:hover {
- text-decoration: none;
-}
-.widget_calendar tbody tr > td.pad {
- border: 0;
- border-top: 1px solid #e4e4e4;
- background: transparent url('images/scanlines_dark.png') repeat 0 0;
-}
-.widget_calendar tfoot {
- position: absolute;
- top: 2px;
- width: 100%;
- display: block;
-}
-.widget_calendar tfoot tr {
- width: 100%;
- display: block
-}
-.widget_calendar tfoot td {
- padding: 5px 0;
- border-color: transparent;
- float: left;
-}
-.widget_calendar tfoot td#prev {
- padding-left: 10px;
- width: 40px;
- text-align: left;
-}
-.widget_calendar tfoot td#next {
- padding-right: 10px;
- width: 40px;
- text-align: right;
- float: right;
-}
-.widget_calendar tfoot td a:hover {
- text-decoration: none;
+#masthead #searchform input[type="text"]{
+ border: none;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ width: 100%;
+ margin: 0;
+ background: rgba(0,0,0,0.05);
+ color: #A0A0A0;
+ -webkit-transition: background 0.2s ease-in-out;
+ -moz-transition: background 0.2s ease-in-out;
+ -o-transition: background 0.2s ease-in-out;
+ -ms-transition: background 0.2s ease-in-out;
+ transition: background 0.2s ease-in-out;
+}
+#searchform input[type="text"]:focus{
+ background: #fafafa;
+ color: #444;
+ box-shadow: none;
}
+/*
-/* #WooCommerce
-================================================== */
+ Widgets
-.woocommerce .woocommerce-result-count, .woocommerce-page .woocommerce-result-count {
- margin-top: 4px!important;
-}
-.woocommerce .products ul, .woocommerce ul.products, .woocommerce-page .products ul, .woocommerce-page ul.products {
- padding-top: 25px!important;
- border-top: 1px solid #e4e4e4;
-}
-.woocommerce-account .page-content h2 {
- border-bottom: 1px solid #ccc;
- padding-bottom: 10px;
- margin-top: 40px;
-}
-.woocommerce-account p.myaccount_address {
- border-bottom: 1px solid #ccc;
- padding-bottom: 60px;
-}
-.woocommerce-account div.col2-set.addresses {
- margin-bottom: 50px;
-}
-.addresses .title .edit {
- margin: 10px 0 0 0;
- border: 1px solid #e4e4e4;
- padding: 2px 10px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- font-size: 12px;
- line-height: 18px;
-}
-.woocommerce-account input[name="change_password"] {
- margin: 10px 0 0 4px;
-}
-.woocommerce-page form .form-row label {
- padding-bottom: 5px;
-}
-.woocommerce-page .cart-collaterals {
- margin-bottom: 50px;
- border-top: 1px solid #e4e4e4;
- padding: 20px 0;
-}
-.woocommerce-cart .cart-collaterals .cart_totals table {
- float: right;
-}
-.woocommerce-cart .shipping-calculator-button {
- text-decoration: none;
-}
-.cart-collaterals .shipping_calculator .button[name="calc_shipping"] {
- width: 28%;
- float: right;
- padding: 10px 12px;
- margin-right: 3px;
- margin-top: 10px;
-}
-div.product .woocommerce_tabs ul.tabs li.active a {
- background: transparent;
-}
-div.product .woocommerce_tabs ul.tabs li a {
- background: transparent;
-}
-#payment ul.payment_methods li {
- margin-bottom: 10px;
-}
-#payment ul.payment_methods li input {
- margin: 5px 6px 0 0;
- float: left;
-}
-.woocommerce-checkout h3#order_review_heading {
- margin-top: 50px;
-}
-.woocommerce-checkout form.checkout {
- margin-bottom: 50px;
-}
-.quantity input.qty {
- height: 26px;
-}
-div.product .thumbnails {
- margin-left: 0!important;
-}
-div.product .woocommerce_tabs ul.tabs {
- margin-bottom: 0;
- padding-left: 15px;
+*/
+#above-blog{ width: 100%; }
+#above-blog > div{ display:block; width: 100%; }
+.bl_category ul{
+ list-style: none;
+}
+.bl_category > ul{
+ margin: 0;
+}
+.bl_category ul li{
+ /*min-height: 25px;*/
+}
+.bl_category ul li a{
+ position: relative;
+ display: block;
+ padding: 8px 0;
+ border-bottom:1px solid rgba(0,0,0,0.03);
+}
+.bl_category ul li:last-child a{
+ border-bottom: none;
+}
+.bl_category ul li .children:before{
+ content: "\e83f ";
+ font-family: 'fontello';
+ position:absolute;
+ top:10px;
+ right: 35px;
+ display:block;
+ color: rgba(0,0,0,0.2);
+}
+.bl_category ul li a + span{
+ background-color: rgba(0,0,0,0.2);
+ text-shadow: none;
+ font-weight: normal;
+ position: absolute;
+ right: 0;
+ top: 10px;
+ border-radius: 2px;
+}
+.bl_category ul li .children li{
+
+ position: relative;
+ max-height: 0;
+ min-height: 0;
+ overflow: hidden;
+
+ -webkit-transition: max-height .80s ease-in-out; -moz-transition: max-height .80s ease-in-out; -o-transition: max-height .80s ease-in-out; transition: max-height .80s ease-in-out;
+}
+.bl_category ul li:hover > .children > li{
+ max-height: 500px;
+}
+.bl_category ul li .children li a{
+
+}
+
+.bl_category > ul > li > a{
+ display: block;
+ overflow: visible;
+ max-height: none;
+}
+.widget-area > .widget_categories > select{
+ border: 0 none;
+ margin: 0!important;
+ min-height: 40px;
+ padding: 10px;
+ width: 100%!important;
+}
+
+.scale img{
+ -webkit-transition: all .10s ease-in-out; -moz-transition: all .10s ease-in-out; -o-transition: all .10s ease-in-out; transition: all .10s ease-in-out;
+}
+.scale:hover img{
+ transform: scale(1.03);
+ -ms-transform: scale(1.03);
+ -webkit-transform: scale(1.03);
+}
+.bl-social-icon{
+ background: none repeat scroll 0 0 #F0F0F0;
+ border-radius: 500px;
+ color: #777777;
+ display: inline-block;
+ font-size: 11px;
+ padding: 4px 6px;
+}
+/* general css for all widgets */
+.widget-head{
+/* background: #2E3641;
+ padding: 0 15px;
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+ color: #fff;
+ margin: -15px -15px 15px;*/
+}
+.widget-head a{
+ color: #fff;
+}
+.bl_tabs, .bl_author, .bl_imagebox,.bl_instagram, .bl_likebox, .bl_tweets, .widget_categories, .widget_recent_comments, .widget_search{
+ padding: 0!important;
+}
+/*.bl_tabs .widget-head,*/
+.bl_author .widget-head,
+.bl_imagebox .widget-head,
+.bl_instagram .widget-head,
+.bl_likebox .widget-head,
+.bl_tweets .widget-head,
+.widget_recent_comments .widget-head,
+.widget_categories .widget-head{
+ margin: 0!important;
+}
+#footer-body .bl_html .widget-body{
+ padding: 15px;
+}
+/* Author Widget */
+.bl_author > img{
+ width: 100%;
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.bl_author > h3 + img{
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+#footer-body .bl_author .widget-body{
+ background: #ffffff;
+ -moz-border-radius: 0 0 2px 2px;
+ -webkit-border-radius: 0 0 2px 2px;
+ border-radius: 0 0 2px 2px;
+ padding: 0 15px 15px;
+}
+.bl_author .widget-body{
+ position: relative;
+ text-align: center;
+}
+.bl_author > img + .widget-body .bl_author_img + .bl_author_bio{
+ padding-top: 50px;
+}
+.bl_author .bl_author_bio{
+ padding-left: 25px;
+ padding-right: 25px;
+ padding-bottom: 15px;
+ color: #333;
+}
+.bl_author .bl_author_bio > h3{
+ margin-top: 0;
+}
+#footer-body .bl_author .bl_author_bio{
+ padding-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+}
+.bl_author .bl_author_bio p{
+ margin: 0;
+}
+.bl_author_img {
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+ height: 100px;
+ width: 100px;
+ background: #fff;
+ padding: 5px;
+}
+.bl_author > img + .widget-body .bl_author_img {
+ left: 50%;
+ margin: 0 -50px;
+ position: absolute;
+ top: -45px;
+ overflow: hidden;
+}
+.bl_author > img + .widget-body .bl_author_img img{
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+ height: 90px;
+ max-width: none;
+ width: 90px;
+}
+/* Image Box Widget */
+.bl_imagebox .top-line{
+ display: none;
+}
+.bl_imagebox > img{
+ width: 100%;
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.bl_imagebox > h3 + img{
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+#footer-body .bl_imagebox .widget-body{
+ background: #ffffff;
+ -moz-border-radius: 0 0 2px 2px;
+ -webkit-border-radius: 0 0 2px 2px;
+ border-radius: 0 0 2px 2px;
+ padding: 0 15px 15px;
+}
+.bl_imagebox .widget-body{
+ position: relative;
+ text-align: center;
+}
+.bl_imagebox .widget-footer{
+ color: #C9C9C9;
+ padding: 5px 15px;
+ font-size: 12px;
+}
+.bl_imagebox > img + .widget-body .bl_imagebox_img + .bl_imagebox_bio{
+ padding-top: 60px;
+}
+.bl_imagebox .bl_imagebox_bio{
+ padding: 5px 15px 15px;
+ color: #333;
+}
+.bl_imagebox .bl_imagebox_bio > h3{
+ color: #333;
+ font-size: 25px!important;
+ font-weight: bold;
+ margin: 0;
+}
+#footer-body .bl_imagebox .bl_imagebox_bio{
+ padding-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+}
+.bl_imagebox .bl_imagebox_bio p{
+ margin: 10px 0 0;
+}
+.bl_imagebox_img {
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+ height: 100px;
+ width: 100px;
+ background: #fff;
+ padding: 5px;
+}
+.bl_imagebox > img + .widget-body .bl_imagebox_img {
+ left: 50%;
+ margin: 0 -50px;
+ position: absolute;
+ top: -45px;
+}
+
+/* featured posts widget */
+.bl_featured_post{
+ padding: 0!important;
+ position: relative;
+ overflow: hidden;
+}
+.bl_featured_post iframe {
+ max-width: 100%;
+ height: 235px;
+ margin-bottom: -7px;
}
-div.product .woocommerce_tabs ul.tabs li {
- margin: 0 -2px;
+.widget-area .bl_featured_post h3 a {
+ display: inline-block;
+ font-size: 12px;
+ position: absolute;
+ right: 20px;
+}
+.bl_featured_post .widget-body > iframe + h4, .bl_featured_post .widget-body > iframe ~ p{
+ display: none;
+}
+.bl_featured_post h3{
+ margin: 0;
+ position: relative;
+ box-shadow: none!important;
+ /*min-height: 47px;*/
+}
+.bl_featured_post .widget-body{
+ border-radius: 2px;
+ position: relative;
+ overflow: hidden;
+}
+.bl_featured_post h3 + .widget-body{
+ border-radius: 0 0 2px 2px;
+}
+.bl_featured_post .widget-body > img{
+ height: 250px;
+ max-width: none;
+ min-width: 100%;
+ width: auto;
+}
+.bl_featured_post .widget-body > .featured_post_overlay{
+ width: 100%;
+ height: 100%;
+ top: 0;
+ position: absolute;
+ background: rgba(0,0,0,0.3);
+}
+.bl_featured_post .widget-body > h4{
+ line-height: 30px;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6);
+ position: absolute;
+ top: 80px;
+ color: #FFFFFF;
+ font-weight: bolder;
+ font-size: 30px;
+ padding: 0 25px;
+ width: 100%;
+ text-align: center;
+}
+.bl_featured_post .widget-body > h4 a{
+ color: #FFFFFF;
+ opacity: 0.9;
+}
+.bl_featured_post .widget-body > h4 a:hover{
+ opacity: 1;
+}
+.bl_featured_post .widget-body > p{
+ line-height: 18px;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.6);
+ position: absolute;
+ top: 120px;
+ color: #FFFFFF;
+ font-weight: bolder;
+ font-size: 16px;
+ padding: 0 25px;
+ width: 100%;
+ text-align: center;
+}
+
+.bl_featured_post .featured_gallery{
+ list-style: none;
+ width: 1000%;
+ margin: 0;
+ position: relative;
+}
+.bl_featured_post .featured_gallery li{
+ width: 10%;
+ float:left;
+}
+#footer-body .bl_featured_post .featured_box_arrow, .widget-area .bl_featured_post .featured_box_arrow{
+ position: absolute;
+ top: 50%;
+ height: 50px;
+ margin: 0;
+ font-size: 34px;
+ color: #fff;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+#footer-body .bl_featured_post .featured_box_arrow:hover, .widget-area .bl_featured_post .featured_box_arrow:hover{
+ cursor: pointer;
+ opacity: 0.8;
+}
+#footer-body .bl_featured_post .left_arrow, .widget-area .bl_featured_post .left_arrow{
+ left: -40px;
+}
+#footer-body .bl_featured_post .right_arrow, .widget-area .bl_featured_post .right_arrow{
+ right: -40px;
+}
+#footer-body .bl_featured_post:hover > .left_arrow, .widget-area .bl_featured_post:hover > .left_arrow{
+ left: 1px;
+}
+#footer-body .bl_featured_post:hover > .right_arrow, .widget-area .bl_featured_post:hover > .right_arrow{
+ right: 1px;
}
-div.product .woocommerce_tabs .panel {
- margin-bottom: 0px;
- margin-top: -1px;
- border: 1px solid rgb(221, 221, 221);
- padding: 10px 20px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- background-color: rgb(255, 255, 255);
+/*
+ Featured Posts Widget
+*/
+.swiper-container.swiper-container-featured .swiper-wrapper{
+ position: relative;
+}
+.swiper-container.swiper-container-featured .swiper-slide{
+ height: 250px;
+}
+#above-blog .swiper-container.swiper-container-featured .swiper-slide, #above-blog .swiper-container.swiper-container-featured .swiper-slide a{
+ height: 350px;
+}
+.swiper-container.swiper-container-featured .swiper-slide a{
+ height: 250px;
+ display: block;
+ padding-right: 4px;
+ background-size: cover;
+ background-position: center center;
+ background-repeat: no-repeat;
+}
+.swiper-container-featured .swiper-slide a:after {
+ background: none repeat scroll 0 0 #000000;
+ content: "";
+ height: 100%;
+ left: 0;
+ opacity: 0.3;
+ position: absolute;
+ top: 0;
+ -webkit-transition: opacity .15s ease-out;
+ -moz-transition: opacity .15s ease-out;
+ -ms-transition: opacity .15s ease-out;
+ -o-transition: opacity .15s ease-out;
+ transition: opacity .15s ease-out;
+ width: 100%;
+}
+.ie8 .swiper-container-featured .swiper-slide a:after{
+ display: none!important;
+}
+.swiper-container-featured .swiper-slide a:hover:after {
+ opacity: 0.2;
+}
+.swiper-container.swiper-container-featured .swiper-slide:last-child a{
+ padding-right: 0
+}
+.widget-area .bl_featured_post{
+ position: relative;
+}
+.widget-area .bl_featured_post .widget-head a{
+ color: #FFFFFF;
+ font-size: 12px;
+ position: relative;
+ right: 0;
+ bottom: 15px;
+ z-index: 100;
+ width: 100%;
+ text-align: center;
+}
+.swiper-container.swiper-container-featured .post-title{
+ color: #FFFFFF;
+ position: absolute;
+ top:50%;
+ width: 100%;
+ text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.15);
+ text-transform: none!important;
+ padding: 0 15px!important;
+ z-index: 10;
+}
+.swiper-container.swiper-container-featured .post-title p{
+ line-height: 1.5!important;
+}
+#above-blog .swiper-container.swiper-container-featured .post-title{
+ padding: 0 45px!important;
+}
+#above-blog .swiper-container.swiper-container-featured .post-title p{
+ margin: 5px 0;
+}
+
+
+
+.bl_featured_post .widget-body{
+ padding: 0;
+ position: relative;
+}
+.bl_featured_post .featured-images-container{
+ overflow: hidden;
+}
+.bl_featured_post .widget-body .featured-header{
+ z-index: 2;
+ position: relative;
+ padding: 7px 0;
+ border-top: 1px solid #EEEEEE;
+}
+.bl_featured_post ul{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+.bl_featured_post .blu-heading{
+ margin: 0;
+}
+.bl_featured_post .featured-images{
+ width: 6000px;
+ position: relative;
+}
+.bl_featured_post .featured-header li{
+ display: table-cell;
+ width: 1%;
+ text-align: center;
+ line-height: 17px;
+}
+.bl_featured_post .featured-header li p{
+ color: #444444;
+ font-weight: bold;
+ margin: 0;
+ font-size: 16px;
+}
+.bl_featured_post .featured-interactions{
+ bottom: 0;
+ position: absolute;
+ text-align: left;
+ color: #F9F9F9;
+ font-size: 14px;
+ padding: 5px;
+ width: 100%;
+ z-index: 10;
+ background: -moz-linear-gradient(top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.6) 100%);
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(0,0,0,0)), color-stop(100%,rgba(0,0,0,0.6)));
+ background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.6) 100%);
+ background: -o-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.6) 100%);
+ background: -ms-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.6) 100%);
+ background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.6) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00000000', endColorstr='#cc000000',GradientType=0 );
+}
+.bl_featured_post .swiper-container .arrow-left,
+.bl_featured_post .swiper-container .arrow-right {
+ height: 40%;
+ margin-top: 0;
+ position: absolute;
+ top: 30%;
+ width: 35px;
+ z-index: 10000;
+}
+.bl_featured_post .swiper-container .arrow-right {
+ right:0;
+}
+.bl_featured_post .swiper-container .arrow-left {
+ left: 0;
+}
+/* social box */
+.widget-area .bl_socialbox .widget-body{
+ padding: 10px 14px;
+}
+.cleanwidget.bl_socialbox, .cleanwidget.bl_socialbox .widget-head{
+ padding: 0;
+ background: transparent;
+
+}
+.bl_socialbox ul{
+ list-style: none;
+ margin: 0;
+}
+.bl_socialbox li{
+ float: left;
+ margin: 4px;
+}
+.site-footer #footer-body .bl_socialbox a, .bl_socialbox a{
+ color: #666;
+ padding: 6px;
+ font-size: 18px;
+ background: #F7F7F7;
+ -webkit-border-radius: 2px;
+ -moz-border-radius: 2px;
+ border-radius: 2px;
+ -webkit-transition: transform 0.2s ease-in-out;
+ -moz-transition: transform 0.2s ease-in-out;
+ -o-transition: transform 0.2s ease-in-out;
+ -ms-transition: transform 0.2s ease-in-out;
+ transition: transform 0.2s ease-in-out;
+ display: block;
}
-.widget_product_search form {
- margin-bottom: 0;
+.site-footer #footer-body .bl_socialbox a:hover, .bl_socialbox a:hover{
+ color: #fff!important;
+/* transform: scale(1.08);
+ -ms-transform: scale(1.08);
+ -webkit-transform: scale(1.08);*/
+ text-decoration: none;
+}
+.bl_socialbox a.bl_icon_facebook{ color: #4861A3!important; }
+.bl_socialbox a.bl_icon_facebook:hover{ color:#fff!important; background: #4861A3!important; border-color: #4861A3!important; }
+.bl_socialbox a.bl_icon_twitter{ color: #1BB2E9!important; }
+.bl_socialbox a.bl_icon_twitter:hover{ color:#fff!important; background: #1BB2E9!important; border-color: #1BB2E9!important; }
+.bl_socialbox a.bl_icon_googleplus{ color: #CE4231!important; }
+.bl_socialbox a.bl_icon_googleplus:hover{ color:#fff!important; background: #CE4231!important; border-color: #CE4231!important; }
+.bl_socialbox a.bl_icon_linkedin{ color: #007BB6!important; }
+.bl_socialbox a.bl_icon_linkedin:hover{ color:#fff!important; background: #007BB6!important; border-color: #007BB6!important; }
+.bl_socialbox a.bl_icon_youtube{ color: #BC1E2C!important; }
+.bl_socialbox a.bl_icon_youtube:hover{ color:#fff!important; background: #BC1E2C!important; border-color: #BC1E2C!important; }
+.bl_socialbox a.bl_icon_rss{ color: #F99C00!important; }
+.bl_socialbox a.bl_icon_rss:hover{ color:#fff!important; background: #F99C00!important; border-color: #F99C00!important; }
+.bl_socialbox a.bl_icon_flickr{ color: #FE0083!important; }
+.bl_socialbox a.bl_icon_flickr:hover{ color:#fff!important; background: #FE0083!important; border-color: #FE0083!important; }
+.bl_socialbox a.bl_icon_vimeo{ color: #1BB6EC!important; }
+.bl_socialbox a.bl_icon_vimeo:hover{ color:#fff!important; background: #1BB6EC!important; border-color: #1BB6EC!important; }
+.bl_socialbox a.bl_icon_pinterest{ color: #CD2026!important; }
+.bl_socialbox a.bl_icon_pinterest:hover{ color:#fff!important; background: #CD2026!important; border-color: #CD2026!important; }
+.bl_socialbox a.bl_icon_dribbble{ color: #E14A85!important; }
+.bl_socialbox a.bl_icon_dribbble:hover{ color:#fff!important; background: #E14A85!important; border-color: #E14A85!important; }
+.bl_socialbox a.bl_icon_tumblr{ color: #49637C!important; }
+.bl_socialbox a.bl_icon_tumblr:hover{ color:#fff!important; background: #49637C!important; border-color: #49637C!important; }
+.bl_socialbox a.bl_icon_instagram{ color: #AC8568!important; }
+.bl_socialbox a.bl_icon_instagram:hover{ color:#fff!important; background: #AC8568!important; border-color: #AC8568!important; }
+.bl_socialbox a.bl_icon_viadeo{ color: #F97618!important; }
+.bl_socialbox a.bl_icon_viadeo:hover{ color:#fff!important; background: #F97618!important; border-color: #F97618!important; }
+.bl_socialbox a.bl_icon_github{ color: #4190DE!important; }
+.bl_socialbox a.bl_icon_github:hover{ color:#fff!important; background: #4190DE!important; border-color: #4190DE!important; }
+
+/* Tabs widget */
+.bl_tabs h3 + #bl_side_tabs{
+ top:0;
+}
+.bl_tabs h3 + #bl_side_tabs + .tab-content{
+ margin-top: 0;
+}
+.bl_tabs #bl_side_tabs{
+ margin: 0;
+ position:relative;
+ top: -36px;
+}
+#bl_side_posts > ul, #bl_side_comments > ul{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+}
+#bl_side_posts > ul li, #bl_side_comments > ul li{
+ padding: 15px 15px 25px 110px;
+ position: relative;
+ min-height: 55px;
+ right: -110%;
+ border-left: 3px solid transparent;
+}
+#bl_side_posts > ul li:hover, #bl_side_comments > ul li:hover {
+ background: none repeat scroll 0 0 #F8F8F8;
+ /*border-left: 3px solid #F69087;*/
+ cursor: pointer;
+}
+#bl_side_posts > ul li:hover .tab_icon, #bl_side_comments > ul li:hover .tab_attachment, #bl_side_posts > ul li:hover .tab_attachment {
+ -webkit-transition: all .15s ease-in-out;
+ -moz-transition: all .15s ease-in-out;
+ -o-transition: all .15s ease-in-out;
+ transition: all .15s ease-in-out;
+/* -webkit-transform: scale(1.05);
+ -moz-transform: scale(1.05);
+ -ms-transform: scale(1.05);
+ -o-transform: scale(1.05);
+ transform: scale(1.05);*/
+}
+.bl_tabs{
+ margin-top: 66px;
+}
+.bl_tabs .top-line{
+ display:none;
+}
+.bl_tabs:first-child{
+ margin-top: 36px;
+}
+.bl_tabs > h3 {
+ margin-top: -36px !important;
+}
+.bl_tabs ul li a{
+ font-weight: bold;
+}
+.bl_tabs ul li .tab_attachment{
+ position: absolute;
+ left: 15px;
+ top: 8px;
+ background: transparent!important;
+ display: block;
+}
+.bl_tabs ul li .tab_text{
+ display: table;
+ height: 55px;
+}
+.site-footer #footer-body .bl_tabs ul li .tab_text h5, .bl_tabs ul li .tab_text h5{
+ color: #717171;
+ display: table-cell;
+ text-decoration: none !important;
+ vertical-align: middle;
+ background: transparent;
+ -webkit-transform: none;
+ -moz-transform: none;
+ -ms-transform: none;
+ -o-transform: none;
+ transform: none;
+}
+.widget-area .bl_tabs ul li .tab_text h5{
+ background: transparent;
+}
+.site-footer #footer-body .bl_tabs ul li .tab_text h5 a, .bl_tabs ul li .tab_text h5 a{
+ color: #717171;
+ text-decoration: none !important;
+}
+.site-footer #footer-body .bl_tabs ul li .tab_text h5, .bl_tabs ul li .tab_text h5 small{
+ display:block;
+}
+.bl_tabs ul li .tab_text a span{
+ /*color: #F69087;*/
+}
+.bl_tabs .tab-content{
+ background: none repeat scroll 0 0 #FFFFFF;
+ margin-top: -36px;
+ min-height: 100px;
+ padding: 15px 0;
+}
+.tab_icon{
+ display: block;
+ height: 80px;
+ width: 80px;
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+}
+.tab_icon i {
+ color: #FFFFFF;
+ display: block;
+ font-size: 26px;
+ height: 80px;
+ line-height: 80px;
+ text-align: center;
+ width: 80px;
+}
+.bl_tabs .tab-content img{
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+ width: 80px;
+ height: 80px;
+ display: block;
+ position: relative;
+ max-width: none\9;
+}
+.tab_quote{
+ background-color: #85A9B3;
+ background-position: 2px -220px;
+}
+.tab_audio{
+ background-color: #EF7336;
+ background-position: 2px -330px;
+}
+.tab_link{
+ background-color: #9664B5;
+ background-position: 2px -50px;
+}
+.tab_gallery, .tab_image{
+ background-position: 1px -274px;
+ background-color: #B0CB7A;
+}
+.tab_standard{
+ background-position: 1px -107px;
+ background-color: #F69087;
+}
+.tab_video{
+ background-position: 1px -442px;
+ background-color: #85CCB1;
+}
+#bl_side_tags{
+ padding: 0 15px;
+}
+#bl_side_tags .bl_tab_tag{
+ font-weight: bold;
+ padding: 4px 6px;
+ margin: 0 5px 5px 0;
+ background: #F8F8F8;
+ text-decoration: none;
+ color: #666;
+ display: block;
+ float: left;
+ text-align: center;
+}
+#bl_side_tags .bl_tab_tag:hover{
+ /*background: #F69087;*/
+ color: #fff;
+ -webkit-transition: all .15s ease-in-out;
+ -moz-transition: all .15s ease-in-out;
+ -o-transition: all .15s ease-in-out;
+ transition: all .15s ease-in-out;
+ -webkit-transform: scale(1.05);
+ -moz-transform: scale(1.05);
+ -ms-transform: scale(1.05);
+ -o-transform: scale(1.05);
+ transform: scale(1.05);
+}
+
+/* Facebook like box */
+.bl_likebox .widget-head{
+ background-image: url("assets/img/noise_transparent.png");
+ background-color: #4861A3;
+ color: #FFF;
+ text-shadow: 0 1px 0 rgba(52,76,137,0.5);
+ margin: 0;
+}
+#bl_likebox > iframe {
+ min-width: 180px;
+}
+#footer-body #bl_likebox {
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+.bl_likebox .widget-body{
+ padding: 0;
+}
+#bl_likebox {
+ background: none repeat scroll 0 0 #FFFFFF;
+}
+/* Google+ widget */
+.widget-area > .bl_googlebadge > h3, #footer-body .bl_googlebadge > h3{
+ margin: 0;
+}
+.widget-area > .bl_googlebadge, #footer-body .bl_googlebadge{
+ background: none repeat scroll 0 0 transparent;
+ overflow: hidden;
+ padding: 0;
+}
+.widget-area > .bl_googlebadge .widget-body, #footer-body .bl_googlebadge .widget-body{
+ left: -50%;
+ position: relative;
+ text-align: center;
+ width: 200%;
+}
+.widget-area > .bl_googlebadge .widget-body > div iframe, #footer-body .bl_googlebadge .widget-body > div iframe{
+}
+
+/* Twitter widget */
+.bl_tweets .widget-head{
+ background-image: url("assets/img/noise_transparent.png");
+ background-color: #3BAAE1;
+ color: #FFF;
+ text-shadow: 0 1px 0 rgba(52,133,170,0.5);
+ margin: 0;
+}
+#footer-body .bl_tweets{
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+ overflow: hidden;
+}
+.bl_tweets .widget-body{
+ padding: 0;
+ background: #E2E2E2;
+}
+.bl_tweets #tweets{
+ overflow: hidden;
+}
+.bl_tweets #tweets iframe{
+ margin-top: -3px;
+}
+#footer-body #tweets iframe{
+ min-width: 100%!important;
+}
+/* Newsletter Widget */
+.bl_newsletter p{
+ color: #B0B0B0;
+ margin: 0 0 15px;
+}
+.bl_newsletter .widget-body {
+ padding: 15px;
+}
+.bl_newsletter .input-append{
+ margin-bottom: 0;
+ position: relative;
+ width: 100%;
+}
+#footer-body .bl_newsletter .widget-head, #footer-body .bl_newsletter{
+ padding: 0;
+ background: transparent;
+ border: none;
+}
+#footer-body .bl_newsletter .widget-head{
+ margin: 0;
+}
+.widget-area .bl_newsletter p{
+ color: #717171;
+ text-shadow: none;
+ margin: 0 0 15px;
+}
+.bl_newsletter .bl_newsletter_email{
+ height: 40px;
+ width: 70%;
+}
+.widget-area .bl_newsletter .bl_newsletter_email{
+ border: 1px solid #CCCCCC;
+}
+.bl_newsletter button{
+ height: 40px;
+ box-shadow: none;
+ width: 30%;
+}
+/* Flickr widget */
+.flickr-slider {
+ height: auto!important;
+}
+.bl_flickr .widget-body{
+ overflow: hidden;
+}
+.bl_flickr .flickr-images{
+ margin: 0;
+ list-style: none;
+ height: auto!important;
+}
+.bl_flickr .nivo-directionNav a{
+ /*margin-top: -21px;*/
+ position: absolute;
+ top: 50%;
+}
+.bl_flickr .nivo-directionNav a:before {
+ content: "";
+ cursor: pointer;
+ display: block;
+ height: 600px;
+ margin-top: -150px;
+ position: absolute;
+ top: -100%;
+ width: 100%;
}
-.widget_product_search input[type="submit"] {
- visibility: hidden;
- height: 0;
- padding: 0;
- margin: 0;
+.widget-area .bl_flickr h3 {
+ position: relative;
}
-ul.cart_list li, ul.product_list_widget li {
- padding: 0;
+.widget-area .bl_flickr h3 a {
+ display: inline-block;
+ font-size: 12px;
+ position: absolute;
+ right: 20px;
+}
+/* instagram widget */
+.bl_instagram{
+ /*width: 300px!important;*/
+ overflow: hidden;
+ border: none;
+}
+#footer-body .bl_instagram .widget-head, .widget-area .bl_instagram .widget-head{
+ background-color: #5F8CB0;
+ background-image: url("assets/img/noise_transparent.png"), -moz-linear-gradient(left center , #5F8CB0, #4A7496);
+ background-position: 50% 50%;
+ min-width: 300px;
+ padding: 0 15px;
+ color: #FFFFFF;
}
-.woocommerce ul.cart_list li, .woocommerce ul.product_list_widget li, .woocommerce-page ul.cart_list li, .woocommerce-page ul.product_list_widget li {
- padding: 10px 0;
+#footer-body .bl_instagram .widget-body, .widget-area .bl_instagram .widget-body{
+ padding: 0;
+ overflow: hidden;
+ position: relative;
}
-ul.products li.product {
- text-align: center;
+#footer-body .bl_instagram .widget-body, .widget-area .bl_instagram .widget-body{
+ /*width: 300px;*/
}
-ul.products li.product a {
- display: block;
+#footer-body .bl_instagram .instagram-images > li, .widget-area .bl_instagram .instagram-images > li{
+ /*width: 300px;*/
}
-ul.products li.product a.button {
- display: inline-block;
+#footer-body .bl_instagram .widget-body .instagram-header, .widget-area .bl_instagram .widget-body .instagram-header{
+ z-index: 2;
+ position: relative;
}
-ul.products li.product a img {
- display: block;
+#footer-body .bl_instagram .widget-body:hover > .left_arrow, .widget-area .bl_instagram .widget-body:hover > .left_arrow{
+ left: 1px;
}
-ul.product_list_widget li a:hover {
- text-decoration: none;
+#footer-body .bl_instagram .widget-body:hover > .right_arrow, .widget-area .bl_instagram .widget-body:hover > .right_arrow{
+ right: 1px;
}
-.woocommerce .widget_shopping_cart .total, .woocommerce-page .widget_shopping_cart .total {
- padding: 10px 0!important;
+#footer-body .bl_instagram .widget-body:hover > .instagram_link, .widget-area .bl_instagram .widget-body:hover > .instagram_link{
+ top: 50%;
}
-.widget_shopping_cart_content .buttons > a {
- margin-right: 5px!important;
+#footer-body .bl_instagram .instagram_link a, .widget-area .bl_instagram .instagram_link a{
+ color: #ffffff;
+ display: block;
+ text-align: center;
+ text-decoration: none;
+ line-height: 50px;
}
-.page-content .related.products {
- margin-top: 50px;
+#footer-body .bl_instagram .instagram_link, .widget-area .bl_instagram .instagram_link{
+ z-index: 1;
+ position: absolute;
+ display: block;
+ top: -50px;
+ font-size: 32px;
+ left: 50%;
+ height: 60px;
+ width: 60px;
+ margin: -30px;
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+ background: #F97F77;
+ padding: 5px;
+}
+#footer-body .bl_instagram .instagram_link:hover, .widget-area .bl_instagram .instagram_link:hover{
+ background: #F99690;
+}
+#footer-body .bl_instagram .instagram_arrow, .widget-area .bl_instagram .instagram_arrow{
+ position: absolute;
+ top: 50%;
+ height: 50px;
+ margin: -25px 0;
+ font-size: 34px;
+ color: #fff;
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ -ms-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+#footer-body .bl_instagram .instagram_arrow:hover, .widget-area .bl_instagram .instagram_arrow:hover{
+ cursor: pointer;
+ opacity: 0.8;
+}
+#footer-body .bl_instagram .left_arrow, .widget-area .bl_instagram .left_arrow{
+ left: -40px;
+}
+#footer-body .bl_instagram .right_arrow, .widget-area .bl_instagram .right_arrow{
+ right: -40px;
+}
+#footer-body .bl_instagram ul, .widget-area .bl_instagram ul{
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+#footer-body .bl_instagram .instagram-images, .widget-area .bl_instagram .instagram-images{
+ width: 15000px;
+ position: relative;
+}
+#footer-body .bl_instagram .instagram-images > li, .widget-area .bl_instagram .instagram-images > li{
+ float: left;
+}
+#footer-body .bl_instagram .instagram-header li, .widget-area .bl_instagram .instagram-header li{
+ display: table-cell;
+ width: 1%;
+ text-align: center;
+ background: #FDFDFD;
+ padding: 5px 0 10px;
+}
+#footer-body .bl_instagram .instagram-header li p, .widget-area .bl_instagram .instagram-header li p{
+ color: #727272;
+ font-weight: bold;
+ margin: 0;
+ font-size: 20px;
+}
+#footer-body .bl_instagram .instagram-interactions, .widget-area .bl_instagram .instagram-interactions{
+ background-color: #5F8CB0;
+ background-image: url("assets/img/noise_transparent.png"), -moz-linear-gradient(left center , #5F8CB0, #4A7496);
+ background-position: 50% 50%;
+ height: 51px;
+ position: relative;
}
-.widget_shopping_cart .total {
- border-top: 3px double #ccc;
- padding: 8px 0 0;
- margin-top: 20px;
+#footer-body .bl_instagram .instagram-interactions li, .widget-area .bl_instagram .instagram-interactions li{
+ display: table-cell;
+ width: 1%;
+ text-align: center;
+ color: #F9F9F9;
+ font-size: 20px;
+ padding: 15px;
}
-ul.products li.product h3 {
- line-height: 100%;
+
+/*
+ Default Wordpress Widgets
+*/
+
+/* search */
+.searchform input{
+ margin:0!important;
+}
+#masthead .searchform fieldset{
+ width:100%;
+ position:absolute;
+}
+#masthead .searchform input{
+ background: transparent;
+ -webkit-transition: all .4s ease-in-out;
+ -moz-transition: all .4s ease-in-out;
+ -o-transition: all .4s ease-in-out;
+ transition: all .4s ease-in-out;
+ display: none;
+ /*opacity: 0;*/
+ padding: 0;
+ /*z-index:-1;*/
+ width: 100%;
+ min-height: 40px;
+ border: none;
+ /*border-bottom: 1px solid rgba(0,0,0,0.1);*/
+ /*height: 0;*/
+ position: absolute;
+ box-shadow: none;
+ font-size: 30px;
+ color: rgba(0,0,0,0.2);
+ top: -7px;
+ border-radius: 0;
+}
+.searchform input{
+ width: 100%;
+}
+.searchform a{
+ display: none;
+}
+#masthead .searchform a{
+ display: inline-block;
+ position: absolute;
+ right: 0;
+ top: -10px;
+ font-size:25px;
+}
+#masthead .searchform a:focus + input{
+ opacity: 1;
+ z-index: 1;
+ width: 100%;
+ height: auto;
+ min-height: 40px;
+}
+.bl_search_overlay{
+ display: none;
+ width: 100%;
+ height: 100%;
+ position: fixed;
+ background: transparent;
+ z-index: 50;
+}
+.widget-area div.widget_search input[type="text"], #footer-body div.widget_search input[type="text"]{
+ /*width: 70%;*/
+ height: 34px;
+ margin: 0;
+ background: none repeat scroll 0 0 #EFEFEF;
+ -moz-border-radius: 2px 2px 2px 2px;
+ -webkit-border-radius: 2px 2px 2px 2px;
+ border-radius: 2px 2px 2px 2px;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ font-size: 16px;
+ /*max-width: 190px;*/
+}
+.widget-area div.widget_search form{
+ margin: 0;
+ padding: 15px;
+}
+#footer-body #searchform{
+ display: inline-block;
+}
+#footer-body .widget_search{
+ background: transparent;
+ border: none;
+}
+#footer-body .widget_search .widget-head{
+ background: transparent;
+ margin: 0;
+ padding: 0;
+}
+/* rss */
+.widget_rss ul{
+ margin: 0;
+ list-style: none;
+}
+.widget_rss ul li{
+ padding: 10px 15px;
+ border-top: 1px solid #eee;
+}
+#footer-body .widget_rss ul li{
+ border-top: none;
+}
+.widget_rss ul li:first-child{
+ border-top: none;
+}
+.widget_rss ul li a{
+ color: #333;
+ font-size: 16px;
+ font-weight: bold;
+}
+.widget_rss ul li .rss-date{
+ color: #999;
+ font-size: 12px;
+ display: block;
+}
+#footer-body .rssSummary{
+ color: #fff;
+}
+#footer-body .rssSummary{
+ color: #fff;
+}
+/* Recent Comments */
+.widget_recent_comments .recentcomments{
+ list-style: none;
+}
+/* Calendar */
+.widget_calendar table{
+ width: 100%;
+}
+#footer-body .widget_calendar{
+ padding: 0;
+}
+#footer-body .widget_calendar table{
+ width: 100%;
+ background: #ffffff;
+ color: #717171;
+ -moz-border-radius: 2px;
+ -webkit-border-radius: 2px;
+ border-radius: 2px;
+}
+.widget_calendar table > caption {
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+#footer-body .widget_calendar .widget-head {
+ margin: 0;
+}
+.widget_calendar table > caption {
+ background: none repeat scroll 0 0 #272F3A;
+ color: #FFFFFF;
+ font-size: 20px;
+ font-weight: 400;
+ line-height: 40px;
+ padding: 0 15px;
+ text-align: left;
+}
+.widget_calendar .widget-head + #calendar_wrap table > caption {
+ background: none repeat scroll 0 0 #9EB2C0;
+ color: #FFFFFF;
+ font-family: inherit;
+ font-size: 15px;
+ font-weight: bold;
+ line-height: inherit;
+ padding: 5px 0;
+ text-align: center;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+#footer-body .widget_calendar .widget-head + #calendar_wrap table > caption {
+ -moz-border-radius: 2px 2px 0 0;
+ -webkit-border-radius: 2px 2px 0 0;
+ border-radius: 2px 2px 0 0;
+}
+.widget_calendar tr th {
+ background: none repeat scroll 0 0 #C1CFD9;
+ color: #FFFFFF;
+ padding: 3px 0;
+}
+.widget_calendar tr td {
+ text-align: center;
+ font-size: 16px;
+}
+.widget_calendar tr td a {
+ font-weight: bold;
+}
+
+/* Categories, Pages, Archives, Recent Comments and Reecent Posts bundled */
+.widget_recent_entries > ul, .widget-area .widget_nav_menu > div > ul, .widget_categories > ul, .widget_recent_comments > ul, .widget_pages > ul, .widget_meta > ul, .widget_archive > ul{
+ list-style: none;
+ margin: 0;
+}
+.widget-area .widget_recent_entries li ,
+.widget-area .widget_nav_menu ul li ,
+.widget-area .widget_categories li ,
+.widget-area .widget_recent_comments li,
+.widget-area .widget_pages li ,
+.widget-area .widget_meta li ,
+.widget-area .widget_archive li {
+ display: block;
+ line-height: 40px;
+ padding: 0;
+ border-bottom: 1px solid #eee;
+ border-left: 3px solid transparent;
+}
+.widget-area .widget_recent_comments li{
+ padding: 0 15px;
+}
+.widget-area .widget_recent_entries li a ,
+.widget-area .widget_nav_menu ul li a ,
+.widget-area .widget_categories li a ,
+.widget-area .widget_recent_comments li a,
+.widget-area .widget_pages li a ,
+.widget-area .widget_meta li a ,
+.widget-area .widget_archive li a {
+ padding: 0 15px;
+}
+
+.widget-area .widget_recent_entries li a ,
+.widget-area .widget_nav_menu ul li a ,
+.widget-area .widget_categories li a ,
+.widget-area .widget_recent_comments li a,
+.widget-area .widget_pages li a ,
+.widget-area .widget_meta li a ,
+.widget-area .widget_archive li a {
+ padding-left: 15px;
+}
+
+.widget-area .widget_nav_menu > div > ul ul{
+ background: #FAFAFA;
+}
+.widget-area .widget_nav_menu > div > ul ul li {
+ /*background: #FFFFFF;*/
+ /*margin-top: 10px;*/
+}
+.widget-area .widget_nav_menu > div > ul ul li:last-child {
+ border-bottom:none;
+}
+.widget-area .widget_nav_menu > div > ul ul a {
+ border-left: medium none;
+}
+.widget_recent_entries li a,
+.widget-area .widget_nav_menu ul li a,
+.widget_categories li a,
+.widget_recent_comments li a,
+.widget_pages li a,
+.widget_meta li a,
+.widget_archive li a{
+ display: block;
+ text-decoration: none;
+ font-weight: 400;
+ color: #717171;
+ font-size: 16px;
+}
+.widget_recent_entries li span.badge,
+.widget-area .widget_nav_menu ul li span.badge,
+.widget_categories li span.badge,
+.widget_recent_comments li span.badge,
+.widget_pages li span.badge,
+.widget_meta li span.badge,
+.widget_archive li span.badge{
+ background: none repeat scroll 0 0 #C1CFD9;
+ -moz-border-radius: 16px 16px 16px 16px;
+ -webkit-border-radius: 16px 16px 16px 16px;
+ border-radius: 16px 16px 16px 16px;
+ -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset, 0 1px 1px #FFFFFF;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset, 0 1px 1px #FFFFFF;
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1) inset, 0 1px 1px #FFFFFF;
+ color: #FFFFFF;
+ font-size: 12px;
+ height: 20px;
+ line-height: 18px;
+ margin: 0;
+ min-width: 20px;
+ padding: 1px 6px 0;
+ position: absolute;
+ right: 15px;
+ text-align: center;
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
+ top: 11px;
+}
+.widget-area ul li{
+ position: relative;
+}
+.widget-area .widget_nav_menu > div > ul ul{
+ margin: 0;
+ list-style: none;
+ background: #f4f4f4;
+}
+.widget-area .widget_nav_menu > div > ul ul a{
+ border-left: 3px solid transparent;
+}
+.widget-area .widget_recent_entries li:hover,
+.widget-area .widget_nav_menu div > ul > li:hover,
+.widget-area .widget_categories li:hover,
+.widget-area .widget_recent_comments li:hover,
+.widget-area .widget_meta li:hover,
+.widget-area .widget_pages li:hover,
+.widget-area .widget_archive li:hover{
+ border-left: 3px solid #F69087;
+ background: #F8F8F8;
+}
+.widget-area .widget_nav_menu div > ul > li ul li{
+ padding-left: 25px;
+}
+.widget-area .widget_nav_menu div > ul > li ul li:hover{
+ background: #FFFFFF;
+}
+/* tag cloud */
+.widget_tag_cloud .tagcloud{
+ padding: 15px;
+}
+#footer-body .widget_tag_cloud .tagcloud{
+ padding: 0;
+}
+.widget_tag_cloud .tagcloud:before, .widget_tag_cloud .tagcloud:after {
+ content: "";
+ display: table;
+ line-height: 0;
+}
+.widget_tag_cloud .tagcloud:after {
+ clear: both;
+}
+.widget_tag_cloud .tagcloud a{
+ font-weight: bold;
+ padding: 4px 6px;
+ margin: 0 5px 5px 0;
+ background: #F8F8F8;
+ text-decoration: none;
+ display: block;
+ float: left;
+ font-size: 14px !important;
+ text-align: center;
+}
+#footer-body .widget_tag_cloud .tagcloud a{
+ background: transparent;
+}
+.widget_tag_cloud .tagcloud a:hover{
+ /*background: #F69087;*/
+ color: #fff;
+ -webkit-transition: all .15s ease-in-out;
+ -moz-transition: all .15s ease-in-out;
+ -o-transition: all .15s ease-in-out;
+ transition: all .15s ease-in-out;
+ -webkit-transform: scale(1.05);
+ -moz-transform: scale(1.05);
+ -ms-transform: scale(1.05);
+ -o-transform: scale(1.05);
+ transform: scale(1.05);
+}
+/* header menu */
+.navbar-inverse .navbar-inner{
+ background: transparent;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+ -moz-box-shadow: none;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: none;
+ padding: 0 15px;
+ filter: none;
+}
+.navbar{
+ margin-bottom: 0;
+ float: left;
+ position: relative;
+}
+.navbar .brand {
+ display: block;
+ text-align: center;
+ width: 100%;
+ color: #555555;
+ height: 70px;
+ margin: 0 30px 0 0;
+ padding: 13px 0 12px;
+}
+.navbar .brand-text {
+ line-height: 42px;
+}
+.navbar .nav > li > a {
+ color: #EFEFEF;
+ display: block;
+ font-size: 15px;
+ font-weight: 300;
+ line-height: 25px;
+ text-decoration: none;
+}
+.navbar .nav > li:focus > .dropdown-menu, .navbar .nav > li a:focus + .dropdown-menu, .navbar .nav > li .dropdown-menu li a:focus, .navbar .nav > li:active > .dropdown-menu, .navbar .nav > li a:active + .dropdown-menu, .navbar .nav > li .dropdown-menu li a:active {
+ /*display: block;*/
+ /*opacity: 1;*/
+}
+.navbar-inverse .brand, .navbar-inverse .nav > li > a{
+ text-shadow: none;
+}
+.navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus{
+ color:inherit;
+ opacity:0.7;
+}
+.nav-line{
+ position: absolute;
+ height: 3px;
+ width: 100px;
+ top: 0;
+ left: 0;
+}
+.navbar-inverse .nav-collapse .nav > li > a, .navbar-inverse .nav-collapse .dropdown-menu a{
+ color: #EFEFEF;
+}
+.navbar .nav > li.active, .navbar .nav > li:hover{
+ background: none repeat scroll 0 0 rgba(255, 255, 255, 0.02);
+ color: #fff;
+}
+.dropdown-menu{
+ /*background: none repeat scroll 0 0 #212833;*/
+ border-top: 2px solid #F69087;
+ border-left: 0;
+ border-right: 0;
+ border-radius: 0;
+ padding: 0;
+ margin: 0;
+}
+.dropdown-menu > li > a{
+ color: #FFFFFF;
+ font-size: 16px;
+ padding: 15px 20px;
+}
+.navbar .nav > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu:before{
+ display: none;
+}
+/*.navbar .nav > li:hover > ul {
+ display: block;
+}*/
+.dropdown-menu > li > a:hover{
+ background: rgba(0,0,0,0.05);
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle{
+ background: transparent;
+}
+.dropdown-toggle i{
+ font-size: 12px;
+ margin: 0 0 0 4px;
+}
+.btn.btn-navbar {
+ background: none repeat scroll 0 0 #85CCB1;
+ margin: 18px 0;
+ padding: 7px 10px;
+}
+.btn.btn-navbar:hover, .btn.btn-navbar:active, .btn.btn-navbar:focus{
+ background: none repeat scroll 0 0 #67B295;
+}
+.nav-collapse .nav > li > a, .nav-collapse .dropdown-menu a{
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+ border-radius: 0;
+}
+.dropdown-menu{
+ /*top: -1000px;*/
+ /*display: block;*/
+ /*opacity: 0;*/
+
+ -webkit-transition: opacity 0.4s ease 0.1s;
+ -moz-transition: opacity 0.4s ease 0.1s;
+ -o-transition: opacity 0.4s ease 0.1s;
+ -ms-transition: opacity 0.4s ease 0.1s;
+ transition: opacity 0.4s ease 0.1s;
+}
+.dropdown-submenu > .dropdown-menu {
+ border: 1px solid rgba(0,0,0,0.1);
+ border-radius: 0 2px 2px 0;
+ box-shadow: none;
+ margin-left: 0;
+ margin-top: -1px;
+}
+.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a {
+ background-color: rgba(0, 0, 0, 0.03);
+ background-image: none;
+}
+.navbar .nav > li:hover > ul{
+ top: auto;
+ opacity: 1;
}
-.sidebar .widget_shopping_cart .buttons a:hover, .product-name a {
- text-decoration: none;
+/*
+ Shortcode components
+*/
+
+/* some silly fix to remove a smiley face image created by a stats plugin */
+img#wpstats{display:none}
+.popover-content{
+ font-size: 14px;
+ line-height: 20px;
+}
+/* related posts */
+#related-posts{
+ padding: 25px;
+ margin-top:25px;
+ position: relative;
+}
+#related-posts > h3{
+ text-align:center;
+ margin-top:0;
+}
+#related-posts .box{
+ width:100%;
+ height: 70px;
+ border-radius:2px;
+}
+#related-posts a{
+ position: relative;
+ top: 0;
+ height: 100px;
+ width: 100%
+}
+#related-posts a, #related-posts a > span, #related-posts a > .bgimage, #related-posts a > .tab_icon, #related-posts a > .bgfallback{
+ left: 25px;
+ z-index: 1;
}
-.woocommerce .quantity, .woocommerce-page .quantity {
- height: 30px;
+#related-posts a > .bgfallback{
+ background-color:#ffffff;
+ position: absolute;
+ top: 50%;
+ width: 88px;
+ height: 88px;
+ margin: -44px 0 0 -44px;
+ border-radius: 500px;
+}
+#related-posts a > span{
+ width: 46px;
+ height: 46px;
+ display: block;
+ -moz-border-radius: 23px;
+ -webkit-border-radius: 23px;
+ border-radius: 23px;
+ cursor: pointer;
+ opacity: 0.9;
+ position: absolute;
+ top: 50%;
+ background-size: 17px 25px;
+ margin: -23px 0 0 -23px;
+ -webkit-transition: all 0.4s ease;
+ -moz-transition: all 0.4s ease;
+ -o-transition: all 0.4s ease;
+ -ms-transition: all 0.4s ease;
+ transition: all 0.4s ease;
+}
+#related-posts a:hover > span{
+ width: 100px;
+ height: 100px;
+ -moz-border-radius: 50px;
+ -webkit-border-radius: 50px;
+ border-radius: 50px;
+ /*opacity: 0;*/
+ margin: -50px 0 0 -50px;
+ background-size: 22px 32px;
+ background-color:#a8872d;
+}
+#related-posts a > .bgimage{
+ width: 0px;
+ height: 0px;
+ position: absolute;
+ top: 50%;
+ overflow: hidden;
+ background-size: 100% 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+ margin: 0px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+}
+#related-posts a:hover > .bgimage{
+ width: 90px;
+ height: 90px;
+ background-size: 120% 120%;
+ margin: -45px 0 0 -45px;
+ -moz-border-radius: 500px;
+ -webkit-border-radius: 500px;
+ border-radius: 500px;
+}
+#related-posts a > .tab_icon{
+ width: 90px;
+ height: 90px;
+ position: absolute;
+ top: 50%;
+ overflow: hidden;
+ background-size: 100% 100%;
+ background-position: center center;
+ background-repeat: no-repeat;
+ margin: -45px 0 0 -45px;
+ border-radius: 500px;
+ -webkit-transition: all 0.2s ease-out;
+ -moz-transition: all 0.2s ease-out;
+ -o-transition: all 0.2s ease-out;
+ -ms-transition: all 0.2s ease-out;
+ transition: all 0.2s ease-out;
+}
+#related-posts a:hover > .tab_icon{
+ width: 0px;
+ height: 0px;
+ margin: 0;
}
-.type-woocommerce .summary .single_add_to_cart_button {
- padding-top: 7px;
- padding-bottom: 7px;
+#related-posts a > .tab_icon i{
+ width: 100%;
+ height: 100%;
+ padding-top:3px;
+ font-size:35px;
}
-div.product .woocommerce_tabs ul.tabs, .woocommerce div.product .woocommerce-tabs ul.tabs {
- margin-bottom: 0!important;
- padding-left: 15px!important;
+#related-posts a:hover > .tab_icon i{
+ padding-bottom:20px;
}
-div.product .woocommerce_tabs .panel, div.product .woocommerce-tabs .panel {
- margin-bottom: 0px;
- margin-top: -1px;
- border: 1px solid rgb(221, 221, 221);
- border-top: 0;
- padding: 14px 23px!important;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- background-color: rgb(255, 255, 255);
+#related-posts a h5{
+ display: block;
+ height: auto;
+ overflow: hidden;
+ padding: 15px 15px 0 85px;
+ margin-bottom:0;
+ position: relative;
+ white-space: nowrap;
+ width: 95%;
}
-div.product .woocommerce_tabs .panel h2, div.product .woocommerce-tabs .panel h2 {
- margin-top: 0;
+#related-posts a p{
+ color:#CCCCCC;
+ display: block;
+ height: auto;
+ overflow: hidden;
+ padding: 0 0 0 85px;
+ margin-bottom: 5px;
+ position: relative;
+ white-space: nowrap;
+ width: 90%;
}
-table.shop_table td.product-quantity {
- text-align: left;
+#related-posts > p{
+ display: none;
}
-table.shop_table td {
- padding: 12px;
+
+/*#related-posts .box{
+ margin-top: 30px;
}
-.cart .button, .cart input.button {
- padding: 7px 12px;
+#related-posts .box.related-video iframe, #related-posts .box.related-video iframe{
+ width: 100%;
}
-td.product-quantity .quantity {
- margin: 0;
+#related-posts .box.related-quote{
+ border-top: 3px solid #85A9B3;
}
-table.shop_table td.product-remove {
- max-width: 0px;
+#related-posts .box.related-image{
+ border-top: 3px solid #B0CB7A;
+}
+#related-posts .box.related-gallery{
+ border-top: 3px solid #00ACED;
+}
+#related-posts .box.related-standard{
+ border-top: 3px solid #F69087;
+}
+#related-posts .box.related-video{
+ border-top: 3px solid #85CCB1;
+}
+#related-posts .box.related-audio{
+ border-top: 3px solid #EF7336;
}
-.woocommerce table.cart a.remove, .woocommerce-page table.cart a.remove, .woocommerce #content table.cart a.remove, .woocommerce-page #content table.cart a.remove
-table.cart .product-thumbnail, #content table.cart .product-thumbnail {
- line-height: 18px;
+#related-posts .box.related-link{
+ border-top: 3px solid #9664B5;
}
-table.cart img, #content table.cart img {
- width: 100%;
+.related-content a {
+ color: #717171;
+ font-weight: normal;
+ display: block;
+ word-wrap: break-word;
}
-table.cart td.actions .coupon .input-text, #content table.cart td.actions .coupon .input-text {
- width: 160px;
- margin-right: 10px;
+#related-posts .related-image img{
+ height: 150px;
+ width: 194px;
}
-.woocommerce-page form .form-row input.input-text, .woocommerce-page form .form-row textarea {
- padding: 14px 6px;
+#related-posts .related-content{
+ padding: 10px;
+ position: relative;
}
-#payment ul.payment_methods {
- padding-left: 0;
- padding-right: 0;
+#related-posts .related-content h4{
+ margin: 0 0 5px;
}
-#payment div.form-row {
- padding: 1em 0;
+.related-content > p {
+ font-size: 12px;
+ line-height: 18px;
+ margin: 0;
}
-.checkout #shiptobilling {
- margin: 10px 0;
+#related-posts .related-header{
+ height: 150px;
}
-form .form-row .input-checkbox {
- display: inline-block;
- margin: -1px 0 0 0;
+#related-posts .related-footer{
+ background: #FCFCFC;
+ border-top: 1px solid #ddd;
+ font-size: 11px;
+ color: #777;
+ padding: 5px 10px;
+}*/
+
+/* Recent Posts */
+#recent-posts{
+ list-style: none;
+ margin: 0;
}
-#shiptobilling .checkbox {
- padding-left: 0;
+#recent-posts li{
+ padding: 15px 0;
+ min-height: 85px;
+ border-bottom: 1px solid #f4f4f4;
}
-#shipping_method input {
- float: right;
+.recent-content{
+ min-height: 70px;
}
-#shipping_method label {
- white-space: nowrap;
- margin-right: 20px;
- padding-top: 2px;
+.recent-icon{
+ float: left;
+ margin-right: 15px;
}
-.woocommerce-page form .form-row input.input-text{
- padding: 2px 6px;
- height: 30px;
+.recent-content h4,.recent-content p{
+ margin: 5px 0;
}
-.woocommerce-page form .form-row textarea{
- padding:2px 6px;
+/* Pagelinks */
+.page-links{
+ margin-top: 20px;
}
-#product-display-area {
- clear: both;
- margin-bottom: 30px;
+.page-links > a, .page-links > span{
+ padding: 8px 20px 10px;
+ margin-right: 2px;
}
-.woocommerce div.product form.cart .variations td.label {
- padding: 5px 10px 0!important;
- margin: 1px 10px 0 0;
- width: 90%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- -ms-box-sizing: border-box;
- box-sizing: border-box;
- text-align: center;
+.page-links > a{
+ color: #fff!important;
}
-.woocommerce .related ul.products li.product, .woocommerce .related ul li.product, .woocommerce .upsells.products ul.products li.product, .woocommerce .upsells.products ul li.product, .woocommerce-page .related ul.products li.product, .woocommerce-page .related ul li.product, .woocommerce-page .upsells.products ul.products li.product, .woocommerce-page .upsells.products ul li.product {
- width: 22%!important;
+.page-links > span{
+ background: #F6968E;
+ color: #fff!important;
}
-
-/* #Style Switcher
-================================================== */
-
-.style-switcher {
- position: fixed;
- top: 80px;
- left: -240px;
- -webkit-border-radius: 0 0 3px 0;
- -moz-border-radius: 0 0 3px 0;
- border-radius: 0 0 3px 0;
- z-index: 9997;
- width: 290px;
-}
-.style-switcher h4 {
- background: #fff;
- font-size: 14px;
- font-weight: bold;
- text-transform: uppercase;
- padding: 7px 15px;
- margin-bottom: 0;
- line-height: 28px;
- height: 28px;
- width: 254px;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
-}
-.switch-button {
- width: 19px;
- float: right;
- font-size: 26px;
- line-height: 28px;
- text-align: center;
- text-decoration: none;
- display: block;
-}
-.switch-button:hover {
- cursor: pointer;
- text-decoration: none;
-}
-.switch-cont {
- width: 240px;
- background: #222222;
- height: auto;
- padding: 10px 0;
-}
-.switch-cont h5 {
- color: #fff;
- font-size: 12px;
- font-weight: normal;
- margin-left: 20px;
- margin-bottom: 15px;
-}
-.switch-cont .ad-select h5 {
- margin-left: 0;
- margin-bottom: 10px;
- text-align: left;
-}
-.options {
- margin-bottom: 15px;
- height: auto;
- overflow: hidden;
- padding: 0 15px 20px;
- border-bottom: 1px solid #444;
-}
-.options li {
- float: left;
- display: inline;
- width: 50%;
- margin-bottom: 0;
- text-align: center;
-}
-.options.bg-select {
- margin-bottom: 10px;
-}
-.options.bg-select li {
- width: 37px;
- margin-right: 5px;
- margin-bottom: 5px;
-}
-.bg-select li img {
- display: block;
- width: 27px;
- height: 27px;
- border: 1px solid #333
-}
-.options li a {
- text-decoration: none;
- color: #fff;
- padding: 4px;
- display: block;
-}
-.options li a:hover {
- background-color: #333;
-}
-.options li.selected a {
- background-color: #8dc63f;
-}
-.options select {
- width: 100%;
- font-size: 12px;
- height: 26px;
- margin-bottom: 0;
-}
-.options select:focus {
- outline: none;
-}
-.layout-select li {
- width: auto;
-}
-.layout-select li:first-child {
- margin-right: 10px;
-}
-.layout-select li img {
- width: 92px;
- display: block;
-}
-.switch-cont a.many-more {
- color: #fff;
- font-weight: bold;
- font-size: 12px;
- text-decoration: none;
- padding: 8px 0;
- margin: 0 20px;
- display: block;
- text-align: center;
-}
-.many-more:hover {
- background-color: #333;
+/* disquss css fix */
+#disqus_thread {
+ background: #fff;
+ border-radius: 2px;
+ margin-top: 30px;
+ padding: 25px;
+ border-top: 3px solid #F69087;
}
-@media only screen and (max-width: 1024px) {
- .style-switcher {
- display: none;
- }
+/* Notification */
+.bl_alert {
+ background: #FFFFE1;
+ padding: 20px 0;
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ z-index: 1000;
+ border-top: 1px solid #ddd;
+ display: none;
+ top: 0;
+}
+.admin-bar .bl_alert {
+ top: 28px;
+}
+.bl_alert > h4 {
+ margin: 0;
}
-
-/* #Retina Styles
-================================================== */
-
/*
-* Swift Framework Retina Stylesheet v1.0
-* Retina Stylesheet for Retina Dislay Devices
-* Copyright 2013, Swift Ideas
-*/
-@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
+ Swiper Slider
- #logo img.standard, #mini-logo img.standard {
- display: none;
- }
- #logo img.retina, #mini-logo img.retina {
- display: block;
- }
- .mobile-nav > div {
- background-image: url('images/select@2x.png');
- background-size: 28px 26px;
- }
- ul.social-icons li a {
- background-image: url('images/social-icons@2x.png');
- background-size: 512px 32px;
- }
- ul.social-icons.small li a {
- background-image: url('images/social-icons-small@2x.png');
- background-size: 384px 24px;
- }
- ul.social-icons.dark li a {
- background-image: url('images/social-icons-mono@2x.png');
- }
- ul.social-icons.dark.small li a {
- background-image: url('images/social-icons-mono-small@2x.png');
- }
- ul.social-icons.light li a {
- background-image: url('images/social-icons-mono-light@2x.png');
- }
- ul.social-icons.light.small li a {
- background-image: url('images/social-icons-mono-light-small@2x.png');
- }
- #respond .form-submit input, .wpcf7 input.wpcf7-submit[type="submit"], a.sf-button .arrow {
- background-image: url('images/button-arrow@2x.png');
- background-repeat: no-repeat;
- background-size: 6px 9px;
- }
- a.sf-button.lightgrey .arrow, a.sf-button.green .arrow, a.sf-button.limegreen .arrow, a.sf-button.white .arrow {
- background-image: url('images/button-arrow2@2x.png');
- background-repeat: no-repeat;
- background-size: 6px 9px;
- }
- .widget.flickr-widget li, .portfolio-grid li {
- background-image: url('images/plus-icon@2x.png');
- background-size: 13px 13px;
- }
- .flex-direction-nav a, .wooslider-direction-nav a, .tp-leftarrow, .tp-leftarrow.large, .tp-leftarrow.square, .tp-leftarrow.round, .tp-rightarrow, .tp-rightarrow.large, .tp-rightarrow.square, .tp-rightarrow.round, .thumb-slider .flex-direction-nav a, .rev_slider_wrapper > .tp-leftarrow, .rev_slider_wrapper > .tp-leftarrow.large, .rev_slider_wrapper > .tp-leftarrow.square, .rev_slider_wrapper > .tp-leftarrow.round, .rev_slider_wrapper > .tp-leftarrow.default, .rev_slider_wrapper > .tp-rightarrow, .rev_slider_wrapper > .tp-rightarrow.large, .rev_slider_wrapper > .tp-rightarrow.square, .rev_slider_wrapper > .tp-rightarrow.round, .rev_slider_wrapper > .tp-rightarrow.default {
- background-image: url('images/showcase-nav@2x.png');
- background-size: 72px 36px;
- }
- .list-add_bw li {
- background-image: url('images/list-icons/add_b&w@2x.png');
- background-size: 10px 11px;
- }
- .list-add li {
- background-image: url('images/list-icons/add_colour@2x.png');
- background-size: 10px 11px;
- }
- .list-arrow_bw li {
- background-image: url('images/list-icons/arrow_b&w@2x.png');
- background-size: 13px 11px;
- }
- .list-arrow li {
- background-image: url('images/list-icons/arrow_colour@2x.png');
- background-size: 13px 11px;
- }
- .list-article li {
- background-image: url('images/list-icons/article_b&w@2x.png');
- background-size: 13px 11px;
- }
- .list-bar li {
- background-image: url('images/list-icons/bar_b&w@2x.png');
- background-size: 11px 4px;
- }
- .list-bolt_bw li {
- background-image: url('images/list-icons/bolt_b&w@2x.png');
- background-size: 9px 12px;
- }
- .list-bolt li {
- background-image: url('images/list-icons/bolt_colour@2x.png');
- background-size: 9px 12px;
- }
- .list-date li {
- background-image: url('images/list-icons/date_b&w@2x.png');
- background-size: 11px 13px;
- }
- .list-delete_bw li {
- background-image: url('images/list-icons/delete_b&w@2x.png');
- background-size: 10px 10px;
- }
- .list-delete li {
- background-image: url('images/list-icons/delete_colour@2x.png');
- background-size: 10px 10px;
- }
- .list-dot li {
- background-image: url('images/list-icons/dot_b&w@2x.png');
- background-size: 7px 7px;
- }
- .list-like_bw li {
- background-image: url('images/list-icons/like_b&w@2x.png');
- background-size: 12px 11px;
- }
- .list-like li {
- background-image: url('images/list-icons/like_colour@2x.png');
- background-size: 12px 11px;
- }
- .list-pen li {
- background-image: url('images/list-icons/pen_b&w@2x.png');
- background-size: 12px 12px;
- }
- .list-question_bw li {
- background-image: url('images/list-icons/questionMark_b&w@2x.png');
- background-size: 12px 12px;
- }
- .list-question li {
- background-image: url('images/list-icons/questionMark_colour@2x.png');
- background-size: 12px 12px;
- }
- .list-settings_bw li {
- background-image: url('images/list-icons/settings_b&w@2x.png');
- background-size: 12px 12px;
- }
- .list-settings li {
- background-image: url('images/list-icons/settings_colour@2x.png');
- background-size: 12px 12px;
- }
- .list-star_bw li {
- background-image: url('images/list-icons/star_b&w@2x.png');
- background-size: 12px 12px;
- }
- .list-star li {
- background-image: url('images/list-icons/star_colour@2x.png');
- background-size: 12px 12px;
- }
- .list-tick_bw li {
- background-image: url('images/list-icons/tick_b&w@2x.png');
- background-size: 12px 9px;
- }
- .list-tick li {
- background-image: url('images/list-icons/tick_colour@2x.png');
- background-size: 12px 9px;
- }
- .list-user li {
- background-image: url('images/list-icons/user_b&w@2x.png');
- background-size: 12px 11px;
- }
- .list-warning_bw li {
- background-image: url('images/list-icons/warning_b&w@2x.png');
- background-size: 12px 11px;
- }
- .list-warning li {
- background-image: url('images/list-icons/warning_colour@2x.png');
- background-size: 12px 11px;
- }
- .widget_calendar tbody tr > td.pad {
- background-image: url('images/scanlines_dark@2x.png');
- background-size: 4px 4px;
- }
-}
-
-/* #Mobile Styles
-================================================== */
-
-.mobile-browser figure:hover .overlay .thumb-info, .wpb_single_image.span12 figure:hover .overlay .thumb-info {
- opacity: 0!important;
- -moz-opacity: 0!important;
- filter:alpha(opacity=0)!important;
-}
-.mobile-browser figure:hover > a > .overlay, .wpb_single_image.span12 figure:hover > a > .overlay {
- opacity: 0!important;
- -moz-opacity: 0!important;
- filter:alpha(opacity=0)!important;
-}
-.mobile-browser figure:hover .overlay, .wpb_single_image.span12 figure:hover .overlay {
- box-shadow: none!important;
-}
-.mobile-browser .recent-post figure:hover img, .mobile-browser .portfolio-items > li figure:hover img {
- -moz-transform: scale(1);
- -webkit-transform: scale(1);
- -o-transform: scale(1);
- -ms-transform: scale(1);
- transform: scale(1);
-}
\ No newline at end of file
+*/
+.swiper-container{margin:0 auto;position:relative;overflow:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-wrapper{width:100%;-webkit-transition-property:-webkit-transform,left,top;-webkit-transition-duration:0s;-webkit-transform:translate3d(0px,0,0);-webkit-transition-timing-function:ease;-moz-transition-property:-moz-transform,left,top;-moz-transition-duration:0s;-moz-transform:translate3d(0px,0,0);-moz-transition-timing-function:ease;-o-transition-property:-o-transform,left,top;-o-transition-duration:0s;-o-transition-timing-function:ease;-o-transform:translate(0px,0);-ms-transition-property:-ms-transform,left,top;-ms-transition-duration:0s;-ms-transform:translate3d(0px,0,0);-ms-transition-timing-function:ease;transition-property:transform,left,top;transition-duration:0s;transform:translate3d(0px,0,0);transition-timing-function:ease}.swiper-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{float:left}.swiper-wp8-horizontal{-ms-touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x}.swiper-container{width:100%;color:#fff;text-align:center}.swiper-gallery{opacity:0;-webkit-transition:opacity .35s ease-out;-moz-transition:opacity .35s ease-out;-ms-transition:opacity .35s ease-out;-o-transition:opacity .35s ease-out;transition:opacity .35s ease-out}.swiper-gallery.swiper-container{margin-bottom:0}.swiper-gallery .swiper-wrapper{position:relative}.swiper-gallery .swiper-wrapper img{width:100%}.swiper-container .arrow-left{position:absolute;left:10px;top:50%;margin-top:-150px;width:35px;height:300px;z-index:10000}.swiper-container .arrow-left:before{content:'\e845';font-family:fontello;font-size:40px;color:#FFF;position:absolute;top:50%;left:-40px;margin-top:-20px;-webkit-transition:left .15s ease-out;-moz-transition:left .15s ease-out;-ms-transition:left .15s ease-out;-o-transition:left .15s ease-out;transition:left .15s ease-out}.swiper-container:hover .arrow-left:before{left:10px}.swiper-container .arrow-right{position:absolute;right:10px;top:50%;margin-top:-150px;width:35px;height:300px;z-index:10000}.swiper-container .arrow-right:before{content:'\e846';font-family:fontello;font-size:40px;color:#FFF;position:absolute;top:50%;right:-40px;margin-top:-20px;-webkit-transition:right .15s ease-out;-moz-transition:right .15s ease-out;-ms-transition:right .15s ease-out;-o-transition:right .15s ease-out;transition:right .15s ease-out}.swiper-container:hover .arrow-right:before{right:10px}.entry-content .swiper-gallery .arrow-left{left:30px}.entry-content .swiper-gallery .arrow-right{right:30px}.entry-content .swiper-pagination{left:30px}.swiper-slide{height:100%;position:relative}.swiper-slide .swipe-small>div{border-color:#FFF;border-style:solid}.swiper-wrapper{position:absolute;top:0}.swiper-slide>div{height:100%}.swiper-slide .swiper-content{height:100%;background-repeat:no-repeat;background-size:cover;background-position:center center}.swiper-content.no-image{background:none repeat scroll 0 0 #777}.swiper-text{position:relative;z-index:2;text-align:center;width:100%;display:table;padding:0 30px;height:100%}.swiper-text>div{display:table-cell;text-align:center;vertical-align:middle;position:relative;z-index:2}.swiper-text:after{background:none repeat scroll 0 0 #000;content:"";height:100%;left:0;opacity:.15;position:absolute;top:0;width:100%;-webkit-transition:opacity .15s ease-out;-moz-transition:opacity .15s ease-out;-ms-transition:opacity .15s ease-out;-o-transition:opacity .15s ease-out;transition:opacity .15s ease-out}.ie8 .swiper-text:after{display:none!important}.swiper-text:hover:after{opacity:.3}.swiper-pagination{position:absolute;z-index:20;left:10px;bottom:10px}.swiper-pagination-switch{display:inline-block;width:8px;height:8px;-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px;background:#222;margin-right:5px;-ms-filter:"alpha(Opacity=80)";opacity:.8;border:1px solid #fff;cursor:pointer}.swiper-visible-switch{background:#aaa}.swiper-active-switch{background:#fff}.swiper-container:hover{cursor:url(https://mail.google.com/mail/images/2/openhand.cur),default!important}.swiper-container.active,.swiper-container.active .swiper-wrapper .swiper-slide a{cursor:url(https://mail.google.com/mail/images/2/closedhand.cur),default!important}.swiper-content .entry-title,.swiper-content .title-category{color:#FFF;margin-bottom:0;margin-top:0;text-shadow:1px 1px 1px rgba(0,0,0,.2)}.swiper-content.swiper-small .entry-title{font-size:25px}.swiper-content .title-category{font-size:20px;text-transform:uppercase}.swiper-content .entry-title a{color:#FFF}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/AppModule.java b/app/src/main/java/it/cosenonjaviste/AppModule.java
deleted file mode 100644
index 7c9bdac..0000000
--- a/app/src/main/java/it/cosenonjaviste/AppModule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package it.cosenonjaviste;
-
-import android.app.Application;
-
-import com.google.gson.Gson;
-
-import javax.inject.Singleton;
-
-import dagger.Module;
-import dagger.Provides;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.model.WordPressService;
-import retrofit.RestAdapter;
-import retrofit.converter.GsonConverter;
-
-@Module(includes = BaseModule.class)
-public class AppModule {
-
- private Application application;
-
- public AppModule(Application application) {
- this.application = application;
- }
-
- @Provides @Singleton WordPressService provideGitHubService(Gson gson) {
- RestAdapter restAdapter = new RestAdapter.Builder()
- .setEndpoint("http://www.cosenonjaviste.it/")
- //http calls are executed in background thread using SchedulerManager
- .setExecutors(Runnable::run, null)
- .setConverter(new GsonConverter(gson))
- .build();
- if (BuildConfig.DEBUG) {
- restAdapter.setLogLevel(RestAdapter.LogLevel.FULL);
- }
- return restAdapter.create(WordPressService.class);
- }
-
- @Provides TwitterService provideTwitterService() {
- return new TwitterService();
- }
-
- @Provides @Singleton SchedulerManager provideSchedulerManager() {
- return new SchedulerManager();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/ApplicationComponent.java b/app/src/main/java/it/cosenonjaviste/ApplicationComponent.java
deleted file mode 100644
index 50be71d..0000000
--- a/app/src/main/java/it/cosenonjaviste/ApplicationComponent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package it.cosenonjaviste;
-
-import javax.inject.Singleton;
-
-import dagger.Component;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.page.PageUrlManager;
-
-@Singleton
-@Component(modules = {AppModule.class})
-public interface ApplicationComponent {
-
- void inject(MainActivity activity);
-
- SchedulerManager providesSchedulerManager();
-
- WordPressService providesWordPressService();
-
- PageUrlManager providesPageUrlManager();
-
- TwitterService providesTwitterService();
-}
diff --git a/app/src/main/java/it/cosenonjaviste/BaseModule.java b/app/src/main/java/it/cosenonjaviste/BaseModule.java
deleted file mode 100644
index e226261..0000000
--- a/app/src/main/java/it/cosenonjaviste/BaseModule.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package it.cosenonjaviste;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import javax.inject.Singleton;
-
-import dagger.Module;
-import dagger.Provides;
-
-@Module
-public class BaseModule {
- @Provides @Singleton Gson provideGson() {
- return new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/CnjFragment.java b/app/src/main/java/it/cosenonjaviste/CnjFragment.java
deleted file mode 100644
index edfd515..0000000
--- a/app/src/main/java/it/cosenonjaviste/CnjFragment.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package it.cosenonjaviste;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.parceler.Parcels;
-
-import butterknife.ButterKnife;
-import it.cosenonjaviste.lib.mvp.MvpFragment;
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.utils.SingleFragmentActivity;
-
-public abstract class CnjFragment, M> extends MvpFragment
{
-
- protected ApplicationComponent getComponent() {
- return ((CoseNonJavisteApp) getActivity().getApplication()).getComponent();
- }
-
- @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(getLayoutId(), container, false);
- initView(view);
- return view;
- }
-
- protected void initView(View view) {
- ButterKnife.inject(this, view);
- }
-
- protected abstract int getLayoutId();
-
- @Override public void open(Class extends MvpView> viewClass, MM model) {
- Intent intent = SingleFragmentActivity.createIntent(getActivity(), viewClass);
- intent.putExtra(MODEL, Parcels.wrap(model));
- getActivity().startActivity(intent);
- }
-
- public static T createView(@NonNull Context context, @NonNull Class extends MvpView> viewClass, @NonNull M model) {
- Fragment fragment = Fragment.instantiate(context, viewClass.getName());
- Bundle bundle = new Bundle();
- bundle.putParcelable(MODEL, Parcels.wrap(model));
- fragment.setArguments(bundle);
- return (T) fragment;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/CoseNonJavisteApp.java b/app/src/main/java/it/cosenonjaviste/CoseNonJavisteApp.java
deleted file mode 100644
index 237b07d..0000000
--- a/app/src/main/java/it/cosenonjaviste/CoseNonJavisteApp.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package it.cosenonjaviste;
-
-import android.app.Application;
-
-public class CoseNonJavisteApp extends Application {
-
- public static ApplicationComponent component;
-
- @Override public void onCreate() {
- super.onCreate();
- component = DaggerApplicationComponent.builder()
- .appModule(new AppModule(this))
- .build();
- }
-
- public ApplicationComponent getComponent() {
- return component;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/Dagger2CnjFragment.java b/app/src/main/java/it/cosenonjaviste/Dagger2CnjFragment.java
deleted file mode 100644
index ee48677..0000000
--- a/app/src/main/java/it/cosenonjaviste/Dagger2CnjFragment.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package it.cosenonjaviste;
-
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.parceler.Parcels;
-
-import butterknife.ButterKnife;
-import it.cosenonjaviste.lib.mvp.Dagger2MvpFragment;
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.utils.SingleFragmentActivity;
-
-public abstract class Dagger2CnjFragment extends Dagger2MvpFragment {
-
- private MvpPresenter presenter;
-
- @Override public final MvpPresenter getPresenter() {
- return presenter;
- }
-
- protected ApplicationComponent getComponent() {
- return ((CoseNonJavisteApp) getActivity().getApplication()).getComponent();
- }
-
- @Override public void onCreate(Bundle state) {
- presenter = injectAndCreatePresenter();
- super.onCreate(state);
- }
-
- protected abstract MvpPresenter injectAndCreatePresenter();
-
- @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- View view = inflater.inflate(getLayoutId(), container, false);
- initView(view);
- return view;
- }
-
- protected void initView(View view) {
- ButterKnife.inject(this, view);
- }
-
- protected abstract int getLayoutId();
-
- @Override public void open(Class extends MvpView> viewClass, MM model) {
- Intent intent = SingleFragmentActivity.createIntent(getActivity(), viewClass);
- intent.putExtra(MODEL, Parcels.wrap(model));
- getActivity().startActivity(intent);
- }
-
- public static T createView(@NonNull Context context, @NonNull Class extends MvpView> viewClass, @NonNull M model) {
- Fragment fragment = Fragment.instantiate(context, viewClass.getName());
- Bundle bundle = new Bundle();
- bundle.putParcelable(MODEL, Parcels.wrap(model));
- fragment.setArguments(bundle);
- return (T) fragment;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/MainActivity.java b/app/src/main/java/it/cosenonjaviste/MainActivity.java
deleted file mode 100755
index e85f3b0..0000000
--- a/app/src/main/java/it/cosenonjaviste/MainActivity.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package it.cosenonjaviste;
-
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.view.GravityCompat;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v7.app.ActionBarActivity;
-import android.support.v7.app.ActionBarDrawerToggle;
-import android.support.v7.widget.Toolbar;
-import android.view.View;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-import butterknife.ButterKnife;
-import butterknife.InjectView;
-import it.cosenonjaviste.author.AuthorListFragment;
-import it.cosenonjaviste.author.AuthorListModel;
-import it.cosenonjaviste.category.CategoryListFragment;
-import it.cosenonjaviste.category.CategoryListModel;
-import it.cosenonjaviste.page.PageFragment;
-import it.cosenonjaviste.page.PageModel;
-import it.cosenonjaviste.post.PostListFragment;
-import it.cosenonjaviste.post.PostListModel;
-import it.cosenonjaviste.twitter.TweetListFragment;
-import it.cosenonjaviste.twitter.TweetListModel;
-
-public class MainActivity extends ActionBarActivity {
- @InjectView(R.id.drawer_layout) DrawerLayout mDrawerLayout;
- @InjectView(R.id.left_drawer_menu) View mDrawerMenu;
- @InjectView(R.id.left_drawer) ListView mDrawerList;
- private ActionBarDrawerToggle mDrawerToggle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ((CoseNonJavisteApp) getApplication()).getComponent().inject(this);
-
- setContentView(R.layout.activity_main);
-
- ButterKnife.inject(this);
-
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- String[] menuItems = getResources().getStringArray(R.array.menu_items);
-
- mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
- mDrawerList.setAdapter(new ArrayAdapter<>(this, R.layout.drawer_list_item, menuItems));
- mDrawerList.setOnItemClickListener((parent, view, position, id) -> selectItem(position));
-
- mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
- public void onDrawerClosed(View view) {
- invalidateOptionsMenu();
- }
-
- public void onDrawerOpened(View drawerView) {
- invalidateOptionsMenu();
- }
- };
- mDrawerLayout.setDrawerListener(mDrawerToggle);
-
- if (savedInstanceState == null) {
- selectItem(0);
- }
- }
-
- private void selectItem(int position) {
- String tag = "fragment_" + position;
- Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
-
- if (fragment == null) {
- fragment = createFragment(position);
- }
-
- getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, tag).commit();
-
- // update selected item and title, then close the drawer
- mDrawerList.setItemChecked(position, true);
- mDrawerLayout.closeDrawer(mDrawerMenu);
- }
-
- private Fragment createFragment(int position) {
- //TODO activity title
- switch (position) {
- case 1:
- return CnjFragment.createView(this, CategoryListFragment.class, new CategoryListModel());
- case 2:
- return CnjFragment.createView(this, AuthorListFragment.class, new AuthorListModel());
- case 3:
- return CnjFragment.createView(this, TweetListFragment.class, new TweetListModel());
- case 4:
- return CnjFragment.createView(this, PageFragment.class, new PageModel("http://www.cosenonjaviste.it/contatti/"));
- default:
- return CnjFragment.createView(this, PostListFragment.class, new PostListModel());
- }
- }
-
- @Override
- protected void onPostCreate(Bundle savedInstanceState) {
- super.onPostCreate(savedInstanceState);
- mDrawerToggle.syncState();
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- mDrawerToggle.onConfigurationChanged(newConfig);
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/ObjectsMapRetainedFragment.java b/app/src/main/java/it/cosenonjaviste/ObjectsMapRetainedFragment.java
deleted file mode 100644
index a9d11e2..0000000
--- a/app/src/main/java/it/cosenonjaviste/ObjectsMapRetainedFragment.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package it.cosenonjaviste;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import rx.functions.Func0;
-
-public class ObjectsMapRetainedFragment extends Fragment {
-
- private static final String TAG = ObjectsMapRetainedFragment.class.getName();
-
- private Map map = new HashMap<>();
-
- public ObjectsMapRetainedFragment() {
- setRetainInstance(true);
- }
-
- public static void save(FragmentManager fragmentManager, String key, Object obj) {
- ObjectsMapRetainedFragment fragment = getSaverFragment(fragmentManager);
- fragment.map.put(key, obj);
- }
-
- private static ObjectsMapRetainedFragment getSaverFragment(FragmentManager fragmentManager) {
- ObjectsMapRetainedFragment fragment = (ObjectsMapRetainedFragment) fragmentManager.findFragmentByTag(TAG);
- if (fragment == null) {
- fragment = new ObjectsMapRetainedFragment();
- fragmentManager.beginTransaction().add(fragment, TAG).commit();
- }
- return fragment;
- }
-
- public static P load(FragmentManager fragmentManager, String key) {
- if (key != null) {
- ObjectsMapRetainedFragment fragment = getSaverFragment(fragmentManager);
- return (P) fragment.map.get(key);
- } else {
- return null;
- }
- }
-
- public static C getOrCreate(FragmentManager fragmentManager, String key, Func0 componentFactory) {
- C component = ObjectsMapRetainedFragment.load(fragmentManager, key);
- if (component == null) {
- component = componentFactory.call();
- ObjectsMapRetainedFragment.save(fragmentManager, key, component);
- }
- return component;
- }
-
- @Override public void onDestroy() {
- super.onDestroy();
-// for (MvpPresenter> presenter : map.values()) {
-// presenter.destroy();
-// }
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/author/AuthorAdapter.java b/app/src/main/java/it/cosenonjaviste/author/AuthorAdapter.java
deleted file mode 100644
index 335a505..0000000
--- a/app/src/main/java/it/cosenonjaviste/author/AuthorAdapter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package it.cosenonjaviste.author;
-
-import android.content.Context;
-import android.text.Html;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.squareup.picasso.Picasso;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.ButterKnife;
-import butterknife.InjectView;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.model.Author;
-import it.cosenonjaviste.utils.CircleTransform;
-
-public class AuthorAdapter extends BaseAdapter {
-
- private List authors = new ArrayList<>();
-
- private Context context;
- private CircleTransform transformation;
-
- public AuthorAdapter(Context context) {
- this.context = context;
- transformation = CircleTransform.createWithBorder(context, R.dimen.author_image_size_big, R.color.colorPrimary, R.dimen.author_image_border);
- }
-
- @Override public int getCount() {
- return authors.size();
- }
-
- @Override public Author getItem(int position) {
- return authors.get(position);
- }
-
- @Override public long getItemId(int position) {
- return getItem(position).getId();
- }
-
- @Override public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(context).inflate(R.layout.author_cell, parent, false);
- RowWrapper rowWrapper = new RowWrapper();
- ButterKnife.inject(rowWrapper, convertView);
- convertView.setTag(rowWrapper);
- }
- RowWrapper rowWrapper = (RowWrapper) convertView.getTag();
- Author author = getItem(position);
- String description = author.getDescription();
- rowWrapper.title.setText(Html.fromHtml(description.replaceAll("^", "").replaceAll("$
", "")));
- rowWrapper.firstName.setText(author.getFirstName());
- rowWrapper.lastName.setText(author.getLastName());
- String imageUrl = author.getImageUrl();
- if (!TextUtils.isEmpty(imageUrl)) {
- Picasso.with(context).load(imageUrl).transform(transformation).into(rowWrapper.image);
- }
- return convertView;
- }
-
- public void reloadData(List posts) {
- this.authors = posts;
- notifyDataSetChanged();
- }
-
- static class RowWrapper {
- @InjectView(R.id.first_name) TextView firstName;
- @InjectView(R.id.last_name) TextView lastName;
- @InjectView(R.id.title) TextView title;
- @InjectView(R.id.author_image) ImageView image;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/author/AuthorListComponent.java b/app/src/main/java/it/cosenonjaviste/author/AuthorListComponent.java
deleted file mode 100644
index 0746dcb..0000000
--- a/app/src/main/java/it/cosenonjaviste/author/AuthorListComponent.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package it.cosenonjaviste.author;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-@Component(dependencies = ApplicationComponent.class)
-public interface AuthorListComponent {
- void inject(AuthorListFragment fragment);
-}
diff --git a/app/src/main/java/it/cosenonjaviste/author/AuthorListFragment.java b/app/src/main/java/it/cosenonjaviste/author/AuthorListFragment.java
deleted file mode 100644
index 19f8c20..0000000
--- a/app/src/main/java/it/cosenonjaviste/author/AuthorListFragment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package it.cosenonjaviste.author;
-
-import android.annotation.SuppressLint;
-import android.view.View;
-
-import com.quentindommerc.superlistview.SuperGridview;
-
-import javax.inject.Inject;
-
-import butterknife.InjectView;
-import butterknife.OnClick;
-import it.cosenonjaviste.Dagger2CnjFragment;
-import it.cosenonjaviste.ObjectsMapRetainedFragment;
-import it.cosenonjaviste.R;
-import rx.functions.Actions;
-
-public class AuthorListFragment extends Dagger2CnjFragment {
-
- @InjectView(R.id.grid) SuperGridview grid;
-
- @Inject AuthorListPresenter presenter;
-
- private AuthorAdapter adapter;
-
- @Override protected AuthorListPresenter injectAndCreatePresenter() {
- ObjectsMapRetainedFragment.getOrCreate(
- getChildFragmentManager(),
- AuthorListFragment.class.getName(),
- () -> DaggerAuthorListComponent.builder().applicationComponent(getComponent()).build()
- ).inject(this);
- return presenter;
- }
-
- @Override protected int getLayoutId() {
- return R.layout.super_grid;
- }
-
- @SuppressLint("ResourceAsColor") @Override protected void initView(View view) {
- super.initView(view);
- adapter = new AuthorAdapter(getActivity());
- grid.getList().setNumColumns(2);
- grid.setAdapter(adapter);
- grid.setOnItemClickListener((parent, v, position, id) -> presenter.goToAuthorDetail(position));
- }
-
- @OnClick(R.id.error_retry) void retry() {
- presenter.loadAuthors();
- }
-
- @Override public void update(AuthorListModel model) {
- model.call(authors -> {
- grid.showList();
- adapter.reloadData(authors);
- }).whenError(t -> grid.showError()).whenEmpty(Actions.empty());
- }
-
- public void startLoading() {
- grid.showProgress();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/author/AuthorListModel.java b/app/src/main/java/it/cosenonjaviste/author/AuthorListModel.java
deleted file mode 100644
index 660542a..0000000
--- a/app/src/main/java/it/cosenonjaviste/author/AuthorListModel.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package it.cosenonjaviste.author;
-
-import org.parceler.Parcel;
-
-import java.util.List;
-
-import it.cosenonjaviste.lib.mvp.utils.OptionalItem;
-import it.cosenonjaviste.lib.mvp.utils.OptionalList;
-import it.cosenonjaviste.model.Author;
-import rx.functions.Action1;
-
-@Parcel
-public class AuthorListModel {
- OptionalList items = new OptionalList<>();
-
- public boolean isEmpty() {
- return items.isEmpty();
- }
-
- public int size() {
- return items.size();
- }
-
- public Author get(int index) {
- return items.get(index);
- }
-
- public void done(List object) {
- items.done(object);
- }
-
- public void error(Throwable throwable) {
- items.error(throwable);
- }
-
- public OptionalItem> call(Action1> action) {
- return items.call(action);
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/author/AuthorListPresenter.java b/app/src/main/java/it/cosenonjaviste/author/AuthorListPresenter.java
deleted file mode 100644
index 1dab7a1..0000000
--- a/app/src/main/java/it/cosenonjaviste/author/AuthorListPresenter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package it.cosenonjaviste.author;
-
-import java.util.Collections;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.lib.mvp.RxMvpPresenter;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.Author;
-import it.cosenonjaviste.model.AuthorResponse;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.post.PostListFragment;
-import it.cosenonjaviste.post.PostListModel;
-import it.cosenonjaviste.utils.PresenterScope;
-import rx.Observable;
-
-@PresenterScope
-public class AuthorListPresenter extends RxMvpPresenter {
-
- private WordPressService wordPressService;
-
- private boolean loadStarted;
-
- @Inject public AuthorListPresenter(SchedulerManager schedulerManager, WordPressService wordPressService) {
- super(schedulerManager);
- this.wordPressService = wordPressService;
- }
-
- public void loadAuthors() {
- Observable> observable = wordPressService
- .listAuthors()
- .map(AuthorResponse::getAuthors)
- .doOnNext(Collections::sort);
-
- subscribe(observable,
- () -> {
- loadStarted = true;
- getView().startLoading();
- },
- posts -> {
- model.done(posts);
- view.update(model);
- }, throwable -> {
- model.error(throwable);
- view.update(model);
- });
- }
-
- @Override public void subscribe(MvpView view) {
- super.subscribe(view);
- if (model.isEmpty() && !loadStarted) {
- loadAuthors();
- }
- }
-
- public void goToAuthorDetail(int position) {
- Author author = model.get(position);
- getView().open(PostListFragment.class, new PostListModel(author));
- }
-
- @Override public AuthorListFragment getView() {
- return (AuthorListFragment) super.getView();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/category/CategoryAdapter.java b/app/src/main/java/it/cosenonjaviste/category/CategoryAdapter.java
deleted file mode 100644
index cdc3526..0000000
--- a/app/src/main/java/it/cosenonjaviste/category/CategoryAdapter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package it.cosenonjaviste.category;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.ButterKnife;
-import butterknife.InjectView;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.model.Category;
-
-public class CategoryAdapter extends BaseAdapter {
-
- private List categories = new ArrayList<>();
-
- private Context context;
-
- public CategoryAdapter(Context context) {
- this.context = context;
- }
-
- @Override public int getCount() {
- return categories.size();
- }
-
- @Override public Category getItem(int position) {
- return categories.get(position);
- }
-
- @Override public long getItemId(int position) {
- return getItem(position).getId();
- }
-
- @Override public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(context).inflate(R.layout.category_row, parent, false);
- RowWrapper rowWrapper = new RowWrapper();
- ButterKnife.inject(rowWrapper, convertView);
- convertView.setTag(rowWrapper);
- }
- RowWrapper rowWrapper = (RowWrapper) convertView.getTag();
- Category category = getItem(position);
- rowWrapper.title.setText(category.getTitle());
- rowWrapper.subtitle.setText(context.getString(R.string.post_count, category.getPostCount()));
- return convertView;
- }
-
- public void reloadData(List categories) {
- this.categories = categories;
- notifyDataSetChanged();
- }
-
- static class RowWrapper {
- @InjectView(R.id.category_name) TextView title;
- @InjectView(R.id.category_posts) TextView subtitle;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/category/CategoryListComponent.java b/app/src/main/java/it/cosenonjaviste/category/CategoryListComponent.java
deleted file mode 100644
index 390dbdb..0000000
--- a/app/src/main/java/it/cosenonjaviste/category/CategoryListComponent.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package it.cosenonjaviste.category;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-@Component(dependencies = ApplicationComponent.class)
-public interface CategoryListComponent {
- void inject(CategoryListFragment fragment);
-}
diff --git a/app/src/main/java/it/cosenonjaviste/category/CategoryListFragment.java b/app/src/main/java/it/cosenonjaviste/category/CategoryListFragment.java
deleted file mode 100644
index dc43bef..0000000
--- a/app/src/main/java/it/cosenonjaviste/category/CategoryListFragment.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package it.cosenonjaviste.category;
-
-import android.annotation.SuppressLint;
-import android.view.View;
-
-import com.quentindommerc.superlistview.SuperGridview;
-
-import javax.inject.Inject;
-
-import butterknife.InjectView;
-import butterknife.OnClick;
-import it.cosenonjaviste.Dagger2CnjFragment;
-import it.cosenonjaviste.ObjectsMapRetainedFragment;
-import it.cosenonjaviste.R;
-import rx.functions.Actions;
-
-public class CategoryListFragment extends Dagger2CnjFragment {
-
- @InjectView(R.id.grid) SuperGridview grid;
-
- private CategoryAdapter adapter;
-
- @Inject CategoryListPresenter presenter;
-
- @Override protected CategoryListPresenter injectAndCreatePresenter() {
- ObjectsMapRetainedFragment.getOrCreate(
- getChildFragmentManager(),
- CategoryListFragment.class.getName(),
- () -> DaggerCategoryListComponent.builder().applicationComponent(getComponent()).build()
- ).inject(this);
- return presenter;
- }
-
- @Override protected int getLayoutId() {
- return R.layout.super_grid;
- }
-
- @SuppressLint("ResourceAsColor") @Override protected void initView(View view) {
- super.initView(view);
- adapter = new CategoryAdapter(getActivity());
- grid.setAdapter(adapter);
- grid.getList().setNumColumns(2);
- grid.setRefreshingColor(android.R.color.holo_orange_light, android.R.color.holo_blue_light, android.R.color.holo_green_light, android.R.color.holo_red_light);
- grid.setOnItemClickListener((parent, v, position, id) -> presenter.goToPosts(position));
- }
-
- @OnClick(R.id.error_retry) void retry() {
- presenter.loadData();
- }
-
-
- @Override public void update(CategoryListModel model) {
- model.call(
- categories -> {
- grid.showList();
- adapter.reloadData(categories);
- }
- ).whenError(
- t -> grid.showError()
- ).whenEmpty(
- Actions.empty()
- );
- }
-
- public void startLoading() {
- grid.showProgress();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/category/CategoryListModel.java b/app/src/main/java/it/cosenonjaviste/category/CategoryListModel.java
deleted file mode 100644
index 5d2c5ce..0000000
--- a/app/src/main/java/it/cosenonjaviste/category/CategoryListModel.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package it.cosenonjaviste.category;
-
-import org.parceler.Parcel;
-
-import java.util.List;
-
-import it.cosenonjaviste.lib.mvp.utils.OptionalItem;
-import it.cosenonjaviste.lib.mvp.utils.OptionalList;
-import it.cosenonjaviste.model.Category;
-import rx.functions.Action1;
-
-@Parcel
-public class CategoryListModel {
- OptionalList items = new OptionalList<>();
-
- public boolean isEmpty() {
- return items.isEmpty();
- }
-
- public int size() {
- return items.size();
- }
-
- public Category get(int index) {
- return items.get(index);
- }
-
- public void done(List object) {
- items.done(object);
- }
-
- public void error(Throwable throwable) {
- items.error(throwable);
- }
-
- public OptionalItem> call(Action1> action) {
- return items.call(action);
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/category/CategoryListPresenter.java b/app/src/main/java/it/cosenonjaviste/category/CategoryListPresenter.java
deleted file mode 100644
index 41ba648..0000000
--- a/app/src/main/java/it/cosenonjaviste/category/CategoryListPresenter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package it.cosenonjaviste.category;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.lib.mvp.RxMvpPresenter;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.Category;
-import it.cosenonjaviste.model.CategoryResponse;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.post.PostListFragment;
-import it.cosenonjaviste.post.PostListModel;
-import it.cosenonjaviste.utils.PresenterScope;
-import rx.Observable;
-
-@PresenterScope
-public class CategoryListPresenter extends RxMvpPresenter {
-
- private WordPressService wordPressService;
-
- private boolean loadStarted;
-
- @Inject public CategoryListPresenter(SchedulerManager schedulerManager, WordPressService wordPressService) {
- super(schedulerManager);
- this.wordPressService = wordPressService;
- }
-
- @Override public void subscribe(MvpView view) {
- super.subscribe(view);
- if (model.isEmpty() && !loadStarted) {
- loadData();
- }
- }
-
- public void loadData() {
- Observable> observable = wordPressService
- .listCategories()
- .map(CategoryResponse::getCategories);
-
- subscribe(observable,
- () -> {
- loadStarted = true;
- getView().startLoading();
- },
- posts -> {
- model.done(posts);
- view.update(model);
- }, throwable -> {
- model.error(throwable);
- view.update(model);
- });
- }
-
- public void goToPosts(int position) {
- Category category = model.get(position);
- getView().open(PostListFragment.class, new PostListModel(category));
- }
-
- @Override public CategoryListFragment getView() {
- return (CategoryListFragment) super.getView();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/core/Navigator.java b/app/src/main/java/it/cosenonjaviste/core/Navigator.java
new file mode 100644
index 0000000..efa33d3
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/Navigator.java
@@ -0,0 +1,15 @@
+package it.cosenonjaviste.core;
+
+import it.codingjam.lifecyclebinder.DefaultLifeCycleAware;
+import it.cosenonjaviste.core.post.PostListArgument;
+import it.cosenonjaviste.model.Post;
+
+public abstract class Navigator extends DefaultLifeCycleAware {
+ public abstract void openPostList(PostListArgument argument);
+
+ public abstract void openDetail(Post post);
+
+ public abstract void share(String subject, String text);
+
+ public abstract void showMessage(int message);
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/author/AuthorListModel.java b/app/src/main/java/it/cosenonjaviste/core/author/AuthorListModel.java
new file mode 100644
index 0000000..a73f379
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/author/AuthorListModel.java
@@ -0,0 +1,41 @@
+package it.cosenonjaviste.core.author;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+import it.cosenonjaviste.core.list.ListModel;
+import it.cosenonjaviste.model.Author;
+
+@ParcelablePlease
+public class AuthorListModel extends ListModel implements Parcelable {
+
+ public int size() {
+ return items.size();
+ }
+
+ public Author get(int index) {
+ return items.get(index);
+ }
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ AuthorListModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public AuthorListModel createFromParcel(Parcel source) {
+ AuthorListModel target = new AuthorListModel();
+ AuthorListModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public AuthorListModel[] newArray(int size) {
+ return new AuthorListModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/author/AuthorListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/author/AuthorListViewModel.java
new file mode 100644
index 0000000..a04d5e8
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/author/AuthorListViewModel.java
@@ -0,0 +1,50 @@
+package it.cosenonjaviste.core.author;
+
+import android.databinding.ObservableBoolean;
+import android.support.annotation.NonNull;
+
+import com.nytimes.android.external.store2.base.impl.Store;
+
+import java.util.Collections;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import it.codingjam.lifecyclebinder.BindLifeCycle;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.list.RxListViewModel;
+import it.cosenonjaviste.core.post.PostListArgument;
+import it.cosenonjaviste.model.Author;
+
+public class AuthorListViewModel extends RxListViewModel {
+
+ @Inject Store, Integer> authorsStore;
+
+ @Inject @BindLifeCycle Navigator navigator;
+
+ @Inject public AuthorListViewModel() {
+ }
+
+ @NonNull @Override protected AuthorListModel createModel() {
+ return new AuthorListModel();
+ }
+
+ @Override protected Disposable reloadData(ObservableBoolean loadingAction, boolean forceFetch) {
+ loadingAction.set(true);
+ return (forceFetch ? authorsStore.fetch(0) : authorsStore.get(0))
+ .singleOrError()
+ .doOnSuccess(Collections::sort)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingAction.set(false))
+ .subscribe(model::done, throwable -> model.error());
+ }
+
+ public void goToAuthorDetail(int position) {
+ Author author = model.get(position);
+ navigator.openPostList(PostListArgument.create(author));
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/base/ArgumentManager.java b/app/src/main/java/it/cosenonjaviste/core/base/ArgumentManager.java
new file mode 100755
index 0000000..0a3e91f
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/base/ArgumentManager.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2015 Fabio Collini.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package it.cosenonjaviste.core.base;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+
+public class ArgumentManager {
+ public static final String ARGUMENT = "argument";
+
+ public static P readArgument(Bundle arguments) {
+ return arguments != null ? arguments.getParcelable(ARGUMENT) : null;
+ }
+
+ public static Intent writeArgument(Intent intent, Parcelable argument) {
+ if (argument != null) {
+ intent.putExtra(ARGUMENT, argument);
+ }
+ return intent;
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/base/RxViewModel.java b/app/src/main/java/it/cosenonjaviste/core/base/RxViewModel.java
new file mode 100755
index 0000000..9b0d597
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/base/RxViewModel.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2015 Fabio Collini.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package it.cosenonjaviste.core.base;
+
+
+import android.os.Parcelable;
+import android.support.v4.app.Fragment;
+
+import io.reactivex.disposables.CompositeDisposable;
+
+public abstract class RxViewModel extends ViewModel {
+
+ protected final CompositeDisposable disposable = new CompositeDisposable();
+
+ @Override public void onDestroy(Fragment view, boolean changingConfigurations) {
+ if (!changingConfigurations) {
+ disposable.clear();
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/core/base/ViewModel.java b/app/src/main/java/it/cosenonjaviste/core/base/ViewModel.java
new file mode 100755
index 0000000..dc34280
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/base/ViewModel.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2015 Fabio Collini.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package it.cosenonjaviste.core.base;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Parcelable;
+import android.support.annotation.NonNull;
+import android.support.v4.app.Fragment;
+
+import it.codingjam.lifecyclebinder.DefaultLifeCycleAware;
+
+public abstract class ViewModel extends DefaultLifeCycleAware {
+
+ public static final String MODEL = "model";
+
+ protected M model;
+
+ protected A argument;
+
+ @Override public void onCreate(Fragment view, Bundle state, Intent intent, Bundle a) {
+ M model = null;
+ if (state != null) {
+ model = state.getParcelable(ViewModel.MODEL);
+ }
+
+ initArgumentAndModel(ArgumentManager.readArgument(a), model);
+ }
+
+ @Override public void onPause(Fragment view) {
+ pause();
+ }
+
+ public void pause() {
+ }
+
+ @Override public void onResume(Fragment view) {
+ resume();
+ }
+
+ public void resume() {
+ }
+
+ @NonNull protected abstract M createModel();
+
+ public void initArgumentAndModel(A arguments, M model) {
+ this.argument = arguments;
+ this.model = model != null ? model : createModel();
+ }
+
+ public M initAndResume() {
+ return initAndResume(null);
+ }
+
+ public M initAndResume(A arguments) {
+ initArgumentAndModel(arguments, null);
+ resume();
+ return model;
+ }
+
+ public M getModel() {
+ return model;
+ }
+
+ public A getArgument() {
+ return argument;
+ }
+
+ @Override public void onSaveInstanceState(Fragment view, Bundle bundle) {
+ bundle.putParcelable(ViewModel.MODEL, getModel());
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/category/CategoryListModel.java b/app/src/main/java/it/cosenonjaviste/core/category/CategoryListModel.java
new file mode 100644
index 0000000..62972db
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/category/CategoryListModel.java
@@ -0,0 +1,37 @@
+package it.cosenonjaviste.core.category;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+import it.cosenonjaviste.core.list.ListModel;
+import it.cosenonjaviste.model.Category;
+
+@ParcelablePlease
+public class CategoryListModel extends ListModel implements Parcelable {
+
+ public Category get(int index) {
+ return items.get(index);
+ }
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ CategoryListModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public CategoryListModel createFromParcel(Parcel source) {
+ CategoryListModel target = new CategoryListModel();
+ CategoryListModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public CategoryListModel[] newArray(int size) {
+ return new CategoryListModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/category/CategoryListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/category/CategoryListViewModel.java
new file mode 100644
index 0000000..d9192e7
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/category/CategoryListViewModel.java
@@ -0,0 +1,45 @@
+package it.cosenonjaviste.core.category;
+
+import android.databinding.ObservableBoolean;
+import android.support.annotation.NonNull;
+
+import javax.inject.Inject;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import it.codingjam.lifecyclebinder.BindLifeCycle;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.list.RxListViewModel;
+import it.cosenonjaviste.core.post.PostListArgument;
+import it.cosenonjaviste.model.Category;
+import it.cosenonjaviste.model.WordPressService;
+
+public class CategoryListViewModel extends RxListViewModel {
+
+ @Inject WordPressService wordPressService;
+
+ @Inject @BindLifeCycle Navigator navigator;
+
+ @Inject public CategoryListViewModel() {
+ }
+
+ @NonNull @Override protected CategoryListModel createModel() {
+ return new CategoryListModel();
+ }
+
+ @Override protected Disposable reloadData(ObservableBoolean loadingSetter, boolean forceFetch) {
+ loadingSetter.set(true);
+ return wordPressService
+ .listCategories()
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingSetter.set(false))
+ .subscribe(model::done, throwable -> model.error());
+ }
+
+ public void goToPosts(int position) {
+ Category category = model.get(position);
+ navigator.openPostList(PostListArgument.create(category));
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/contact/ContactModel.java b/app/src/main/java/it/cosenonjaviste/core/contact/ContactModel.java
new file mode 100644
index 0000000..571e15e
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/contact/ContactModel.java
@@ -0,0 +1,42 @@
+package it.cosenonjaviste.core.contact;
+
+import android.databinding.ObservableField;
+import android.databinding.ObservableInt;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+@ParcelablePlease
+public class ContactModel implements Parcelable {
+
+ public boolean sendPressed;
+
+ public ObservableField name = new ObservableField<>();
+ public ObservableField email = new ObservableField<>();
+ public ObservableField message = new ObservableField<>();
+
+ public ObservableInt nameError = new ObservableInt();
+ public ObservableInt emailError = new ObservableInt();
+ public ObservableInt messageError = new ObservableInt();
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ ContactModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public ContactModel createFromParcel(Parcel source) {
+ ContactModel target = new ContactModel();
+ ContactModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public ContactModel[] newArray(int size) {
+ return new ContactModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/contact/ContactViewModel.java b/app/src/main/java/it/cosenonjaviste/core/contact/ContactViewModel.java
new file mode 100644
index 0000000..fe02140
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/contact/ContactViewModel.java
@@ -0,0 +1,104 @@
+package it.cosenonjaviste.core.contact;
+
+import android.databinding.Observable.OnPropertyChangedCallback;
+import android.databinding.ObservableBoolean;
+import android.databinding.ObservableInt;
+import android.support.annotation.NonNull;
+
+import javax.inject.Inject;
+
+import io.reactivex.Completable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import it.codingjam.lifecyclebinder.BindLifeCycle;
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.base.RxViewModel;
+import it.cosenonjaviste.core.utils.EmailVerifier;
+import it.cosenonjaviste.model.MailJetService;
+
+public class ContactViewModel extends RxViewModel {
+
+ @Inject MailJetService mailJetService;
+
+ @Inject @BindLifeCycle Navigator navigator;
+
+ public final ObservableBoolean sending = new ObservableBoolean();
+
+ private OnPropertyChangedCallback listener = new OnPropertyChangedCallback() {
+ @Override
+ public void onPropertyChanged(android.databinding.Observable sender, int propertyId) {
+ validate();
+ }
+ };
+
+ @Inject public ContactViewModel() {
+ }
+
+ @NonNull @Override protected ContactModel createModel() {
+ return new ContactModel();
+ }
+
+ @Override public void resume() {
+ super.resume();
+
+ model.name.addOnPropertyChangedCallback(listener);
+ model.message.addOnPropertyChangedCallback(listener);
+ model.email.addOnPropertyChangedCallback(listener);
+ }
+
+ @Override public void pause() {
+ super.pause();
+ model.name.removeOnPropertyChangedCallback(listener);
+ model.message.removeOnPropertyChangedCallback(listener);
+ model.email.removeOnPropertyChangedCallback(listener);
+ }
+
+ private boolean validate() {
+ if (model.sendPressed) {
+ boolean isValid = checkMandatory(model.nameError, model.name.get() == null || model.name.get().isEmpty());
+ if (model.email.get() != null && !model.email.get().isEmpty()) {
+ if (!EmailVerifier.checkEmail(model.email.get())) {
+ model.emailError.set(R.string.invalid_email);
+ isValid = false;
+ } else {
+ model.emailError.set(0);
+ }
+ } else {
+ model.emailError.set(R.string.mandatory_field);
+ isValid = false;
+ }
+ isValid = checkMandatory(model.messageError, model.message.get() == null || model.message.get().isEmpty()) && isValid;
+ return isValid;
+ } else {
+ return true;
+ }
+ }
+
+ private boolean checkMandatory(ObservableInt error, boolean empty) {
+ error.set(empty ? R.string.mandatory_field : 0);
+ return !empty;
+ }
+
+ public void send() {
+ model.sendPressed = true;
+ if (validate()) {
+ Completable observable = mailJetService.sendEmail(
+ model.name + " ",
+ "info@cosenonjaviste.it",
+ "Email from " + model.name,
+ "Reply to: " + model.email + "\n" + model.message
+ );
+
+ sending.set(true);
+ disposable.add(observable
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> sending.set(false))
+ .subscribe(
+ () -> navigator.showMessage(R.string.message_sent),
+ t -> navigator.showMessage(R.string.error_sending_message))
+ );
+ }
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/list/GenericRxListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/list/GenericRxListViewModel.java
new file mode 100644
index 0000000..7f57ec6
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/list/GenericRxListViewModel.java
@@ -0,0 +1,17 @@
+package it.cosenonjaviste.core.list;
+
+import android.databinding.ObservableBoolean;
+
+public interface GenericRxListViewModel {
+ ObservableBoolean isLoading();
+
+ ObservableBoolean isLoadingPullToRefresh();
+
+ ObservableBoolean isLoadingNextPage();
+
+ ObservableBoolean isError();
+
+ void reloadData();
+
+ void loadDataPullToRefresh();
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/list/ListModel.java b/app/src/main/java/it/cosenonjaviste/core/list/ListModel.java
new file mode 100644
index 0000000..476ac88
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/list/ListModel.java
@@ -0,0 +1,51 @@
+package it.cosenonjaviste.core.list;
+
+import android.databinding.ObservableArrayList;
+import android.databinding.ObservableBoolean;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.Bagger;
+
+import java.util.List;
+
+import it.cosenonjaviste.core.utils.ObservableArrayListBagger;
+
+public abstract class ListModel implements Parcelable {
+
+ public ObservableBoolean error = new ObservableBoolean();
+
+ public boolean loaded;
+
+ @Bagger(ObservableArrayListBagger.class)
+ public ObservableArrayList items = new ObservableArrayList<>();
+
+ public final ObservableArrayList getItems() {
+ return items;
+ }
+
+ public boolean isLoaded() {
+ return loaded || error.get();
+ }
+
+ public void clear() {
+ getItems().clear();
+ }
+
+ public void done(List items) {
+ loaded = true;
+ getItems().clear();
+ getItems().addAll(items);
+ error.set(false);
+ }
+
+ public void append(List items) {
+ loaded = true;
+ getItems().addAll(items);
+ error.set(false);
+ }
+
+ public void error() {
+ clear();
+ error.set(true);
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/list/RxListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/list/RxListViewModel.java
new file mode 100644
index 0000000..38082ef
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/list/RxListViewModel.java
@@ -0,0 +1,45 @@
+package it.cosenonjaviste.core.list;
+
+import android.databinding.ObservableBoolean;
+
+import io.reactivex.disposables.Disposable;
+import it.cosenonjaviste.core.base.RxViewModel;
+
+public abstract class RxListViewModel> extends RxViewModel implements GenericRxListViewModel {
+ protected ObservableBoolean loading = new ObservableBoolean();
+
+ protected ObservableBoolean loadingNextPage = new ObservableBoolean();
+
+ protected ObservableBoolean loadingPullToRefresh = new ObservableBoolean();
+
+ @Override public ObservableBoolean isLoading() {
+ return loading;
+ }
+
+ @Override public ObservableBoolean isLoadingPullToRefresh() {
+ return loadingPullToRefresh;
+ }
+
+ @Override public ObservableBoolean isLoadingNextPage() {
+ return loadingNextPage;
+ }
+
+ @Override public ObservableBoolean isError() {
+ return model.error;
+ }
+
+ @Override public void resume() {
+ super.resume();
+ reloadData();
+ }
+
+ public void reloadData() {
+ reloadData(loading, false);
+ }
+
+ public final void loadDataPullToRefresh() {
+ reloadData(loadingPullToRefresh, true);
+ }
+
+ protected abstract Disposable reloadData(ObservableBoolean loadingAction, boolean forceFetch);
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/page/PageModel.java b/app/src/main/java/it/cosenonjaviste/core/page/PageModel.java
new file mode 100644
index 0000000..d6ccfc3
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/page/PageModel.java
@@ -0,0 +1,45 @@
+package it.cosenonjaviste.core.page;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+import it.cosenonjaviste.model.Post;
+
+@ParcelablePlease
+public class PageModel implements Parcelable {
+
+ Post post;
+
+ public PageModel() {
+ }
+
+ public Post getPost() {
+ return post;
+ }
+
+ public void setPost(Post post) {
+ this.post = post;
+ }
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ PageModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public PageModel createFromParcel(Parcel source) {
+ PageModel target = new PageModel();
+ PageModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public PageModel[] newArray(int size) {
+ return new PageModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/page/PageViewModel.java b/app/src/main/java/it/cosenonjaviste/core/page/PageViewModel.java
new file mode 100644
index 0000000..8db8faa
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/page/PageViewModel.java
@@ -0,0 +1,46 @@
+package it.cosenonjaviste.core.page;
+
+import android.databinding.ObservableBoolean;
+import android.support.annotation.NonNull;
+
+import javax.inject.Inject;
+
+import it.codingjam.lifecyclebinder.BindLifeCycle;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.base.ViewModel;
+import it.cosenonjaviste.model.Post;
+
+public class PageViewModel extends ViewModel {
+
+ public ObservableBoolean loading = new ObservableBoolean();
+
+ @Inject @BindLifeCycle Navigator navigator;
+
+ @Inject public PageViewModel() {
+ }
+
+ @NonNull @Override protected PageModel createModel() {
+ return new PageModel();
+ }
+
+ public Post getPost() {
+ return model.getPost();
+ }
+
+ @Override public void resume() {
+ super.resume();
+ if (model.getPost() == null) {
+ model.setPost(getArgument());
+ loading.set(true);
+ }
+ }
+
+ public void htmlLoaded() {
+ loading.set(false);
+ }
+
+ public void share() {
+ Post post = model.getPost();
+ navigator.share(post.title(), post.title() + " - " + post.url());
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/post/PostListArgument.java b/app/src/main/java/it/cosenonjaviste/core/post/PostListArgument.java
new file mode 100644
index 0000000..de8a960
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/post/PostListArgument.java
@@ -0,0 +1,25 @@
+package it.cosenonjaviste.core.post;
+
+import android.os.Parcelable;
+import android.support.annotation.Nullable;
+
+import com.google.auto.value.AutoValue;
+
+import it.cosenonjaviste.model.Author;
+import it.cosenonjaviste.model.Category;
+
+@AutoValue
+public abstract class PostListArgument implements Parcelable {
+
+ public static PostListArgument create(Category category) {
+ return new AutoValue_PostListArgument(category, null);
+ }
+
+ public static PostListArgument create(Author author) {
+ return new AutoValue_PostListArgument(null, author);
+ }
+
+ @Nullable public abstract Category category();
+
+ @Nullable public abstract Author author();
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/post/PostListModel.java b/app/src/main/java/it/cosenonjaviste/core/post/PostListModel.java
new file mode 100644
index 0000000..2781760
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/post/PostListModel.java
@@ -0,0 +1,50 @@
+package it.cosenonjaviste.core.post;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+import it.cosenonjaviste.core.list.ListModel;
+import it.cosenonjaviste.model.Post;
+
+@ParcelablePlease
+public class PostListModel extends ListModel implements Parcelable {
+
+ boolean moreDataAvailable;
+
+ public PostListModel() {
+ }
+
+ public boolean isMoreDataAvailable() {
+ return moreDataAvailable;
+ }
+
+ public void setMoreDataAvailable(boolean moreDataAvailable) {
+ this.moreDataAvailable = moreDataAvailable;
+ }
+
+ public int size() {
+ return items.size();
+ }
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ PostListModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public PostListModel createFromParcel(Parcel source) {
+ PostListModel target = new PostListModel();
+ PostListModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public PostListModel[] newArray(int size) {
+ return new PostListModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/post/PostListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/post/PostListViewModel.java
new file mode 100644
index 0000000..9d2a0c6
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/post/PostListViewModel.java
@@ -0,0 +1,110 @@
+package it.cosenonjaviste.core.post;
+
+import android.databinding.ObservableBoolean;
+import android.support.annotation.NonNull;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import io.reactivex.Single;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import it.codingjam.lifecyclebinder.BindLifeCycle;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.list.RxListViewModel;
+import it.cosenonjaviste.model.Author;
+import it.cosenonjaviste.model.Category;
+import it.cosenonjaviste.model.Post;
+import it.cosenonjaviste.model.WordPressService;
+
+public class PostListViewModel extends RxListViewModel {
+
+ @Inject WordPressService wordPressService;
+
+ @Inject @BindLifeCycle Navigator navigator;
+
+ @Inject public PostListViewModel() {
+ }
+
+ @NonNull @Override protected PostListModel createModel() {
+ return new PostListModel();
+ }
+
+ @Override protected Disposable reloadData(ObservableBoolean loadingAction, boolean forceFetch) {
+ loadingAction.set(true);
+ return getObservable(1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingAction.set(false))
+ .subscribe(posts -> {
+ model.done(posts);
+ model.setMoreDataAvailable(posts.size() == WordPressService.POST_PAGE_SIZE);
+ }, throwable -> model.error());
+ }
+
+ public void goToDetail(int position) {
+ Post item = model.getItems().get(position);
+ navigator.openDetail(item);
+ }
+
+ public void loadNextPage() {
+ if (!loadingNextPage.get() && model.isMoreDataAvailable()) {
+ int page = calcNextPage(model.getItems().size(), WordPressService.POST_PAGE_SIZE);
+
+ loadingNextPage.set(true);
+ disposable.add(getObservable(page)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingNextPage.set(false))
+ .subscribe(posts -> {
+ model.append(posts);
+ model.setMoreDataAvailable(posts.size() == WordPressService.POST_PAGE_SIZE);
+ }, throwable -> model.error())
+ );
+ }
+ }
+
+ private Single> getObservable(int page) {
+ if (getArgument() == null) {
+ return wordPressService.listPosts(page);
+ } else {
+ Category category = getArgument().category();
+ if (category != null) {
+ return wordPressService.listCategoryPosts(category.id(), page);
+ } else {
+ Author author = getArgument().author();
+ return wordPressService.listAuthorPosts(author.id(), page);
+ }
+ }
+ }
+
+ private static int calcNextPage(int size, int pageSize) {
+ return size / pageSize + 1;
+ }
+
+ public boolean isToolbarVisible() {
+ PostListArgument arg = getArgument();
+ return arg != null && (arg.author() != null || arg.category() != null);
+ }
+
+ public String getToolbarTitle() {
+ PostListArgument arg = getArgument();
+ if (arg == null) {
+ return null;
+ } else {
+ Author author = arg.author();
+ if (author != null) {
+ return author.name();
+ } else {
+ Category category = arg.category();
+ if (category != null) {
+ return category.title();
+ } else {
+ return null;
+ }
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListModel.java b/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListModel.java
new file mode 100644
index 0000000..3bcd911
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListModel.java
@@ -0,0 +1,43 @@
+package it.cosenonjaviste.core.twitter;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
+
+import it.cosenonjaviste.core.list.ListModel;
+import it.cosenonjaviste.model.Tweet;
+
+@ParcelablePlease
+public class TweetListModel extends ListModel implements Parcelable {
+
+ boolean moreDataAvailable;
+
+ public void setMoreDataAvailable(boolean moreDataAvailable) {
+ this.moreDataAvailable = moreDataAvailable;
+ }
+
+ public boolean isMoreDataAvailable() {
+ return moreDataAvailable;
+ }
+
+ @Override public int describeContents() {
+ return 0;
+ }
+
+ @Override public void writeToParcel(Parcel dest, int flags) {
+ TweetListModelParcelablePlease.writeToParcel(this, dest, flags);
+ }
+
+ public static final Creator CREATOR = new Creator() {
+ public TweetListModel createFromParcel(Parcel source) {
+ TweetListModel target = new TweetListModel();
+ TweetListModelParcelablePlease.readFromParcel(target, source);
+ return target;
+ }
+
+ public TweetListModel[] newArray(int size) {
+ return new TweetListModel[size];
+ }
+ };
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListViewModel.java b/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListViewModel.java
new file mode 100644
index 0000000..64c7ab9
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/twitter/TweetListViewModel.java
@@ -0,0 +1,57 @@
+package it.cosenonjaviste.core.twitter;
+
+import android.databinding.ObservableBoolean;
+import android.support.annotation.NonNull;
+
+import javax.inject.Inject;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import it.cosenonjaviste.core.list.RxListViewModel;
+import it.cosenonjaviste.model.TwitterService;
+
+public class TweetListViewModel extends RxListViewModel {
+
+ @Inject TwitterService twitterService;
+
+ @Inject public TweetListViewModel() {
+ }
+
+ @NonNull @Override protected TweetListModel createModel() {
+ return new TweetListModel();
+ }
+
+ @Override protected Disposable reloadData(ObservableBoolean loadingAction, boolean forceFetch) {
+ loadingAction.set(true);
+ return twitterService.loadTweets(1)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingAction.set(false))
+ .subscribe(posts -> {
+ model.done(posts);
+ model.setMoreDataAvailable(posts.size() == TwitterService.PAGE_SIZE);
+ }, throwable -> model.error());
+ }
+
+ public void loadNextPage() {
+ if (!isLoadingNextPage().get() && model.isMoreDataAvailable()) {
+ int page = calcNextPage(model.getItems().size(), TwitterService.PAGE_SIZE);
+
+ loadingNextPage.set(true);
+ disposable.add(twitterService.loadTweets(page)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .doAfterTerminate(() -> loadingNextPage.set(false))
+ .subscribe(posts -> {
+ model.append(posts);
+ model.setMoreDataAvailable(posts.size() == TwitterService.PAGE_SIZE);
+ }, throwable -> model.error())
+ );
+ }
+ }
+
+ private static int calcNextPage(int size, int pageSize) {
+ return size / pageSize + 1;
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/utils/DenvelopingConverter.java b/app/src/main/java/it/cosenonjaviste/core/utils/DenvelopingConverter.java
new file mode 100644
index 0000000..76d623e
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/utils/DenvelopingConverter.java
@@ -0,0 +1,73 @@
+package it.cosenonjaviste.core.utils;
+
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import okhttp3.ResponseBody;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+
+/**
+ * A {@link retrofit2.Converter.Factory} which removes unwanted wrapping envelopes from API
+ * responses.
+ */
+public class DenvelopingConverter extends Converter.Factory {
+
+ final Gson gson;
+
+ public DenvelopingConverter(@NonNull Gson gson) {
+ this.gson = gson;
+ }
+
+ @Override
+ public Converter responseBodyConverter(
+ Type type, Annotation[] annotations, Retrofit retrofit) {
+
+ // This converter requires an annotation providing the name of the payload in the envelope;
+ // if one is not supplied then return null to continue down the converter chain.
+ final String payloadName = getPayloadName(annotations);
+ if (payloadName == null) return null;
+
+ final TypeAdapter> adapter = gson.getAdapter(TypeToken.get(type));
+ return new Converter() {
+ @Override
+ public Object convert(ResponseBody body) throws IOException {
+ try {
+ JsonReader jsonReader = gson.newJsonReader(body.charStream());
+ jsonReader.beginObject();
+ while (jsonReader.hasNext()) {
+ if (payloadName.equals(jsonReader.nextName())) {
+ return adapter.read(jsonReader);
+ } else {
+ jsonReader.skipValue();
+ }
+ }
+ return null;
+ } finally {
+ body.close();
+ }
+ }
+ };
+ }
+
+ private @Nullable String getPayloadName(Annotation[] annotations) {
+ if (annotations == null) {
+ return null;
+ }
+ for (Annotation annotation : annotations) {
+ if (annotation instanceof EnvelopePayload) {
+ return ((EnvelopePayload) annotation).value();
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/core/utils/EmailVerifier.java b/app/src/main/java/it/cosenonjaviste/core/utils/EmailVerifier.java
new file mode 100644
index 0000000..62a02da
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/utils/EmailVerifier.java
@@ -0,0 +1,20 @@
+package it.cosenonjaviste.core.utils;
+
+import java.util.regex.Pattern;
+
+public class EmailVerifier {
+ private static final Pattern EMAIL_ADDRESS
+ = Pattern.compile(
+ "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
+ "\\@" +
+ "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
+ "(" +
+ "\\." +
+ "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +
+ ")+"
+ );
+
+ public static boolean checkEmail(String email) {
+ return EMAIL_ADDRESS.matcher(email).matches();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/core/utils/EnvelopePayload.java b/app/src/main/java/it/cosenonjaviste/core/utils/EnvelopePayload.java
new file mode 100644
index 0000000..09b3f9a
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/utils/EnvelopePayload.java
@@ -0,0 +1,17 @@
+package it.cosenonjaviste.core.utils;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * An annotation for identifying the payload that we want to extract from an API response wrapped in
+ * an envelope object.
+ */
+@Target(METHOD)
+@Retention(RUNTIME)
+public @interface EnvelopePayload {
+ String value() default "";
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/utils/Md5Utils.java b/app/src/main/java/it/cosenonjaviste/core/utils/Md5Utils.java
similarity index 93%
rename from app/src/main/java/it/cosenonjaviste/utils/Md5Utils.java
rename to app/src/main/java/it/cosenonjaviste/core/utils/Md5Utils.java
index 614480a..d9a52fe 100644
--- a/app/src/main/java/it/cosenonjaviste/utils/Md5Utils.java
+++ b/app/src/main/java/it/cosenonjaviste/core/utils/Md5Utils.java
@@ -1,4 +1,4 @@
-package it.cosenonjaviste.utils;
+package it.cosenonjaviste.core.utils;
import java.security.MessageDigest;
diff --git a/app/src/main/java/it/cosenonjaviste/core/utils/ObservableArrayListBagger.java b/app/src/main/java/it/cosenonjaviste/core/utils/ObservableArrayListBagger.java
new file mode 100644
index 0000000..165b997
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/core/utils/ObservableArrayListBagger.java
@@ -0,0 +1,18 @@
+package it.cosenonjaviste.core.utils;
+
+import android.databinding.ObservableArrayList;
+import android.os.Parcel;
+
+import com.hannesdorfmann.parcelableplease.ParcelBagger;
+
+public class ObservableArrayListBagger implements ParcelBagger {
+ @Override public void write(ObservableArrayList value, Parcel out, int flags) {
+ out.writeList(value);
+ }
+
+ @Override public ObservableArrayList read(Parcel in) {
+ ObservableArrayList observableArrayList = new ObservableArrayList();
+ in.readList(observableArrayList, observableArrayList.getClass().getClassLoader());
+ return observableArrayList;
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/model/Attachment.java b/app/src/main/java/it/cosenonjaviste/model/Attachment.java
new file mode 100644
index 0000000..365bbb7
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/model/Attachment.java
@@ -0,0 +1,20 @@
+package it.cosenonjaviste.model;
+
+import android.os.Parcelable;
+
+import com.google.auto.value.AutoValue;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+
+@AutoValue
+public abstract class Attachment implements Parcelable {
+ public static Attachment create(String url) {
+ return new AutoValue_Attachment(url);
+ }
+
+ public abstract String url();
+
+ public static TypeAdapter typeAdapter(Gson gson) {
+ return new AutoValue_Attachment.GsonTypeAdapter(gson);
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/model/Author.java b/app/src/main/java/it/cosenonjaviste/model/Author.java
index e0e0778..bfd4b36 100644
--- a/app/src/main/java/it/cosenonjaviste/model/Author.java
+++ b/app/src/main/java/it/cosenonjaviste/model/Author.java
@@ -1,66 +1,58 @@
package it.cosenonjaviste.model;
-import com.google.gson.annotations.SerializedName;
-
-import org.parceler.Parcel;
-
-import it.cosenonjaviste.utils.Md5Utils;
+import android.os.Parcelable;
-@Parcel
-public class Author implements Comparable {
- long id;
-
- @SerializedName("first_name")
- String firstName;
-
- @SerializedName("last_name")
- String lastName;
-
- String email;
+import com.google.auto.value.AutoValue;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.SerializedName;
- String imageUrl;
+import it.cosenonjaviste.core.utils.Md5Utils;
- String description;
+@AutoValue
+public abstract class Author implements Comparable, Parcelable {
- public Author() {
+ public static Author create(long id, String firstName, String lastName, String email) {
+ return new AutoValue_Author(id, firstName, lastName, email);
}
- public Author(long id, String firstName, String lastName, String description) {
- this();
- this.id = id;
- this.firstName = firstName;
- this.lastName = lastName;
- this.description = description;
+ public static TypeAdapter typeAdapter(Gson gson) {
+ return new AutoValue_Author.GsonTypeAdapter(gson);
}
- public long getId() {
- return id;
- }
+ public abstract long id();
- public String getName() {
- return firstName + " " + lastName;
- }
+ @SerializedName("first_name")
+ public abstract String firstName();
- public String getFirstName() {
- return firstName;
- }
+ @SerializedName("last_name")
+ public abstract String lastName();
- public String getLastName() {
- return lastName;
+ public abstract String email();
+
+ public String name() {
+ return firstName() + " " + lastName();
}
- public String getImageUrl() {
- if (imageUrl == null && email != null && email.length() > 0) {
- imageUrl = "http://www.gravatar.com/avatar/" + Md5Utils.md5Hex(email);
+ public String imageUrl() {
+ if (email() != null && email().length() > 0) {
+ return "http://www.gravatar.com/avatar/" + Md5Utils.md5Hex(email());
}
- return imageUrl;
+ return null;
}
- public String getDescription() {
- return description;
+ @Override public int compareTo(Author o) {
+ long lhs = sortId();
+ long rhs = o.sortId();
+ return lhs < rhs ? -1 : (lhs == rhs ? 0 : 1);
}
- @Override public int compareTo(Author o) {
- return Long.compare(id, o.id);
+ private long sortId() {
+ long id = id();
+ if (id < 5 || id == 8 || id == 32) {
+ return id;
+ } else {
+ return id + 100;
+ }
}
}
diff --git a/app/src/main/java/it/cosenonjaviste/model/AuthorResponse.java b/app/src/main/java/it/cosenonjaviste/model/AuthorResponse.java
deleted file mode 100644
index 8bb2a7f..0000000
--- a/app/src/main/java/it/cosenonjaviste/model/AuthorResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package it.cosenonjaviste.model;
-
-import java.util.List;
-
-public class AuthorResponse {
- private List authors;
-
- public AuthorResponse() {
- }
-
- public AuthorResponse(List authors) {
- this();
- this.authors = authors;
- }
-
- public List getAuthors() {
- return authors;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/model/Category.java b/app/src/main/java/it/cosenonjaviste/model/Category.java
index 4c59ea4..49c50fb 100644
--- a/app/src/main/java/it/cosenonjaviste/model/Category.java
+++ b/app/src/main/java/it/cosenonjaviste/model/Category.java
@@ -1,37 +1,27 @@
package it.cosenonjaviste.model;
-import com.google.gson.annotations.SerializedName;
-
-import org.parceler.Parcel;
-
-@Parcel
-public class Category {
- long id;
+import android.os.Parcelable;
- String title;
+import com.google.auto.value.AutoValue;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.annotations.SerializedName;
- @SerializedName("post_count")
- int postCount;
+@AutoValue
+public abstract class Category implements Parcelable {
- public Category() {
+ public static Category create(long id, String title, int postCount) {
+ return new AutoValue_Category(id, title, postCount);
}
- public Category(long id, String title, int postCount) {
- this();
- this.id = id;
- this.title = title;
- this.postCount = postCount;
- }
+ public abstract long id();
- public long getId() {
- return id;
- }
+ public abstract String title();
- public String getTitle() {
- return title;
- }
+ @SerializedName("post_count")
+ public abstract int postCount();
- public int getPostCount() {
- return postCount;
+ public static TypeAdapter typeAdapter(Gson gson) {
+ return new AutoValue_Category.GsonTypeAdapter(gson);
}
}
diff --git a/app/src/main/java/it/cosenonjaviste/model/CategoryResponse.java b/app/src/main/java/it/cosenonjaviste/model/CategoryResponse.java
deleted file mode 100644
index c5c9a8f..0000000
--- a/app/src/main/java/it/cosenonjaviste/model/CategoryResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package it.cosenonjaviste.model;
-
-import java.util.List;
-
-public class CategoryResponse {
- private List categories;
-
- public CategoryResponse() {
- }
-
- public CategoryResponse(List categories) {
- this();
- this.categories = categories;
- }
-
- public List getCategories() {
- return categories;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/model/MailJetService.java b/app/src/main/java/it/cosenonjaviste/model/MailJetService.java
new file mode 100644
index 0000000..c8e9975
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/model/MailJetService.java
@@ -0,0 +1,17 @@
+package it.cosenonjaviste.model;
+
+
+import io.reactivex.Completable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface MailJetService {
+
+ @POST("/send/message") @FormUrlEncoded Completable sendEmail(
+ @Field("from") String from,
+ @Field("to") String to,
+ @Field("subject") String subject,
+ @Field("text") String text
+ );
+}
diff --git a/app/src/main/java/it/cosenonjaviste/model/MyAdapterFactory.java b/app/src/main/java/it/cosenonjaviste/model/MyAdapterFactory.java
new file mode 100644
index 0000000..a5768d3
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/model/MyAdapterFactory.java
@@ -0,0 +1,12 @@
+package it.cosenonjaviste.model;
+
+import com.google.gson.TypeAdapterFactory;
+import com.ryanharter.auto.value.gson.GsonTypeAdapterFactory;
+
+@GsonTypeAdapterFactory
+public abstract class MyAdapterFactory implements TypeAdapterFactory {
+
+ public static TypeAdapterFactory create() {
+ return new AutoValueGson_MyAdapterFactory();
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/model/Post.java b/app/src/main/java/it/cosenonjaviste/model/Post.java
index 1f94e1b..094cc71 100644
--- a/app/src/main/java/it/cosenonjaviste/model/Post.java
+++ b/app/src/main/java/it/cosenonjaviste/model/Post.java
@@ -1,52 +1,61 @@
package it.cosenonjaviste.model;
-import org.parceler.Parcel;
+import android.os.Parcelable;
+import android.support.annotation.Nullable;
+import com.google.auto.value.AutoValue;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+
+import java.util.Arrays;
import java.util.Date;
+import java.util.List;
-@Parcel
-public class Post {
- long id;
- Author author;
- String title;
- Date date;
- String url;
- String excerpt;
+import it.cosenonjaviste.ui.utils.DateFormatter;
- public Post() {
+@AutoValue
+public abstract class Post implements Parcelable {
+ public static Post create(long id, Author author, String title, Date date, String url, String excerpt, Attachment... attachments) {
+ return new AutoValue_Post(id, author, title, date, url, excerpt, Arrays.asList(attachments));
}
- public Post(long id, Author author, String title, Date date, String url, String excerpt) {
- this();
- this.id = id;
- this.author = author;
- this.title = title;
- this.date = date;
- this.url = url;
- this.excerpt = excerpt;
- }
+ public abstract long id();
- public long getId() {
- return id;
- }
+ public abstract Author author();
- public Author getAuthor() {
- return author;
- }
+ public abstract String title();
+
+ @Nullable
+ public abstract Date date();
+
+ public abstract String url();
+
+ @Nullable
+ public abstract String excerpt();
+
+ public abstract List attachments();
- public String getTitle() {
- return title;
+ public String excerptHtml() {
+ String excerpt = excerpt();
+ if (excerpt == null) {
+ return "";
+ }
+ return excerpt.replaceAll("Continue reading...<\\/a>", "").replaceAll("^", "").replaceAll("$
", "");
}
- public Date getDate() {
- return date;
+ public String subtitle() {
+ return author().name() + ", " + DateFormatter.formatDate(date());
}
- public String getUrl() {
- return url;
+ public String imageUrl() {
+ if (attachments() != null && !attachments().isEmpty()) {
+ return attachments().get(0).url();
+ } else {
+ return null;
+ }
}
- public String getExcerpt() {
- return excerpt;
+ public static TypeAdapter typeAdapter(Gson gson) {
+ return new AutoValue_Post.GsonTypeAdapter(gson);
}
}
diff --git a/app/src/main/java/it/cosenonjaviste/model/PostResponse.java b/app/src/main/java/it/cosenonjaviste/model/PostResponse.java
deleted file mode 100644
index 46e65c0..0000000
--- a/app/src/main/java/it/cosenonjaviste/model/PostResponse.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package it.cosenonjaviste.model;
-
-import java.util.List;
-
-public class PostResponse {
- private List posts;
-
- public PostResponse() {
- }
-
- public PostResponse(List posts) {
- this();
- this.posts = posts;
- }
-
- public List getPosts() {
- return posts;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/model/Tweet.java b/app/src/main/java/it/cosenonjaviste/model/Tweet.java
index 11d8191..55441a2 100644
--- a/app/src/main/java/it/cosenonjaviste/model/Tweet.java
+++ b/app/src/main/java/it/cosenonjaviste/model/Tweet.java
@@ -1,46 +1,30 @@
package it.cosenonjaviste.model;
-import org.parceler.Parcel;
+import android.os.Parcelable;
-import java.util.Date;
+import com.google.auto.value.AutoValue;
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
-@Parcel
-public class Tweet {
- long id;
- String text;
- Date createdAt;
- String userImage;
- String author;
+import java.util.Date;
- public Tweet() {
+@AutoValue
+public abstract class Tweet implements Parcelable {
+ public static Tweet create(long id, String text, Date createdAt, String userImage, String author) {
+ return new AutoValue_Tweet(id, text, createdAt, userImage, author);
}
- public Tweet(long id, String text, Date createdAt, String userImage, String author) {
- this();
- this.id = id;
- this.text = text;
- this.createdAt = createdAt;
- this.userImage = userImage;
- this.author = author;
- }
+ public abstract long id();
- public long getId() {
- return id;
- }
+ public abstract String text();
- public String getText() {
- return text;
- }
+ public abstract Date createdAt();
- public Date getCreatedAt() {
- return createdAt;
- }
+ public abstract String userImage();
- public String getUserImage() {
- return userImage;
- }
+ public abstract String author();
- public String getAuthor() {
- return author;
+ public static TypeAdapter typeAdapter(Gson gson) {
+ return new AutoValue_Tweet.GsonTypeAdapter(gson);
}
}
diff --git a/app/src/main/java/it/cosenonjaviste/model/TwitterService.java b/app/src/main/java/it/cosenonjaviste/model/TwitterService.java
index 3b0564f..b06ab5c 100644
--- a/app/src/main/java/it/cosenonjaviste/model/TwitterService.java
+++ b/app/src/main/java/it/cosenonjaviste/model/TwitterService.java
@@ -2,13 +2,11 @@
import java.util.List;
-import it.cosenonjaviste.BuildConfig;
-import rx.Observable;
-import rx.Subscriber;
+import io.reactivex.Observable;
+import io.reactivex.Single;
import twitter4j.Paging;
import twitter4j.Status;
import twitter4j.Twitter;
-import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.User;
import twitter4j.conf.ConfigurationBuilder;
@@ -19,31 +17,25 @@ public class TwitterService {
private final Twitter twitter;
- public TwitterService() {
+ public TwitterService(String consumerKey, String consumerSecret, String accessToken, String accessTokenSecret) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
- .setOAuthConsumerKey(BuildConfig.CONSUMER_KEY)
- .setOAuthConsumerSecret(BuildConfig.CONSUMER_SECRET)
- .setOAuthAccessToken(BuildConfig.ACCESS_TOKEN)
- .setOAuthAccessTokenSecret(BuildConfig.ACCESS_TOKEN_SECRET);
+ .setOAuthConsumerKey(consumerKey)
+ .setOAuthConsumerSecret(consumerSecret)
+ .setOAuthAccessToken(accessToken)
+ .setOAuthAccessTokenSecret(accessTokenSecret);
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
}
- public Observable> loadTweets(int page) {
- return Observable.create((Subscriber super List> subscriber) -> {
- try {
- List statuses = twitter.getUserTimeline(251259751, new Paging(page, PAGE_SIZE));
- subscriber.onNext(statuses);
- subscriber.onCompleted();
- } catch (TwitterException e) {
- subscriber.onError(e);
- }
- }).flatMap(Observable::from).map(this::createTweet).toList();
+ public Single> loadTweets(int page) {
+ return Observable.fromCallable(() -> twitter.getUserTimeline(251259751, new Paging(page, PAGE_SIZE)))
+ .flatMapIterable(l -> l)
+ .map(this::createTweet).toList();
}
private Tweet createTweet(Status s) {
User user = s.getUser();
- return new Tweet(s.getId(), s.getText(), s.getCreatedAt(), user.getProfileImageURL(), user.getName());
+ return Tweet.create(s.getId(), s.getText(), s.getCreatedAt(), user.getProfileImageURL(), user.getName());
}
}
diff --git a/app/src/main/java/it/cosenonjaviste/model/WordPressService.java b/app/src/main/java/it/cosenonjaviste/model/WordPressService.java
index 165c819..b186b4d 100644
--- a/app/src/main/java/it/cosenonjaviste/model/WordPressService.java
+++ b/app/src/main/java/it/cosenonjaviste/model/WordPressService.java
@@ -1,24 +1,32 @@
package it.cosenonjaviste.model;
-import retrofit.http.GET;
-import retrofit.http.Query;
-import rx.Observable;
+import java.util.List;
+
+import io.reactivex.Single;
+import it.cosenonjaviste.core.utils.EnvelopePayload;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
public interface WordPressService {
int POST_PAGE_SIZE = 10;
- String POSTS_EXTRA = "&exclude=content,title_plain,tags,custom_fields&author_meta=email";
+ String POSTS_EXTRA = "&exclude=content,title_plain,tags,custom_fields,categories,comments&author_meta=email";
String CATEGORY_POSTS_URL = "/?json=get_category_posts";
String AUTHOR_POSTS_URL = "/?json=get_author_posts";
- @GET("/?json=get_recent_posts&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Observable listPosts(@Query("page") int page);
+ @EnvelopePayload("posts")
+ @GET("/?json=get_recent_posts&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Single> listPosts(@Query("page") int page);
- @GET(CATEGORY_POSTS_URL + "&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Observable listCategoryPosts(@Query("id") long categoryId, @Query("page") int page);
+ @EnvelopePayload("posts")
+ @GET(CATEGORY_POSTS_URL + "&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Single> listCategoryPosts(@Query("id") long categoryId, @Query("page") int page);
- @GET(AUTHOR_POSTS_URL + "&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Observable listAuthorPosts(@Query("id") long authorId, @Query("page") int page);
+ @EnvelopePayload("posts")
+ @GET(AUTHOR_POSTS_URL + "&count=" + POST_PAGE_SIZE + POSTS_EXTRA) Single> listAuthorPosts(@Query("id") long authorId, @Query("page") int page);
- @GET("/?json=get_author_index&author_meta=email") Observable listAuthors();
+ @EnvelopePayload("authors")
+ @GET("/?json=get_author_index&author_meta=email") Single> listAuthors();
- @GET("/?json=get_category_index") Observable listCategories();
+ @EnvelopePayload("categories")
+ @GET("/?json=get_category_index") Single> listCategories();
}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/page/PageComponent.java b/app/src/main/java/it/cosenonjaviste/page/PageComponent.java
deleted file mode 100644
index 0a4a0f5..0000000
--- a/app/src/main/java/it/cosenonjaviste/page/PageComponent.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package it.cosenonjaviste.page;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-@Component(dependencies = ApplicationComponent.class)
-public interface PageComponent {
- void inject(PageFragment fragment);
-}
diff --git a/app/src/main/java/it/cosenonjaviste/page/PageFragment.java b/app/src/main/java/it/cosenonjaviste/page/PageFragment.java
deleted file mode 100644
index 4336f43..0000000
--- a/app/src/main/java/it/cosenonjaviste/page/PageFragment.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package it.cosenonjaviste.page;
-
-import android.annotation.SuppressLint;
-import android.view.View;
-import android.webkit.WebResourceResponse;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.inject.Inject;
-
-import butterknife.InjectView;
-import it.cosenonjaviste.Dagger2CnjFragment;
-import it.cosenonjaviste.ObjectsMapRetainedFragment;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-
-public class PageFragment extends Dagger2CnjFragment {
-
- @InjectView(R.id.web_view) WebView webView;
-
- @InjectView(R.id.progress_detail) View progressBar;
-
- @Inject PagePresenter presenter;
-
- @Override protected MvpPresenter injectAndCreatePresenter() {
- ObjectsMapRetainedFragment.getOrCreate(
- getChildFragmentManager(),
- PageFragment.class.getName(),
- () -> DaggerPageComponent.builder().applicationComponent(getComponent()).build()
- ).inject(this);
- return presenter;
- }
-
- @SuppressLint("SetJavaScriptEnabled") @Override protected void initView(View view) {
- super.initView(view);
-
- WebSettings settings = webView.getSettings();
- settings.setJavaScriptEnabled(true);
- File externalFilesDir = getActivity().getExternalFilesDir(null);
- if (externalFilesDir != null) {
- settings.setAppCachePath(externalFilesDir.getAbsolutePath());
- settings.setAppCacheMaxSize(20 * 1024 * 1024);
- settings.setAppCacheEnabled(true);
- settings.setCacheMode(WebSettings.LOAD_DEFAULT);
- }
-
- webView.setWebViewClient(new WebViewClient() {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- view.loadUrl(url);
- return true;
- }
-
- @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
- if (url.equalsIgnoreCase("http://www.cosenonjaviste.it/wp-content/themes/flexform/style.css")) {
- return getCssWebResourceResponseFromAsset();
- }
- if (url.startsWith("https://pbs.twimg.com/")
- || url.startsWith("https://cdn.syndication.twimg.com/")
- || url.startsWith("https://syndication.twitter.com")
- || url.contains("platform.twitter.com/")
- || url.startsWith("http://www.facebook.com/plugins/like_box.php")
- || url.startsWith("https://fbcdn-profile-")
- || url.contains("sharethis.com/")
- || url.equals("http://www.cosenonjaviste.it/wp-content/uploads/2013/06/favicon.ico")
- ) {
- return null;
- }
- return super.shouldInterceptRequest(view, url);
- }
-
- private WebResourceResponse getCssWebResourceResponseFromAsset() {
- try {
- return new WebResourceResponse("text/css", "UTF-8", getActivity().getAssets().open("style.css"));
- } catch (IOException e) {
- return null;
- }
- }
-
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- webView.setVisibility(View.VISIBLE);
- progressBar.setVisibility(View.INVISIBLE);
- }
- });
- }
-
- @Override protected int getLayoutId() {
- return R.layout.post_detail;
- }
-
- @Override public void update(PageModel model) {
- webView.loadUrl(presenter.getPostUrl());
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/page/PageModel.java b/app/src/main/java/it/cosenonjaviste/page/PageModel.java
deleted file mode 100644
index 3609121..0000000
--- a/app/src/main/java/it/cosenonjaviste/page/PageModel.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package it.cosenonjaviste.page;
-
-import org.parceler.Parcel;
-
-@Parcel
-public class PageModel {
-
- String url;
-
- PageModel() {
- }
-
- public PageModel(String url) {
- this.url = url;
- }
-
- public String getUrl() {
- return url;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/page/PagePresenter.java b/app/src/main/java/it/cosenonjaviste/page/PagePresenter.java
deleted file mode 100644
index e883836..0000000
--- a/app/src/main/java/it/cosenonjaviste/page/PagePresenter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package it.cosenonjaviste.page;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-public class PagePresenter extends MvpPresenter {
-
- private PageUrlManager pageUrlManager;
-
- @Inject public PagePresenter(PageUrlManager pageUrlManager) {
- this.pageUrlManager = pageUrlManager;
- }
-
- public String getPostUrl() {
- return pageUrlManager.getUrl(model.getUrl());
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/page/PageUrlManager.java b/app/src/main/java/it/cosenonjaviste/page/PageUrlManager.java
deleted file mode 100644
index 6ddd777..0000000
--- a/app/src/main/java/it/cosenonjaviste/page/PageUrlManager.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package it.cosenonjaviste.page;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-@Singleton
-public class PageUrlManager {
-
- @Inject public PageUrlManager() {
- }
-
- public String getUrl(String url) {
- return url;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/post/PostAdapter.java b/app/src/main/java/it/cosenonjaviste/post/PostAdapter.java
deleted file mode 100644
index b77e934..0000000
--- a/app/src/main/java/it/cosenonjaviste/post/PostAdapter.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package it.cosenonjaviste.post;
-
-import android.content.Context;
-import android.text.Html;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.squareup.picasso.Picasso;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.ButterKnife;
-import butterknife.InjectView;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.model.Post;
-import it.cosenonjaviste.utils.CircleTransform;
-import it.cosenonjaviste.utils.DateFormatter;
-
-public class PostAdapter extends BaseAdapter {
-
- private List posts = new ArrayList<>();
-
- private Context context;
- private CircleTransform transformation;
-
- public PostAdapter(Context context) {
- this.context = context;
- transformation = CircleTransform.createWithBorder(context, R.dimen.author_image_size, R.color.colorPrimary, R.dimen.author_image_border);
- }
-
- @Override public int getCount() {
- return posts.size();
- }
-
- @Override public Post getItem(int position) {
- return posts.get(position);
- }
-
- @Override public long getItemId(int position) {
- return getItem(position).getId();
- }
-
- @Override public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(context).inflate(R.layout.post_row, parent, false);
- RowWrapper rowWrapper = new RowWrapper();
- ButterKnife.inject(rowWrapper, convertView);
- convertView.setTag(rowWrapper);
- }
- RowWrapper rowWrapper = (RowWrapper) convertView.getTag();
- Post post = getItem(position);
- rowWrapper.title.setText(Html.fromHtml(post.getTitle()));
- String excerpt = post.getExcerpt() != null ? post.getExcerpt() : "";
- rowWrapper.text.setText(Html.fromHtml(excerpt.replaceAll("^", "").replaceAll("$
", "")));
- rowWrapper.author.setText(post.getAuthor().getName());
- rowWrapper.date.setText(DateFormatter.formatDate(post.getDate()));
- String imageUrl = post.getAuthor().getImageUrl();
- if (!TextUtils.isEmpty(imageUrl)) {
- Picasso.with(context).load(imageUrl).transform(transformation).into(rowWrapper.image);
- }
- return convertView;
- }
-
- public void reloadData(List posts) {
- this.posts = posts;
- notifyDataSetChanged();
- }
-
- static class RowWrapper {
- @InjectView(R.id.date) TextView date;
- @InjectView(R.id.author) TextView author;
- @InjectView(R.id.title) TextView title;
- @InjectView(R.id.text) TextView text;
- @InjectView(R.id.author_image) ImageView image;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/post/PostListComponent.java b/app/src/main/java/it/cosenonjaviste/post/PostListComponent.java
deleted file mode 100644
index 5cce721..0000000
--- a/app/src/main/java/it/cosenonjaviste/post/PostListComponent.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package it.cosenonjaviste.post;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-@Component(dependencies = ApplicationComponent.class)
-public interface PostListComponent {
- void inject(PostListFragment fragment);
-}
diff --git a/app/src/main/java/it/cosenonjaviste/post/PostListFragment.java b/app/src/main/java/it/cosenonjaviste/post/PostListFragment.java
deleted file mode 100644
index 06d9a5a..0000000
--- a/app/src/main/java/it/cosenonjaviste/post/PostListFragment.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package it.cosenonjaviste.post;
-
-import android.annotation.SuppressLint;
-import android.view.View;
-
-import com.quentindommerc.superlistview.SuperListview;
-
-import javax.inject.Inject;
-
-import butterknife.InjectView;
-import butterknife.OnClick;
-import it.cosenonjaviste.Dagger2CnjFragment;
-import it.cosenonjaviste.ObjectsMapRetainedFragment;
-import it.cosenonjaviste.R;
-import rx.functions.Actions;
-
-public class PostListFragment extends Dagger2CnjFragment {
-
- @InjectView(R.id.list) SuperListview list;
-
- @Inject PostListPresenter presenter;
-
- private PostAdapter adapter;
-
- @Override protected PostListPresenter injectAndCreatePresenter() {
- ObjectsMapRetainedFragment.getOrCreate(
- getChildFragmentManager(),
- PostListFragment.class.getName(),
- () -> DaggerPostListComponent.builder().applicationComponent(getComponent()).build()
- ).inject(this);
- return presenter;
- }
-
- @Override protected int getLayoutId() {
- return R.layout.super_list;
- }
-
- @SuppressLint("ResourceAsColor") @Override protected void initView(View view) {
- super.initView(view);
- adapter = new PostAdapter(getActivity());
- list.setAdapter(adapter);
- list.setRefreshingColor(android.R.color.holo_orange_light, android.R.color.holo_blue_light, android.R.color.holo_green_light, android.R.color.holo_red_light);
- list.setRefreshListener(presenter::reloadData);
- list.setOnItemClickListener((parent, v, position, id) -> presenter.goToDetail(adapter.getItem(position)));
- list.setupMoreListener((numberOfItems, numberBeforeMore, currentItemPos) -> presenter.loadNextPage(), 1);
- }
-
- @OnClick(R.id.error_retry) void retry() {
- presenter.reloadData();
- }
-
- @Override public void update(PostListModel model) {
- model.getItems().call(
- posts -> {
- list.showList();
- list.hideMoreProgress(model.isMoreDataAvailable());
- adapter.reloadData(posts);
- }
- ).whenError(
- t -> list.showError()
- ).whenEmpty(
- Actions.empty()
- );
- }
-
- public void startLoading(boolean showMainLoading) {
- if (showMainLoading) {
- list.showProgress();
- } else {
- list.setRefreshing(true);
- }
- }
-
- public void startMoreItemsLoading() {
- list.showMoreProgress();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/post/PostListModel.java b/app/src/main/java/it/cosenonjaviste/post/PostListModel.java
deleted file mode 100644
index c07a82a..0000000
--- a/app/src/main/java/it/cosenonjaviste/post/PostListModel.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package it.cosenonjaviste.post;
-
-import org.parceler.Parcel;
-
-import it.cosenonjaviste.lib.mvp.utils.OptionalList;
-import it.cosenonjaviste.model.Author;
-import it.cosenonjaviste.model.Category;
-import it.cosenonjaviste.model.Post;
-
-@Parcel
-public class PostListModel {
-
- OptionalList items = new OptionalList<>();
-
- Category category;
-
- boolean moreDataAvailable;
-
- Author author;
-
- public PostListModel() {
- }
-
- public PostListModel(Category category) {
- this.category = category;
- }
-
- public PostListModel(Author author) {
- this.author = author;
- }
-
- public Category getCategory() {
- return category;
- }
-
- public boolean isMoreDataAvailable() {
- return moreDataAvailable;
- }
-
- public void setMoreDataAvailable(boolean moreDataAvailable) {
- this.moreDataAvailable = moreDataAvailable;
- }
-
- public Author getAuthor() {
- return author;
- }
-
- public OptionalList getItems() {
- return items;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/post/PostListPresenter.java b/app/src/main/java/it/cosenonjaviste/post/PostListPresenter.java
deleted file mode 100644
index 90d6619..0000000
--- a/app/src/main/java/it/cosenonjaviste/post/PostListPresenter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package it.cosenonjaviste.post;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.lib.mvp.RxMvpPresenter;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.Author;
-import it.cosenonjaviste.model.Category;
-import it.cosenonjaviste.model.Post;
-import it.cosenonjaviste.model.PostResponse;
-import it.cosenonjaviste.model.WordPressService;
-import it.cosenonjaviste.page.PageFragment;
-import it.cosenonjaviste.page.PageModel;
-import it.cosenonjaviste.utils.PresenterScope;
-import rx.Observable;
-
-@PresenterScope
-public class PostListPresenter extends RxMvpPresenter {
-
- private WordPressService wordPressService;
-
- private boolean loadStarted;
-
- @Inject public PostListPresenter(SchedulerManager schedulerManager, WordPressService wordPressService) {
- super(schedulerManager);
- this.wordPressService = wordPressService;
- }
-
- @Override public void subscribe(MvpView view) {
- super.subscribe(view);
- if (model.getItems().isEmpty() && !loadStarted) {
- reloadData();
- }
- }
-
- public void reloadData() {
- Observable> observable = getObservable(1);
-
- subscribe(observable,
- () -> {
- loadStarted = true;
- getView().startLoading(model.getItems().isEmpty());
- },
- posts -> {
- model.getItems().done(new ArrayList<>(posts));
- model.setMoreDataAvailable(posts.size() == WordPressService.POST_PAGE_SIZE);
- view.update(model);
- }, throwable -> {
- model.getItems().error(throwable);
- view.update(model);
- });
- }
-
- public void goToDetail(Post item) {
- getView().open(PageFragment.class, new PageModel(item.getUrl()));
- }
-
- public void loadNextPage() {
- int page = calcNextPage(model.getItems().size(), WordPressService.POST_PAGE_SIZE);
- Observable> observable = getObservable(page);
-
- subscribe(observable,
- () -> getView().startMoreItemsLoading(),
- posts -> {
- model.getItems().append(posts);
- model.setMoreDataAvailable(posts.size() == WordPressService.POST_PAGE_SIZE);
- view.update(model);
- }, throwable -> {
- model.getItems().error(throwable);
- view.update(model);
- });
- }
-
- private Observable> getObservable(int page) {
- Observable observable;
- Category category = model.getCategory();
- if (category != null) {
- observable = wordPressService.listCategoryPosts(category.getId(), page);
- } else {
- Author author = model.getAuthor();
- if (author != null) {
- observable = wordPressService.listAuthorPosts(author.getId(), page);
- } else {
- observable = wordPressService.listPosts(page);
- }
- }
- return observable.map(PostResponse::getPosts);
- }
-
- private static int calcNextPage(int size, int pageSize) {
- return size / pageSize + 1;
- }
-
- @Override public PostListFragment getView() {
- return (PostListFragment) super.getView();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/twitter/TweetAdapter.java b/app/src/main/java/it/cosenonjaviste/twitter/TweetAdapter.java
deleted file mode 100644
index ca8a17a..0000000
--- a/app/src/main/java/it/cosenonjaviste/twitter/TweetAdapter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-package it.cosenonjaviste.twitter;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.squareup.picasso.Picasso;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.ButterKnife;
-import butterknife.InjectView;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.model.Tweet;
-import it.cosenonjaviste.utils.CircleTransform;
-import it.cosenonjaviste.utils.DateFormatter;
-
-public class TweetAdapter extends BaseAdapter {
-
- private List items = new ArrayList<>();
-
- private Context context;
-
- private CircleTransform transformation;
-
- public TweetAdapter(Context context) {
- this.context = context;
- transformation = CircleTransform.createWithBorder(context, R.dimen.author_image_size, R.color.colorPrimary, R.dimen.author_image_border);
- }
-
- @Override public int getCount() {
- return items.size();
- }
-
- @Override public Tweet getItem(int position) {
- return items.get(position);
- }
-
- @Override public long getItemId(int position) {
- return getItem(position).getId();
- }
-
- @Override public View getView(int position, View convertView, ViewGroup parent) {
- if (convertView == null) {
- convertView = LayoutInflater.from(context).inflate(R.layout.tweet_row, parent, false);
- RowWrapper rowWrapper = new RowWrapper();
- ButterKnife.inject(rowWrapper, convertView);
- convertView.setTag(rowWrapper);
- }
- RowWrapper rowWrapper = (RowWrapper) convertView.getTag();
- Tweet item = getItem(position);
- rowWrapper.title.setText(item.getText());
- rowWrapper.author.setText(item.getAuthor());
- rowWrapper.date.setText(DateFormatter.formatDate(item.getCreatedAt()));
- String imageUrl = item.getUserImage();
- if (!TextUtils.isEmpty(imageUrl)) {
- Picasso.with(context).load(imageUrl).transform(transformation).into(rowWrapper.image);
- }
- return convertView;
- }
-
- public void reloadData(List items) {
- this.items = items;
- notifyDataSetChanged();
- }
-
- static class RowWrapper {
- @InjectView(R.id.date) TextView date;
- @InjectView(R.id.author) TextView author;
- @InjectView(R.id.title) TextView title;
- @InjectView(R.id.author_image) ImageView image;
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/twitter/TweetListComponent.java b/app/src/main/java/it/cosenonjaviste/twitter/TweetListComponent.java
deleted file mode 100644
index 38e6e53..0000000
--- a/app/src/main/java/it/cosenonjaviste/twitter/TweetListComponent.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package it.cosenonjaviste.twitter;
-
-import dagger.Component;
-import it.cosenonjaviste.ApplicationComponent;
-import it.cosenonjaviste.utils.PresenterScope;
-
-@PresenterScope
-@Component(dependencies = ApplicationComponent.class)
-public interface TweetListComponent {
- void inject(TweetListFragment fragment);
-}
diff --git a/app/src/main/java/it/cosenonjaviste/twitter/TweetListFragment.java b/app/src/main/java/it/cosenonjaviste/twitter/TweetListFragment.java
deleted file mode 100644
index 4469bbe..0000000
--- a/app/src/main/java/it/cosenonjaviste/twitter/TweetListFragment.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package it.cosenonjaviste.twitter;
-
-import android.annotation.SuppressLint;
-import android.view.View;
-
-import com.quentindommerc.superlistview.SuperListview;
-
-import javax.inject.Inject;
-
-import butterknife.InjectView;
-import butterknife.OnClick;
-import it.cosenonjaviste.Dagger2CnjFragment;
-import it.cosenonjaviste.ObjectsMapRetainedFragment;
-import it.cosenonjaviste.R;
-import it.cosenonjaviste.lib.mvp.MvpPresenter;
-import rx.functions.Actions;
-
-public class TweetListFragment extends Dagger2CnjFragment {
-
- @InjectView(R.id.list) SuperListview list;
-
- private TweetAdapter adapter;
-
- @Inject TweetListPresenter presenter;
-
- @Override protected MvpPresenter injectAndCreatePresenter() {
- ObjectsMapRetainedFragment.getOrCreate(
- getChildFragmentManager(),
- TweetListFragment.class.getName(),
- () -> DaggerTweetListComponent.builder().applicationComponent(getComponent()).build()
- ).inject(this);
- return presenter;
- }
-
- @Override protected int getLayoutId() {
- return R.layout.super_list;
- }
-
- @SuppressLint("ResourceAsColor") @Override protected void initView(View view) {
- super.initView(view);
- adapter = new TweetAdapter(getActivity());
- list.setAdapter(adapter);
- list.setRefreshingColor(android.R.color.holo_orange_light, android.R.color.holo_blue_light, android.R.color.holo_green_light, android.R.color.holo_red_light);
- list.setRefreshListener(presenter::reloadData);
- list.setupMoreListener((numberOfItems, numberBeforeMore, currentItemPos) -> presenter.loadNextPage(), 1);
- }
-
- @OnClick(R.id.error_retry) void retry() {
- presenter.reloadData();
- }
-
- @Override public void update(TweetListModel model) {
- model.call(
- items -> {
- list.showList();
- list.hideMoreProgress(model.isMoreDataAvailable());
- adapter.reloadData(items);
- }
- ).whenError(
- t -> list.showError()
- ).whenEmpty(
- Actions.empty()
- );
- }
-
- public void startLoading(boolean showMainLoading) {
- if (showMainLoading) {
- list.showProgress();
- } else {
- list.setRefreshing(true);
- }
- }
-
- public void startMoreItemsLoading() {
- list.showMoreProgress();
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/twitter/TweetListModel.java b/app/src/main/java/it/cosenonjaviste/twitter/TweetListModel.java
deleted file mode 100644
index 7ddcf70..0000000
--- a/app/src/main/java/it/cosenonjaviste/twitter/TweetListModel.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package it.cosenonjaviste.twitter;
-
-import org.parceler.Parcel;
-
-import java.util.List;
-
-import it.cosenonjaviste.lib.mvp.utils.OptionalItem;
-import it.cosenonjaviste.lib.mvp.utils.OptionalList;
-import it.cosenonjaviste.model.Tweet;
-import rx.functions.Action1;
-
-@Parcel
-public class TweetListModel {
- OptionalList list = new OptionalList<>();
-
- boolean moreDataAvailable;
-
- public void setMoreDataAvailable(boolean moreDataAvailable) {
- this.moreDataAvailable = moreDataAvailable;
- }
-
- public boolean isMoreDataAvailable() {
- return moreDataAvailable;
- }
-
- public OptionalItem> call(Action1> action) {
- return list.call(action);
- }
-
- public boolean isEmpty() {
- return list.isEmpty();
- }
-
- public void done(List object) {
- list.done(object);
- }
-
- public void error(Throwable throwable) {
- list.error(throwable);
- }
-
- public int size() {
- return list.size();
- }
-
- public boolean isError() {
- return list.isError();
- }
-
- public void append(List object) {
- list.append(object);
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/twitter/TweetListPresenter.java b/app/src/main/java/it/cosenonjaviste/twitter/TweetListPresenter.java
deleted file mode 100644
index 015e5cc..0000000
--- a/app/src/main/java/it/cosenonjaviste/twitter/TweetListPresenter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package it.cosenonjaviste.twitter;
-
-import java.util.List;
-
-import javax.inject.Inject;
-
-import it.cosenonjaviste.lib.mvp.MvpView;
-import it.cosenonjaviste.lib.mvp.RxMvpPresenter;
-import it.cosenonjaviste.lib.mvp.utils.SchedulerManager;
-import it.cosenonjaviste.model.Tweet;
-import it.cosenonjaviste.model.TwitterService;
-import it.cosenonjaviste.utils.PresenterScope;
-import rx.Observable;
-
-@PresenterScope
-public class TweetListPresenter extends RxMvpPresenter {
-
- private TwitterService twitterService;
-
- private boolean loadStarted;
-
- @Inject public TweetListPresenter(SchedulerManager schedulerManager, TwitterService twitterService) {
- super(schedulerManager);
- this.twitterService = twitterService;
- }
-
- public void reloadData() {
- Observable> observable = twitterService.loadTweets(1);
-
- subscribe(observable,
- () -> {
- loadStarted = true;
- getView().startLoading(model.isEmpty());
- },
- posts -> {
- model.done(posts);
- model.setMoreDataAvailable(posts.size() == TwitterService.PAGE_SIZE);
- view.update(model);
- }, throwable -> {
- model.error(throwable);
- view.update(model);
- });
- }
-
- @Override public void subscribe(MvpView view) {
- super.subscribe(view);
- if (model.isEmpty() && !loadStarted) {
- reloadData();
- }
- }
-
- public void loadNextPage() {
- int page = calcNextPage(model.size(), TwitterService.PAGE_SIZE);
- Observable> observable = twitterService.loadTweets(page);
-
- subscribe(observable,
- () -> getView().startMoreItemsLoading(),
- posts -> {
- model.append(posts);
- model.setMoreDataAvailable(posts.size() == TwitterService.PAGE_SIZE);
- view.update(model);
- }, throwable -> {
- model.error(throwable);
- view.update(model);
- });
-
- }
-
- private static int calcNextPage(int size, int pageSize) {
- return size / pageSize + 1;
- }
-
- @Override public TweetListFragment getView() {
- return (TweetListFragment) super.getView();
- }
-}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/AndroidNavigator.java b/app/src/main/java/it/cosenonjaviste/ui/AndroidNavigator.java
new file mode 100644
index 0000000..1c28d81
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/AndroidNavigator.java
@@ -0,0 +1,58 @@
+package it.cosenonjaviste.ui;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.design.widget.Snackbar;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentActivity;
+
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.post.PostListArgument;
+import it.cosenonjaviste.model.Post;
+import it.cosenonjaviste.ui.page.PageFragment;
+import it.cosenonjaviste.ui.post.PostListFragment;
+import it.cosenonjaviste.ui.utils.SingleFragmentActivity;
+
+public class AndroidNavigator extends Navigator {
+
+ private FragmentActivity activity;
+
+ @Override
+ public void onCreate(Object view, Bundle savedInstanceState, Intent intent, Bundle arguments) {
+ if (view instanceof Fragment) {
+ activity = ((Fragment) view).getActivity();
+ } else {
+ activity = (FragmentActivity) view;
+ }
+ }
+
+ @Override
+ public void onDestroy(Object view, boolean changingConfigurations) {
+ activity = null;
+ }
+
+ @Override
+ public void openPostList(PostListArgument argument) {
+ SingleFragmentActivity.open(activity, PostListFragment.class, argument);
+ }
+
+ @Override
+ public void openDetail(Post post) {
+ SingleFragmentActivity.open(activity, PageFragment.class, post);
+ }
+
+ @Override
+ public void share(String subject, String text) {
+ Intent sendIntent = new Intent();
+ sendIntent.setAction(Intent.ACTION_SEND);
+ sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
+ sendIntent.putExtra(Intent.EXTRA_TEXT, text);
+ sendIntent.setType("text/plain");
+ activity.startActivity(Intent.createChooser(sendIntent, activity.getResources().getText(R.string.share_post)));
+ }
+
+ @Override public void showMessage(int message) {
+ Snackbar.make(activity.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG).show();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/AppModule.java b/app/src/main/java/it/cosenonjaviste/ui/AppModule.java
new file mode 100644
index 0000000..1cd198c
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/AppModule.java
@@ -0,0 +1,107 @@
+package it.cosenonjaviste.ui;
+
+import android.app.Application;
+import android.util.Base64;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.nytimes.android.external.store2.base.impl.Store;
+import com.nytimes.android.external.store2.base.impl.StoreBuilder;
+
+import java.util.List;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+import it.cosenonjaviste.BuildConfig;
+import it.cosenonjaviste.core.Navigator;
+import it.cosenonjaviste.core.utils.DenvelopingConverter;
+import it.cosenonjaviste.model.Author;
+import it.cosenonjaviste.model.MailJetService;
+import it.cosenonjaviste.model.MyAdapterFactory;
+import it.cosenonjaviste.model.Post;
+import it.cosenonjaviste.model.TwitterService;
+import it.cosenonjaviste.model.WordPressService;
+import okhttp3.OkHttpClient;
+import okhttp3.Request;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+@Module
+public class AppModule {
+
+ private Application application;
+
+ public AppModule(Application application) {
+ this.application = application;
+ }
+
+ @Provides @Singleton public Gson provideGson() {
+ return new GsonBuilder()
+ .setDateFormat("yyyy-MM-dd HH:mm:ss")
+ .registerTypeAdapterFactory(MyAdapterFactory.create())
+ .create();
+ }
+
+ @Provides @Singleton public WordPressService provideWordPressService(Gson gson) {
+ Retrofit retrofit = new Retrofit.Builder()
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .addConverterFactory(new DenvelopingConverter(gson))
+ .addConverterFactory(GsonConverterFactory.create(gson))
+ .baseUrl("http://www.codingjam.it/")
+ .build();
+
+ return retrofit.create(WordPressService.class);
+ }
+
+ @Provides @Singleton public MailJetService provideMailJetService(Gson gson) {
+ OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
+
+ httpClient.addNetworkInterceptor(chain -> {
+ String userName = BuildConfig.MAILJET_USERNAME;
+ String password = BuildConfig.MAILJET_PASSWORD;
+ String string = "Basic " + Base64.encodeToString((userName + ":" + password).getBytes(), Base64.NO_WRAP);
+
+ Request original = chain.request();
+ Request.Builder builder = original.newBuilder();
+ builder.header("Authorization", string);
+ Request request = builder.build();
+
+ return chain.proceed(request);
+ });
+
+ Retrofit retrofit = new Retrofit.Builder()
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .addConverterFactory(GsonConverterFactory.create(gson))
+ .baseUrl("https://api.mailjet.com/v3")
+ .build();
+
+ return retrofit.create(MailJetService.class);
+ }
+
+ @Provides @Singleton public TwitterService provideTwitterService() {
+ return new TwitterService(BuildConfig.CONSUMER_KEY, BuildConfig.CONSUMER_SECRET, BuildConfig.ACCESS_TOKEN, BuildConfig.ACCESS_TOKEN_SECRET);
+ }
+
+ @Provides public Navigator provideNavigator() {
+ return new AndroidNavigator();
+ }
+
+ @Provides @Singleton
+ public Store, Integer> postListStore(WordPressService wordPressService) {
+ return StoreBuilder.>key()
+ .fetcher(integer -> wordPressService.listPosts(integer).toObservable())
+// .persister(persister)
+ .open();
+ }
+
+ @Provides @Singleton
+ public Store, Integer> authorListStore(WordPressService wordPressService) {
+ return StoreBuilder.>key()
+ .fetcher(integer -> wordPressService.listAuthors().toObservable())
+// .persister(persister)
+ .open();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/ApplicationComponent.java b/app/src/main/java/it/cosenonjaviste/ui/ApplicationComponent.java
new file mode 100644
index 0000000..f2eefc4
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/ApplicationComponent.java
@@ -0,0 +1,34 @@
+package it.cosenonjaviste.ui;
+
+import android.support.annotation.VisibleForTesting;
+
+import com.google.gson.Gson;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+import it.cosenonjaviste.ui.author.AuthorListFragment;
+import it.cosenonjaviste.ui.category.CategoryListFragment;
+import it.cosenonjaviste.ui.contact.ContactFragment;
+import it.cosenonjaviste.ui.page.PageFragment;
+import it.cosenonjaviste.ui.post.PostListFragment;
+import it.cosenonjaviste.ui.twitter.TweetListFragment;
+
+@Singleton
+@Component(modules = {AppModule.class})
+public interface ApplicationComponent {
+
+ @VisibleForTesting Gson gson();
+
+ void inject(PostListFragment postListFragment);
+
+ void inject(AuthorListFragment authorListFragment);
+
+ void inject(PageFragment pageFragment);
+
+ void inject(TweetListFragment tweetListFragment);
+
+ void inject(ContactFragment contactFragment);
+
+ void inject(CategoryListFragment categoryListFragment);
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/CoseNonJavisteApp.java b/app/src/main/java/it/cosenonjaviste/ui/CoseNonJavisteApp.java
new file mode 100644
index 0000000..11c411b
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/CoseNonJavisteApp.java
@@ -0,0 +1,43 @@
+package it.cosenonjaviste.ui;
+
+import android.app.Application;
+import android.content.Context;
+import android.support.v4.app.Fragment;
+
+import com.crashlytics.android.Crashlytics;
+import com.squareup.leakcanary.LeakCanary;
+
+import io.fabric.sdk.android.Fabric;
+import it.cosenonjaviste.BuildConfig;
+
+public class CoseNonJavisteApp extends Application {
+
+ private ApplicationComponent component;
+
+ @Override public void onCreate() {
+ super.onCreate();
+ if (!BuildConfig.DEBUG) {
+ Fabric.with(this, new Crashlytics());
+ }
+ LeakCanary.install(this);
+ component = DaggerApplicationComponent.builder()
+ .appModule(new AppModule(this))
+ .build();
+ }
+
+ public ApplicationComponent getComponent() {
+ return component;
+ }
+
+ public static ApplicationComponent getComponent(Fragment fragment) {
+ return getComponent(fragment.getActivity());
+ }
+
+ public static ApplicationComponent getComponent(Context context) {
+ return ((CoseNonJavisteApp) context.getApplicationContext()).getComponent();
+ }
+
+ public void setComponent(ApplicationComponent component) {
+ this.component = component;
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/MainActivity.java b/app/src/main/java/it/cosenonjaviste/ui/MainActivity.java
new file mode 100755
index 0000000..1896ceb
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/MainActivity.java
@@ -0,0 +1,87 @@
+package it.cosenonjaviste.ui;
+
+import android.databinding.DataBindingUtil;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.GravityCompat;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
+import android.view.MenuItem;
+
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.databinding.ActivityMainBinding;
+import it.cosenonjaviste.ui.author.AuthorListFragment;
+import it.cosenonjaviste.ui.category.CategoryListFragment;
+import it.cosenonjaviste.ui.contact.ContactFragment;
+import it.cosenonjaviste.ui.post.PostListFragment;
+import it.cosenonjaviste.ui.twitter.TweetListFragment;
+
+public class MainActivity extends AppCompatActivity {
+ private ActivityMainBinding binding;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
+
+ setSupportActionBar(binding.toolbar);
+
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
+ }
+
+ binding.drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
+ binding.leftDrawerMenu.setNavigationItemSelectedListener(menuItem -> {
+ selectItem(menuItem.getItemId());
+ menuItem.setChecked(true);
+ return true;
+ });
+
+ if (savedInstanceState == null) {
+ selectItem(R.id.drawer_post);
+ binding.leftDrawerMenu.getMenu().findItem(R.id.drawer_post).setChecked(true);
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ binding.drawerLayout.openDrawer(GravityCompat.START);
+ return true;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void selectItem(int menuItemId) {
+ String tag = "fragment_" + menuItemId;
+ Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag);
+
+ if (fragment == null) {
+ fragment = createFragment(menuItemId);
+ }
+
+ getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment, tag).commit();
+
+ binding.drawerLayout.closeDrawer(binding.leftDrawerMenu);
+ }
+
+ private Fragment createFragment(int menuItemId) {
+ switch (menuItemId) {
+ case R.id.drawer_categories:
+ return Fragment.instantiate(this, CategoryListFragment.class.getName());
+ case R.id.drawer_authors:
+ return Fragment.instantiate(this, AuthorListFragment.class.getName());
+ case R.id.drawer_twitter:
+ return Fragment.instantiate(this, TweetListFragment.class.getName());
+ case R.id.drawer_contacts:
+ return Fragment.instantiate(this, ContactFragment.class.getName());
+ default:
+ return Fragment.instantiate(this, PostListFragment.class.getName());
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/ui/MessageManager.java b/app/src/main/java/it/cosenonjaviste/ui/MessageManager.java
new file mode 100644
index 0000000..f355b46
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/MessageManager.java
@@ -0,0 +1,12 @@
+package it.cosenonjaviste.ui;
+
+import android.app.Activity;
+import android.support.design.widget.Snackbar;
+
+public class MessageManager {
+ public void showMessage(Activity activity, int message) {
+ if (activity != null) {
+ Snackbar.make(activity.findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG).show();
+ }
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/author/AuthorListFragment.java b/app/src/main/java/it/cosenonjaviste/ui/author/AuthorListFragment.java
new file mode 100644
index 0000000..6110801
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/author/AuthorListFragment.java
@@ -0,0 +1,41 @@
+package it.cosenonjaviste.ui.author;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+
+import it.codingjam.lifecyclebinder.LifeCycleBinder;
+import it.codingjam.lifecyclebinder.RetainedObjectProvider;
+import it.cosenonjaviste.core.author.AuthorListViewModel;
+import it.cosenonjaviste.databinding.AuthorCellBinding;
+import it.cosenonjaviste.databinding.RecyclerBinding;
+import it.cosenonjaviste.ui.CoseNonJavisteApp;
+import it.cosenonjaviste.ui.utils.RecyclerBindingBuilder;
+
+public class AuthorListFragment extends Fragment {
+
+ @RetainedObjectProvider("viewModel") @Inject Provider provider;
+
+ AuthorListViewModel viewModel;
+
+// @BindLifeCycle @Inject AuthorListViewModel viewModel;
+
+ @Override public void onCreate(Bundle state) {
+ super.onCreate(state);
+ CoseNonJavisteApp.getComponent(this).inject(this);
+ LifeCycleBinder.bind(this);
+ }
+
+ @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ return new RecyclerBindingBuilder<>(viewModel, RecyclerBinding.inflate(inflater, container, false))
+ .gridLayoutManager(2)
+ .viewHolder(viewGroup -> new AuthorViewHolder(AuthorCellBinding.inflate(inflater, viewGroup, false), viewModel))
+ .getRoot();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/author/AuthorViewHolder.java b/app/src/main/java/it/cosenonjaviste/ui/author/AuthorViewHolder.java
new file mode 100644
index 0000000..1ab37de
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/author/AuthorViewHolder.java
@@ -0,0 +1,33 @@
+package it.cosenonjaviste.ui.author;
+
+import android.databinding.ObservableField;
+
+import it.cosenonjaviste.core.author.AuthorListViewModel;
+import it.cosenonjaviste.databinding.AuthorCellBinding;
+import it.cosenonjaviste.model.Author;
+import it.cosenonjaviste.ui.recycler.BindableViewHolder;
+
+
+public class AuthorViewHolder extends BindableViewHolder {
+ public final ObservableField item = new ObservableField<>();
+
+ private AuthorCellBinding binding;
+
+ private AuthorListViewModel viewModel;
+
+ public AuthorViewHolder(AuthorCellBinding binding, AuthorListViewModel viewModel) {
+ super(binding.getRoot());
+ this.binding = binding;
+ this.viewModel = viewModel;
+ binding.setViewHolder(this);
+ }
+
+ @Override public void bind(Author item) {
+ this.item.set(item);
+ binding.executePendingBindings();
+ }
+
+ public void onItemClicked() {
+ viewModel.goToAuthorDetail(getAdapterPosition());
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/bind/DataBindingConverters.java b/app/src/main/java/it/cosenonjaviste/ui/bind/DataBindingConverters.java
new file mode 100644
index 0000000..84be910
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/bind/DataBindingConverters.java
@@ -0,0 +1,88 @@
+package it.cosenonjaviste.ui.bind;
+
+import android.databinding.BindingAdapter;
+import android.databinding.BindingConversion;
+import android.support.design.widget.TextInputLayout;
+import android.text.Html;
+import android.text.TextUtils;
+import android.view.View;
+import android.webkit.WebView;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+
+import java.util.Date;
+
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.ui.utils.CircleTransform;
+import it.cosenonjaviste.ui.utils.DateFormatter;
+
+public class DataBindingConverters {
+
+ private static CircleTransform circleTransformation;
+
+ @BindingConversion
+ public static CharSequence convertDateToCharSequence(Date date) {
+ return DateFormatter.formatDate(date);
+ }
+
+ @BindingAdapter("error")
+ public static void bindValidationError(TextInputLayout textInputLayout, int errorRes) {
+ if (errorRes != 0) {
+ textInputLayout.setError(textInputLayout.getResources().getString(errorRes));
+ } else {
+ textInputLayout.setError(null);
+ }
+ }
+
+ @BindingAdapter("visibleOrGone")
+ public static void bindVisibleOrGone(View view, boolean b) {
+ view.setVisibility(b ? View.VISIBLE : View.GONE);
+ }
+
+ @BindingAdapter("visible")
+ public static void bindVisible(View view, boolean b) {
+ view.setVisibility(b ? View.VISIBLE : View.INVISIBLE);
+ }
+
+ @BindingAdapter("userImageUrl")
+ public static void loadUserImage(ImageView view, String url) {
+ if (!TextUtils.isEmpty(url)) {
+ if (circleTransformation == null) {
+ circleTransformation = CircleTransform.createWithBorder(view.getResources(), R.dimen.author_image_size_big, R.color.colorPrimary, R.dimen.author_image_border);
+ }
+ Picasso.with(view.getContext()).load(url).transform(circleTransformation).into(view);
+ } else {
+ view.setImageDrawable(null);
+ }
+ }
+
+ @BindingAdapter("imageUrl")
+ public static void loadImage(ImageView view, String url) {
+ if (!TextUtils.isEmpty(url)) {
+ Picasso.with(view.getContext()).load(url).into(view);
+ } else {
+ view.setImageDrawable(null);
+ }
+ }
+
+ @BindingAdapter("textHtml")
+ public static void bindHtmlText(TextView view, String text) {
+ if (text != null) {
+ view.setText(Html.fromHtml(text));
+ } else {
+ view.setText("");
+ }
+ }
+
+ @BindingAdapter("android:onClick")
+ public static void bindOnClick(View view, Runnable listener) {
+ view.setOnClickListener(v -> listener.run());
+ }
+
+ @BindingAdapter("url")
+ public static void bindOnClick(WebView view, String url) {
+ view.loadUrl(url);
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/category/CategoryListFragment.java b/app/src/main/java/it/cosenonjaviste/ui/category/CategoryListFragment.java
new file mode 100644
index 0000000..ea9a25f
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/category/CategoryListFragment.java
@@ -0,0 +1,39 @@
+package it.cosenonjaviste.ui.category;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+
+import it.codingjam.lifecyclebinder.LifeCycleBinder;
+import it.codingjam.lifecyclebinder.RetainedObjectProvider;
+import it.cosenonjaviste.core.category.CategoryListViewModel;
+import it.cosenonjaviste.databinding.CategoryRowBinding;
+import it.cosenonjaviste.databinding.RecyclerBinding;
+import it.cosenonjaviste.ui.CoseNonJavisteApp;
+import it.cosenonjaviste.ui.utils.RecyclerBindingBuilder;
+
+public class CategoryListFragment extends Fragment {
+
+ @RetainedObjectProvider("viewModel") @Inject Provider provider;
+
+ CategoryListViewModel viewModel;
+
+ @Override public void onCreate(Bundle state) {
+ super.onCreate(state);
+ CoseNonJavisteApp.getComponent(this).inject(this);
+ LifeCycleBinder.bind(this);
+ }
+
+ @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ return new RecyclerBindingBuilder<>(viewModel, RecyclerBinding.inflate(inflater, container, false))
+ .gridLayoutManager(2)
+ .viewHolder(viewGroup -> new CategoryViewHolder(CategoryRowBinding.inflate(inflater, viewGroup, false), viewModel))
+ .getRoot();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/category/CategoryViewHolder.java b/app/src/main/java/it/cosenonjaviste/ui/category/CategoryViewHolder.java
new file mode 100644
index 0000000..4b44546
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/category/CategoryViewHolder.java
@@ -0,0 +1,33 @@
+package it.cosenonjaviste.ui.category;
+
+import android.databinding.ObservableField;
+
+import it.cosenonjaviste.core.category.CategoryListViewModel;
+import it.cosenonjaviste.databinding.CategoryRowBinding;
+import it.cosenonjaviste.model.Category;
+import it.cosenonjaviste.ui.recycler.BindableViewHolder;
+
+
+public class CategoryViewHolder extends BindableViewHolder {
+ public final ObservableField item = new ObservableField<>();
+
+ private CategoryRowBinding binding;
+
+ private CategoryListViewModel viewModel;
+
+ public CategoryViewHolder(CategoryRowBinding binding, CategoryListViewModel viewModel) {
+ super(binding.getRoot());
+ this.binding = binding;
+ this.viewModel = viewModel;
+ binding.setViewHolder(this);
+ }
+
+ @Override public void bind(Category item) {
+ this.item.set(item);
+ binding.executePendingBindings();
+ }
+
+ public void onItemClicked() {
+ viewModel.goToPosts(getAdapterPosition());
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/contact/ContactFragment.java b/app/src/main/java/it/cosenonjaviste/ui/contact/ContactFragment.java
new file mode 100644
index 0000000..2f84eef
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/contact/ContactFragment.java
@@ -0,0 +1,37 @@
+package it.cosenonjaviste.ui.contact;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+
+import it.codingjam.lifecyclebinder.LifeCycleBinder;
+import it.codingjam.lifecyclebinder.RetainedObjectProvider;
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.core.contact.ContactViewModel;
+import it.cosenonjaviste.databinding.ContactBinding;
+import it.cosenonjaviste.ui.CoseNonJavisteApp;
+
+public class ContactFragment extends Fragment {
+
+ @RetainedObjectProvider("viewModel") @Inject Provider provider;
+
+ ContactViewModel viewModel;
+
+ @Override public void onCreate(Bundle state) {
+ super.onCreate(state);
+ CoseNonJavisteApp.getComponent(this).inject(this);
+ LifeCycleBinder.bind(this);
+ }
+
+ @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ ContactBinding binding = ContactBinding.bind(inflater.inflate(R.layout.contact, container, false));
+ binding.setViewModel(viewModel);
+ return binding.getRoot();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/page/PageFragment.java b/app/src/main/java/it/cosenonjaviste/ui/page/PageFragment.java
new file mode 100644
index 0000000..794b0d6
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/page/PageFragment.java
@@ -0,0 +1,122 @@
+package it.cosenonjaviste.ui.page;
+
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.AppCompatActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.IOException;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+
+import it.codingjam.lifecyclebinder.LifeCycleBinder;
+import it.codingjam.lifecyclebinder.RetainedObjectProvider;
+import it.cosenonjaviste.R;
+import it.cosenonjaviste.core.page.PageViewModel;
+import it.cosenonjaviste.databinding.PostDetailBinding;
+import it.cosenonjaviste.ui.CoseNonJavisteApp;
+
+public class PageFragment extends Fragment {
+
+ @RetainedObjectProvider("viewModel") @Inject Provider provider;
+
+ PageViewModel viewModel;
+
+ @Override public void onCreate(Bundle state) {
+ super.onCreate(state);
+ CoseNonJavisteApp.getComponent(this).inject(this);
+ LifeCycleBinder.bind(this);
+ }
+
+ @SuppressLint("SetJavaScriptEnabled") @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ PostDetailBinding binding = PostDetailBinding.bind(inflater.inflate(R.layout.post_detail, container, false));
+ binding.setViewModel(viewModel);
+
+ AppCompatActivity activity = (AppCompatActivity) getActivity();
+ activity.setSupportActionBar(binding.toolbar);
+ activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ WebSettings settings = binding.webView.getSettings();
+ settings.setJavaScriptEnabled(true);
+ File externalFilesDir = getActivity().getExternalFilesDir(null);
+ if (externalFilesDir != null) {
+ settings.setAppCachePath(externalFilesDir.getAbsolutePath());
+ settings.setAppCacheMaxSize(20 * 1024 * 1024);
+ settings.setAppCacheEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ }
+
+ binding.collapsingToolbar.setTitle("");
+
+ binding.webView.setWebViewClient(new WebViewClient() {
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView webView, String url) {
+ webView.loadUrl(url);
+ return true;
+ }
+
+ @Override public WebResourceResponse shouldInterceptRequest(WebView view11, String url) {
+ if (url.contains("codingjam.it/wp-content/themes/bliss/style.css?ver=4.4.2")) {
+ return getCssWebResourceResponseFromAsset();
+ }
+ if (url.startsWith("https://pbs.twimg.com/")
+ || url.startsWith("https://cdn.syndication.twimg.com/")
+ || url.startsWith("https://syndication.twitter.com")
+ || url.contains("platform.twitter.com/")
+ || url.startsWith("http://www.facebook.com/plugins/like_box.php")
+ || url.startsWith("https://fbcdn-profile-")
+ || url.contains("sharethis.com/")
+ || url.contains("disquscdn.com/")
+ || url.contains("sharethis-gtm-pixel")
+ || url.contains("facebook.com/")
+ || url.contains("fbcdn.net/")
+ || url.contains("/contact-form-7/")
+ || url.contains("/catablog/")
+ || url.contains("/advanced-random-posts-widget/")
+ || url.contains("/yet-another-related-posts-plugin/")
+ || url.contains("/wp-social-seo-booster/")
+ || url.contains("/extended-categories-widget/")
+ || url.contains("google-analytics.com/")
+ || url.contains("cf_action=sync_comments")
+ || url.startsWith("http://www.cosenonjaviste.it/wp-includes/js/comment-reply.min.js")
+ || url.startsWith("https://fbstatic-a.akamaihd.net")
+ || url.startsWith("https://glitter.services.disqus.com")
+ || url.startsWith("http://connect.facebook.net")
+ || url.startsWith("http://disqus.com/")
+ || url.startsWith("https://referrer.disqus.com")
+ || url.startsWith("http://cosenonjaviste.disqus.com/")
+ || url.equals("http://www.cosenonjaviste.it/wp-content/uploads/2013/06/favicon.ico")
+ ) {
+ return new WebResourceResponse("", "", new ByteArrayInputStream(new byte[0]));
+ }
+ return super.shouldInterceptRequest(view11, url);
+ }
+
+ private WebResourceResponse getCssWebResourceResponseFromAsset() {
+ try {
+ return new WebResourceResponse("text/css", "UTF-8", getActivity().getAssets().open("style.css"));
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ @Override
+ public void onPageFinished(WebView webView, String url) {
+ super.onPageFinished(webView, url);
+ viewModel.htmlLoaded();
+ }
+ });
+ return binding.getRoot();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/post/PostListFragment.java b/app/src/main/java/it/cosenonjaviste/ui/post/PostListFragment.java
new file mode 100644
index 0000000..b956979
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/post/PostListFragment.java
@@ -0,0 +1,52 @@
+package it.cosenonjaviste.ui.post;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
+import android.support.v7.app.AppCompatActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import javax.inject.Inject;
+import javax.inject.Provider;
+
+import it.codingjam.lifecyclebinder.LifeCycleBinder;
+import it.codingjam.lifecyclebinder.RetainedObjectProvider;
+import it.cosenonjaviste.core.post.PostListViewModel;
+import it.cosenonjaviste.databinding.PostRowBinding;
+import it.cosenonjaviste.databinding.RecyclerBinding;
+import it.cosenonjaviste.ui.CoseNonJavisteApp;
+import it.cosenonjaviste.ui.utils.RecyclerBindingBuilder;
+
+public class PostListFragment extends Fragment {
+
+ @RetainedObjectProvider("viewModel") @Inject Provider provider;
+
+ PostListViewModel viewModel;
+
+ @Override public void onCreate(Bundle state) {
+ super.onCreate(state);
+ CoseNonJavisteApp.getComponent(this).inject(this);
+ LifeCycleBinder.bind(this);
+ }
+
+ @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+ RecyclerBinding binding = RecyclerBinding.inflate(inflater, container, false);
+ AppCompatActivity activity = (AppCompatActivity) getActivity();
+
+ if (viewModel.isToolbarVisible()) {
+ binding.toolbar.setVisibility(View.VISIBLE);
+ activity.setSupportActionBar(binding.toolbar);
+ if (activity.getSupportActionBar() != null) {
+ activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ activity.getSupportActionBar().setTitle(viewModel.getToolbarTitle());
+ }
+ }
+
+ return new RecyclerBindingBuilder<>(viewModel, binding)
+ .viewHolder(viewGroup -> new PostViewHolder(PostRowBinding.inflate(inflater, viewGroup, false), viewModel))
+ .loadMoreListener(viewModel::loadNextPage)
+ .getRoot();
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/post/PostViewHolder.java b/app/src/main/java/it/cosenonjaviste/ui/post/PostViewHolder.java
new file mode 100644
index 0000000..69cef10
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/post/PostViewHolder.java
@@ -0,0 +1,33 @@
+package it.cosenonjaviste.ui.post;
+
+import android.databinding.ObservableField;
+
+import it.cosenonjaviste.core.post.PostListViewModel;
+import it.cosenonjaviste.databinding.PostRowBinding;
+import it.cosenonjaviste.model.Post;
+import it.cosenonjaviste.ui.recycler.BindableViewHolder;
+
+
+public class PostViewHolder extends BindableViewHolder {
+ public final ObservableField item = new ObservableField<>();
+
+ private PostRowBinding binding;
+
+ private PostListViewModel viewModel;
+
+ public PostViewHolder(PostRowBinding binding, PostListViewModel viewModel) {
+ super(binding.getRoot());
+ this.binding = binding;
+ this.viewModel = viewModel;
+ binding.setViewHolder(this);
+ }
+
+ @Override public void bind(Post item) {
+ this.item.set(item);
+ binding.executePendingBindings();
+ }
+
+ public void onItemClicked() {
+ viewModel.goToDetail(getAdapterPosition());
+ }
+}
diff --git a/app/src/main/java/it/cosenonjaviste/ui/recycler/AdapterOnListChangedCallback.java b/app/src/main/java/it/cosenonjaviste/ui/recycler/AdapterOnListChangedCallback.java
new file mode 100755
index 0000000..1f7e64e
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/recycler/AdapterOnListChangedCallback.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2015 Fabio Collini.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package it.cosenonjaviste.ui.recycler;
+
+import android.databinding.ObservableList;
+import android.support.v7.widget.RecyclerView;
+
+public class AdapterOnListChangedCallback extends ObservableList.OnListChangedCallback> {
+
+ private RecyclerView.Adapter> adapter;
+
+ public AdapterOnListChangedCallback(RecyclerView.Adapter> adapter) {
+ this.adapter = adapter;
+ }
+
+ @Override public void onChanged(ObservableList sender) {
+ adapter.notifyDataSetChanged();
+ }
+
+ @Override public void onItemRangeChanged(ObservableList sender, int positionStart, int itemCount) {
+ adapter.notifyItemRangeChanged(positionStart, itemCount);
+ }
+
+ @Override public void onItemRangeInserted(ObservableList sender, int positionStart, int itemCount) {
+ adapter.notifyItemRangeInserted(positionStart, itemCount);
+ }
+
+ @Override public void onItemRangeMoved(ObservableList sender, int fromPosition, int toPosition, int itemCount) {
+ adapter.notifyDataSetChanged();
+ }
+
+ @Override public void onItemRangeRemoved(ObservableList sender, int positionStart, int itemCount) {
+ adapter.notifyItemRangeRemoved(positionStart, itemCount);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/it/cosenonjaviste/ui/recycler/BindableAdapter.java b/app/src/main/java/it/cosenonjaviste/ui/recycler/BindableAdapter.java
new file mode 100755
index 0000000..65716d1
--- /dev/null
+++ b/app/src/main/java/it/cosenonjaviste/ui/recycler/BindableAdapter.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2015 Fabio Collini.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package it.cosenonjaviste.ui.recycler;
+
+import android.databinding.ObservableList;
+import android.support.v7.widget.RecyclerView;
+import android.view.ViewGroup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class BindableAdapter