bingo 7 lat temu
rodzic
commit
f7a4775839
100 zmienionych plików z 7977 dodań i 1099 usunięć
  1. 108 0
      app/Components/Helpers.php
  2. 3 15
      app/Components/Namesilo.php
  3. 5 16
      app/Components/ServerChan.php
  4. 8 20
      app/Components/Yzy.php
  5. 0 194
      app/Console/Commands/AutoAuditOrders.php
  6. 11 23
      app/Console/Commands/AutoCheckNodeStatus.php
  7. 25 29
      app/Console/Commands/AutoClearLog.php
  8. 17 22
      app/Console/Commands/AutoDecGoodsTraffic.php
  9. 203 57
      app/Console/Commands/AutoJob.php
  10. 43 48
      app/Console/Commands/AutoResetUserTraffic.php
  11. 1 24
      app/Console/Commands/AutoStatisticsNodeDailyTraffic.php
  12. 1 24
      app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php
  13. 1 24
      app/Console/Commands/AutoStatisticsUserDailyTraffic.php
  14. 1 24
      app/Console/Commands/AutoStatisticsUserHourlyTraffic.php
  15. 41 49
      app/Console/Commands/UserExpireAutoWarning.php
  16. 18 44
      app/Console/Commands/UserTrafficAbnormalAutoWarning.php
  17. 31 38
      app/Console/Commands/UserTrafficAutoWarning.php
  18. 0 2
      app/Console/Kernel.php
  19. 94 88
      app/Http/Controllers/AdminController.php
  20. 9 1
      app/Http/Controllers/Api/LoginController.php
  21. 42 6
      app/Http/Controllers/Api/YzyController.php
  22. 1 99
      app/Http/Controllers/Controller.php
  23. 2 2
      app/Http/Controllers/CouponController.php
  24. 1 1
      app/Http/Controllers/EmailLogController.php
  25. 19 53
      app/Http/Controllers/LoginController.php
  26. 12 4
      app/Http/Controllers/MarketingController.php
  27. 15 7
      app/Http/Controllers/PaymentController.php
  28. 35 27
      app/Http/Controllers/RegisterController.php
  29. 1 1
      app/Http/Controllers/SensitiveWordsController.php
  30. 20 9
      app/Http/Controllers/ShopController.php
  31. 10 2
      app/Http/Controllers/SubscribeController.php
  32. 19 7
      app/Http/Controllers/TicketController.php
  33. 158 135
      app/Http/Controllers/UserController.php
  34. 7 0
      app/Http/Models/Goods.php
  35. 9 0
      config/captcha.php
  36. 1 1
      config/domains.php
  37. 1 3
      config/version.php
  38. 1 0
      public/assets/layouts/layout3/css/custom.css
  39. 0 0
      public/assets/layouts/layout3/css/custom.min.css
  40. 1686 0
      public/assets/layouts/layout3/css/layout.css
  41. 0 0
      public/assets/layouts/layout3/css/layout.min.css
  42. 484 0
      public/assets/layouts/layout3/css/themes/blue-hoki.css
  43. 0 0
      public/assets/layouts/layout3/css/themes/blue-hoki.min.css
  44. 484 0
      public/assets/layouts/layout3/css/themes/blue-steel.css
  45. 0 0
      public/assets/layouts/layout3/css/themes/blue-steel.min.css
  46. 484 0
      public/assets/layouts/layout3/css/themes/default.css
  47. 0 0
      public/assets/layouts/layout3/css/themes/default.min.css
  48. 484 0
      public/assets/layouts/layout3/css/themes/green-haze.css
  49. 0 0
      public/assets/layouts/layout3/css/themes/green-haze.min.css
  50. 484 0
      public/assets/layouts/layout3/css/themes/purple-plum.css
  51. 0 0
      public/assets/layouts/layout3/css/themes/purple-plum.min.css
  52. 484 0
      public/assets/layouts/layout3/css/themes/purple-studio.css
  53. 0 0
      public/assets/layouts/layout3/css/themes/purple-studio.min.css
  54. 484 0
      public/assets/layouts/layout3/css/themes/red-intense.css
  55. 0 0
      public/assets/layouts/layout3/css/themes/red-intense.min.css
  56. 484 0
      public/assets/layouts/layout3/css/themes/red-sunglo.css
  57. 0 0
      public/assets/layouts/layout3/css/themes/red-sunglo.min.css
  58. 484 0
      public/assets/layouts/layout3/css/themes/yellow-crusta.css
  59. 0 0
      public/assets/layouts/layout3/css/themes/yellow-crusta.min.css
  60. 484 0
      public/assets/layouts/layout3/css/themes/yellow-orange.css
  61. 0 0
      public/assets/layouts/layout3/css/themes/yellow-orange.min.css
  62. BIN
      public/assets/layouts/layout3/img/ajax-loading.gif
  63. BIN
      public/assets/layouts/layout3/img/ajax-modal-loading.gif
  64. BIN
      public/assets/layouts/layout3/img/avatar.png
  65. BIN
      public/assets/layouts/layout3/img/avatar1.jpg
  66. BIN
      public/assets/layouts/layout3/img/avatar10.jpg
  67. BIN
      public/assets/layouts/layout3/img/avatar11.jpg
  68. BIN
      public/assets/layouts/layout3/img/avatar2.jpg
  69. BIN
      public/assets/layouts/layout3/img/avatar3.jpg
  70. BIN
      public/assets/layouts/layout3/img/avatar4.jpg
  71. BIN
      public/assets/layouts/layout3/img/avatar5.jpg
  72. BIN
      public/assets/layouts/layout3/img/avatar6.jpg
  73. BIN
      public/assets/layouts/layout3/img/avatar7.jpg
  74. BIN
      public/assets/layouts/layout3/img/avatar8.jpg
  75. BIN
      public/assets/layouts/layout3/img/avatar9.jpg
  76. BIN
      public/assets/layouts/layout3/img/icon-color-close.png
  77. BIN
      public/assets/layouts/layout3/img/icon-color.png
  78. BIN
      public/assets/layouts/layout3/img/loading-spinner-blue.gif
  79. BIN
      public/assets/layouts/layout3/img/loading-spinner-default.gif
  80. BIN
      public/assets/layouts/layout3/img/loading-spinner-grey.gif
  81. BIN
      public/assets/layouts/layout3/img/loading.gif
  82. BIN
      public/assets/layouts/layout3/img/logo-big-white.png
  83. BIN
      public/assets/layouts/layout3/img/logo-big.png
  84. BIN
      public/assets/layouts/layout3/img/logo-blue-hoki.png
  85. BIN
      public/assets/layouts/layout3/img/logo-blue-steel.png
  86. BIN
      public/assets/layouts/layout3/img/logo-default.jpg
  87. BIN
      public/assets/layouts/layout3/img/logo-green-haze.png
  88. BIN
      public/assets/layouts/layout3/img/logo-purple-plum.png
  89. BIN
      public/assets/layouts/layout3/img/logo-purple-studio.png
  90. BIN
      public/assets/layouts/layout3/img/logo-red-intense.png
  91. BIN
      public/assets/layouts/layout3/img/logo-red-sunglo.png
  92. BIN
      public/assets/layouts/layout3/img/logo-yellow-crusta.png
  93. BIN
      public/assets/layouts/layout3/img/logo-yellow-orange.png
  94. BIN
      public/assets/layouts/layout3/img/logo.png
  95. BIN
      public/assets/layouts/layout3/img/menu-toggler.png
  96. 179 0
      public/assets/layouts/layout3/scripts/demo.js
  97. 0 0
      public/assets/layouts/layout3/scripts/demo.min.js
  98. 296 0
      public/assets/layouts/layout3/scripts/layout.js
  99. 0 0
      public/assets/layouts/layout3/scripts/layout.min.js
  100. 2 0
      public/js/wangEditor/.eslintignore

+ 108 - 0
app/Components/Helpers.php

@@ -0,0 +1,108 @@
+<?php
+
+namespace App\Components;
+
+use App\Http\Models\Config;
+use App\Http\Models\Level;
+use App\Http\Models\SsConfig;
+use App\Http\Models\User;
+
+class Helpers
+{
+    // 不生成的端口
+    private static $denyPorts = [
+        1068, 1109, 1434, 3127, 3128,
+        3129, 3130, 3332, 4444, 5554,
+        6669, 8080, 8081, 8082, 8181,
+        8282, 9996, 17185, 24554, 35601,
+        60177, 60179
+    ];
+
+    // 获取系统配置
+    public static function systemConfig()
+    {
+        $config = Config::query()->get();
+        $data = [];
+        foreach ($config as $vo) {
+            $data[$vo->name] = $vo->value;
+        }
+
+        return $data;
+    }
+
+    // 获取默认加密方式
+    public static function getDefaultMethod()
+    {
+        $config = SsConfig::query()->where('type', 1)->where('is_default', 1)->first();
+
+        return $config ? $config->name : 'aes-256-cfb';
+    }
+
+    // 获取默认混淆
+    public static function getDefaultObfs()
+    {
+        $config = SsConfig::query()->where('type', 3)->where('is_default', 1)->first();
+
+        return $config ? $config->name : 'plain';
+    }
+
+    // 获取默认协议
+    public static function getDefaultProtocol()
+    {
+        $config = SsConfig::query()->where('type', 2)->where('is_default', 1)->first();
+
+        return $config ? $config->name : 'origin';
+    }
+
+    // 获取一个随机端口
+    public static function getRandPort()
+    {
+        $config = self::systemConfig();
+        $port = mt_rand($config['min_port'], $config['max_port']);
+
+        $exists_port = User::query()->pluck('port')->toArray();
+        if (in_array($port, $exists_port) || in_array($port, self::$denyPorts)) {
+            $port = self::getRandPort();
+        }
+
+        return $port;
+    }
+
+    // 获取一个端口
+    public static function getOnlyPort()
+    {
+        $config = self::systemConfig();
+        $port = $config['min_port'];
+
+        $exists_port = User::query()->where('port', '>=', $config['min_port'])->pluck('port')->toArray();
+        while (in_array($port, $exists_port) || in_array($port, self::$denyPorts)) {
+            $port = $port + 1;
+        }
+
+        return $port;
+    }
+
+    // 加密方式
+    public static function methodList()
+    {
+        return SsConfig::query()->where('type', 1)->get();
+    }
+
+    // 协议
+    public static function protocolList()
+    {
+        return SsConfig::query()->where('type', 2)->get();
+    }
+
+    // 混淆
+    public static function obfsList()
+    {
+        return SsConfig::query()->where('type', 3)->get();
+    }
+
+    // 等级
+    public static function levelList()
+    {
+        return Level::query()->get()->sortBy('level');
+    }
+}

+ 3 - 15
app/Components/Namesilo.php

@@ -10,12 +10,12 @@ use Log;
 class Namesilo
 {
     protected static $host;
-    protected static $config;
+    protected static $systemConfig;
 
     function __construct()
     {
         self::$host = 'https://www.namesilo.com/api/';
-        self::$config = $this->systemConfig();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     // 列出账号下所有域名
@@ -79,7 +79,7 @@ class Namesilo
         $params = [
             'version' => 1,
             'type'    => 'xml',
-            'key'     => self::$config['namesilo_key']
+            'key'     => self::$systemConfig['namesilo_key']
         ];
         $query = array_merge($params, $data);
 
@@ -124,18 +124,6 @@ class Namesilo
         $emailLogObj->save();
     }
 
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
     // 发起一个CURL请求
     private function curlRequest($url, $data = [])
     {

+ 5 - 16
app/Components/ServerChan.php

@@ -11,16 +11,17 @@ use Log;
 
 class ServerChan
 {
-    protected static $config;
+    protected static $systemConfig;
 
     function __construct()
     {
-        self::$config = $this->systemConfig();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     /**
-     * @param string $title 消息标题
+     * @param string $title   消息标题
      * @param string $content 消息内容
+     *
      * @return string
      */
     public function send($title, $content)
@@ -28,7 +29,7 @@ class ServerChan
         $client = new Client();
 
         try {
-            $response = $client->request('GET', 'https://sc.ftqq.com/' . self::$config['server_chan_key'] . '.send', [
+            $response = $client->request('GET', 'https://sc.ftqq.com/' . self::$systemConfig['server_chan_key'] . '.send', [
                 'query' => [
                     'text' => $title,
                     'desp' => $content
@@ -69,16 +70,4 @@ class ServerChan
         $emailLogObj->created_at = date('Y-m-d H:i:s');
         $emailLogObj->save();
     }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
 }

+ 8 - 20
app/Components/Yzy.php

@@ -8,11 +8,13 @@ use Log;
 
 class Yzy
 {
-    protected $accessToken;
+    protected static $systemConfig;
+    protected static $accessToken;
 
     function __construct()
     {
-        $this->accessToken = $this->getAccessToken();
+        self::$systemConfig = Helpers::systemConfig();
+        self::$accessToken = $this->getAccessToken();
     }
 
     // 获取accessToken
@@ -27,9 +29,7 @@ class Yzy
             Cache::forget('YZY_TOKEN');
         }
 
-        $config = $this->systemConfig();
-
-        $token = (new \Youzan\Open\Token($config['youzan_client_id'], $config['youzan_client_secret']))->getToken('self', ['kdt_id' => $config['kdt_id']]);
+        $token = (new \Youzan\Open\Token(self::$systemConfig['youzan_client_id'], self::$systemConfig['youzan_client_secret']))->getToken('self', ['kdt_id' => self::$systemConfig['kdt_id']]);
         if (isset($token['error'])) {
             Log::info('获取有赞云支付access_token失败:' . $token['error_description']);
 
@@ -44,7 +44,7 @@ class Yzy
     // 生成收款二维码
     public function createQrCode($goodsName, $price, $orderSn)
     {
-        $client = new \Youzan\Open\Client($this->accessToken);
+        $client = new \Youzan\Open\Client(self::$accessToken);
 
         $params = [
             'qr_name'   => $goodsName, // 商品名
@@ -59,7 +59,7 @@ class Yzy
     // 通过tid获取交易信息
     public function getTradeByTid($tid)
     {
-        $client = new \Youzan\Open\Client($this->accessToken);
+        $client = new \Youzan\Open\Client(self::$accessToken);
 
         return $client->post('youzan.trade.get', '4.0.0', ['tid' => $tid]);
     }
@@ -67,20 +67,8 @@ class Yzy
     // 通过二维码ID获取已支付的交易信息
     public function getTradeByQrId($qr_id)
     {
-        $client = new \Youzan\Open\Client($this->accessToken);
+        $client = new \Youzan\Open\Client(self::$accessToken);
 
         return $client->post('youzan.trades.qr.get', '3.0.0', ['qr_id' => $qr_id, 'status' => 'TRADE_RECEIVED']);
     }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
 }

+ 0 - 194
app/Console/Commands/AutoAuditOrders.php

@@ -1,194 +0,0 @@
-<?php
-
-namespace App\Console\Commands;
-
-use App\Components\Yzy;
-use App\Http\Models\Config;
-use App\Http\Models\Goods;
-use App\Http\Models\GoodsLabel;
-use App\Http\Models\Order;
-use App\Http\Models\Payment;
-use App\Http\Models\ReferralLog;
-use App\Http\Models\User;
-use App\Http\Models\UserLabel;
-use Illuminate\Console\Command;
-use Log;
-use DB;
-
-class AutoAuditOrders extends Command
-{
-    protected $signature = 'autoAuditOrders';
-    protected $description = '自动审计待支付订单';
-    protected static $config;
-
-    public function __construct()
-    {
-        parent::__construct();
-        self::$config = $this->systemConfig();
-    }
-
-    /*
-     * 因为订单在15分钟未支付则会被自动关闭
-     * 当有赞没有正常推送消息或者其他原因导致用户已付款但是订单不生效从而导致用户无法正常加流量、置状态
-     * 故需要每分钟请求一次未支付订单,审计一下其支付状态
-     */
-    public function handle()
-    {
-        $jobStartTime = microtime(true);
-
-        // 审计待支付的订单
-        $this->auditOrders();
-
-        $jobEndTime = microtime(true);
-        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
-
-        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
-    }
-
-    // 审计待支付的订单
-    private function auditOrders()
-    {
-        $paymentList = Payment::query()->with(['order', 'user'])->where('status', 0)->get();
-        if (!$paymentList->isEmpty()) {
-            foreach ($paymentList as $payment) {
-                // 跳过order丢失的订单
-                if (!isset($payment->order)) {
-                    continue;
-                }
-
-                $yzy = new yzy();
-                $trade = $yzy->getTradeByQrId($payment->qr_id);
-                if ($trade['response']['total_results']) {
-                    // 再判断一遍当前要操作的订单的状态是否被改变了(可能请求延迟的时候已经回调处理完了)
-                    $payment = Payment::query()->where('id', $payment->id)->first();
-                    if ($payment->status != '0') {
-                        continue;
-                    }
-
-                    // 处理订单
-                    DB::beginTransaction();
-                    try {
-                        // 更新支付单
-                        $payment->pay_way = $trade['response']['qr_trades']['pay_type'] == 'WXPAY_BIGUNSIGN' ? 1 : 2; // 1-微信、2-支付宝
-                        $payment->status = 1;
-                        $payment->save();
-
-                        // 更新订单
-                        $order = Order::query()->with(['user'])->where('oid', $payment->oid)->first();
-                        $order->status = 2;
-                        $order->save();
-
-                        // 如果买的是套餐,则先将之前购买的所有套餐置都无效,并扣掉之前所有套餐的流量
-                        $goods = Goods::query()->where('id', $order->goods_id)->first();
-                        if ($goods->type == 2) {
-                            $existOrderList = Order::query()
-                                ->with(['goods'])
-                                ->whereHas('goods', function ($q) {
-                                    $q->where('type', 2);
-                                })
-                                ->where('user_id', $order->user_id)
-                                ->where('oid', '<>', $order->oid)
-                                ->where('is_expire', 0)
-                                ->where('status', 2)
-                                ->get();
-
-                            foreach ($existOrderList as $vo) {
-                                Order::query()->where('oid', $vo->oid)->update(['is_expire' => 1]);
-                                User::query()->where('id', $order->user_id)->decrement('transfer_enable', $vo->goods->traffic * 1048576);
-                            }
-                        }
-
-                        // 把商品的流量加到账号上
-                        User::query()->where('id', $order->user_id)->increment('transfer_enable', $goods->traffic * 1048576);
-
-                        // 计算账号过期时间
-                        if ($order->user->expire_time < date('Y-m-d', strtotime("+" . $goods->days . " days"))) {
-                            $expireTime = date('Y-m-d', strtotime("+" . $goods->days . " days"));
-                        } else {
-                            $expireTime = $order->user->expire_time;
-                        }
-
-                        // 套餐就改流量重置日,流量包不改
-                        if ($goods->type == 2) {
-                            if (date('m') == 2 && date('d') == 29) {
-                                $traffic_reset_day = 28;
-                            } else {
-                                $traffic_reset_day = date('d') == 31 ? 30 : abs(date('d'));
-                            }
-                            User::query()->where('id', $order->user_id)->update(['traffic_reset_day' => $traffic_reset_day, 'expire_time' => $expireTime, 'enable' => 1]);
-                        } else {
-                            User::query()->where('id', $order->user_id)->update(['expire_time' => $expireTime, 'enable' => 1]);
-                        }
-
-                        // 写入用户标签
-                        if ($goods->label) {
-                            // 用户默认标签
-                            $defaultLabels = [];
-                            if (self::$config['initial_labels_for_user']) {
-                                $defaultLabels = explode(',', self::$config['initial_labels_for_user']);
-                            }
-
-                            // 取出现有的标签
-                            $userLabels = UserLabel::query()->where('user_id', $order->user_id)->pluck('label_id')->toArray();
-                            $goodsLabels = GoodsLabel::query()->where('goods_id', $order->goods_id)->pluck('label_id')->toArray();
-
-                            // 标签去重
-                            $newUserLabels = array_values(array_unique(array_merge($userLabels, $goodsLabels, $defaultLabels)));
-
-                            // 删除用户所有标签
-                            UserLabel::query()->where('user_id', $order->user_id)->delete();
-
-                            // 生成标签
-                            foreach ($newUserLabels as $vo) {
-                                $obj = new UserLabel();
-                                $obj->user_id = $order->user_id;
-                                $obj->label_id = $vo;
-                                $obj->save();
-                            }
-                        }
-
-                        // 写入返利日志
-                        if ($order->user->referral_uid) {
-                            $this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount * self::$config['referral_percent']);
-                        }
-
-                        // 取消重复返利
-                        User::query()->where('id', $order->user_id)->update(['referral_uid' => 0]);
-
-                        DB::commit();
-                    } catch (\Exception $e) {
-                        DB::rollBack();
-
-                        Log::info('【有赞云】审计订单时更新支付单和订单异常:' . $e->getMessage());
-                    }
-                }
-            }
-        }
-    }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
-    // 添加返利日志
-    public function addReferralLog($userId, $refUserId, $oid, $amount, $refAmount)
-    {
-        $log = new ReferralLog();
-        $log->user_id = $userId;
-        $log->ref_user_id = $refUserId;
-        $log->order_id = $oid;
-        $log->amount = $amount;
-        $log->ref_amount = $refAmount;
-        $log->status = 0;
-
-        return $log->save();
-    }
-}

+ 11 - 23
app/Console/Commands/AutoCheckNodeStatus.php

@@ -2,9 +2,9 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
 use App\Components\ServerChan;
-use App\Http\Models\Config;
 use App\Http\Models\EmailLog;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNodeInfo;
@@ -17,12 +17,12 @@ class AutoCheckNodeStatus extends Command
 {
     protected $signature = 'autoCheckNodeStatus';
     protected $description = '自动检测节点状态';
-    protected static $config;
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
-        self::$config = $this->systemConfig();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
@@ -30,7 +30,7 @@ class AutoCheckNodeStatus extends Command
         $jobStartTime = microtime(true);
 
         // 监测节点状态
-        if (self::$config['is_tcp_check']) {
+        if (self::$systemConfig['is_tcp_check']) {
             $this->checkNodes();
         }
 
@@ -45,7 +45,7 @@ class AutoCheckNodeStatus extends Command
     {
         $title = "节点异常警告";
 
-        $nodeList = SsNode::query()->where('status', 1)->where('is_tcp_check',1)->get();
+        $nodeList = SsNode::query()->where('status', 1)->where('is_tcp_check', 1)->get();
         foreach ($nodeList as $node) {
             $tcpCheck = $this->tcpCheck($node->ip);
             if (false !== $tcpCheck) {
@@ -66,7 +66,7 @@ class AutoCheckNodeStatus extends Command
 
                 // 异常才发通知消息
                 if ($tcpCheck) {
-                    if (self::$config['tcp_check_warning_times']) {
+                    if (self::$systemConfig['tcp_check_warning_times']) {
                         // 已通知次数
                         $cacheKey = 'tcp_check_warning_times_' . $node->id;
                         if (Cache::has($cacheKey)) {
@@ -76,11 +76,11 @@ class AutoCheckNodeStatus extends Command
                             $times = 1;
                         }
 
-                        if ($times < self::$config['tcp_check_warning_times']) {
+                        if ($times < self::$systemConfig['tcp_check_warning_times']) {
                             Cache::increment('tcp_check_warning_times_' . $node->id);
 
                             $this->notifyMaster($title, "节点**{$node->name}【{$node->ip}】**:**" . $text . "**", $node->name, $node->server);
-                        } elseif ($times >= self::$config['tcp_check_warning_times']) {
+                        } elseif ($times >= self::$systemConfig['tcp_check_warning_times']) {
                             Cache::forget('tcp_check_warning_times_' . $node->id);
                             SsNode::query()->where('id', $node->id)->update(['status' => 0]);
 
@@ -158,9 +158,9 @@ class AutoCheckNodeStatus extends Command
      */
     private function notifyMasterByEmail($title, $content, $nodeName, $nodeServer)
     {
-        if (self::$config['is_node_crash_warning'] && self::$config['crash_warning_email']) {
+        if (self::$systemConfig['is_node_crash_warning'] && self::$systemConfig['crash_warning_email']) {
             try {
-                Mail::to(self::$config['crash_warning_email'])->send(new nodeCrashWarning(self::$config['website_name'], $nodeName, $nodeServer));
+                Mail::to(self::$systemConfig['crash_warning_email'])->send(new nodeCrashWarning(self::$systemConfig['website_name'], $nodeName, $nodeServer));
                 $this->addEmailLog(1, $title, $content);
             } catch (\Exception $e) {
                 $this->addEmailLog(1, $title, $content, 0, $e->getMessage());
@@ -176,7 +176,7 @@ class AutoCheckNodeStatus extends Command
      */
     private function notifyMasterByServerchan($title, $content)
     {
-        if (self::$config['is_server_chan'] && self::$config['server_chan_key']) {
+        if (self::$systemConfig['is_server_chan'] && self::$systemConfig['server_chan_key']) {
             $serverChan = new ServerChan();
             $serverChan->send($title, $content);
         }
@@ -203,18 +203,6 @@ class AutoCheckNodeStatus extends Command
         $emailLogObj->save();
     }
 
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
     /**
      * 发起一个CURL请求
      *

+ 25 - 29
app/Console/Commands/AutoClearLog.php

@@ -2,8 +2,8 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\SsNodeInfo;
 use App\Http\Models\SsNodeOnlineLog;
 use App\Http\Models\SsNodeTrafficHourly;
@@ -16,36 +16,21 @@ class AutoClearLog extends Command
 {
     protected $signature = 'autoClearLog';
     protected $description = '自动清除日志';
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
-        $config = $this->systemConfig();
-
-        if ($config['is_clear_log']) {
-            // 自动清除30分钟以前的节点负载信息日志
-            SsNodeInfo::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 minutes"))))->delete();
-
-            // 自动清除1小时以前的节点在线用户数日志
-            SsNodeOnlineLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-60 minutes"))))->delete();
-
-            // 自动清除30天以前的用户流量日志
-            UserTrafficLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 days"))))->delete();
-
-            // 自动清除10天以前的用户每小时流量数据日志
-            UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
-
-            // 自动清除60天以前的节点每小时流量数据日志
-            SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-60 days')))->delete();
-
-            // 自动清除30天以前用户封禁日志
-            UserBanLog::query()->where('created_at', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 days"))))->delete();
+        // 清除日志
+        if (self::$systemConfig['is_clear_log']) {
+            $this->clearLog();
         }
 
         $jobEndTime = microtime(true);
@@ -54,15 +39,26 @@ class AutoClearLog extends Command
         Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
     }
 
-    // 系统配置
-    private function systemConfig()
+    // 清除日志
+    private function clearLog()
     {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
+        // 自动清除30分钟以前的节点负载信息日志
+        SsNodeInfo::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 minutes"))))->delete();
+
+        // 自动清除1小时以前的节点在线用户数日志
+        SsNodeOnlineLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-60 minutes"))))->delete();
+
+        // 自动清除30天以前的用户流量日志
+        UserTrafficLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 days"))))->delete();
 
-        return $data;
+        // 自动清除10天以前的用户每小时流量数据日志
+        UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
+
+        // 自动清除60天以前的节点每小时流量数据日志
+        SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-60 days')))->delete();
+
+        // 自动清除30天以前用户封禁日志
+        UserBanLog::query()->where('created_at', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 days"))))->delete();
     }
+
 }

+ 17 - 22
app/Console/Commands/AutoDecGoodsTraffic.php

@@ -2,8 +2,8 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\Order;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
@@ -15,24 +15,36 @@ class AutoDecGoodsTraffic extends Command
 {
     protected $signature = 'autoDecGoodsTraffic';
     protected $description = '自动扣减用户到期商品的流量';
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
+        // 扣减用户到期商品的流量
+        $this->decGoodsTraffic();
+
+        $jobEndTime = microtime(true);
+        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
+
+        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
+    }
+
+    // 扣减用户到期商品的流量
+    private function decGoodsTraffic()
+    {
         $orderList = Order::query()->with(['user', 'goods'])->where('status', 2)->where('is_expire', 0)->where('expire_at', '<', date('Y-m-d H:i:s'))->get();
         if (!$orderList->isEmpty()) {
-            $config = $this->systemConfig();
-
             // 用户默认标签
             $defaultLabels = [];
-            if ($config['initial_labels_for_user']) {
-                $defaultLabels = explode(',', $config['initial_labels_for_user']);
+            if (self::$systemConfig['initial_labels_for_user']) {
+                $defaultLabels = explode(',', self::$systemConfig['initial_labels_for_user']);
             }
 
             DB::beginTransaction();
@@ -87,22 +99,5 @@ class AutoDecGoodsTraffic extends Command
                 DB::rollBack();
             }
         }
-
-        $jobEndTime = microtime(true);
-        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
-
-        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
-    }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
     }
 }

+ 203 - 57
app/Console/Commands/AutoJob.php

@@ -2,13 +2,17 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
+use App\Components\Yzy;
+use App\Http\Models\Goods;
+use App\Http\Models\GoodsLabel;
+use App\Http\Models\ReferralLog;
 use Illuminate\Console\Command;
 use App\Http\Models\Coupon;
 use App\Http\Models\CouponLog;
 use App\Http\Models\Invite;
 use App\Http\Models\Order;
 use App\Http\Models\Payment;
-use App\Http\Models\Config;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
 use App\Http\Models\UserBanLog;
@@ -22,16 +26,16 @@ class AutoJob extends Command
 {
     protected $signature = 'autoJob';
     protected $description = '自动化任务';
-    protected static $config;
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
-        self::$config = $this->systemConfig();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     /*
-     * 以下操作顺序如果随意挪动可能导致出现异常
+     * 警告:除非熟悉业务流程,否则不推荐更改以下执行顺序,随意变更以下顺序可能导致系统异常
      */
     public function handle()
     {
@@ -49,17 +53,20 @@ class AutoJob extends Command
         // 封禁账号
         $this->blockUsers();
 
-        // 自动移除被封禁账号的标签
+        // 移除过期的账号的标签和流量
         $this->removeUserLabels();
 
-        // 自动解封被封禁的账号
+        // 解封被封禁的账号
         $this->unblockUsers();
 
         // 端口回收与分配
         $this->dispatchPort();
 
+        // 审计待支付的订单
+        $this->detectOrders();
+
         // 关闭超时未支付订单
-        $this->closeOrder();
+        $this->closeOrders();
 
         $jobEndTime = microtime(true);
         $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
@@ -92,13 +99,13 @@ class AutoJob extends Command
     // 封禁访问异常的订阅链接
     private function blockSubscribe()
     {
-        if (self::$config['is_subscribe_ban']) {
+        if (self::$systemConfig['is_subscribe_ban']) {
             $subscribeList = UserSubscribe::query()->where('status', 1)->get();
             if (!$subscribeList->isEmpty()) {
                 foreach ($subscribeList as $subscribe) {
                     // 24小时内不同IP的请求次数
                     $request_times = UserSubscribeLog::query()->where('sid', $subscribe->id)->where('request_time', '>=', date("Y-m-d H:i:s", strtotime("-24 hours")))->distinct('request_ip')->count('request_ip');
-                    if ($request_times >= self::$config['subscribe_ban_times']) {
+                    if ($request_times >= self::$systemConfig['subscribe_ban_times']) {
                         UserSubscribe::query()->where('id', $subscribe->id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '存在异常,自动封禁']);
 
                         // 记录封禁日志
@@ -116,7 +123,7 @@ class AutoJob extends Command
         $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->where('expire_time', '<', date('Y-m-d'))->get();
         if (!$userList->isEmpty()) {
             foreach ($userList as $user) {
-                if (self::$config['is_ban_status']) {
+                if (self::$systemConfig['is_ban_status']) {
                     User::query()->where('id', $user->id)->update([
                         'u'                 => 0,
                         'd'                 => 0,
@@ -144,17 +151,17 @@ class AutoJob extends Command
         }
 
         // 封禁1小时内流量异常账号
-        if (self::$config['is_traffic_ban']) {
+        if (self::$systemConfig['is_traffic_ban']) {
             $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->where('ban_time', 0)->get();
             if (!$userList->isEmpty()) {
                 foreach ($userList as $user) {
                     // 多往前取5分钟,防止数据统计任务执行时间过长导致没有数据
                     $totalTraffic = UserTrafficHourly::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 3900))->sum('total');
-                    if ($totalTraffic >= (self::$config['traffic_ban_value'] * 1024 * 1024 * 1024)) {
-                        User::query()->where('id', $user->id)->update(['enable' => 0, 'ban_time' => strtotime(date('Y-m-d H:i:s', strtotime("+" . self::$config['traffic_ban_time'] . " minutes")))]);
+                    if ($totalTraffic >= (self::$systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
+                        User::query()->where('id', $user->id)->update(['enable' => 0, 'ban_time' => strtotime(date('Y-m-d H:i:s', strtotime("+" . self::$systemConfig['traffic_ban_time'] . " minutes")))]);
 
                         // 写入日志
-                        $this->addUserBanLog($user->id, self::$config['traffic_ban_time'], '【临时封禁代理】-1小时内流量异常');
+                        $this->addUserBanLog($user->id, self::$systemConfig['traffic_ban_time'], '【临时封禁代理】-1小时内流量异常');
                     }
                 }
             }
@@ -172,7 +179,7 @@ class AutoJob extends Command
         }
     }
 
-    // 自动清空过期的账号的标签和流量(临时封禁不移除)
+    // 移除过期的账号的标签和流量(临时封禁不移除)
     private function removeUserLabels()
     {
         $userList = User::query()->where('enable', 0)->where('ban_time', 0)->where('expire_time', '<', date('Y-m-d'))->get();
@@ -189,7 +196,7 @@ class AutoJob extends Command
         }
     }
 
-    // 解封账号
+    // 解封被临时封禁的账号
     private function unblockUsers()
     {
         // 解封被临时封禁的账号
@@ -218,12 +225,12 @@ class AutoJob extends Command
     // 端口回收与分配
     private function dispatchPort()
     {
-        if (self::$config['auto_release_port']) {
+        if (self::$systemConfig['auto_release_port']) {
             ## 自动分配端口
             $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->where('port', 0)->get();
             if (!$userList->isEmpty()) {
                 foreach ($userList as $user) {
-                    $port = self::$config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+                    $port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
 
                     User::query()->where('id', $user->id)->update(['port' => $port]);
                 }
@@ -254,10 +261,165 @@ class AutoJob extends Command
         }
     }
 
-    // 自动关闭超时未支付订单
-    private function closeOrder()
+    // 审计待支付的订单
+    private function detectOrders()
+    {
+        /*
+         * 因为订单在15分钟未支付则会被自动关闭
+         * 当有赞没有正常推送消息或者其他原因导致用户已付款但是订单不生效从而导致用户无法正常加流量、置状态
+         * 故需要每分钟请求一次未支付订单,审计一下其支付状态
+         */
+        $paymentList = Payment::query()->with(['order', 'user'])->where('status', 0)->get();
+        if (!$paymentList->isEmpty()) {
+            foreach ($paymentList as $payment) {
+                // 跳过order丢失的订单
+                if (!isset($payment->order)) {
+                    continue;
+                }
+
+                $yzy = new yzy();
+                $trade = $yzy->getTradeByQrId($payment->qr_id);
+                if ($trade['response']['total_results']) {
+                    // 再判断一遍当前要操作的订单的状态是否被改变了(可能请求延迟的时候已经回调处理完了)
+                    $payment = Payment::query()->where('id', $payment->id)->first();
+                    if ($payment->status != '0') {
+                        continue;
+                    }
+
+                    // 处理订单
+                    DB::beginTransaction();
+                    try {
+                        // 如果支付单中没有用户信息则创建一个用户
+                        if (!$payment->user_id) {
+                            // 生成一个可用端口
+                            $port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
+
+                            $user = new User();
+                            $user->username = '自动生成-' . $payment->order->email;
+                            $user->password = md5(makeRandStr());
+                            $user->port = $port;
+                            $user->passwd = makeRandStr();
+                            $user->enable = 1;
+                            $user->method = Helpers::getDefaultMethod();
+                            $user->protocol = Helpers::getDefaultProtocol();
+                            $user->obfs = Helpers::getDefaultObfs();
+                            $user->usage = 1;
+                            $user->transfer_enable = toGB(1000);
+                            $user->enable_time = date('Y-m-d');
+                            $user->expire_time = date('Y-m-d', strtotime("+" . $payment->order->goods->days . " days"));
+                            $user->reg_ip = getClientIp();
+                            $user->referral_uid = 0;
+                            $user->traffic_reset_day = 0;
+                            $user->status = 1;
+                            $user->save();
+
+                            if ($user->id) {
+                                Order::query()->where('oid', $payment->oid)->update(['user_id' => $user->id]);
+                            }
+                        }
+
+                        // 更新支付单
+                        $payment->pay_way = $trade['response']['qr_trades']['pay_type'] == 'WXPAY_BIGUNSIGN' ? 1 : 2; // 1-微信、2-支付宝
+                        $payment->status = 1;
+                        $payment->save();
+
+                        // 更新订单
+                        $order = Order::query()->with(['user'])->where('oid', $payment->oid)->first();
+                        $order->status = 2;
+                        $order->save();
+
+                        // 如果买的是套餐,则先将之前购买的所有套餐置都无效,并扣掉之前所有套餐的流量
+                        $goods = Goods::query()->where('id', $order->goods_id)->first();
+                        if ($goods->type == 2) {
+                            $existOrderList = Order::query()
+                                ->with(['goods'])
+                                ->whereHas('goods', function ($q) {
+                                    $q->where('type', 2);
+                                })
+                                ->where('user_id', $order->user_id)
+                                ->where('oid', '<>', $order->oid)
+                                ->where('is_expire', 0)
+                                ->where('status', 2)
+                                ->get();
+
+                            foreach ($existOrderList as $vo) {
+                                Order::query()->where('oid', $vo->oid)->update(['is_expire' => 1]);
+                                User::query()->where('id', $order->user_id)->decrement('transfer_enable', $vo->goods->traffic * 1048576);
+                            }
+                        }
+
+                        // 把商品的流量加到账号上
+                        User::query()->where('id', $order->user_id)->increment('transfer_enable', $goods->traffic * 1048576);
+
+                        // 计算账号过期时间
+                        if ($order->user->expire_time < date('Y-m-d', strtotime("+" . $goods->days . " days"))) {
+                            $expireTime = date('Y-m-d', strtotime("+" . $goods->days . " days"));
+                        } else {
+                            $expireTime = $order->user->expire_time;
+                        }
+
+                        // 套餐就改流量重置日,流量包不改
+                        if ($goods->type == 2) {
+                            if (date('m') == 2 && date('d') == 29) {
+                                $traffic_reset_day = 28;
+                            } else {
+                                $traffic_reset_day = date('d') == 31 ? 30 : abs(date('d'));
+                            }
+                            User::query()->where('id', $order->user_id)->update(['traffic_reset_day' => $traffic_reset_day, 'expire_time' => $expireTime, 'enable' => 1]);
+                        } else {
+                            User::query()->where('id', $order->user_id)->update(['expire_time' => $expireTime, 'enable' => 1]);
+                        }
+
+                        // 写入用户标签
+                        if ($goods->label) {
+                            // 用户默认标签
+                            $defaultLabels = [];
+                            if (self::$systemConfig['initial_labels_for_user']) {
+                                $defaultLabels = explode(',', self::$systemConfig['initial_labels_for_user']);
+                            }
+
+                            // 取出现有的标签
+                            $userLabels = UserLabel::query()->where('user_id', $order->user_id)->pluck('label_id')->toArray();
+                            $goodsLabels = GoodsLabel::query()->where('goods_id', $order->goods_id)->pluck('label_id')->toArray();
+
+                            // 标签去重
+                            $newUserLabels = array_values(array_unique(array_merge($userLabels, $goodsLabels, $defaultLabels)));
+
+                            // 删除用户所有标签
+                            UserLabel::query()->where('user_id', $order->user_id)->delete();
+
+                            // 生成标签
+                            foreach ($newUserLabels as $vo) {
+                                $obj = new UserLabel();
+                                $obj->user_id = $order->user_id;
+                                $obj->label_id = $vo;
+                                $obj->save();
+                            }
+                        }
+
+                        // 写入返利日志
+                        if ($order->user->referral_uid) {
+                            $this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount * self::$systemConfig['referral_percent']);
+                        }
+
+                        // 取消重复返利
+                        User::query()->where('id', $order->user_id)->update(['referral_uid' => 0]);
+
+                        DB::commit();
+                    } catch (\Exception $e) {
+                        DB::rollBack();
+
+                        Log::info('【有赞云】审计订单时更新支付单和订单异常:' . $e->getMessage());
+                    }
+                }
+            }
+        }
+    }
+
+    // 关闭超时未支付订单
+    private function closeOrders()
     {
-        // 自动关闭超时未支付的有赞云订单(有赞云收款二维码超过30分钟自动关闭,我们限制15分钟内必须付款)
+        // 关闭超时未支付的有赞云订单(有赞云收款二维码超过30分钟自动关闭,关闭后无法再支付,所以我们限制15分钟内必须付款)
         $paymentList = Payment::query()->with(['order', 'order.coupon'])->where('status', 0)->where('created_at', '<=', date("Y-m-d H:i:s", strtotime("-15 minutes")))->get();
         if (!$paymentList->isEmpty()) {
             DB::beginTransaction();
@@ -320,43 +482,27 @@ class AutoJob extends Command
         $couponLog->save();
     }
 
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
-    // 获取一个随机端口
-    public function getRandPort()
-    {
-        $port = mt_rand(self::$config['min_port'], self::$config['max_port']);
-        $deny_port = [1068, 1109, 1434, 3127, 3128, 3129, 3130, 3332, 4444, 5554, 6669, 8080, 8081, 8082, 8181, 8282, 9996, 17185, 24554, 35601, 60177, 60179]; // 不生成的端口
-
-        $exists_port = User::query()->pluck('port')->toArray();
-        if (in_array($port, $exists_port) || in_array($port, $deny_port)) {
-            $port = $this->getRandPort();
-        }
-
-        return $port;
-    }
-
-    // 获取一个端口
-    public function getOnlyPort()
+    /**
+     * 添加返利日志
+     *
+     * @param int $userId 用户ID
+     * @param int $refUserId 返利用户ID
+     * @param int $oid 订单ID
+     * @param int $amount 发生金额
+     * @param int $refAmount 返利金额
+     *
+     * @return int
+     */
+    public function addReferralLog($userId, $refUserId, $oid, $amount, $refAmount)
     {
-        $port = self::$config['min_port'];
-        $deny_port = [1068, 1109, 1434, 3127, 3128, 3129, 3130, 3332, 4444, 5554, 6669, 8080, 8081, 8082, 8181, 8282, 9996, 17185, 24554, 35601, 60177, 60179]; // 不生成的端口
-
-        $exists_port = User::query()->where('port', '>=', self::$config['min_port'])->where('port', '<=', self::$config['max_port'])->pluck('port')->toArray();
-        while (in_array($port, $exists_port) || in_array($port, $deny_port)) {
-            $port = $port + 1;
-        }
+        $log = new ReferralLog();
+        $log->user_id = $userId;
+        $log->ref_user_id = $refUserId;
+        $log->order_id = $oid;
+        $log->amount = $amount;
+        $log->ref_amount = $refAmount;
+        $log->status = 0;
 
-        return $port;
+        return $log->save();
     }
 }

+ 43 - 48
app/Console/Commands/AutoResetUserTraffic.php

@@ -2,8 +2,8 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\Order;
 use App\Http\Models\User;
 use Log;
@@ -12,55 +12,21 @@ class AutoResetUserTraffic extends Command
 {
     protected $signature = 'autoResetUserTraffic';
     protected $description = '自动重置用户可用流量';
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
-        $config = $this->systemConfig();
-
-        if ($config['reset_traffic']) {
-            $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->get();
-            if (!$userList->isEmpty()) {
-                foreach ($userList as $user) {
-                    if (!$user->traffic_reset_day) {
-                        continue;
-                    }
-
-                    // 取出用户最后购买的有效套餐
-                    $order = Order::query()
-                        ->with(['user', 'goods'])
-                        ->whereHas('goods', function ($q) {
-                            $q->where('type', 2);
-                        })
-                        ->where('user_id', $user->id)
-                        ->where('is_expire', 0)
-                        ->orderBy('oid', 'desc')
-                        ->first();
-
-                    if (!$order) {
-                        continue;
-                    }
-
-                    $month = abs(date('m'));
-                    $today = abs(date('d'));
-                    if ($order->user->traffic_reset_day == $today) {
-                        // 跳过本月,防止异常重置
-                        if ($month == date('m', strtotime($order->expire_at))) {
-                            continue;
-                        } elseif ($month == date('m', strtotime($order->created_at))) {
-                            continue;
-                        }
-
-                        User::query()->where('id', $user->id)->update(['u' => 0, 'd' => 0]);
-                    }
-                }
-            }
+        // 重置用户流量
+        if (self::$systemConfig['reset_traffic']) {
+            $this->resetUserTraffic();
         }
 
         $jobEndTime = microtime(true);
@@ -69,15 +35,44 @@ class AutoResetUserTraffic extends Command
         Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
     }
 
-    // 系统配置
-    private function systemConfig()
+    // 重置用户流量
+    private function resetUserTraffic()
     {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
+        $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->get();
+        if (!$userList->isEmpty()) {
+            foreach ($userList as $user) {
+                if (!$user->traffic_reset_day) {
+                    continue;
+                }
+
+                // 取出用户最后购买的有效套餐
+                $order = Order::query()
+                    ->with(['user', 'goods'])
+                    ->whereHas('goods', function ($q) {
+                        $q->where('type', 2);
+                    })
+                    ->where('user_id', $user->id)
+                    ->where('is_expire', 0)
+                    ->orderBy('oid', 'desc')
+                    ->first();
+
+                if (!$order) {
+                    continue;
+                }
+
+                $month = abs(date('m'));
+                $today = abs(date('d'));
+                if ($order->user->traffic_reset_day == $today) {
+                    // 跳过本月,防止异常重置
+                    if ($month == date('m', strtotime($order->expire_at))) {
+                        continue;
+                    } elseif ($month == date('m', strtotime($order->created_at))) {
+                        continue;
+                    }
 
-        return $data;
+                    User::query()->where('id', $user->id)->update(['u' => 0, 'd' => 0]);
+                }
+            }
+        }
     }
 }

+ 1 - 24
app/Console/Commands/AutoStatisticsNodeDailyTraffic.php

@@ -43,7 +43,7 @@ class AutoStatisticsNodeDailyTraffic extends Command
         $u = $query->sum('u');
         $d = $query->sum('d');
         $total = $u + $d;
-        $traffic = $this->flowAutoShow($total);
+        $traffic = flowAutoShow($total);
 
         $obj = new SsNodeTrafficDaily();
         $obj->node_id = $node_id;
@@ -53,27 +53,4 @@ class AutoStatisticsNodeDailyTraffic extends Command
         $obj->traffic = $traffic;
         $obj->save();
     }
-
-    // 根据流量值自动转换单位输出
-    private function flowAutoShow($value = 0)
-    {
-        $kb = 1024;
-        $mb = 1048576;
-        $gb = 1073741824;
-        $tb = $gb * 1024;
-        $pb = $tb * 1024;
-        if (abs($value) >= $pb) {
-            return round($value / $pb, 2) . "PB";
-        } elseif (abs($value) >= $tb) {
-            return round($value / $tb, 2) . "TB";
-        } elseif (abs($value) >= $gb) {
-            return round($value / $gb, 2) . "GB";
-        } elseif (abs($value) >= $mb) {
-            return round($value / $mb, 2) . "MB";
-        } elseif (abs($value) >= $kb) {
-            return round($value / $kb, 2) . "KB";
-        } else {
-            return round($value, 2) . "B";
-        }
-    }
 }

+ 1 - 24
app/Console/Commands/AutoStatisticsNodeHourlyTraffic.php

@@ -43,7 +43,7 @@ class AutoStatisticsNodeHourlyTraffic extends Command
         $u = $query->sum('u');
         $d = $query->sum('d');
         $total = $u + $d;
-        $traffic = $this->flowAutoShow($total);
+        $traffic = flowAutoShow($total);
 
         $obj = new SsNodeTrafficHourly();
         $obj->node_id = $node_id;
@@ -53,27 +53,4 @@ class AutoStatisticsNodeHourlyTraffic extends Command
         $obj->traffic = $traffic;
         $obj->save();
     }
-
-    // 根据流量值自动转换单位输出
-    private function flowAutoShow($value = 0)
-    {
-        $kb = 1024;
-        $mb = 1048576;
-        $gb = 1073741824;
-        $tb = $gb * 1024;
-        $pb = $tb * 1024;
-        if (abs($value) >= $pb) {
-            return round($value / $pb, 2) . "PB";
-        } elseif (abs($value) >= $tb) {
-            return round($value / $tb, 2) . "TB";
-        } elseif (abs($value) >= $gb) {
-            return round($value / $gb, 2) . "GB";
-        } elseif (abs($value) >= $mb) {
-            return round($value / $mb, 2) . "MB";
-        } elseif (abs($value) >= $kb) {
-            return round($value / $kb, 2) . "KB";
-        } else {
-            return round($value, 2) . "B";
-        }
-    }
 }

+ 1 - 24
app/Console/Commands/AutoStatisticsUserDailyTraffic.php

@@ -55,7 +55,7 @@ class AutoStatisticsUserDailyTraffic extends Command
         $u = $query->sum('u');
         $d = $query->sum('d');
         $total = $u + $d;
-        $traffic = $this->flowAutoShow($total);
+        $traffic = flowAutoShow($total);
 
         $obj = new UserTrafficDaily();
         $obj->user_id = $user_id;
@@ -66,27 +66,4 @@ class AutoStatisticsUserDailyTraffic extends Command
         $obj->traffic = $traffic;
         $obj->save();
     }
-
-    // 根据流量值自动转换单位输出
-    private function flowAutoShow($value = 0)
-    {
-        $kb = 1024;
-        $mb = 1048576;
-        $gb = 1073741824;
-        $tb = $gb * 1024;
-        $pb = $tb * 1024;
-        if (abs($value) >= $pb) {
-            return round($value / $pb, 2) . "PB";
-        } elseif (abs($value) >= $tb) {
-            return round($value / $tb, 2) . "TB";
-        } elseif (abs($value) >= $gb) {
-            return round($value / $gb, 2) . "GB";
-        } elseif (abs($value) >= $mb) {
-            return round($value / $mb, 2) . "MB";
-        } elseif (abs($value) >= $kb) {
-            return round($value / $kb, 2) . "KB";
-        } else {
-            return round($value, 2) . "B";
-        }
-    }
 }

+ 1 - 24
app/Console/Commands/AutoStatisticsUserHourlyTraffic.php

@@ -55,7 +55,7 @@ class AutoStatisticsUserHourlyTraffic extends Command
         $u = $query->sum('u');
         $d = $query->sum('d');
         $total = $u + $d;
-        $traffic = $this->flowAutoShow($total);
+        $traffic = flowAutoShow($total);
 
         $obj = new UserTrafficHourly();
         $obj->user_id = $user_id;
@@ -66,27 +66,4 @@ class AutoStatisticsUserHourlyTraffic extends Command
         $obj->traffic = $traffic;
         $obj->save();
     }
-
-    // 根据流量值自动转换单位输出
-    private function flowAutoShow($value = 0)
-    {
-        $kb = 1024;
-        $mb = 1048576;
-        $gb = 1073741824;
-        $tb = $gb * 1024;
-        $pb = $tb * 1024;
-        if (abs($value) >= $pb) {
-            return round($value / $pb, 2) . "PB";
-        } elseif (abs($value) >= $tb) {
-            return round($value / $tb, 2) . "TB";
-        } elseif (abs($value) >= $gb) {
-            return round($value / $gb, 2) . "GB";
-        } elseif (abs($value) >= $mb) {
-            return round($value / $mb, 2) . "MB";
-        } elseif (abs($value) >= $kb) {
-            return round($value / $kb, 2) . "KB";
-        } else {
-            return round($value, 2) . "B";
-        }
-    }
 }

+ 41 - 49
app/Console/Commands/UserExpireAutoWarning.php

@@ -2,8 +2,8 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\User;
 use App\Http\Models\EmailLog;
 use App\Mail\userExpireWarning;
@@ -15,59 +15,63 @@ class UserExpireAutoWarning extends Command
 {
     protected $signature = 'userExpireAutoWarning';
     protected $description = '用户临近到期自动发邮件提醒';
-
-    protected static $config;
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
-        $config = $this->systemConfig();
+        // 用户临近到期自动发邮件提醒
+        if (self::$systemConfig['expire_warning']) {
+            $this->userExpireWarning();
+        }
 
-        if ($config['expire_warning']) {
-            // 只取SSR没被禁用的用户,其他不用管
-            $userList = User::query()->where('enable', 1)->get();
-            foreach ($userList as $user) {
-                // 用户名不是邮箱的跳过
-                if (false === filter_var($user->username, FILTER_VALIDATE_EMAIL)) {
-                    continue;
-                }
+        $jobEndTime = microtime(true);
+        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
 
-                // 计算剩余可用时间
-                $lastCanUseDays = ceil(round(strtotime($user->expire_time) - strtotime(date('Y-m-d H:i:s'))) / 3600 / 24);
-                if ($lastCanUseDays == 0) {
-                    $title = '账号过期提醒';
-                    $content = '您的账号将于今天晚上【24:00】过期。';
+        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
+    }
 
-                    try {
-                        Mail::to($user->username)->send(new userExpireWarningToday($config['website_name']));
-                        $this->sendEmailLog($user->id, $title, $content);
-                    } catch (\Exception $e) {
-                        $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
-                    }
-                } elseif ($lastCanUseDays > 0 && $lastCanUseDays <= $config['expire_days']) {
-                    $title = '账号过期提醒';
-                    $content = '您的账号还剩' . $lastCanUseDays . '天即将过期。';
+    private function userExpireWarning()
+    {
+        // 只取SSR没被禁用的用户,其他不用管
+        $userList = User::query()->where('enable', 1)->get();
+        foreach ($userList as $user) {
+            // 用户名不是邮箱的跳过
+            if (false === filter_var($user->username, FILTER_VALIDATE_EMAIL)) {
+                continue;
+            }
 
-                    try {
-                        Mail::to($user->username)->send(new userExpireWarning($config['website_name'], $lastCanUseDays));
-                        $this->sendEmailLog($user->id, $title, $content);
-                    } catch (\Exception $e) {
-                        $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
-                    }
+            // 计算剩余可用时间
+            $lastCanUseDays = ceil(round(strtotime($user->expire_time) - strtotime(date('Y-m-d H:i:s'))) / 3600 / 24);
+            if ($lastCanUseDays == 0) {
+                $title = '账号过期提醒';
+                $content = '您的账号将于今天晚上【24:00】过期。';
+
+                try {
+                    Mail::to($user->username)->send(new userExpireWarningToday(self::$systemConfig['website_name']));
+                    $this->sendEmailLog($user->id, $title, $content);
+                } catch (\Exception $e) {
+                    $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
+                }
+            } elseif ($lastCanUseDays > 0 && $lastCanUseDays <= self::$systemConfig['expire_days']) {
+                $title = '账号过期提醒';
+                $content = '您的账号还剩' . $lastCanUseDays . '天即将过期。';
+
+                try {
+                    Mail::to($user->username)->send(new userExpireWarning(self::$systemConfig['website_name'], $lastCanUseDays));
+                    $this->sendEmailLog($user->id, $title, $content);
+                } catch (\Exception $e) {
+                    $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
                 }
             }
         }
-
-        $jobEndTime = microtime(true);
-        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
-
-        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
     }
 
     /**
@@ -90,16 +94,4 @@ class UserExpireAutoWarning extends Command
         $emailLogObj->created_at = date('Y-m-d H:i:s');
         $emailLogObj->save();
     }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
 }

+ 18 - 44
app/Console/Commands/UserTrafficAbnormalAutoWarning.php

@@ -2,9 +2,9 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use App\Components\ServerChan;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\User;
 use App\Http\Models\UserTrafficHourly;
 use Log;
@@ -13,75 +13,49 @@ class UserTrafficAbnormalAutoWarning extends Command
 {
     protected $signature = 'userTrafficAbnormalAutoWarning';
     protected $description = '用户流量异常警告';
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
+
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
+        // 用户流量异常警告
+        $this->userTrafficAbnormalWarning();
+
+        $jobEndTime = microtime(true);
+        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
+
+        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
+    }
+
+    // 用户流量异常警告
+    private function userTrafficAbnormalWarning()
+    {
         // 1小时内流量异常用户(多往前取5分钟,防止数据统计任务执行时间过长导致没有数据)
         $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 3900))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快查询速度
         if (!$userTotalTrafficList->isEmpty()) {
             $title = "流量异常用户提醒";
-            $config = $this->systemConfig();
 
             foreach ($userTotalTrafficList as $vo) {
                 $user = User::query()->where('id', $vo->user_id)->first();
 
                 // 通过ServerChan发微信消息提醒管理员
-                if ($vo->totalTraffic > ($config['traffic_ban_value'] * 1024 * 1024 * 1024) && $config['is_server_chan'] && $config['server_chan_key']) {
+                if ($vo->totalTraffic > (self::$systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024) && self::$systemConfig['is_server_chan'] && self::$systemConfig['server_chan_key']) {
                     $traffic = UserTrafficHourly::query()->where('node_id', 0)->where('user_id', $vo->user_id)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 3900))->selectRaw("user_id, sum(`u`) as totalU, sum(`d`) as totalD, sum(total) as totalTraffic")->first();
 
-                    $content = "用户**{$user->username}(ID:{$user->id})**,最近1小时**上传流量:{$this->flowAutoShow($traffic->totalU)},下载流量:{$this->flowAutoShow($traffic->totalD)},共计:{$this->flowAutoShow($traffic->totalTraffic)}**。";
+                    $content = "用户**{$user->username}(ID:{$user->id})**,最近1小时**上行流量:" . flowAutoShow($traffic->totalU) . ",下行流量:" . flowAutoShow($traffic->totalD) . ",共计:" . flowAutoShow($traffic->totalTraffic) . "**。";
 
                     $serverChan = new ServerChan();
                     $serverChan->send($title, $content);
                 }
             }
         }
-
-        $jobEndTime = microtime(true);
-        $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
-
-        Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
-    }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
-    // 根据流量值自动转换单位输出
-    private function flowAutoShow($value = 0)
-    {
-        $kb = 1024;
-        $mb = 1048576;
-        $gb = 1073741824;
-        $tb = $gb * 1024;
-        $pb = $tb * 1024;
-        if (abs($value) >= $pb) {
-            return round($value / $pb, 2) . "PB";
-        } elseif (abs($value) >= $tb) {
-            return round($value / $tb, 2) . "TB";
-        } elseif (abs($value) >= $gb) {
-            return round($value / $gb, 2) . "GB";
-        } elseif (abs($value) >= $mb) {
-            return round($value / $mb, 2) . "MB";
-        } elseif (abs($value) >= $kb) {
-            return round($value / $kb, 2) . "KB";
-        } else {
-            return round($value, 2) . "B";
-        }
     }
 }

+ 31 - 38
app/Console/Commands/UserTrafficAutoWarning.php

@@ -2,8 +2,8 @@
 
 namespace App\Console\Commands;
 
+use App\Components\Helpers;
 use Illuminate\Console\Command;
-use App\Http\Models\Config;
 use App\Http\Models\User;
 use App\Http\Models\EmailLog;
 use App\Mail\userTrafficWarning;
@@ -14,41 +14,21 @@ class UserTrafficAutoWarning extends Command
 {
     protected $signature = 'userTrafficAutoWarning';
     protected $description = '用户流量超过警告阈值自动发邮件提醒';
-
-    protected static $config;
+    protected static $systemConfig;
 
     public function __construct()
     {
         parent::__construct();
+        self::$systemConfig = Helpers::systemConfig();
     }
 
     public function handle()
     {
         $jobStartTime = microtime(true);
 
-        $config = $this->systemConfig();
-
-        if ($config['traffic_warning']) {
-            $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->where('transfer_enable', '>', 0)->get();
-            foreach ($userList as $user) {
-                // 用户名不是邮箱的跳过
-                if (false === filter_var($user->username, FILTER_VALIDATE_EMAIL)) {
-                    continue;
-                }
-
-                $usedPercent = round(($user->d + $user->u) / $user->transfer_enable, 2) * 100; // 已使用流量百分比
-                if ($usedPercent >= $config['traffic_warning_percent']) {
-                    $title = '流量提醒';
-                    $content = '流量已使用:' . $usedPercent . '%,请保持关注。';
-
-                    try {
-                        Mail::to($user->username)->send(new userTrafficWarning($config['website_name'], $usedPercent));
-                        $this->sendEmailLog($user->id, $title, $content);
-                    } catch (\Exception $e) {
-                        $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
-                    }
-                }
-            }
+        // 用户流量超过警告阈值自动发邮件提醒
+        if (self::$systemConfig['traffic_warning']) {
+            $this->userTrafficWarning();
         }
 
         $jobEndTime = microtime(true);
@@ -57,6 +37,31 @@ class UserTrafficAutoWarning extends Command
         Log::info('执行定时任务【' . $this->description . '】,耗时' . $jobUsedTime . '秒');
     }
 
+    // 用户流量超过警告阈值自动发邮件提醒
+    private function userTrafficWarning()
+    {
+        $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->where('transfer_enable', '>', 0)->get();
+        foreach ($userList as $user) {
+            // 用户名不是邮箱的跳过
+            if (false === filter_var($user->username, FILTER_VALIDATE_EMAIL)) {
+                continue;
+            }
+
+            $usedPercent = round(($user->d + $user->u) / $user->transfer_enable, 2) * 100; // 已使用流量百分比
+            if ($usedPercent >= self::$systemConfig['traffic_warning_percent']) {
+                $title = '流量提醒';
+                $content = '流量已使用:' . $usedPercent . '%,请保持关注。';
+
+                try {
+                    Mail::to($user->username)->send(new userTrafficWarning(self::$systemConfig['website_name'], $usedPercent));
+                    $this->sendEmailLog($user->id, $title, $content);
+                } catch (\Exception $e) {
+                    $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
+                }
+            }
+        }
+    }
+
     /**
      * 写入邮件发送日志
      *
@@ -77,16 +82,4 @@ class UserTrafficAutoWarning extends Command
         $emailLogObj->created_at = date('Y-m-d H:i:s');
         $emailLogObj->save();
     }
-
-    // 系统配置
-    private function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
 }

+ 0 - 2
app/Console/Kernel.php

@@ -13,7 +13,6 @@ class Kernel extends ConsoleKernel
      * @var array
      */
     protected $commands = [
-        \App\Console\Commands\AutoAuditOrders::class,
         \App\Console\Commands\AutoJob::class,
         \App\Console\Commands\AutoClearLog::class,
         \App\Console\Commands\AutoDecGoodsTraffic::class,
@@ -37,7 +36,6 @@ class Kernel extends ConsoleKernel
      */
     protected function schedule(Schedule $schedule)
     {
-        $schedule->command('autoAuditOrders')->everyMinute();
         $schedule->command('autoJob')->everyMinute();
         $schedule->command('autoClearLog')->everyThirtyMinutes();
         $schedule->command('autoDecGoodsTraffic')->everyTenMinutes();

+ 94 - 88
app/Http/Controllers/AdminController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Http\Models\Article;
 use App\Http\Models\Config;
 use App\Http\Models\Country;
@@ -40,17 +41,24 @@ use DB;
 
 class AdminController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     public function index(Request $request)
     {
-        $past = strtotime(date('Y-m-d', strtotime("-" . $this->systemConfig['expire_days'] . " days")));
+        $past = strtotime(date('Y-m-d', strtotime("-" . self::$systemConfig['expire_days'] . " days")));
 
-        $view['expireDays'] = $this->systemConfig['expire_days'];
+        $view['expireDays'] = self::$systemConfig['expire_days'];
         $view['totalUserCount'] = User::query()->count(); // 总用户数
         $view['enableUserCount'] = User::query()->where('enable', 1)->count(); // 有效用户数
         $view['activeUserCount'] = User::query()->where('t', '>=', $past)->count(); // 活跃用户数
         $view['unActiveUserCount'] = User::query()->where('t', '<=', $past)->where('enable', 1)->where('t', '>', 0)->count(); // 不活跃用户数
         $view['onlineUserCount'] = User::query()->where('t', '>=', time() - 600)->count(); // 10分钟内在线用户数
-        $view['expireWarningUserCount'] = User::query()->where('expire_time', '>=', date('Y-m-d', strtotime("now")))->where('expire_time', '<=', date('Y-m-d', strtotime("+" . $this->systemConfig['expire_days'] . " days")))->count(); // 临近过期用户数
+        $view['expireWarningUserCount'] = User::query()->where('expire_time', '>=', date('Y-m-d', strtotime("now")))->where('expire_time', '<=', date('Y-m-d', strtotime("+" . self::$systemConfig['expire_days'] . " days")))->count(); // 临近过期用户数
         $view['largeTrafficUserCount'] = User::query()->whereRaw('(u + d) >= 107374182400')->whereIn('status', [0, 1])->count(); // 流量超过100G的用户
 
         // 1小时内流量异常用户
@@ -58,7 +66,7 @@ class AdminController extends Controller
         $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 3900))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
         if (!$userTotalTrafficList->isEmpty()) {
             foreach ($userTotalTrafficList as $vo) {
-                if ($vo->totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
+                if ($vo->totalTraffic > (self::$systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
                     $tempUsers[] = $vo->user_id;
                 }
             }
@@ -78,7 +86,7 @@ class AdminController extends Controller
         $view['totalWaitRefAmount'] = ReferralLog::query()->whereIn('status', [0, 1])->sum('ref_amount') / 100;
         $view['totalRefAmount'] = ReferralApply::query()->where('status', 2)->sum('amount') / 100;
 
-        return Response::view('admin/index', $view);
+        return Response::view('admin.index', $view);
     }
 
     // 用户列表
@@ -133,7 +141,7 @@ class AdminController extends Controller
 
         // 临近过期提醒
         if ($expireWarning) {
-            $query->where('expire_time', '>=', date('Y-m-d', strtotime("now")))->where('expire_time', '<=', date('Y-m-d', strtotime("+" . $this->systemConfig['expire_days'] . " days")));
+            $query->where('expire_time', '>=', date('Y-m-d', strtotime("now")))->where('expire_time', '<=', date('Y-m-d', strtotime("+" . self::$systemConfig['expire_days'] . " days")));
         }
 
         // 当前在线
@@ -143,7 +151,7 @@ class AdminController extends Controller
 
         // 不活跃用户
         if ($unActive) {
-            $query->where('t', '>', 0)->where('t', '<=', strtotime(date('Y-m-d', strtotime("-" . $this->systemConfig['expire_days'] . " days"))))->where('enable', 1);
+            $query->where('t', '>', 0)->where('t', '<=', strtotime(date('Y-m-d', strtotime("-" . self::$systemConfig['expire_days'] . " days"))))->where('enable', 1);
         }
 
         // 1小时内流量异常用户
@@ -152,7 +160,7 @@ class AdminController extends Controller
             $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 3900))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
             if (!$userTotalTrafficList->isEmpty()) {
                 foreach ($userTotalTrafficList as $vo) {
-                    if ($vo->totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
+                    if ($vo->totalTraffic > (self::$systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
                         $tempUsers[] = $vo->user_id;
                     }
                 }
@@ -177,12 +185,12 @@ class AdminController extends Controller
             // 流量异常警告
             $time = date('Y-m-d H:i:s', time() - 3900);
             $totalTraffic = UserTrafficHourly::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', $time)->sum('total');
-            $user->trafficWarning = $totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024) ? 1 : 0;
+            $user->trafficWarning = $totalTraffic > (self::$systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024) ? 1 : 0;
         }
 
         $view['userList'] = $userList;
 
-        return Response::view('admin/userList', $view);
+        return Response::view('admin.userList', $view);
     }
 
     // 添加账号
@@ -243,15 +251,15 @@ class AdminController extends Controller
             }
         } else {
             // 生成一个可用端口
-            $view['last_port'] = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
-            $view['is_rand_port'] = $this->systemConfig['is_rand_port'];
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
-            $view['level_list'] = $this->levelList();
+            $view['last_port'] = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
+            $view['is_rand_port'] = self::$systemConfig['is_rand_port'];
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
+            $view['level_list'] = Helpers::levelList();
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('admin/addUser', $view);
+            return Response::view('admin.addUser', $view);
         }
     }
 
@@ -262,7 +270,7 @@ class AdminController extends Controller
         try {
             for ($i = 0; $i < 5; $i++) {
                 // 生成一个可用端口
-                $port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+                $port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
 
                 $user = new User();
                 $user->username = '批量生成-' . makeRandStr();
@@ -270,9 +278,9 @@ class AdminController extends Controller
                 $user->port = $port;
                 $user->passwd = makeRandStr();
                 $user->enable = 1;
-                $user->method = $this->getDefaultMethod();
-                $user->protocol = $this->getDefaultProtocol();
-                $user->obfs = $this->getDefaultObfs();
+                $user->method = Helpers::getDefaultMethod();
+                $user->protocol = Helpers::getDefaultProtocol();
+                $user->obfs = Helpers::getDefaultObfs();
                 $user->usage = 1;
                 $user->transfer_enable = toGB(1000);
                 $user->enable_time = date('Y-m-d');
@@ -284,8 +292,8 @@ class AdminController extends Controller
                 $user->save();
 
                 // 初始化默认标签
-                if (count($this->systemConfig['initial_labels_for_user']) > 0) {
-                    $labels = explode(',', $this->systemConfig['initial_labels_for_user']);
+                if (count(self::$systemConfig['initial_labels_for_user']) > 0) {
+                    $labels = explode(',', self::$systemConfig['initial_labels_for_user']);
                     foreach ($labels as $label) {
                         $userLabel = new UserLabel();
                         $userLabel->user_id = $user->id;
@@ -425,13 +433,13 @@ class AdminController extends Controller
             }
 
             $view['user'] = $user;
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
-            $view['level_list'] = $this->levelList();
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
+            $view['level_list'] = Helpers::levelList();
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('admin/editUser', $view);
+            return Response::view('admin.editUser', $view);
         }
     }
 
@@ -481,7 +489,7 @@ class AdminController extends Controller
 
         $view['nodeList'] = $nodeList;
 
-        return Response::view('admin/nodeList', $view);
+        return Response::view('admin.nodeList', $view);
     }
 
     // 添加节点
@@ -533,6 +541,7 @@ class AdminController extends Controller
                 $ssNode->monitor_url = $request->get('monitor_url', '');
                 $ssNode->is_subscribe = intval($request->get('is_subscribe', 1));
                 $ssNode->ssh_port = intval($request->get('ssh_port', 22));
+                $ssNode->is_tcp_check = intval($request->get('is_tcp_check', 1));
                 $ssNode->compatible = intval($request->get('compatible', 0));
                 $ssNode->single = intval($request->get('single', 0));
                 $ssNode->single_force = $request->get('single') ? $request->get('single_force') : 0;
@@ -543,7 +552,6 @@ class AdminController extends Controller
                 $ssNode->single_obfs = $request->get('single') ? $request->get('single_obfs') : '';
                 $ssNode->sort = intval($request->get('sort', 0));
                 $ssNode->status = intval($request->get('status', 1));
-                $ssNode->is_tcp_check = intval($request->get('is_tcp_check',1));
                 $ssNode->save();
 
                 // 建立分组关联
@@ -575,15 +583,15 @@ class AdminController extends Controller
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '添加失败:' . $e->getMessage()]);
             }
         } else {
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
-            $view['level_list'] = $this->levelList();
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
+            $view['level_list'] = Helpers::levelList();
             $view['group_list'] = SsGroup::query()->get();
             $view['country_list'] = Country::query()->orderBy('country_code', 'asc')->get();
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('admin/addNode', $view);
+            return Response::view('admin.addNode', $view);
         }
     }
 
@@ -636,7 +644,8 @@ class AdminController extends Controller
                     'monitor_url'     => $request->get('monitor_url'),
                     'is_subscribe'    => intval($request->get('is_subscribe', 1)),
                     'ssh_port'        => intval($request->get('ssh_port', 22)),
-                    'compatible'      => intval($request->get('compatible')),
+                    'is_tcp_check'    => intval($request->get('is_tcp_check', 1)),
+                    'compatible'      => intval($request->get('compatible', 1)),
                     'single'          => intval($request->get('single', 0)),
                     'single_force'    => $request->get('single') ? $request->get('single_force') : 0,
                     'single_port'     => $request->get('single') ? $request->get('single_port') : '',
@@ -646,7 +655,6 @@ class AdminController extends Controller
                     'single_obfs'     => $request->get('single') ? $request->get('single_obfs') : '',
                     'sort'            => intval($request->get('sort', 0)),
                     'status'          => intval($request->get('status')),
-                    'is_tcp_check'    => intval($request->get('is_tcp_check'))
                 ];
 
                 SsNode::query()->where('id', $id)->update($data);
@@ -700,15 +708,15 @@ class AdminController extends Controller
             }
 
             $view['node'] = $node;
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
-            $view['level_list'] = $this->levelList();
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
+            $view['level_list'] = Helpers::levelList();
             $view['group_list'] = SsGroup::query()->get();
             $view['country_list'] = Country::query()->orderBy('country_code', 'asc')->get();
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('admin/editNode', $view);
+            return Response::view('admin.editNode', $view);
         }
     }
 
@@ -806,7 +814,7 @@ class AdminController extends Controller
         $view['nodeServer'] = $node->server;
         $view['monthDays'] = "'" . implode("','", $monthDays) . "'";
 
-        return Response::view('admin/nodeMonitor', $view);
+        return Response::view('admin.nodeMonitor', $view);
     }
 
     // 文章列表
@@ -814,7 +822,7 @@ class AdminController extends Controller
     {
         $view['list'] = Article::query()->where('is_del', 0)->orderBy('sort', 'desc')->paginate(15)->appends($request->except('page'));
 
-        return Response::view('admin/articleList', $view);
+        return Response::view('admin.articleList', $view);
     }
 
     // 添加文章
@@ -832,7 +840,7 @@ class AdminController extends Controller
 
             return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']);
         } else {
-            return Response::view('admin/addArticle');
+            return Response::view('admin.addArticle');
         }
     }
 
@@ -865,7 +873,7 @@ class AdminController extends Controller
         } else {
             $view['article'] = Article::query()->where('id', $id)->first();
 
-            return Response::view('admin/editArticle', $view);
+            return Response::view('admin.editArticle', $view);
         }
     }
 
@@ -887,14 +895,14 @@ class AdminController extends Controller
     {
         $view['groupList'] = SsGroup::query()->paginate(15)->appends($request->except('page'));
 
-        $levelList = $this->levelList();
+        $levelList = Helpers::levelList();
         $levelMap = [];
         foreach ($levelList as $vo) {
             $levelMap[$vo['level']] = $vo['level_name'];
         }
         $view['levelMap'] = $levelMap;
 
-        return Response::view('admin/groupList', $view);
+        return Response::view('admin.groupList', $view);
     }
 
     // 添加节点分组
@@ -908,9 +916,9 @@ class AdminController extends Controller
 
             return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']);
         } else {
-            $view['levelList'] = $this->levelList();
+            $view['levelList'] = Helpers::levelList();
 
-            return Response::view('admin/addGroup', $view);
+            return Response::view('admin.addGroup', $view);
         }
     }
 
@@ -936,9 +944,9 @@ class AdminController extends Controller
             }
         } else {
             $view['group'] = SsGroup::query()->where('id', $id)->first();
-            $view['levelList'] = $this->levelList();
+            $view['levelList'] = Helpers::levelList();
 
-            return Response::view('admin/editGroup', $view);
+            return Response::view('admin.editGroup', $view);
         }
     }
 
@@ -998,7 +1006,7 @@ class AdminController extends Controller
 
         $view['trafficLogList'] = $trafficLogList;
 
-        return Response::view('admin/trafficLog', $view);
+        return Response::view('admin.trafficLog', $view);
     }
 
     // 订阅请求日志
@@ -1021,7 +1029,7 @@ class AdminController extends Controller
 
         $view['subscribeList'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page'));
 
-        return Response::view('admin/subscribeLog', $view);
+        return Response::view('admin.subscribeLog', $view);
     }
 
     // 设置用户的订阅的状态
@@ -1074,7 +1082,7 @@ class AdminController extends Controller
 
             return Response::json(['status' => 'success', 'data' => $txt, 'message' => '反解析成功']);
         } else {
-            return Response::view('admin/decompile');
+            return Response::view('admin.decompile');
         }
     }
 
@@ -1127,11 +1135,11 @@ class AdminController extends Controller
             return Response::json(['status' => 'success', 'data' => $json, 'message' => '转换成功']);
         } else {
             // 加密方式、协议、混淆
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
 
-            return Response::view('admin/convert', $view);
+            return Response::view('admin.convert', $view);
         }
     }
 
@@ -1242,7 +1250,7 @@ class AdminController extends Controller
 
             return Redirect::back();
         } else {
-            return Response::view('admin/import');
+            return Response::view('admin.import');
         }
     }
 
@@ -1310,14 +1318,14 @@ class AdminController extends Controller
         $view['nodeList'] = $nodeList;
         $view['user'] = $user;
 
-        return Response::view('admin/export', $view);
+        return Response::view('admin.export', $view);
     }
 
     // 导出原版SS用户配置信息
     public function exportSSJson(Request $request)
     {
         $userList = User::query()->where('port', '>', 0)->get();
-        $defaultMethod = $this->getDefaultMethod();
+        $defaultMethod = Helpers::getDefaultMethod();
 
         $json = '';
         if (!$userList->isEmpty()) {
@@ -1387,7 +1395,7 @@ EOF;
                 return Redirect::back();
             }
         } else {
-            return Response::view('admin/profile');
+            return Response::view('admin.profile');
         }
     }
 
@@ -1459,13 +1467,13 @@ EOF;
         $view['username'] = $user->username;
         $view['monthDays'] = "'" . implode("','", $monthDays) . "'";
 
-        return Response::view('admin/userMonitor', $view);
+        return Response::view('admin.userMonitor', $view);
     }
 
     // 生成SS端口
     public function makePort(Request $request)
     {
-        $new_port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+        $new_port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
         echo $new_port;
         exit;
     }
@@ -1507,10 +1515,10 @@ EOF;
             $view['method_list'] = SsConfig::query()->where('type', 1)->get();
             $view['protocol_list'] = SsConfig::query()->where('type', 2)->get();
             $view['obfs_list'] = SsConfig::query()->where('type', 3)->get();
-            $view['level_list'] = $this->levelList();
+            $view['level_list'] = Helpers::levelList();
             $view['country_list'] = Country::query()->get();
 
-            return Response::view('admin/config', $view);
+            return Response::view('admin.config', $view);
         }
     }
 
@@ -1620,7 +1628,7 @@ EOF;
         if (!file_exists($file)) {
             Session::flash('analysisErrorMsg', $file . ' 不存在,请先创建文件');
 
-            return Response::view('admin/analysis');
+            return Response::view('admin.analysis');
         }
 
         $logs = $this->tail($file, 10000);
@@ -1647,7 +1655,7 @@ EOF;
             $view['urlList'] = array_unique($url);
         }
 
-        return Response::view('admin/analysis', $view);
+        return Response::view('admin.analysis', $view);
     }
 
     // 添加等级
@@ -1859,10 +1867,10 @@ EOF;
     // 系统设置
     public function system(Request $request)
     {
-        $view = $this->systemConfig();
+        $view = Helpers::systemConfig();
         $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-        return Response::view('admin/system', $view);
+        return Response::view('admin.system', $view);
     }
 
     // 设置某个配置项
@@ -1876,7 +1884,7 @@ EOF;
         }
 
         // 屏蔽异常配置
-        if (!array_key_exists($name, $this->systemConfig)) {
+        if (!array_key_exists($name, self::$systemConfig)) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '设置失败:配置不存在']);
         }
 
@@ -1922,7 +1930,7 @@ EOF;
     {
         $view['inviteList'] = Invite::query()->with(['generator', 'user'])->orderBy('status', 'asc')->orderBy('id', 'desc')->paginate(15)->appends($request->except('page'));
 
-        return Response::view('admin/inviteList', $view);
+        return Response::view('admin.inviteList', $view);
     }
 
     // 生成邀请码
@@ -1987,7 +1995,7 @@ EOF;
 
         $view['applyList'] = $query->orderBy('id', 'desc')->paginate(15)->appends($request->except('page'));
 
-        return Response::view('admin/applyList', $view);
+        return Response::view('admin.applyList', $view);
     }
 
     // 提现申请详情
@@ -2005,7 +2013,7 @@ EOF;
         $view['info'] = $apply;
         $view['list'] = $list;
 
-        return Response::view('admin/applyDetail', $view);
+        return Response::view('admin.applyDetail', $view);
     }
 
     // 订单列表
@@ -2047,7 +2055,7 @@ EOF;
 
         $view['orderList'] = $query->paginate(15);
 
-        return Response::view('admin/orderList', $view);
+        return Response::view('admin.orderList', $view);
     }
 
     // 设置提现申请状态
@@ -2115,7 +2123,7 @@ EOF;
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '充值失败:' . $e->getMessage()]);
             }
         } else {
-            return Response::view('admin/handleUserBalance');
+            return Response::view('admin.handleUserBalance');
         }
     }
 
@@ -2134,7 +2142,7 @@ EOF;
 
         $view['list'] = $query->paginate(15);
 
-        return Response::view('admin/userBalanceLogList', $view);
+        return Response::view('admin.userBalanceLogList', $view);
     }
 
     // 用户封禁记录
@@ -2152,7 +2160,7 @@ EOF;
 
         $view['list'] = $query->paginate(15);
 
-        return Response::view('admin/userBanLogList', $view);
+        return Response::view('admin.userBanLogList', $view);
     }
 
     // 用户流量变动记录
@@ -2170,15 +2178,13 @@ EOF;
 
         $view['list'] = $query->paginate(15);
 
-        return Response::view('admin/userTrafficLogList', $view);
+        return Response::view('admin.userTrafficLogList', $view);
     }
 
-    //用户返利流水记录
+    // 用户返利流水记录
     public function userRebateList(Request $request)
     {
-
         $username = trim($request->get('username'));
-
         $ref_username = trim($request->get('ref_username'));
 
         $query = ReferralLog::query()->with(['user', 'order'])->orderBy('id', 'desc')->orderBy('status', 'asc');
@@ -2197,7 +2203,7 @@ EOF;
 
         $view['list'] = $query->paginate(15);
 
-        return Response::view('admin/userRebateList', $view);
+        return Response::view('admin.userRebateList', $view);
     }
 
     // 转换成某个用户的身份
@@ -2228,7 +2234,7 @@ EOF;
 
         $view['labelList'] = $labelList;
 
-        return Response::view('admin/labelList', $view);
+        return Response::view('admin.labelList', $view);
     }
 
     // 添加标签
@@ -2245,7 +2251,7 @@ EOF;
 
             return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']);
         } else {
-            return Response::view('admin/addLabel');
+            return Response::view('admin.addLabel');
         }
     }
 
@@ -2264,7 +2270,7 @@ EOF;
             $id = $request->get('id');
             $view['label'] = Label::query()->where('id', $id)->first();
 
-            return Response::view('admin/editLabel', $view);
+            return Response::view('admin.editLabel', $view);
         }
     }
 
@@ -2288,4 +2294,4 @@ EOF;
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '删除失败:' . $e->getMessage()]);
         }
     }
-}
+}

+ 9 - 1
app/Http/Controllers/Api/LoginController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers\Api;
 
+use App\Components\Helpers;
 use App\Http\Controllers\Controller;
 use App\Http\Models\User;
 use App\Http\Models\UserSubscribe;
@@ -19,6 +20,13 @@ use DB;
  */
 class LoginController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 登录返回订阅信息
     public function login(Request $request)
     {
@@ -75,7 +83,7 @@ class LoginController extends Controller
             $data['user'] = $user;
 
             // 订阅链接
-            $data['link'] = $this->systemConfig['subscribe_domain'] ? $this->systemConfig['subscribe_domain'] . '/s/' . $code : $this->systemConfig['website_url'] . '/s/' . $code;
+            $data['link'] = self::$systemConfig['subscribe_domain'] ? self::$systemConfig['subscribe_domain'] . '/s/' . $code : self::$systemConfig['website_url'] . '/s/' . $code;
 
             DB::commit();
 

+ 42 - 6
app/Http/Controllers/Api/YzyController.php

@@ -2,13 +2,13 @@
 
 namespace App\Http\Controllers\Api;
 
+use App\Components\Helpers;
 use App\Http\Controllers\Controller;
 use App\Http\Models\Goods;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\Order;
 use App\Http\Models\Payment;
 use App\Http\Models\PaymentCallback;
-use App\Http\Models\ReferralLog;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
 use Illuminate\Http\Request;
@@ -23,6 +23,13 @@ use DB;
  */
 class YzyController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+    
     // 接收GET请求
     public function index(Request $request)
     {
@@ -43,7 +50,7 @@ class YzyController extends Controller
 
         // 判断消息是否合法
         $msg = $data['msg'];
-        $sign_string = $this->systemConfig['youzan_client_id'] . "" . $msg . "" . $this->systemConfig['youzan_client_secret'];
+        $sign_string = self::$systemConfig['youzan_client_id'] . "" . $msg . "" . self::$systemConfig['youzan_client_secret'];
         $sign = md5($sign_string);
         if ($sign != $data['sign']) {
             Log::info('本地签名:' . $sign_string . ' | 远程签名:' . $data['sign']);
@@ -104,7 +111,7 @@ class YzyController extends Controller
     {
         Log::info('【有赞云】回调交易支付');
 
-        $payment = Payment::query()->where('qr_id', $msg['qr_info']['qr_id'])->first();
+        $payment = Payment::query()->with(['order', 'order.goods'])->where('qr_id', $msg['qr_info']['qr_id'])->first();
         if (!$payment) {
             Log::info('【有赞云】回调订单不存在');
             exit();
@@ -118,6 +125,35 @@ class YzyController extends Controller
         // 处理订单
         DB::beginTransaction();
         try {
+            // 如果支付单中没有用户信息则创建一个用户
+            if (!$payment->user_id) {
+                // 生成一个可用端口
+                $port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
+
+                $user = new User();
+                $user->username = '自动生成-' . $payment->order->email;
+                $user->password = md5(makeRandStr());
+                $user->port = $port;
+                $user->passwd = makeRandStr();
+                $user->enable = 1;
+                $user->method = Helpers::getDefaultMethod();
+                $user->protocol = Helpers::getDefaultProtocol();
+                $user->obfs = Helpers::getDefaultObfs();
+                $user->usage = 1;
+                $user->transfer_enable = toGB(1000);
+                $user->enable_time = date('Y-m-d');
+                $user->expire_time = date('Y-m-d', strtotime("+" . $payment->order->goods->days . " days"));
+                $user->reg_ip = getClientIp();
+                $user->referral_uid = 0;
+                $user->traffic_reset_day = 0;
+                $user->status = 1;
+                $user->save();
+
+                if ($user->id) {
+                    Order::query()->where('oid', $payment->oid)->update(['user_id' => $user->id]);
+                }
+            }
+
             // 更新支付单
             $payment->pay_way = $msg['full_order_info']['order_info']['pay_type_str'] == 'WEIXIN_DAIXIAO' ? 1 : 2; // 1-微信、2-支付宝
             $payment->status = 1;
@@ -174,8 +210,8 @@ class YzyController extends Controller
             if ($goods->label) {
                 // 用户默认标签
                 $defaultLabels = [];
-                if ($this->systemConfig['initial_labels_for_user']) {
-                    $defaultLabels = explode(',', $this->systemConfig['initial_labels_for_user']);
+                if (self::$systemConfig['initial_labels_for_user']) {
+                    $defaultLabels = explode(',', self::$systemConfig['initial_labels_for_user']);
                 }
 
                 // 取出现有的标签
@@ -199,7 +235,7 @@ class YzyController extends Controller
 
             // 写入返利日志
             if ($order->user->referral_uid) {
-                $this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount * $this->systemConfig['referral_percent']);
+                $this->addReferralLog($order->user_id, $order->user->referral_uid, $order->oid, $order->amount, $order->amount * self::$systemConfig['referral_percent']);
             }
 
             // 取消重复返利

+ 1 - 99
app/Http/Controllers/Controller.php

@@ -23,13 +23,6 @@ class Controller extends BaseController
 {
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 
-    public $systemConfig;
-
-    public function __construct()
-    {
-        $this->systemConfig = $this->systemConfig();
-    }
-
     // 生成订阅地址的唯一码
     public function makeSubscribeCode()
     {
@@ -41,98 +34,6 @@ class Controller extends BaseController
         return $code;
     }
 
-    // 加密方式
-    public function methodList()
-    {
-        return SsConfig::query()->where('type', 1)->get();
-    }
-
-    // 默认加密方式
-    public function getDefaultMethod()
-    {
-        $config = SsConfig::query()->where('type', 1)->where('is_default', 1)->first();
-
-        return $config ? $config->name : 'aes-192-ctr';
-    }
-
-    // 协议
-    public function protocolList()
-    {
-        return SsConfig::query()->where('type', 2)->get();
-    }
-
-    // 默认协议
-    public function getDefaultProtocol()
-    {
-        $config = SsConfig::query()->where('type', 2)->where('is_default', 1)->first();
-
-        return $config ? $config->name : 'origin';
-    }
-
-    // 混淆
-    public function obfsList()
-    {
-        return SsConfig::query()->where('type', 3)->get();
-    }
-
-    // 默认混淆
-    public function getDefaultObfs()
-    {
-        $config = SsConfig::query()->where('type', 3)->where('is_default', 1)->first();
-
-        return $config ? $config->name : 'plain';
-    }
-
-    // 等级
-    public function levelList()
-    {
-        return Level::query()->get()->sortBy('level');
-    }
-
-    // 系统配置
-    public function systemConfig()
-    {
-        $config = Config::query()->get();
-        $data = [];
-        foreach ($config as $vo) {
-            $data[$vo->name] = $vo->value;
-        }
-
-        return $data;
-    }
-
-    // 获取一个随机端口
-    public function getRandPort()
-    {
-        $config = $this->systemConfig();
-
-        $port = mt_rand($config['min_port'], $config['max_port']);
-        $deny_port = [1068, 1109, 1434, 3127, 3128, 3129, 3130, 3332, 4444, 5554, 6669, 8080, 8081, 8082, 8181, 8282, 9996, 17185, 24554, 35601, 60177, 60179]; // 不生成的端口
-
-        $exists_port = User::query()->pluck('port')->toArray();
-        if (in_array($port, $exists_port) || in_array($port, $deny_port)) {
-            $port = $this->getRandPort();
-        }
-
-        return $port;
-    }
-
-    // 获取一个端口
-    public function getOnlyPort()
-    {
-        $config = $this->systemConfig();
-
-        $port = $config['min_port'];
-        $deny_port = [1068, 1109, 1434, 3127, 3128, 3129, 3130, 3332, 4444, 5554, 6669, 8080, 8081, 8082, 8181, 8282, 9996, 17185, 24554, 35601, 60177, 60179]; // 不生成的端口
-
-        $exists_port = User::query()->where('port', '>=', $config['min_port'])->pluck('port')->toArray();
-        while (in_array($port, $exists_port) || in_array($port, $deny_port)) {
-            $port = $port + 1;
-        }
-
-        return $port;
-    }
-
     // 类似Linux中的tail命令
     public function tail($file, $n, $base = 5)
     {
@@ -347,6 +248,7 @@ class Controller extends BaseController
             $fileName = makeRandStr(18, true) . ".{$type}";
             if (file_put_contents(public_path($path . $fileName), base64_decode(str_replace($result[1], '', $base64_image_content)))) {
                 chmod(public_path($path . $fileName), 0744);
+
                 return $path . $fileName;
             } else {
                 return '';

+ 2 - 2
app/Http/Controllers/CouponController.php

@@ -25,7 +25,7 @@ class CouponController extends Controller
     {
         $view['couponList'] = Coupon::query()->where('is_del', 0)->orderBy('status', 'asc')->orderBy('id', 'desc')->paginate(10);
 
-        return Response::view('coupon/couponList', $view);
+        return Response::view('coupon.couponList', $view);
     }
 
     // 添加商品
@@ -101,7 +101,7 @@ class CouponController extends Controller
 
             return Redirect::to('coupon/addCoupon');
         } else {
-            return Response::view('coupon/addCoupon');
+            return Response::view('coupon.addCoupon');
         }
     }
 

+ 1 - 1
app/Http/Controllers/EmailLogController.php

@@ -19,7 +19,7 @@ class EmailLogController extends Controller
     {
         $view['list'] = EmailLog::query()->with('user')->orderBy('id', 'desc')->paginate(15);
 
-        return Response::view('emailLog/logList', $view);
+        return Response::view('emailLog.logList', $view);
     }
 
 }

+ 19 - 53
app/Http/Controllers/LoginController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Components\QQWry;
 use App\Http\Models\User;
 use App\Http\Models\UserLoginLog;
@@ -21,6 +22,13 @@ use Log;
  */
 class LoginController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 登录页
     public function index(Request $request)
     {
@@ -36,7 +44,7 @@ class LoginController extends Controller
             }
 
             // 是否校验验证码
-            if ($this->systemConfig['is_captcha']) {
+            if (self::$systemConfig['is_captcha']) {
                 if (!Captcha::check($captcha)) {
                     Session::flash('errorMsg', '验证码错误,请重新输入');
 
@@ -53,7 +61,7 @@ class LoginController extends Controller
                 Session::flash('errorMsg', '账号已禁用');
 
                 return Redirect::back();
-            } elseif ($user->status == 0 && $this->systemConfig['is_active_register'] && $user->is_admin == 0) {
+            } elseif ($user->status == 0 && self::$systemConfig['is_active_register'] && $user->is_admin == 0) {
                 Session::flash('errorMsg', '账号未激活,请点击<a href="/activeUser?username=' . $user->username . '" target="_blank"><span style="color:#000">【激活账号】</span></a>');
 
                 return Redirect::back()->withInput();
@@ -70,15 +78,15 @@ class LoginController extends Controller
             }
 
             // 登录送积分
-            if ($this->systemConfig['login_add_score']) {
+            if (self::$systemConfig['login_add_score']) {
                 if (!Cache::has('loginAddScore_' . md5($username))) {
-                    $score = mt_rand($this->systemConfig['min_rand_score'], $this->systemConfig['max_rand_score']);
+                    $score = mt_rand(self::$systemConfig['min_rand_score'], self::$systemConfig['max_rand_score']);
                     $ret = User::query()->where('id', $user->id)->increment('score', $score);
                     if ($ret) {
                         $this->addUserScoreLog($user->id, $user->score, $user->score + $score, $score, '登录送积分');
 
                         // 登录多久后再登录可以获取积分
-                        $ttl = $this->systemConfig['login_add_score_range'] ? $this->systemConfig['login_add_score_range'] : 1440;
+                        $ttl = self::$systemConfig['login_add_score_range'] ? self::$systemConfig['login_add_score_range'] : 1440;
                         Cache::put('loginAddScore_' . md5($username), '1', $ttl);
 
                         Session::flash('successMsg', '欢迎回来,系统自动赠送您 ' . $score . ' 积分,您可以用它兑换流量包');
@@ -114,11 +122,11 @@ class LoginController extends Controller
                 }
             }
 
-            $view['is_captcha'] = $this->systemConfig['is_captcha'];
-            $view['is_register'] = $this->systemConfig['is_register'];
-            $view['website_home_logo'] = $this->systemConfig['website_home_logo'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['is_captcha'] = self::$systemConfig['is_captcha'];
+            $view['is_register'] = self::$systemConfig['is_register'];
+            $view['website_home_logo'] = self::$systemConfig['website_home_logo'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
             return Response::view('login', $view);
         }
@@ -138,7 +146,7 @@ class LoginController extends Controller
         // 解析IP信息
         $qqwry = new QQWry();
         $ipInfo = $qqwry->ip($ip);
-        if (!$ipInfo || !is_array($ipInfo)) {
+        if (!$ipInfo || !is_array($ipInfo) || empty($ipInfo['country'])) {
             \Log::warning("获取IP地址信息异常:" . $ip);
         }
 
@@ -153,46 +161,4 @@ class LoginController extends Controller
         $log->area = $ipInfo['area'];
         $log->save();
     }
-
-    // 获取IP信息
-    private function getIPInfo($ip)
-    {
-        $url = 'http://ip.taobao.com/service/getIpInfo.php?ip=' . $ip;
-        $result = $this->curlRequest($url);
-        Log::info("登录获取IP信息:" . $result);
-        $result = json_decode($result);
-        if (!$result) {
-            return false;
-        }
-
-        if ($result->code) {
-            return false;
-        }
-
-        return $result->data;
-    }
-
-    // 发起一个CURL请求
-    private function curlRequest($url, $data = [])
-    {
-        $ch = curl_init();
-        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
-        curl_setopt($ch, CURLOPT_TIMEOUT, 500);
-        // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
-        // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
-        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
-        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
-        curl_setopt($ch, CURLOPT_URL, $url);
-
-        // 如果data有数据,则用POST请求
-        if ($data) {
-            curl_setopt($ch, CURLOPT_POST, 1);
-            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
-        }
-
-        $res = curl_exec($ch);
-        curl_close($ch);
-
-        return $res;
-    }
 }

+ 12 - 4
app/Http/Controllers/MarketingController.php

@@ -1,6 +1,7 @@
 <?php
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Http\Models\Marketing;
 use GuzzleHttp\Client;
 use Illuminate\Http\Request;
@@ -10,12 +11,19 @@ use DB;
 
 class MarketingController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 邮件群发消息列表
     public function emailList(Request $request)
     {
         $view['list'] = Marketing::query()->where('type', 1)->paginate(15);
 
-        return Response::view('marketing/emailList', $view);
+        return Response::view('marketing.emailList', $view);
     }
 
     // 消息通道群发列表
@@ -31,7 +39,7 @@ class MarketingController extends Controller
 
         $view['list'] = $query->paginate(15);
 
-        return Response::view('marketing/pushList', $view);
+        return Response::view('marketing.pushList', $view);
     }
 
     // 添加推送消息
@@ -40,7 +48,7 @@ class MarketingController extends Controller
         $title = trim($request->get('title'));
         $content = $request->get('content');
 
-        if (!$this->systemConfig['is_push_bear']) {
+        if (!self::$systemConfig['is_push_bear']) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '推送失败:请先启用并配置PushBear']);
         }
 
@@ -49,7 +57,7 @@ class MarketingController extends Controller
             $client = new Client();
             $response = $client->request('GET', 'https://pushbear.ftqq.com/sub', [
                 'query' => [
-                    'sendkey' => $this->systemConfig['push_bear_send_key'],
+                    'sendkey' => self::$systemConfig['push_bear_send_key'],
                     'text'    => $title,
                     'desp'    => $content
                 ]

+ 15 - 7
app/Http/Controllers/PaymentController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Components\Yzy;
 use App\Http\Models\Coupon;
 use App\Http\Models\Goods;
@@ -17,6 +18,13 @@ use DB;
 
 class PaymentController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 创建支付单
     public function create(Request $request)
     {
@@ -31,7 +39,7 @@ class PaymentController extends Controller
         }
 
         // 判断是否开启有赞云支付
-        if (!$this->systemConfig['is_youzan']) {
+        if (!self::$systemConfig['is_youzan']) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:系统并未开启在线支付功能']);
         }
 
@@ -42,7 +50,7 @@ class PaymentController extends Controller
         }
 
         // 限购控制
-        $strategy = $this->systemConfig['goods_purchase_limit_strategy'];
+        $strategy = self::$systemConfig['goods_purchase_limit_strategy'];
         if ($strategy == 'all' || ($strategy == 'package' && $goods->type == 2) || ($strategy == 'free' && $goods->price == 0) || ($strategy == 'package&free' && ($goods->type == 2 || $goods->price == 0))) {
             $noneExpireOrderExist = Order::query()->where('status', '>=', 0)->where('is_expire', 0)->where('user_id', $user['id'])->where('goods_id', $goods_id)->exists();
             if ($noneExpireOrderExist) {
@@ -157,11 +165,11 @@ class PaymentController extends Controller
         }
 
         $view['payment'] = $payment;
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-        return Response::view('payment/detail', $view);
+        return Response::view('payment.detail', $view);
     }
 
     // 获取订单支付状态
@@ -201,6 +209,6 @@ class PaymentController extends Controller
 
         $view['list'] = $query->orderBy('id', 'desc')->paginate(10);
 
-        return Response::view('payment/callbackList', $view);
+        return Response::view('payment.callbackList', $view);
     }
 }

+ 35 - 27
app/Http/Controllers/RegisterController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Http\Models\Invite;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
@@ -23,6 +24,13 @@ use Mail;
  */
 class RegisterController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 注册页
     // TODO:改成点击发送验证码按钮,而不是到邮箱里去打开激活链接
     public function index(Request $request)
@@ -49,7 +57,7 @@ class RegisterController extends Controller
             }
 
             // 是否开启注册
-            if (!$this->systemConfig['is_register']) {
+            if (!self::$systemConfig['is_register']) {
                 Session::flash('errorMsg', '系统维护,暂停注册');
 
                 return Redirect::back();
@@ -87,7 +95,7 @@ class RegisterController extends Controller
             }
 
             // 是否校验验证码
-            if ($this->systemConfig['is_captcha']) {
+            if (self::$systemConfig['is_captcha']) {
                 if (!Captcha::check($captcha)) {
                     Session::flash('errorMsg', '验证码错误,请重新输入');
 
@@ -96,7 +104,7 @@ class RegisterController extends Controller
             }
 
             // 如果需要邀请注册
-            if ($this->systemConfig['is_invite_register']) {
+            if (self::$systemConfig['is_invite_register']) {
                 if (empty($code)) {
                     Session::flash('errorMsg', '请输入邀请码');
 
@@ -113,10 +121,10 @@ class RegisterController extends Controller
             }
 
             // 24小时内同IP注册限制
-            if ($this->systemConfig['register_ip_limit']) {
+            if (self::$systemConfig['register_ip_limit']) {
                 if (Cache::has($cacheKey)) {
                     $registerTimes = Cache::get($cacheKey);
-                    if ($registerTimes >= $this->systemConfig['register_ip_limit']) {
+                    if ($registerTimes >= self::$systemConfig['register_ip_limit']) {
                         Session::flash('errorMsg', '系统已开启防刷机制,请勿频繁注册');
 
                         return Redirect::back()->withInput($request->except(['code']));
@@ -133,8 +141,8 @@ class RegisterController extends Controller
             }
 
             // 获取可用端口
-            $port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
-            if ($port > $this->systemConfig['max_port']) {
+            $port = self::$systemConfig['is_rand_port'] ? Helpers::getRandPort() : Helpers::getOnlyPort();
+            if ($port > self::$systemConfig['max_port']) {
                 Session::flash('errorMsg', '用户已满,请联系管理员');
 
                 return Redirect::back()->withInput();
@@ -144,7 +152,7 @@ class RegisterController extends Controller
             $affArr = $this->getAff($code, $aff);
             $referral_uid = $affArr['referral_uid'];
 
-            $transfer_enable = $referral_uid ? ($this->systemConfig['default_traffic'] + $this->systemConfig['referral_traffic']) * 1048576 : $this->systemConfig['default_traffic'] * 1048576;
+            $transfer_enable = $referral_uid ? (self::$systemConfig['default_traffic'] + self::$systemConfig['referral_traffic']) * 1048576 : self::$systemConfig['default_traffic'] * 1048576;
 
             // 创建新用户
             $user = new User();
@@ -153,11 +161,11 @@ class RegisterController extends Controller
             $user->port = $port;
             $user->passwd = makeRandStr();
             $user->transfer_enable = $transfer_enable;
-            $user->method = $this->getDefaultMethod();
-            $user->protocol = $this->getDefaultProtocol();
-            $user->obfs = $this->getDefaultObfs();
+            $user->method = Helpers::getDefaultMethod();
+            $user->protocol = Helpers::getDefaultProtocol();
+            $user->obfs = Helpers::getDefaultObfs();
             $user->enable_time = date('Y-m-d H:i:s');
-            $user->expire_time = date('Y-m-d H:i:s', strtotime("+" . $this->systemConfig['default_days'] . " days"));
+            $user->expire_time = date('Y-m-d H:i:s', strtotime("+" . self::$systemConfig['default_days'] . " days"));
             $user->reg_ip = getClientIp();
             $user->referral_uid = $referral_uid;
             $user->save();
@@ -171,8 +179,8 @@ class RegisterController extends Controller
                 }
 
                 // 初始化默认标签
-                if (strlen($this->systemConfig['initial_labels_for_user'])) {
-                    $labels = explode(',', $this->systemConfig['initial_labels_for_user']);
+                if (strlen(self::$systemConfig['initial_labels_for_user'])) {
+                    $labels = explode(',', self::$systemConfig['initial_labels_for_user']);
                     foreach ($labels as $label) {
                         $userLabel = new UserLabel();
                         $userLabel->user_id = $user->id;
@@ -182,20 +190,20 @@ class RegisterController extends Controller
                 }
 
                 // 更新邀请码
-                if ($this->systemConfig['is_invite_register'] && $affArr['code_id']) {
+                if (self::$systemConfig['is_invite_register'] && $affArr['code_id']) {
                     Invite::query()->where('id', $affArr['code_id'])->update(['fuid' => $user->id, 'status' => 1]);
                 }
             }
 
             // 发送邮件
-            if ($this->systemConfig['is_active_register']) {
+            if (self::$systemConfig['is_active_register']) {
                 // 生成激活账号的地址
-                $token = md5($this->systemConfig['website_name'] . $username . microtime());
-                $activeUserUrl = $this->systemConfig['website_url'] . '/active/' . $token;
+                $token = md5(self::$systemConfig['website_name'] . $username . microtime());
+                $activeUserUrl = self::$systemConfig['website_url'] . '/active/' . $token;
                 $this->addVerify($user->id, $username, $token);
 
                 try {
-                    Mail::to($username)->send(new activeUser($this->systemConfig['website_name'], $activeUserUrl));
+                    Mail::to($username)->send(new activeUser(self::$systemConfig['website_name'], $activeUserUrl));
                     $this->sendEmailLog($user->id, '注册激活', '请求地址:' . $activeUserUrl);
                 } catch (\Exception $e) {
                     $this->sendEmailLog($user->id, '注册激活', '请求地址:' . $activeUserUrl, 0, $e->getMessage());
@@ -205,7 +213,7 @@ class RegisterController extends Controller
             } else {
                 // 如果不需要激活,则直接给推荐人加流量
                 if ($referral_uid) {
-                    $transfer_enable = $this->systemConfig['referral_traffic'] * 1048576;
+                    $transfer_enable = self::$systemConfig['referral_traffic'] * 1048576;
 
                     User::query()->where('id', $referral_uid)->increment('transfer_enable', $transfer_enable);
                     User::query()->where('id', $referral_uid)->update(['enable' => 1]);
@@ -218,13 +226,13 @@ class RegisterController extends Controller
         } else {
             Session::put('register_token', makeRandStr(16));
 
-            $view['is_captcha'] = $this->systemConfig['is_captcha'];
-            $view['is_register'] = $this->systemConfig['is_register'];
-            $view['website_home_logo'] = $this->systemConfig['website_home_logo'];
-            $view['is_invite_register'] = $this->systemConfig['is_invite_register'];
-            $view['is_free_code'] = $this->systemConfig['is_free_code'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['is_captcha'] = self::$systemConfig['is_captcha'];
+            $view['is_register'] = self::$systemConfig['is_register'];
+            $view['website_home_logo'] = self::$systemConfig['website_home_logo'];
+            $view['is_invite_register'] = self::$systemConfig['is_invite_register'];
+            $view['is_free_code'] = self::$systemConfig['is_free_code'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
             return Response::view('register', $view);
         }

+ 1 - 1
app/Http/Controllers/SensitiveWordsController.php

@@ -19,7 +19,7 @@ class SensitiveWordsController extends Controller
     {
         $view['list'] = SensitiveWords::query()->paginate(15);
 
-        return Response::view('sensitiveWords/sensitiveWordsList', $view);
+        return Response::view('sensitiveWords.sensitiveWordsList', $view);
     }
 
     // 添加敏感词

+ 20 - 9
app/Http/Controllers/ShopController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Http\Models\Goods;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\Label;
@@ -19,17 +20,19 @@ use DB;
  */
 class ShopController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 商品列表
     public function goodsList(Request $request)
     {
-        $goodsList = Goods::query()->where('is_del', 0)->orderBy('id', 'desc')->paginate(10);
-        foreach ($goodsList as $goods) {
-            $goods->traffic = flowAutoShow($goods->traffic * 1048576);
-        }
-
-        $view['goodsList'] = $goodsList;
+        $view['goodsList'] = Goods::query()->where('is_del', 0)->orderBy('id', 'desc')->paginate(10);
 
-        return Response::view('shop/goodsList', $view);
+        return Response::view('shop.goodsList', $view);
     }
 
     // 添加商品
@@ -43,7 +46,9 @@ class ShopController extends Controller
             $score = intval($request->get('score', 0));
             $type = intval($request->get('type', 1));
             $days = intval($request->get('days', 90));
+            $color = trim($request->get('color', 0));
             $sort = intval($request->get('sort', 0));
+            $is_hot = intval($request->get('is_hot', 0));
             $labels = $request->get('labels');
             $status = $request->get('status');
 
@@ -103,7 +108,9 @@ class ShopController extends Controller
                 $goods->score = $score;
                 $goods->type = $type;
                 $goods->days = $days;
+                $goods->color = $color;
                 $goods->sort = $sort;
+                $goods->is_hot = $is_hot;
                 $goods->is_del = 0;
                 $goods->status = $status;
                 $goods->save();
@@ -135,7 +142,7 @@ class ShopController extends Controller
         } else {
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('shop/addGoods', $view);
+            return Response::view('shop.addGoods', $view);
         }
     }
 
@@ -149,7 +156,9 @@ class ShopController extends Controller
             $desc = $request->get('desc');
             $price = $request->get('price', 0);
             $labels = $request->get('labels');
+            $color = trim($request->get('color', 0));
             $sort = intval($request->get('sort', 0));
+            $is_hot = intval($request->get('is_hot', 0));
             $status = $request->get('status');
 
             $goods = Goods::query()->where('id', $id)->first();
@@ -198,6 +207,8 @@ class ShopController extends Controller
                     'logo'   => $logo,
                     'price'  => $price * 100,
                     'sort'   => $sort,
+                    'color'  => $color,
+                    'is_hot' => $is_hot,
                     'status' => $status
                 ];
 
@@ -239,7 +250,7 @@ class ShopController extends Controller
             $view['goods'] = $goods;
             $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get();
 
-            return Response::view('shop/editGoods', $view);
+            return Response::view('shop.editGoods', $view);
         }
     }
 

+ 10 - 2
app/Http/Controllers/SubscribeController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Http\Models\SsGroup;
 use App\Http\Models\SsNode;
 use App\Http\Models\User;
@@ -20,6 +21,13 @@ use DB;
  */
 class SubscribeController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 获取订阅信息
     public function index(Request $request, $code)
     {
@@ -69,7 +77,7 @@ class SubscribeController extends Controller
         $scheme = '';
         foreach ($nodeList as $key => $node) {
             // 控制显示的节点数
-            if ($this->systemConfig['subscribe_max'] && $key >= $this->systemConfig['subscribe_max']) {
+            if (self::$systemConfig['subscribe_max'] && $key >= self::$systemConfig['subscribe_max']) {
                 break;
             }
 
@@ -85,7 +93,7 @@ class SubscribeController extends Controller
             $ssr_str .= ':' . ($node['single'] ? $node['single_obfs'] : $user->obfs) . ':' . ($node['single'] ? base64url_encode($node['single_passwd']) : base64url_encode($user->passwd));
             $ssr_str .= '/?obfsparam=' . base64url_encode($obfs_param);
             $ssr_str .= '&protoparam=' . ($node['single'] ? base64url_encode($user->port . ':' . $user->passwd) : base64url_encode($protocol_param));
-            $ssr_str .= '&remarks=' . base64url_encode($node['name']."|".$node['traffic_rate']."倍流量消耗");
+            $ssr_str .= '&remarks=' . base64url_encode($node['name'] . "|" . $node['traffic_rate'] . "倍流量消耗");
             $ssr_str .= '&group=' . base64url_encode(empty($group) ? '' : $group->name);
             $ssr_str .= '&udpport=0';
             $ssr_str .= '&uot=0';

+ 19 - 7
app/Http/Controllers/TicketController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Components\ServerChan;
 use App\Http\Models\Ticket;
 use App\Http\Models\TicketReply;
@@ -20,12 +21,19 @@ use Mail;
  */
 class TicketController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     // 工单列表
     public function ticketList(Request $request)
     {
         $view['ticketList'] = Ticket::query()->orderBy('id', 'desc')->paginate(10);
 
-        return Response::view('ticket/ticketList', $view);
+        return Response::view('ticket.ticketList', $view);
     }
 
     // 回复工单
@@ -58,9 +66,9 @@ class TicketController extends Controller
 
                 // 发通知邮件
                 if (!$user['is_admin']) {
-                    if ($this->systemConfig['crash_warning_email']) {
+                    if (self::$systemConfig['crash_warning_email']) {
                         try {
-                            Mail::to($this->systemConfig['crash_warning_email'])->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
+                            Mail::to(self::$systemConfig['crash_warning_email'])->send(new replyTicket(self::$systemConfig['website_name'], $title, $content));
                             $this->sendEmailLog(1, $title, $content);
                         } catch (\Exception $e) {
                             $this->sendEmailLog(1, $title, $content, 0, $e->getMessage());
@@ -68,7 +76,7 @@ class TicketController extends Controller
                     }
                 } else {
                     try {
-                        Mail::to($ticket->user->username)->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
+                        Mail::to($ticket->user->username)->send(new replyTicket(self::$systemConfig['website_name'], $title, $content));
                         $this->sendEmailLog($ticket->user_id, $title, $content);
                     } catch (\Exception $e) {
                         $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());
@@ -76,7 +84,7 @@ class TicketController extends Controller
                 }
 
                 // 通过ServerChan发微信消息提醒管理员
-                if (!$user['is_admin'] && $this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
+                if (!$user['is_admin'] && self::$systemConfig['is_server_chan'] && self::$systemConfig['server_chan_key']) {
                     $serverChan = new ServerChan();
                     $serverChan->send($title, $content);
                 }
@@ -89,7 +97,7 @@ class TicketController extends Controller
             $view['ticket'] = Ticket::query()->where('id', $id)->with('user')->first();
             $view['replyList'] = TicketReply::query()->where('ticket_id', $id)->with('user')->orderBy('id', 'asc')->get();
 
-            return Response::view('ticket/replyTicket', $view);
+            return Response::view('ticket.replyTicket', $view);
         }
     }
 
@@ -99,6 +107,10 @@ class TicketController extends Controller
         $id = $request->get('id');
 
         $ticket = Ticket::query()->with(['user'])->where('id', $id)->first();
+        if (!$ticket) {
+            return Response::json(['status' => 'fail', 'data' => '', 'message' => '关闭失败']);
+        }
+
         $ticket->status = 2;
         $ret = $ticket->save();
         if (!$ret) {
@@ -110,7 +122,7 @@ class TicketController extends Controller
 
         // 发邮件通知用户
         try {
-            Mail::to($ticket->user->username)->send(new closeTicket($this->systemConfig['website_name'], $title, $content));
+            Mail::to($ticket->user->username)->send(new closeTicket(self::$systemConfig['website_name'], $title, $content));
             $this->sendEmailLog($ticket->user_id, $title, $content);
         } catch (\Exception $e) {
             $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());

+ 158 - 135
app/Http/Controllers/UserController.php

@@ -2,6 +2,7 @@
 
 namespace App\Http\Controllers;
 
+use App\Components\Helpers;
 use App\Components\ServerChan;
 use App\Http\Models\Article;
 use App\Http\Models\Coupon;
@@ -40,6 +41,13 @@ use DB;
 
 class UserController extends Controller
 {
+    protected static $systemConfig;
+
+    function __construct()
+    {
+        self::$systemConfig = Helpers::systemConfig();
+    }
+
     public function index(Request $request)
     {
         $user = Session::get('user');
@@ -52,18 +60,18 @@ class UserController extends Controller
 
         $view['info'] = $user->toArray();
         $view['notice'] = Article::query()->where('type', 2)->where('is_del', 0)->orderBy('id', 'desc')->first();
-        $view['wechat_qrcode'] = $this->systemConfig['wechat_qrcode'];
-        $view['alipay_qrcode'] = $this->systemConfig['alipay_qrcode'];
-        $view['login_add_score'] = $this->systemConfig['login_add_score'];
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-        $view['is_push_bear'] = $this->systemConfig['is_push_bear'];
-        $view['push_bear_qrcode'] = $this->systemConfig['push_bear_qrcode'];
+        $view['wechat_qrcode'] = self::$systemConfig['wechat_qrcode'];
+        $view['alipay_qrcode'] = self::$systemConfig['alipay_qrcode'];
+        $view['login_add_score'] = self::$systemConfig['login_add_score'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+        $view['is_push_bear'] = self::$systemConfig['is_push_bear'];
+        $view['push_bear_qrcode'] = self::$systemConfig['push_bear_qrcode'];
 
         // 推广返利是否可见
         if (!Session::has('referral_status')) {
-            Session::put('referral_status', $this->systemConfig['referral_status']);
+            Session::put('referral_status', self::$systemConfig['referral_status']);
         }
 
         // 如果没有唯一码则生成一个
@@ -81,7 +89,7 @@ class UserController extends Controller
         }
 
         $view['subscribe_status'] = !$subscribe ? 1 : $subscribe->status;
-        $view['link'] = $this->systemConfig['subscribe_domain'] ? $this->systemConfig['subscribe_domain'] . '/s/' . $code : $this->systemConfig['website_url'] . '/s/' . $code;
+        $view['link'] = self::$systemConfig['subscribe_domain'] ? self::$systemConfig['subscribe_domain'] . '/s/' . $code : self::$systemConfig['website_url'] . '/s/' . $code;
 
         // 近期登录日志
         $view['userLoginLog'] = UserLoginLog::query()->where('user_id', $user['id'])->orderBy('id', 'desc')->limit(10)->get();
@@ -91,7 +99,7 @@ class UserController extends Controller
         if (empty($userLabelIds)) {
             $view['nodeList'] = [];
 
-            return Response::view('user/index', $view);
+            return Response::view('user.index', $view);
         }
 
         $nodeList = DB::table('ss_node')
@@ -115,7 +123,7 @@ class UserController extends Controller
             $ssr_str .= ':' . ($node->single ? $node->single_obfs : $user->obfs) . ':' . ($node->single ? base64url_encode($node->single_passwd) : base64url_encode($user->passwd));
             $ssr_str .= '/?obfsparam=' . base64url_encode($obfs_param);
             $ssr_str .= '&protoparam=' . ($node->single ? base64url_encode($user->port . ':' . $user->passwd) : base64url_encode($protocol_param));
-            $ssr_str .= '&remarks=' . base64url_encode($node->name."|".$node->traffic_rate."倍流量消耗");
+            $ssr_str .= '&remarks=' . base64url_encode($node->name . "|" . $node->traffic_rate . "倍流量消耗");
             $ssr_str .= '&group=' . base64url_encode(empty($group) ? '' : $group->name);
             $ssr_str .= '&udpport=0';
             $ssr_str .= '&uot=0';
@@ -157,7 +165,7 @@ class UserController extends Controller
 
         $view['nodeList'] = $nodeList;
 
-        return Response::view('user/index', $view);
+        return Response::view('user.index', $view);
     }
 
     // 公告详情
@@ -170,11 +178,11 @@ class UserController extends Controller
             return Redirect::to('/');
         }
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-        return Response::view('user/article', $view);
+        return Response::view('user.article', $view);
     }
 
     // 修改个人资料
@@ -290,15 +298,15 @@ class UserController extends Controller
             }
         } else {
             // 加密方式、协议、混淆
-            $view['method_list'] = $this->methodList();
-            $view['protocol_list'] = $this->protocolList();
-            $view['obfs_list'] = $this->obfsList();
+            $view['method_list'] = Helpers::methodList();
+            $view['protocol_list'] = Helpers::protocolList();
+            $view['obfs_list'] = Helpers::obfsList();
             $view['info'] = User::query()->where('id', $user['id'])->first();
-            $view['website_logo'] = $this->systemConfig['website_logo'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['website_logo'] = self::$systemConfig['website_logo'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-            return Response::view('user/profile', $view);
+            return Response::view('user.profile', $view);
         }
     }
 
@@ -344,27 +352,22 @@ class UserController extends Controller
         $view['trafficHourly'] = "'" . implode("','", $hourlyData) . "'";
         $view['monthDays'] = "'" . implode("','", $monthDays) . "'";
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-        return Response::view('user/trafficLog', $view);
+        return Response::view('user.trafficLog', $view);
     }
 
     // 商品列表
     public function goodsList(Request $request)
     {
-        $goodsList = Goods::query()->where('status', 1)->where('is_del', 0)->orderBy('type', 'desc')->orderBy('sort', 'desc')->paginate(10)->appends($request->except('page'));
-        foreach ($goodsList as $goods) {
-            $goods->traffic = flowAutoShow($goods->traffic * 1048576);
-        }
+        $view['goodsList'] = Goods::query()->where('status', 1)->where('is_del', 0)->orderBy('type', 'desc')->orderBy('sort', 'desc')->paginate(10)->appends($request->except('page'));
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-        $view['goodsList'] = $goodsList;
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-
-        return Response::view('user/goodsList', $view);
+        return Response::view('user.goodsList', $view);
     }
 
     // 工单
@@ -372,13 +375,13 @@ class UserController extends Controller
     {
         $user = Session::get('user');
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
         $view['ticketList'] = Ticket::query()->where('user_id', $user['id'])->paginate(10)->appends($request->except('page'));
 
-        return Response::view('user/ticketList', $view);
+        return Response::view('user.ticketList', $view);
     }
 
     // 订单
@@ -388,28 +391,22 @@ class UserController extends Controller
 
         $view['orderList'] = Order::query()->with(['user', 'goods', 'coupon', 'payment'])->where('user_id', $user['id'])->orderBy('oid', 'desc')->paginate(10)->appends($request->except('page'));
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-        return Response::view('user/orderList', $view);
+        return Response::view('user.orderList', $view);
     }
 
     // 订单明细
     public function orderDetail(Request $request, $sn)
     {
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-
-        $order = Order::query()->with(['goods', 'coupon', 'payment'])->where('order_sn', $sn)->firstOrFail();
-
-        // 处理商品流量信息
-        $order->goods->traffic = flowAutoShow($order->goods->traffic * 1048576);
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+        $view['order'] = Order::query()->with(['goods', 'coupon', 'payment'])->where('order_sn', $sn)->firstOrFail();
 
-        $view['order'] = $order;
-
-        return Response::view('user/orderDetail', $view);
+        return Response::view('user.orderDetail', $view);
     }
 
     // 添加工单
@@ -438,9 +435,9 @@ class UserController extends Controller
             $content = "标题:【" . $title . "】<br>内容:" . $content;
 
             // 发邮件通知管理员
-            if ($this->systemConfig['crash_warning_email']) {
+            if (self::$systemConfig['crash_warning_email']) {
                 try {
-                    Mail::to($this->systemConfig['crash_warning_email'])->send(new newTicket($this->systemConfig['website_name'], $emailTitle, $content));
+                    Mail::to(self::$systemConfig['crash_warning_email'])->send(new newTicket(self::$systemConfig['website_name'], $emailTitle, $content));
                     $this->sendEmailLog(1, $emailTitle, $content);
                 } catch (\Exception $e) {
                     $this->sendEmailLog(1, $emailTitle, $content, 0, $e->getMessage());
@@ -448,7 +445,7 @@ class UserController extends Controller
             }
 
             // 通过ServerChan发微信消息提醒管理员
-            if ($this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
+            if (self::$systemConfig['is_server_chan'] && self::$systemConfig['server_chan_key']) {
                 $serverChan = new ServerChan();
                 $serverChan->send($emailTitle, $content);
             }
@@ -471,6 +468,10 @@ class UserController extends Controller
             $content = str_replace("eval", "", str_replace("atob", "", $content));
             $content = substr($content, 0, 300);
 
+            if (empty($content)) {
+                return Response::json(['status' => 'fail', 'data' => '', 'message' => '回复内容不能为空']);
+            }
+
             $obj = new TicketReply();
             $obj->ticket_id = $id;
             $obj->user_id = $user['id'];
@@ -486,8 +487,8 @@ class UserController extends Controller
 
                 // 发邮件通知管理员
                 try {
-                    if ($this->systemConfig['crash_warning_email']) {
-                        Mail::to($this->systemConfig['crash_warning_email'])->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
+                    if (self::$systemConfig['crash_warning_email']) {
+                        Mail::to(self::$systemConfig['crash_warning_email'])->send(new replyTicket(self::$systemConfig['website_name'], $title, $content));
                         $this->sendEmailLog(1, $title, $content);
                     }
                 } catch (\Exception $e) {
@@ -495,7 +496,7 @@ class UserController extends Controller
                 }
 
                 // 通过ServerChan发微信消息提醒管理员
-                if ($this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
+                if (self::$systemConfig['is_server_chan'] && self::$systemConfig['server_chan_key']) {
                     $serverChan = new ServerChan();
                     $serverChan->send($title, $content);
                 }
@@ -513,11 +514,11 @@ class UserController extends Controller
             $view['ticket'] = $ticket;
             $view['replyList'] = TicketReply::query()->where('ticket_id', $id)->with('user')->orderBy('id', 'asc')->get();
 
-            $view['website_logo'] = $this->systemConfig['website_logo'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['website_logo'] = self::$systemConfig['website_logo'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-            return Response::view('user/replyTicket', $view);
+            return Response::view('user.replyTicket', $view);
         }
     }
 
@@ -544,28 +545,28 @@ class UserController extends Controller
         // 已生成的邀请码数量
         $num = Invite::query()->where('uid', $user['id'])->count();
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-        $view['num'] = $this->systemConfig['invite_num'] - $num <= 0 ? 0 : $this->systemConfig['invite_num'] - $num; // 还可以生成的邀请码数量
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+        $view['num'] = self::$systemConfig['invite_num'] - $num <= 0 ? 0 : self::$systemConfig['invite_num'] - $num; // 还可以生成的邀请码数量
         $view['inviteList'] = Invite::query()->where('uid', $user['id'])->with(['generator', 'user'])->paginate(10); // 邀请码列表
-        $view['referral_traffic'] = flowAutoShow($this->systemConfig['referral_traffic'] * 1048576);
-        $view['referral_percent'] = $this->systemConfig['referral_percent'];
+        $view['referral_traffic'] = flowAutoShow(self::$systemConfig['referral_traffic'] * 1048576);
+        $view['referral_percent'] = self::$systemConfig['referral_percent'];
 
-        return Response::view('user/invite', $view);
+        return Response::view('user.invite', $view);
     }
 
     // 公开的邀请码列表
     public function free(Request $request)
     {
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-        $view['is_invite_register'] = $this->systemConfig['is_invite_register'];
-        $view['is_free_code'] = $this->systemConfig['is_free_code'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+        $view['is_invite_register'] = self::$systemConfig['is_invite_register'];
+        $view['is_free_code'] = self::$systemConfig['is_free_code'];
         $view['inviteList'] = Invite::query()->where('uid', 0)->where('status', 0)->paginate();
 
-        return Response::view('user/free', $view);
+        return Response::view('user.free', $view);
     }
 
     // 生成邀请码
@@ -575,8 +576,8 @@ class UserController extends Controller
 
         // 已生成的邀请码数量
         $num = Invite::query()->where('uid', $user['id'])->count();
-        if ($num >= $this->systemConfig['invite_num']) {
-            return Response::json(['status' => 'fail', 'data' => '', 'message' => '生成失败:最多只能生成' . $this->systemConfig['invite_num'] . '个邀请码']);
+        if ($num >= self::$systemConfig['invite_num']) {
+            return Response::json(['status' => 'fail', 'data' => '', 'message' => '生成失败:最多只能生成' . self::$systemConfig['invite_num'] . '个邀请码']);
         }
 
         $obj = new Invite();
@@ -597,7 +598,7 @@ class UserController extends Controller
             $username = trim($request->get('username'));
 
             // 是否开启账号激活
-            if (!$this->systemConfig['is_active_register']) {
+            if (!self::$systemConfig['is_active_register']) {
                 Session::flash('errorMsg', '系统未开启账号激活功能,请联系管理员');
 
                 return Redirect::back()->withInput();
@@ -623,15 +624,15 @@ class UserController extends Controller
             $activeTimes = 0;
             if (Cache::has('activeUser_' . md5($username))) {
                 $activeTimes = Cache::get('activeUser_' . md5($username));
-                if ($activeTimes >= $this->systemConfig['active_times']) {
-                    Session::flash('errorMsg', '同一个账号24小时内只能请求激活' . $this->systemConfig['active_times'] . '次,请勿频繁操作');
+                if ($activeTimes >= self::$systemConfig['active_times']) {
+                    Session::flash('errorMsg', '同一个账号24小时内只能请求激活' . self::$systemConfig['active_times'] . '次,请勿频繁操作');
 
                     return Redirect::back();
                 }
             }
 
             // 生成激活账号的地址
-            $token = md5($this->systemConfig['website_name'] . $username . microtime());
+            $token = md5(self::$systemConfig['website_name'] . $username . microtime());
             $verify = new Verify();
             $verify->user_id = $user->id;
             $verify->username = $username;
@@ -640,12 +641,12 @@ class UserController extends Controller
             $verify->save();
 
             // 发送邮件
-            $activeUserUrl = $this->systemConfig['website_url'] . '/active/' . $token;
+            $activeUserUrl = self::$systemConfig['website_url'] . '/active/' . $token;
             $title = '重新激活账号';
             $content = '请求地址:' . $activeUserUrl;
 
             try {
-                Mail::to($user->username)->send(new activeUser($this->systemConfig['website_name'], $activeUserUrl));
+                Mail::to($user->username)->send(new activeUser(self::$systemConfig['website_name'], $activeUserUrl));
                 $this->sendEmailLog($user->id, $title, $content);
             } catch (\Exception $e) {
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
@@ -656,9 +657,9 @@ class UserController extends Controller
 
             return Redirect::back();
         } else {
-            $view['is_active_register'] = $this->systemConfig['is_active_register'];
+            $view['is_active_register'] = self::$systemConfig['is_active_register'];
 
-            return Response::view('user/activeUser', $view);
+            return Response::view('user.activeUser', $view);
         }
     }
 
@@ -675,15 +676,15 @@ class UserController extends Controller
         } elseif (empty($verify->user)) {
             Session::flash('errorMsg', '该链接已失效');
 
-            return Response::view('user/active');
+            return Response::view('user.active');
         } elseif ($verify->status == 1) {
             Session::flash('errorMsg', '该链接已失效');
 
-            return Response::view('user/active');
+            return Response::view('user.active');
         } elseif ($verify->user->status != 0) {
             Session::flash('errorMsg', '该账号无需激活.');
 
-            return Response::view('user/active');
+            return Response::view('user.active');
         } elseif (time() - strtotime($verify->created_at) >= 1800) {
             Session::flash('errorMsg', '该链接已过期');
 
@@ -691,7 +692,7 @@ class UserController extends Controller
             $verify->status = 2;
             $verify->save();
 
-            return Response::view('user/active');
+            return Response::view('user.active');
         }
 
         // 更新账号状态
@@ -708,7 +709,7 @@ class UserController extends Controller
 
         // 账号激活后给邀请人送流量
         if ($verify->user->referral_uid) {
-            $transfer_enable = $this->systemConfig['referral_traffic'] * 1048576;
+            $transfer_enable = self::$systemConfig['referral_traffic'] * 1048576;
 
             User::query()->where('id', $verify->user->referral_uid)->increment('transfer_enable', $transfer_enable);
             User::query()->where('id', $verify->user->referral_uid)->update(['enable' => 1]);
@@ -716,7 +717,7 @@ class UserController extends Controller
 
         Session::flash('successMsg', '账号激活成功');
 
-        return Response::view('user/active');
+        return Response::view('user.active');
     }
 
     // 重设密码页
@@ -726,7 +727,7 @@ class UserController extends Controller
             $username = trim($request->get('username'));
 
             // 是否开启重设密码
-            if (!$this->systemConfig['is_reset_password']) {
+            if (!self::$systemConfig['is_reset_password']) {
                 Session::flash('errorMsg', '系统未开启重置密码功能,请联系管理员');
 
                 return Redirect::back()->withInput();
@@ -744,15 +745,15 @@ class UserController extends Controller
             $resetTimes = 0;
             if (Cache::has('resetPassword_' . md5($username))) {
                 $resetTimes = Cache::get('resetPassword_' . md5($username));
-                if ($resetTimes >= $this->systemConfig['reset_password_times']) {
-                    Session::flash('errorMsg', '同一个账号24小时内只能重设密码' . $this->systemConfig['reset_password_times'] . '次,请勿频繁操作');
+                if ($resetTimes >= self::$systemConfig['reset_password_times']) {
+                    Session::flash('errorMsg', '同一个账号24小时内只能重设密码' . self::$systemConfig['reset_password_times'] . '次,请勿频繁操作');
 
                     return Redirect::back();
                 }
             }
 
             // 生成取回密码的地址
-            $token = md5($this->systemConfig['website_name'] . $username . microtime());
+            $token = md5(self::$systemConfig['website_name'] . $username . microtime());
             $verify = new Verify();
             $verify->user_id = $user->id;
             $verify->username = $username;
@@ -761,12 +762,12 @@ class UserController extends Controller
             $verify->save();
 
             // 发送邮件
-            $resetPasswordUrl = $this->systemConfig['website_url'] . '/reset/' . $token;
+            $resetPasswordUrl = self::$systemConfig['website_url'] . '/reset/' . $token;
             $title = '重置密码';
             $content = '请求地址:' . $resetPasswordUrl;
 
             try {
-                Mail::to($user->username)->send(new resetPassword($this->systemConfig['website_name'], $resetPasswordUrl));
+                Mail::to($user->username)->send(new resetPassword(self::$systemConfig['website_name'], $resetPasswordUrl));
                 $this->sendEmailLog($user->id, $title, $content);
             } catch (\Exception $e) {
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
@@ -777,12 +778,12 @@ class UserController extends Controller
 
             return Redirect::back();
         } else {
-            $view['website_home_logo'] = $this->systemConfig['website_home_logo'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-            $view['is_reset_password'] = $this->systemConfig['is_reset_password'];
+            $view['website_home_logo'] = self::$systemConfig['website_home_logo'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+            $view['is_reset_password'] = self::$systemConfig['is_reset_password'];
 
-            return Response::view('user/resetPassword', $view);
+            return Response::view('user.resetPassword', $view);
         }
     }
 
@@ -856,13 +857,13 @@ class UserController extends Controller
                 // 重新获取一遍verify
                 $view['verify'] = Verify::query()->where('token', $token)->with('user')->first();
 
-                return Response::view('user/reset', $view);
+                return Response::view('user.reset', $view);
             }
 
-            $view['website_home_logo'] = $this->systemConfig['website_home_logo'];
+            $view['website_home_logo'] = self::$systemConfig['website_home_logo'];
             $view['verify'] = $verify;
 
-            return Response::view('user/reset', $view);
+            return Response::view('user.reset', $view);
         }
     }
 
@@ -913,7 +914,7 @@ class UserController extends Controller
             }
 
             // 限购控制:all-所有商品限购, free-价格为0的商品限购, none-不限购(默认)
-            $strategy = $this->systemConfig['goods_purchase_limit_strategy'];
+            $strategy = self::$systemConfig['goods_purchase_limit_strategy'];
             if ($strategy == 'all' || ($strategy == 'package' && $goods->type == 2) || ($strategy == 'free' && $goods->price == 0) || ($strategy == 'package&free' && ($goods->type == 2 || $goods->price == 0))) {
                 $noneExpireGoodExist = Order::query()->where('status', '>=', 0)->where('is_expire', 0)->where('user_id', $user['id'])->where('goods_id', $goods_id)->exists();
                 if ($noneExpireGoodExist) {
@@ -1016,8 +1017,8 @@ class UserController extends Controller
                 if ($goods->label) {
                     // 用户默认标签
                     $defaultLabels = [];
-                    if ($this->systemConfig['initial_labels_for_user']) {
-                        $defaultLabels = explode(',', $this->systemConfig['initial_labels_for_user']);
+                    if (self::$systemConfig['initial_labels_for_user']) {
+                        $defaultLabels = explode(',', self::$systemConfig['initial_labels_for_user']);
                     }
 
                     // 取出现有的标签
@@ -1041,7 +1042,7 @@ class UserController extends Controller
 
                 // 写入返利日志
                 if ($user->referral_uid) {
-                    $this->addReferralLog($user->id, $user->referral_uid, $order->oid, $amount, $amount * $this->systemConfig['referral_percent']);
+                    $this->addReferralLog($user->id, $user->referral_uid, $order->oid, $amount, $amount * self::$systemConfig['referral_percent']);
                 }
 
                 // 取消重复返利
@@ -1063,14 +1064,13 @@ class UserController extends Controller
                 return Redirect::to('services');
             }
 
-            $goods->traffic = flowAutoShow($goods->traffic * 1048576);
             $view['goods'] = $goods;
-            $view['is_youzan'] = $this->systemConfig['is_youzan'];
-            $view['website_logo'] = $this->systemConfig['website_logo'];
-            $view['website_analytics'] = $this->systemConfig['website_analytics'];
-            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['is_youzan'] = self::$systemConfig['is_youzan'];
+            $view['website_logo'] = self::$systemConfig['website_logo'];
+            $view['website_analytics'] = self::$systemConfig['website_analytics'];
+            $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
 
-            return Response::view('user/buy', $view);
+            return Response::view('user.buy', $view);
         }
     }
 
@@ -1121,20 +1121,20 @@ class UserController extends Controller
         // 生成个人推广链接
         $user = Session::get('user');
 
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
-        $view['referral_traffic'] = flowAutoShow($this->systemConfig['referral_traffic'] * 1048576);
-        $view['referral_percent'] = $this->systemConfig['referral_percent'];
-        $view['referral_money'] = $this->systemConfig['referral_money'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
+        $view['referral_traffic'] = flowAutoShow(self::$systemConfig['referral_traffic'] * 1048576);
+        $view['referral_percent'] = self::$systemConfig['referral_percent'];
+        $view['referral_money'] = self::$systemConfig['referral_money'];
         $view['totalAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->sum('ref_amount') / 100;
         $view['canAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount') / 100;
-        $view['link'] = $this->systemConfig['website_url'] . '/register?aff=' . $user['id'];
+        $view['link'] = self::$systemConfig['website_url'] . '/register?aff=' . $user['id'];
         $view['referralLogList'] = ReferralLog::query()->where('ref_user_id', $user['id'])->with('user')->paginate(10);
         $view['referralApplyList'] = ReferralApply::query()->where('user_id', $user['id'])->with('user')->paginate(10);
-        $view['referralUserList'] = User::select(['username', 'created_at'])->where('referral_uid', $user['id'])->orderBy('id', 'desc')->paginate(10);
+        $view['referralUserList'] = User::query()->select(['username', 'created_at'])->where('referral_uid', $user['id'])->orderBy('id', 'desc')->paginate(10);
 
-        return Response::view('user/referral', $view);
+        return Response::view('user.referral', $view);
     }
 
     // 申请提现
@@ -1156,8 +1156,8 @@ class UserController extends Controller
         // 校验可以提现金额是否超过系统设置的阀值
         $ref_amount = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount');
         $ref_amount = $ref_amount / 100;
-        if ($ref_amount < $this->systemConfig['referral_money']) {
-            return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:满' . $this->systemConfig['referral_money'] . '元才可以提现,继续努力吧']);
+        if ($ref_amount < self::$systemConfig['referral_money']) {
+            return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:满' . self::$systemConfig['referral_money'] . '元才可以提现,继续努力吧']);
         }
 
         // 取出本次申请关联返利日志ID
@@ -1183,12 +1183,12 @@ class UserController extends Controller
     // 帮助中心
     public function help(Request $request)
     {
-        $view['website_logo'] = $this->systemConfig['website_logo'];
-        $view['website_analytics'] = $this->systemConfig['website_analytics'];
-        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['website_logo'] = self::$systemConfig['website_logo'];
+        $view['website_analytics'] = self::$systemConfig['website_analytics'];
+        $view['website_customer_service'] = self::$systemConfig['website_customer_service'];
         $view['articleList'] = Article::query()->where('type', 1)->where('is_del', 0)->orderBy('sort', 'desc')->orderBy('id', 'desc')->limit(10)->paginate(15);
 
-        return Response::view('user/help', $view);
+        return Response::view('user.help', $view);
     }
 
     // 更换订阅地址
@@ -1288,4 +1288,27 @@ class UserController extends Controller
 
         return Redirect::back();
     }
+
+    // 上传文件
+    public function uploadImg(Request $request)
+    {
+        var_dump($_FILES);
+        var_dump($request->all());
+        die;
+        if ($request->hasFile('img')) {
+            $file = $request->file('logo');
+            $fileType = $file->getClientOriginalExtension();
+
+            // 验证文件合法性
+            if (!in_array($fileType, ['jpg', 'png', 'jpeg', 'bmp'])) {
+                Session::flash('errorMsg', 'LOGO不合法');
+
+                return Redirect::back()->withInput();
+            }
+
+            $logoName = date('YmdHis') . mt_rand(1000, 2000) . '.' . $fileType;
+            $move = $file->move(base_path() . '/public/upload/image/goods/', $logoName);
+            $logo = $move ? '/upload/image/goods/' . $logoName : '';
+        }
+    }
 }

+ 7 - 0
app/Http/Models/Goods.php

@@ -29,4 +29,11 @@ class Goods extends Model
     {
         $this->attributes['price'] = $value * 100;
     }
+
+    public function getTrafficLabelAttribute()
+    {
+        $traffic_label = flowAutoShow($this->attributes['traffic'] * 1048576);
+
+        return $traffic_label;
+    }
 }

+ 9 - 0
config/captcha.php

@@ -41,6 +41,15 @@ return [
         'blur'      => 2,
         'invert'    => true,
         'contrast'  => -5,
+    ],
+
+    // 自动售号机
+    'seller' => [
+        'length'    => 4,
+        'width'     => 90,
+        'height'    => 34,
+        'quality'   => 90,
+        'lines'     => 4,
     ]
 
 ];

+ 1 - 1
config/domains.php

@@ -34,5 +34,5 @@ return [
     'neustar', 'ni', 'np', 'nr', 'nyc', 'okinawa', 'pa', 'pg', 'ph', 'pk', 'pn', 'ps', 'py', 'qpon', 'ren', 'rw', 'krd',
     'sd', 'sj', 'sl', 'sohu', 'sr', 'ss', 'sv', 'sz', 'td', 'tg', 'tj', 'tokyo', 'tp', 'trade', 'tt', 'um', 'uno', 'llc',
     'va', 'vi', 'vi', 'vn', 'webcam', 'ye', 'yokohoma', 'ryukyu', 'meet', 'vote', 'lc', 'voto', 'wed', 'zw', 'ooo', 'ltda',
-    'stream', 'wtf', 'observer', 'site',
+    'stream', 'wtf', 'observer', 'site', 'tech',
 ];

+ 1 - 3
config/version.php

@@ -1,5 +1,3 @@
 <?php
 
-return [
-    'number' => 310,
-];
+return '430';

+ 1 - 0
public/assets/layouts/layout3/css/custom.css

@@ -0,0 +1 @@
+/* here you can put your own css to customize and override the theme */

+ 0 - 0
public/assets/layouts/layout3/css/custom.min.css


+ 1686 - 0
public/assets/layouts/layout3/css/layout.css

@@ -0,0 +1,1686 @@
+@charset "UTF-8";
+/* Cubic Bezier Transition */
+@media print {
+  body {
+    background-color: #fff !important; }
+  .page-header {
+    display: none; }
+  .theme-panel {
+    display: none; }
+  .hidden-print {
+    display: none; }
+  .page-prefooter {
+    display: none; }
+  .page-footer {
+    display: none; }
+  .page-head {
+    display: none; }
+  .page-breadcrumb {
+    display: none; }
+  .no-page-break {
+    page-break-after: avoid; }
+  .page-container {
+    margin: 0px !important;
+    padding: 0px !important; }
+    .page-container .page-content {
+      padding: 0 !important;
+      margin: 0 !important; }
+      .page-container .page-content > .container {
+        width: 100%;
+        max-width: none !important;
+        margin: 0 !important; }
+      .page-container .page-content > .container > .portlet,
+      .page-container .page-content > .container-fluid > .portlet {
+        padding: 0;
+        margin: 0; }
+        .page-container .page-content > .container > .portlet > .portlet-body,
+        .page-container .page-content > .container-fluid > .portlet > .portlet-body {
+          padding: 0;
+          margin: 0; } }
+
+/***
+Page Header
+***/
+.page-header {
+  opacity: 1 ;
+  filter: alpha(opacity=100) ;
+  width: 100%;
+  margin: 0;
+  border: 0;
+  padding: 0;
+  box-shadow: none;
+  height: 126px;
+  background-image: none;
+  /* Header container */
+  /* Fixed header */
+  /* Static header */
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header:before, .page-header:after {
+    content: " ";
+    display: table; }
+  .page-header:after {
+    clear: both; }
+  .page-header .container,
+  .page-header .container-fluid {
+    position: relative; }
+  .page-header.navbar-fixed-top {
+    z-index: 9995; }
+  .page-header.navbar-static-top {
+    z-index: 9995; }
+  .page-header .page-header-top {
+    height: 75px;
+    /* Header logo */
+    /* Top menu */
+    /* Menu Toggler */ }
+    .page-header .page-header-top.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; }
+    .page-header .page-header-top .page-logo {
+      float: left;
+      display: block;
+      width: 255px;
+      height: 75px; }
+      .page-header .page-header-top .page-logo .logo-default {
+        margin: 29.5px 0 0 0; }
+    .page-header .page-header-top .top-menu {
+      margin: 13px 0 0;
+      padding: 0;
+      float: right; }
+      .page-header .page-header-top .top-menu .navbar-nav {
+        padding: 0;
+        margin-right: 0;
+        display: block;
+        /* Top Links */
+        /* Separator */
+        /* Extended Dropdowns */
+        /* Notification */
+        /* Inbox */
+        /* Tasks */
+        /* User */
+        /* Quick Sidebar Toggler */
+        /* Language */
+        /* Dark version */ }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown {
+          margin: 0;
+          padding: 0 4px;
+          height: 50px;
+          display: inline-block;
+          /* 1st level */
+          /* 2nd level */ }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle {
+            margin: 0 0 0 1px;
+            padding: 17px 10px 8px 10px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:last-child {
+              padding-right: 0; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+              font-size: 19px; }
+              .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i.glyphicon {
+                font-size: 18px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > .badge {
+              font-family: "Open Sans", sans-serif;
+              position: absolute;
+              top: 9px;
+              right: 24px;
+              font-weight: 300;
+              padding: 3px 6px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus {
+              background: none; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-menu {
+            z-index: 9996;
+            margin-top: 5px;
+            margin-right: 7px;
+            font-family: "Open Sans", sans-serif;
+            -webkit-border-radius: 4px;
+            -moz-border-radius: 4px;
+            -ms-border-radius: 4px;
+            -o-border-radius: 4px;
+            border-radius: 4px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-menu:before {
+              position: absolute;
+              top: -8px;
+              right: 9px;
+              display: inline-block !important;
+              border-right: 8px solid transparent;
+              border-bottom: 8px solid #efefef;
+              border-left: 8px solid transparent;
+              content: ''; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-menu:after {
+              position: absolute;
+              top: -7px;
+              right: 10px;
+              display: inline-block !important;
+              border-right: 7px solid transparent;
+              border-bottom: 7px solid #fff;
+              border-left: 7px solid transparent;
+              content: ''; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator {
+          padding-left: 0px;
+          padding-right: 6px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+            float: left;
+            display: inline-block;
+            width: 1px;
+            height: 18px;
+            margin-left: 5px;
+            margin-top: 17px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu {
+          min-width: 160px;
+          max-width: 300px;
+          width: 300px;
+          z-index: 9996;
+          /* header notifications dropdowns */ }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+            display: block;
+            overflow: hidden;
+            padding: 15px 15px;
+            letter-spacing: 0.5px;
+            -webkit-border-radius: 4px 4px 0 0;
+            -moz-border-radius: 4px 4px 0 0;
+            -ms-border-radius: 4px 4px 0 0;
+            -o-border-radius: 4px 4px 0 0;
+            border-radius: 4px 4px 0 0; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+              margin: 0;
+              padding: 0;
+              float: left;
+              font-size: 13px;
+              display: inline-block; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+              display: inline-block;
+              padding: 0;
+              background: none;
+              clear: inherit;
+              font-size: 12px;
+              font-weight: 400;
+              position: absolute;
+              right: 10px;
+              border: 0;
+              margin-top: -2px; }
+              .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+                text-decoration: none; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list {
+            padding-right: 0 !important;
+            padding-left: 0;
+            list-style: none; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+              display: block;
+              clear: both;
+              font-weight: 300;
+              line-height: 20px;
+              white-space: normal;
+              font-size: 13px;
+              padding: 16px 15px 18px;
+              text-shadow: none; }
+              .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+                opacity: 1 ;
+                filter: alpha(opacity=100) ;
+                text-decoration: none; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li:first-child a {
+              border-top: none; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li a .details {
+          overflow: hidden; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li a .details .label-icon {
+            margin-right: 10px;
+            -webkit-border-radius: 50%;
+            -moz-border-radius: 50%;
+            -ms-border-radius: 50%;
+            -o-border-radius: 50%;
+            border-radius: 50%; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li a .details .label-icon i {
+              margin-right: 2px;
+              margin-left: 1px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li a .details .label-icon .badge {
+              right: 15px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li a .time {
+          float: right;
+          max-width: 75px;
+          font-size: 11px;
+          font-weight: 400;
+          opacity: 0.7 ;
+          filter: alpha(opacity=70) ;
+          text-align: right;
+          padding: 1px 5px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle {
+          padding: 17px 0px 8px 8px;
+          /* safari only hack */ }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+            float: left;
+            margin-top: -5px;
+            padding: 3px 10px 4px 10px;
+            -webkit-border-radius: 50% !important;
+            -moz-border-radius: 50% !important;
+            -ms-border-radius: 50% !important;
+            -o-border-radius: 50% !important;
+            border-radius: 50% !important;
+            font-family: "Open Sans", sans-serif;
+            font-weight: 300; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+            float: left;
+            margin-left: -4px;
+            width: 0;
+            height: 0;
+            border-style: solid;
+            border-width: 8px 0 9px 9px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner:not(:root:root) {
+            margin-left: -5px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .photo {
+          float: left;
+          margin: 0 6px 6px 0; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .photo img {
+            height: 40px;
+            width: 40px;
+            -webkit-border-radius: 50% !important;
+            -moz-border-radius: 50% !important;
+            -ms-border-radius: 50% !important;
+            -o-border-radius: 50% !important;
+            border-radius: 50% !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li a:hover {
+          text-decoration: none; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .subject {
+          display: block;
+          margin-left: 46px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .subject .from {
+            font-size: 14px;
+            font-weight: 600; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .subject .time {
+            font-size: 12px;
+            font-weight: 400;
+            opacity: 0.5 ;
+            filter: alpha(opacity=50) ;
+            float: right; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-menu .dropdown-menu-list > li .message {
+          display: block !important;
+          font-size: 12px;
+          line-height: 1.3;
+          margin-left: 46px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list > li .task {
+          margin-bottom: 5px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list > li .task .desc {
+            font-size: 13px;
+            font-weight: 300; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list > li .task .percent {
+            color: #36c6d3;
+            float: right;
+            font-weight: 600;
+            display: inline-block; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list > li .progress {
+          display: block;
+          height: 8px;
+          margin: 8px 0 2px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list > li .progress .progress-bar {
+            box-shadow: none; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          padding: 12px 6px 7px 6px;
+          padding-left: 0;
+          padding-right: 0; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle > img {
+            margin-top: -8px;
+            margin-right: 8px;
+            height: 40px;
+            float: left; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle > .username {
+            float: left;
+            font-size: 400;
+            font-size: 14px;
+            margin-top: 4px;
+            margin-right: 2px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle > i {
+            float: left;
+            font-size: 14px;
+            margin-top: 7px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-menu {
+          width: 210px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-menu > li > a {
+            font-size: 14px;
+            font-weight: 300;
+            font-size: 13px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-menu > li > a i {
+              width: 15px;
+              display: inline-block;
+              margin-right: 9px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user .dropdown-menu > li > a .badge {
+              margin-right: 10px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.quick-sidebar-toggler {
+          cursor: pointer;
+          padding: 17px 10px 8px 10px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.quick-sidebar-toggler > i {
+            color: #c1ccd1;
+            font-size: 19px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.quick-sidebar-toggler > i:before {
+              content: ""/*rtl:""*/; }
+            .page-quick-sidebar-open .page-header .page-header-top .top-menu .navbar-nav > li.quick-sidebar-toggler > i:before {
+              content: ""/*rtl:""*/; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.quick-sidebar-toggler > i:hover {
+              color: #a4b4bb; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language {
+          padding-left: 0;
+          padding-right: 0;
+          margin: 0; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle {
+            padding: 16px 10px 9px 2px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > img {
+              margin-bottom: 2px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > i {
+              font-size: 14px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-menu > li > a {
+            font-size: 13px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-menu > li > a > img {
+              margin-bottom: 2px;
+              margin-right: 5px; }
+        .page-header .page-header-top .top-menu .navbar-nav li.dropdown-dark .dropdown-menu {
+          border: 0; }
+          .page-header .page-header-top .top-menu .navbar-nav li.dropdown-dark .dropdown-menu:before {
+            border-left: none;
+            border-right: none; }
+          .page-header .page-header-top .top-menu .navbar-nav li.dropdown-dark .dropdown-menu .dropdown-menu-list > li.external a {
+            background: none !important;
+            border: none !important; }
+    .page-header .page-header-top .menu-toggler {
+      float: right;
+      display: none;
+      margin: 23px 3px 0 13px;
+      width: 40px;
+      height: 30px;
+      background: url(../img/menu-toggler.png) center center;
+      background-repeat: no-repeat;
+      opacity: 0.7 ;
+      filter: alpha(opacity=70) ; }
+      .page-header .page-header-top .menu-toggler:hover {
+        opacity: 1 ;
+        filter: alpha(opacity=100) ; }
+  .page-header .page-header-menu {
+    display: block;
+    height: 51px;
+    clear: both;
+    /* Mega menu */
+    /* Search box */ }
+    .page-header .page-header-menu .hor-menu {
+      margin: 0 0 0 -17px;
+      margin: 0;
+      float: left; }
+      .page-header .page-header-menu .hor-menu .navbar-nav {
+        position: static;
+        /* Mega menu */
+        /* Mega Menu Dropdown */
+        /* Classic menu */ }
+        .page-header .page-header-menu .hor-menu .navbar-nav.navbar-right .dropdown-menu {
+          left: auto;
+          right: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown {
+          position: static; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+            left: auto;
+            width: auto; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content {
+              font-family: "Open Sans", sans-serif;
+              padding: 15px;
+              margin: 0; }
+              .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content.mega-menu-responsive-content {
+                padding: 10px 18px 10px 45px; }
+              .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+                padding: 0;
+                margin: 0; }
+                .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu:last-child {
+                  border-right: 0; }
+                .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li {
+                  padding: 1px !important;
+                  margin: 0 !important;
+                  list-style: none; }
+                  .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+                    margin-top: 5px;
+                    padding-left: 5px;
+                    font-size: 15px;
+                    font-weight: normal; }
+                  .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a {
+                    display: block;
+                    white-space: normal;
+                    font-family: "Open Sans", sans-serif;
+                    padding: 7px;
+                    margin: 0;
+                    font-size: 14px;
+                    font-weight: 300; }
+                    .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a:hover {
+                      text-decoration: none; }
+                    .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a.iconify {
+                      padding: 7px 7px 7px 30px; }
+                      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a.iconify > i {
+                        position: absolute;
+                        top: auto !important;
+                        margin-left: -24px;
+                        font-size: 15px;
+                        margin-top: 3px !important; }
+                    .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a .badge,
+                    .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > a .label {
+                      margin-left: 5px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown.mega-menu-full .dropdown-menu {
+            left: 15px;
+            right: 15px; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.menu-dropdown .dropdown-menu:after, .page-header .page-header-menu .hor-menu .navbar-nav > li.menu-dropdown .dropdown-menu:before {
+          display: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          font-size: 14px;
+          font-weight: normal;
+          padding: 16px 18px 15px 18px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current .selected, .page-header .page-header-menu .hor-menu .navbar-nav > li.active .selected {
+          left: 50%;
+          bottom: 0;
+          position: absolute;
+          border-left: 6px solid transparent;
+          border-right: 6px solid transparent;
+          border-top: 6px solid transparent;
+          display: inline-block;
+          margin: 0;
+          width: 0;
+          height: 0px;
+          margin-left: -7px;
+          margin-bottom: -6px; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          margin-top: 0;
+          border: none; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            font-family: "Open Sans", sans-serif;
+            font-size: 14px;
+            font-weight: 300;
+            padding: 10px 12px;
+            white-space: normal; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a .label,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a .badge {
+              font-weight: 300; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu {
+          min-width: 195px;
+          max-width: 235px; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > .dropdown-menu {
+          top: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+          top: 9px;
+          right: 10px; }
+    .page-header .page-header-menu .search-form {
+      position: relative;
+      display: inline-block;
+      float: right;
+      width: 176px;
+      transition: width 0.4s;
+      margin-top: 8px;
+      -webkit-border-radius: 4px;
+      -moz-border-radius: 4px;
+      -ms-border-radius: 4px;
+      -o-border-radius: 4px;
+      border-radius: 4px; }
+      .page-header .page-header-menu .search-form .input-group {
+        -webkit-border-radius: 4px;
+        -moz-border-radius: 4px;
+        -ms-border-radius: 4px;
+        -o-border-radius: 4px;
+        border-radius: 4px; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          border: 0;
+          font-size: 13px;
+          padding-right: 20px;
+          font-weight: 300; }
+          .page-header .page-header-menu .search-form .input-group .form-control:hover {
+            cursor: pointer; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit {
+          padding: 0;
+          height: 34px;
+          z-index: 3;
+          position: relative;
+          top: 10px;
+          right: 11px; }
+          .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+            font-size: 15px; }
+      .page-header .page-header-menu .search-form.open {
+        width: 300px !important;
+        transition: width 0.4s; }
+        .page-header .page-header-menu .search-form.open .input-group .form-control {
+          text-indent: 0; }
+          .page-header .page-header-menu .search-form.open .input-group .form-control:hover {
+            cursor: text; }
+        .page-header .page-header-menu .search-form.open .input-group .input-group-btn .btn.submit {
+          margin-left: 0; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; }
+    .page-header .page-header-menu .hor-menu .navbar-nav > li.menu-dropdown:hover > .dropdown-menu {
+      display: block; }
+    .page-header .page-header-menu .container-fluid .navbar-nav > li.mega-menu-dropdown.mega-menu-full .dropdown-menu {
+      left: 60px;
+      right: 60px; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  /* Page header */
+  .page-header {
+    padding: 0;
+    clear: both;
+    height: auto; }
+    .page-header .page-header-top {
+      height: auto;
+      /* Page logo */
+      /* Top Menu */
+      /* Menu Toggler */ }
+      .page-header .page-header-top > .container {
+        width: 100%;
+        max-width: none !important;
+        margin: 0 !important; }
+      .page-header .page-header-top .page-logo {
+        width: auto;
+        padding: 0;
+        margin-right: 10px;
+        margin-left: 4px;
+        padding-left: 0; }
+      .page-header .page-header-top .top-menu .navbar-nav {
+        display: inline-block;
+        margin: 0 10px 0 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li {
+          float: left; }
+      .page-header .page-header-top .menu-toggler {
+        display: block; }
+    .page-header .page-header-menu {
+      background: #eff3f8;
+      padding: 20px 0 0 0;
+      height: auto;
+      display: none; }
+      .page-header .page-header-menu > .container {
+        width: 100%;
+        max-width: none !important;
+        margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu {
+        float: none;
+        -webkit-border-radius: 4px;
+        -moz-border-radius: 4px;
+        -ms-border-radius: 4px;
+        -o-border-radius: 4px;
+        border-radius: 4px; }
+        .page-header .page-header-menu .hor-menu .navbar-nav {
+          float: none;
+          -webkit-border-radius: 4px;
+          -moz-border-radius: 4px;
+          -ms-border-radius: 4px;
+          -o-border-radius: 4px;
+          border-radius: 4px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li > a > .arrow:after {
+            position: absolute;
+            display: inline-block;
+            font-size: 14px;
+            right: 15px;
+            top: 11px;
+            font-family: FontAwesome;
+            height: auto;
+            content: "\f104";
+            font-weight: 300; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.opened > a > .arrow:after {
+            content: "\f107";
+            right: 12px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav .dropdown-submenu > a:after {
+            display: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li {
+            float: none; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+              padding: 10px; }
+              .page-header .page-header-menu .hor-menu .navbar-nav > li > a .fa-angle-down {
+                float: right; }
+                .page-header .page-header-menu .hor-menu .navbar-nav > li > a .fa-angle-down:before {
+                  content: "\f104"; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li:first-child > a {
+              -webkit-border-radius: 4px 4px 0 0;
+              -moz-border-radius: 4px 4px 0 0;
+              -ms-border-radius: 4px 4px 0 0;
+              -o-border-radius: 4px 4px 0 0;
+              border-radius: 4px 4px 0 0; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child > a {
+              -webkit-border-radius: 0 0 4px 4px;
+              -moz-border-radius: 0 0 4px 4px;
+              -ms-border-radius: 0 0 4px 4px;
+              -o-border-radius: 0 0 4px 4px;
+              border-radius: 0 0 4px 4px; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a .fa-angle-down:before {
+              content: "\f107"; }
+          .page-header .page-header-menu .hor-menu .navbar-nav .dropdown-menu {
+            position: static;
+            float: none !important;
+            width: auto;
+            background: #fff;
+            display: none; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.mega-menu-dropdown.opened > .dropdown-menu {
+            display: block;
+            width: 100%;
+            min-width: inherit !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.mega-menu-dropdown > .dropdown-menu .mega-menu-content {
+            padding-top: 0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown.opened > .dropdown-menu {
+            display: block; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown li.opened > .dropdown-menu {
+            display: block; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown > .dropdown-menu > li > a {
+            padding-left: 20px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown > .dropdown-menu > li > .dropdown-menu > li > a {
+            padding-left: 40px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown > .dropdown-menu > li > .dropdown-menu > li > .dropdown-menu > li > a {
+            padding-left: 60px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown .dropdown-menu {
+            max-width: none;
+            width: auto; }
+            .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown .dropdown-menu > li.divider {
+              background: none;
+              margin: 5px 12px; }
+            .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu > a:after {
+              content: "\f104";
+              font-size: 14px;
+              margin-right: 7px; }
+            .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+              content: "\f107";
+              margin-right: 5px; }
+            .page-header .page-header-menu .hor-menu .navbar-nav li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > .dropdown-menu {
+              display: block; }
+      .page-header .page-header-menu .search-form {
+        float: none !important;
+        width: auto;
+        margin: 0 0 20px 0; }
+        .page-header .page-header-menu .search-form.open {
+          width: auto !important; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          height: 38px; }
+          .page-header .page-header-menu .search-form .input-group .form-control:hover {
+            cursor: text; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit {
+          height: 38px;
+          width: 44px;
+          top: 0;
+          right: 0; }
+          .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit i {
+            position: relative;
+            top: 13px; } }
+
+@media (max-width: 767px) {
+  /* 767px */
+  .page-header {
+    /* Header Top */ }
+    .page-header .page-header-top .page-logo {
+      width: auto !important; }
+    .page-header .page-header-top .top-menu {
+      display: block; }
+      .page-header .page-header-top .top-menu:before, .page-header .page-header-top .top-menu:after {
+        content: " ";
+        display: table; }
+      .page-header .page-header-top .top-menu:after {
+        clear: both; }
+      .page-header .page-header-top .top-menu .navbar-nav {
+        margin-right: 0px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle {
+          padding: 17px 6px 8px 6px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > .badge {
+            right: 18px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended > .dropdown-menu {
+          max-width: 255px;
+          width: 255px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-notification > .dropdown-menu {
+          margin-right: -160px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-notification > .dropdown-menu:after, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-notification > .dropdown-menu:before {
+            margin-right: 160px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-inbox {
+          margin-right: 0;
+          padding-right: 2px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-inbox > .dropdown-menu {
+            margin-right: -40px; }
+            .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-inbox > .dropdown-menu:after, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-inbox > .dropdown-menu:before {
+              margin-right: 40px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-inbox > .dropdown-toggle {
+            padding: 17px 0px 8px 2px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-tasks > .dropdown-menu {
+          margin-right: -115px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-tasks > .dropdown-menu:after, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended.dropdown-tasks > .dropdown-menu:before {
+            margin-right: 115px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-language > .dropdown-menu {
+          margin-right: -20px; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-language > .dropdown-menu:after, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-language > .dropdown-menu:before {
+            margin-right: 20px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-language > .dropdown-toggle {
+          padding: 16px 6px 9px 2px; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-user {
+          padding-left: 0;
+          margin-right: 0; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.dropdown-user > .dropdown-toggle {
+            padding: 12px 0px 7px 4px; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top navigation menu*/ }
+    .page-header .page-header-top .top-menu {
+      display: block;
+      clear: both;
+      margin-top: -10px; }
+      .page-header .page-header-top .top-menu:before, .page-header .page-header-top .top-menu:after {
+        content: " ";
+        display: table; }
+      .page-header .page-header-top .top-menu:after {
+        clear: both; }
+      .page-header .page-header-top .top-menu .username-hide-mobile {
+        display: none; } }
+
+/***  
+Pace - Page Progress
+***/
+.pace .pace-progress {
+  z-index: 10000;
+  top: 126px !important;
+  height: 3px !important; }
+
+.pace .pace-progress-inner {
+  box-shadow: none; }
+
+.pace .pace-activity {
+  top: 128px;
+  right: 22px;
+  border-radius: 10px !important; }
+
+@media (max-width: 480px) {
+  .page-header-fixed .pace .pace-progress {
+    top: 252px; }
+  .page-header-fixed .pace .pace-activity {
+    top: 508px;
+    right: 15px; } }
+
+html,
+body {
+  height: 100%;
+  margin: 0px;
+  padding: 0px; }
+
+.page-wrapper {
+  display: table;
+  width: 100%;
+  height: 100%;
+  table-layout: fixed; }
+  .page-wrapper .page-wrapper-row {
+    width: 100%;
+    display: table-row; }
+    .page-wrapper .page-wrapper-row.full-height {
+      height: 100%; }
+  .page-wrapper .page-wrapper-top {
+    width: 100%;
+    display: table-cell; }
+  .page-wrapper .page-wrapper-middle {
+    background: #eff3f8;
+    width: 100%;
+    display: table-cell;
+    height: 100%; }
+  .page-wrapper .page-wrapper-bottom {
+    width: 100%;
+    display: table-cell; }
+
+/* Page Container */
+.page-container {
+  clear: both; }
+
+.page-head {
+  background: #fff; }
+  .page-head .container {
+    position: relative; }
+  .page-head .page-title {
+    display: inline-block;
+    float: left;
+    padding: 19px 0; }
+    .page-head .page-title > h1 {
+      color: #697882;
+      font-size: 22px;
+      font-weight: 400;
+      margin: 0; }
+      .page-head .page-title > h1 > small {
+        color: #9eacb4;
+        font-size: 13px;
+        font-weight: 400; }
+  .page-head .page-toolbar {
+    display: inline-block;
+    float: right; }
+
+.breadcrumb {
+  background: none;
+  padding: 0 0 15px 0;
+  margin: 0;
+  color: #a7b2c0; }
+
+.breadcrumb > li + li:before {
+  display: none; }
+
+.breadcrumb .fa {
+  font-size: 6px;
+  margin: 0 2px 0 4px;
+  position: relative;
+  top: -1px; }
+
+.breadcrumb > .active {
+  color: #9eacb4; }
+
+.page-content {
+  padding: 15px 0 15px; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .container-fluid {
+    padding-left: 60px;
+    padding-right: 60px; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-head {
+    background: #EFF3F8; }
+    .page-head > .container {
+      width: 100%;
+      max-width: none !important;
+      margin: 0 !important; }
+  .page-content {
+    padding-top: 0px; }
+    .page-content > .container {
+      width: 100%;
+      max-width: none !important;
+      margin: 0 !important; } }
+
+/*  admin 3 portlet styles */
+.portlet .portlet-input .form-control {
+  background: #F1F3F8;
+  border-radius: 0 !important;
+  border-color: #F1F3F8; }
+  .portlet .portlet-input .form-control:focus {
+    border-color: #cfd6e7; }
+
+/* Pre-footer */
+.page-prefooter {
+  padding: 30px 0;
+  clear: both; }
+  .page-prefooter h2 {
+    font-weight: 700;
+    font-size: 15px;
+    text-transform: uppercase;
+    letter-spacing: 1px;
+    margin: 0 0 12px; }
+  .page-prefooter .subscribe-form {
+    padding-top: 5px; }
+    .page-prefooter .subscribe-form .form-control {
+      font-size: 12px;
+      padding: 0 14px;
+      height: 36px; }
+    .page-prefooter .subscribe-form .btn {
+      height: 34px;
+      text-transform: uppercase;
+      padding: 7px 16px; }
+  .page-prefooter .social-icons {
+    padding-top: 9px; }
+    .page-prefooter .social-icons li {
+      opacity: 0.35 ;
+      filter: alpha(opacity=35) ; }
+      .page-prefooter .social-icons li:hover {
+        opacity: 1 ;
+        filter: alpha(opacity=100) ; }
+  .page-prefooter p,
+  .page-prefooter address {
+    margin: 0; }
+
+/* Footer */
+.page-footer {
+  font-size: 13px;
+  font-weight: 300;
+  padding: 17px 0; }
+  .page-footer a {
+    color: #e6e6e6; }
+    .page-footer a:hover {
+      color: #f2f2f2; }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-prefooter {
+    padding-bottom: 10px; }
+    .page-prefooter .footer-block {
+      margin-bottom: 20px; }
+    .page-prefooter > .container {
+      width: 100%;
+      max-width: none !important;
+      margin: 0 !important; }
+  .page-footer > .container {
+    width: 100%;
+    max-width: none !important;
+    margin: 0 !important; } }
+
+/* Scroll Top */
+.scroll-to-top {
+  padding: 2px;
+  text-align: center;
+  position: fixed;
+  z-index: 10001;
+  bottom: 5px;
+  display: none;
+  right: 20px; }
+  .scroll-to-top > i {
+    display: inline-block;
+    font-size: 32px;
+    opacity: 0.7 ;
+    filter: alpha(opacity=70) ; }
+  .scroll-to-top:hover {
+    cursor: pointer; }
+    .scroll-to-top:hover > i {
+      opacity: 1 ;
+      filter: alpha(opacity=100) ; }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .scroll-to-top {
+    right: 10px; }
+    .scroll-to-top > i {
+      font-size: 28px; } }
+
+/***
+Theme Panel
+***/
+.btn-theme-panel {
+  margin-top: 25px; }
+  .btn-theme-panel .btn {
+    opacity: 0.6 ;
+    filter: alpha(opacity=60) ;
+    padding: 0 6px; }
+    .btn-theme-panel .btn > i {
+      font-size: 24px;
+      color: #acbac6; }
+    .btn-theme-panel .btn:hover {
+      opacity: 1 ;
+      filter: alpha(opacity=100) ; }
+  .btn-theme-panel.open .btn {
+    opacity: 1 ;
+    filter: alpha(opacity=100) ; }
+
+.theme-panel {
+  z-index: 1000;
+  min-width: 675px;
+  padding: 20px 10px;
+  font-family: "Open Sans", sans-serif; }
+  .theme-panel h3 {
+    margin: 8px 0 8px 0;
+    font-size: 15px;
+    padding-left: 12px; }
+  .theme-panel .seperator {
+    border-left: 1px solid #EFF2F4; }
+  .theme-panel .theme-colors {
+    list-style: none;
+    padding: 0;
+    margin: 0; }
+    .theme-panel .theme-colors > li.theme-color {
+      padding: 8px 12px; }
+      .theme-panel .theme-colors > li.theme-color:hover, .theme-panel .theme-colors > li.theme-color.active {
+        background: #f5f7f8; }
+      .theme-panel .theme-colors > li.theme-color:hover {
+        cursor: pointer; }
+      .theme-panel .theme-colors > li.theme-color > .theme-color-view {
+        float: left;
+        margin-top: 0px;
+        margin-right: 8px;
+        display: inline-block;
+        border-radius: 10px !important;
+        height: 20px;
+        width: 20px; }
+      .theme-panel .theme-colors > li.theme-color > .theme-color-name {
+        display: inline-block;
+        color: #777;
+        font-size: 14px;
+        font-weight: 300;
+        padding-top: -4px; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-default .theme-color-view {
+        background: #32c5d2; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-red-sunglo .theme-color-view {
+        background: #E26A6A; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-red-intense .theme-color-view {
+        background: #E35B5A; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-blue-hoki .theme-color-view {
+        background: #67809F; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-blue-steel .theme-color-view {
+        background: #4B77BE; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-green-haze .theme-color-view {
+        background: #44B6AE; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-purple-plum .theme-color-view {
+        background: #8775A7; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-purple-studio .theme-color-view {
+        background: #8E44AD; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-yellow-orange .theme-color-view {
+        background: #F2784B; }
+      .theme-panel .theme-colors > li.theme-color.theme-color-yellow-crusta .theme-color-view {
+        background: #F3C200; }
+  .theme-panel .theme-settings {
+    list-style: none;
+    padding: 0;
+    margin: 0; }
+    .theme-panel .theme-settings > li {
+      padding: 8px 12px;
+      font-size: 14px;
+      font-weight: 300;
+      color: #777; }
+      .theme-panel .theme-settings > li .form-control {
+        color: #777;
+        margin-top: -3px;
+        float: right; }
+
+@media (max-width: 767px) {
+  /* 767px */
+  .theme-panel {
+    left: 20px;
+    right: 20px;
+    min-width: 285px; }
+    .theme-panel .seperator {
+      border: 0; }
+    .theme-panel .theme-settings .form-control {
+      width: 105px !important; } }
+
+/* Page Portlet Fullscreen */
+.page-portlet-fullscreen .page-quick-sidebar-wrapper,
+.page-portlet-fullscreen .page-quick-sidebar-toggler {
+  z-index: -1; }
+
+/* Quick sidebar toggler */
+.page-quick-sidebar-toggler {
+  overflow: hidden;
+  z-index: 99999;
+  display: none;
+  width: 28px;
+  height: 27px;
+  position: fixed;
+  top: 10px;
+  right: 15px;
+  text-align: center;
+  padding-top: 6px; }
+  .page-quick-sidebar-toggler:hover {
+    background: #303a43; }
+  .page-quick-sidebar-open .page-quick-sidebar-toggler {
+    display: inline-block; }
+    .page-quick-sidebar-open .page-quick-sidebar-toggler:hover {
+      background: none; }
+  .page-quick-sidebar-toggler > i {
+    color: #99a8b5;
+    font-size: 17px; }
+    .page-quick-sidebar-toggler > i:hover {
+      color: #fff !important; }
+    .page-quick-sidebar-open .page-quick-sidebar-toggler > i:before {
+      content: ""/*rtl:""*/; }
+
+/* Quick sidebar wrapper */
+.page-quick-sidebar-wrapper {
+  transition: right 0.3s;
+  z-index: 9999;
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  width: 320px;
+  right: -320px;
+  overflow: hidden;
+  color: #99a8b5;
+  background: #21282e; }
+  .page-quick-sidebar-open .page-quick-sidebar-wrapper {
+    transition: right 0.3s;
+    right: 0; }
+  .page-quick-sidebar-wrapper .page-quick-sidebar {
+    background: #21282e;
+    /* Quick sidebar tabs content */
+    /* Quick sidebar general list heading */
+    /* Quick sidebar general list-items */
+    /* Inner content */
+    /* Quick sidebar list */
+    /* Quick sidebar list item */
+    /* Quick sidebar list item shown */
+    /* Quick sidebar chat */
+    /* Quick sidebar alerts */
+    /* Quick sidebar settings */ }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs {
+      margin: 0;
+      padding: 0;
+      border: 0; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li {
+        display: table-cell !important;
+        width: 1%  !important;
+        padding: 0;
+        margin: 0;
+        float: none; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li > a {
+          position: relative;
+          display: block;
+          text-align: center;
+          border: 0;
+          height: auto;
+          font-size: 14px;
+          padding: 45px 15px 8px;
+          text-transform: uppercase;
+          background: none;
+          margin-right: 0;
+          color: #90a1af;
+          border: 0;
+          border-bottom: 3px solid rgba(243, 86, 93, 0.3);
+          -webkit-border-radius: 0;
+          -moz-border-radius: 0;
+          -ms-border-radius: 0;
+          -o-border-radius: 0;
+          border-radius: 0;
+          outline: none !important; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li > a > .badge {
+            position: absolute;
+            top: 45px;
+            right: 3px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li.active > a, .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li:hover > a {
+          border: 0;
+          border-bottom: 3px solid #f3565d;
+          background: none;
+          color: #fff;
+          text-decoration: none; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu {
+          border: 0;
+          background: #36424c;
+          box-shadow: 5px 5px rgba(97, 117, 135, 0.1);
+          margin-top: 8px;
+          margin-right: 20px; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu:before {
+            position: absolute;
+            top: -7px;
+            right: 19px;
+            display: inline-block !important;
+            border-right: 7px solid transparent;
+            border-left: 7px solid transparent;
+            border-bottom: 7px solid #36424c;
+            content: ''; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu:after {
+            position: absolute;
+            top: -6px;
+            right: 20px;
+            display: inline-block !important;
+            border-right: 6px solid transparent;
+            border-left: 6px solid transparent;
+            border-bottom: 7px solid #36424c;
+            content: ''; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li > a {
+            padding: 10px 15px;
+            color: #99a8b5; }
+            .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li > a > i {
+              color: #93a3b1; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li:hover > a {
+            background: #3d4a55;
+            color: #99a8b5; }
+            .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li:hover > a > i {
+              color: #9babb8; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li.active > a {
+            background: #38444f;
+            color: #99a8b5; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li .dropdown-menu > li.divider {
+            background-color: #3d4a55; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .nav-tabs > li.open > a.dropdown-toggle {
+          border-bottom: 3px solid #f3565d;
+          background: none;
+          text-decoration: none;
+          color: #90a1af; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .tab-content {
+      margin: 0;
+      padding: 0; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .list-heading {
+      font-size: 16px;
+      margin: 10px 10px;
+      color: #6c8296; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .list-items {
+      margin: 0;
+      padding: 0;
+      list-style: none; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .list-items > li {
+        margin: 0;
+        padding: 15px;
+        background: none;
+        border-bottom-width: 1px;
+        border-bottom-style: solid;
+        border-bottom-color: #273037; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .list-items > li:hover {
+          background: #273037; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .list-items > li:last-child {
+          border-bottom: 0; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .list-items.borderless li {
+        border: 0; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .inner-content {
+      margin: 10px 10px; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-list {
+      position: absolute !important;
+      width: 320px !important;
+      transition: margin 0.3s; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-item {
+      width: 320px;
+      position: absolute !important;
+      width: 320px !important;
+      transition: margin 0.3s;
+      margin-left: 320px; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-item .page-quick-sidebar-nav {
+        padding: 15px 10px 0px 10px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-item .page-quick-sidebar-nav .page-quick-sidebar-back-to-list {
+          vertical-align: middle;
+          display: inline-block;
+          font-size: 14px;
+          color: #90a1af; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-item .page-quick-sidebar-nav .page-quick-sidebar-back-to-list:hover {
+            text-decoration: none; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-item .page-quick-sidebar-nav .page-quick-sidebar-back-to-list > i {
+            font-size: 17px;
+            line-height: 17px;
+            vertical-align: top;
+            margin-right: 3px; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-content-item-shown .page-quick-sidebar-list {
+      transition: margin 0.3s;
+      margin-left: -320px; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-content-item-shown .page-quick-sidebar-list .slimScrollBar,
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-content-item-shown .page-quick-sidebar-list .slimScrollRail {
+        display: none !important; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-content-item-shown .page-quick-sidebar-item {
+      transition: margin 0.3s;
+      margin-left: 0; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users {
+      padding: 10px 0;
+      position: relative; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media {
+        padding: 15px 15px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-object {
+          border-radius: 50% !important;
+          width: 45.71429px;
+          opacity: 0.8;
+          filter: alpha(opacity=80);
+          float: left;
+          margin-right: 10px; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-object:before, .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-object:after {
+            content: " ";
+            display: table; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-object:after {
+            clear: both; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media:hover {
+          cursor: pointer; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media:hover .media-object {
+            opacity: 1;
+            filter: alpha(opacity=100); }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-body .media-heading {
+          margin: 5px 0 0 0;
+          font-size: 14px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-body .media-heading-sub {
+          font-size: 11px;
+          text-transform: uppercase;
+          color: #657b8d; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-body .media-heading-small {
+          font-size: 10px;
+          color: #5d7081; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-users .media-list .media .media-status {
+          margin-top: 10px;
+          right: 10px;
+          position: absolute;
+          display: inline-block; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages {
+      padding: 0px 10px;
+      position: relative; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post {
+        transition: display 0.3s;
+        padding: 5px 0;
+        margin: 10px auto;
+        font-size: 13px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post .body {
+          color: #c3c3c3;
+          display: block; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post .avatar {
+          width: 45.71429px;
+          border-radius: 50% !important; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.in .avatar {
+          float: left;
+          margin-right: 10px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.out .avatar {
+          float: right;
+          margin-left: 10px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post .name {
+          font-size: 12px;
+          font-weight: 300;
+          color: #8496a7; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post .datetime {
+          font-size: 12px;
+          font-weight: 300;
+          color: #8496a7; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post .message {
+          display: block;
+          padding: 5px;
+          position: relative;
+          color: #90a1af;
+          background: #36424c; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.in .message {
+          text-align: left;
+          margin-left: 55px; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.in .message .arrow {
+            display: block;
+            position: absolute;
+            top: 9px;
+            left: -6px;
+            width: 0;
+            height: 0;
+            border-top: 6px solid transparent;
+            border-bottom: 6px solid transparent;
+            border-right-width: 6px;
+            border-right-style: solid;
+            border-right-color: #36424c; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.out .message {
+          margin-right: 55px;
+          text-align: right; }
+          .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.out .message .arrow {
+            display: block;
+            position: absolute;
+            top: 9px;
+            right: -6px;
+            border-top: 6px solid transparent;
+            border-bottom: 6px solid transparent;
+            border-left-width: 6px;
+            border-left-style: solid;
+            border-left-color: #36424c; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.out .name,
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-messages .post.out .datetime {
+          text-align: right; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-chat .page-quick-sidebar-chat-user .page-quick-sidebar-chat-user-form {
+      padding: 20px 10px 15px 10px; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-alerts .page-quick-sidebar-alerts-list {
+      padding: 10px 0;
+      position: relative; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-alerts .page-quick-sidebar-alerts-list .feeds li a {
+        color: #7e91a2; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-alerts .page-quick-sidebar-alerts-list .feeds li a .label {
+          margin-top: 5px; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-alerts .page-quick-sidebar-alerts-list .feeds li a .desc {
+          text-decoration: underline;
+          padding: 0;
+          color: #788c9e; }
+        .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-alerts .page-quick-sidebar-alerts-list .feeds li a .date {
+          color: #5d7081; }
+    .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-settings .page-quick-sidebar-settings-list {
+      padding: 10px 0;
+      position: relative; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-settings .page-quick-sidebar-settings-list .list-items li .bootstrap-switch {
+        margin-top: -3px;
+        float: right;
+        border: 0;
+        min-width: 59px; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-settings .page-quick-sidebar-settings-list .list-items li .form-control {
+        width: 75px !important;
+        padding: 4px 4px !important;
+        float: right;
+        border: 0;
+        margin-top: -4px; }
+      .page-quick-sidebar-wrapper .page-quick-sidebar .page-quick-sidebar-settings .page-quick-sidebar-settings-list .list-items li select.form-control {
+        padding: 4px 0px !important; }
+
+.quick-nav {
+  position: fixed;
+  z-index: 10103;
+  top: 50%;
+  right: 10px;
+  margin-top: -230px;
+  pointer-events: none; }
+  .quick-nav .quick-nav-bg {
+    /* this is the stretching navigation background */
+    position: absolute;
+    z-index: 10102;
+    top: 0;
+    right: 0;
+    width: 60px;
+    height: 60px;
+    border-radius: 30px !important;
+    background: #36C6D3;
+    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
+    webkit-transition: height .2s, box-shadow .2s;
+    -moz-transition: height .2s, box-shadow .2s;
+    -ms-transition: height .2s, box-shadow .2s;
+    -o-transition: height .2s, box-shadow .2s;
+    transition: height .2s, box-shadow .2s; }
+  .quick-nav.nav-is-visible {
+    pointer-events: auto; }
+  .quick-nav.nav-is-visible .quick-nav-bg {
+    height: 100%;
+    box-shadow: 0 6px 30px rgba(0, 0, 0, 0.2); }
+
+.quick-nav-trigger {
+  position: absolute;
+  z-index: 10103;
+  top: 0;
+  right: 0;
+  height: 60px;
+  width: 60px;
+  border-radius: 50% !important;
+  overflow: hidden;
+  white-space: nowrap;
+  color: transparent;
+  pointer-events: auto; }
+  .quick-nav-trigger span,
+  .quick-nav-trigger span::after,
+  .quick-nav-trigger span::before {
+    /* this is the hamburger icon */
+    position: absolute;
+    width: 16px;
+    height: 2px;
+    background-color: #ffffff; }
+  .quick-nav-trigger span {
+    /* middle line of the hamburger icon */
+    webkit-transition: background-color 0.2s;
+    -moz-transition: background-color 0.2s;
+    -ms-transition: background-color 0.2s;
+    -o-transition: background-color 0.2s;
+    transition: background-color 0.2s;
+    left: 50%;
+    top: 50%;
+    bottom: auto;
+    right: auto;
+    webkit-transform: translateX(-50%) translateY(-50%);
+    -moz-transform: translateX(-50%) translateY(-50%);
+    -ms-transform: translateX(-50%) translateY(-50%);
+    -o-transform: translateX(-50%) translateY(-50%);
+    transform: translateX(-50%) translateY(-50%); }
+  .quick-nav-trigger span::after,
+  .quick-nav-trigger span::before {
+    /* top and bottom lines of the hamburger icon */
+    content: '';
+    top: 0;
+    left: 0;
+    -webkit-backface-visibility: hidden;
+    -moz-backface-visibility: hidden;
+    backface-visibility: hidden;
+    webkit-transition: transform 0.2s;
+    -moz-transition: transform 0.2s;
+    -ms-transition: transform 0.2s;
+    -o-transition: transform 0.2s;
+    transition: transform 0.2s; }
+  .quick-nav-trigger span::before {
+    webkit-transform: translateY(-6px);
+    -moz-transform: translateY(-6px);
+    -ms-transform: translateY(-6px);
+    -o-transform: translateY(-6px);
+    transform: translateY(-6px); }
+  .quick-nav-trigger span::after {
+    webkit-transform: translateY(6px);
+    -moz-transform: translateY(6px);
+    -ms-transform: translateY(6px);
+    -o-transform: translateY(6px);
+    transform: translateY(6px); }
+  .no-touch .quick-nav-trigger:hover ~ .quick-nav-bg {
+    box-shadow: 0 6px 30px rgba(0, 0, 0, 0.2); }
+  .nav-is-visible .quick-nav-trigger span {
+    background-color: transparent; }
+  .nav-is-visible .quick-nav-trigger span::before {
+    webkit-transform: rotate(-45deg);
+    -moz-transform: rotate(-45deg);
+    -ms-transform: rotate(-45deg);
+    -o-transform: rotate(-45deg);
+    transform: rotate(-45deg); }
+  .nav-is-visible .quick-nav-trigger span::after {
+    webkit-transform: rotate(45deg);
+    -moz-transform: rotate(45deg);
+    -ms-transform: rotate(45deg);
+    -o-transform: rotate(45deg);
+    transform: rotate(45deg); }
+
+.quick-nav ul {
+  position: relative;
+  z-index: 10103;
+  padding: 60px 0 0;
+  visibility: hidden;
+  webkit-transition: visibility 0.3s;
+  -moz-transition: visibility 0.3s;
+  -ms-transition: visibility 0.3s;
+  -o-transition: visibility 0.3s;
+  transition: visibility 0.3s;
+  text-align: right;
+  list-style: none; }
+  .quick-nav ul > li a {
+    position: relative;
+    display: block;
+    height: 50px;
+    line-height: 50px;
+    padding: 0 calc(1em + 60px) 0 1em;
+    font-size: 1.4rem;
+    webkit-transition: color 0.2s;
+    -moz-transition: color 0.2s;
+    -ms-transition: color 0.2s;
+    -o-transition: color 0.2s;
+    transition: color 0.2s; }
+    .quick-nav ul > li a:hover {
+      text-decoration: none; }
+      .quick-nav ul > li a:hover > span {
+        text-decoration: none; }
+    .quick-nav ul > li a > i {
+      /* navigation item icons */
+      content: '';
+      position: absolute;
+      height: 16px;
+      width: 16px;
+      font-size: 18px;
+      right: 24px;
+      top: 16px;
+      color: #ebebeb; }
+    .quick-nav ul > li a::before {
+      /* line visible next to the active navigation item */
+      content: '';
+      position: absolute;
+      width: 3px;
+      height: 16px;
+      top: 50%;
+      right: 60px;
+      webkit-transform: translateX(3px) translateY(-50%) scaleY(0);
+      -moz-transform: translateX(3px) translateY(-50%) scaleY(0);
+      -ms-transform: translateX(3px) translateY(-50%) scaleY(0);
+      -o-transform: translateX(3px) translateY(-50%) scaleY(0);
+      transform: translateX(3px) translateY(-50%) scaleY(0);
+      background-color: #FF3F3F; }
+  .quick-nav ul > li span {
+    /* navigation item labels */
+    color: #ebebeb;
+    font-weight: 400;
+    display: block;
+    opacity: 0;
+    webkit-transform: translateX(-25px);
+    -moz-transform: translateX(-25px);
+    -ms-transform: translateX(-25px);
+    -o-transform: translateX(-25px);
+    transform: translateX(-25px); }
+  .quick-nav ul > li:last-child {
+    padding-bottom: 10px; }
+
+.quick-nav.nav-is-visible ul {
+  visibility: visible; }
+  .quick-nav.nav-is-visible ul a::after {
+    /* navigation item icons */
+    webkit-transform: translateY(-50%) scale(1);
+    -moz-transform: translateY(-50%) scale(1);
+    -ms-transform: translateY(-50%) scale(1);
+    -o-transform: translateY(-50%) scale(1);
+    transform: translateY(-50%) scale(1);
+    -webkit-animation: scaleIn 0.15s backwards;
+    -o-animation: scaleIn 0.15s backwards;
+    animation: scaleIn 0.15s backwards;
+    webkit-transition: opacity 0.2s;
+    -moz-transition: opacity 0.2s;
+    -ms-transition: opacity 0.2s;
+    -o-transition: opacity 0.2s;
+    transition: opacity 0.2s; }
+  .quick-nav.nav-is-visible ul a:hover::after {
+    opacity: 1; }
+  .quick-nav.nav-is-visible ul a:hover::before {
+    webkit-transform: translateX(3px) translateY(-50%) scaleY(2);
+    -moz-transform: translateX(3px) translateY(-50%) scaleY(2);
+    -ms-transform: translateX(3px) translateY(-50%) scaleY(2);
+    -o-transform: translateX(3px) translateY(-50%) scaleY(2);
+    transform: translateX(3px) translateY(-50%) scaleY(2);
+    webkit-transition: transform 0.15s 0.3s;
+    -moz-transition: transform 0.15s 0.3s;
+    -ms-transition: transform 0.15s 0.3s;
+    -o-transition: transform 0.15s 0.3s;
+    transition: transform 0.15s 0.3s; }
+  .quick-nav.nav-is-visible ul a:hover > span {
+    color: white; }
+  .quick-nav.nav-is-visible ul a:hover > i {
+    color: #fafafa; }
+  .quick-nav.nav-is-visible ul span {
+    opacity: 1;
+    webkit-transform: translateX(0);
+    -moz-transform: translateX(0);
+    -ms-transform: translateX(0);
+    -o-transform: translateX(0);
+    transform: translateX(0);
+    -webkit-animation: slideIn 0.15s backwards;
+    -o-animation: slideIn 0.15s backwards;
+    animation: slideIn 0.15s backwards;
+    webkit-transition: transform 0.2s;
+    -moz-transition: transform 0.2s;
+    -ms-transition: transform 0.2s;
+    -o-transition: transform 0.2s;
+    transition: transform 0.2s; }
+  .no-touch .quick-nav.nav-is-visible ul a:hover::after {
+    opacity: 1; }
+  .no-touch .quick-nav.nav-is-visible ul a:hover span {
+    webkit-transform: translateX(-5px);
+    -moz-transform: translateX(-5px);
+    -ms-transform: translateX(-5px);
+    -o-transform: translateX(-5px);
+    transform: translateX(-5px); }
+
+.quick-nav-overlay {
+  display: none;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+  position: fixed;
+  z-index: 10101;
+  background: transparent; }
+
+.quick-nav.nav-is-visible + .quick-nav-overlay {
+  background: rgba(0, 0, 0, 0.8);
+  display: block;
+  -webkit-transition: background .7s ease-out;
+  -moz-transition: background .7s ease-out;
+  -o-transition: background .7s ease-out;
+  transition: background .7s ease-out; }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .quick-nav {
+    top: 120px;
+    margin-top: 0; } }
+
+/***  
+Page Loading      
+***/
+.page-on-load {
+  background: #fefefe; }
+  .page-on-load .page-header,
+  .page-on-load .page-container,
+  .page-on-load .page-prefooter,
+  .page-on-load .page-footer,
+  .page-on-load > .clearfix {
+    display: none;
+    transition: all 2s; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/layout.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/blue-hoki.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #67809F !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #67809F; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #67809F;
+    border-color: #67809F; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #67809F;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #67809F; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #67809F; }
+  .page-prefooter a {
+    color: #67809F; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #7088a5;
+    border-color: #7088a5; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #586e8b;
+      border-color: #3a495c; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #586e8b;
+      border-color: #546984; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #586e8b;
+      border-color: #546984; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #4a5d75;
+        border-color: #3a495c; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #7088a5;
+      border-color: #7088a5; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #7088a5;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #67809F !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #67809F !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #67809F !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #67809F !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #67809F !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #67809F !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #778da9 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #67809F; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #566c88; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #778da9; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/blue-hoki.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/blue-steel.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #4B77BE !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #4B77BE; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #4B77BE;
+    border-color: #4B77BE; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #4B77BE;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #4B77BE; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #4B77BE; }
+  .page-prefooter a {
+    color: #4B77BE; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #567fc2;
+    border-color: #567fc2; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #3d66a8;
+      border-color: #294470; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #3d66a8;
+      border-color: #3a61a1; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #3d66a8;
+      border-color: #3a61a1; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #33568e;
+        border-color: #294470; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #567fc2;
+      border-color: #567fc2; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #567fc2;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #4B77BE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #4B77BE !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #4B77BE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #4B77BE !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #4B77BE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #4B77BE !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #5e85c5 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #4B77BE; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #3b64a5; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #5e85c5; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/blue-steel.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/default.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #32c5d2 !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #32c5d2; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #32c5d2;
+    border-color: #32c5d2; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #32c5d2;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #32c5d2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #32c5d2; }
+  .page-prefooter a {
+    color: #32c5d2; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #3fc9d5;
+    border-color: #3fc9d5; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #28adb9;
+      border-color: #1b727a; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #28adb9;
+      border-color: #27a5b0; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #28adb9;
+      border-color: #27a5b0; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #22929b;
+        border-color: #1b727a; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #3fc9d5;
+      border-color: #3fc9d5; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #3fc9d5;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #32c5d2 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #32c5d2 !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #32c5d2 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #32c5d2 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #32c5d2 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #32c5d2 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #47cbd7 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #32c5d2; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #27a9b4; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #47cbd7; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/default.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/green-haze.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #44B6AE !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #44B6AE; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #44B6AE;
+    border-color: #44B6AE; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #44B6AE;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #44B6AE; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #44B6AE; }
+  .page-prefooter a {
+    color: #44B6AE; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #4dbcb5;
+    border-color: #4dbcb5; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #3a9c95;
+      border-color: #256460; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #3a9c95;
+      border-color: #38958e; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #3a9c95;
+      border-color: #38958e; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #31827c;
+        border-color: #256460; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #4dbcb5;
+      border-color: #4dbcb5; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #4dbcb5;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #44B6AE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #44B6AE !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #44B6AE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #44B6AE !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #44B6AE !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #44B6AE !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #54bfb8 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #44B6AE; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #399892; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #54bfb8; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/green-haze.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/purple-plum.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #8775A7 !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #8775A7; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #8775A7;
+    border-color: #8775A7; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #8775A7;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #8775A7; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #8775A7; }
+  .page-prefooter a {
+    color: #8775A7; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #8f7ead;
+    border-color: #8f7ead; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #746198;
+      border-color: #514369; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #746198;
+      border-color: #705d91; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #746198;
+      border-color: #705d91; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #645382;
+        border-color: #514369; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #8f7ead;
+      border-color: #8f7ead; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #8f7ead;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #8775A7 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #8775A7 !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #8775A7 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #8775A7 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #8775A7 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #8775A7 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #9585b1 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #8775A7; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #725f95; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #9585b1; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/purple-plum.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/purple-studio.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #8E44AD !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #8E44AD; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #8E44AD;
+    border-color: #8E44AD; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #8E44AD;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #8E44AD; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #8E44AD; }
+  .page-prefooter a {
+    color: #8E44AD; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #9749b7;
+    border-color: #9749b7; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #793a93;
+      border-color: #4c245c; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #793a93;
+      border-color: #73378c; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #793a93;
+      border-color: #73378c; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #64307a;
+        border-color: #4c245c; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #9749b7;
+      border-color: #9749b7; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #9749b7;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #8E44AD !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #8E44AD !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #8E44AD !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #8E44AD !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #8E44AD !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #8E44AD !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #9b50ba !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #8E44AD; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #763890; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #9b50ba; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/purple-studio.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/red-intense.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #E35B5A !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #E35B5A; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #E35B5A;
+    border-color: #E35B5A; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #E35B5A;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #E35B5A; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #E35B5A; }
+  .page-prefooter a {
+    color: #E35B5A; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #e56867;
+    border-color: #e56867; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #de3d3b;
+      border-color: #af1f1e; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #de3d3b;
+      border-color: #dc3433; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #de3d3b;
+      border-color: #dc3433; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #d22524;
+        border-color: #af1f1e; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #e56867;
+      border-color: #e56867; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #e56867;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #E35B5A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #E35B5A !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #E35B5A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #E35B5A !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #E35B5A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #E35B5A !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #e77170 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #E35B5A; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #dd3837; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #e77170; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/red-intense.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/red-sunglo.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #E26A6A !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #E26A6A; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #E26A6A;
+    border-color: #E26A6A; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #E26A6A;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #E26A6A; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #E26A6A; }
+  .page-prefooter a {
+    color: #E26A6A; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #e47777;
+    border-color: #e47777; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #dc4c4c;
+      border-color: #b82424; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #dc4c4c;
+      border-color: #db4444; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #dc4c4c;
+      border-color: #db4444; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #d62e2e;
+        border-color: #b82424; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #e47777;
+      border-color: #e47777; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #e47777;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #E26A6A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #E26A6A !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #E26A6A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #E26A6A !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #E26A6A !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #E26A6A !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #e67f7f !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #E26A6A; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #db4848; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #e67f7f; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/red-sunglo.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/yellow-crusta.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #F3C200 !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #F3C200; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #F3C200;
+    border-color: #F3C200; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #F3C200;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #F3C200; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #F3C200; }
+  .page-prefooter a {
+    color: #F3C200; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #ffcc03;
+    border-color: #ffcc03; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #cfa500;
+      border-color: #836800; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #cfa500;
+      border-color: #c59d00; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #cfa500;
+      border-color: #c59d00; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #ac8900;
+        border-color: #836800; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #ffcc03;
+      border-color: #ffcc03; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #ffcc03;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #F3C200 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #F3C200 !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #F3C200 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #F3C200 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #F3C200 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #F3C200 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #ffce0e !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #F3C200; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #caa100; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #ffce0e; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/yellow-crusta.min.css


+ 484 - 0
public/assets/layouts/layout3/css/themes/yellow-orange.css

@@ -0,0 +1,484 @@
+/* Cubic Bezier Transition */
+/****
+Boby
+****/
+body {
+  background-color: #fff; }
+  body.page-md {
+    background: white; }
+
+/******
+General 
+******/
+/* Theme Font Color */
+.theme-font {
+  color: #F2784B !important; }
+
+/* Pace - Page Progress */
+.pace .pace-progress {
+  background: #F2784B; }
+
+/* Theme Light Portlet */
+.portlet.light .btn.btn-circle.btn-icon-only.btn-default {
+  border-color: #bbc2ce; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default > i {
+    font-size: 13px;
+    color: #a6b0bf; }
+  .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active {
+    color: #fff;
+    background: #F2784B;
+    border-color: #F2784B; }
+    .portlet.light .btn.btn-circle.btn-icon-only.btn-default:hover > i, .portlet.light .btn.btn-circle.btn-icon-only.btn-default.active > i {
+      color: #fff; }
+
+/******
+Page Header 
+******/
+.page-header {
+  background-color: #fff;
+  /* Page Header Top */
+  /* Page Header Menu */ }
+  .page-header .page-header-top {
+    /* Top menu */ }
+    .page-header .page-header-top.fixed {
+      background: #fff !important;
+      box-shadow: 0px 1px 10px 0px rgba(50, 50, 50, 0.2); }
+    .page-header .page-header-top .top-menu .navbar-nav {
+      /* Top Links */
+      /* Separator */
+      /* Extended Dropdowns */
+      /* Notification */
+      /* Inbox */
+      /* Tasks */
+      /* User */
+      /* Language */
+      /* Dark version */ }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle > i {
+        color: #C1CCD1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:active > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:focus > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle:hover > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown > .dropdown-toggle .badge.badge-default {
+        background-color: #f36a5a;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle {
+        background-color: #fff; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:active .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown:focus .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown.open .dropdown-toggle > i {
+          color: #a4b4bb; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-separator .separator {
+        border-left: 1px solid #E3E8EC; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu:after {
+        border-bottom-color: #f7f8fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external {
+        background: #f7f8fa; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > h3 {
+          color: #6f949c; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a {
+          color: #337ab7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu > li.external > a:hover {
+            color: #23527c;
+            text-decoration: none; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a {
+        border-bottom: 1px solid #EFF2F6 !important;
+        color: #222222; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-extended .dropdown-menu .dropdown-menu-list > li > a:hover {
+          background: #f8f9fa; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #f1f1f1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #e4e4e4; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .circle {
+        background-color: #F2784B;
+        color: #ffffff; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox > .dropdown-toggle > .corner {
+        border-color: transparent transparent transparent #F2784B; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-inbox .dropdown-menu .dropdown-menu-list .subject .from {
+        color: #5b9bd1; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-tasks .dropdown-menu .dropdown-menu-list .progress {
+        background-color: #dfe2e9; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > .username {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-toggle > i {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user > .dropdown-menu {
+        width: 195px; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user:hover > .dropdown-toggle > i, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > .username,
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-user.open > .dropdown-toggle > i {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language > .dropdown-toggle > .langname {
+        color: #8ea3b6; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language:hover > .dropdown-toggle > .langname, .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-language.open > .dropdown-toggle > .langname {
+        color: #7089a2; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu {
+        background: #2e343b;
+        border: 0; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu:after {
+          border-bottom-color: #2e343b; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external {
+          background: #272c33; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > h3 {
+            color: #a2abb7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu > li.external > a:hover {
+            color: #5496cf; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a,
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a {
+          color: #aaafb7;
+          border-bottom: 1px solid #3b434c !important; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a > i,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a > i {
+            color: #6FA7D7; }
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a:hover,
+          .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu .dropdown-menu-list > li a:hover {
+            background: #373e47; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li a {
+          border-bottom: 0 !important; }
+        .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-dark .dropdown-menu.dropdown-menu-default > li.divider {
+          background: #3b434c; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a .time {
+        background: #23272d; }
+      .page-header .page-header-top .top-menu .navbar-nav > li.dropdown-notification.dropdown-dark .dropdown-menu .dropdown-menu-list > li > a:hover .time {
+        background: #181b1e; }
+  .page-header .page-header-menu {
+    background: #444d58;
+    /* Default Mega Menu */
+    /* Light Mega Menu */
+    /* Header seaech box */ }
+    .page-header .page-header-menu.fixed {
+      box-shadow: 0px 1px 10px 0px rgba(68, 77, 88, 0.2); }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #ced5de; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active {
+        color: #ffffff;
+        background: #55616f !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+          color: #ced5de; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #ced5de;
+          background: #5d6b7a; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #606d7d; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-submenu > a:after {
+        color: #6fa7d7; }
+    .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav {
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2); }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+          color: #555; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a {
+        color: #BCC2CB; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover {
+        color: #ffffff;
+        background: #55616f; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > a:hover > i {
+          color: #ffffff; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a {
+        color: #333 !important;
+        background: #fafafc !important; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li:hover > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.open > a > i {
+          color: #333 !important; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a,
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover {
+        color: #f1f1f1;
+        background: #4E5966; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a > i,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li.current > a:hover > i {
+          color: #BCC2CB; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu {
+        box-shadow: 5px 5px rgba(85, 97, 111, 0.2);
+        background: #fafafc; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a {
+          color: #000; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li:hover > a > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a,
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover {
+          color: #000;
+          background: #eaeaf2; }
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a > i,
+          .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+            color: #6fa7d7; }
+        .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li .dropdown-menu li.divider {
+          background-color: #ededf4; }
+      .page-header .page-header-menu .hor-menu.hor-menu-light .navbar-nav > li > .dropdown-menu {
+        border: 1px solid #eaeaf2;
+        border-top: 0; }
+    .page-header .page-header-menu .search-form {
+      background: #38414c; }
+      .page-header .page-header-menu .search-form .input-group {
+        background: #38414c; }
+        .page-header .page-header-menu .search-form .input-group .form-control {
+          color: #616d7d;
+          background: #38414c; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-moz-placeholder {
+            color: #5f6a7a;
+            opacity: 1; }
+          .page-header .page-header-menu .search-form .input-group .form-control:-ms-input-placeholder {
+            color: #5f6a7a; }
+          .page-header .page-header-menu .search-form .input-group .form-control::-webkit-input-placeholder {
+            color: #5f6a7a; }
+        .page-header .page-header-menu .search-form .input-group .input-group-btn .btn.submit > i {
+          color: #616d7d; }
+
+/******
+Page Footer 
+******/
+.page-prefooter {
+  background: #48525e;
+  color: #a2abb7; }
+  .page-prefooter h2 {
+    color: #F2784B; }
+  .page-prefooter a {
+    color: #F2784B; }
+  .page-prefooter .subscribe-form .form-control {
+    background: #343b44;
+    border-color: #343b44;
+    color: #a2abb7; }
+    .page-prefooter .subscribe-form .form-control::-moz-placeholder {
+      color: #939eac;
+      opacity: 1; }
+    .page-prefooter .subscribe-form .form-control:-ms-input-placeholder {
+      color: #939eac; }
+    .page-prefooter .subscribe-form .form-control::-webkit-input-placeholder {
+      color: #939eac; }
+  .page-prefooter .subscribe-form .btn {
+    color: #fff;
+    background-color: #f38359;
+    border-color: #f38359; }
+    .page-prefooter .subscribe-form .btn:focus, .page-prefooter .subscribe-form .btn.focus {
+      color: #fff;
+      background-color: #f05f2a;
+      border-color: #bf3e0e; }
+    .page-prefooter .subscribe-form .btn:hover {
+      color: #fff;
+      background-color: #f05f2a;
+      border-color: #ef5820; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      color: #fff;
+      background-color: #f05f2a;
+      border-color: #ef5820; }
+      .page-prefooter .subscribe-form .btn:active:hover, .page-prefooter .subscribe-form .btn:active:focus, .page-prefooter .subscribe-form .btn:active.focus, .page-prefooter .subscribe-form .btn.active:hover, .page-prefooter .subscribe-form .btn.active:focus, .page-prefooter .subscribe-form .btn.active.focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:hover,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle:focus,
+      .open > .page-prefooter .subscribe-form .btn.dropdown-toggle.focus {
+        color: #fff;
+        background-color: #e54a11;
+        border-color: #bf3e0e; }
+    .page-prefooter .subscribe-form .btn:active, .page-prefooter .subscribe-form .btn.active,
+    .open > .page-prefooter .subscribe-form .btn.dropdown-toggle {
+      background-image: none; }
+    .page-prefooter .subscribe-form .btn.disabled:hover, .page-prefooter .subscribe-form .btn.disabled:focus, .page-prefooter .subscribe-form .btn.disabled.focus, .page-prefooter .subscribe-form .btn[disabled]:hover, .page-prefooter .subscribe-form .btn[disabled]:focus, .page-prefooter .subscribe-form .btn[disabled].focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:hover,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn:focus,
+    fieldset[disabled] .page-prefooter .subscribe-form .btn.focus {
+      background-color: #f38359;
+      border-color: #f38359; }
+    .page-prefooter .subscribe-form .btn .badge {
+      color: #f38359;
+      background-color: #fff; }
+
+.page-footer {
+  background: #3b434c;
+  color: #a2abb7; }
+
+/* Scroll Top */
+.scroll-to-top > i {
+  color: #657383;
+  font-size: 32px;
+  opacity: 0.7 ;
+  filter: alpha(opacity=70) ; }
+
+@media (min-width: 992px) {
+  /* 992px */
+  .page-header {
+    /* Page Header Menu */ }
+    .page-header .page-header-menu.fixed {
+      width: 100%;
+      position: fixed;
+      top: 0;
+      left: 0;
+      z-index: 9995; } }
+
+@media (max-width: 991px) {
+  /* 991px */
+  .page-header .page-header-menu {
+    background: #eff3f8;
+    /* Horizontal mega menu */ }
+    .page-header .page-header-menu .hor-menu .navbar-nav {
+      background: #fff !important;
+      /* Mega menu content */
+      /* Classic menu */ }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu {
+        box-shadow: none; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu {
+          border-right: none !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.mega-menu-dropdown > .dropdown-menu .mega-menu-content .mega-menu-submenu li > h3 {
+            color: #72808a; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li {
+        border-bottom: 1px solid #F0F0F0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:last-child {
+          border-bottom: 0; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li > a {
+          background: none !important;
+          color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a > i {
+            color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li > a:focus, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:active, .page-header .page-header-menu .hor-menu .navbar-nav > li > a:hover {
+            background: none !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a {
+          background: none !important;
+          color: #F2784B !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li:hover > a > i {
+            color: #F2784B !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a,
+        .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover {
+          color: #fff !important;
+          background: #F2784B !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a > i,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li.current > a:hover > i {
+            color: #fff !important; }
+        .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu {
+          border: 0 !important;
+          border-top: 1px solid #eee;
+          box-shadow: none !important;
+          background: #fff !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.divider {
+            border-bottom: 1px solid #F0F0F0; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:first-child {
+            margin-top: 1px; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a {
+            color: #666 !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li > a > i {
+              color: #666 !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a {
+            background: none !important;
+            color: #F2784B !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li:hover > a > i {
+              color: #F2784B !important; }
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a,
+          .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover {
+            color: #fff !important;
+            background: #F2784B !important; }
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.open > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.active > a:hover > i, .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a > i,
+            .page-header .page-header-menu .hor-menu .navbar-nav > li .dropdown-menu li.current > a:hover > i {
+              color: #fff !important; }
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.active > a:after,
+      .page-header .page-header-menu .hor-menu .navbar-nav > li.classic-menu-dropdown .dropdown-menu > li.dropdown-submenu.open > a:after {
+        color: #fff !important; }
+    .page-header .page-header-menu .hor-menu .nav {
+      border: 0 !important;
+      margin: 0 !important; }
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a,
+      .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover {
+        border: 0 !important;
+        margin: 0 !important;
+        color: #fff !important;
+        background: #f48a63 !important; }
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a > i,
+        .page-header .page-header-menu .hor-menu .nav .dropdown-submenu.open > a:hover > i {
+          color: #fff !important; }
+  .page-header .search-form {
+    background: #fff !important; }
+    .page-header .search-form .input-group {
+      background: #fff !important; }
+      .page-header .search-form .input-group .form-control {
+        background: #fff !important; }
+      .page-header .search-form .input-group .input-group-btn .btn.submit {
+        background: #F2784B; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit i {
+          color: #fff !important; }
+        .page-header .search-form .input-group .input-group-btn .btn.submit:hover, .page-header .search-form .input-group .input-group-btn .btn.submit:focus, .page-header .search-form .input-group .input-group-btn .btn.submit:active, .page-header .search-form .input-group .input-group-btn .btn.submit.active {
+          background: #ef5b25; } }
+
+@media (max-width: 480px) {
+  /* 480px */
+  .page-header {
+    /* Top menu */ }
+    .page-header .top-menu {
+      background-color: #fff; }
+      .page-header-fixed-mobile .page-header .top-menu {
+        background-color: #fff; }
+      .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+        background-color: white; }
+        .page-header-fixed-mobile .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle {
+          background: none; }
+        .page-header .top-menu .navbar-nav > li.dropdown-user .dropdown-toggle:hover {
+          background-color: #fff; } }
+
+/****
+ CSS3 Spinner Bar
+****/
+.page-spinner-bar > div,
+.block-spinner-bar > div {
+  background: #f48a63; }

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/css/themes/yellow-orange.min.css


BIN
public/assets/layouts/layout3/img/ajax-loading.gif


BIN
public/assets/layouts/layout3/img/ajax-modal-loading.gif


BIN
public/assets/layouts/layout3/img/avatar.png


BIN
public/assets/layouts/layout3/img/avatar1.jpg


BIN
public/assets/layouts/layout3/img/avatar10.jpg


BIN
public/assets/layouts/layout3/img/avatar11.jpg


BIN
public/assets/layouts/layout3/img/avatar2.jpg


BIN
public/assets/layouts/layout3/img/avatar3.jpg


BIN
public/assets/layouts/layout3/img/avatar4.jpg


BIN
public/assets/layouts/layout3/img/avatar5.jpg


BIN
public/assets/layouts/layout3/img/avatar6.jpg


BIN
public/assets/layouts/layout3/img/avatar7.jpg


BIN
public/assets/layouts/layout3/img/avatar8.jpg


BIN
public/assets/layouts/layout3/img/avatar9.jpg


BIN
public/assets/layouts/layout3/img/icon-color-close.png


BIN
public/assets/layouts/layout3/img/icon-color.png


BIN
public/assets/layouts/layout3/img/loading-spinner-blue.gif


BIN
public/assets/layouts/layout3/img/loading-spinner-default.gif


BIN
public/assets/layouts/layout3/img/loading-spinner-grey.gif


BIN
public/assets/layouts/layout3/img/loading.gif


BIN
public/assets/layouts/layout3/img/logo-big-white.png


BIN
public/assets/layouts/layout3/img/logo-big.png


BIN
public/assets/layouts/layout3/img/logo-blue-hoki.png


BIN
public/assets/layouts/layout3/img/logo-blue-steel.png


BIN
public/assets/layouts/layout3/img/logo-default.jpg


BIN
public/assets/layouts/layout3/img/logo-green-haze.png


BIN
public/assets/layouts/layout3/img/logo-purple-plum.png


BIN
public/assets/layouts/layout3/img/logo-purple-studio.png


BIN
public/assets/layouts/layout3/img/logo-red-intense.png


BIN
public/assets/layouts/layout3/img/logo-red-sunglo.png


BIN
public/assets/layouts/layout3/img/logo-yellow-crusta.png


BIN
public/assets/layouts/layout3/img/logo-yellow-orange.png


BIN
public/assets/layouts/layout3/img/logo.png


BIN
public/assets/layouts/layout3/img/menu-toggler.png


+ 179 - 0
public/assets/layouts/layout3/scripts/demo.js

@@ -0,0 +1,179 @@
+/**
+Demo script to handle the theme demo
+**/
+
+var Demo = function () {
+
+    // Handle Theme Settings
+    var handleTheme = function () {
+
+        var panel = $('.theme-panel');
+
+        if ($('.page-head > .container-fluid').size() === 1) {
+            $('.theme-setting-layout', panel).val("fluid");
+        } else {
+            $('.theme-setting-layout', panel).val("boxed");
+        }
+
+        if ($('.top-menu li.dropdown.dropdown-dark').size() > 0) {
+            $('.theme-setting-top-menu-style', panel).val("dark");
+        } else {
+            $('.theme-setting-top-menu-style', panel).val("light");
+        }
+
+        if ($('body').hasClass("page-header-top-fixed")) {
+            $('.theme-setting-top-menu-mode', panel).val("fixed");
+        } else {
+            $('.theme-setting-top-menu-mode', panel).val("not-fixed");
+        }
+
+        if ($('.hor-menu.hor-menu-light').size() > 0) {
+            $('.theme-setting-mega-menu-style', panel).val("light");
+        } else {
+            $('.theme-setting-mega-menu-style', panel).val("dark");
+        }
+
+        if ($('body').hasClass("page-header-menu-fixed")) {
+            $('.theme-setting-mega-menu-mode', panel).val("fixed");
+        } else {
+            $('.theme-setting-mega-menu-mode', panel).val("not-fixed");
+        }
+
+        //handle theme layout
+        var resetLayout = function () {
+            $("body").
+            removeClass("page-header-top-fixed").
+            removeClass("page-header-menu-fixed");
+
+            $('.page-header-top > .container-fluid').removeClass("container-fluid").addClass('container');
+            $('.page-header-menu > .container-fluid').removeClass("container-fluid").addClass('container');
+            $('.page-head > .container-fluid').removeClass("container-fluid").addClass('container');
+            $('.page-content > .container-fluid').removeClass("container-fluid").addClass('container');
+            $('.page-prefooter > .container-fluid').removeClass("container-fluid").addClass('container');
+            $('.page-footer > .container-fluid').removeClass("container-fluid").addClass('container');              
+        };
+
+        var setLayout = function () {
+
+            var layoutMode = $('.theme-setting-layout', panel).val();
+            var headerTopMenuStyle = $('.theme-setting-top-menu-style', panel).val();
+            var headerTopMenuMode = $('.theme-setting-top-menu-mode', panel).val();
+            var headerMegaMenuStyle = $('.theme-setting-mega-menu-style', panel).val();
+            var headerMegaMenuMode = $('.theme-setting-mega-menu-mode', panel).val();
+            
+            resetLayout(); // reset layout to default state
+
+            if (layoutMode === "fluid") {
+                $('.page-header-top > .container').removeClass("container").addClass('container-fluid');
+                $('.page-header-menu > .container').removeClass("container").addClass('container-fluid');
+                $('.page-head > .container').removeClass("container").addClass('container-fluid');
+                $('.page-content > .container').removeClass("container").addClass('container-fluid');
+                $('.page-prefooter > .container').removeClass("container").addClass('container-fluid');
+                $('.page-footer > .container').removeClass("container").addClass('container-fluid');
+
+                //App.runResizeHandlers();
+            }
+
+            if (headerTopMenuStyle === 'dark') {
+                $(".top-menu > .navbar-nav > li.dropdown").addClass("dropdown-dark");
+            } else {
+                $(".top-menu > .navbar-nav > li.dropdown").removeClass("dropdown-dark");
+            }
+
+            if (headerTopMenuMode === 'fixed') {
+                $("body").addClass("page-header-top-fixed");
+            } else {
+                $("body").removeClass("page-header-top-fixed");
+            }
+
+            if (headerMegaMenuStyle === 'light') {
+                $(".hor-menu").addClass("hor-menu-light");
+            } else {
+                $(".hor-menu").removeClass("hor-menu-light");
+            }
+
+            if (headerMegaMenuMode === 'fixed') {
+                $("body").addClass("page-header-menu-fixed");
+            } else {
+                $("body").removeClass("page-header-menu-fixed");
+            }          
+        };
+
+        // handle theme colors
+        var setColor = function (color) {
+            var color_ = (App.isRTL() ? color + '-rtl' : color);
+            $('#style_color').attr("href", Layout.getLayoutCssPath() + 'themes/' + color_ + ".min.css");
+            $('.page-logo img').attr("src", Layout.getLayoutImgPath() + 'logo-' + color + '.png');
+        };
+
+        $('.theme-colors > li', panel).click(function () {
+            var color = $(this).attr("data-theme");
+            setColor(color);
+            $('.theme-colors > li', panel).removeClass("active");
+            $(this).addClass("active");
+        });
+
+        $('.theme-setting-top-menu-mode', panel).change(function(){
+            var headerTopMenuMode = $('.theme-setting-top-menu-mode', panel).val();
+            var headerMegaMenuMode = $('.theme-setting-mega-menu-mode', panel).val();            
+
+            if (headerMegaMenuMode === "fixed") {
+                alert("The top menu and mega menu can not be fixed at the same time.");
+                $('.theme-setting-mega-menu-mode', panel).val("not-fixed");   
+                headerTopMenuMode = 'not-fixed';
+            }                
+        });
+
+        $('.theme-setting-mega-menu-mode', panel).change(function(){
+            var headerTopMenuMode = $('.theme-setting-top-menu-mode', panel).val();
+            var headerMegaMenuMode = $('.theme-setting-mega-menu-mode', panel).val();            
+
+            if (headerTopMenuMode === "fixed") {
+                alert("The top menu and mega menu can not be fixed at the same time.");
+                $('.theme-setting-top-menu-mode', panel).val("not-fixed");   
+                headerTopMenuMode = 'not-fixed';
+            }                
+        });
+
+        $('.theme-setting', panel).change(setLayout);
+    };
+
+    // handle theme style
+    var setThemeStyle = function(style) {
+        var file = (style === 'rounded' ? 'components-rounded' : 'components');
+        file = (App.isRTL() ? file + '-rtl' : file);
+
+        $('#style_components').attr("href", App.getGlobalCssPath() + file + ".min.css");
+
+        if (typeof Cookies !== "undefined") {
+            Cookies.set('layout-style-option', style);
+        }
+    };
+
+    return {
+
+        //main function to initiate the theme
+        init: function() {
+            // handles style customer tool
+            handleTheme();
+
+            // handle layout style change
+            $('.theme-panel .theme-setting-style').change(function() {
+                 setThemeStyle($(this).val());
+            });
+
+            // set layout style from cookie
+            if (typeof Cookies !== "undefined" && Cookies.get('layout-style-option') === 'rounded') {
+                setThemeStyle(Cookies.get('layout-style-option'));
+                $('.theme-panel .layout-style-option').val(Cookies.get('layout-style-option'));
+            }             
+        }
+    };
+
+}();
+
+if (App.isAngularJsApp() === false) {
+    jQuery(document).ready(function() {   
+        Demo.init();
+    });
+} 

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/scripts/demo.min.js


+ 296 - 0
public/assets/layouts/layout3/scripts/layout.js

@@ -0,0 +1,296 @@
+/**
+Core script to handle the entire theme and core functions
+**/
+
+var Layout = function () {
+
+    var layoutImgPath = 'layouts/layout3/img/';
+
+    var layoutCssPath = 'layouts/layout3/css/';
+
+    var resBreakpointMd = App.getResponsiveBreakpoint('md');
+
+    //* BEGIN:CORE HANDLERS *//
+    // this function handles responsive layout on screen size resize or mobile device rotate.
+
+    // Handles header
+    var handleHeader = function () {        
+        // handle search box expand/collapse        
+        $('.page-header').on('click', '.search-form', function (e) {
+            $(this).addClass("open");
+            $(this).find('.form-control').focus();
+
+            $('.page-header .search-form .form-control').on('blur', function (e) {
+                $(this).closest('.search-form').removeClass("open");
+                $(this).unbind("blur");
+            });
+        });
+
+        // handle hor menu search form on enter press
+        $('.page-header').on('keypress', '.hor-menu .search-form .form-control', function (e) {
+            if (e.which == 13) {
+                $(this).closest('.search-form').submit();
+                return false;
+            }
+        });
+
+        // handle header search button click
+        $('.page-header').on('mousedown', '.search-form.open .submit', function (e) {
+            e.preventDefault();
+            e.stopPropagation();
+            $(this).closest('.search-form').submit();
+        });
+
+        // handle scrolling to top on responsive menu toggler click when header is fixed for mobile view
+        $('body').on('click', '.page-header-top-fixed .page-header-top .menu-toggler', function(){
+            App.scrollTop();
+        });     
+    };
+
+    // Handles main menu
+    var handleMainMenu = function () {
+
+        // handle menu toggler icon click
+        $(".page-header .menu-toggler").on("click", function(event) {
+            if (App.getViewPort().width < resBreakpointMd) {
+                var menu = $(".page-header .page-header-menu");
+                if (menu.is(":visible")) {
+                    menu.slideUp(300);
+                } else {  
+                    menu.slideDown(300);
+                }
+
+                if ($('body').hasClass('page-header-top-fixed')) {
+                    App.scrollTop();
+                }
+            }
+        });
+
+        // handle sub dropdown menu click for mobile devices only
+        $(".hor-menu .menu-dropdown > a, .hor-menu .dropdown-submenu > a").on("click", function(e) {                
+            if (App.getViewPort().width < resBreakpointMd) {
+                if ($(this).next().hasClass('dropdown-menu')) {
+                    e.stopPropagation();
+                    if ($(this).parent().hasClass("opened")) {
+                        $(this).parent().removeClass("opened");
+                    } else {
+                        $(this).parent().addClass("opened");
+                    }
+                }
+            }
+        });
+
+        // close main menu on final link click for mobile mode
+        $(".hor-menu li > a").on("click", function(e) {
+            if (App.getViewPort().width < resBreakpointMd) {
+                if (!$(this).parent('li').hasClass('classic-menu-dropdown') && !$(this).parent('li').hasClass('mega-menu-dropdown')
+                    && !$(this).parent('li').hasClass('dropdown-submenu')) {
+                    $(".page-header .page-header-menu").slideUp(300);
+                     App.scrollTop();
+                }
+            }
+        });
+
+        // hold mega menu content open on click/tap. 
+        $(document).on('click', '.mega-menu-dropdown .dropdown-menu, .classic-menu-dropdown .dropdown-menu', function (e) {
+            e.stopPropagation();
+        });
+
+        // handle fixed mega menu(minimized) 
+        $(window).scroll(function() {                
+            var offset = 75;
+            if ($('body').hasClass('page-header-menu-fixed')) {
+                if ($(window).scrollTop() > offset){
+                    $(".page-header-menu").addClass("fixed");
+                } else {
+                    $(".page-header-menu").removeClass("fixed");  
+                }
+            }
+
+            if ($('body').hasClass('page-header-top-fixed')) {
+                if ($(window).scrollTop() > offset){
+                    $(".page-header-top").addClass("fixed");
+                } else {
+                    $(".page-header-top").removeClass("fixed");  
+                }
+            }
+        });
+    };
+
+    // Handle sidebar menu links
+    var handleMainMenuActiveLink = function(mode, el, $state) {
+        var url = encodeURI(location.hash).toLowerCase();    
+
+        var menu = $('.hor-menu');
+
+        if (mode === 'click' || mode === 'set') {
+            el = $(el);
+        } else if (mode === 'match') {
+            menu.find("li > a").each(function() {
+                var state = $(this).attr('ui-sref');
+                if ($state && state) {
+                    if ($state.is(state)) {
+                        el = $(this);
+                        return;
+                    }
+                } else {
+                    var path = $(this).attr('href');
+                    if (path) {
+                        // url match condition         
+                        path = path.toLowerCase();
+                        if (path.length > 1 && url.substr(1, path.length - 1) == path.substr(1)) {
+                            el = $(this);
+                            return;
+                        }
+                    }
+                }
+            });
+        }
+
+        if (!el || el.size() == 0) {
+            return;
+        }
+
+        if (el.attr('href') == 'javascript:;' ||
+            el.attr('ui-sref') == 'javascript:;' ||
+            el.attr('href') == '#' ||
+            el.attr('ui-sref') == '#'
+            ) {
+            return;
+        }      
+
+        // disable active states
+        menu.find('li.active').removeClass('active');
+        menu.find('li > a > .selected').remove();
+        menu.find('li.open').removeClass('open');
+
+        el.parents('li').each(function () {
+            $(this).addClass('active');
+
+            if ($(this).parent('ul.navbar-nav').size() === 1) {
+                $(this).find('> a').append('<span class="selected"></span>');
+            }
+        });
+    };
+
+    // Handles main menu on window resize
+    var handleMainMenuOnResize = function() {
+        // handle hover dropdown menu for desktop devices only
+        var width = App.getViewPort().width;
+        var menu = $(".page-header-menu");
+            
+        if (width >= resBreakpointMd) { 
+            $(".page-header-menu").css("display", "block");
+        } else if (width < resBreakpointMd) {
+            $(".page-header-menu").css("display", "none"); 
+        } 
+    };
+
+    var handleContentHeight = function() {
+        return;
+        var height;
+
+        if ($('body').height() < App.getViewPort().height) {            
+            height = App.getViewPort().height -
+                $('.page-header').outerHeight() - 
+                ($('.page-container').outerHeight() - $('.page-content').outerHeight()) -
+                $('.page-prefooter').outerHeight() - 
+                $('.page-footer').outerHeight();
+
+            $('.page-content').css('min-height', height);
+        }
+    };
+
+    // Handles the go to top button at the footer
+    var handleGoTop = function () {
+        var offset = 100;
+        var duration = 500;
+
+        if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {  // ios supported
+            $(window).bind("touchend touchcancel touchleave", function(e){
+               if ($(this).scrollTop() > offset) {
+                    $('.scroll-to-top').fadeIn(duration);
+                } else {
+                    $('.scroll-to-top').fadeOut(duration);
+                }
+            });
+        } else {  // general 
+            $(window).scroll(function() {
+                if ($(this).scrollTop() > offset) {
+                    $('.scroll-to-top').fadeIn(duration);
+                } else {
+                    $('.scroll-to-top').fadeOut(duration);
+                }
+            });
+        }
+        
+        $('.scroll-to-top').click(function(e) {
+            e.preventDefault();
+            $('html, body').animate({scrollTop: 0}, duration);
+            return false;
+        });
+    };
+
+    //* END:CORE HANDLERS *//
+
+    return {
+        
+        // Main init methods to initialize the layout
+        // IMPORTANT!!!: Do not modify the core handlers call order.
+
+        initHeader: function($state) {
+            handleHeader(); // handles horizontal menu    
+            handleMainMenu(); // handles menu toggle for mobile
+            App.addResizeHandler(handleMainMenuOnResize); // handle main menu on window resize
+
+            if (App.isAngularJsApp()) {      
+                handleMainMenuActiveLink('match', null, $state); // init sidebar active links 
+            }
+        },
+
+        initContent: function() {
+            handleContentHeight(); // handles content height 
+        },
+
+        initFooter: function() {
+            handleGoTop(); //handles scroll to top functionality in the footer
+        },
+
+        init: function () {            
+            this.initHeader();
+            this.initContent();
+            this.initFooter();
+        },
+
+        setMainMenuActiveLink: function(mode, el) {
+            handleMainMenuActiveLink(mode, el);
+        },
+
+        setAngularJsMainMenuActiveLink: function(mode, el, $state) {
+            handleMainMenuActiveLink(mode, el, $state);
+        },
+
+        closeMainMenu: function() {
+            $('.hor-menu').find('li.open').removeClass('open');
+
+            if (App.getViewPort().width < resBreakpointMd && $('.page-header-menu').is(":visible")) { // close the menu on mobile view while laoding a page 
+                $('.page-header .menu-toggler').click();
+            }
+        },
+
+        getLayoutImgPath: function() {
+            return App.getAssetsPath() + layoutImgPath;
+        },
+
+        getLayoutCssPath: function() {
+            return App.getAssetsPath() + layoutCssPath;
+        }
+    };
+
+}();
+
+if (App.isAngularJsApp() === false) {
+    jQuery(document).ready(function() {   
+        Layout.init(); // init metronic core componets
+    });
+}

Plik diff jest za duży
+ 0 - 0
public/assets/layouts/layout3/scripts/layout.min.js


+ 2 - 0
public/js/wangEditor/.eslintignore

@@ -0,0 +1,2 @@
+src/js/util/ierange.js
+src/js/util/poly-fill.js

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików