Compare commits
54 Commits
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"Codegeex.RepoIndex": true
|
||||||
|
}
|
||||||
@ -1 +0,0 @@
|
|||||||
Subproject commit cea9573094665fdb6a383d56347acd8e44f38b20
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,176 @@
|
|||||||
|
name: 自动部署到生产环境
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["Django CI"]
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
environment:
|
||||||
|
description: '部署环境'
|
||||||
|
required: true
|
||||||
|
default: 'production'
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- production
|
||||||
|
- staging
|
||||||
|
image_tag:
|
||||||
|
description: '镜像标签 (默认: latest)'
|
||||||
|
required: false
|
||||||
|
default: 'latest'
|
||||||
|
type: string
|
||||||
|
skip_tests:
|
||||||
|
description: '跳过测试直接部署'
|
||||||
|
required: false
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: registry.cn-shenzhen.aliyuncs.com
|
||||||
|
IMAGE_NAME: liangliangyy/djangoblog
|
||||||
|
NAMESPACE: djangoblog
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
name: 构建镜像并部署到生产环境
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: 检出代码
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: 设置部署参数
|
||||||
|
id: deploy-params
|
||||||
|
run: |
|
||||||
|
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||||
|
echo "trigger_type=手动触发" >> $GITHUB_OUTPUT
|
||||||
|
echo "environment=${{ github.event.inputs.environment }}" >> $GITHUB_OUTPUT
|
||||||
|
echo "image_tag=${{ github.event.inputs.image_tag }}" >> $GITHUB_OUTPUT
|
||||||
|
echo "skip_tests=${{ github.event.inputs.skip_tests }}" >> $GITHUB_OUTPUT
|
||||||
|
else
|
||||||
|
echo "trigger_type=CI自动触发" >> $GITHUB_OUTPUT
|
||||||
|
echo "environment=production" >> $GITHUB_OUTPUT
|
||||||
|
echo "image_tag=latest" >> $GITHUB_OUTPUT
|
||||||
|
echo "skip_tests=false" >> $GITHUB_OUTPUT
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 显示部署信息
|
||||||
|
run: |
|
||||||
|
echo "🚀 部署信息:"
|
||||||
|
echo " 触发方式: ${{ steps.deploy-params.outputs.trigger_type }}"
|
||||||
|
echo " 部署环境: ${{ steps.deploy-params.outputs.environment }}"
|
||||||
|
echo " 镜像标签: ${{ steps.deploy-params.outputs.image_tag }}"
|
||||||
|
echo " 跳过测试: ${{ steps.deploy-params.outputs.skip_tests }}"
|
||||||
|
|
||||||
|
- name: 设置Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: 登录私有镜像仓库
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
|
- name: 提取镜像元数据
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=sha,prefix={{branch}}-
|
||||||
|
type=raw,value=${{ steps.deploy-params.outputs.image_tag }}
|
||||||
|
|
||||||
|
- name: 构建并推送Docker镜像
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
platforms: linux/amd64
|
||||||
|
|
||||||
|
- name: 部署到生产服务器
|
||||||
|
uses: appleboy/ssh-action@v1.0.3
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.PRODUCTION_HOST }}
|
||||||
|
username: ${{ secrets.PRODUCTION_USER }}
|
||||||
|
key: ${{ secrets.PRODUCTION_SSH_KEY }}
|
||||||
|
port: ${{ secrets.PRODUCTION_PORT || 22 }}
|
||||||
|
script: |
|
||||||
|
echo "🚀 开始部署 DjangoBlog..."
|
||||||
|
|
||||||
|
# 检查kubectl是否可用
|
||||||
|
if ! command -v kubectl &> /dev/null; then
|
||||||
|
echo "❌ 错误: kubectl 未安装或不在PATH中"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 检查命名空间是否存在
|
||||||
|
if ! kubectl get namespace ${{ env.NAMESPACE }} &> /dev/null; then
|
||||||
|
echo "❌ 错误: 命名空间 ${{ env.NAMESPACE }} 不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 更新deployment镜像
|
||||||
|
echo "📦 更新deployment镜像为: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.deploy-params.outputs.image_tag }}"
|
||||||
|
kubectl set image deployment/djangoblog \
|
||||||
|
djangoblog=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.deploy-params.outputs.image_tag }} \
|
||||||
|
-n ${{ env.NAMESPACE }}
|
||||||
|
|
||||||
|
# 重启deployment
|
||||||
|
echo "🔄 重启deployment..."
|
||||||
|
kubectl -n ${{ env.NAMESPACE }} rollout restart deployment djangoblog
|
||||||
|
|
||||||
|
# 等待deployment完成
|
||||||
|
echo "⏳ 等待deployment完成..."
|
||||||
|
kubectl rollout status deployment/djangoblog -n ${{ env.NAMESPACE }} --timeout=300s
|
||||||
|
|
||||||
|
# 检查deployment状态
|
||||||
|
echo "✅ 检查deployment状态..."
|
||||||
|
kubectl get deployment djangoblog -n ${{ env.NAMESPACE }}
|
||||||
|
kubectl get pods -l app=djangoblog -n ${{ env.NAMESPACE }}
|
||||||
|
|
||||||
|
echo "🎉 部署完成!"
|
||||||
|
|
||||||
|
- name: 发送部署通知
|
||||||
|
if: always()
|
||||||
|
run: |
|
||||||
|
# 设置通知内容
|
||||||
|
if [ "${{ job.status }}" = "success" ]; then
|
||||||
|
TITLE="✅ DjangoBlog部署成功"
|
||||||
|
STATUS="成功"
|
||||||
|
else
|
||||||
|
TITLE="❌ DjangoBlog部署失败"
|
||||||
|
STATUS="失败"
|
||||||
|
fi
|
||||||
|
|
||||||
|
MESSAGE="部署状态: ${STATUS}
|
||||||
|
触发方式: ${{ steps.deploy-params.outputs.trigger_type }}
|
||||||
|
部署环境: ${{ steps.deploy-params.outputs.environment }}
|
||||||
|
镜像标签: ${{ steps.deploy-params.outputs.image_tag }}
|
||||||
|
提交者: ${{ github.actor }}
|
||||||
|
时间: $(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
查看详情: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
|
||||||
|
|
||||||
|
# 发送Server酱通知
|
||||||
|
if [ -n "${{ secrets.SERVERCHAN_KEY }}" ]; then
|
||||||
|
echo "{\"title\": \"${TITLE}\", \"desp\": \"${MESSAGE}\"}" > /tmp/serverchan.json
|
||||||
|
|
||||||
|
curl --location "https://sctapi.ftqq.com/${{ secrets.SERVERCHAN_KEY }}.send" \
|
||||||
|
--header "Content-Type: application/json" \
|
||||||
|
--data @/tmp/serverchan.json \
|
||||||
|
--silent > /dev/null
|
||||||
|
|
||||||
|
rm -f /tmp/serverchan.json
|
||||||
|
echo "📱 部署通知已发送"
|
||||||
|
fi
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
NAME="djangoblog"
|
||||||
|
DJANGODIR=/code/djangoblog
|
||||||
|
USER=root
|
||||||
|
GROUP=root
|
||||||
|
NUM_WORKERS=1
|
||||||
|
DJANGO_WSGI_MODULE=djangoblog.wsgi
|
||||||
|
|
||||||
|
|
||||||
|
echo "Starting $NAME as `whoami`"
|
||||||
|
|
||||||
|
cd $DJANGODIR
|
||||||
|
|
||||||
|
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
|
||||||
|
|
||||||
|
python manage.py makemigrations && \
|
||||||
|
python manage.py migrate && \
|
||||||
|
python manage.py collectstatic --noinput && \
|
||||||
|
python manage.py compress --force && \
|
||||||
|
python manage.py build_index && \
|
||||||
|
python manage.py compilemessages
|
||||||
|
|
||||||
|
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
|
||||||
|
--name $NAME \
|
||||||
|
--workers $NUM_WORKERS \
|
||||||
|
--user=$USER --group=$GROUP \
|
||||||
|
--bind 0.0.0.0:8000 \
|
||||||
|
--log-level=debug \
|
||||||
|
--log-file=- \
|
||||||
|
--worker-class gevent \
|
||||||
|
--threads 4
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes auto;
|
||||||
|
|
||||||
|
error_log /var/log/nginx/error.log notice;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
http {
|
||||||
|
include /etc/nginx/mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
||||||
|
'$status $body_bytes_sent "$http_referer" '
|
||||||
|
'"$http_user_agent" "$http_x_forwarded_for"';
|
||||||
|
|
||||||
|
access_log /var/log/nginx/access.log main;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
#tcp_nopush on;
|
||||||
|
|
||||||
|
keepalive_timeout 65;
|
||||||
|
|
||||||
|
#gzip on;
|
||||||
|
|
||||||
|
server {
|
||||||
|
root /code/djangoblog/collectedstatic/;
|
||||||
|
listen 80;
|
||||||
|
keepalive_timeout 70;
|
||||||
|
location /static/ {
|
||||||
|
expires max;
|
||||||
|
alias /code/djangoblog/collectedstatic/;
|
||||||
|
}
|
||||||
|
location / {
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header Host $http_host;
|
||||||
|
proxy_set_header X-NginX-Proxy true;
|
||||||
|
proxy_redirect off;
|
||||||
|
if (!-f $request_filename) {
|
||||||
|
proxy_pass http://djangoblog:8000;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
from django import forms
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
from .models import ArticleImage
|
||||||
|
|
||||||
|
|
||||||
|
class ImageUploadForm(forms.ModelForm):
|
||||||
|
"""图片上传表单"""
|
||||||
|
class Meta:
|
||||||
|
model = ArticleImage
|
||||||
|
fields = ['image', 'description']
|
||||||
|
widgets = {
|
||||||
|
'image': forms.FileInput(attrs={'class': 'form-control', 'accept': 'image/*'}),
|
||||||
|
'description': forms.TextInput(attrs={'class': 'form-control', 'placeholder': _('可选,添加图片描述')})
|
||||||
|
}
|
||||||
Binary file not shown.
@ -0,0 +1,41 @@
|
|||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from blog.models import Category
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = '创建文章分类'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
categories = [
|
||||||
|
'技术',
|
||||||
|
'生活',
|
||||||
|
'旅行',
|
||||||
|
'美食',
|
||||||
|
'摄影',
|
||||||
|
'读书',
|
||||||
|
'电影',
|
||||||
|
'音乐',
|
||||||
|
'编程',
|
||||||
|
'设计',
|
||||||
|
'健康',
|
||||||
|
'教育',
|
||||||
|
'职场',
|
||||||
|
'财经',
|
||||||
|
'历史',
|
||||||
|
'文化',
|
||||||
|
'体育',
|
||||||
|
'游戏',
|
||||||
|
'科技'
|
||||||
|
]
|
||||||
|
|
||||||
|
for name in categories:
|
||||||
|
category, created = Category.objects.get_or_create(
|
||||||
|
name=name,
|
||||||
|
defaults={'parent_category': None}
|
||||||
|
)
|
||||||
|
if created:
|
||||||
|
self.stdout.write(self.style.SUCCESS(f'创建分类: {name}'))
|
||||||
|
else:
|
||||||
|
self.stdout.write(self.style.WARNING(f'分类已存在: {name}'))
|
||||||
|
|
||||||
|
self.stdout.write(self.style.SUCCESS('分类创建完成'))
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
from blog.models import Category
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = '列出所有文章分类'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
categories = Category.objects.all()
|
||||||
|
self.stdout.write('当前数据库中的分类:')
|
||||||
|
for category in categories:
|
||||||
|
self.stdout.write(f'- {category.name} (ID: {category.id})')
|
||||||
|
self.stdout.write(f'总计: {categories.count()} 个分类')
|
||||||
@ -0,0 +1,29 @@
|
|||||||
|
# Generated by Django 4.2.14 on 2025-11-20 20:45
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('blog', '0006_alter_blogsettings_options'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ArticleImage',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('image', models.ImageField(upload_to='article_images/%Y/%m/%d/', verbose_name='图片')),
|
||||||
|
('description', models.CharField(blank=True, max_length=255, verbose_name='图片描述')),
|
||||||
|
('created_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||||
|
('article', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='blog.article')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': '文章图片',
|
||||||
|
'verbose_name_plural': '文章图片',
|
||||||
|
'ordering': ['-created_time'],
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,9 @@
|
|||||||
|
.button {
|
||||||
|
border: none;
|
||||||
|
padding: 4px 80px;
|
||||||
|
text-align: center;
|
||||||
|
text-decoration: none;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 4px 2px;
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
let wait = 60;
|
||||||
|
|
||||||
|
function time(o) {
|
||||||
|
if (wait == 0) {
|
||||||
|
o.removeAttribute("disabled");
|
||||||
|
o.value = "获取验证码";
|
||||||
|
wait = 60
|
||||||
|
return false
|
||||||
|
} else {
|
||||||
|
o.setAttribute("disabled", true);
|
||||||
|
o.value = "重新发送(" + wait + ")";
|
||||||
|
wait--;
|
||||||
|
setTimeout(function () {
|
||||||
|
time(o)
|
||||||
|
},
|
||||||
|
1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById("btn").onclick = function () {
|
||||||
|
let id_email = $("#id_email")
|
||||||
|
let token = $("*[name='csrfmiddlewaretoken']").val()
|
||||||
|
let ts = this
|
||||||
|
let myErr = $("#myErr")
|
||||||
|
$.ajax(
|
||||||
|
{
|
||||||
|
url: "/forget_password_code/",
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
"email": id_email.val(),
|
||||||
|
"csrfmiddlewaretoken": token
|
||||||
|
},
|
||||||
|
success: function (result) {
|
||||||
|
if (result != "ok") {
|
||||||
|
myErr.remove()
|
||||||
|
id_email.after("<ul className='errorlist' id='myErr'><li>" + result + "</li></ul>")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
myErr.remove()
|
||||||
|
time(ts)
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
alert("发送失败,请重试")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,13 @@
|
|||||||
|
/*!
|
||||||
|
* IE10 viewport hack for Surface/desktop Windows 8 bug
|
||||||
|
* Copyright 2014-2015 Twitter, Inc.
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* See the Getting Started docs for more information:
|
||||||
|
* http://getbootstrap.com/getting-started/#support-ie10-width
|
||||||
|
*/
|
||||||
|
@-ms-viewport { width: device-width; }
|
||||||
|
@-o-viewport { width: device-width; }
|
||||||
|
@viewport { width: device-width; }
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
body {
|
||||||
|
padding-top: 40px;
|
||||||
|
padding-bottom: 40px;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-signin {
|
||||||
|
max-width: 330px;
|
||||||
|
padding: 15px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.form-signin-heading {
|
||||||
|
margin: 0 0 15px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.form-signin .checkbox {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
.form-signin .form-control {
|
||||||
|
position: relative;
|
||||||
|
height: auto;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.form-signin .form-control:focus {
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
.form-signin input[type="email"] {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.form-signin input[type="password"] {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.card {
|
||||||
|
width: 304px;
|
||||||
|
padding: 20px 25px 30px;
|
||||||
|
margin: 0 auto 25px;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border-radius: 2px;
|
||||||
|
-webkit-box-shadow: 0 2px 2px rgba(0, 0, 0, .3);
|
||||||
|
box-shadow: 0 2px 2px rgba(0, 0, 0, .3);
|
||||||
|
}
|
||||||
|
.card-signin {
|
||||||
|
width: 354px;
|
||||||
|
padding: 40px;
|
||||||
|
}
|
||||||
|
.card-signin .profile-img {
|
||||||
|
display: block;
|
||||||
|
width: 96px;
|
||||||
|
height: 96px;
|
||||||
|
margin: 0 auto 10px;
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 221 B |
@ -0,0 +1,51 @@
|
|||||||
|
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
|
||||||
|
// IT'S JUST JUNK FOR OUR DOCS!
|
||||||
|
// ++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
/*!
|
||||||
|
* Copyright 2014-2015 Twitter, Inc.
|
||||||
|
*
|
||||||
|
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
|
||||||
|
* details, see https://creativecommons.org/licenses/by/3.0/.
|
||||||
|
*/
|
||||||
|
// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function emulatedIEMajorVersion() {
|
||||||
|
var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
|
||||||
|
if (groups === null) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
var ieVersionNum = parseInt(groups[1], 10)
|
||||||
|
var ieMajorVersion = Math.floor(ieVersionNum)
|
||||||
|
return ieMajorVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
function actualNonEmulatedIEMajorVersion() {
|
||||||
|
// Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
|
||||||
|
// IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx
|
||||||
|
// @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx
|
||||||
|
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line
|
||||||
|
if (jscriptVersion === undefined) {
|
||||||
|
return 11 // IE11+ not in emulation mode
|
||||||
|
}
|
||||||
|
if (jscriptVersion < 9) {
|
||||||
|
return 8 // IE8 (or lower; haven't tested on IE<8)
|
||||||
|
}
|
||||||
|
return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
|
||||||
|
}
|
||||||
|
|
||||||
|
var ua = window.navigator.userAgent
|
||||||
|
if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
|
||||||
|
return // Opera, which might pretend to be IE
|
||||||
|
}
|
||||||
|
var emulated = emulatedIEMajorVersion()
|
||||||
|
if (emulated === null) {
|
||||||
|
return // Not IE
|
||||||
|
}
|
||||||
|
var nonEmulated = actualNonEmulatedIEMajorVersion()
|
||||||
|
|
||||||
|
if (emulated !== nonEmulated) {
|
||||||
|
window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
|
||||||
|
}
|
||||||
|
})();
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
/*!
|
||||||
|
* IE10 viewport hack for Surface/desktop Windows 8 bug
|
||||||
|
* Copyright 2014-2015 Twitter, Inc.
|
||||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
|
*/
|
||||||
|
|
||||||
|
// See the Getting Started docs for more information:
|
||||||
|
// http://getbootstrap.com/getting-started/#support-ie10-width
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
|
||||||
|
var msViewportStyle = document.createElement('style')
|
||||||
|
msViewportStyle.appendChild(
|
||||||
|
document.createTextNode(
|
||||||
|
'@-ms-viewport{width:auto!important}'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
document.querySelector('head').appendChild(msViewportStyle)
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
||||||
@ -0,0 +1,273 @@
|
|||||||
|
/*
|
||||||
|
Styles for older IE versions (previous to IE9).
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: #e6e6e6;
|
||||||
|
}
|
||||||
|
body.custom-background-empty {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
body.custom-background-empty .site,
|
||||||
|
body.custom-background-white .site {
|
||||||
|
box-shadow: none;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-top: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.assistive-text,
|
||||||
|
.site .screen-reader-text {
|
||||||
|
clip: rect(1px 1px 1px 1px);
|
||||||
|
}
|
||||||
|
.full-width .site-content {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
img.size-full,
|
||||||
|
img.size-large,
|
||||||
|
img.header-image,
|
||||||
|
img.wp-post-image,
|
||||||
|
img[class*="align"],
|
||||||
|
img[class*="wp-image-"],
|
||||||
|
img[class*="attachment-"] {
|
||||||
|
width: auto; /* Prevent stretching of full-size and large-size images with height and width attributes in IE8 */
|
||||||
|
}
|
||||||
|
.author-avatar {
|
||||||
|
float: left;
|
||||||
|
margin-top: 8px;
|
||||||
|
margin-top: 0.571428571rem;
|
||||||
|
}
|
||||||
|
.author-description {
|
||||||
|
float: right;
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
.site {
|
||||||
|
box-shadow: 0 2px 6px rgba(100, 100, 100, 0.3);
|
||||||
|
margin: 48px auto;
|
||||||
|
max-width: 960px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 40px;
|
||||||
|
}
|
||||||
|
.site-content {
|
||||||
|
float: left;
|
||||||
|
width: 65.104166667%;
|
||||||
|
}
|
||||||
|
body.template-front-page .site-content,
|
||||||
|
body.attachment .site-content,
|
||||||
|
body.full-width .site-content {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.widget-area {
|
||||||
|
float: right;
|
||||||
|
width: 26.041666667%;
|
||||||
|
}
|
||||||
|
.site-header h1,
|
||||||
|
.site-header h2 {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.site-header h1 {
|
||||||
|
font-size: 26px;
|
||||||
|
line-height: 1.846153846;
|
||||||
|
}
|
||||||
|
.main-navigation ul.nav-menu,
|
||||||
|
.main-navigation div.nav-menu > ul {
|
||||||
|
border-bottom: 1px solid #ededed;
|
||||||
|
border-top: 1px solid #ededed;
|
||||||
|
display: inline-block !important;
|
||||||
|
text-align: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.main-navigation ul {
|
||||||
|
margin: 0;
|
||||||
|
text-indent: 0;
|
||||||
|
}
|
||||||
|
.main-navigation li a,
|
||||||
|
.main-navigation li {
|
||||||
|
display: inline-block;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.ie7 .main-navigation li a,
|
||||||
|
.ie7 .main-navigation li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
.main-navigation li a {
|
||||||
|
border-bottom: 0;
|
||||||
|
color: #6a6a6a;
|
||||||
|
line-height: 3.692307692;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.main-navigation li a:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
.main-navigation li {
|
||||||
|
margin: 0 40px 0 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.main-navigation li ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
top: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
height: 1px;
|
||||||
|
width: 1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(1px, 1px, 1px, 1px);
|
||||||
|
}
|
||||||
|
.ie7 .main-navigation li ul {
|
||||||
|
clip: inherit;
|
||||||
|
display: none;
|
||||||
|
left: 0;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.main-navigation li ul ul,
|
||||||
|
.ie7 .main-navigation li ul ul {
|
||||||
|
top: 0;
|
||||||
|
left: 100%;
|
||||||
|
}
|
||||||
|
.main-navigation ul li:hover > ul,
|
||||||
|
.main-navigation ul li:focus > ul,
|
||||||
|
.main-navigation .focus > ul {
|
||||||
|
border-left: 0;
|
||||||
|
clip: inherit;
|
||||||
|
overflow: inherit;
|
||||||
|
height: inherit;
|
||||||
|
width: inherit;
|
||||||
|
}
|
||||||
|
.ie7 .main-navigation ul li:hover > ul,
|
||||||
|
.ie7 .main-navigation ul li:focus > ul {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.main-navigation li ul li a {
|
||||||
|
background: #efefef;
|
||||||
|
border-bottom: 1px solid #ededed;
|
||||||
|
display: block;
|
||||||
|
font-size: 11px;
|
||||||
|
line-height: 2.181818182;
|
||||||
|
padding: 8px 10px;
|
||||||
|
width: 180px;
|
||||||
|
}
|
||||||
|
.main-navigation li ul li a:hover {
|
||||||
|
background: #e3e3e3;
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
.main-navigation .current-menu-item > a,
|
||||||
|
.main-navigation .current-menu-ancestor > a,
|
||||||
|
.main-navigation .current_page_item > a,
|
||||||
|
.main-navigation .current_page_ancestor > a {
|
||||||
|
color: #636363;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.main-navigation .menu-toggle {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.entry-header .entry-title {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
#respond form input[type="text"] {
|
||||||
|
width: 46.333333333%;
|
||||||
|
}
|
||||||
|
#respond form textarea.blog-textarea {
|
||||||
|
width: 79.666666667%;
|
||||||
|
}
|
||||||
|
.template-front-page .site-content,
|
||||||
|
.template-front-page article {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.template-front-page.has-post-thumbnail article {
|
||||||
|
float: left;
|
||||||
|
width: 47.916666667%;
|
||||||
|
}
|
||||||
|
.entry-page-image {
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 0;
|
||||||
|
width: 47.916666667%;
|
||||||
|
}
|
||||||
|
/* IE Front Page Template Widget fix */
|
||||||
|
.template-front-page .widget-area {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
.template-front-page .widget {
|
||||||
|
width: 100% !important;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.template-front-page .widget-area .widget,
|
||||||
|
.template-front-page .first.front-widgets,
|
||||||
|
.template-front-page.two-sidebars .widget-area .front-widgets {
|
||||||
|
float: left;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
width: 51.875%;
|
||||||
|
}
|
||||||
|
.template-front-page .second.front-widgets,
|
||||||
|
.template-front-page .widget-area .widget:nth-child(odd) {
|
||||||
|
clear: right;
|
||||||
|
}
|
||||||
|
.template-front-page .first.front-widgets,
|
||||||
|
.template-front-page .second.front-widgets,
|
||||||
|
.template-front-page.two-sidebars .widget-area .front-widgets + .front-widgets {
|
||||||
|
float: right;
|
||||||
|
margin: 0 0 24px;
|
||||||
|
width: 39.0625%;
|
||||||
|
}
|
||||||
|
.template-front-page.two-sidebars .widget,
|
||||||
|
.template-front-page.two-sidebars .widget:nth-child(even) {
|
||||||
|
float: none;
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
/* add input font for <IE9 Password Box to make the bullets show up */
|
||||||
|
input[type="password"] {
|
||||||
|
font-family: Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* RTL overrides for IE7 and IE8
|
||||||
|
-------------------------------------------------------------- */
|
||||||
|
.rtl .site-header h1,
|
||||||
|
.rtl .site-header h2 {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.rtl .widget-area,
|
||||||
|
.rtl .author-description {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.rtl .author-avatar,
|
||||||
|
.rtl .site-content {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
.rtl .main-navigation ul.nav-menu,
|
||||||
|
.rtl .main-navigation div.nav-menu > ul {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
.rtl .main-navigation ul li ul li,
|
||||||
|
.rtl .main-navigation ul li ul li ul li {
|
||||||
|
margin-left: 40px;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
.rtl .main-navigation li ul ul {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.ie7 .rtl .main-navigation li ul ul {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
right: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.ie7 .rtl .main-navigation ul li {
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
.ie7 .rtl .main-navigation li ul {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 100%;
|
||||||
|
right: 0;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.ie7 .rtl .main-navigation li {
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: 40px;
|
||||||
|
}
|
||||||
|
.ie7 .rtl .main-navigation li ul ul ul {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
@ -0,0 +1,74 @@
|
|||||||
|
/* Make clicks pass-through */
|
||||||
|
#nprogress {
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nprogress .bar {
|
||||||
|
background: red;
|
||||||
|
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1031;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
|
||||||
|
width: 100%;
|
||||||
|
height: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Fancy blur effect */
|
||||||
|
#nprogress .peg {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
right: 0px;
|
||||||
|
width: 100px;
|
||||||
|
height: 100%;
|
||||||
|
box-shadow: 0 0 10px #29d, 0 0 5px #29d;
|
||||||
|
opacity: 1.0;
|
||||||
|
|
||||||
|
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
transform: rotate(3deg) translate(0px, -4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove these to get rid of the spinner */
|
||||||
|
#nprogress .spinner {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1031;
|
||||||
|
top: 15px;
|
||||||
|
right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#nprogress .spinner-icon {
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
border: solid 2px transparent;
|
||||||
|
border-top-color: red;
|
||||||
|
border-left-color: red;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
||||||
|
animation: nprogress-spinner 400ms linear infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nprogress-custom-parent {
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nprogress-custom-parent #nprogress .spinner,
|
||||||
|
.nprogress-custom-parent #nprogress .bar {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes nprogress-spinner {
|
||||||
|
0% { -webkit-transform: rotate(0deg); }
|
||||||
|
100% { -webkit-transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
@keyframes nprogress-spinner {
|
||||||
|
0% { transform: rotate(0deg); }
|
||||||
|
100% { transform: rotate(360deg); }
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,305 @@
|
|||||||
|
|
||||||
|
.icon-sn-google {
|
||||||
|
background-position: 0 -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-google {
|
||||||
|
background-color: #4285f4;
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-google {
|
||||||
|
color: #4285f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-github {
|
||||||
|
background-position: -28px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-github {
|
||||||
|
background-color: #333;
|
||||||
|
background-position: -28px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-github {
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-weibo {
|
||||||
|
background-position: -56px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-weibo {
|
||||||
|
background-color: #e90d24;
|
||||||
|
background-position: -56px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-weibo {
|
||||||
|
color: #e90d24;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-qq {
|
||||||
|
background-position: -84px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-qq {
|
||||||
|
background-color: #0098e6;
|
||||||
|
background-position: -84px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-qq {
|
||||||
|
color: #0098e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-twitter {
|
||||||
|
background-position: -112px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-twitter {
|
||||||
|
background-color: #50abf1;
|
||||||
|
background-position: -112px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-twitter {
|
||||||
|
color: #50abf1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-facebook {
|
||||||
|
background-position: -140px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-facebook {
|
||||||
|
background-color: #4862a3;
|
||||||
|
background-position: -140px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-facebook {
|
||||||
|
color: #4862a3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-renren {
|
||||||
|
background-position: -168px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-renren {
|
||||||
|
background-color: #197bc8;
|
||||||
|
background-position: -168px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-renren {
|
||||||
|
color: #197bc8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-tqq {
|
||||||
|
background-position: -196px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-tqq {
|
||||||
|
background-color: #1f9ed2;
|
||||||
|
background-position: -196px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-tqq {
|
||||||
|
color: #1f9ed2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-douban {
|
||||||
|
background-position: -224px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-douban {
|
||||||
|
background-color: #279738;
|
||||||
|
background-position: -224px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-douban {
|
||||||
|
color: #279738;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-weixin {
|
||||||
|
background-position: -252px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-weixin {
|
||||||
|
background-color: #00b500;
|
||||||
|
background-position: -252px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-weixin {
|
||||||
|
color: #00b500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-dotted {
|
||||||
|
background-position: -280px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-dotted {
|
||||||
|
background-color: #eee;
|
||||||
|
background-position: -280px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-dotted {
|
||||||
|
color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-site {
|
||||||
|
background-position: -308px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-site {
|
||||||
|
background-color: #00b500;
|
||||||
|
background-position: -308px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-site {
|
||||||
|
color: #00b500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-linkedin {
|
||||||
|
background-position: -336px -28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-sn-bg-linkedin {
|
||||||
|
background-color: #0077b9;
|
||||||
|
background-position: -336px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fa-sn-linkedin {
|
||||||
|
color: #0077b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*=icon-sn-] {
|
||||||
|
display: inline-block;
|
||||||
|
background-image: url('../img/icon-sn.svg');
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-size: auto 56px;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*=icon-sn-]:hover {
|
||||||
|
opacity: .8;
|
||||||
|
filter: alpha(opacity=80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-google {
|
||||||
|
background: #4285f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-google:active, .btn-sn-google:focus, .btn-sn-google:hover {
|
||||||
|
background: #2a75f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-github {
|
||||||
|
background: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-github:active, .btn-sn-github:focus, .btn-sn-github:hover {
|
||||||
|
background: #262626;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-weibo {
|
||||||
|
background: #e90d24;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-weibo:active, .btn-sn-weibo:focus, .btn-sn-weibo:hover {
|
||||||
|
background: #d10c20;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-qq {
|
||||||
|
background: #0098e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-qq:active, .btn-sn-qq:focus, .btn-sn-qq:hover {
|
||||||
|
background: #0087cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-twitter {
|
||||||
|
background: #50abf1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-twitter:active, .btn-sn-twitter:focus, .btn-sn-twitter:hover {
|
||||||
|
background: #38a0ef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-facebook {
|
||||||
|
background: #4862a3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-facebook:active, .btn-sn-facebook:focus, .btn-sn-facebook:hover {
|
||||||
|
background: #405791;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-renren {
|
||||||
|
background: #197bc8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-renren:active, .btn-sn-renren:focus, .btn-sn-renren:hover {
|
||||||
|
background: #166db1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-tqq {
|
||||||
|
background: #1f9ed2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-tqq:active, .btn-sn-tqq:focus, .btn-sn-tqq:hover {
|
||||||
|
background: #1c8dbc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-douban {
|
||||||
|
background: #279738;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-douban:active, .btn-sn-douban:focus, .btn-sn-douban:hover {
|
||||||
|
background: #228330;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-weixin {
|
||||||
|
background: #00b500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-weixin:active, .btn-sn-weixin:focus, .btn-sn-weixin:hover {
|
||||||
|
background: #009c00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-dotted {
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-dotted:active, .btn-sn-dotted:focus, .btn-sn-dotted:hover {
|
||||||
|
background: #e1e1e1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-site {
|
||||||
|
background: #00b500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-site:active, .btn-sn-site:focus, .btn-sn-site:hover {
|
||||||
|
background: #009c00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-linkedin {
|
||||||
|
background: #0077b9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-linkedin:active, .btn-sn-linkedin:focus, .btn-sn-linkedin:hover {
|
||||||
|
background: #0067a0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*=btn-sn-], [class*=btn-sn-]:active, [class*=btn-sn-]:focus, [class*=btn-sn-]:hover {
|
||||||
|
border: none;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-more {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sn-more, .btn-sn-more:active, .btn-sn-more:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
[class*=btn-sn-] [class*=icon-sn-] {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,378 @@
|
|||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hmIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hvIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hnIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hoIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hkIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hlIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKWyV9hrIqM.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0Udc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0ddc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0Vdc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0adc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0Wdc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0Xdc1UAw.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem6YaGs126MiZpBA-UFUK0Zdc0.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhmIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhvIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhnIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhoIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhkIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhlIqOjjg.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: italic;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(memnYaGs126MiZpBA-UFUKXGUdhrIqM.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OX-hpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OVuhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OXuhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OUehpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OXehpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OXOhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 300;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UN_r8OUuhp.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFWJ0bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFUZ0bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFWZ0bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFVp0bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFWp0bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFW50bbck.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 400;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem8YaGs126MiZpBA-UFVZ0b.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
|
/* cyrillic-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOX-hpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||||||
|
}
|
||||||
|
/* cyrillic */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOVuhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||||||
|
}
|
||||||
|
/* greek-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOXuhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+1F00-1FFF;
|
||||||
|
}
|
||||||
|
/* greek */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOUehpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0370-03FF;
|
||||||
|
}
|
||||||
|
/* vietnamese */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOXehpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
|
||||||
|
}
|
||||||
|
/* latin-ext */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOXOhpOqc.woff2) format('woff2');
|
||||||
|
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
|
}
|
||||||
|
/* latin */
|
||||||
|
@font-face {
|
||||||
|
font-family: 'Open Sans';
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: 600;
|
||||||
|
font-display: fallback;
|
||||||
|
src: url(mem5YaGs126MiZpBA-UNirkOUuhp.woff2) format('woff2');
|
||||||
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue