├── Chinwei6_LinePay.php ├── Example ├── LinePayBackend.php ├── about.php ├── app.js ├── blocks │ ├── api_basic_info.php │ ├── header.php │ └── payment_steps.php ├── confirm.php ├── image.jpeg ├── index.php ├── kule-lazy-full.3.0.1007beta.min.css ├── linepay_logo_119x39.png ├── record.php ├── refund.php └── reserve.php ├── README.md └── Tutorial ├── get_payment.md ├── img ├── 04.png ├── 05.png └── flow.png ├── payment.md └── refund.md /Chinwei6_LinePay.php: -------------------------------------------------------------------------------- 1 | apiEndpoint = $apiEndpoint; 24 | } 25 | 26 | // Generate header content by channelId & channelSecret 27 | $this->headers = self::getRequestHeader($channelId, $channelSecret); 28 | } 29 | 30 | /** 31 | * Reserve API 32 | * @param [Array] $params Post parameters 33 | * @return [Array] Result from LINE Pay server (JSON) 34 | */ 35 | public function reserve($params = []) { 36 | $reserveParams = new LinePay\ReserveParams($params); 37 | 38 | return $this->request('POST', 39 | 'request', 40 | $reserveParams->getParams()); 41 | } 42 | 43 | /** 44 | * Confirm API 45 | * @param [String] $transactionId 46 | * @param [Array] $params Post parameters 47 | * @return [Array] Result from LINE Pay server (JSON) 48 | */ 49 | public function confirm($transactionId = null, $params = []) { 50 | if(is_null($transactionId)) 51 | throw new \Exception('transactionId is required.'); 52 | else if(!is_string($transactionId)) 53 | throw new \Exception('transactionId must be a string.'); 54 | 55 | $confirmParams = new LinePay\ConfirmParams($params); 56 | 57 | return $this->request('POST', 58 | $transactionId . '/confirm', 59 | $confirmParams->getParams()); 60 | } 61 | 62 | /** 63 | * Check payment API 64 | * @param [Array] $params GET parameters 65 | * @return [Array] Result from LINE Pay server (JSON) 66 | */ 67 | public function checkPayment($params = []) { 68 | $checkPaymentParams = new LinePay\CheckPaymentParams($params); 69 | 70 | return $this->request('GET', 71 | '', 72 | $checkPaymentParams->getParams()); 73 | } 74 | 75 | /** 76 | * Refund API 77 | * @param [String] $transactionId 78 | * @param [Array] $params Post parameters 79 | * @return [Array] Result from LINE Pay server (JSON) 80 | */ 81 | public function refund($transactionId = null, $params = []) { 82 | if(is_null($transactionId)) 83 | throw new \Exception('transactionId is required.'); 84 | else if(!is_string($transactionId)) 85 | throw new \Exception('transactionId must be a string.'); 86 | 87 | $refundParams = new LinePay\RefundParams($params); 88 | 89 | return $this->request('POST', 90 | $transactionId . '/refund', 91 | $refundParams->getParams()); 92 | } 93 | 94 | /** 95 | * Private function: send request by php_curl 96 | * @param [String] $method Request method: 'POST', 'GET' 97 | * @param [String] $relativeUrl Target API url path 98 | * @param [Array] $params Request parameters 99 | * @return [Array] Result by the request 100 | */ 101 | protected function request($method = 'GET', $relativeUrl = null, $params = []) { 102 | if(is_null($relativeUrl)) { 103 | throw new \Exception('API endpoint is required.'); 104 | } 105 | 106 | $ch = curl_init(); 107 | 108 | if ($method === 'GET') { 109 | $relativeUrl .= '?'.http_build_query($params); 110 | } 111 | else if ($method === 'POST') { 112 | curl_setopt($ch, CURLOPT_POST, true); 113 | curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params)); 114 | } 115 | 116 | curl_setopt($ch, CURLOPT_URL, $this->apiEndpoint . $relativeUrl); 117 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 118 | curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers); 119 | curl_setopt($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_TLSv1'); 120 | 121 | if (curl_errno($ch)) { 122 | throw new \Exception(curl_error($ch)); 123 | } 124 | 125 | $response = json_decode(curl_exec($ch), true); 126 | 127 | curl_close($ch); 128 | 129 | return $response; 130 | } 131 | 132 | /** 133 | * Static function: Generate header content by channelId & channelSecret 134 | * @param [String] $channelId 135 | * @param [String] $channelSecret 136 | * @return [Array] Header content for CURLOPT_HTTPHEADER 137 | */ 138 | protected static function getRequestHeader($channelId = null, $channelSecret = null) { 139 | if( is_null($channelId) || is_null($channelSecret)) { 140 | throw new \Exception('Header info are required.'); 141 | } 142 | 143 | return [ 144 | 'Content-Type:application/json; charset=UTF-8', 145 | 'X-LINE-ChannelId:' . $channelId, 146 | 'X-LINE-ChannelSecret:' . $channelSecret, 147 | ]; 148 | } 149 | } 150 | } 151 | 152 | namespace Chinwei6\LinePay { 153 | /** 154 | * Params Class (Abstract class) 155 | */ 156 | abstract class Params { 157 | protected $requiredFields = []; 158 | protected $params = []; 159 | 160 | /** 161 | * Validate the required field of the parameter 162 | * @param [Array] $params 163 | */ 164 | protected function validate($params) { 165 | foreach($this->requiredFields as $field) 166 | { 167 | if(!isset($params[$field]) || empty($params[$field])) { 168 | throw new \Exception('Parameter "' . $field . '" is required.'); 169 | } 170 | } 171 | 172 | $this->params = $params; 173 | } 174 | 175 | public function __construct($params) 176 | { 177 | $this->validate($params); 178 | } 179 | 180 | /** 181 | * Return a validated parameter array 182 | * @return [Array] 183 | */ 184 | public function getParams() { 185 | return $this->params; 186 | } 187 | } 188 | 189 | /** 190 | * ReserveParams Class 191 | */ 192 | class ReserveParams extends Params { 193 | // 必要欄位 194 | protected $requiredFields = [ 195 | 'currency', 196 | 'confirmUrl', 197 | 'orderId', 198 | 'productName', 199 | 'productImageUrl', 200 | 'amount', 201 | ]; 202 | } 203 | 204 | /** 205 | * ConfirmParams Class 206 | */ 207 | class ConfirmParams extends Params { 208 | // 必要欄位 209 | protected $requiredFields = [ 210 | 'amount', 211 | 'currency', 212 | ]; 213 | } 214 | 215 | /** 216 | * CheckPaymentsParams Class 217 | */ 218 | class CheckPaymentParams extends Params { 219 | protected $requiredFields = []; 220 | 221 | protected function validate($params) { 222 | parent::validate($params); 223 | 224 | if( empty($this->params['orderId']) && empty($this->params['transactionId']) ) 225 | throw new \Exception('Parameter "orderId" or "transactionId" is required.'); 226 | } 227 | } 228 | 229 | /** 230 | * RefundParams Class 231 | */ 232 | class RefundParams extends Params { 233 | protected $requiredFields = []; 234 | } 235 | } -------------------------------------------------------------------------------- /Example/LinePayBackend.php: -------------------------------------------------------------------------------- 1 | isset($_POST['orderId']) ? $_POST['orderId'] : null, 18 | "transactionId" => isset($_POST['transactionId']) ? $_POST['transactionId'] : null, 19 | ]; 20 | 21 | try { 22 | $LinePay = new Chinwei6\LinePay($apiEndpoint, $channelId, $channelSecret); 23 | $result = $LinePay->checkPayment($params); 24 | echo json_encode($result, JSON_PRETTY_PRINT); 25 | } 26 | catch(Exception $e) { 27 | echo $e->getMessage(); 28 | } 29 | 30 | } 31 | else if(isset($_POST['refundSubmit'])) { 32 | if(empty($_POST['transactionId'])) { 33 | echo "transactionId is required."; 34 | return; 35 | } 36 | 37 | $apiEndpoint = $_POST['apiEndpoint']; 38 | $channelId = $_POST['channelId']; 39 | $channelSecret = $_POST['channelSecret']; 40 | 41 | $transactionId = isset($_POST['transactionId']) ? $_POST['transactionId'] : null; 42 | $params = [ 43 | "refundAmount" => isset($_POST['refundAmount']) ? $_POST['refundAmount'] : null, 44 | ]; 45 | 46 | try { 47 | $LinePay = new Chinwei6\LinePay($apiEndpoint, $channelId, $channelSecret); 48 | $result = $LinePay->refund($transactionId, $params); 49 | echo json_encode($result, JSON_PRETTY_PRINT); 50 | } 51 | catch(Exception $e) { 52 | echo $e->getMessage(); 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /Example/about.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LinePay API Test - Reserve 6 | 7 | 12 | 13 | 14 |
15 | 16 |
17 | 18 |
19 |
20 |
21 |

關於本站

22 |
23 |
24 | 本站僅供 LINE Pay Sandbox 環境測試用。
25 | 26 | 原始碼: https://github.com/6chinwei/LINE-Pay-PHP-Tutorial 27 |
28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /Example/app.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | var backendUrl = './LinePayBackend.php'; 3 | var $responseDiv = $('#response'); 4 | $responseDiv.closest('.panel').hide(); 5 | 6 | $('#refundForm, #recordForm').submit(function(event) { 7 | event.preventDefault(); 8 | var params = {}; 9 | $(this).serializeArray().map(function(x){params[x.name] = x.value;}); 10 | 11 | $responseDiv.closest('.panel').show().end().html('Loading...'); 12 | 13 | $.ajax({ 14 | method: 'POST', 15 | dataType: 'text', 16 | url: backendUrl, 17 | data: params 18 | }).always(function(data) { 19 | $responseDiv.html(data); 20 | }); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /Example/blocks/api_basic_info.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |

API 位置與商家資料

4 |
5 |
6 |
7 | 8 |
9 | 10 |
11 |
12 |
13 | 14 |
15 | 16 |
17 |
18 |
19 | 20 |
21 | 22 |
23 |
24 |
25 |
-------------------------------------------------------------------------------- /Example/blocks/header.php: -------------------------------------------------------------------------------- 1 |
2 | 24 | 30 |
-------------------------------------------------------------------------------- /Example/blocks/payment_steps.php: -------------------------------------------------------------------------------- 1 |
2 | 16 |
17 | -------------------------------------------------------------------------------- /Example/confirm.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | LinePay API Test - Confirm 10 | 11 | 16 | 17 | 18 |
19 | 20 |
21 | 22 | 23 | 24 |
25 |
26 |
27 |

LinePay 伺服器回應

28 |
29 |
30 | Store Server (calling confirmUrl) 32 | if(isset($_GET['transactionId']) && isset($_SESSION['cache'])) { 33 | $apiEndpoint = $_SESSION['cache']['apiEndpoint']; 34 | $channelId = $_SESSION['cache']['channelId']; 35 | $channelSecret = $_SESSION['cache']['channelSecret']; 36 | 37 | $params = [ 38 | "amount" => $_SESSION['cache']['amount'], 39 | "currency" => $_SESSION['cache']['currency'], 40 | ]; 41 | 42 | try { 43 | $LinePay = new Chinwei6\LinePay($apiEndpoint, $channelId, $channelSecret); 44 | 45 | $result = $LinePay->confirm($_GET['transactionId'], $params); 46 | echo '
';
47 |                                 echo json_encode($result, JSON_PRETTY_PRINT);
48 |                                 echo '
'; 49 | } 50 | catch(Exception $e) { 51 | echo '
';
52 |                                 echo $e->getMessage();
53 |                                 echo '
'; 54 | } 55 | 56 | unset($_SESSION['cache']); 57 | } 58 | else { 59 | echo '
';
60 |                             echo "No Params";
61 |                             echo '
'; 62 | } 63 | ?> 64 |
65 |
66 |
67 | 68 | -------------------------------------------------------------------------------- /Example/image.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/6chinwei/LINE-Pay-PHP-Tutorial/5c5223b051cf31e05259cd71b429955fde2245c8/Example/image.jpeg -------------------------------------------------------------------------------- /Example/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LINE Pay API 6 | 7 | 12 | 13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 |
21 |
22 | 23 | 24 |
25 |
26 |

訂單資料

27 |
28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 | 43 |
44 | 45 |
46 |
47 |
48 | 49 |
50 |
51 | TWD 52 | 53 | 54 |
55 |
56 |
57 |
58 | 59 |
60 | 61 |
62 |
63 |
64 | 65 |
66 |
67 | 71 | 75 |
76 |
77 |
78 |
79 |
80 | 使用 支付 81 |
82 |
83 |
84 |
85 |
86 |
87 | 88 | -------------------------------------------------------------------------------- /Example/kule-lazy-full.3.0.1007beta.min.css: -------------------------------------------------------------------------------- 1 | *,:after,:before{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body,figure,ol,ul{margin:0}blockquote,caption,dd,div,dt,h1,h2,h3,h4,h5,h6,legend,li,p,td,th{word-wrap:break-word;color:inherit}.firefox pre{white-space:pre-line!important;-moz-hyphens:auto}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}mark,output{display:inline-block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}iframe{border:none}listing,plaintext,xmp{font-family:inherit;white-space:normal}[hidden],template{display:none}a{text-decoration:none;background-color:transparent;cursor:pointer}a:active,a:hover{outline:0}abbr,acronym{font-variant:normal;cursor:help}abbr[title],acronym[title]{border-bottom:1px dotted}address,cite,dfn,em,i,u{font-style:normal;text-decoration:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:none}hr{height:0}pre{overflow:auto}embed,img,object{max-width:100%;height:auto;border:0}embed,object{display:block}svg:not(:root){overflow:hidden}dir,menu,ol,ul{padding:0;list-style:none}table{width:100%;border-collapse:collapse;border-spacing:0;border-color:transparent;color:inherit;text-align:left;font:inherit;background-color:#fff}table,td,th{table-layout:auto}td,th{padding:0;outline:0;vertical-align:middle}caption,center,td,th{text-align:inherit}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible}input,select{vertical-align:middle}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:none}textarea{overflow:auto;resize:vertical}:focus{outline:0}.align-left{text-align:left}.align-center{text-align:center}.align-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-baseline{vertical-align:baseline}.pull-left{float:left!important}.pull-right{float:right!important}.clear{clear:both!important}.card-box:after,.card-footer:after,.card-header:after,.chat-header:after,.chat-member-list:after,.clearfix:after,.fix-height:after,.form-horizontal .ctrl-grp:after,.img-grp:after,.info-item:after,.nav:after,.navbar-content:after,.navbar-header:after,.navbar:after,.pager:after,.pagi:after,.panel-box:after,.panel-footer:after,.panel-header:after,.plans:after,.switch:after,.tab:after,dl.dl-horizontal:after,fieldset:after,form:after{content:"";display:table;clear:both}.block,.show{display:block!important}table.show{display:table!important}tr.show{display:table-row!important}td.show,th.show{display:table-cell!important}.hide,[hidden]{display:none!important}.inline{display:inline-block!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.overflow-auto{overflow:auto}.close{float:right;line-height:1;text-align:center;font-size:20px;font-size:1.25rem;font-weight:700;color:inherit;opacity:.4}.close:hover{opacity:.8}.disabled,[disabled]{pointer-events:none;opacity:.5;color:grey;cursor:not-allowed}.fix-height{height:1px;padding-top:1px;visibility:hidden}.empty-hide:empty{clear:both;display:none!important}.empty-tip{padding:100px 20px;text-align:center;font-size:14px;font-size:.875rem;color:grey;background-color:#e6e6e6}.text-primary{color:#45a7b9}.text-secondary{color:#55b3e9}.text-focus{color:#f45b8a}.text-common{color:#374e52}.text-success{color:#82ba29}.text-warning{color:#f38b2e}.text-error{color:#d63a2b}.text-muted{color:#b3b3b3}.text-note{font-size:13px;font-size:.8125rem;color:grey}@media (min-width:768px){.text-note{font-size:14px;font-size:.875rem}}.text-indent{text-indent:1em}.text-ellipsis{overflow:hidden;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.bg-primary{background-color:#45a7b9;color:#fff}.bg-secondary{background-color:#55b3e9;color:#fff}.bg-focus{background-color:#f45b8a;color:#fff}.bg-common{background-color:#374e52;color:#fff}.bg-success{background-color:#82ba29;color:#fff}.bg-warning{background-color:#f38b2e;color:#fff}.bg-error{background-color:#d63a2b;color:#fff}.modal-overlay,.overlay{position:fixed;top:0;left:0;z-index:10000;width:100%;height:100%;background:rgba(0,0,0,.8)}img.fixed-img-portrait{max-width:none;max-height:none;width:auto;height:100%}.accordion-content,.accordion-header,.accordion-header .caret,.adorn,.badge,.box-module,.btn,.btn-link,.btn-outline,.choice-label,.ctrl-input,.endorsed-item-counter,.indicator,.jewel,.kui-select,.label,.module,.plan-card,.select-options,.select-options .opt-item,.switch-label,.switch-label:after,.transition,[contenteditable],a{-webkit-transition:.4s ease;transition:.4s ease}[class*=columns-],[class*=col-]{position:relative;box-sizing:border-box}[class*=columns-]{clear:both}[class*=columns-]:after{content:"";display:table;clear:both}[class*=columns-]:after{content:"";display:table;clear:both}[class*=columns-] [class*=columns-]{margin-right:-5px;margin-left:-5px}[class*=columns-]>[class*=col-]{float:left;width:100%;padding:5px}@media (min-width:768px){[class*=columns-] [class*=columns-]{margin-right:-8px;margin-left:-8px}[class*=columns-]>[class*=col-]{padding:8px}}@media (min-width:992px){[class*=columns-] [class*=columns-]{margin-right:-10px;margin-left:-10px}[class*=columns-]>[class*=col-]{padding:10px}}@media (min-width:1200px){[class*=columns-] [class*=columns-]{margin-right:-15px;margin-left:-15px}[class*=columns-]>[class*=col-]{padding:15px}}.columns-5>.col-5{width:100%}.columns-5>.col-4{width:80%}.columns-5>.col-3{width:60%}.columns-5>.col-2{width:40%}.columns-5>.col-1{width:20%}.columns-5>.col-offset-4{margin-left:80%}.columns-5>.col-offset-3{margin-left:60%}.columns-5>.col-offset-2{margin-left:40%}.columns-5>.col-offset-1{margin-left:20%}.columns-5>.col-pull-4{right:80%}.columns-5>.col-pull-3{right:60%}.columns-5>.col-pull-2{right:40%}.columns-5>.col-pull-1{right:20%}.columns-5>.col-push-4{left:80%}.columns-5>.col-push-3{left:60%}.columns-5>.col-push-2{left:40%}.columns-5>.col-push-1{left:20%}.columns-7>.col-7{width:100%}.columns-7>.col-6{width:85.71428571%}.columns-7>.col-5{width:71.42857143%}.columns-7>.col-4{width:57.14285714%}.columns-7>.col-3{width:42.85714286%}.columns-7>.col-2{width:28.57142857%}.columns-7>.col-1{width:14.28571429%}.columns-7>.col-offset-6{margin-left:85.71428571%}.columns-7>.col-offset-5{margin-left:71.42857143%}.columns-7>.col-offset-4{margin-left:57.14285714%}.columns-7>.col-offset-3{margin-left:42.85714286%}.columns-7>.col-offset-2{margin-left:28.57142857%}.columns-7>.col-offset-1{margin-left:14.28571429%}.columns-7>.col-pull-6{right:85.71428571%}.columns-7>.col-pull-5{right:71.42857143%}.columns-7>.col-pull-4{right:57.14285714%}.columns-7>.col-pull-3{right:42.85714286%}.columns-7>.col-pull-2{right:28.57142857%}.columns-7>.col-pull-1{right:14.28571429%}.columns-7>.col-push-6{left:85.71428571%}.columns-7>.col-push-5{left:71.42857143%}.columns-7>.col-push-4{left:57.14285714%}.columns-7>.col-push-3{left:42.85714286%}.columns-7>.col-push-2{left:28.57142857%}.columns-7>.col-push-1{left:14.28571429%}.columns-12>.col-12{width:100%}.columns-12>.col-11{width:91.66666667%}.columns-12>.col-10{width:83.33333333%}.columns-12>.col-9{width:75%}.columns-12>.col-8{width:66.66666667%}.columns-12>.col-7{width:58.33333333%}.columns-12>.col-6{width:50%}.columns-12>.col-5{width:41.66666667%}.columns-12>.col-4{width:33.33333333%}.columns-12>.col-3{width:25%}.columns-12>.col-2{width:16.66666667%}.columns-12>.col-1{width:8.33333333%}.columns-12>.col-offset-11{margin-left:91.66666667%}.columns-12>.col-offset-10{margin-left:83.33333333%}.columns-12>.col-offset-9{margin-left:75%}.columns-12>.col-offset-8{margin-left:66.66666667%}.columns-12>.col-offset-7{margin-left:58.33333333%}.columns-12>.col-offset-6{margin-left:50%}.columns-12>.col-offset-5{margin-left:41.66666667%}.columns-12>.col-offset-4{margin-left:33.33333333%}.columns-12>.col-offset-3{margin-left:25%}.columns-12>.col-offset-2{margin-left:16.66666667%}.columns-12>.col-offset-1{margin-left:8.33333333%}.columns-12>.col-pull-11{right:91.66666667%}.columns-12>.col-pull-10{right:83.33333333%}.columns-12>.col-pull-9{right:75%}.columns-12>.col-pull-8{right:66.66666667%}.columns-12>.col-pull-7{right:58.33333333%}.columns-12>.col-pull-6{right:50%}.columns-12>.col-pull-5{right:41.66666667%}.columns-12>.col-pull-4{right:33.33333333%}.columns-12>.col-pull-3{right:25%}.columns-12>.col-pull-2{right:16.66666667%}.columns-12>.col-pull-1{right:8.33333333%}.columns-12>.col-push-11{left:91.66666667%}.columns-12>.col-push-10{left:83.33333333%}.columns-12>.col-push-9{left:75%}.columns-12>.col-push-8{left:66.66666667%}.columns-12>.col-push-7{left:58.33333333%}.columns-12>.col-push-6{left:50%}.columns-12>.col-push-5{left:41.66666667%}.columns-12>.col-push-4{left:33.33333333%}.columns-12>.col-push-3{left:25%}.columns-12>.col-push-2{left:16.66666667%}.columns-12>.col-push-1{left:8.33333333%}@media (max-width:767px){.columns-5>.col-xs-5{width:100%}.columns-5>.col-xs-4{width:80%}.columns-5>.col-xs-3{width:60%}.columns-5>.col-xs-2{width:40%}.columns-5>.col-xs-1{width:20%}.columns-5>.col-xs-offset-4{margin-left:80%}.columns-5>.col-xs-offset-3{margin-left:60%}.columns-5>.col-xs-offset-2{margin-left:40%}.columns-5>.col-xs-offset-1{margin-left:20%}.columns-5>.col-xs-pull-4{right:80%}.columns-5>.col-xs-pull-3{right:60%}.columns-5>.col-xs-pull-2{right:40%}.columns-5>.col-xs-pull-1{right:20%}.columns-5>.col-xs-push-4{left:80%}.columns-5>.col-xs-push-3{left:60%}.columns-5>.col-xs-push-2{left:40%}.columns-5>.col-xs-push-1{left:20%}.columns-7>.col-xs-7{width:100%}.columns-7>.col-xs-6{width:85.71428571%}.columns-7>.col-xs-5{width:71.42857143%}.columns-7>.col-xs-4{width:57.14285714%}.columns-7>.col-xs-3{width:42.85714286%}.columns-7>.col-xs-2{width:28.57142857%}.columns-7>.col-xs-1{width:14.28571429%}.columns-7>.col-xs-offset-6{margin-left:85.71428571%}.columns-7>.col-xs-offset-5{margin-left:71.42857143%}.columns-7>.col-xs-offset-4{margin-left:57.14285714%}.columns-7>.col-xs-offset-3{margin-left:42.85714286%}.columns-7>.col-xs-offset-2{margin-left:28.57142857%}.columns-7>.col-xs-offset-1{margin-left:14.28571429%}.columns-7>.col-xs-pull-6{right:85.71428571%}.columns-7>.col-xs-pull-5{right:71.42857143%}.columns-7>.col-xs-pull-4{right:57.14285714%}.columns-7>.col-xs-pull-3{right:42.85714286%}.columns-7>.col-xs-pull-2{right:28.57142857%}.columns-7>.col-xs-pull-1{right:14.28571429%}.columns-7>.col-xs-push-6{left:85.71428571%}.columns-7>.col-xs-push-5{left:71.42857143%}.columns-7>.col-xs-push-4{left:57.14285714%}.columns-7>.col-xs-push-3{left:42.85714286%}.columns-7>.col-xs-push-2{left:28.57142857%}.columns-7>.col-xs-push-1{left:14.28571429%}.columns-12>.col-xs-12{width:100%}.columns-12>.col-xs-11{width:91.66666667%}.columns-12>.col-xs-10{width:83.33333333%}.columns-12>.col-xs-9{width:75%}.columns-12>.col-xs-8{width:66.66666667%}.columns-12>.col-xs-7{width:58.33333333%}.columns-12>.col-xs-6{width:50%}.columns-12>.col-xs-5{width:41.66666667%}.columns-12>.col-xs-4{width:33.33333333%}.columns-12>.col-xs-3{width:25%}.columns-12>.col-xs-2{width:16.66666667%}.columns-12>.col-xs-1{width:8.33333333%}.columns-12>.col-xs-offset-11{margin-left:91.66666667%}.columns-12>.col-xs-offset-10{margin-left:83.33333333%}.columns-12>.col-xs-offset-9{margin-left:75%}.columns-12>.col-xs-offset-8{margin-left:66.66666667%}.columns-12>.col-xs-offset-7{margin-left:58.33333333%}.columns-12>.col-xs-offset-6{margin-left:50%}.columns-12>.col-xs-offset-5{margin-left:41.66666667%}.columns-12>.col-xs-offset-4{margin-left:33.33333333%}.columns-12>.col-xs-offset-3{margin-left:25%}.columns-12>.col-xs-offset-2{margin-left:16.66666667%}.columns-12>.col-xs-offset-1{margin-left:8.33333333%}.columns-12>.col-xs-pull-11{right:91.66666667%}.columns-12>.col-xs-pull-10{right:83.33333333%}.columns-12>.col-xs-pull-9{right:75%}.columns-12>.col-xs-pull-8{right:66.66666667%}.columns-12>.col-xs-pull-7{right:58.33333333%}.columns-12>.col-xs-pull-6{right:50%}.columns-12>.col-xs-pull-5{right:41.66666667%}.columns-12>.col-xs-pull-4{right:33.33333333%}.columns-12>.col-xs-pull-3{right:25%}.columns-12>.col-xs-pull-2{right:16.66666667%}.columns-12>.col-xs-pull-1{right:8.33333333%}.columns-12>.col-xs-push-11{left:91.66666667%}.columns-12>.col-xs-push-10{left:83.33333333%}.columns-12>.col-xs-push-9{left:75%}.columns-12>.col-xs-push-8{left:66.66666667%}.columns-12>.col-xs-push-7{left:58.33333333%}.columns-12>.col-xs-push-6{left:50%}.columns-12>.col-xs-push-5{left:41.66666667%}.columns-12>.col-xs-push-4{left:33.33333333%}.columns-12>.col-xs-push-3{left:25%}.columns-12>.col-xs-push-2{left:16.66666667%}.columns-12>.col-xs-push-1{left:8.33333333%}}@media (min-width:768px){.columns-5>.col-sm-5{width:100%}.columns-5>.col-sm-4{width:80%}.columns-5>.col-sm-3{width:60%}.columns-5>.col-sm-2{width:40%}.columns-5>.col-sm-1{width:20%}.columns-5>.col-sm-offset-4{margin-left:80%}.columns-5>.col-sm-offset-3{margin-left:60%}.columns-5>.col-sm-offset-2{margin-left:40%}.columns-5>.col-sm-offset-1{margin-left:20%}.columns-5>.col-sm-pull-4{right:80%}.columns-5>.col-sm-pull-3{right:60%}.columns-5>.col-sm-pull-2{right:40%}.columns-5>.col-sm-pull-1{right:20%}.columns-5>.col-sm-push-4{left:80%}.columns-5>.col-sm-push-3{left:60%}.columns-5>.col-sm-push-2{left:40%}.columns-5>.col-sm-push-1{left:20%}.columns-7>.col-sm-7{width:100%}.columns-7>.col-sm-6{width:85.71428571%}.columns-7>.col-sm-5{width:71.42857143%}.columns-7>.col-sm-4{width:57.14285714%}.columns-7>.col-sm-3{width:42.85714286%}.columns-7>.col-sm-2{width:28.57142857%}.columns-7>.col-sm-1{width:14.28571429%}.columns-7>.col-sm-offset-6{margin-left:85.71428571%}.columns-7>.col-sm-offset-5{margin-left:71.42857143%}.columns-7>.col-sm-offset-4{margin-left:57.14285714%}.columns-7>.col-sm-offset-3{margin-left:42.85714286%}.columns-7>.col-sm-offset-2{margin-left:28.57142857%}.columns-7>.col-sm-offset-1{margin-left:14.28571429%}.columns-7>.col-sm-pull-6{right:85.71428571%}.columns-7>.col-sm-pull-5{right:71.42857143%}.columns-7>.col-sm-pull-4{right:57.14285714%}.columns-7>.col-sm-pull-3{right:42.85714286%}.columns-7>.col-sm-pull-2{right:28.57142857%}.columns-7>.col-sm-pull-1{right:14.28571429%}.columns-7>.col-sm-push-6{left:85.71428571%}.columns-7>.col-sm-push-5{left:71.42857143%}.columns-7>.col-sm-push-4{left:57.14285714%}.columns-7>.col-sm-push-3{left:42.85714286%}.columns-7>.col-sm-push-2{left:28.57142857%}.columns-7>.col-sm-push-1{left:14.28571429%}.columns-12>.col-sm-12{width:100%}.columns-12>.col-sm-11{width:91.66666667%}.columns-12>.col-sm-10{width:83.33333333%}.columns-12>.col-sm-9{width:75%}.columns-12>.col-sm-8{width:66.66666667%}.columns-12>.col-sm-7{width:58.33333333%}.columns-12>.col-sm-6{width:50%}.columns-12>.col-sm-5{width:41.66666667%}.columns-12>.col-sm-4{width:33.33333333%}.columns-12>.col-sm-3{width:25%}.columns-12>.col-sm-2{width:16.66666667%}.columns-12>.col-sm-1{width:8.33333333%}.columns-12>.col-sm-offset-11{margin-left:91.66666667%}.columns-12>.col-sm-offset-10{margin-left:83.33333333%}.columns-12>.col-sm-offset-9{margin-left:75%}.columns-12>.col-sm-offset-8{margin-left:66.66666667%}.columns-12>.col-sm-offset-7{margin-left:58.33333333%}.columns-12>.col-sm-offset-6{margin-left:50%}.columns-12>.col-sm-offset-5{margin-left:41.66666667%}.columns-12>.col-sm-offset-4{margin-left:33.33333333%}.columns-12>.col-sm-offset-3{margin-left:25%}.columns-12>.col-sm-offset-2{margin-left:16.66666667%}.columns-12>.col-sm-offset-1{margin-left:8.33333333%}.columns-12>.col-sm-pull-11{right:91.66666667%}.columns-12>.col-sm-pull-10{right:83.33333333%}.columns-12>.col-sm-pull-9{right:75%}.columns-12>.col-sm-pull-8{right:66.66666667%}.columns-12>.col-sm-pull-7{right:58.33333333%}.columns-12>.col-sm-pull-6{right:50%}.columns-12>.col-sm-pull-5{right:41.66666667%}.columns-12>.col-sm-pull-4{right:33.33333333%}.columns-12>.col-sm-pull-3{right:25%}.columns-12>.col-sm-pull-2{right:16.66666667%}.columns-12>.col-sm-pull-1{right:8.33333333%}.columns-12>.col-sm-push-11{left:91.66666667%}.columns-12>.col-sm-push-10{left:83.33333333%}.columns-12>.col-sm-push-9{left:75%}.columns-12>.col-sm-push-8{left:66.66666667%}.columns-12>.col-sm-push-7{left:58.33333333%}.columns-12>.col-sm-push-6{left:50%}.columns-12>.col-sm-push-5{left:41.66666667%}.columns-12>.col-sm-push-4{left:33.33333333%}.columns-12>.col-sm-push-3{left:25%}.columns-12>.col-sm-push-2{left:16.66666667%}.columns-12>.col-sm-push-1{left:8.33333333%}}@media (min-width:992px){.columns-5>.col-md-5{width:100%}.columns-5>.col-md-4{width:80%}.columns-5>.col-md-3{width:60%}.columns-5>.col-md-2{width:40%}.columns-5>.col-md-1{width:20%}.columns-5>.col-md-offset-4{margin-left:80%}.columns-5>.col-md-offset-3{margin-left:60%}.columns-5>.col-md-offset-2{margin-left:40%}.columns-5>.col-md-offset-1{margin-left:20%}.columns-5>.col-md-pull-4{right:80%}.columns-5>.col-md-pull-3{right:60%}.columns-5>.col-md-pull-2{right:40%}.columns-5>.col-md-pull-1{right:20%}.columns-5>.col-md-push-4{left:80%}.columns-5>.col-md-push-3{left:60%}.columns-5>.col-md-push-2{left:40%}.columns-5>.col-md-push-1{left:20%}.columns-7>.col-md-7{width:100%}.columns-7>.col-md-6{width:85.71428571%}.columns-7>.col-md-5{width:71.42857143%}.columns-7>.col-md-4{width:57.14285714%}.columns-7>.col-md-3{width:42.85714286%}.columns-7>.col-md-2{width:28.57142857%}.columns-7>.col-md-1{width:14.28571429%}.columns-7>.col-md-offset-6{margin-left:85.71428571%}.columns-7>.col-md-offset-5{margin-left:71.42857143%}.columns-7>.col-md-offset-4{margin-left:57.14285714%}.columns-7>.col-md-offset-3{margin-left:42.85714286%}.columns-7>.col-md-offset-2{margin-left:28.57142857%}.columns-7>.col-md-offset-1{margin-left:14.28571429%}.columns-7>.col-md-pull-6{right:85.71428571%}.columns-7>.col-md-pull-5{right:71.42857143%}.columns-7>.col-md-pull-4{right:57.14285714%}.columns-7>.col-md-pull-3{right:42.85714286%}.columns-7>.col-md-pull-2{right:28.57142857%}.columns-7>.col-md-pull-1{right:14.28571429%}.columns-7>.col-md-push-6{left:85.71428571%}.columns-7>.col-md-push-5{left:71.42857143%}.columns-7>.col-md-push-4{left:57.14285714%}.columns-7>.col-md-push-3{left:42.85714286%}.columns-7>.col-md-push-2{left:28.57142857%}.columns-7>.col-md-push-1{left:14.28571429%}.columns-12>.col-md-12{width:100%}.columns-12>.col-md-11{width:91.66666667%}.columns-12>.col-md-10{width:83.33333333%}.columns-12>.col-md-9{width:75%}.columns-12>.col-md-8{width:66.66666667%}.columns-12>.col-md-7{width:58.33333333%}.columns-12>.col-md-6{width:50%}.columns-12>.col-md-5{width:41.66666667%}.columns-12>.col-md-4{width:33.33333333%}.columns-12>.col-md-3{width:25%}.columns-12>.col-md-2{width:16.66666667%}.columns-12>.col-md-1{width:8.33333333%}.columns-12>.col-md-offset-11{margin-left:91.66666667%}.columns-12>.col-md-offset-10{margin-left:83.33333333%}.columns-12>.col-md-offset-9{margin-left:75%}.columns-12>.col-md-offset-8{margin-left:66.66666667%}.columns-12>.col-md-offset-7{margin-left:58.33333333%}.columns-12>.col-md-offset-6{margin-left:50%}.columns-12>.col-md-offset-5{margin-left:41.66666667%}.columns-12>.col-md-offset-4{margin-left:33.33333333%}.columns-12>.col-md-offset-3{margin-left:25%}.columns-12>.col-md-offset-2{margin-left:16.66666667%}.columns-12>.col-md-offset-1{margin-left:8.33333333%}.columns-12>.col-md-pull-11{right:91.66666667%}.columns-12>.col-md-pull-10{right:83.33333333%}.columns-12>.col-md-pull-9{right:75%}.columns-12>.col-md-pull-8{right:66.66666667%}.columns-12>.col-md-pull-7{right:58.33333333%}.columns-12>.col-md-pull-6{right:50%}.columns-12>.col-md-pull-5{right:41.66666667%}.columns-12>.col-md-pull-4{right:33.33333333%}.columns-12>.col-md-pull-3{right:25%}.columns-12>.col-md-pull-2{right:16.66666667%}.columns-12>.col-md-pull-1{right:8.33333333%}.columns-12>.col-md-push-11{left:91.66666667%}.columns-12>.col-md-push-10{left:83.33333333%}.columns-12>.col-md-push-9{left:75%}.columns-12>.col-md-push-8{left:66.66666667%}.columns-12>.col-md-push-7{left:58.33333333%}.columns-12>.col-md-push-6{left:50%}.columns-12>.col-md-push-5{left:41.66666667%}.columns-12>.col-md-push-4{left:33.33333333%}.columns-12>.col-md-push-3{left:25%}.columns-12>.col-md-push-2{left:16.66666667%}.columns-12>.col-md-push-1{left:8.33333333%}}@media (min-width:1200px){.columns-5>.col-lg-5{width:100%}.columns-5>.col-lg-4{width:80%}.columns-5>.col-lg-3{width:60%}.columns-5>.col-lg-2{width:40%}.columns-5>.col-lg-1{width:20%}.columns-5>.col-lg-offset-4{margin-left:80%}.columns-5>.col-lg-offset-3{margin-left:60%}.columns-5>.col-lg-offset-2{margin-left:40%}.columns-5>.col-lg-offset-1{margin-left:20%}.columns-5>.col-lg-pull-4{right:80%}.columns-5>.col-lg-pull-3{right:60%}.columns-5>.col-lg-pull-2{right:40%}.columns-5>.col-lg-pull-1{right:20%}.columns-5>.col-lg-push-4{left:80%}.columns-5>.col-lg-push-3{left:60%}.columns-5>.col-lg-push-2{left:40%}.columns-5>.col-lg-push-1{left:20%}.columns-7>.col-lg-7{width:100%}.columns-7>.col-lg-6{width:85.71428571%}.columns-7>.col-lg-5{width:71.42857143%}.columns-7>.col-lg-4{width:57.14285714%}.columns-7>.col-lg-3{width:42.85714286%}.columns-7>.col-lg-2{width:28.57142857%}.columns-7>.col-lg-1{width:14.28571429%}.columns-7>.col-lg-offset-6{margin-left:85.71428571%}.columns-7>.col-lg-offset-5{margin-left:71.42857143%}.columns-7>.col-lg-offset-4{margin-left:57.14285714%}.columns-7>.col-lg-offset-3{margin-left:42.85714286%}.columns-7>.col-lg-offset-2{margin-left:28.57142857%}.columns-7>.col-lg-offset-1{margin-left:14.28571429%}.columns-7>.col-lg-pull-6{right:85.71428571%}.columns-7>.col-lg-pull-5{right:71.42857143%}.columns-7>.col-lg-pull-4{right:57.14285714%}.columns-7>.col-lg-pull-3{right:42.85714286%}.columns-7>.col-lg-pull-2{right:28.57142857%}.columns-7>.col-lg-pull-1{right:14.28571429%}.columns-7>.col-lg-push-6{left:85.71428571%}.columns-7>.col-lg-push-5{left:71.42857143%}.columns-7>.col-lg-push-4{left:57.14285714%}.columns-7>.col-lg-push-3{left:42.85714286%}.columns-7>.col-lg-push-2{left:28.57142857%}.columns-7>.col-lg-push-1{left:14.28571429%}.columns-12>.col-lg-12{width:100%}.columns-12>.col-lg-11{width:91.66666667%}.columns-12>.col-lg-10{width:83.33333333%}.columns-12>.col-lg-9{width:75%}.columns-12>.col-lg-8{width:66.66666667%}.columns-12>.col-lg-7{width:58.33333333%}.columns-12>.col-lg-6{width:50%}.columns-12>.col-lg-5{width:41.66666667%}.columns-12>.col-lg-4{width:33.33333333%}.columns-12>.col-lg-3{width:25%}.columns-12>.col-lg-2{width:16.66666667%}.columns-12>.col-lg-1{width:8.33333333%}.columns-12>.col-lg-offset-11{margin-left:91.66666667%}.columns-12>.col-lg-offset-10{margin-left:83.33333333%}.columns-12>.col-lg-offset-9{margin-left:75%}.columns-12>.col-lg-offset-8{margin-left:66.66666667%}.columns-12>.col-lg-offset-7{margin-left:58.33333333%}.columns-12>.col-lg-offset-6{margin-left:50%}.columns-12>.col-lg-offset-5{margin-left:41.66666667%}.columns-12>.col-lg-offset-4{margin-left:33.33333333%}.columns-12>.col-lg-offset-3{margin-left:25%}.columns-12>.col-lg-offset-2{margin-left:16.66666667%}.columns-12>.col-lg-offset-1{margin-left:8.33333333%}.columns-12>.col-lg-pull-11{right:91.66666667%}.columns-12>.col-lg-pull-10{right:83.33333333%}.columns-12>.col-lg-pull-9{right:75%}.columns-12>.col-lg-pull-8{right:66.66666667%}.columns-12>.col-lg-pull-7{right:58.33333333%}.columns-12>.col-lg-pull-6{right:50%}.columns-12>.col-lg-pull-5{right:41.66666667%}.columns-12>.col-lg-pull-4{right:33.33333333%}.columns-12>.col-lg-pull-3{right:25%}.columns-12>.col-lg-pull-2{right:16.66666667%}.columns-12>.col-lg-pull-1{right:8.33333333%}.columns-12>.col-lg-push-11{left:91.66666667%}.columns-12>.col-lg-push-10{left:83.33333333%}.columns-12>.col-lg-push-9{left:75%}.columns-12>.col-lg-push-8{left:66.66666667%}.columns-12>.col-lg-push-7{left:58.33333333%}.columns-12>.col-lg-push-6{left:50%}.columns-12>.col-lg-push-5{left:41.66666667%}.columns-12>.col-lg-push-4{left:33.33333333%}.columns-12>.col-lg-push-3{left:25%}.columns-12>.col-lg-push-2{left:16.66666667%}.columns-12>.col-lg-push-1{left:8.33333333%}}.container{max-width:1152px;margin-right:auto;margin-left:auto}.container:after{content:"";display:table;clear:both}.container:after{content:"";display:table;clear:both}[class*=show-]{display:none!important}[class*=columns-].cols-collapse,[class*=columns-].cols-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-collapse,[class*=columns-].cols-collapse>[class*=col-]{padding:0}[class*=col-].col-collapse-v,[class*=columns-].cols-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-collapse-h,[class*=columns-].cols-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-first{clear:both}[class*=col-].col-centered,[class*=columns-].cols-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}@media (max-width:767px){.show-xs{display:block!important}table.show-xs{display:table!important}tr.show-xs{display:table-row!important}td.show-xs,th.show-xs{display:table-cell!important}.show-xs-block{display:block!important}.show-xs-inline{display:inline!important}.show-xs-inline-block{display:inline-block!important}.show-xs-table{display:table!important}.show-xs-inline-table{display:inline-table!important}.show-xs-row{display:table-row!important}.show-xs-cell{display:table-cell!important}.show-xs-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-xs-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-xs{display:none!important}[class*=columns-].cols-xs-collapse,[class*=columns-].cols-xs-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-xs-collapse,[class*=columns-].cols-xs-collapse>[class*=col-]{padding:0}[class*=col-].col-xs-collapse-v,[class*=columns-].cols-xs-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-xs-collapse-h,[class*=columns-].cols-xs-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-xs-first{clear:both}[class*=col-].col-xs-centered,[class*=columns-].cols-xs-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}@media (min-width:768px) and (max-width:991px){.show-sm{display:block!important}table.show-sm{display:table!important}tr.show-sm{display:table-row!important}td.show-sm,th.show-sm{display:table-cell!important}.show-sm-block{display:block!important}.show-sm-inline{display:inline!important}.show-sm-inline-block{display:inline-block!important}.show-sm-table{display:table!important}.show-sm-inline-table{display:inline-table!important}.show-sm-row{display:table-row!important}.show-sm-cell{display:table-cell!important}.show-sm-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-sm-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-sm{display:none!important}[class*=columns-].cols-sm-collapse,[class*=columns-].cols-sm-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-sm-collapse,[class*=columns-].cols-sm-collapse>[class*=col-]{padding:0}[class*=col-].col-sm-collapse-v,[class*=columns-].cols-sm-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-sm-collapse-h,[class*=columns-].cols-sm-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-sm-first{clear:both}[class*=col-].col-sm-centered,[class*=columns-].cols-sm-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}@media (min-width:992px) and (max-width:1199px){.show-md{display:block!important}table.show-md{display:table!important}tr.show-md{display:table-row!important}td.show-md,th.show-md{display:table-cell!important}.show-md-block{display:block!important}.show-md-inline{display:inline!important}.show-md-inline-block{display:inline-block!important}.show-md-table{display:table!important}.show-md-inline-table{display:inline-table!important}.show-md-row{display:table-row!important}.show-md-cell{display:table-cell!important}.show-md-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-md-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-md{display:none!important}[class*=columns-].cols-md-collapse,[class*=columns-].cols-md-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-md-collapse,[class*=columns-].cols-md-collapse>[class*=col-]{padding:0}[class*=col-].col-md-collapse-v,[class*=columns-].cols-md-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-md-collapse-h,[class*=columns-].cols-md-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-md-first{clear:both}[class*=col-].col-md-centered,[class*=columns-].cols-md-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}@media (min-width:1200px){.show-lg{display:block!important}table.show-lg{display:table!important}tr.show-lg{display:table-row!important}td.show-lg,th.show-lg{display:table-cell!important}.show-lg-block{display:block!important}.show-lg-inline{display:inline!important}.show-lg-inline-block{display:inline-block!important}.show-lg-table{display:table!important}.show-lg-inline-table{display:inline-table!important}.show-lg-row{display:table-row!important}.show-lg-cell{display:table-cell!important}.show-lg-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-lg-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-lg{display:none!important}[class*=columns-].cols-lg-collapse,[class*=columns-].cols-lg-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-lg-collapse,[class*=columns-].cols-lg-collapse>[class*=col-]{padding:0}[class*=col-].col-lg-collapse-v,[class*=columns-].cols-lg-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-lg-collapse-h,[class*=columns-].cols-lg-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-lg-first{clear:both}[class*=col-].col-lg-centered,[class*=columns-].cols-lg-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}@media (max-width:991px){.show-mb{display:block!important}table.show-mb{display:table!important}tr.show-mb{display:table-row!important}td.show-mb,th.show-mb{display:table-cell!important}.show-mb-block{display:block!important}.show-mb-inline{display:inline!important}.show-mb-inline-block{display:inline-block!important}.show-mb-table{display:table!important}.show-mb-inline-table{display:inline-table!important}.show-mb-row{display:table-row!important}.show-mb-cell{display:table-cell!important}.show-mb-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-mb-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-mb{display:none!important}[class*=columns-].cols-mb-collapse,[class*=columns-].cols-mb-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-mb-collapse,[class*=columns-].cols-mb-collapse>[class*=col-]{padding:0}[class*=col-].col-mb-collapse-v,[class*=columns-].cols-mb-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-mb-collapse-h,[class*=columns-].cols-mb-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-mb-first{clear:both}[class*=col-].col-mb-centered,[class*=columns-].cols-mb-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}@media (min-width:992px){.show-dt{display:block!important}table.show-dt{display:table!important}tr.show-dt{display:table-row!important}td.show-dt,th.show-dt{display:table-cell!important}.show-dt-block{display:block!important}.show-dt-inline{display:inline!important}.show-dt-inline-block{display:inline-block!important}.show-dt-table{display:table!important}.show-dt-inline-table{display:inline-table!important}.show-dt-row{display:table-row!important}.show-dt-cell{display:table-cell!important}.show-dt-flex{display:-webkit-flex!important;display:-moz-flex!important;display:-ms-flexbox!important;display:-ms-flex!important;display:flex!important}.show-dt-inline-flex{display:-webkit-inline-flex!important;display:-moz-inline-flex!important;display:-ms-inline-flexbox!important;display:-ms-inline-flex!important;display:inline-flex!important}.hide-dt{display:none!important}[class*=columns-].cols-dt-collapse,[class*=columns-].cols-dt-collapse-h{margin-right:0;margin-left:0}[class*=col-].col-dt-collapse,[class*=columns-].cols-dt-collapse>[class*=col-]{padding:0}[class*=col-].col-dt-collapse-v,[class*=columns-].cols-dt-collapse-v>[class*=col-]{padding-top:0;padding-bottom:0}[class*=col-].col-dt-collapse-h,[class*=columns-].cols-dt-collapse-h>[class*=col-]{padding-right:0;padding-left:0}[class*=col-].col-dt-first{clear:both}[class*=col-].col-dt-centered,[class*=columns-].cols-dt-centered>[class*=col-]{float:none;clear:both;margin-right:auto;margin-left:auto}}::selection{text-shadow:none;color:#fff;background-color:#45a7b9}::-moz-selection{text-shadow:none;color:#fff;background-color:#45a7b9}body,html{height:100%}html{font-size:112.5%;font-size:18px;font-family:sans-serif}@media (min-width:768px){html{font-size:100%;font-size:16px}}body{line-height:1.625;font-family:Roboto,'Helvetica Neue',Helvetica,Arial,'Hiragino Maru Gothic ProN','メイリオ','ヒラギノ丸ゴ ProN W4','微軟正黑體',Meiryo,'Droid Sans';color:rgba(0,0,0,.87)}.adorn,.module{display:inline-block;vertical-align:top}.box-module,.btn,.btn-outline,.ctrl-input,.kui-select,[contenteditable]{display:inline-block;vertical-align:top;min-height:36px;line-height:22px;padding:6px 12px;border-width:1px;border-style:solid;font-size:inherit}.accordion-content,.accordion-header,.accordion-side .accordion-header,.card-subtitle,.card-title,.empty-tip p,.margin-reset,.modal-note p,.modal-title,.notice-text,.notice-title,.panel-subtitle,.panel-title,.plan-header-title,.popup-content,.popup-title,.step-text,.step-title{margin:0}.badge,.indicator,.label{display:inline-block;vertical-align:top;min-width:18px;min-height:18px;text-align:center;font-weight:700;font-family:Roboto,'Helvetica Neue',Helvetica,Arial}h1,h2,h3,h4{margin-top:1em}h5,h6,legend{margin-top:20px}h1 small,h2 small,h3 small,h4 small{font-size:80%}h1+.subheader,h2+.subheader,h3+.subheader,h4+.subheader{margin-top:.5em}h5 small,h6 small{font-size:90%}h5+.subheader,h6+.subheader{margin-top:10px}h3.subheader,h4.subheader,h5.subheader,h6.subheader{color:#4d4d4d}h1,h2,h3,h4,h5,h6,legend{margin-bottom:10px;font-weight:500}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{opacity:.6;line-height:1;vertical-align:baseline}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:#333}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:#2f8392}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child{margin-bottom:0}h1{line-height:1.27777778em;font-size:36px;font-size:2.25rem}h2{line-height:1.33333333em;font-size:30px;font-size:1.875rem}h3{line-height:1.41666667em;font-size:24px;font-size:1.5rem}h4{line-height:1.5em;font-size:20px;font-size:1.25rem}h5{line-height:1.55555556em;font-size:18px;font-size:1.125rem}h6,legend{line-height:1.625em;font-size:16px;font-size:1rem}a{color:#45a7b9}p{margin:0 0 1em 0}p:last-child{margin-bottom:0}p.lead{font-size:18px;font-size:1.125rem}p.drop-cap:first-letter{float:left;line-height:1;padding:.17045455em .13392857em 0 0;font-size:2.6em}.firefox p.drop-cap:first-letter{padding-top:.08928571em}small{font-size:87.5%}big{font-size:125%}del{color:#ccc}ins{text-decoration:none;border-bottom:1px dashed #999}mark{display:inline-block;padding:0 4px;background:#eeccad}sub,sup{line-height:1;font-size:12px;font-size:.75rem;color:#f45b8a}hr{border:none;border-top:1px solid #e6e6e6;margin:30px 0}hr.spacer{height:1px;border:none;margin:20px 0}blockquote{position:relative;padding-top:.5em;padding-bottom:.5em;padding-left:1em;border-left:1px solid #cfcfcf;margin:20px 0;color:#4d4d4d}blockquote p{margin-bottom:0}blockquote cite{display:block;margin-top:1em;color:grey}blockquote cite:after,blockquote cite:before{content:'\2014 \00A0'}blockquote.pull-quote{padding-left:4em;border-left:none}blockquote.pull-quote:before{content:'“';position:absolute;top:-.2em;left:0;font-size:5em;font-family:Georgia,'Times New Roman',Times;color:#ccc}.kui-list{margin-bottom:1em}ol.kui-list,ul.kui-list{padding-left:2em}ol.kui-list.no-bullet,ul.kui-list.no-bullet{list-style:none;padding-left:1em}ol.kui-list ol,ol.kui-list ul,ul.kui-list ol,ul.kui-list ul{position:relative;padding-left:2em;margin-top:.25em;margin-bottom:.25em}ol.kui-list ol,ul.kui-list ol{list-style:decimal}ol.kui-list ul,ul.kui-list ul{list-style:disc}ol.kui-list li,ul.kui-list li{margin-bottom:.25em}ol.kui-list-inline>li,ul.kui-list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}ol.kui-list{list-style:decimal}ul.kui-list{list-style:disc}dl.dl-ordered>dt{counter-reset:definitions}dl.dl-ordered>dt+dd{margin-top:0}dl.dl-ordered>dd{display:block;counter-increment:definitions}dl.dl-ordered>dd:before{content:counter(definitions,decimal) ". "}dl.dl-horizontal{overflow:auto}dl.dl-horizontal dt{position:relative;float:left;width:120px;padding-right:26px;text-align:right}dl.dl-horizontal dt:after{content:attr(data-symbol);position:absolute;top:0;right:0;width:26px;text-align:center}dl.dl-horizontal dd{margin-left:120px}dl.dl-horizontal dd+dt,dl.dl-horizontal dd+dt+dd{margin-top:1em}dd{margin-left:1em}dd+dt{clear:both;margin-top:1em}dd+dd{margin-top:.2em}address{display:inline-block;padding:5px 20px;border-left:5px solid #e6e6e6;margin-bottom:20px;font-size:14px;font-size:.875rem}address strong{display:block;margin-bottom:5px}address.vcard{padding:10px 20px;border:1px solid #e6e6e6;background-color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.05)}code,kbd,pre.code,samp,var{line-height:inherit;font-family:Monospace,Menlo,Monaco,Consolas,'Courier New';font-size:13px;font-size:.8125rem}code,kbd{display:inline-block;padding:0 4px;border:1px solid transparent;vertical-align:text-bottom;border-radius:2px}code code,code kbd,kbd code,kbd kbd{display:inline;padding:0;border:none}code{line-height:1.4em;color:#da002a;border-color:#e6e1d7;background-color:#f5f2ec;text-shadow:0 1px #fff}kbd{line-height:inherit;font-size:14px;font-size:.875rem;color:#22c8e7;background-color:#333;vertical-align:baseline}kbd span{color:#ccc}pre{margin:20px 0}pre.code{overflow:hidden;padding:5px 10px;border:1px dashed #b3b3b3;border-radius:4px;word-spacing:normal;white-space:pre;text-align:left;text-shadow:0 1px 0 #fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;color:#da002a;background:#fafafa;word-break:break-all;word-wrap:break-word}.firefox pre.language{white-space:pre-wrap}var{vertical-align:text-bottom}.pre{white-space:pre}.editor dl,.editor ol,.editor ul{margin-bottom:1.625}.editor ol,.editor ul{padding-left:2em}.editor ol ol,.editor ol ul,.editor ul ol,.editor ul ul{position:relative;padding-left:2em;margin-top:.25em;margin-bottom:.25em}.editor ol ol,.editor ul ol{list-style:decimal}.editor ol ul,.editor ul ul{list-style:disc}.editor ol{list-style:decimal}.editor ul{list-style:disc}.editor dt{font-weight:700;color:#191919}.editor li{margin-bottom:.25em}dl:empty,h1:empty,h2:empty,h3:empty,h4:empty,h5:empty,h6:empty,ol:empty,p:empty,ul:empty{display:none}.table{margin-bottom:20px}.table caption{padding:8px 10px;font-size:18px;font-size:1.125rem;color:#191919}.table td,.table th{padding:15px 10px;-webkit-transition:background-color .2s;transition:background-color .2s}.table tbody td,.table tbody th{border-top:1px solid #d9d9d9}.table tbody:first-child tr:first-child td,.table tbody:first-child tr:first-child th{border-top:none}.table tbody tr:first-child td,.table tbody tr:first-child th,.table tfoot td,.table tfoot th{border-top:1px solid #bfbfbf}.table-tight caption{padding:4px 10px}.table-tight td,.table-tight th{padding:10px}.table-loose caption{padding:12px 10px}.table-loose td,.table-loose th{padding:20px 10px}.table-bordered,.table-outline,.table-rounded{border:1px solid #bfbfbf}.table-bordered td,.table-bordered th{border-left:1px solid #d9d9d9}.table-bordered td:first-child,.table-bordered th:first-child{border-left-color:#bfbfbf}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#fafafa}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f2f2f2!important}td.color-primary,th.color-primary,tr.color-primary>td,tr.color-primary>th{color:#45a7b9}td.color-secondary,th.color-secondary,tr.color-secondary>td,tr.color-secondary>th{color:#55b3e9}td.color-focus,th.color-focus,tr.color-focus>td,tr.color-focus>th{color:#f45b8a}td.color-common,th.color-common,tr.color-common>td,tr.color-common>th{color:#374e52}td.color-success,th.color-success,tr.color-success>td,tr.color-success>th{color:#82ba29}td.color-warning,th.color-warning,tr.color-warning>td,tr.color-warning>th{color:#f38b2e}td.color-error,th.color-error,tr.color-error>td,tr.color-error>th{color:#d63a2b}.table-responsive-scroll{width:100%;overflow-x:auto;overflow-y:hidden;margin-bottom:20px}@media (max-width:767px){.table-responsive{border:none;background-color:transparent;overflow:hidden}.table-responsive td,.table-responsive th{width:100%;padding:10px;border-left:none}.table-responsive thead{display:none}.table-responsive tbody tr{display:block;overflow:hidden;border:1px solid #bfbfbf;margin-bottom:10px;background-color:#fff;border-radius:4px}.table-responsive tbody tr:hover>td,.table-responsive tbody tr:hover>th,.table-responsive tbody tr:nth-child(odd)>td,.table-responsive tbody tr:nth-child(odd)>th{background-color:transparent}.table-responsive tbody tr:first-child td,.table-responsive tbody tr:first-child th{border-top:1px dashed #bfbfbf}.table-responsive tbody tr:first-child td:first-child,.table-responsive tbody tr:first-child th:first-child{border-top:none}.table-responsive tbody td,.table-responsive tbody th{display:block;border-top-style:dashed;background-color:transparent}.table-responsive tbody td:before,.table-responsive tbody th:before{content:attr(data-label)!important;display:block;font-size:87.5%;opacity:.7}.table-responsive tbody td:first-child,.table-responsive tbody th:first-child{border-top:none}.table-responsive tfoot td:first-child,.table-responsive tfoot th:first-child{border-top:none}.table-responsive.table-striped tbody tr>td:nth-child(odd),.table-responsive.table-striped tbody tr>th:nth-child(odd){background-color:#fafafa}.table-responsive.table-hover tbody tr>td:hover,.table-responsive.table-hover tbody tr>th:hover{background-color:#f2f2f2}.table-responsive.table-highlight td:focus,.table-responsive.table-highlight td:hover,.table-responsive.table-highlight th:focus,.table-responsive.table-highlight th:hover{background-color:transparent}.table-responsive.table-highlight td:focus:after,.table-responsive.table-highlight td:focus:before,.table-responsive.table-highlight td:hover:after,.table-responsive.table-highlight td:hover:before,.table-responsive.table-highlight th:focus:after,.table-responsive.table-highlight th:focus:before,.table-responsive.table-highlight th:hover:after,.table-responsive.table-highlight th:hover:before{position:static;z-index:1;width:auto;height:auto;background-color:transparent}}.table-highlight{overflow:hidden;background-color:transparent}.table-highlight td,.table-highlight th{position:relative;background:0 0;-webkit-transition:background .3s;transition:background .3s}.table-highlight td:hover,.table-highlight th:not(:empty):hover{background:rgba(210,234,238,.7)}.table-highlight td:focus:after,.table-highlight td:hover:after,.table-highlight thead th:not(:empty):focus:after,.table-highlight thead th:not(:empty):hover:after{content:'';position:absolute;left:0;top:-5000px;z-index:-1;width:100%;height:10000px;background:rgba(210,234,238,.25)}.table-highlight tbody th:not(:empty):focus:before,.table-highlight tbody th:not(:empty):hover:before,.table-highlight td:focus:before,.table-highlight td:hover:before{content:'';position:absolute;left:-5000px;top:0;z-index:-1;width:10000px;height:100%;background:rgba(210,234,238,.25);opacity:1}.table-highlight tfoot td,.table-highlight tfoot th{background-color:#fff}.table-definition{border-bottom:1px solid #bfbfbf;border-right:1px solid #bfbfbf}.table-definition td,.table-definition th{padding:15px;border-left:1px solid #d9d9d9}.table-definition>thead th{border-top:1px solid #d9d9d9;background-color:#f2f2f2}.table-definition>thead th:first-child{border-top-color:transparent;border-left-color:transparent;background-color:transparent}.table-definition>thead th:first-child+th{border-left-color:#bfbfbf}.table-definition>thead tr:first-child th:not(:first-child){border-top-color:#bfbfbf}.table-definition>tbody tr:nth-child(even) td,.table-definition>tbody tr:nth-child(even) th{background-color:#fafafa}.table-definition>tbody tr td:first-child,.table-definition>tbody tr th:first-child{border-top-color:#bfbfbf;border-left-color:#bfbfbf;background-color:#f2f2f2}.table-definition>tbody tr td:first-child+td,.table-definition>tbody tr td:first-child+th,.table-definition>tbody tr th:first-child+td,.table-definition>tbody tr th:first-child+th{border-left-color:#bfbfbf}fieldset{display:block;width:100%;padding:0;border:none;margin-top:0;margin-bottom:20px;vertical-align:100%}fieldset+fieldset{margin-top:20px}label{display:inline-block;max-width:100%;margin-bottom:5px;color:#404040}::-webkit-input-placeholder{font-size:14px;font-size:.875rem}::-moz-placeholder{font-size:14px;font-size:.875rem}:-moz-placeholder{font-size:14px;font-size:.875rem}:-ms-input-placeholder{font-size:14px;font-size:.875rem}.ctrl-input,.kui-select{display:block;width:100%;border-color:#ccc;margin-bottom:10px;border-radius:2px;color:#333;background-color:#fcfcfc;vertical-align:top;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.ctrl-input.focus,.ctrl-input:focus{outline:0;border-color:#45a7b9;background-color:#fff;box-shadow:0 0 8px rgba(69,167,185,.1)}[disabled].ctrl-input,[disabled][class*=has-].ctrl-input,[readonly].ctrl-input{color:#666;background-color:#e6e6e6;text-shadow:0 1px 2px rgba(255,255,255,.8)}[readonly].ctrl-input{cursor:not-allowed;box-shadow:none}.disabled .ctrl-input,[disabled] .ctrl-input{color:#666;background-color:#e6e6e6;text-shadow:0 1px 2px rgba(255,255,255,.8)}input[type=color],input[type=file],input[type=image],input[type=range]{width:auto;padding:0;border:none;background-color:transparent;box-shadow:none}input[type=color]{display:inline-block;width:30px;height:30px}input[type=file]{padding:7px 0;vertical-align:top}input[type=range]{width:100%;vertical-align:top}select.ctrl-input{padding-right:32px;-webkit-appearance:none;-moz-appearance:none;background-position:right center;background-repeat:no-repeat;background-image:url(img/kule/select-arrow-small.png);background-size:contain}select.ctrl-input.inline{width:auto}select.ctrl-input[multiple]{padding:0;background-image:none}select.ctrl-input[multiple] option{padding:6px 12px;border-bottom:1px solid rgba(207,207,207,.5)}select.ctrl-input[multiple] option:last-child{border:none}.ie select.ctrl-input::-ms-expand{display:none}textarea.ctrl-input{height:8.6em;font-size:14px;font-size:.875rem}[contenteditable].ctrl-input{height:auto;max-height:16.25rem;overflow:auto;line-height:1.625;white-space:pre-wrap;word-wrap:break-word;resize:vertical}[contenteditable=false].ctrl-input{color:#666;background-color:#e6e6e6;text-shadow:0 1px 2px rgba(255,255,255,.8);cursor:not-allowed}[data-device=desktop].chrome input[type=date],[data-device=desktop].chrome input[type=datetime-local],[data-device=desktop].chrome input[type=month],[data-device=desktop].chrome input[type=time],[data-device=desktop].chrome input[type=week],[data-device=desktop].opera input[type=date],[data-device=desktop].opera input[type=datetime-local],[data-device=desktop].opera input[type=month],[data-device=desktop].opera input[type=time],[data-device=desktop].opera input[type=week]{padding:4px 10px}.btn,.btn-module,.btn-outline{position:relative;z-index:1;width:auto;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;-ms-touch-action:manipulation;touch-action:manipulation;text-align:center;white-space:nowrap;font-size:16px;font-size:1rem;font-weight:500;background-image:none;cursor:pointer;border-radius:2px;color:rgba(0,0,0,.87)}.btn-module.focus,.btn-module:hover,.btn-outline.focus,.btn-outline:hover,.btn.focus,.btn:hover{z-index:3;text-decoration:none}.btn-module:active,.btn-outline:active,.btn:active{top:1px}.btn-module:active.active,.btn-outline:active.active,.btn:active.active{top:0}.btn-module.disabled,.btn-module[class*=color-].disabled,.btn-module[class*=color-][disabled],.btn-module[disabled],.btn-outline.disabled,.btn-outline[class*=color-].disabled,.btn-outline[class*=color-][disabled],.btn-outline[disabled],.btn.disabled,.btn[class*=color-].disabled,.btn[class*=color-][disabled],.btn[disabled]{pointer-events:none;opacity:.5;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);filter:alpha(opacity=50);box-shadow:none;cursor:not-allowed}.btn-module.block,.btn-outline.block,.btn.block{width:100%}.btn{text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 -18px 36px rgba(0,0,0,.05)}.btn.focus,.btn:hover{box-shadow:inset 0 0 36px rgba(255,255,255,.35)}.btn.active,.btn:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5)}.btn-outline{padding:5px 12px;border-width:2px;background-color:transparent;text-shadow:none}.btn-outline.focus,.btn-outline:hover{text-shadow:none;box-shadow:none}.btn-outline.active,.btn-outline:active{box-shadow:none}.btn-rounded{padding-right:18px;padding-left:18px;border-radius:18px}.btn-link{display:inline-block;vertical-align:top;min-height:36px;line-height:22px;padding:6px 12px;border-width:1px;border-style:solid;font-size:inherit;border-color:transparent;color:#2f8392}.btn-link:hover{text-decoration:underline}.btn-wide{min-width:79.2px}.btn-wide.size-xxs{min-width:44px}.btn-wide.size-xs{min-width:52.8px}.btn-wide.size-sm{min-width:66px}.btn-wide.size-lg{min-width:105.6px}.btn-wide.size-xl{min-width:132px}.btn-wide.size-xxl{min-width:158.4px}.btn-upload{position:relative;overflow:hidden;margin-bottom:10px}.btn-upload input{position:absolute;top:0;right:0;z-index:2;width:200%;height:100%;padding:0;opacity:0;cursor:pointer}.img-rounded{border-radius:8px}.img-circle{border-radius:50%}.img-polaroid{padding:8px;border-radius:0;background-color:#fff;box-shadow:0 2px 6px rgba(0,0,0,.15)}.avatar{display:inline-block;position:relative;width:48px;height:48px;vertical-align:top}.avatar img{width:100%;height:100%;border-radius:4px}.avatar.size-xxs{width:16px;height:16px;border-radius:2px}.avatar.size-xs{width:24px;height:24px;border-radius:2px}.avatar.size-sm{width:32px;height:32px}.avatar.size-lg{width:64px;height:64px}.avatar.size-xl{width:96px;height:96px;border-radius:8px}.avatar.size-xxl{width:128px;height:128px;border-radius:8px}.avatar.size-auto{width:100%}.avatar-bordered{border:3px solid rgba(255,255,255,.5);box-shadow:0 3px 10px rgba(0,0,0,.25)}.avatar-bordered.size-xxs{border-width:1px}.avatar-bordered.size-xs{border-width:2px}.avatar-bordered.size-xl{border-width:4px}.avatar-bordered.size-xxl{border-width:5px}.avatar-circle img,.avatar-circle[class*=size-] img{border-radius:50%}img.avatar-child{position:absolute;width:60%;height:60%;bottom:-20%;right:-20%;border:2px solid #fff}.adorn{min-width:36px;min-height:36px;line-height:22px;padding:6px 6px;border:1px solid #cfcfcf;text-align:center;font-size:14px;font-size:.875rem;font-family:Roboto,'Helvetica Neue',Helvetica,Arial;font-weight:700;color:#4d4d4d;background-color:#e6e6e6;text-shadow:0 1px 1px rgba(255,255,255,.65)}.adorn .icon{text-shadow:none}.badge{position:relative;top:-1px;line-height:1em;padding:2px 4px;vertical-align:baseline;font-size:14px;font-size:.875rem;border-radius:8px;text-shadow:none;color:rgba(255,255,255,.87);background-color:#646f71}.active>.badge,.active>a>.badge{color:#45a7b9;background:rgba(255,255,255,.87)}.color-primary .badge{color:#45a7b9}.color-secondary .badge{color:#55b3e9}.color-focus .badge{color:#f45b8a}.color-common .badge{color:#374e52}.color-success .badge{color:#82ba29}.color-warning .badge{color:#f38b2e}.color-error .badge{color:#d63a2b}[class*=color-] .badge{background:rgba(255,255,255,.87)}.jewel{display:inline-block;vertical-align:top;position:absolute;top:-6px;right:-6px;min-height:16px;line-height:1;padding:2px 3px;font-size:12px;font-size:.75rem;font-weight:700;border-radius:2px;color:#fff;background-color:#f45b8a;text-shadow:0 -1px 1px rgba(0,0,0,.2)}.label{line-height:1.1;padding:.2em .3em;margin-bottom:5px;font-size:13px;font-size:.8125rem;border-radius:2px;text-align:left;word-break:break-word;background-color:#e6e6e6}[class*=color-].label{color:rgba(255,255,255,.87)}.label.color-primary{background:#45a7b9}.label.color-secondary{background:#55b3e9}.label.color-focus{background:#f45b8a}.label.color-common{background:#374e52}.label.color-success{background:#82ba29}.label.color-warning{background:#f38b2e}.label.color-error{background:#d63a2b}.pin{display:inline-block;vertical-align:bottom}.pin:after,.pin:before{content:'';display:block;position:relative}.pin:before{z-index:2;width:24px;height:24px;border-width:6px;border-style:solid;border-color:#4c5456;border-radius:50% 50% 50% 0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);box-shadow:0 0 8px rgba(0,0,0,.1)}.pin:after{z-index:1;width:13px;height:13px;margin:-1px 0 0 6px;border-radius:50%;background:rgba(67,57,63,.1);-webkit-transform:rotateX(55deg);transform:rotateX(55deg)}.pin.pin-fill:before{background:#646f71}.pin.pin-fill.color-primary:before{background:#347d8b}.pin.pin-fill.color-secondary:before{background:#1d9ae1}.pin.pin-fill.color-focus:before{background:#f01f5f}.pin.pin-fill.color-common:before{background:#1d2a2c}.pin.pin-fill.color-success:before{background:#5d861d}.pin.pin-fill.color-warning:before{background:#d56b0c}.pin.pin-fill.color-error:before{background:#a22b1f}.pin.size-sm:before{width:16px;height:16px;border-width:5px}.pin.size-sm:after{width:10px;height:10px;margin:-2px 0 0 3px}.pin.size-lg:before{width:32px;height:32px;border-width:7px}.pin.size-lg:after{width:16px;height:16px;margin:0 0 0 8px}.pin.color-primary:before{border-color:#45a7b9}.pin.color-secondary:before{border-color:#55b3e9}.pin.color-focus:before{border-color:#f45b8a}.pin.color-common:before{border-color:#374e52}.pin.color-success:before{border-color:#82ba29}.pin.color-warning:before{border-color:#f38b2e}.pin.color-error:before{border-color:#d63a2b}.ribbon{display:inline-block;position:relative;line-height:1.2;width:36px;min-height:64px;padding:18px 5px;margin-bottom:36px;font-size:12px;font-size:.75rem;font-weight:700;text-align:center;vertical-align:top;text-shadow:0 -1px 1px rgba(0,0,0,.3);color:rgba(255,255,255,.87);background-color:#646f71}.ribbon:after,.ribbon:before{content:'';position:absolute;left:0;width:100%}.ribbon:before{top:5px;border-top:1px dotted rgba(0,0,0,.15);border-bottom:1px dotted rgba(255,255,255,.25)}.ribbon:after{bottom:-18px;border-width:0 18px 18px;border-style:solid;border-color:#646f71 #646f71 transparent #646f71}.ribbon.color-primary{background-color:#3e96a6}.ribbon.color-primary:after{border-color:#3e96a6 #3e96a6 transparent #3e96a6}.ribbon.color-secondary{background-color:#3ea9e6}.ribbon.color-secondary:after{border-color:#3ea9e6 #3ea9e6 transparent #3ea9e6}.ribbon.color-focus{background-color:#f24379}.ribbon.color-focus:after{border-color:#f24379 #f24379 transparent #f24379}.ribbon.color-common{background-color:#2d3f43}.ribbon.color-common:after{border-color:#2d3f43 #2d3f43 transparent #2d3f43}.ribbon.color-success{background-color:#73a524}.ribbon.color-success:after{border-color:#73a524 #73a524 transparent #73a524}.ribbon.color-warning{background-color:#f27e16}.ribbon.color-warning:after{border-color:#f27e16 #f27e16 transparent #f27e16}.ribbon.color-error{background-color:#c23326}.ribbon.color-error:after{border-color:#c23326 #c23326 transparent #c23326}.ribbon.size-lg{min-height:72px;font-size:16px;font-size:1rem;width:48px}.ribbon.size-lg:after{bottom:-24px;border-width:0 24px 24px}.ribbon.size-xl{min-height:96px;font-size:24px;font-size:1.5rem;width:72px}.ribbon.size-xl:after{bottom:-36px;border-width:0 36px 36px}.ribbon-flag{display:inline-block;width:0;height:24px;border-right:8px solid #646f71;border-left:8px solid #707c7f;border-bottom:8px solid transparent}.ribbon-flag.color-primary{border-left-color:rgba(69,167,185,.87);border-right-color:rgba(62,150,166,.87)}.ribbon-flag.color-secondary{border-left-color:rgba(85,179,233,.87);border-right-color:rgba(62,169,230,.87)}.ribbon-flag.color-focus{border-left-color:rgba(244,91,138,.87);border-right-color:rgba(242,67,121,.87)}.ribbon-flag.color-common{border-left-color:rgba(55,78,82,.87);border-right-color:rgba(45,63,67,.87)}.ribbon-flag.color-success{border-left-color:rgba(130,186,41,.87);border-right-color:rgba(115,165,36,.87)}.ribbon-flag.color-warning{border-left-color:rgba(243,139,46,.87);border-right-color:rgba(242,126,22,.87)}.ribbon-flag.color-error{border-left-color:rgba(214,58,43,.87);border-right-color:rgba(194,51,38,.87)}.ribbon-banner{position:relative;padding:5px;margin:0 30px 20px;background-color:grey;box-shadow:0 1px 2px rgba(0,0,0,.2),inset 0 -26px 52px rgba(0,0,0,.1);border-top-left-radius:2px;border-top-right-radius:2px}.ribbon-banner:after,.ribbon-banner:before{content:'';position:absolute;bottom:-10px;z-index:-1;border:20px solid #4d4d4d}.ribbon-banner:before{left:-29px;border-left-color:transparent}.ribbon-banner:after{right:-29px;border-right-color:transparent}.ribbon-content{position:relative;z-index:2;line-height:1.5;padding:5px;border:1px dashed rgba(255,255,255,.25);font-size:20px;font-size:1.25rem;font-weight:500;text-align:center;text-shadow:0 -1px 1px rgba(0,0,0,.2);color:rgba(255,255,255,.87);box-shadow:0 0 2px rgba(0,0,0,.2);border-radius:2px}.ribbon-content:after,.ribbon-content:before{content:'';position:absolute;bottom:-15px;z-index:1;border-style:solid;border-color:#333 transparent transparent transparent}.ribbon-content:before{left:-6px;border-width:10px 0 0 10px}.ribbon-content:after{right:-6px;border-width:10px 10px 0 0}.ribbon-banner.color-primary{background-color:#45a7b9}.ribbon-banner.color-primary:after,.ribbon-banner.color-primary:before{border-color:#307582}.ribbon-banner.color-primary .ribbon-content:after,.ribbon-banner.color-primary .ribbon-content:before{border-top-color:#23545c}.ribbon-banner.color-secondary{background-color:#55b3e9}.ribbon-banner.color-secondary:after,.ribbon-banner.color-secondary:before{border-color:#3c7da3}.ribbon-banner.color-secondary .ribbon-content:after,.ribbon-banner.color-secondary .ribbon-content:before{border-top-color:#2b5a75}.ribbon-banner.color-focus{background-color:#f45b8a}.ribbon-banner.color-focus:after,.ribbon-banner.color-focus:before{border-color:#ab4061}.ribbon-banner.color-focus .ribbon-content:after,.ribbon-banner.color-focus .ribbon-content:before{border-top-color:#7a2d45}.ribbon-banner.color-common{background-color:#374e52}.ribbon-banner.color-common:after,.ribbon-banner.color-common:before{border-color:#273739}.ribbon-banner.color-common .ribbon-content:after,.ribbon-banner.color-common .ribbon-content:before{border-top-color:#1b2729}.ribbon-banner.color-success{background-color:#82ba29}.ribbon-banner.color-success:after,.ribbon-banner.color-success:before{border-color:#5b821d}.ribbon-banner.color-success .ribbon-content:after,.ribbon-banner.color-success .ribbon-content:before{border-top-color:#415d15}.ribbon-banner.color-warning{background-color:#f38b2e}.ribbon-banner.color-warning:after,.ribbon-banner.color-warning:before{border-color:#aa6120}.ribbon-banner.color-warning .ribbon-content:after,.ribbon-banner.color-warning .ribbon-content:before{border-top-color:#7a4617}.ribbon-banner.color-error{background-color:#d63a2b}.ribbon-banner.color-error:after,.ribbon-banner.color-error:before{border-color:#96291e}.ribbon-banner.color-error .ribbon-content:after,.ribbon-banner.color-error .ribbon-content:before{border-top-color:#6b1d15}.ribbon-banner[class*=color-]:before{border-left-color:transparent}.ribbon-banner[class*=color-]:after{border-right-color:transparent}.caret{position:relative;top:-1px;display:inline-block;width:0;height:0;border-top:.3em solid;border-right:.3em solid transparent;border-bottom:none;border-left:.3em solid transparent;margin-left:5px;vertical-align:middle}.caret:only-child{margin:0}.caret-top{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.caret-right{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.caret-left{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.accordion{margin-bottom:20px}.accordion-header{padding:10px 20px;font-size:18px;font-size:1.125rem;color:rgba(0,0,0,.54);cursor:pointer}.accordion-header .caret{margin-right:5px;margin-left:2px;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.accordion-header.active,.accordion-header:hover{color:rgba(0,0,0,.87)}.accordion-header.active .caret{-webkit-transform:rotate(0);transform:rotate(0)}.accordion-header.active+.accordion-content{height:auto;padding:0 40px 10px;opacity:1}.accordion-content{height:0;overflow:hidden;padding:0 40px;opacity:0}.accordion-bordered{border:1px solid #cfcfcf;background-color:#fff;border-radius:4px;box-shadow:0 2px 6px rgba(0,0,0,.05)}.accordion-bordered>.accordion-header:not(:first-child){border-top:1px solid rgba(207,207,207,.6)}.accordion-separated .accordion-header{background-color:rgba(0,0,0,.05)}.accordion-separated .accordion-header:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.accordion-separated .accordion-header:not(:first-child){margin-top:5px}.accordion-separated .accordion-header:hover{background-color:rgba(0,0,0,.1)}.accordion-separated .accordion-header.active{color:#fff;background-color:#3892a2}.accordion-separated .accordion-header.active+.accordion-content{padding:10px 38px;margin-bottom:10px}.accordion-separated .accordion-content{border:2px solid #3892a2;background-color:#fff}.accordion-separated .accordion-content:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.accordion-side .accordion-header{padding:3px 0;margin-top:5px;font-size:16px;font-size:1rem}.accordion-side .accordion-header.active+.accordion-content{padding:0;margin-bottom:10px}.accordion-side .accordion-content{padding:0;font-size:14px;font-size:.875rem}.accordion-side:first-child .accordion-header:first-child{margin-top:0}.accordion-side .nav-side{padding:8px 10px 8px 20px}.crumb{display:inline-block;padding:2px 0;font-size:13px;font-size:.8125rem;color:grey}.crumb-end,.crumb-item,.crumb-text{display:inline-block;position:relative;line-height:1;vertical-align:top;background-color:transparent}.crumb-end,.crumb-link,.crumb-text{padding:8px 0}.crumb-item+.crumb-item>.crumb-link{padding-left:4px}.crumb-item:hover>.crumb-link{text-decoration:underline}.crumb-item>a{display:inline-block;color:#2f8392;background-color:transparent}.crumb-end:before{padding-right:4px}.crumb-end:before,.crumb-item+.crumb-item:before{content:'/';display:inline-block;line-height:1;vertical-align:middle}.card,.panel{display:block;position:relative;border-width:1px;border-style:solid;background-color:#fff}.card-title,.panel-title{line-height:1.2;font-size:20px;font-size:1.25rem}.card-subtitle,.panel-subtitle{color:grey}.card-box,.card-header,.panel-box,.panel-header{position:relative;padding:10px}.card-header,.panel-header{border-bottom:1px solid rgba(0,0,0,.12);background-color:#f2f2f2}.card-header:last-child,.panel-header:last-child{border-bottom:0}.card-footer,.panel-footer{position:relative;padding:10px;border-top:1px solid rgba(0,0,0,.12);font-size:14px;font-size:.875rem;color:#4d4d4d;background-color:#fafafa}.card-footer:first-child,.panel-footer:first-child{border-top:0}.card-toolbar,.panel-toolbar{z-index:2;border-bottom:1px solid #cfcfcf;background-color:#fff;box-shadow:0 2px 3px rgba(0,0,0,.05)}.card-toolbar .ctrl-input,.panel-toolbar .ctrl-input{display:inline-block;width:auto;margin-right:6px;margin-bottom:0}.card-img,.panel-img{width:100%}.cards{padding:10px 0}.cards:first-child{padding-top:0}.card{margin-bottom:20px;border-color:rgba(0,0,0,.12);border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.05)}.card .list-grp:first-child .list-grp-item:first-child,.card .thumbnail:first-child,.card [class*=card-]:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.card .list-grp:last-child .list-grp-item:last-child,.card .thumbnail:last-child,.card [class*=card-]:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}@media (min-width:992px){.card{margin-bottom:20px}}[class*=col-]>.card{margin-bottom:0}.card-link{display:inline-block;margin-right:10px;color:#2f8392}.card-link:hover{text-decoration:underline}.card-header{border-top-left-radius:2px;border-top-right-radius:2px}.card-close{position:absolute;top:50%;right:10px;width:24px;height:24px;line-height:1;margin-top:-12px;text-align:center;font-size:24px;font-size:1.5rem;color:grey}.card-close:hover{color:#4d4d4d}.card-footer{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.card .list-grp-item{border-width:1px 0}.card .list-grp-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.card .list-grp-item:last-child{border-bottom-left-radius:0;border-bottom-right-radius:0}.card .thumbnail{border-radius:0}.card .flex-media:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.card .flex-media:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.card[class*=color-]{color:#fff;border-width:0}.card[class*=color-] .card-link{color:#fff}.card[class*=color-] .card-footer,.card[class*=color-] .card-header{border-color:rgba(255,255,255,.2)}.card[class*=color-] .card-header{background:rgba(0,0,0,.03)}.card[class*=color-] .card-footer{color:#e6e6e6;background:rgba(0,0,0,.06)}.card.color-primary{background-color:#45a7b9}.card.color-secondary{background-color:#55b3e9}.card.color-focus{background-color:#f45b8a}.card.color-common{background-color:#374e52}.card.color-success{background-color:#82ba29}.card.color-warning{background-color:#f38b2e}.card.color-error{background-color:#d63a2b}.choice-item{display:inline-block;margin:0 6px 10px 0;cursor:pointer;vertical-align:top}.choice-input{display:none}.choice-input:checked+.choice-label{border-color:rgba(0,0,0,.54)}.choice-label{display:block;min-width:36px;height:36px;line-height:32px;border:2px solid rgba(128,128,128,.3);text-align:center;font-size:14px;font-size:.875rem;background-color:#fff;cursor:pointer}.counter{display:inline-block;height:20px;margin-right:5px;margin-bottom:5px;font-size:12px;font-size:.75rem;white-space:nowrap}.counter .btn,.counter .counter-box{vertical-align:top}.counter-box{display:inline-block;position:relative;height:20px;line-height:14px;padding:3px;border:1px solid #b5b5b5;margin-left:2px;color:#4d4d4d;box-shadow:inset 0 0 3px rgba(0,0,0,.05);background-color:#fafafa;white-space:nowrap;border-radius:2px}.counter-box:after,.counter-box:before{content:'';position:absolute;top:50%;width:0;height:0;border-style:solid}.counter-box:before{left:-6px;margin-top:-5px;border-width:5px 6px 5px 0;border-color:transparent #b5b5b5 transparent transparent}.counter-box:after{left:-4px;margin-top:-4px;border-width:4px 4px 4px 0;border-color:transparent #fafafa transparent transparent}summary::-webkit-details-marker{display:none}details{margin-bottom:2px}details summary{position:relative;padding:4px 24px;border-radius:2px;color:#e6e6e6;background-color:grey;cursor:pointer;-webkit-transition:all .4s;transition:all .4s}details summary:before{content:'+';position:absolute;left:8px}details summary:hover{color:#fff}details[open] summary{border-bottom-left-radius:0;border-bottom-right-radius:0;color:#fff;background-color:#45a7b9}details[open] summary:before{content:'-'}details[open] summary:hover{color:#fff}details[open] summary+.details-content{display:block}.details-content{display:none;padding:10px 10px 10px 24px;background-color:#e6e6e6;border-radius:0 2px 2px 0}.divider,.divider-vertical{text-align:center;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;font-size:13px;font-size:.8125rem;color:grey;text-shadow:0 1px 1px #fff;cursor:default}.divider{display:table;line-height:1;margin:20px 0}.divider:after,.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-image:url(img/kule/divider.jpg);background-repeat:no-repeat}.divider:before{background-position:right 1em top 50%}.divider:after{background-position:left 1em top 50%}.divider-vertical{position:absolute;z-index:2;top:50%;left:50%;width:auto;height:50%;line-height:0;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.divider-vertical:after,.divider-vertical:before{content:'';position:absolute;left:50%;z-index:3;width:0;height:calc(100% - 1.2rem);border-left:1px solid #cfcfcf;border-right:1px solid rgba(255,255,255,.05)}.divider-vertical:before{top:-100%}.divider-vertical:after{bottom:0}.drop{display:inline-block;position:relative;vertical-align:top;cursor:pointer}.drop:hover>.btn{z-index:3;box-shadow:inset 0 0 36px rgba(255,255,255,.35)}.open>.drop-box{display:block}.drop-hover:hover>.drop-box{display:block}.drop-btn{display:inline-block}.drop-btn .caret{float:right;margin-top:11px}.drop-box{display:none;position:absolute;top:100%;left:0;z-index:100;width:100%;min-width:180px;height:auto;border:1px solid rgba(207,207,207,.87);margin-top:-1px;text-align:left;border-radius:0 0 4px 4px;box-shadow:0 1px 6px rgba(0,0,0,.1);background-color:#fff}[class*=drop-down]{top:100%;margin-top:-1px;border-radius:0 0 4px 4px}[class*=drop-up]{top:auto;bottom:100%;margin-bottom:-1px;border-radius:4px 4px 0 0}[class*=drop-left]{left:auto;right:100%;margin-right:-1px;border-radius:4px 0 0 4px}[class*=drop-right]{left:100%;margin-left:-1px;border-radius:0 4px 4px 0}.drop-down,.drop-up{left:0}.drop-down-right,.drop-up-right{left:auto;right:0}.drop-left,.drop-right{top:1px}.drop-left-bottom,.drop-right-bottom{top:auto;bottom:0}.drop-box.menu{padding:0;font-size:14px;font-size:.875rem}.drop-box .menu-title{padding:8px 12px 0;margin-top:10px;font-weight:700;color:grey}.drop-box .menu-title:first-child{margin-top:0}.drop-box .menu-item{position:relative;width:100%;line-height:1.6em;border-top:1px solid rgba(232,232,232,.87)}.drop-box .menu-item.active>.menu-link,.drop-box .menu-item:hover>.menu-link{color:#45a7b9}.drop-box .menu-item.active>.drop-box,.drop-box .menu-item:hover>.drop-box{display:block}.drop-box .menu-item.disabled{opacity:1}.drop-box .menu-item.disabled>.menu-link{color:#ccc}.drop-box .menu-item.dropdown.active>.menu-link,.drop-box .menu-item.dropdown:hover>.menu-link{padding-left:10px;border-left:2px solid #45a7b9}.drop-box .menu-link{display:block;line-height:24px;padding:8px 12px;white-space:nowrap;color:#333;-webkit-transition-property:color;transition-property:color}.drop-box .menu-search{border-top:1px solid rgba(232,232,232,.87)}.drop-box .menu-search:first-child{border-top-width:0}.drop-box .menu-search input{width:100%;padding:12px;border:none;color:#666;background-color:rgba(230,230,230,.9)}.drop-box .menu-divider{width:100%;height:0;overflow:hidden;border-top:1px solid rgba(207,207,207,.8);margin:5px 0}.drop-box .menu-divider+.menu-item,.drop-box .menu-item:first-child,.drop-box .menu-title+.menu-item{border-top:0}.inverse .drop-box{color:#b3b3b3;border-color:transparent;background-color:#2e2e2e}.inverse .drop-box.menu .menu-title{color:#a6a6a6}.inverse .drop-box.menu .menu-item{border-top-color:#262626}.inverse .drop-box.menu .menu-item a{color:#b3b3b3}.inverse .drop-box.menu .menu-item:hover a{color:#45a7b9}.endorseds{padding:5px 0}.endorsed{position:relative;margin-bottom:10px;border-radius:4px;-webkit-transition:padding .5s;transition:padding .5s}.endorsed:empty{display:none}.endorsed.empty{padding-top:0;padding-bottom:0}.endorsed-item-counter,.endorsed-item-name,.endorsed-item-remove{display:table-cell;padding:2px 6px;text-align:center;vertical-align:middle}.endorsed-item{display:inline-table;overflow:hidden;margin:5px 5px 0 0;font-size:14px;font-size:.875rem;border-radius:2px;background-color:#e6e6e6;box-shadow:0 1px 2px rgba(0,0,0,.05);cursor:default;-webkit-transition:.5s cubic-bezier(.175,.885,.32,1.275);transition:.5s cubic-bezier(.175,.885,.32,1.275)}.endorsed-item:hover{background-color:#ebebeb}.endorsed-item:hover .endorsed-item-counter{opacity:.8}.endorsed-item.out{color:#fff;background-color:#45a7b9;opacity:0;-webkit-transform:translateY(-110%);transform:translateY(-110%)}.endorsed-item.out .endorsed-item-remove{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.1)}.endorsed-item-counter{min-width:26px;border-top-left-radius:2px;border-bottom-left-radius:2px;color:#fff;background-color:#45a7b9;opacity:1}.endorsed-item-counter:empty{display:none}.endorsed-item-name{max-width:200px;overflow:hidden;padding:4px 6px;white-space:nowrap;-ms-text-overflow:ellipsis;-o-text-overflow:ellipsis;text-overflow:ellipsis}.endorsed-item-remove{line-height:1;padding:4px 8px 4px 4px;font-size:18px;font-size:1.125rem;color:#999;text-shadow:0 1px 0 rgba(255,255,255,.5);opacity:.85;background:0 0;-webkit-transition:opacity .3s;transition:opacity .3s}.endorsed-item-remove:hover{opacity:1}.flex-media{position:relative;height:0;overflow:hidden;padding-bottom:56.25%}.flex-media .flex-media-img,.flex-media embed,.flex-media iframe,.flex-media object{position:absolute;top:0;left:0;width:100%;height:100%}.flex-media-img{background-repeat:no-repeat;background-position:center top;background-size:cover}.flex-1-1{padding-bottom:100%}.flex-9-16{padding-bottom:177.77777778%}.flex-4-3{padding-bottom:75%}.flex-3-4{padding-bottom:133.33333333%}.flex-3-2{padding-bottom:66.66666667%}.flex-2-3{padding-bottom:150%}.ctrl-grp{margin-bottom:10px}.ctrl-grp.inline{margin-bottom:0;vertical-align:top}.ctrl-grp .ctrl-input{margin-bottom:5px}.ctrl-img{position:relative;max-width:100%;overflow:hidden;margin-bottom:10px}.ctrl-img.dynamic>img{position:absolute;top:50%;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.ctrl-help{display:inline-block;font-size:14px;font-size:.875rem;color:grey}.ctrl-help:empty,.ctrl-img:empty{display:none}+.ctrls{margin-top:10px}.ctrls>.ctrl-input{margin-bottom:0}.ctrl-bottom .ctrl-input{margin-bottom:0}.ctrl-chkbox{display:block;padding:5px 0;margin-bottom:10px;font-weight:400;color:inherit}.ctrl-chkbox input{margin-right:4px;margin-bottom:2px}.ctrl-chkbox.inline{margin-right:16px}.ctrl-static{padding:6px 12px}.ctrl-note{margin:5px 0}.required-field .ctrl-label{color:#0a5269}.required-field .ctrl-label:before{content:'*';display:inline-block;margin:0 4px;vertical-align:middle}.required-field.has-error .ctrl-label{color:#d63a2b}@media (min-width:768px){.form-inline .btn,.form-inline .ctrl-chkbox,.form-inline .ctrl-grp,.form-inline .ctrl-input,.form-inline .ctrls,.form-inline label{display:inline-block;width:auto;margin-bottom:0;vertical-align:middle}.form-inline>.ctrl-chkbox,.form-inline>.ctrl-grp,.form-inline>.ctrl-input{margin-right:10px}.form-inline label{margin-right:5px}.form-inline .input-grp{display:inline-table;margin-bottom:0;vertical-align:middle}.form-inline .input-grp .ctrl-input{width:100%}.form-inline .input-grp .adorn,.form-inline .input-grp .input-grp-btn{width:auto}}.form-horizontal .ctrl-label{margin-bottom:0}@media (min-width:992px){.form-horizontal .ctrl-label{line-height:2.25;text-align:right}}.form-horizontal .input-grp{margin-bottom:0}.form-list>.ctrl-grp{margin-bottom:0}.form-list>.ctrl-grp+.ctrl-grp{border-top:1px solid #e8e8e8}.form-list .ctrl-label{line-height:2.25;margin-bottom:0;text-align:right}.btn-grp,.btn-grp-vertical{position:relative;vertical-align:top}.btn-grp-vertical>.btn,.btn-grp-vertical>.btn-outline,.btn-grp-vertical>.drop>.btn,.btn-grp>.btn,.btn-grp>.btn-outline,.btn-grp>.drop>.btn{float:left;border-radius:0}.btn-grp{display:-webkit-inline-flex;display:-moz-inline-flex;display:-ms-inline-flexbox;display:-ms-inline-flex;display:inline-flex;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-box-decoration:normal;-moz-box-decoration:normal;-webkit-flex-direction:row;-moz-flex-direction:row;-ms-flex-direction:row;flex-direction:row;margin-bottom:5px}.btn-grp>.btn,.btn-grp>.btn-outline,.btn-grp>.drop{-webkit-box-flex:1;-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.btn-grp>.btn,.btn-grp>.drop{margin-right:-1px}.btn-grp>.btn.btn-flat{margin-right:0}.btn-grp>.btn:first-child,.btn-grp>.drop:first-child>.btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.btn-grp>.btn:last-child,.btn-grp>.drop:last-child>.btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.btn-grp>.btn-outline,.btn-grp>.drop>.btn-outline{margin-right:-2px}.btn-grps>.btn-grp{margin-right:6px;white-space:nowrap}.btn-grp-vertical{display:inline-block}.btn-grp-vertical>.drop,.btn-grp-vertical>[class*=btn]{display:block;float:none;width:100%;min-width:0;max-width:100%}.btn-grp-vertical>.drop>[class*=btn]{display:block;float:none;width:100%}.btn-grp-vertical>.btn,.btn-grp-vertical>.drop{margin-bottom:-1px}.btn-grp-vertical>.btn:first-child,.btn-grp-vertical>.drop:first-child>.btn{border-top-left-radius:2px;border-top-right-radius:2px}.btn-grp-vertical>.btn:last-child,.btn-grp-vertical>.drop:last-child>.btn{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.btn-grp-vertical>.btn-outline,.btn-grp-vertical>.drop>.btn-outline{margin-bottom:-2px}.btn-grps-vertical{display:inline-block}.btn-grps-vertical>.btn-grp-vertical{display:block;margin-bottom:10px}.input-grp{display:table;border-collapse:separate;margin-bottom:10px}.input-grp>.adorn,.input-grp>.ctrl-input,.input-grp>.input-grp-btn,.input-grp>.kui-input,.input-grp>.kui-select{display:table-cell;position:relative;margin-bottom:0;border-radius:0;vertical-align:top}.input-grp>.adorn:first-child,.input-grp>.ctrl-input:first-child,.input-grp>.input-grp-btn:first-child,.input-grp>.kui-input:first-child,.input-grp>.kui-select:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.input-grp>.adorn:last-child,.input-grp>.ctrl-input:last-child,.input-grp>.input-grp-btn:last-child,.input-grp>.kui-input:last-child,.input-grp>.kui-select:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.input-grp>.kui-input .ctrl-input{border-radius:0}.input-grp>.kui-input:first-child .ctrl-input{border-top-left-radius:2px;border-bottom-left-radius:2px}.input-grp>.kui-input:last-child .ctrl-input{border-top-right-radius:2px;border-bottom-right-radius:2px}.input-grp .btn-grp{margin-bottom:0}.input-grp>.ctrl-input,.input-grp>.kui-input{z-index:5}.input-grp>.adorn{border-right-width:0;border-left-width:0}.input-grp>.adorn:first-child{border-left-width:1px}.input-grp>.adorn:last-child{border-right-width:1px}.input-grp>.adorn>input{margin-top:-3px}.input-grp>.adorn,.input-grp>.input-grp-btn{width:1%;white-space:nowrap}.input-grp-btn>.btn,.input-grp-btn>.drop>.btn{border-radius:0}.input-grp-btn:first-child>.btn:first-child,.input-grp-btn:first-child>.drop:first-child>.btn{border-top-left-radius:2px;border-bottom-left-radius:2px}.input-grp-btn:last-child>.btn:last-child,.input-grp-btn:last-child>.drop:last-child>.btn{border-top-right-radius:2px;border-bottom-right-radius:2px}.input-grp-btn>.btn:not(:last-child),.input-grp-btn>.drop:not(:last-child){margin-right:-6px}@media (min-width:768px){.input-grp-btn>.btn:not(:last-child),.input-grp-btn>.drop:not(:last-child){margin-right:-5px}}.input-grp-btn:first-child>.btn:last-child,.input-grp-btn:first-child>.btn:not(:only-child)+.drop,.input-grp-btn:first-child>.drop:last-child,.input-grp-btn:first-child>.drop:only-child{margin-right:-1px}.input-grp-btn:first-child>.btn:only-child:last-child{margin-right:-2px}.input-grp-btn:last-child>.btn:first-child,.input-grp-btn:last-child>.drop:first-child{margin-left:-1px}.input-grp-btn:not(:first-child):not(:last-child)>.btn:first-child,.input-grp-btn:not(:first-child):not(:last-child)>.drop:first-child{margin-left:-1px}.input-grp-btn:not(:first-child):not(:last-child)>.btn:last-child,.input-grp-btn:not(:first-child):not(:last-child)>.drop:last-child{margin-right:-1px}.input-grp-btn:not(:first-child):not(:last-child)>.btn:only-child{margin-right:-2px}.list-grp-item{display:block;position:relative;width:100%;padding:8px 16px;border:1px solid #cfcfcf;margin-bottom:-1px;text-align:left;color:#4d4d4d}.list-grp-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-grp-item:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}[type=button].list-grp-item,a.list-grp-item,button.list-grp-item{line-height:inherit;background-color:#fff}[type=button].list-grp-item:hover,a.list-grp-item:hover,button.list-grp-item:hover{background-color:#ededed}.list-grp-item.active,.list-grp-item.active:hover{z-index:2;color:#fff;border-color:#45a7b9;background-color:#45a7b9}.list-grp-item.disabled,[disabled].list-grp-item{opacity:1;color:#999;background-color:#e0e0e0}.list-grp-item.disabled>.badge,[disabled].list-grp-item>.badge{opacity:.5}.list-grp-item>.badge{float:right;margin:3px 0}.list-grp-item>.caret{float:right;margin-top:11px}.list-grp-item.drop>.drop-box{width:auto}.list-grp-item.drop>.drop-box.drop-left,.list-grp-item.drop>.drop-box.drop-right{top:0}.img-grp{margin:-2%}.img-grp-item{position:relative;float:left;width:16%;padding-bottom:16%;margin:2%;overflow:hidden;background-color:#fff}.img-grp-item img{position:absolute;top:0;left:0;width:100%;height:auto;min-height:100%}.kui-input{display:block;position:relative;width:100%;height:36px;margin-bottom:10px;vertical-align:top}.kui-input .ctrl-input{position:absolute;top:0;left:0;z-index:1}.kui-input.has-icon .ctrl-input{padding-right:36px}.kui-input .append{right:6px}.kui-select{position:relative;z-index:10;background:url(img/kule/select-arrow-small.png) no-repeat right center;cursor:pointer}.kui-select:hover{z-index:11}.kui-select.active,.kui-select:active{z-index:20;border-bottom:0}.kui-select .select-options:hover,.kui-select.active .select-options,.kui-select:active .select-options{display:block;z-index:21;box-shadow:0 2px 5px rgba(69,167,185,.25)}.kui-select.disabled,.kui-select[disabled]{z-index:1;opacity:.5}.kui-select.has-icon{padding-right:62px}.kui-select .append{right:32px}.select-text{color:inherit}.select-text.default{color:#b3b3b3}.select-options,.select-options .opt-item{background-color:#fff}.select-options{display:none;position:absolute;top:-1px;left:-1px;z-index:21;width:100%;overflow-x:hidden;overflow-y:auto;max-height:176px;border:1px solid #45a7b9;box-sizing:content-box;border-radius:2px;box-shadow:0 0 8px rgba(69,167,185,.2)}.select-options .opt-caption,.select-options .opt-item{border-top:1px solid rgba(204,204,204,.5);padding:6px 12px}.select-options .opt-caption:first-child,.select-options .opt-item:first-child{border-top-color:transparent;border-top-left-radius:2px;border-top-right-radius:2px}.select-options .opt-caption:last-child,.select-options .opt-item:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.select-options .opt-caption{color:#666;border-top:1px solid #ccc}.select-options .opt-caption~.opt-item{padding-left:24px}.select-options .opt-item{padding:6px 12px;cursor:pointer}.select-options .opt-item:hover{background-color:#e6e6e6}.select-options .opt-item.selected{color:#45a7b9;font-weight:500}.kui-opt{display:inline-block;margin-bottom:10px;margin-right:20px}.kui-opt input{display:none}.kui-opt input:checked+.kui-opt-input{color:#333}.kui-opt input:checked+.kui-opt-input:before{border-color:transparent;background-color:#45a7b9;box-shadow:0 1px 3px rgba(0,0,0,.1)}.kui-opt input:checked+.kui-opt-input:after{top:13px;opacity:1}.kui-opt [type=checkbox]+.kui-opt-input:before{border-radius:2px}.kui-opt [type=checkbox]+.kui-opt-input:after{top:15px;width:14px;height:8px;margin-top:-6px;border-width:0 0 2px 2px;border-style:solid;border-color:#fff;-webkit-transform:rotate(-45deg) scale(1.5);transform:rotate(-45deg) scale(1.5)}.kui-opt [type=checkbox]:checked+.kui-opt-input:after{-webkit-transform:rotate(-45deg) scale(1);transform:rotate(-45deg) scale(1)}.kui-opt [type=radio]+.kui-opt-input:after,.kui-opt [type=radio]+.kui-opt-input:before{border-radius:50%}.kui-opt [type=radio]+.kui-opt-input:after{top:15px;width:14px;height:14px;border:2px solid #fff;margin-top:-7px;-webkit-transform:scale(1.5);transform:scale(1.5);background-color:#45a7b9}.kui-opt [type=radio]:checked+.kui-opt-input:after{-webkit-transform:scale(1);transform:scale(1)}.ctrl-helper .kui-opt{margin:5px 5px 5px 0}.kui-opt-input{display:block;position:relative;line-height:26px;padding-left:26px;font-size:14px;font-size:.875rem;color:inherit}.kui-opt-input:after,.kui-opt-input:before{content:'';position:absolute;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1.275);transition:.4s cubic-bezier(.175,.885,.32,1.275)}.kui-opt-input:before{top:50%;left:0;width:20px;height:20px;border:2px solid #ccc;margin-top:-10px;vertical-align:text-bottom;background-color:#fff}.kui-opt-input:after{left:3px;z-index:2;opacity:0}.kui-opt-input:active:before{-webkit-transform:scale(.85);transform:scale(.85)}.kui-input .icon,.kui-select .icon{position:absolute;top:50%;z-index:2;width:24px;height:24px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.kui-input .prepend,.kui-select .prepend{left:6px}.kui-input.has-icon .ctrl-input,.kui-select.has-icon{padding-left:36px}.loading{position:fixed;left:50%;width:64px;margin-left:-32px;top:50%;height:64px;margin-top:-32px;z-index:10001}.loading:after,.loading:before{content:'';display:block;position:absolute;-webkit-transition:all 1s ease-in;transition:all 1s ease-in;border-width:1px;border-style:solid;border-radius:50%}.loading:before{top:-4px;left:-4px;width:72px;height:72px;border-color:#45a7b9 transparent transparent #45a7b9;box-shadow:0 0 10px rgba(69,167,185,.2);-webkit-animation:loading-circle-outer 1.25s linear infinite;animation:loading-circle-outer 1.25s linear infinite}.loading:after{top:1px;left:1px;width:62px;height:62px;border-color:transparent #add8e0 #add8e0 transparent;box-shadow:0 0 10px rgba(69,167,185,.2);-webkit-animation:loading-circle-inner 1s linear infinite;animation:loading-circle-inner 1s linear infinite}.loading-text{display:block;line-height:20px;padding:22px 0;font-size:12px;font-weight:500;font-family:Roboto;text-align:center;color:grey;-webkit-animation:loading-text-effect 1.25s linear infinite;animation:loading-text-effect 1.25s linear infinite}@-webkit-keyframes loading-text-effect{0%{-webkit-opacity:.5;color:grey}50%{-webkit-opacity:1;color:#45a7b9}100%{-webkit-opacity:.5;color:grey}}@keyframes loading-text-effect{0%{opacity:.5;color:grey}50%{opacity:1;color:#45a7b9}100%{opacity:.5;color:grey}}@-webkit-keyframes loading-circle-outer{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(360deg)}}@keyframes loading-circle-outer{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@-webkit-keyframes loading-circle-inner{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(-360deg)}}@keyframes loading-circle-inner{0%{transform:rotate(0)}100%{transform:rotate(-360deg)}}.metas{font-size:12px;font-size:.75rem;color:grey}.meta{display:inline-block;vertical-align:text-bottom}.meta+.meta:before{content:' · ';display:inline-block;margin-right:4px}.meta-link{color:grey}.meta-link:hover{color:#45a7b9;text-decoration:underline}.modal{position:absolute;top:3%;left:50%;z-index:10001;width:94%;margin-left:-47%;border-radius:8px;background-color:#fff;box-shadow:0 0 30px rgba(0,0,0,.54)}.modal .counter{margin-bottom:0}@media (min-width:768px){.modal{top:50px;width:60%;margin-left:-30%}}.modal-box,.modal-header{position:relative}.modal-box:first-child,.modal-header:first-child{border-top-left-radius:8px;border-top-right-radius:8px}.modal-box,.modal-footer,.modal-header:last-child{padding:20px 24px}.modal-body:last-child,.modal-box:last-child,.modal-btns:last-child,.modal-footer:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}.modal-btns{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:-ms-flex;display:flex;overflow:hidden}.modal-btns .btn{-webkit-box-flex:1;-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;width:1%;border-radius:0}.modal-btns .btn:not(.btn-flat){margin-right:-1px}.modal-header{padding:20px 24px 0}.modal-header .close{position:absolute;top:20px;right:20px;width:34px;height:34px;line-height:34px;font-size:30px;color:inherit}.modal-title{margin-right:34px;cursor:default}.modal-note{line-height:1.5em;padding:10px 24px;border-top:1px solid rgba(207,207,207,.4);border-bottom-left-radius:8px;border-bottom-right-radius:8px;background:rgba(0,0,0,.1);box-shadow:inset 0 1px 6px rgba(0,0,0,.05);font-size:14px;font-size:.875rem;color:rgba(0,0,0,.54);text-shadow:0 1px 1px #fff}.modal-overlay{opacity:.85}.nav{white-space:nowrap}.nav .caret{margin-right:5px;margin-left:5px}.nav-item{display:inline-block;position:relative;margin-right:2px;vertical-align:top}.nav-item:hover .nav-link{color:#45a7b9}.nav-item.active .nav-link{color:#2f8392}.nav-link{display:block;position:relative;padding:4px 8px;font-size:15px;font-size:.9375rem;color:inherit}.nav-side .nav-item{display:list-item;margin-bottom:10px}.nav-side .nav-item.active>.nav-link{padding:2px 0 2px 10px;border-left:2px solid #45a7b9}.nav-side .nav-link{line-height:1.3;padding:2px 0 2px 12px}.nav-pill .nav-item:hover .nav-link{color:#2f8392}.nav-pill .nav-item:hover .nav-link:after{height:100%;opacity:1}.nav-pill .nav-item.active .nav-link{color:#fff}.nav-pill .nav-item.active .nav-link:after{height:100%;opacity:1;background:#45a7b9}.nav-pill .nav-link{padding:6px 12px}.nav-pill .nav-link:after{content:'';position:absolute;left:0;bottom:0;z-index:-1;width:100%;height:2px;background:#f2f2f2;opacity:0;border-radius:4px;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1.275);transition:.4s cubic-bezier(.175,.885,.32,1.275)}.navbar{display:block;position:relative}@media (max-width:767px){.navbar .drop{display:block}.navbar .drop .caret{float:right;margin-top:11px}.navbar .drop-box{position:static;display:block;border:none;border-bottom:1px solid #d9d9d9;margin-bottom:10px;border-radius:0}.navbar .drop-box.menu{box-shadow:none}.navbar .drop-box .menu-item{border-color:#dedede}}@media (min-width:768px){.navbar-header{float:left}}.navbar-brand{float:left;height:40px;line-height:1.5em;padding:4px;margin:0 10px;font-size:20px;font-size:1.25rem;font-weight:500}@media (min-width:768px){.navbar-brand{height:auto;padding:12px 4px}}.navbar-toggle{position:relative;float:left;width:40px;height:40px;padding:5px 8px;color:#ccc;background:#666}.navbar-toggle:after,.navbar-toggle:before{content:'';display:block;position:absolute;width:60%;border-bottom:2px solid;-webkit-transition:.2s;transition:.2s}.navbar-toggle:before{top:22%;left:20%;height:11px;border-top:2px solid;-webkit-transform:translate(0,0) rotate(0);transform:translate(0,0) rotate(0)}.navbar-toggle:after{top:70%;left:20%;-webkit-transform:translate(0,0) rotate(0);transform:translate(0,0) rotate(0)}.navbar-toggle.right{float:right}.navbar-toggle.active:before{height:0;border-top:none;margin:0;-webkit-transform:translate(-50%,-50%) rotate(45deg);transform:translate(-50%,-50%) rotate(45deg)}.navbar-toggle.active:after{-webkit-transform:translate(-50%,-50%) rotate(-45deg);transform:translate(-50%,-50%) rotate(-45deg)}.navbar-toggle.active:after,.navbar-toggle.active:before{top:50%;left:50%;width:84%}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-content{display:none;background:#fff}.navbar-content.open{display:block}@media (min-width:768px){.navbar-content{display:block;background:0 0}}@media (min-width:768px){.navbar-nav{float:left}.navbar-nav.right{float:right}}@media (min-width:768px){.navbar-nav-item{float:left}.navbar-nav-item:hover .navbar-nav-link{color:#45a7b9;background:rgba(0,0,0,.05)}}.navbar-nav-item.active .navbar-nav-link{color:#fff;background:rgba(69,167,185,.9)}.navbar-nav-link{display:block;padding:7px 10px;border-bottom:1px solid #e6e6e6;color:#4d4d4d}@media (min-width:768px){.navbar-nav-link{min-width:54px;padding:14px;border-bottom:none;text-align:center}}.navbar-form{padding:9px 10px;white-space:nowrap}@media (min-width:768px){.navbar-form{float:left}.navbar-form .ctrl-input{display:inline-block;width:auto;margin-bottom:0}}.inverse{color:#ccc;background:#262626}@media (max-width:767px){.inverse.navbar .drop-box{border-bottom-color:#262626}}.inverse .navbar-brand{color:#ccc}.inverse .navbar-brand:hover{color:#fff}.inverse .navbar-content{background:#262626}.inverse .navbar-nav-link{color:#b3b3b3;border-bottom-color:#262626}.notice{position:fixed;top:50px;left:14%;width:72%;padding:10px 32px 10px 16px;border:2px solid rgba(207,207,207,.6);border-radius:4px;background-color:#fff;text-shadow:0 1px 1px rgba(255,255,255,.8);box-shadow:0 0 20px rgba(0,0,0,.1)}.notice .close{position:relative;top:3px;right:-20px}.notice.color-primary{color:#307581;border-color:#add8e0;background-color:#e4f2f5}.notice.color-success{color:#567b1b;border-color:#bde380;background-color:#e8f5d3}.notice.color-warning{color:#c9650c;border-color:#f9c99d;background-color:#fef1e5}.notice.color-error{color:#97281d;border-color:#eda9a3;background-color:#fae5e3}.notice-title+.notice-text{line-height:1.36em;font-size:14px;font-size:.875rem}.notice-corner{top:auto;left:auto;right:10px;bottom:-4px;width:300px}.pager{margin:20px 0;font-size:14px;font-size:.875rem}.pager-next,.pager-prev{display:inline-block;padding:10px 15px;margin:0 5px;border-radius:4px;color:#2f8392;background-color:#fff}.pager-next:hover,.pager-prev:hover{color:#45a7b9;background-color:rgba(0,0,0,.05)}.pager-next.disabled,.pager-prev.disabled{color:#b3b3b3;pointer-events:none}.pager-bordered .pager-next,.pager-bordered .pager-prev{border:1px solid #dbdbdb}.pager-justified .pager-prev{float:left}.pager-justified .pager-next{float:right}.pagi{margin:20px auto}.pagi.size-sm .pagi-link,.pagi.size-sm .pagi-text{min-width:24px;line-height:1.14285714em}.pagi.size-lg .pagi-link,.pagi.size-lg .pagi-text{min-width:36px;line-height:2em}.pagi-item{display:inline-block;vertical-align:top}.pagi-item:hover .pagi-link{background-color:#e6e6e6}.pagi-item.active .pagi-link{color:#fff;background-color:#2f8392;cursor:default}.pagi-link,.pagi-text{display:block;position:relative;min-width:30px;line-height:1.57142857em;padding:4px;text-align:center;font-size:14px;font-size:.875rem;border-radius:2px}.pagi-link{color:#2f8392}.pagi-text{color:grey;cursor:default}.pagi-bordered{display:inline-block;background-color:#fff}.pagi-bordered .pagi-item{display:inline}.pagi-bordered .pagi-item.active .pagi-link{z-index:2;border-color:#2f8392}.pagi-bordered .pagi-item:first-child .pagi-link,.pagi-bordered .pagi-item:first-child .pagi-text{border-top-left-radius:4px;border-bottom-left-radius:4px}.pagi-bordered .pagi-item:last-child .pagi-link,.pagi-bordered .pagi-item:last-child .pagi-text{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagi-bordered .pagi-link,.pagi-bordered .pagi-text{float:left;border:1px solid #cfcfcf;margin-right:-1px;border-radius:0}.panel{border-color:#cfcfcf;margin:0 auto 10px;border-radius:2px}.panel-header{border-top-left-radius:2px;border-top-right-radius:2px}.panel-footer{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.popup{position:absolute;width:auto;padding:10px 15px;border:1px solid #cfcfcf;margin-bottom:10px;border-radius:4px;background-color:#fff;box-shadow:0 1px 2px rgba(0,0,0,.1)}.popup:after,.popup:before{content:'';position:absolute;display:inline-block;width:0;height:0}.popup:before{left:15px;bottom:-10px;z-index:1;border-top:10px solid #cfcfcf;border-right:8px solid transparent;border-bottom:none;border-left:8px solid transparent}.popup:after{left:16px;bottom:-8px;z-index:2;border-top:8px solid #fff;border-right:7px solid transparent;border-bottom:none;border-left:7px solid transparent}.popup-content{font-size:14px;font-size:.875rem}.popup-bottom:before{left:15px;top:-10px;border-top:none;border-right:8px solid transparent;border-bottom:10px solid #cfcfcf;border-left:8px solid transparent}.popup-bottom:after{left:16px;top:-8px;border-top:none;border-right:7px solid transparent;border-bottom:8px solid #fff;border-left:7px solid transparent}.popup-left:after,.popup-left:before{left:auto}.popup-left:before{right:-10px;top:14px;border-top:8px solid transparent;border-right:none;border-bottom:8px solid transparent;border-left:10px solid #cfcfcf}.popup-left:after{right:-8px;top:15px;border-top:7px solid transparent;border-right:none;border-bottom:7px solid transparent;border-left:8px solid #fff}.popup-left:after,.popup-left:before,.popup-right:after,.popup-right:before{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.popup-left:after,.popup-left:before{left:auto}.popup-left:before{right:-10px;border-top:8px solid transparent;border-right:none;border-bottom:8px solid transparent;border-left:10px solid #cfcfcf}.popup-left:after{right:-8px;border-top:7px solid transparent;border-right:none;border-bottom:7px solid transparent;border-left:8px solid #fff}.popup-right:before{left:-10px;border-top:8px solid transparent;border-right:10px solid #cfcfcf;border-bottom:8px solid transparent;border-left:none}.popup-right:after{left:-8px;border-top:7px solid transparent;border-right:8px solid #fff;border-bottom:7px solid transparent;border-left:none}.progress,.progress-bar{height:18px;line-height:18px}.progress{width:100%;background-color:#e6e6e6;border-radius:4px;box-shadow:inset 0 0 5px rgba(0,0,0,.05)}.progress-bar{position:relative;float:left;padding:0 5px;text-align:right;font-size:14px;font-size:.875rem;color:#fff;background-color:grey;-webkit-transition:.75s cubic-bezier(0,0,.58,1);transition:.75s cubic-bezier(0,0,.58,1)}.progress-bar:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.progress-bar.color-primary{background-color:#529eac}.progress-bar.color-secondary{background-color:#5fb0df}.progress-bar.color-focus{background-color:#eb648d}.progress-bar.color-common{background-color:#3e494b}.progress-bar.color-success{background-color:#7faf34}.progress-bar.color-warning{background-color:#e88c39}.progress-bar.color-error{background-color:#c94438}.progress.size-sm,.progress.size-sm .progress-bar{height:8px;line-height:8px}.progress.size-sm .progress-bar{text-indent:-9999em;text-align:left}.progress-bar-striped{background-size:32px 32px;background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.12) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.12),rgba(255,255,255,.12) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,.12) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.12) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(45deg,rgba(255,255,255,.12) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.12) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.12) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.12) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.12) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.12) 75%,transparent 75%,transparent)}.progress-bar-striped.active{-webkit-animation:progress 2s linear infinite;animation:progress 2s linear infinite}@-webkit-keyframes progress{from{background-position:0 0}to{background-position:32px 0}}@keyframes progress{from{background-position:0 0}to{background-position:32px 0}}.rating{display:inline-block;height:18px;unicode-bidi:bidi-override;direction:rtl;text-align:center}.rating.size-sm{height:16px}.rating.size-sm .rating-item,.rating.size-sm .rating-radio{width:16px;height:16px;font-size:16px}.rating.size-lg{height:24px}.rating.size-lg .rating-item,.rating.size-lg .rating-radio{width:24px;height:24px;font-size:24px}.rating-item,.rating-radio{width:18px;height:18px;margin-right:-4px;font-size:18px}.rating-radio{position:absolute;z-index:2;opacity:0;cursor:pointer}.rating-radio:checked+.rating-item,.rating-radio:checked~.rating-item,.rating-radio:hover+.rating-item,.rating-radio:hover~.rating-item{color:#f38b2e}.rating-item{display:inline-block;position:relative;line-height:16px;text-align:center;vertical-align:top;color:#b3b3b3;-webkit-transition:color .2s;transition:color .2s}+.rating-item{margin-right:-4px}.rating-item:before{content:'\2605';position:absolute;top:2px;left:0}[class*=step-]{vertical-align:top}.step-vertical{display:inline-block}.step-vertical .step-item,.step-vertical .step-sm-item{display:block}.step-item,.step-sm-item{display:table-cell;position:relative;cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.step-item,.step-item:after,.step-item:before,.step-sm-item,.step-sm-item:after,.step-sm-item:before{-webkit-transition:all .4s;transition:all .4s}.step-sm{display:inline-block;counter-reset:ordered}.step-sm-item{padding:40px 18px 0;text-align:center;font-size:13px;font-size:.8125rem;color:#89bac3}.step-sm-item:before{content:counters(ordered,".");counter-increment:ordered;position:absolute;top:0;left:50%;width:36px;height:36px;line-height:36px;margin-left:-18px;border-radius:36px;font-size:18px;font-size:1.125rem;font-weight:700;color:#fff;background-color:#89bac3}.step-sm-item.active~.step-sm-item{color:grey}.step-sm-item.active~.step-sm-item:before{background-color:#ccc}.step-sm-item.active~.step-sm-item:after{border-color:#d9d9d9}.step-sm-item.active{color:#307581}.step-sm-item.active:before{background-color:#45a7b9}.step-sm-item+.step-sm-item:after{content:'';position:absolute;top:16px;left:0;width:6px;height:6px;border-width:2px 2px 0 0;border-style:solid;border-color:#89bac3;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.step-sm-item+.step-sm-item.active:before{border-color:#7cc2ce}.step-sm-item:first-child{padding-left:0}.step-sm-item:first-child:before{left:0;margin-left:0}.step-vertical .step-sm-item{display:block;padding:0 0 30px}.step-vertical .step-sm-item:before{display:block;position:static;margin:0 auto 5px}.step-vertical .step-sm-item+.step-sm-item:after{top:-22px;left:50%;margin-left:-4px;-webkit-transform:rotate(135deg);transform:rotate(135deg)}.step-vertical .step-sm-item:last-child{padding-bottom:0}.step{display:block;border:1px solid #cfcfcf;margin-bottom:20px;text-align:left;border-radius:4px;counter-reset:ordered;font-size:14px;font-size:.875rem;background-color:#fff}.step-item{display:block;min-height:60px;padding:10px 15px;color:#82ba29;background-color:#fff}.step-item:first-child{border-radius:4px 4px 0 0}.step-item:last-child{border-radius:0 0 4px 4px}.step-item+.step-item{border-top:1px solid #cfcfcf}.step-item.active{color:#45a7b9;background-color:#ecf6f8}.step-item.active~.step-item{color:#999}@media (min-width:768px){.step{display:inline-table}.step-item{display:table-cell;width:1%}.step-item:first-child{border-radius:4px 0 0 4px}.step-item:last-child{border-radius:0 4px 4px 0}.step-item+.step-item{padding-left:20px;border-left:1px solid #cfcfcf;border-top:0}.step-item:not(:last-child):after{content:'';position:absolute;top:50%;right:-7px;z-index:2;width:12px;height:12px;border-width:1px 1px 0 0;border-style:solid;border-color:#cfcfcf;margin-top:-6px;background:inherit;-webkit-transform:rotate(45deg);transform:rotate(45deg)}}.step-vertical .step-item{display:block;width:auto;border-radius:0}.step-vertical .step-item:first-child{border-radius:4px 4px 0 0}.step-vertical .step-item:last-child{border-radius:0 0 4px 4px}.step-vertical .step-item+.step-item{padding-left:15px;border-left:none;border-top:1px solid #cfcfcf}.step-vertical .step-item:after{display:none}.step-item.active .step-text{color:#333}.step-item.active .step-icon,.step-item.active .step-text,.step-item.active .step-title{opacity:1}.step-text,.step-title{line-height:1.6em;opacity:.55}.step-icon{float:left;width:24px;height:24px;line-height:24px;margin-top:5px;font-size:20px;font-size:1.25rem;opacity:.55}.step-icon~.step-text,.step-icon~.step-title{margin-left:34px}.step-ordered{counter-reset:ordered}.step-ordered .step-item:before{content:counters(ordered,".");counter-increment:ordered;float:left;line-height:1;padding:5px 10px 5px 0;vertical-align:top;font-size:24px;font-size:1.5rem;font-weight:700;color:inherit;opacity:.55}.step-ordered .step-item.active:before{opacity:1}.step-ordered .step-text,.step-ordered .step-title{margin-left:28px}.switch{display:inline-block;margin:5px 0;font-size:14px;font-size:.875rem;vertical-align:top}.switch-input{display:none;visibility:hidden}.switch-input:checked+.switch-label{text-align:left;background-color:#45a7b9}.switch-input:checked+.switch-label:after{left:25px}.switch-label{float:left;position:relative;width:48px;height:26px;padding:3px;margin-bottom:0;text-align:right;vertical-align:top;color:#fff;background-color:#d9d9d9;cursor:pointer}.switch-label:after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;background-color:#fff;box-shadow:0 1px 1px rgba(0,0,0,.05)}.switch-label,.switch-label:after{border-radius:2px}.switch-rounded .switch-label{border-radius:13px}.switch-rounded .switch-label:after{border-radius:10px}.switch-text .switch-input:checked+.switch-label:after{left:34.2px}.switch-text .switch-input:checked+.switch-label:before{content:attr(data-on);color:#fff}.switch-text .switch-label{width:57.2px;font-size:12px;font-size:.75rem}.switch-text .switch-label:before{content:attr(data-off);display:inline-block;width:50%;line-height:20px;text-align:center;vertical-align:top;text-shadow:0 1px 1px rgba(0,0,0,.05);text-transform:uppercase;color:grey}.switch-text.switch-rounded .switch-label:before{margin-right:3px}.switch-text.switch-rounded .switch-input:checked+.switch-label:before{margin-right:0;margin-left:3px}.switch-note{display:block;line-height:1.5em;padding-top:3px;margin-left:64px;font-size:13px;font-size:.8125rem;color:grey}.switch-input:checked~.switch-note{color:#4d4d4d}.tab{position:relative;margin-bottom:20px}.tab-nav-item{display:block;z-index:2;margin-bottom:-1px;vertical-align:top}.tab-nav-item:first-child .tab-link{border-radius:2px 2px 0 0}.tab-nav-item.active{top:1px}.tab-nav-item.active .tab-link{padding:10px 20px;border-color:#cfcfcf;color:#2f8392;background:#fff}.tab-link{display:block;position:relative;padding:7px 20px;border:1px solid #cfcfcf;text-align:center;font-weight:500;color:grey;background:#f2f2f2;-webkit-transition:.2s;transition:.2s}.tab-content{display:none;position:relative;min-height:120px;padding:20px;border:1px solid #cfcfcf;border-radius:0 2px 2px 2px;background:#fff}.tab-content.active{display:block}@media (min-width:992px){.tab-nav-item{display:inline-table;position:relative;margin-right:-2px;margin-bottom:0}.tab-nav-item:first-child .tab-link{border-radius:2px 0 0 0}.tab-nav-item:last-child .tab-link{border-radius:0 2px 0 0}.tab-nav-item:hover .tab-link{color:#666;background:#e6e6e6}.tab-nav-item.active .tab-link{top:0;border-bottom-color:transparent}.tab-link{top:6px;border-color:transparent}}.thumb{position:relative;overflow:hidden;text-align:center;border-radius:4px}.thumb:hover .thumb-img{z-index:1}.thumb:hover .thumb-overlay{opacity:1}.thumb h4{margin-top:0}.thumb-img{position:relative;top:0;left:0;z-index:3;width:100%}.thumb-overlay{position:absolute;top:0;left:0;z-index:2;width:100%;height:100%;opacity:0;color:#fff;background:rgba(0,0,0,.7);text-shadow:0 1px 3px rgba(0,0,0,.3)}.thumb-overlay .thumb-title{margin:0 0 10px}.thumb-overlay .thumb-text{line-height:1.4;font-size:14px;font-size:.875rem}.thumb-overlay .price{font-size:20px;font-size:1.25rem;font-weight:700}.thumb-content{position:absolute;top:50%;width:100%;padding:10px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.thumb-img,.thumb-overlay{-webkit-transition:.45s cubic-bezier(.42,0,.58,1);transition:.45s cubic-bezier(.42,0,.58,1)}.thumb.fadein .thumb-img{-webkit-transition:.2s cubic-bezier(0,0,.58,1);transition:.2s cubic-bezier(0,0,.58,1)}.thumb.fadein:hover .thumb-img{-webkit-transform:scale(1.3);transform:scale(1.3)}.thumb.pullin .thumb-overlay,.thumb.slidein .thumb-overlay{opacity:1}.thumb.pullin.right .thumb-overlay,.thumb.slidein.right .thumb-overlay{left:-100%}.thumb.pullin.right:hover .thumb-overlay,.thumb.slidein.right:hover .thumb-overlay{left:0}.thumb.pullin.left .thumb-overlay,.thumb.slidein.left .thumb-overlay{left:100%}.thumb.pullin.left:hover .thumb-overlay,.thumb.slidein.left:hover .thumb-overlay{left:0}.thumb.pullin.down .thumb-overlay,.thumb.slidein.down .thumb-overlay{top:-100%}.thumb.pullin.down:hover .thumb-overlay,.thumb.slidein.down:hover .thumb-overlay{top:0}.thumb.pullin.up .thumb-overlay,.thumb.slidein.up .thumb-overlay{top:100%}.thumb.pullin.up:hover .thumb-overlay,.thumb.slidein.up:hover .thumb-overlay{top:0}.thumb.pullin .thumb-overlay{background-color:#45a7b9}.thumb.pullin.right:hover .thumb-img{left:100%}.thumb.pullin.left:hover .thumb-img{left:-100%}.thumb.pullin.down:hover .thumb-img{-webkit-transform:translateY(100%);transform:translateY(100%)}.thumb.pullin.up:hover .thumb-img{-webkit-transform:translateY(-100%);transform:translateY(-100%)}.thumb.zoomin .thumb-overlay,.thumb.zoomin:hover .thumb-img{-webkit-transform:scale(1.3);transform:scale(1.3)}.thumb.zoomin:hover .thumb-overlay{-webkit-transform:scale(1);transform:scale(1)}[data-tooltip]{display:inline-block;position:relative;border-bottom:1px dotted #ccc;-webkit-transition:border-bottom-color .4s cubic-bezier(0,0,.58,1);transition:border-bottom-color .4s cubic-bezier(0,0,.58,1)}[data-tooltip]:after,[data-tooltip]:before{position:absolute;z-index:100;visibility:hidden;opacity:0;pointer-events:none;-webkit-transition:.4s cubic-bezier(0,0,.58,1);transition:.4s cubic-bezier(0,0,.58,1)}[data-tooltip]:after{content:'';background:0 0;border:5px solid transparent}[data-tooltip]:before{content:attr(data-tooltip);width:auto;min-width:2em;max-width:20em;line-height:1.5;min-height:1em;padding:4px 6px;font-size:14px;font-size:.875rem;text-align:left;white-space:nowrap;color:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.2);background-color:#000}[data-tooltip].tooltip-show,[data-tooltip]:hover{border-bottom-color:transparent}[data-tooltip].tooltip-show:after,[data-tooltip].tooltip-show:before,[data-tooltip]:hover:after,[data-tooltip]:hover:before{visibility:visible;opacity:1}.tooltip-bottom:after,.tooltip-bottom:before,.tooltip-top:after,.tooltip-top:before{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.tooltip-top:after,.tooltip-top:before{bottom:100%}.tooltip-top:before{margin-bottom:4px}.tooltip-top:after{margin-bottom:-6px;border-top-color:#000}.tooltip-bottom:after,.tooltip-bottom:before{top:100%;bottom:auto}.tooltip-bottom:before{margin-top:4px}.tooltip-bottom:after{margin-top:-6px;border-bottom-color:#000}.tooltip-left:after,.tooltip-left:before,.tooltip-right:after,.tooltip-right:before{top:50%;transform:translateY(-50%)}.tooltip-right:after,.tooltip-right:before{left:100%}.tooltip-right:before{margin-left:8px}.tooltip-right:after{border-right-color:#000;margin-left:-2px}.tooltip-left:after,.tooltip-left:before{top:50%;right:105%;left:auto;bottom:auto}.tooltip-left:before{margin-right:8px}.tooltip-left:after{border-left-color:#000;margin-right:-2px}.tooltip-rows:before{width:20em;white-space:normal}[data-tooltip].color-primary:before{background-color:#45a7b9}.color-primary.tooltip-top:after{border-top-color:#45a7b9}.color-primary.tooltip-right:after{border-right-color:#45a7b9}.color-primary.tooltip-bottom:after{border-bottom-color:#45a7b9}.color-primary.tooltip-left:after{border-left-color:#45a7b9}[data-tooltip].color-secondary:before{background-color:#55b3e9}.color-secondary.tooltip-top:after{border-top-color:#55b3e9}.color-secondary.tooltip-right:after{border-right-color:#55b3e9}.color-secondary.tooltip-bottom:after{border-bottom-color:#55b3e9}.color-secondary.tooltip-left:after{border-left-color:#55b3e9}[data-tooltip].color-focus:before{background-color:#f45b8a}.color-focus.tooltip-top:after{border-top-color:#f45b8a}.color-focus.tooltip-right:after{border-right-color:#f45b8a}.color-focus.tooltip-bottom:after{border-bottom-color:#f45b8a}.color-focus.tooltip-left:after{border-left-color:#f45b8a}[data-tooltip].color-common:before{background-color:#374e52}.color-common.tooltip-top:after{border-top-color:#374e52}.color-common.tooltip-right:after{border-right-color:#374e52}.color-common.tooltip-bottom:after{border-bottom-color:#374e52}.color-common.tooltip-left:after{border-left-color:#374e52}[data-tooltip].color-success:before{background-color:#82ba29}.color-success.tooltip-top:after{border-top-color:#82ba29}.color-success.tooltip-right:after{border-right-color:#82ba29}.color-success.tooltip-bottom:after{border-bottom-color:#82ba29}.color-success.tooltip-left:after{border-left-color:#82ba29}[data-tooltip].color-warning:before{background-color:#f38b2e}.color-warning.tooltip-top:after{border-top-color:#f38b2e}.color-warning.tooltip-right:after{border-right-color:#f38b2e}.color-warning.tooltip-bottom:after{border-bottom-color:#f38b2e}.color-warning.tooltip-left:after{border-left-color:#f38b2e}[data-tooltip].color-error:before{background-color:#d63a2b}.color-error.tooltip-top:after{border-top-color:#d63a2b}.color-error.tooltip-right:after{border-right-color:#d63a2b}.color-error.tooltip-bottom:after{border-bottom-color:#d63a2b}.color-error.tooltip-left:after{border-left-color:#d63a2b}.chat{border:1px solid #cfcfcf;background-color:#fff}.chat .input-grp{margin-bottom:0}.chat [data-tooltip]{border-bottom:none}.chat-header{position:relative;z-index:2;border-bottom:1px solid #cfcfcf;box-shadow:0 2px 6px rgba(0,0,0,.1);background-color:#fff}.chat-roomname{display:inline-block;max-width:50%;height:44px;padding:10px}.chat-roomname img{display:inline-block;width:24px;height:24px;margin-right:4px}.chat-ctrls{float:right;max-width:50%;padding:0 10px;text-align:right}.chat-ctrl-item{display:inline-block;height:44px;padding:10px 0;margin-left:6px;text-align:center;vertical-align:middle;color:grey}.chat-ctrl-item:hover{color:#45a7b9}.chat-member-list{clear:both;padding:7px 10px;border-top:1px solid rgba(207,207,207,.6)}.chat-member{float:left;width:24px;height:24px;margin:3px 5px 3px 0}.chat-member>img{border-radius:4px;opacity:.75;-webkit-transition:opacity .4s;transition:opacity .4s}.chat-member:hover>img{opacity:1}.chat-body{overflow-y:auto;padding:10px;background-color:rgba(128,128,128,.05);box-shadow:inset 0 0 5px rgba(0,0,0,.1)}.chat-avatar{display:block;width:48px;height:48px;padding:3px;border:1px solid #e6e6e6;background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.chat-avatar+.chat-content{padding:0 60px}.chat-avatar+.chat-content p:after,.chat-avatar+.chat-content p:before{content:'';position:absolute;top:16px}.chat-avatar+.chat-content p:before{margin-top:-7px}.chat-avatar+.chat-content p:after{margin-top:-6px}.chat-content{position:relative;padding:0 10px}.chat-content p{display:inline-block;position:relative;padding:6px 12px;border:1px solid #ccc;margin-bottom:0;background-color:#fff;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.chat-content p:after,.chat-content p:before{content:'';position:absolute;top:16px}.chat-content p:before{margin-top:-7px}.chat-content p:after{margin-top:-6px}.chat-content p:not(:first-child){margin-top:10px}.chat-time{margin:5px;line-height:1.2;font-size:12px;font-size:.75rem;color:#b3b3b3;text-shadow:0 1px 0 #fff}.chat-msg-item+.chat-msg-item{margin-top:20px}.chat-msg-item.left .chat-avatar{float:left}.chat-msg-item.left .chat-content p:before{left:-8px;margin-top:-7px;width:0;height:0;border-style:solid;border-width:6px 8px 6px 0;border-color:transparent #ccc transparent transparent}.chat-msg-item.left .chat-content p:after{left:-6px;margin-top:-6px;width:0;height:0;border-style:solid;border-width:5px 6px 5px 0;border-color:transparent #fff transparent transparent}.chat-msg-item.right{text-align:right}.chat-msg-item.right .chat-avatar{float:right}.chat-msg-item.right p{border-color:#87c7d2;background-color:#d2eaee}.chat-msg-item.right p:before{right:-8px;width:0;height:0;border-style:solid;border-width:6px 0 6px 8px;border-color:transparent transparent transparent #87c7d2}.chat-msg-item.right p:after{right:-6px;width:0;height:0;border-style:solid;border-width:5px 0 5px 6px;border-color:transparent transparent transparent #d2eaee}.chat-footer{padding:10px;border-top:1px solid #cfcfcf}.info-item{display:-webkit-flex;display:-moz-flex;display:-ms-flexbox;display:-ms-flex;display:flex;width:100%}.info-item+.info-item{margin-top:20px}.info-item .metas{line-height:1.3;margin-bottom:10px}.info-item .metas:last-child{margin-bottom:0}.info-item-title{margin:0 0 5px}.info-item-title+.meta{margin-top:-2px}.info-item-text{line-height:1.5;margin:5px 0 0}.info-item-text+.metas{margin-top:5px}.info-item-cover{-webkit-flex:0 0 auto;-moz-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:18.75%;max-width:160px}.info-item-cover>img{width:100%}.info-item-cover+.info-item-content{padding-left:20px}.info-item-addon,.info-item-content{-webkit-flex:1 1 auto;-moz-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.info-item-content{padding:0 5px}.info-item-bottom{line-height:1;padding-top:20px}.info-item-addon:last-child{padding:0 0 0 10px}.info-item-outline,.info-items-outline>.info-item{padding:10px;border:1px solid #cfcfcf;background-color:#fff;border-radius:2px}.info-item-outline .info-item-cover>img,.info-items-outline>.info-item .info-item-cover>img{width:100%}.info-item-vertical,.info-item.card{display:block;margin-bottom:20px}.info-item-vertical+.info-item,.info-item.card+.info-item{margin-top:0}.info-item-vertical .info-item-cover,.info-item.card .info-item-cover{width:100%;max-width:100%}.info-item-vertical .info-item-addon:last-child,.info-item.card .info-item-addon:last-child{padding:20px 0 0 0}.info-item-vertical .info-item-addon,.info-item-vertical .info-item-content,.info-item-vertical .info-item-cover,.info-item.card .info-item-addon,.info-item.card .info-item-content,.info-item.card .info-item-cover{-webkit-flex:none;-moz-flex:none;-ms-flex:none;flex:none}.info-item-vertical .info-item-cover{margin-bottom:10px}.info-item-vertical .info-item-content{padding:0}.info-item-vertical .info-item-addon{padding-top:10px}.info-item.card{padding:5px;border:1px solid #cfcfcf;background-color:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.info-item.card .info-item-cover{margin-bottom:5px}.info-item.card .info-item-content{padding:10px}.info-item.card .info-item-footer{padding:10px 15px;border-top:1px solid rgba(207,207,207,.7);margin:10px -5px -5px;background-color:#fafafa;border-bottom-left-radius:2px;border-bottom-right-radius:2px;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.info-item.card .info-item-footer .metas{margin-bottom:0}.plans{margin:0 -10px}.plan-card{float:left;position:relative;line-height:1.2;overflow:hidden;margin:0 10px 20px;border-radius:4px;background-color:#f2f2f2}.plan-card:hover{-webkit-transform:translateY(-2px);transform:translateY(-2px);box-shadow:0 2px 5px rgba(0,0,0,.2)}.plan-card .ribbon-flag{position:absolute;top:0;right:10px}.plan-header{padding:10px 15px;color:#fff;background-color:rgba(0,0,0,.75)}.plan-header-title{line-height:1}.plan-header-note{margin-top:5px;font-size:14px;font-size:.875rem;color:rgba(255,255,255,.54)}.plan-main{padding:30px 15px;color:#e6e6e6;background-color:#666}.plan-main+.plan-footer{margin-top:-20px;background-color:#666}.plan-main+.plan-footer .btn-outline{color:#fff;border-color:#fff}.plan-main+.plan-footer .btn-outline.focus,.plan-main+.plan-footer .btn-outline:hover{background-color:#fff;color:#2f8392}.plan-main+.plan-footer .btn-outline.active,.plan-main+.plan-footer .btn-outline:active{color:#2f8392;border-color:#fff;background-color:#fff}.plan-main+.plan-footer .btn-outline.focus,.plan-main+.plan-footer .btn-outline:hover{color:#666}.plan-main-text{display:inline-block;padding-top:5px;font-size:13px;font-size:.8125rem;opacity:.7}.plan-price{font-size:14px;font-size:.875rem;color:rgba(255,255,255,.7)}.plan-price .price{line-height:26px;font-size:240%;color:#fff;vertical-align:initial}.plan-detail{line-height:1.3}.plan-detail .icon{margin-right:2px;font-size:16px;color:#45a7b9}.plan-detail-text{padding:15px;font-size:14px;font-size:.875rem;color:#666}.plan-detail-list{border-bottom:1px solid #e6e6e6}.plan-detail-item{padding:12px 15px;font-size:14px;font-size:.875rem}.plan-detail-item+.plan-detail-item{border-top:1px dashed #ccc}.plan-footer{padding:10px 15px}.plan-footer .btn,.plan-footer .btn-outline{display:block}.plan-card.color-primary .plan-header{background-color:#265c66}.plan-card.color-primary .plan-main,.plan-card.color-primary .plan-main+.plan-footer{background-color:#45a7b9}.plan-card.color-primary .plan-main .btn-outline.focus,.plan-card.color-primary .plan-main .btn-outline:hover,.plan-card.color-primary .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-primary .plan-main+.plan-footer .btn-outline:hover{color:#45a7b9}.plan-card.color-secondary .plan-header{background-color:#2f6280}.plan-card.color-secondary .plan-main,.plan-card.color-secondary .plan-main+.plan-footer{background-color:#55b3e9}.plan-card.color-secondary .plan-main .btn-outline.focus,.plan-card.color-secondary .plan-main .btn-outline:hover,.plan-card.color-secondary .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-secondary .plan-main+.plan-footer .btn-outline:hover{color:#55b3e9}.plan-card.color-focus .plan-header{background-color:#86324c}.plan-card.color-focus .plan-main,.plan-card.color-focus .plan-main+.plan-footer{background-color:#f45b8a}.plan-card.color-focus .plan-main .btn-outline.focus,.plan-card.color-focus .plan-main .btn-outline:hover,.plan-card.color-focus .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-focus .plan-main+.plan-footer .btn-outline:hover{color:#f45b8a}.plan-card.color-common .plan-header{background-color:#1e2b2d}.plan-card.color-common .plan-main,.plan-card.color-common .plan-main+.plan-footer{background-color:#374e52}.plan-card.color-common .plan-main .btn-outline.focus,.plan-card.color-common .plan-main .btn-outline:hover,.plan-card.color-common .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-common .plan-main+.plan-footer .btn-outline:hover{color:#374e52}.plan-card.color-success .plan-header{background-color:#486617}.plan-card.color-success .plan-main,.plan-card.color-success .plan-main+.plan-footer{background-color:#82ba29}.plan-card.color-success .plan-main .btn-outline.focus,.plan-card.color-success .plan-main .btn-outline:hover,.plan-card.color-success .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-success .plan-main+.plan-footer .btn-outline:hover{color:#82ba29}.plan-card.color-warning .plan-header{background-color:#864c19}.plan-card.color-warning .plan-main,.plan-card.color-warning .plan-main+.plan-footer{background-color:#f38b2e}.plan-card.color-warning .plan-main .btn-outline.focus,.plan-card.color-warning .plan-main .btn-outline:hover,.plan-card.color-warning .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-warning .plan-main+.plan-footer .btn-outline:hover{color:#f38b2e}.plan-card.color-error .plan-header{background-color:#762018}.plan-card.color-error .plan-main,.plan-card.color-error .plan-main+.plan-footer{background-color:#d63a2b}.plan-card.color-error .plan-main .btn-outline.focus,.plan-card.color-error .plan-main .btn-outline:hover,.plan-card.color-error .plan-main+.plan-footer .btn-outline.focus,.plan-card.color-error .plan-main+.plan-footer .btn-outline:hover{color:#d63a2b}.plan-card .plan-main+.plan-footer .btn-outline{color:#fff;border-color:#fff}.plan-card .plan-main+.plan-footer .btn-outline.focus,.plan-card .plan-main+.plan-footer .btn-outline:hover{background-color:#fff;color:#2f8392}.plan-card .plan-main+.plan-footer .btn-outline.active,.plan-card .plan-main+.plan-footer .btn-outline:active{color:#2f8392;border-color:#fff;background-color:#fff}[class*=color-] .btn,[class*=color-].btn{color:rgba(255,255,255,.87);text-shadow:0 -1px 1px rgba(0,0,0,.15)}[class*=color-] .btn:hover,[class*=color-].btn:hover{z-index:2}[class*=color-] .btn.active,[class*=color-].btn.active{text-shadow:0 0 6px rgba(255,255,255,.15)}[class*=color-] .btn-outline,[class*=color-].btn-outline{background-color:transparent;text-shadow:none}[class*=color-] .btn-outline:hover,[class*=color-].btn-outline:hover{z-index:2}.card[class*=color-] .btn-outline{color:rgba(255,255,255,.87);border-color:rgba(255,255,255,.87)}.card[class*=color-] .btn-outline.focus,.card[class*=color-] .btn-outline:hover{background-color:rgba(255,255,255,.87);color:#2f8392}.card[class*=color-] .btn-outline.active,.card[class*=color-] .btn-outline:active{color:#2f8392;border-color:rgba(255,255,255,.87);background-color:rgba(255,255,255,.87)}.btn{border-color:#cfcfcf;background-color:#f2f2f2}.btn.active,.btn:active{border-color:#bcaeae;background-color:#ddd5d5}.btn-outline{color:rgba(0,0,0,.87);border-color:rgba(0,0,0,.87)}.btn-outline.focus,.btn-outline:hover{background-color:rgba(0,0,0,.87);color:#fff}.btn-outline.active,.btn-outline:active{color:#fff;border-color:rgba(0,0,0,.87);background-color:rgba(0,0,0,.87)}.thumb .btn-outline{color:rgba(255,255,255,.87);border-color:rgba(255,255,255,.87)}.thumb .btn-outline.focus,.thumb .btn-outline:hover{background-color:rgba(255,255,255,.87);color:#2f8392}.thumb .btn-outline.active,.thumb .btn-outline:active{color:#2f8392;border-color:rgba(255,255,255,.87);background-color:rgba(255,255,255,.87)}.drop.open .btn{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#bcaeae;background-color:#ddd5d5}.drop.open>.btn-outline,.drop:hover>.btn-outline{color:#fff;border-color:rgba(0,0,0,.87);background-color:rgba(0,0,0,.87)}.btn.color-primary,.color-primary .btn{border-color:#398998;background-color:#45a7b9}.btn.color-primary.active,.btn.color-primary:active,.color-primary .btn.active,.color-primary .btn:active{border-color:#236d7a;background-color:#2d8c9e}.drop.open .btn.color-primary{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#236d7a;background-color:#2d8c9e}.color-primary>.drop.open>.btn-outline,.color-primary>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-primary,.drop:hover>.btn-outline.color-primary{color:#fff;border-color:#45a7b9;background-color:#45a7b9}.btn-outline.color-primary,.color-primary>.btn-outline,.color-primary>.drop>.btn-outline,.plan-card.color-primary .btn-outline{color:#45a7b9;border-color:#45a7b9}.btn-outline.color-primary.focus,.btn-outline.color-primary:hover,.color-primary>.btn-outline.focus,.color-primary>.btn-outline:hover,.color-primary>.drop>.btn-outline.focus,.color-primary>.drop>.btn-outline:hover,.plan-card.color-primary .btn-outline.focus,.plan-card.color-primary .btn-outline:hover{background-color:#45a7b9;color:#fff}.btn-outline.color-primary.active,.btn-outline.color-primary:active,.color-primary>.btn-outline.active,.color-primary>.btn-outline:active,.color-primary>.drop>.btn-outline.active,.color-primary>.drop>.btn-outline:active,.plan-card.color-primary .btn-outline.active,.plan-card.color-primary .btn-outline:active{color:#fff;border-color:#45a7b9;background-color:#45a7b9}.plan-card.color-primary .ribbon-flag{border-left-color:rgba(69,167,185,.87);border-right-color:rgba(62,150,166,.87)}.btn.color-secondary,.color-secondary .btn{border-color:#38a6e5;background-color:#55b3e9}.btn.color-secondary.active,.btn.color-secondary:active,.color-secondary .btn.active,.color-secondary .btn:active{border-color:#0f90db;background-color:#1ca2ef}.drop.open .btn.color-secondary{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#0f90db;background-color:#1ca2ef}.color-secondary>.drop.open>.btn-outline,.color-secondary>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-secondary,.drop:hover>.btn-outline.color-secondary{color:#fff;border-color:#55b3e9;background-color:#55b3e9}.btn-outline.color-secondary,.color-secondary>.btn-outline,.color-secondary>.drop>.btn-outline,.plan-card.color-secondary .btn-outline{color:#55b3e9;border-color:#55b3e9}.btn-outline.color-secondary.focus,.btn-outline.color-secondary:hover,.color-secondary>.btn-outline.focus,.color-secondary>.btn-outline:hover,.color-secondary>.drop>.btn-outline.focus,.color-secondary>.drop>.btn-outline:hover,.plan-card.color-secondary .btn-outline.focus,.plan-card.color-secondary .btn-outline:hover{background-color:#55b3e9;color:#fff}.btn-outline.color-secondary.active,.btn-outline.color-secondary:active,.color-secondary>.btn-outline.active,.color-secondary>.btn-outline:active,.color-secondary>.drop>.btn-outline.active,.color-secondary>.drop>.btn-outline:active,.plan-card.color-secondary .btn-outline.active,.plan-card.color-secondary .btn-outline:active{color:#fff;border-color:#55b3e9;background-color:#55b3e9}.plan-card.color-secondary .ribbon-flag{border-left-color:rgba(85,179,233,.87);border-right-color:rgba(62,169,230,.87)}.btn.color-focus,.color-focus .btn{border-color:#f23c74;background-color:#f45b8a}.btn.color-focus.active,.btn.color-focus:active,.color-focus .btn.active,.color-focus .btn:active{border-color:#f8034e;background-color:#fc2064}.drop.open .btn.color-focus{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#f8034e;background-color:#fc2064}.color-focus>.drop.open>.btn-outline,.color-focus>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-focus,.drop:hover>.btn-outline.color-focus{color:#fff;border-color:#f45b8a;background-color:#f45b8a}.btn-outline.color-focus,.color-focus>.btn-outline,.color-focus>.drop>.btn-outline,.plan-card.color-focus .btn-outline{color:#f45b8a;border-color:#f45b8a}.btn-outline.color-focus.focus,.btn-outline.color-focus:hover,.color-focus>.btn-outline.focus,.color-focus>.btn-outline:hover,.color-focus>.drop>.btn-outline.focus,.color-focus>.drop>.btn-outline:hover,.plan-card.color-focus .btn-outline.focus,.plan-card.color-focus .btn-outline:hover{background-color:#f45b8a;color:#fff}.btn-outline.color-focus.active,.btn-outline.color-focus:active,.color-focus>.btn-outline.active,.color-focus>.btn-outline:active,.color-focus>.drop>.btn-outline.active,.color-focus>.drop>.btn-outline:active,.plan-card.color-focus .btn-outline.active,.plan-card.color-focus .btn-outline:active{color:#fff;border-color:#f45b8a;background-color:#f45b8a}.plan-card.color-focus .ribbon-flag{border-left-color:rgba(244,91,138,.87);border-right-color:rgba(242,67,121,.87)}.btn.color-common,.color-common .btn{border-color:#2a3b3e;background-color:#374e52}.btn.color-common.active,.btn.color-common:active,.color-common .btn.active,.color-common .btn:active{border-color:#132022;background-color:#1e3438}.drop.open .btn.color-common{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#132022;background-color:#1e3438}.color-common>.drop.open>.btn-outline,.color-common>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-common,.drop:hover>.btn-outline.color-common{color:#fff;border-color:#374e52;background-color:#374e52}.btn-outline.color-common,.color-common>.btn-outline,.color-common>.drop>.btn-outline,.plan-card.color-common .btn-outline{color:#374e52;border-color:#374e52}.btn-outline.color-common.focus,.btn-outline.color-common:hover,.color-common>.btn-outline.focus,.color-common>.btn-outline:hover,.color-common>.drop>.btn-outline.focus,.color-common>.drop>.btn-outline:hover,.plan-card.color-common .btn-outline.focus,.plan-card.color-common .btn-outline:hover{background-color:#374e52;color:#fff}.btn-outline.color-common.active,.btn-outline.color-common:active,.color-common>.btn-outline.active,.color-common>.btn-outline:active,.color-common>.drop>.btn-outline.active,.color-common>.drop>.btn-outline:active,.plan-card.color-common .btn-outline.active,.plan-card.color-common .btn-outline:active{color:#fff;border-color:#374e52;background-color:#374e52}.plan-card.color-common .ribbon-flag{border-left-color:rgba(55,78,82,.87);border-right-color:rgba(45,63,67,.87)}.btn.color-success,.color-success .btn{border-color:#6f9f23;background-color:#82ba29}.btn.color-success.active,.btn.color-success:active,.color-success .btn.active,.color-success .btn:active{border-color:#537c13;background-color:#679917}.drop.open .btn.color-success{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#537c13;background-color:#679917}.color-success>.drop.open>.btn-outline,.color-success>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-success,.drop:hover>.btn-outline.color-success{color:#fff;border-color:#82ba29;background-color:#82ba29}.btn-outline.color-success,.color-success>.btn-outline,.color-success>.drop>.btn-outline,.plan-card.color-success .btn-outline{color:#82ba29;border-color:#82ba29}.btn-outline.color-success.focus,.btn-outline.color-success:hover,.color-success>.btn-outline.focus,.color-success>.btn-outline:hover,.color-success>.drop>.btn-outline.focus,.color-success>.drop>.btn-outline:hover,.plan-card.color-success .btn-outline.focus,.plan-card.color-success .btn-outline:hover{background-color:#82ba29;color:#fff}.btn-outline.color-success.active,.btn-outline.color-success:active,.color-success>.btn-outline.active,.color-success>.btn-outline:active,.color-success>.drop>.btn-outline.active,.color-success>.drop>.btn-outline:active,.plan-card.color-success .btn-outline.active,.plan-card.color-success .btn-outline:active{color:#fff;border-color:#82ba29;background-color:#82ba29}.plan-card.color-success .ribbon-flag{border-left-color:rgba(130,186,41,.87);border-right-color:rgba(115,165,36,.87)}.btn.color-warning,.color-warning .btn{border-color:#f17a0f;background-color:#f38b2e}.btn.color-warning.active,.btn.color-warning:active,.color-warning .btn.active,.color-warning .btn:active{border-color:#cc6101;background-color:#ed7001}.drop.open .btn.color-warning{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#cc6101;background-color:#ed7001}.color-warning>.drop.open>.btn-outline,.color-warning>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-warning,.drop:hover>.btn-outline.color-warning{color:#fff;border-color:#f38b2e;background-color:#f38b2e}.btn-outline.color-warning,.color-warning>.btn-outline,.color-warning>.drop>.btn-outline,.plan-card.color-warning .btn-outline{color:#f38b2e;border-color:#f38b2e}.btn-outline.color-warning.focus,.btn-outline.color-warning:hover,.color-warning>.btn-outline.focus,.color-warning>.btn-outline:hover,.color-warning>.drop>.btn-outline.focus,.color-warning>.drop>.btn-outline:hover,.plan-card.color-warning .btn-outline.focus,.plan-card.color-warning .btn-outline:hover{background-color:#f38b2e;color:#fff}.btn-outline.color-warning.active,.btn-outline.color-warning:active,.color-warning>.btn-outline.active,.color-warning>.btn-outline:active,.color-warning>.drop>.btn-outline.active,.color-warning>.drop>.btn-outline:active,.plan-card.color-warning .btn-outline.active,.plan-card.color-warning .btn-outline:active{color:#fff;border-color:#f38b2e;background-color:#f38b2e}.plan-card.color-warning .ribbon-flag{border-left-color:rgba(243,139,46,.87);border-right-color:rgba(242,126,22,.87)}.btn.color-error,.color-error .btn{border-color:#bc3224;background-color:#d63a2b}.btn.color-error.active,.btn.color-error:active,.color-error .btn.active,.color-error .btn:active{border-color:#991f13;background-color:#b72517}.drop.open .btn.color-error{box-shadow:inset 0 2px 4px rgba(0,0,0,.15);text-shadow:0 0 3px rgba(255,255,255,.5);border-color:#cc6101;background-color:#ed7001}.color-error>.drop.open>.btn-outline,.color-error>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-error,.drop:hover>.btn-outline.color-error{color:#fff;border-color:#d63a2b;background-color:#d63a2b}.btn-outline.color-error,.color-error>.btn-outline,.color-error>.drop>.btn-outline,.plan-card.color-error .btn-outline{color:#d63a2b;border-color:#d63a2b}.btn-outline.color-error.focus,.btn-outline.color-error:hover,.color-error>.btn-outline.focus,.color-error>.btn-outline:hover,.color-error>.drop>.btn-outline.focus,.color-error>.drop>.btn-outline:hover,.plan-card.color-error .btn-outline.focus,.plan-card.color-error .btn-outline:hover{background-color:#d63a2b;color:#fff}.btn-outline.color-error.active,.btn-outline.color-error:active,.color-error>.btn-outline.active,.color-error>.btn-outline:active,.color-error>.drop>.btn-outline.active,.color-error>.drop>.btn-outline:active,.plan-card.color-error .btn-outline.active,.plan-card.color-error .btn-outline:active{color:#fff;border-color:#d63a2b;background-color:#d63a2b}.plan-card.color-error .ribbon-flag{border-left-color:rgba(214,58,43,.87);border-right-color:rgba(194,51,38,.87)}.btn-outline.color-white,.color-white>.btn-outline,.color-white>.drop>.btn-outline{color:rgba(255,255,255,.87);border-color:rgba(255,255,255,.87)}.btn-outline.color-white.focus,.btn-outline.color-white:hover,.color-white>.btn-outline.focus,.color-white>.btn-outline:hover,.color-white>.drop>.btn-outline.focus,.color-white>.drop>.btn-outline:hover{background-color:rgba(255,255,255,.87);color:#2f8392}.btn-outline.color-white.active,.btn-outline.color-white:active,.color-white>.btn-outline.active,.color-white>.btn-outline:active,.color-white>.drop>.btn-outline.active,.color-white>.drop>.btn-outline:active{color:#2f8392;border-color:rgba(255,255,255,.87);background-color:rgba(255,255,255,.87)}.color-white>.drop.open>.btn-outline,.color-white>.drop:hover>.btn-outline,.drop.open>.btn-outline.color-white,.drop:hover>.btn-outline.color-white{color:#fff;border-color:rgba(255,255,255,.87);background-color:rgba(255,255,255,.87)}.btn-flat,[class*=color-].btn-flat,[class*=color-]>.btn-flat{border-color:transparent;text-shadow:none;border-radius:0}.has-success>label,label.has-success{color:#82ba29}.ctrl-input.has-success,.has-success .ctrl-input{color:#82ba29;border-color:#82ba29}.ctrl-input.has-success.focus,.ctrl-input.has-success:focus,.has-success .ctrl-input.focus,.has-success .ctrl-input:focus{box-shadow:0 0 8px rgba(130,186,41,.1)}.kui-select.has-success{border-color:#82ba29}.kui-select.has-success .select-options{border-color:#82ba29;box-shadow:0 0 8px rgba(130,186,41,.15)}.kui-opt.has-success .kui-opt-input:before{border-color:#82ba29}.has-warning>label,label.has-warning{color:#f38b2e}.ctrl-input.has-warning,.has-warning .ctrl-input{color:#f38b2e;border-color:#f38b2e}.ctrl-input.has-warning.focus,.ctrl-input.has-warning:focus,.has-warning .ctrl-input.focus,.has-warning .ctrl-input:focus{box-shadow:0 0 8px rgba(243,139,46,.1)}.kui-select.has-warning{border-color:#f38b2e}.kui-select.has-warning .select-options{border-color:#f38b2e;box-shadow:0 0 8px rgba(243,139,46,.15)}.kui-opt.has-warning .kui-opt-input:before{border-color:#f38b2e}.has-error>label,label.has-error{color:#d63a2b}.ctrl-input.has-error,.has-error .ctrl-input{color:#d63a2b;border-color:#d63a2b}.ctrl-input.has-error.focus,.ctrl-input.has-error:focus,.has-error .ctrl-input.focus,.has-error .ctrl-input:focus{box-shadow:0 0 8px rgba(214,58,43,.1)}.kui-select.has-error{border-color:#d63a2b}.kui-select.has-error .select-options{border-color:#d63a2b;box-shadow:0 0 8px rgba(214,58,43,.15)}.kui-opt.has-error .kui-opt-input:before{border-color:#d63a2b}select[class*=size-].ctrl-input{padding-right:24px}.btn-outline.size-xxs,.btn.size-xxs,.counter .btn{min-height:20px;line-height:12px;padding:3px 6px;font-size:2px;font-size:.125rem;font-size:12px;font-size:.75rem}.btn-rounded.size-xxs{padding-right:10px;padding-left:10px;border-radius:10px}.btn-outline.size-xs,.btn.size-xs,.ctrl-input.size-xs,.size-xs .btn,.size-xs .btn-outline,.size-xs .ctrl-input{min-height:24px;line-height:16px;padding:3px 8px;font-size:6px;font-size:.375rem;font-size:12px;font-size:.75rem}.btn-outline.size-xs,.size-xs>.btn-outline{line-height:18px;padding-top:1px;padding-bottom:1px}.btn-rounded.size-xs{padding-right:12px;padding-left:12px;border-radius:12px}.btn-outline.size-sm,.btn.size-sm,.ctrl-input.size-sm,.size-sm .btn,.size-sm .btn-outline,.size-sm .ctrl-input{min-height:30px;line-height:20px;padding:4px 10px;font-size:10px;font-size:.625rem;font-size:12px;font-size:.75rem}.btn-outline.size-sm,.size-sm>.btn-outline{line-height:22px;padding-top:2px;padding-bottom:2px}.btn-rounded.size-sm{padding-right:15px;padding-left:15px;border-radius:15px}.btn-outline.size-lg,.btn.size-lg,.ctrl-input.size-lg,.size-lg .btn,.size-lg .btn-outline,.size-lg .ctrl-input{min-height:48px;line-height:30px;padding:8px 16px;font-size:20px;font-size:1.25rem}.btn-outline.size-lg,.size-lg>.btn-outline{line-height:32px;padding-top:6px;padding-bottom:6px}.btn-rounded.size-lg{padding-right:24px;padding-left:24px;border-radius:24px}.btn-outline.size-xl,.btn.size-xl,.ctrl-input.size-xl,.size-xl .btn,.size-xl .btn-outline,.size-xl .ctrl-input{min-height:60px;line-height:36px;padding:11px 20px;font-size:26px;font-size:1.625rem}.btn-outline.size-xl,.size-xl>.btn-outline{line-height:38px;padding-top:9px;padding-bottom:9px}.btn-rounded.size-xl{padding-right:30px;padding-left:30px;border-radius:30px}.btn-outline.size-xxl,.btn.size-xxl{min-height:72px;line-height:40px;padding:15px 24px;font-size:30px;font-size:1.875rem}.btn-outline.size-xxl{line-height:42px;padding-top:13px;padding-bottom:13px}.btn-rounded.size-xxl{padding-right:36px;padding-left:36px;border-radius:36px}.btn-grp.size-lg>.btn-outline,.btn-grp.size-xl>.btn-outline{margin-right:-3px} -------------------------------------------------------------------------------- /Example/linepay_logo_119x39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/6chinwei/LINE-Pay-PHP-Tutorial/5c5223b051cf31e05259cd71b429955fde2245c8/Example/linepay_logo_119x39.png -------------------------------------------------------------------------------- /Example/record.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LINE Pay API 6 | 7 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | 23 | 24 |
25 |
26 |

訂單資料

27 |
28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 |
43 | *交易編號與商家訂單編號至少要填一項 44 |
45 |
46 |
47 |
48 |
49 | 50 | 51 |
52 |
53 |
54 |
55 |
56 |
57 |

LinePay 伺服器回應

58 |
59 |
60 |
61 |                         
62 |                     
63 |
64 |
65 |
66 | 67 | -------------------------------------------------------------------------------- /Example/refund.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | LINE Pay API 6 | 7 | 12 | 13 | 14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 |
22 | 23 | 24 |
25 |
26 |

訂單資料

27 |
28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 |
43 | *若退款金額不填,表示全額退款 44 |
45 |
46 |
47 |
48 |
49 | 50 | 51 |
52 |
53 |
54 |
55 |
56 |
57 |

LinePay 伺服器回應

58 |
59 |
60 |
61 |                         
62 |                     
63 |
64 |
65 |
66 | 67 | -------------------------------------------------------------------------------- /Example/reserve.php: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | LinePay API Test - Reserve 10 | 11 | 16 | 17 | 18 |
19 | 20 |
21 | 22 | 23 | 24 |
25 |
26 |
27 |

LinePay 伺服器回應

28 |
29 |
30 | Store Server 32 | if(isset($_POST['productName'])) 33 | { 34 | $apiEndpoint = $_POST['apiEndpoint']; 35 | $channelId = $_POST['channelId']; 36 | $channelSecret = $_POST['channelSecret']; 37 | 38 | $params = [ 39 | "productName" => $_POST['productName'], 40 | "productImageUrl" => $_POST['productImageUrl'], 41 | "amount" => $_POST['amount'], 42 | "currency" => $_POST['currency'], 43 | "confirmUrl" => $_POST['confirmUrl'], 44 | "orderId" => $_POST['orderId'], 45 | "confirmUrlType" => $_POST['confirmUrlType'], 46 | ]; 47 | 48 | try { 49 | $LinePay = new Chinwei6\LinePay($apiEndpoint, $channelId, $channelSecret); 50 | 51 | // Save params in the _SESSION 52 | $_SESSION['cache'] = [ 53 | "apiEndpoint" => $_POST['apiEndpoint'], 54 | "channelId" => $_POST['channelId'], 55 | "channelSecret" => $_POST['channelSecret'], 56 | "amount" => $_POST['amount'], 57 | "currency" => $_POST['currency'], 58 | ]; 59 | 60 | $result = $LinePay->reserve($params); 61 | echo '
';
62 |                                 echo json_encode($result, JSON_PRETTY_PRINT);
63 |                                 echo '
'; 64 | 65 | if(isset($result['info']['paymentUrl']['web'])) 66 | echo '點此連至 Line 頁面登入帳戶'; 67 | } 68 | catch(Exception $e) { 69 | echo '
';
70 |                                 echo $e->getMessage();
71 |                                 echo '
'; 72 | } 73 | } 74 | else { 75 | echo "No Data"; 76 | } 77 | ?> 78 |
79 |
80 |
81 | 82 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LINE Pay PHP Tutorial 2 | 3 | ### 準備 4 | **必須要有 LINE Pay 的商家帳戶** 5 | 申請方式請參考官方文件 - [LINE Pay 商家註冊指南](https://pay.line.me/tw/intro/techSupport) 6 | 7 | **必須要有通路ID (ChannelId)和通路密鑰 (ChannelSecret)** 8 | 使用商家帳戶登入 LINE Pay 後台,即可取得通路ID和通路密鑰,兩者都是用來建立 API 請求的 Header 9 | 10 | **必須設定伺服器白名單** 11 | 要發送請求給 LINE Pay 伺服器的伺服器(例如你的開發環境,或佈署購物網站的伺服器),其 IP 位置都必須記錄在商家帳戶的伺服器白名單內,否則發出的請求會被 LINE Pay 拒絕。特別注意 Sandbox 和正式環境須分開設定。 12 | 13 | ### PHP Library for LINE Pay API 14 | [Chinwei6/LinePay v20151112 BETA](Chinwei6_LinePay.php) (使用 php_curl 實作) 15 | 16 | ### 教學文章 17 | * [一般付款 (Reserve & Confirm)](Tutorial/payment.md) 18 | * [付款記錄查詢](Tutorial/get_payment.md) 19 | * [退款 (Refund)](Tutorial/refund.md) 20 | * 授權紀錄查詢 21 | * 授權作廢 22 | * 自動付款 -------------------------------------------------------------------------------- /Tutorial/get_payment.md: -------------------------------------------------------------------------------- 1 | # LINE Pay 􏰀查看付款紀錄 2 | 使用 LINE Pay Get Payment API 可以取得已付款項目的付款/退款詳細資料。查看時必須指定 LINE Pay 用戶的付款交易編號(`transactionId`)或是商家訂單系統的訂單編號(`orderId`),兩者擇一即可。 3 | 4 | 若要一次查看多筆付款記錄,可同時傳遞多個參數,最多可以􏰀同時查看 100 筆記錄。 5 | 6 | > 若是要查看已授權但尚未付款的項目記錄,應使用「查看授權紀錄」而非「查看付款紀錄」 7 | 8 | #### GetPayment API 規格 9 | 10 | 項目 | 說明 11 | ---- | --- 12 | Method | GET 13 | Required Request Header | `Content-Type:application/json; charset=UTF-8`
`X-LINE-ChannelId:{{channelId}}`
`X-LINE-ChannelSecret:{{channelSecretKey}}` 14 | Sandbox 環境 API 地址 | `https://sandbox-api-pay.line.me/v2/payments` 15 | Real 環境 API 地址 | `https://api-pay.line.me/v2/payments` 16 | 17 | #### GetPayment API 請求的參數 18 | 19 | 名稱 | 資料型別 | 說明 20 | ---- | ------- | --- 21 | transactionId | Number | 由 LINE Pay 核發的交易編號,也就是用於付款或退款的交易編號 22 | orderId | String | 商家訂單系統內的訂單編號 23 | 24 | > 若要查看多筆可直接傳遞多組 `transactionId`/`orderId` 作為參數 25 | 26 | #### GetPayment API 回應 (JSON 格式) 27 | 28 | ``` php 29 | { 30 | "returnCode": "0000", // 結果代碼,例如 `0000` 表示成功 31 | "returnMessage": "success", // 結果訊息或失敗理由,例如 `商家驗證資訊錯誤` 32 | "info":[ 33 | { 34 | "transactionId": ..., // 交易編號 35 | "transactionDate": "...", // 交易日期與時間 36 | "transactionType": "...", // 交易類型,例如:付款是"PAYMENT"、退款是"PAYMENT_REFUND"、部分退款是"PARTIAL_REFUND" 37 | "payInfo":[ 38 | { 39 | "method": "CREDIT_CARD", // 使用的付款方式 40 | "amount": 10 // 交易金額 41 | } 42 | ], 43 | "productName": "...", // 訂單名稱 44 | "currency": "TWD", // 貨幣 45 | "orderId": "...", // 商家的訂單編號 46 | "refundList": [ // 若有退款的話,會回傳退款的紀錄 47 | { 48 | "refundTransactionId": ..., // 退款的交易編號 49 | "transactionType": "...", // 交易類型,例如:部分退款是"PARTIAL_REFUND" 50 | "refundAmount": 10, // 退款金額 51 | } 52 | ] 53 | } 54 | ] 55 | } 56 | ``` 57 | 58 | #### 查看付款記錄程式碼範例 59 | 60 | ``` php 61 | ..., 77 | "orderId" => ['...', '...'], // 可用 Array 格式同時查看多筆記錄 78 | ]; 79 | 80 | // 發送 getPayment 請求 81 | $result = $LinePay->checkPayment($params); 82 | 83 | if($result['returnCode'] == '0000') { 84 | // getPayment 請求成功! 85 | } 86 | ``` -------------------------------------------------------------------------------- /Tutorial/img/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/6chinwei/LINE-Pay-PHP-Tutorial/5c5223b051cf31e05259cd71b429955fde2245c8/Tutorial/img/04.png -------------------------------------------------------------------------------- /Tutorial/img/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/6chinwei/LINE-Pay-PHP-Tutorial/5c5223b051cf31e05259cd71b429955fde2245c8/Tutorial/img/05.png -------------------------------------------------------------------------------- /Tutorial/img/flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/6chinwei/LINE-Pay-PHP-Tutorial/5c5223b051cf31e05259cd71b429955fde2245c8/Tutorial/img/flow.png -------------------------------------------------------------------------------- /Tutorial/payment.md: -------------------------------------------------------------------------------- 1 | # LINE Pay 一般付款的教學與範例 2 | 此教學以在 Sandbox 進行一般付款(付款授權與請款同時進行)為範例 3 | 4 | ## 目錄 5 | * [LINE Pay 付款流程說明](#line-pay-付款流程說明) 6 | * [角色](#角色) 7 | * [流程](#流程) 8 | * [付款功能開發範例](#付款功能開發範例) 9 | * [購物網站的付款流程與頁面](#購物網站的付款流程與頁面) 10 | * [步驟](#步驟) 11 | 12 | ## LINE Pay 付款流程說明: 13 | 以下流程是以**電腦版網頁介面**來進行**付款授權與請款同時進行**的一般付款為例: 14 | > LINE Pay 的一般付款包含兩種:「同時進行」付款授權與請款,或「分開進行」 15 | 16 | #### 角色 17 | 在一次的付款的流程中,可以想像有三種角色參與其中: 18 | * 商家的購物網站(包含前端頁面與後端伺服器) 19 | * 網站使用者(買家) 20 | * LINE Pay 伺服器 21 | 22 | > 商家的購物網站除了要有前端頁面提供給使用者進行付款之外,也需要有後端伺服器來發送 API 請求給 LINE Pay 伺服器(不可從網站使用者的瀏覽器發送 LINE Pay API 請求) 23 | 24 | #### 流程 25 | 1. 使用者在購物網站上選擇使用 LINE Pay 付款 26 | 2. 購物網站發送 Reserve 請求給 LINE Pay 伺服器,參數包含訂單的名稱、金額、確認付款頁面的位置(`confirmUrl`)等 27 | 3. LINE Pay 伺服器成功收到 Reserve 請求後,會回傳交易編號與付款頁面的位址(`paymentUrl`)給購物網站 28 | 4. 購物網站把使用者導向到`paymentUrl` 29 | 5. 使用者登入 LINE 帳號進行付款 30 | 6. 付款完成後,LINE 會把使用者導回至購物網站的確認付款頁面(即第 2 步驟內的`confirmUrl`) 31 | 7. 購物網站發送 Confirm 請求給 LINE Pay 伺服器,向 LINE Pay 確認使用者是否已經進行付款 32 | 8. LINE Pay 伺服器回傳付款結果 33 | 34 | ## 付款功能開發範例 35 | * PHP 版本: v5.5.9 36 | * LINE Pay API 版本: v2 37 | * 使用 LINE Pay API 的[事前準備](../README.md) 38 | * [Sandbox 測試工具原始碼(PHP 網頁介面)](../Example) 39 | * [PHP Library (Chinwei6/LinePay) for LINE Pay API](../Chinwei6_LinePay.php) (使用 php_curl 實作) 40 | 41 | #### 購物網站的付款流程與頁面 42 | 依照上面的 LINE Pay 付款流程,我們可以把購物網站的 LINE Pay 付款功能流程設計為: 43 | ![流程圖](./img/flow.png) 44 | 45 | 此流程中包含兩個 PHP 頁面: 46 | `reserve.php`: 把訂單資訊發送給 LINE Pay 伺服器的頁面 47 | `confirm.php`: 使用者在 LINE Pay 付款完成後,被重新導向至購物網站的頁面,同時也會向 LINE Pay 伺服器確認付款結果 48 | 49 | 50 | #### 步驟 51 | 1. 在購物網站的付款頁面放上「使用 LINE Pay 付款」的按鈕,買家點擊此按鈕後,購物網站會透過 `reserve.php` 發送訂單資訊給 LINE Pay 伺服器。 52 | 53 | > *按鈕樣式可參考官方[LOGO 使用指南](https://pay.line.me/tw/intro/logoUsageGuide) 54 | > *`reserve.php` 的功能其實只是要發送請求,可以不用 UI 畫面。 55 | 56 | 2. 在 `reserve.php` 使用 LINE Pay Reserve API,將訂單的資訊作為參數發送 POST 請求給 LINE Pay 伺服器,Reserve API 的參數須包含訂單的名稱、金額、確認付款頁面的位置(`confirmUrl`)等。Reserve API 的規格與必要參數如下: 57 | 58 | #### Reserve API 規格 59 | 60 | 項目 | 說明 61 | ---- | --- 62 | Method | POST 63 | Required Request Header | `Content-Type:application/json; charset=UTF-8`
`X-LINE-ChannelId:{{channelId}}`
`X-LINE-ChannelSecret:{{channelSecretKey}}` 64 | Sandbox 環境 API 地址 | https://sandbox-api-pay.line.me/v2/payments/request 65 | Real 環境 API 地址 | https://api-pay.line.me/v2/payments/request 66 | 67 | 68 | #### Reserve API 請求的必要參數 69 | 70 | 名稱 | 資料型別 | 說明 71 | ---- | ------- | --- 72 | productName | String | 訂單名稱,例如:`商品XXX..等三項` 73 | productImageUrl | String | 商品圖片 URL,顯示於付款畫面上的影像 74 | amount | Number | 付款金額 75 | currency | String | 付款貨幣 (ISO 4217),例如 `TWD`、`JPY`、`USD` 76 | confirmUrl | String | 買家在 LINE Pay 選擇付款方式並輸入密碼後,被重新導向到商家的 URL 77 | orderId | String | 商家與該筆付款請求對應的訂單編號(這是商家自行管理的唯一編號) 78 | 79 | > 還有其他的非必要參數請參考官方[LINE Pay 技術連動指南](https://pay.line.me/tw/intro/techSupport) 80 | 81 | #### reserve.php 程式碼範例 82 | 83 | ``` php 84 | "...", 100 | "productImageUrl" => "...", 101 | "amount" => "...", 102 | "currency" => "...", 103 | "confirmUrl" => "...", 104 | "orderId" => "...", 105 | "confirmUrlType" => "...", 106 | ]; 107 | 108 | // 發送 reserve 請求,reserve() 回傳的結果為 Associative Array 格式 109 | $result = $LinePay->reserve($params); 110 | 111 | if($result['returnCode'] == '0000') { 112 | // Reserve 請求成功! 113 | $paymentUrl = $result['info']['paymentUrl']['web']; 114 | } 115 | ``` 116 | 3. 若請求成功,LINE Pay 伺服器會回傳: 117 | 118 | #### Reserve API 回應 (JSON 格式) 119 | 120 | ``` 121 | { 122 | "returnCode": "0000", // 結果代碼,例如 `0000` 表示成功 123 | "returnMessage": "success", // 結果訊息或失敗理由,例如 `商家驗證資訊錯誤` 124 | "info": { 125 | "paymentUrl": { 126 | "web": "...", // 付款請求後所前往的網頁 URL (LINE Pay 等待付款畫面的 URL) 127 | "app": "..." // 前往付款畫面的應用程式 URL 128 | }, 129 | "transactionId": ..., // 交易編號 (19 位數) 130 | "paymentAccessToken": "..." // 在 LINE Pay app 輸入的代碼(在本範例未使用到) 131 | } 132 | } 133 | ``` 134 | 135 | 4. 在 `reserve.php` 收到請求成功的回應後,就可以把使用者導向到 `paymentUrl` 的頁面(電腦版請使用 `info.paymentUrl.web` 的 URL),此頁面為 LINE 提供的登入與付款頁面,如圖: 136 | ![04](./img/04.png) 137 | 138 | 5. 使用者在此頁面登入 LINE 帳號後,會出現 LINE Pay 的彈出視窗(如下圖),確認商品名稱與金額無誤後,點擊 PAY NOW 即可進行付款。 139 | > 如果瀏覽器有封鎖此頁面的彈出視窗,可先解除對此 LINE Pay 網域的封鎖 140 | 141 | 142 | 143 | 6. 付款完成後,剛剛開啟 `paymentUrl` 的頁面會被導向至 `confirmUrl`,`confirmUrl` 就是在第 2 步發出 Reserve 請求時所傳遞給 LINE Pay 伺服器的參數之一。在本範例中,也就是把使用者導回至購物網站的 `confirm.php` 頁面。 144 | 145 | 7. 在 `confirm.php` 使用 LINE Pay Confirm API,發送 POST 請求給 LINE Pay 伺服器,向 LINE Pay 確認使用者是否已經完成付款。Confirm API 的規格與必要參數如下: 146 | 147 | #### Confirm API 規格 148 | 149 | 項目 | 說明 150 | ---- | --- 151 | Method | POST 152 | Required Request Header | `Content-Type:application/json; charset=UTF-8`
`X-LINE-ChannelId:{{channelId}}`
`X-LINE-ChannelSecret:{{channelSecretKey}}` 153 | Sandbox 環境 API 地址 | https://sandbox-api-pay.line.me/v2/payments/{{transactionId}}/confirm 154 | Real 環境 API 地址 | https://api-pay.line.me/v2/payments/{{transactionId}}/confirm 155 | 156 | #### Confirm API 請求的必要參數 157 | 158 | 名稱 | 資料型別 | 說明 159 | ---- | ------- | --- 160 | amount | Number | 付款金額 161 | currency | String | 付款貨幣 (ISO 4217),例如 `TWD`、`JPY`、`USD` 162 | 163 | #### confirm.php 程式碼範例 164 | 165 | ``` php 166 | "...", 182 | "currency" => "...", 183 | ]; 184 | 185 | // transactionId 來自之前 Reserve API 請求的回應 186 | $transactionId = "..."; 187 | 188 | // 發送 confirm 請求,confirm() 回傳的結果為 Associative Array 格式 189 | $result = $LinePay->confirm($transactionId, $params); 190 | 191 | if($result['returnCode'] == '0000') { 192 | // Confirm 請求成功! 193 | } 194 | ``` 195 | 196 | 8. 若請求成功,表示使用者確實已經透過 LINE Pay 進行付款,LINE Pay 伺服器會回傳: 197 | 198 | #### Confirm API 回應 (JSON 格式) 199 | 200 | ``` 201 | { 202 | "returnCode": "0000", // 結果代碼,例如 `0000` 表示成功 203 | "returnMessage": "success", // 結果訊息或失敗理由,例如 `商家驗證資訊錯誤` 204 | "info": { 205 | "transactionId": ..., // 付款 reserve 後,做為結果所收到的交易編號 206 | "orderId": "...", // 商家在付款reserve 時傳送的訂單編號 207 | "payInfo": [ 208 | { 209 | "method": "...", // 使用的付款方式 (信用卡: CREDIT_CARD、餘額: BALANCE,折扣: DISCOUNT) 210 | "amount": ... // 付款金額 211 | } 212 | ] 213 | } 214 | } 215 | ``` 216 | 217 | ## 若是付款授權與請款「分開」進行 218 | 如果商家有提供給買家鑑賞期的需求,希望將付款授權與請款兩者分別處理的話,只須在購物網站發送 Reserve 請求時,將參數 `capture` 設定為 `false`(表示不要立即請款),原本的 Confirm 請求就會變成是「付款授權」而已,而實際付款必須再由購物網站發送額外的 Capture 請求才會完成。 219 | 220 | #### Capture API 規格 221 | 222 | 項目 | 說明 223 | ---- | --- 224 | Method | POST 225 | Required Request Header | `Content-Type:application/json; charset=UTF-8`
`X-LINE-ChannelId:{{channelId}}`
`X-LINE-ChannelSecret:{{channelSecretKey}}` 226 | Sandbox 環境 API 地址 | https://sandbox-api-pay.line.me/v2/payments/authorizations/{{transactionId}}/capture 227 | Real 環境 API 地址 | https://api-pay.line.me/v2/payments/authorizations/{{transactionId}}/capture 228 | 229 | #### Capture API 請求的必要參數 230 | 231 | 名稱 | 資料型別 | 說明 232 | ---- | ------- | --- 233 | amount | Number | 付款金額 234 | currency | String | 付款貨幣 (ISO 4217),例如 `TWD`、`JPY`、`USD` 235 | 236 | 換句話說,若分開付款授權與請款,原本購物網站發送 Confirm 請求時並不會完成訂單的付款,而是將該訂單記錄為「已授權」而已。 237 | 238 | 239 | 240 | -------------------------------------------------------------------------------- /Tutorial/refund.md: -------------------------------------------------------------------------------- 1 | # LINE Pay 退款 2 | 使用 LINE Pay Refund API 可以將已付款完成的項目進行退款。退款時必須指定 LINE Pay 用戶的付款交易編號(`transactionId`)。除此之外,退款時可以指定退款的金額,**若未指定退款金額則視為全額退款**。 3 | 4 | 若退款成功, LIEN Pay 伺服器會回傳新的交易編號`refundTransactionId`(19 位數),以及退款的交易日期/時間`refundTransactionDate`(格式為 `2014-01-01T06:17:41Z`) 5 | 6 | > 若是要取消已授權但未付款的項目,應使用「授權作廢」而非「退款」 7 | 8 | #### Refund API 規格 9 | 10 | 項目 | 說明 11 | ---- | --- 12 | Method | POST 13 | Required Request Header | `Content-Type:application/json; charset=UTF-8`
`X-LINE-ChannelId:{{channelId}}`
`X-LINE-ChannelSecret:{{channelSecretKey}}` 14 | Sandbox 環境 API 地址 | `https://sandbox-api-pay.line.me/v2/payments/{{transactionId}}/refund` 15 | Real 環境 API 地址 | `https://api-pay.line.me/v2/payments/{{transactionId}}/refund` 16 | 17 | 18 | #### Refund API 請求的參數 19 | 20 | 名稱 | 資料型別 | 說明 21 | ---- | ------- | --- 22 | refundAmount | Number | 退款金額。非必要,如果未傳遞此參數,則全額退款 23 | 24 | 25 | #### Refund API 回應 (JSON 格式) 26 | 27 | ``` php 28 | { 29 | "returnCode": "0000", // 結果代碼,例如 `0000` 表示成功 30 | "returnMessage": "success", // 結果訊息或失敗理由,例如 `商家驗證資訊錯誤` 31 | "info": { 32 | "refundTransactionId": ..., // 退款的交易編號 (新核發的編號 - 19 位數) 33 | "refundTransactionDate": "...", // 退款的交易日期與時間 (ISO 8601) 34 | } 35 | } 36 | ``` 37 | 38 | #### 退款程式碼範例 39 | 40 | ``` php 41 | ..., 57 | ]; 58 | 59 | // transactionId,一般來說,應來自商家資料庫內的訂單記錄 60 | $transactionId = "..."; 61 | 62 | // 發送 refund 請求 63 | $result = $LinePay->refund($transactionId, $params); 64 | 65 | if($result['returnCode'] == '0000') { 66 | // Refund 請求成功! 67 | } 68 | ``` --------------------------------------------------------------------------------