diff --git a/application/modules/backend/controllers/CategoriesController.php b/application/modules/backend/controllers/CategoriesController.php
index d2cbe0cf4..41650c914 100644
--- a/application/modules/backend/controllers/CategoriesController.php
+++ b/application/modules/backend/controllers/CategoriesController.php
@@ -1,281 +1,307 @@
.
**/
class Backend_CategoriesController extends Local_Controller_Action_Backend
{
const RESULT_OK = "OK";
const RESULT_ERROR = "ERROR";
/** @var Default_Model_DbTable_ProjectCategory */
protected $_model;
protected $_authMember;
protected $_modelName = 'Default_Model_DbTable_ProjectCategory';
public function init()
{
parent::init();
$this->_model = new $this->_modelName();
$this->view->pageTitle = 'Manage Product Categories';
$this->view->author = $this->_authMember->username;
}
public function indexAction()
{
}
public function createAction()
{
$jTableResult = array();
try {
$params = $this->getAllParams();
if (empty($params['rgt'])) {
$root = $this->_model->fetchRoot();
$params['rgt'] = $root->rgt - 1;
}
$resultRow = $this->_model->addNewElement($params)->toArray();
if (false === empty($params['parent'])) {
$this->_model->moveToParent($resultRow['project_category_id'], (int)$params['parent'], 'bottom');
$resultRow = $this->_model->fetchElement($resultRow['project_category_id']);
}
$jTableResult['Result'] = self::RESULT_OK;
$jTableResult['Record'] = $resultRow;
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$translate = Zend_Registry::get('Zend_Translate');
$jTableResult['Result'] = self::RESULT_ERROR;
$jTableResult['Message'] = $translate->_('Error while processing data.');
}
$this->_helper->json($jTableResult);
}
public function updateAction()
{
$jTableResult = array();
try {
$this->_model->moveToParent((int)$this->getParam('project_category_id', null), (int)$this->getParam('parent', null));
$record = $this->_model->save($this->getAllParams());
$jTableResult = array();
$jTableResult['Result'] = self::RESULT_OK;
$jTableResult['Record'] = $record->toArray();
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$translate = Zend_Registry::get('Zend_Translate');
$jTableResult['Result'] = self::RESULT_ERROR;
$jTableResult['Message'] = $translate->_('Error while processing data.');
}
$this->_helper->json($jTableResult);
}
public function deleteAction()
{
$identifier = (int)$this->getParam('project_category_id', null);
$this->_model->setCategoryDeleted($identifier);
$jTableResult = array();
$jTableResult['Result'] = self::RESULT_OK;
$this->_helper->json($jTableResult);
}
public function listAction()
{
$startIndex = (int)$this->getParam('jtStartIndex');
$pageSize = (int)$this->getParam('jtPageSize');
$sorting = $this->getParam('jtSorting');
$filter_deleted = (int)$this->getParam('filter_deleted', 1);
$records = $this->_model->fetchTreeWithParentId($filter_deleted, null);
$pagination = Zend_Paginator::factory($records);
$pagination->setItemCountPerPage($pageSize);
$pagination->setCurrentPageNumber(($startIndex / $pageSize) + 1);
$jTableResult = array();
$jTableResult['Result'] = self::RESULT_OK;
$jTableResult['Records'] = (array)$pagination->getCurrentItems();
$jTableResult['TotalRecordCount'] = count($records);
$this->_helper->json($jTableResult);
}
public function moveelementAction()
{
$params = $this->getAllParams();
$newPosition = $params['record']['lft'];
switch ($params['direction']) {
case 'up':
$sibling = $this->_model->findPreviousSibling($params['record']);
if (null == $sibling) {
$newPosition = $params['record']['lft'];
} else {
$newPosition = (int)$sibling['lft'];
}
break;
case 'down':
$sibling = $this->_model->findNextSibling($params['record']);
if (null == $sibling) {
$newPosition = $params['record']['lft'];
} else {
$newPosition = (int)$sibling['rgt'] + 1;
}
break;
default:
;
}
$jTableResult = array();
if (count($sibling) == 0) {
$jTableResult['Result'] = self::RESULT_ERROR;
$this->_helper->json($jTableResult);
}
$element = $this->_model->fetchRow('lft = ' . $params['record']['lft']);
$result = $this->_model->moveTo($element->toArray(), $newPosition);
$jTableResult['Result'] = $result == true ? self::RESULT_OK : self::RESULT_ERROR;
$jTableResult['Record'] = $element->toArray();
$this->_helper->json($jTableResult);
}
public function dragdropAction()
{
$params = $this->getAllParams();
if ($params['data']['lft'] <= $params['newPosition'] And $params['data']['rgt'] >= $params['newPosition']) {
$result = false;
} else {
$result = $this->_model->moveTo($params['data'], $params['newPosition']);
}
$jTableResult = array();
$jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
$this->_helper->json($jTableResult);
}
public function treeAction()
{
$result = true;
$cat_id = (int)$this->getParam('c');
try {
$records = $this->_model->fetchTreeForJTableStores($cat_id);
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$result = false;
$records = array();
}
$jTableResult = array();
$jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
$jTableResult['Options'] = $records;
$this->_helper->json($jTableResult);
}
public function createaboutAction()
{
$cat_id = (int)$this->getParam('c');
$config = Zend_Registry::get('config');
$static_config = $config->settings->static;
$include_path = $static_config->include_path . 'category_about/';
try {
if (touch($include_path . '/' . $cat_id . '.phtml')) {
$result = true;
} else {
$result = false;
}
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$result = false;
}
$jTableResult = array();
$jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
$this->_helper->json($jTableResult);
}
+ public function fetchtagratinggroupsAction()
+ {
+ $result = true;
+
+ $tagmodel = new Default_Model_Tags();
+ try {
+ $resultRows = $tagmodel->getAllTagGroupsForStoreFilter();
+ $resultForSelect = array();
+ $resultForSelect[] = array('DisplayText' => '', 'Value' => null);
+ foreach ($resultRows as $row) {
+ $resultForSelect[] = array('DisplayText' => $row['group_name'], 'Value' => $row['group_id']);
+ }
+
+ } catch (Exception $e) {
+ Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
+ $result = false;
+ $records = array();
+ }
+
+ $jTableResult = array();
+ $jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
+ $jTableResult['Options'] = $resultForSelect;
+
+ $this->_helper->json($jTableResult);
+ }
+
public function readaboutAction()
{
$cat_id = (int)$this->getParam('c');
$config = Zend_Registry::get('config');
$static_config = $config->settings->static;
$include_path = $static_config->include_path . 'category_about/';
$filecontent = '';
$result = true;
try {
if (file_exists($include_path . '/' . $cat_id . '.phtml')) {
$filecontent = file_get_contents($include_path . '/' . $cat_id . '.phtml');
}
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$result = false;
}
$jTableResult = array();
$jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
$jTableResult['c'] = $cat_id;
$jTableResult['CatAbout'] = $filecontent;
$this->_helper->json($jTableResult);
}
public function saveaboutAction()
{
$cat_id = (int)$this->getParam('c');
$cat_about = $this->getParam('ca');
$config = Zend_Registry::get('config');
$static_config = $config->settings->static;
$include_path = $static_config->include_path . 'category_about/';
try {
file_put_contents($include_path . '/' . $cat_id . '.phtml', $cat_about);
$result = true;
} catch (Exception $e) {
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
$result = false;
}
$jTableResult = array();
$jTableResult['Result'] = ($result == true) ? self::RESULT_OK : self::RESULT_ERROR;
$this->_helper->json($jTableResult);
}
}
\ No newline at end of file
diff --git a/application/modules/backend/views/scripts/categories/index.phtml b/application/modules/backend/views/scripts/categories/index.phtml
index 9fed7f5e7..7defc2cc7 100644
--- a/application/modules/backend/views/scripts/categories/index.phtml
+++ b/application/modules/backend/views/scripts/categories/index.phtml
@@ -1,673 +1,690 @@
.
**/
?>
getCurrentMessages() as $message) : ?>
escape($message); ?>
Operation not possible.
Operation successfully completed.
\ No newline at end of file
diff --git a/application/modules/default/models/DbTable/ProjectCategory.php b/application/modules/default/models/DbTable/ProjectCategory.php
index 9df0dbf85..8a1665ed2 100644
--- a/application/modules/default/models/DbTable/ProjectCategory.php
+++ b/application/modules/default/models/DbTable/ProjectCategory.php
@@ -1,1910 +1,1914 @@
.
**/
class Default_Model_DbTable_ProjectCategory extends Local_Model_Table
{
const CATEGORY_ACTIVE = 1;
const CATEGORY_INACTIVE = 0;
const CATEGORY_NOT_DELETED = 0;
const CATEGORY_DELETED = 1;
const ORDERED_TITLE = 'title';
const ORDERED_ID = 'project_category_id';
const ORDERED_HIERARCHIC = 'lft';
protected $_keyColumnsForRow = array('project_category_id');
protected $_key = 'project_category_id';
/**
* @var string
*/
protected $_name = "project_category";
/**
* @var array
*/
protected $_dependentTables = array('Default_Model_DbTable_Project');
/**
* @var array
*/
protected $_referenceMap = array(
'Category' => array(
'columns' => 'project_category_id',
'refTableClass' => 'Default_Model_Project',
'refColumns' => 'project_category_id'
)
);
/** @var Zend_Cache_Core */
protected $cache;
/**
* @inheritDoc
*/
public function init()
{
parent::init(); // TODO: Change the autogenerated stub
$this->cache = Zend_Registry::get('cache');
}
/**
* @return array
* @deprecated
*/
public function getSelectList()
{
$selectArr =
$this->_db->fetchAll('SELECT `project_category_id`, `title` FROM `project_category` WHERE `is_active`=1 AND `is_deleted`=0 ORDER BY `orderPos`');
$arrayModified = array();
$arrayModified[0] = "ProjectAddFormCatSelect";
foreach ($selectArr as $item) {
$arrayModified[$item['project_category_id']] = stripslashes($item['title']);
}
return $arrayModified;
}
/**
* @return array
* @deprecated
*/
public function getInternSelectList()
{
$selectArr =
$this->_db->fetchAll('SELECT `project_category_id`, `title` FROM `project_category` WHERE `is_deleted`=0 ORDER BY `orderPos`');
$arrayModified = array();
$arrayModified[0] = "ProjectAddFormCatSelect";
foreach ($selectArr as $item) {
$arrayModified[$item['project_category_id']] = stripslashes($item['title']);
}
return $arrayModified;
}
/**
* @param $status
* @param $id
*
*/
public function setStatus($status, $id)
{
$updateValues = array(
'is_active' => $status,
'changed_at' => new Zend_Db_Expr('Now()')
);
$this->update($updateValues, 'project_category_id=' . $id);
}
/**
* @param $id
*
*/
public function setDelete($id)
{
$updateValues = array(
'is_active' => 0,
'is_deleted' => 1,
'deleted_at' => new Zend_Db_Expr('Now()')
);
$this->update($updateValues, 'project_category_id=' . $id);
}
/**
* @return Zend_Db_Table_Rowset_Abstract
* @throws Zend_Cache_Exception
* @deprecated
*/
public function fetchAllActive()
{
$cache = $this->cache;
$cacheName = __FUNCTION__;
if (!($categories = $cache->load($cacheName))) {
$q = $this->select()->where('is_active = ?', 1)->where('is_deleted = ?', 0)->order('orderPos');
$categories = $this->fetchAll($q);
$cache->save($categories, $cacheName);
}
return $categories;
}
/**
* @param int|array $nodeId
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchActive($nodeId)
{
$str = is_array($nodeId) ? implode(',', $nodeId) : $nodeId;
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5($str);
if (false === ($active = $cache->load($cacheName))) {
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$sql = "SELECT *,
(SELECT
`project_category_id`
FROM
`project_category` AS `t2`
WHERE
`t2`.`lft` < `node`.`lft` AND
`t2`.`rgt` > `node`.`rgt`
AND `t2`.`is_deleted` = 0
ORDER BY
`t2`.`rgt`-`node`.`rgt` ASC
LIMIT 1) AS `parent`
FROM {$this->_name} as node
WHERE project_category_id IN ($inQuery)
AND is_active = 1
";
$active = $this->_db->query($sql, $nodeId)->fetchAll();
if (count($active) == 0) {
$active = array();
}
$cache->save($active, $cacheName, array(), 3600);
}
return $active;
}
/**
* @param int|array $nodeId
*
* @return array
* @throws Zend_Db_Statement_Exception
*/
public function fetchActiveOrder($nodeId)
{
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$sql = "SELECT *,
(SELECT
`project_category_id`
FROM
`project_category` AS `t2`
WHERE
`t2`.`lft` < `node`.`lft` AND
`t2`.`rgt` > `node`.`rgt`
AND `t2`.`is_deleted` = 0
ORDER BY
`t2`.`rgt`-`node`.`rgt`ASC
LIMIT
1) AS `parent`
FROM {$this->_name} as node
WHERE project_category_id IN ($inQuery)
AND is_active = 1
";
$active = $this->_db->query($sql, $nodeId)->fetchAll();
if (count($active)) {
return $active;
} else {
return array();
}
}
/* ------------------------ */
/* New Nested Set Functions */
/* ------------------------ */
public function setCategoryDeleted($id, $updateChildren = true)
{
$node = $this->findCategory($id);
if (count($node->toArray()) == 0) {
return false;
}
$this->_db->beginTransaction();
try {
$this->_db->query("UPDATE {$this->_name} SET is_active = 0, is_deleted = 1, deleted_at = :del_date WHERE project_category_id = :cat_id;",
array('cat_id' => $id, 'del_date'=>new Zend_Db_Expr('Now()')));
if ($updateChildren) {
$this->_db->query("UPDATE {$this->_name} SET is_active = 0, is_deleted = 1, deleted_at = :del_date WHERE lft > :parent_lft AND rgt < :parent_rgt;",
array('del_date'=>new Zend_Db_Expr('Now()'), 'parent_lft' => $node->lft, 'parent_rgt' => $node->rgt));
}
$this->_db->commit();
} catch (Exception $e) {
$this->_db->rollBack();
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
}
return $node;
}
/**
* @param $title
*
* @return null|Zend_Db_Table_Row_Abstract
* @throws Zend_Exception
*/
public function appendNewElement($title)
{
$root = $this->fetchRoot();
$data['rgt'] = $root->rgt - 1;
$data['title'] = $title;
return $this->addNewElement($data);
}
/**
* @return null|Zend_Db_Table_Row_Abstract
*/
public function fetchRoot()
{
return $this->fetchRow('`lft` = 0');
}
/**
* @param array $data
*
* @return null|Zend_Db_Table_Row_Abstract
* @throws Zend_Exception
*/
public function addNewElement($data)
{
$this->_db->beginTransaction();
try {
$this->_db->query("UPDATE {$this->_name} SET rgt = rgt + 2 WHERE rgt > :param_right;",
array('param_right' => $data['rgt']));
$this->_db->query("UPDATE {$this->_name} SET lft = lft + 2 WHERE lft > :param_right;",
array('param_right' => $data['rgt']));
$this->_db->query("
INSERT INTO project_category (`lft`, `rgt`, `title`, `is_active`, `name_legacy`, `xdg_type`, `dl_pling_factor`, `show_description`, `source_required`)
VALUES (:param_right + 1, :param_right + 2, :param_title, :param_status, :param_legacy, :param_xgd, :param_pling, :param_show_desc, :param_source);",
array(
'param_right' => $data['rgt'],
'param_title' => $data['title'],
'param_status' => $data['is_active'],
'param_legacy' => $data['name_legacy'],
'param_xgd' => $data['xdg_type'],
'param_show_desc' => $data['show_description'],
'param_source' => $data['source_required'],
'param_pling' => $data['dl_pling_factor']
));
$this->_db->commit();
} catch (Exception $e) {
$this->_db->rollBack();
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
}
return $this->fetchRow('lft = ' . ($data['rgt'] + 1));
}
/**
* @param $cat_id
*
* @return array
*/
public function fetchTreeForJTable($cat_id)
{
$resultRows = $this->fetchTree(false, true, 5);
$resultForSelect = array();
foreach ($resultRows as $row) {
if (($row['project_category_id'] == $cat_id) OR ($row['parent'] == $cat_id)) {
continue;
}
$resultForSelect[] = array('DisplayText' => $row['title_show'], 'Value' => $row['project_category_id']);
}
return $resultForSelect;
}
/**
* @param bool $isActive
* @param bool $withRoot
* @param int $depth
*
* @return array
* @internal param int $pageSize
* @internal param int $startIndex
* @internal param bool $clearCache
*/
public function fetchTree(
$isActive = false,
$withRoot = true,
$depth = null
) {
$sqlActive = $isActive == true ? " parent_active = 1 AND pc.is_active = 1" : '';
$sqlRoot = $withRoot == true ? "(pc.lft BETWEEN pc2.lft AND pc2.rgt)" : "(pc.lft BETWEEN pc2.lft AND pc2.rgt) AND pc2.lft > 0";
$sqlDepth = is_null($depth) == true ? '' : " AND depth <= " . (int)$depth;
$sqlHaving = $sqlActive || $sqlDepth ? "HAVING {$sqlActive} {$sqlDepth}" : '';
$sql = "
SELECT
`pc`.`project_category_id`,
`pc`.`lft`,
`pc`.`rgt`,
`pc`.`title`,
`pc`.`name_legacy`,
`pc`.`is_active`,
`pc`.`orderPos`,
`pc`.`xdg_type`,
`pc`.`dl_pling_factor`,
`pc`.`show_description`,
`pc`.`source_required`,
MIN(`pc2`.`is_active`) AS `parent_active`,
concat(repeat(' ',count(`pc`.`lft`) - 1), `pc`.`title`) AS `title_show`,
concat(repeat(' ',count(`pc`.`lft`) - 1), IF(LENGTH(TRIM(`pc`.`name_legacy`))>0,`pc`.`name_legacy`,`pc`.`title`)) AS `title_legacy`,
count(`pc`.`lft`) - 1 AS `depth`,
GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`) AS `ancestor_id_path`,
GROUP_CONCAT(`pc2`.`title` ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path`,
GROUP_CONCAT(IF(LENGTH(TRIM(`pc2`.`name_legacy`))>0,`pc2`.`name_legacy`,`pc2`.`title`) ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path_legacy`
FROM
`project_category` AS `pc`
JOIN
`project_category` AS `pc2` ON {$sqlRoot}
GROUP BY pc.lft
{$sqlHaving}
ORDER BY pc.lft
";
$tree = $this->_db->fetchAll($sql);
return $tree;
}
/**
* @param bool $isActive
* @param bool $withRoot
* @param int $depth
*
* @return array
* @internal param int $pageSize
* @internal param int $startIndex
* @internal param bool $clearCache
*/
public function fetchTreeWithParentId(
$isActive = true,
$depth = null
) {
$sqlActive = $isActive == true ? " parent_active = 1 AND pc.is_active = 1" : '';
$sqlDepth = is_null($depth) == true ? '' : " AND depth <= " . (int)$depth;
$sqlHaving = $sqlActive || $sqlDepth ? "HAVING {$sqlActive} {$sqlDepth}" : '';
$sql = "
SELECT
`pc`.`project_category_id`,
`pc`.`lft`,
`pc`.`rgt`,
`pc`.`title`,
`pc`.`name_legacy`,
`pc`.`is_active`,
`pc`.`orderPos`,
`pc`.`xdg_type`,
`pc`.`dl_pling_factor`,
`pc`.`mv_pling_factor`,
`pc`.`show_description`,
`pc`.`source_required`,
`blt`.`name` as `browse_list_type_name`,
`pc`.`browse_list_type`,
+ `pc`.`tag_rating`,
+ `tg`.`group_name` as `tag_rating_name`,
MIN(`pc2`.`is_active`) AS `parent_active`,
concat(repeat(' ',count(`pc`.`lft`) - 1), `pc`.`title`) AS `title_show`,
concat(repeat(' ',count(`pc`.`lft`) - 1), IF(LENGTH(TRIM(`pc`.`name_legacy`))>0,`pc`.`name_legacy`,`pc`.`title`)) AS `title_legacy`,
count(`pc`.`lft`) - 1 AS `depth`,
GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`) AS `ancestor_id_path`,
GROUP_CONCAT(`pc2`.`title` ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path`,
GROUP_CONCAT(IF(LENGTH(TRIM(`pc2`.`name_legacy`))>0,`pc2`.`name_legacy`,`pc2`.`title`) ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path_legacy`,
SUBSTRING_INDEX( GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`), ',', -1) AS `parent`
FROM
`project_category` AS `pc`
JOIN
`project_category` AS `pc2` ON (`pc`.`lft` BETWEEN `pc2`.`lft` AND `pc2`.`rgt`) AND `pc2`.`project_category_id` <> `pc`.`project_category_id`
LEFT JOIN
`browse_list_types` AS `blt` ON `pc`.`browse_list_type` = `blt`.`browse_list_type_id`
+ LEFT JOIN
+ `tag_group` AS `tg` ON `pc`.`tag_rating` = `tg`.`group_id`
GROUP BY `pc`.`lft`
{$sqlHaving}
ORDER BY pc.lft
";
$tree = $this->_db->fetchAll($sql);
return $tree;
}
/**
* @param bool $isActive
* @param bool $withRoot
* @param int $depth
*
* @return array
* @internal param int $pageSize
* @internal param int $startIndex
* @internal param bool $clearCache
*/
public function fetchTreeWithParentIdAndTags(
$isActive = true,
$depth = null
) {
$sqlActive = $isActive == true ? " parent_active = 1 AND pc.is_active = 1" : '';
$sqlDepth = is_null($depth) == true ? '' : " AND depth <= " . (int)$depth;
$sqlHaving = $sqlActive || $sqlDepth ? "HAVING {$sqlActive} {$sqlDepth}" : '';
$sql = "
SELECT
`pc`.`project_category_id`,
`pc`.`lft`,
`pc`.`rgt`,
`pc`.`title`,
`pc`.`name_legacy`,
`pc`.`is_active`,
`pc`.`orderPos`,
`pc`.`xdg_type`,
`pc`.`dl_pling_factor`,
`pc`.`show_description`,
`pc`.`source_required`,
MIN(`pc2`.`is_active`) AS `parent_active`,
concat(repeat(' ',count(`pc`.`lft`) - 1), `pc`.`title`) AS `title_show`,
concat(repeat(' ',count(`pc`.`lft`) - 1), IF(LENGTH(TRIM(`pc`.`name_legacy`))>0,`pc`.`name_legacy`,`pc`.`title`)) AS `title_legacy`,
count(`pc`.`lft`) - 1 AS `depth`,
GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`) AS `ancestor_id_path`,
GROUP_CONCAT(`pc2`.`title` ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path`,
GROUP_CONCAT(IF(LENGTH(TRIM(`pc2`.`name_legacy`))>0,`pc2`.`name_legacy`,`pc2`.`title`) ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path_legacy`,
SUBSTRING_INDEX( GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`), ',', -1) AS `parent`,
(SELECT GROUP_CONCAT(`tag`.`tag_name`)
FROM `category_tag`,`tag`
WHERE `tag`.`tag_id` = `category_tag`.`tag_id` AND `category_tag`.`category_id` = `pc`.`project_category_id`
GROUP BY `category_tag`.`category_id`) AS `tags_name`,
(SELECT GROUP_CONCAT(`tag`.`tag_id`)
FROM `category_tag`,`tag`
WHERE `tag`.`tag_id` = `category_tag`.`tag_id` AND `category_tag`.`category_id` = `pc`.`project_category_id`
GROUP BY `category_tag`.`category_id`) AS `tags_id`
FROM
`project_category` AS `pc`
JOIN
`project_category` AS `pc2` ON (`pc`.`lft` BETWEEN `pc2`.`lft` AND `pc2`.`rgt`) AND `pc2`.`project_category_id` <> `pc`.`project_category_id`
GROUP BY `pc`.`lft`
{$sqlHaving}
ORDER BY pc.lft
";
$tree = $this->_db->fetchAll($sql);
return $tree;
}
/**
* @param bool $isActive
* @param bool $withRoot
* @param int $depth
*
* @return array
* @internal param int $pageSize
* @internal param int $startIndex
* @internal param bool $clearCache
*/
public function fetchTreeWithParentIdAndTagGroups(
$isActive = true,
$depth = null
) {
$sqlActive = $isActive == true ? " parent_active = 1 AND pc.is_active = 1" : '';
$sqlDepth = is_null($depth) == true ? '' : " AND depth <= " . (int)$depth;
$sqlHaving = $sqlActive || $sqlDepth ? "HAVING {$sqlActive} {$sqlDepth}" : '';
$sql = "
SELECT
`pc`.`project_category_id`,
`pc`.`lft`,
`pc`.`rgt`,
`pc`.`title`,
`pc`.`name_legacy`,
`pc`.`is_active`,
`pc`.`orderPos`,
`pc`.`xdg_type`,
`pc`.`dl_pling_factor`,
`pc`.`show_description`,
`pc`.`source_required`,
MIN(`pc2`.`is_active`) AS `parent_active`,
concat(repeat(' ',count(`pc`.`lft`) - 1), `pc`.`title`) AS `title_show`,
concat(repeat(' ',count(`pc`.`lft`) - 1), IF(LENGTH(TRIM(`pc`.`name_legacy`))>0,`pc`.`name_legacy`,`pc`.`title`)) AS `title_legacy`,
count(`pc`.`lft`) - 1 AS `depth`,
GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`) AS `ancestor_id_path`,
GROUP_CONCAT(`pc2`.`title` ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path`,
GROUP_CONCAT(IF(LENGTH(TRIM(`pc2`.`name_legacy`))>0,`pc2`.`name_legacy`,`pc2`.`title`) ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path_legacy`,
SUBSTRING_INDEX( GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`), ',', -1) AS `parent`,
(SELECT GROUP_CONCAT(`tag_group`.`group_name`)
FROM `category_tag_group`,`tag_group`
WHERE `tag_group`.`group_id` = `category_tag_group`.`tag_group_id` AND `category_tag_group`.`category_id` = `pc`.`project_category_id`
GROUP BY `category_tag_group`.`category_id`) AS `tag_group_name`,
(SELECT GROUP_CONCAT(`tag_group`.`group_id`)
FROM `category_tag_group`,`tag_group`
WHERE `tag_group`.`group_id` = `category_tag_group`.`tag_group_id` AND `category_tag_group`.`category_id` = `pc`.`project_category_id`
GROUP BY `category_tag_group`.`category_id`) AS `tag_group_id`
FROM
`project_category` AS `pc`
JOIN
`project_category` AS `pc2` ON (`pc`.`lft` BETWEEN `pc2`.`lft` AND `pc2`.`rgt`) AND `pc2`.`project_category_id` <> `pc`.`project_category_id`
GROUP BY `pc`.`lft`
{$sqlHaving}
ORDER BY pc.lft
";
$tree = $this->_db->fetchAll($sql);
return $tree;
}
/**
* @param bool $isActive
* @param bool $withRoot
* @param int $depth
*
* @return array
* @internal param int $pageSize
* @internal param int $startIndex
* @internal param bool $clearCache
*/
public function fetchTreeWithParentIdAndSections(
$isActive = true,
$depth = null
) {
$sqlActive = $isActive == true ? " parent_active = 1 AND pc.is_active = 1" : '';
$sqlDepth = is_null($depth) == true ? '' : " AND depth <= " . (int)$depth;
$sqlHaving = $sqlActive || $sqlDepth ? "HAVING {$sqlActive} {$sqlDepth}" : '';
$sql = "
SELECT
`pc`.`project_category_id`,
`pc`.`lft`,
`pc`.`rgt`,
`pc`.`title`,
`pc`.`name_legacy`,
`pc`.`is_active`,
`pc`.`orderPos`,
`pc`.`xdg_type`,
`pc`.`dl_pling_factor`,
`pc`.`show_description`,
`pc`.`source_required`,
MIN(`pc2`.`is_active`) AS `parent_active`,
concat(repeat(' ',count(`pc`.`lft`) - 1), `pc`.`title`) AS `title_show`,
concat(repeat(' ',count(`pc`.`lft`) - 1), IF(LENGTH(TRIM(`pc`.`name_legacy`))>0,`pc`.`name_legacy`,`pc`.`title`)) AS `title_legacy`,
count(`pc`.`lft`) - 1 AS `depth`,
GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`) AS `ancestor_id_path`,
GROUP_CONCAT(`pc2`.`title` ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path`,
GROUP_CONCAT(IF(LENGTH(TRIM(`pc2`.`name_legacy`))>0,`pc2`.`name_legacy`,`pc2`.`title`) ORDER BY `pc2`.`lft` SEPARATOR ' | ') AS `ancestor_path_legacy`,
SUBSTRING_INDEX( GROUP_CONCAT(`pc2`.`project_category_id` ORDER BY `pc2`.`lft`), ',', -1) AS `parent`,
(SELECT `section`.name
FROM `section_category`, `section`
WHERE `section`.section_id = `section_category`.section_id and `section_category`.`project_category_id` = `pc`.`project_category_id`) AS `section_name`,
(SELECT `section`.section_id
FROM `section_category`, `section`
WHERE `section`.section_id = `section_category`.section_id and `section_category`.`project_category_id` = `pc`.`project_category_id`) AS `section_id`
FROM
`project_category` AS `pc`
JOIN
`project_category` AS `pc2` ON (`pc`.`lft` BETWEEN `pc2`.`lft` AND `pc2`.`rgt`) AND `pc2`.`project_category_id` <> `pc`.`project_category_id`
GROUP BY `pc`.`lft`
{$sqlHaving}
ORDER BY pc.lft
";
$tree = $this->_db->fetchAll($sql);
return $tree;
}
/**
* @param $cat_id
*
* @return array
*/
public function fetchTreeForJTableStores($cat_id)
{
$sql = "
SELECT
pc.project_category_id,
pc.lft,
pc.rgt,
pc.title,
pc.name_legacy,
pc.is_active,
pc.orderPos,
pc.xdg_type,
pc.dl_pling_factor,
pc.show_description,
pc.source_required,
MIN(pc2.is_active) AS parent_active,
concat(repeat(' ',count(pc.lft) - 1), pc.title) AS title_show,
concat(repeat(' ',count(pc.lft) - 1), IF(LENGTH(TRIM(pc.name_legacy))>0,pc.name_legacy,pc.title)) AS title_legacy,
count(pc.lft) - 1 AS depth,
GROUP_CONCAT(pc2.project_category_id ORDER BY pc2.lft) AS ancestor_id_path,
GROUP_CONCAT(pc2.title ORDER BY pc2.lft SEPARATOR ' | ') AS ancestor_path,
GROUP_CONCAT(IF(LENGTH(TRIM(pc2.name_legacy))>0,pc2.name_legacy,pc2.title) ORDER BY pc2.lft SEPARATOR ' | ') AS ancestor_path_legacy,
SUBSTRING_INDEX( GROUP_CONCAT(pc2.project_category_id ORDER BY pc2.lft), ',', -1) AS parent
FROM
project_category AS pc
JOIN
project_category AS pc2 ON (pc.lft BETWEEN pc2.lft AND pc2.rgt) AND (IF(pc.project_category_id <> 34,pc2.project_category_id <> pc.project_category_id,true))
GROUP BY pc.lft
HAVING parent_active = 1 AND pc.is_active = 1
ORDER BY pc.lft
";
$resultRows = $this->_db->fetchAll($sql);
$resultForSelect = array();
foreach ($resultRows as $row) {
if (($row['project_category_id'] == $cat_id) OR ($row['parent'] == $cat_id)) {
continue;
}
$resultForSelect[] = array('DisplayText' => $row['title_show'], 'Value' => $row['project_category_id']);
}
return $resultForSelect;
}
/**
* @param $cat_id
*
* @return array
*/
public function fetchTreeForJTableSection($cat_id)
{
$sql = "
SELECT
pc.project_category_id,
pc.lft,
pc.rgt,
pc.title,
pc.name_legacy,
pc.is_active,
pc.orderPos,
pc.xdg_type,
pc.dl_pling_factor,
pc.show_description,
pc.source_required,
MIN(pc2.is_active) AS parent_active,
concat(repeat(' ',count(pc.lft) - 1), pc.title) AS title_show,
concat(repeat(' ',count(pc.lft) - 1), IF(LENGTH(TRIM(pc.name_legacy))>0,pc.name_legacy,pc.title)) AS title_legacy,
count(pc.lft) - 1 AS depth,
GROUP_CONCAT(pc2.project_category_id ORDER BY pc2.lft) AS ancestor_id_path,
GROUP_CONCAT(pc2.title ORDER BY pc2.lft SEPARATOR ' | ') AS ancestor_path,
GROUP_CONCAT(IF(LENGTH(TRIM(pc2.name_legacy))>0,pc2.name_legacy,pc2.title) ORDER BY pc2.lft SEPARATOR ' | ') AS ancestor_path_legacy,
SUBSTRING_INDEX( GROUP_CONCAT(pc2.project_category_id ORDER BY pc2.lft), ',', -1) AS parent
FROM
project_category AS pc
JOIN
project_category AS pc2 ON (pc.lft BETWEEN pc2.lft AND pc2.rgt) AND (IF(pc.project_category_id <> 34,pc2.project_category_id <> pc.project_category_id,true))
GROUP BY pc.lft
HAVING parent_active = 1 AND pc.is_active = 1
ORDER BY pc.lft
";
$resultRows = $this->_db->fetchAll($sql);
$resultForSelect = array();
foreach ($resultRows as $row) {
if (($row['project_category_id'] == $cat_id) OR ($row['parent'] == $cat_id)) {
continue;
}
$resultForSelect[] = array('DisplayText' => $row['title_show'], 'Value' => $row['project_category_id']);
}
return $resultForSelect;
}
/**
* @param $cat_id
*
* @return array
*/
public function fetchTreeForCategoryStores($cat_id)
{
$sql = "
SELECT
pc.project_category_id,
pc.lft,
pc.rgt,
pc.title,
pc.is_active,
MIN(pc2.is_active) AS parent_active,
count(pc.lft) - 1 AS depth,
SUBSTRING_INDEX( GROUP_CONCAT(pc2.project_category_id ORDER BY pc2.lft), ',', -1) AS parent
FROM
project_category AS pc
JOIN
project_category AS pc2 ON (pc.lft BETWEEN pc2.lft AND pc2.rgt) AND (IF(pc.project_category_id <> 34,pc2.project_category_id <> pc.project_category_id,true))
GROUP BY pc.lft
HAVING parent_active = 1 AND pc.is_active = 1
ORDER BY pc.lft
";
$resultRows = $this->_db->fetchAll($sql);
$resultForSelect = array();
foreach ($resultRows as $row) {
if (($row['project_category_id'] == $cat_id) OR ($row['parent'] == $cat_id)) {
continue;
}
$resultForSelect[] = array('DisplayText' => $row['title'], 'Value' => $row['project_category_id']);
}
return $resultForSelect;
}
/**
* @param array $node
* @param int $newLeftPosition
*
* @return bool
* @throws Zend_Exception
* @deprecated use moveTo instead
*/
public function moveElement($node, $newLeftPosition)
{
$space = $node['rgt'] - $node['lft'] + 1;
$distance = $newLeftPosition - $node['lft'];
$srcPosition = $node['lft'];
//for backwards movement, we have to fix some values
if ($distance < 0) {
$distance -= $space;
$srcPosition += $space;
}
$this->_db->beginTransaction();
try {
// create space for subtree
$this->_db->query("UPDATE {$this->_name} SET rgt = rgt + :space WHERE rgt >= :newLeftPosition;",
array('space' => $space, 'newLeftPosition' => $newLeftPosition));
$this->_db->query("UPDATE {$this->_name} SET lft = lft + :space WHERE lft >= :newLeftPosition;",
array('space' => $space, 'newLeftPosition' => $newLeftPosition));
// move tree
$this->_db->query("UPDATE {$this->_name} SET lft = lft + :distance, rgt = rgt + :distance WHERE lft >= :srcPosition AND rgt < :srcPosition + :space;",
array('distance' => $distance, 'srcPosition' => $srcPosition, 'space' => $space));
// remove old space
$this->_db->query("UPDATE {$this->_name} SET rgt = rgt - :space WHERE rgt > :srcPosition;",
array('space' => $space, 'srcPosition' => $srcPosition));
$this->_db->query("UPDATE {$this->_name} SET lft = lft - :space WHERE lft >= :srcPosition;",
array('space' => $space, 'srcPosition' => $srcPosition));
// move it
$this->_db->commit();
} catch (Exception $e) {
$this->_db->rollBack();
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
return false;
}
return true;
}
public function findAncestor($data)
{
$resultRow = $this->fetchRow("rgt = {$data['lft']} - 1");
if (($resultRow->rgt - $resultRow->lft) > 1) {
$resultRow = $this->fetchRow("lft = {$resultRow->lft} - 2");
}
return $resultRow;
}
/**
* @param $data
*
* @return array|null
* @throws Zend_Db_Statement_Exception
* @throws Zend_Db_Table_Exception
*/
public function findPreviousSibling($data)
{
$parent = $this->fetchParentForId($data);
$parent_category_id = $parent->project_category_id;
$sql = "SELECT node.project_category_id, node.lft, node.rgt, node.title, (SELECT
`project_category_id`
FROM
`project_category` AS `t2`
WHERE
`t2`.`lft` < `node`.`lft` AND
`t2`.`rgt` > `node`.`rgt`
ORDER BY
`t2`.`rgt`-`node`.`rgt`ASC
LIMIT
1) AS `parent_category_id`
FROM project_category AS node,
project_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.project_category_id
HAVING parent_category_id = :parent_category_id
ORDER BY node.lft";
$siblings = $this->_db->query($sql, array('parent_category_id' => $parent_category_id))->fetchAll();
$resultRow = null;
$bufferRow = null;
foreach ($siblings as $row) {
if ($row['project_category_id'] != $data['project_category_id']) {
$bufferRow = $row;
continue;
}
$resultRow = $bufferRow;
}
return $resultRow;
}
/**
* @param $data
*
* @return Zend_Db_Table_Row_Abstract
* @throws Zend_Db_Statement_Exception
* @throws Zend_Db_Table_Exception
*/
public function fetchParentForId($data)
{
$sql = "
SELECT `title`, (SELECT
`project_category_id`
FROM
`project_category` AS `t2`
WHERE
`t2`.`lft` < `node`.`lft` AND
`t2`.`rgt` > `node`.`rgt`
ORDER BY
`t2`.`rgt`-`node`.`rgt`ASC
LIMIT
1) AS `parent`
FROM `project_category` AS `node`
WHERE `project_category_id` = :category_id
ORDER BY (`rgt`-`lft`) DESC
";
$resultRow = $this->_db->query($sql, array('category_id' => $data['project_category_id']))->fetch();
return $this->find($resultRow['parent'])->current();
}
/**
* @param $data
*
* @return array|null
* @throws Zend_Db_Statement_Exception
* @throws Zend_Db_Table_Exception
*/
public function findNextSibling($data)
{
$parent = $this->fetchParentForId($data);
$parent_category_id = $parent->project_category_id;
$sql = "SELECT node.project_category_id, node.lft, node.rgt, node.title, (SELECT
`project_category_id`
FROM
`project_category` AS `t2`
WHERE
`t2`.`lft` < `node`.`lft` AND
`t2`.`rgt` > `node`.`rgt`
ORDER BY
`t2`.`rgt`-`node`.`rgt`ASC
LIMIT
1) AS `parent_category_id`
FROM project_category AS node,
project_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.project_category_id
HAVING parent_category_id = :parent_category_id
ORDER BY node.lft";
$siblings = $this->_db->query($sql, array('parent_category_id' => $parent_category_id))->fetchAll();
$resultRow = null;
$found = false;
foreach ($siblings as $row) {
if ($found == true) {
$resultRow = $row;
break;
}
if ($row['project_category_id'] == $data['project_category_id']) {
$found = true;
continue;
}
}
return $resultRow;
}
/**
* @param $data
*
* @return null|Zend_Db_Table_Row_Abstract
*/
public function findPreviousElement($data)
{
$resultRow = $this->fetchRow("rgt = {$data['lft']} - 1");
if (($resultRow->rgt - $resultRow->lft) > 1) {
$resultRow = $this->fetchRow("lft = {$resultRow->rgt} - 2");
}
return $resultRow;
}
/**
* @param $data
*
* @return null|Zend_Db_Table_Row_Abstract
*/
public function findNextElement($data)
{
$resultRow = $this->fetchRow("lft = {$data['rgt']} + 1");
if (($resultRow->rgt - $resultRow->lft) > 1) {
$resultRow = $this->fetchRow("lft = {$resultRow->lft} + 2");
}
return $resultRow;
}
/**
* @param string|array $nodeId
* @param array $options
*
* @return array
* @throws Zend_Exception
*/
public function fetchChildTree($nodeId, $options = array())
{
$clearCache = false;
if (isset($options['clearCache'])) {
$clearCache = $options['clearCache'];
unset($options['clearCache']);
}
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5(serialize($nodeId) . serialize($options));
if ($clearCache) {
$cache->remove($cacheName);
}
if (!($tree = $cache->load($cacheName))) {
$extSqlWhereActive = " AND o.is_active = 1";
if (isset($options['isActive']) AND $options['isActive'] == false) {
$extSqlWhereActive = '';
}
$extSqlHavingDepth = '';
if (isset($options['depth'])) {
$extSqlHavingDepth = " HAVING depth <= " . (int)$options['depth'];
}
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$sql = "SELECT `o`.*,
COUNT(`p`.`project_category_id`)-1 AS `depth`,
CONCAT( REPEAT( ' ', (COUNT(`p`.`title`) - 1) ), `o`.`title`) AS `title_show`,
`pc`.`product_counter`
FROM `project_category` AS `n`
INNER JOIN `project_category` AS `p`
INNER JOIN `project_category` AS `o`
LEFT JOIN (SELECT
`project`.`project_category_id`,
count(`project`.`project_category_id`) AS `product_counter`
FROM
`project`
WHERE `project`.`status` = 100 AND `project`.`type_id` = 1
GROUP BY `project`.`project_category_id`) AS `pc` ON `pc`.`project_category_id` = `o`.`project_category_id`
WHERE `o`.`lft` BETWEEN `p`.`lft` AND `p`.`rgt`
AND `o`.`lft` BETWEEN `n`.`lft` AND `n`.`rgt`
AND `n`.`project_category_id` IN ({$inQuery})
AND `o`.`lft` > `p`.`lft` AND `o`.`lft` > `n`.`lft`
{$extSqlWhereActive}
GROUP BY o.lft
{$extSqlHavingDepth}
ORDER BY o.lft;
;
";
$tree = $this->_db->query($sql, $nodeId)->fetchAll();
$cache->save($tree, $cacheName);
}
return $tree;
}
/**
* @param int|array $nodeId
* @param bool $isActive
*
* @return array Set of subnodes
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchChildElements($nodeId, $isActive = true)
{
if (is_null($nodeId) OR $nodeId == '') {
return array();
}
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5(serialize($nodeId) . (int)$isActive);
if (($children = $cache->load($cacheName))) {
return $children;
}
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$whereActive = $isActive == true ? ' AND o.is_active = 1' : '';
$sql = "
SELECT o.*,
COUNT(p.project_category_id)-2 AS depth
FROM project_category AS n,
project_category AS p,
project_category AS o
WHERE o.lft BETWEEN p.lft AND p.rgt
AND o.lft BETWEEN n.lft AND n.rgt
AND n.project_category_id IN ({$inQuery})
{$whereActive}
GROUP BY o.lft
HAVING depth > 0
ORDER BY o.lft;
";
$children = $this->_db->query($sql, $nodeId)->fetchAll();
$cache->save($children, $cacheName);
if (count($children)) {
return $children;
} else {
return array();
}
}
/**
* @param int|array $nodeId
* @param bool $isActive
*
* @return array Set of subnodes
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchChildIds($nodeId, $isActive = true)
{
if (empty($nodeId) OR $nodeId == '') {
return array();
}
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5(serialize($nodeId) . (int)$isActive);
if (false !== ($children = $cache->load($cacheName))) {
return $children;
}
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$whereActive = $isActive == true ? ' AND o.is_active = 1' : '';
$sql = "
SELECT o.project_category_id
FROM project_category AS n,
project_category AS p,
project_category AS o
WHERE o.lft BETWEEN p.lft AND p.rgt
AND o.lft BETWEEN n.lft AND n.rgt
AND n.project_category_id IN ({$inQuery})
{$whereActive}
GROUP BY o.lft
HAVING COUNT(p.project_category_id)-2 > 0
ORDER BY o.lft;
";
if (APPLICATION_ENV == "development") {
Zend_Registry::get('logger')->debug(__METHOD__ . ' - ' . $sql . ' - ' . json_encode($nodeId));
}
$children = $this->_db->query($sql, $nodeId)->fetchAll();
if (count($children)) {
$result = $this->flattenArray($children);
$result = $this->removeUnnecessaryValues($nodeId, $result);
$cache->save($result, $cacheName);
return $result;
} else {
return array();
}
}
/**
*
* @flatten multi-dimensional array
*
* @param array $array
*
* @return array
*
*/
private function flattenArray(array $array)
{
$ret_array = array();
foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) {
$ret_array[] = $value;
}
return $ret_array;
}
/**
* @param array $nodeId
* @param array $children
*
* @return array
*/
private function removeUnnecessaryValues($nodeId, $children)
{
$nodeId = is_array($nodeId) ? $nodeId : array($nodeId);
return array_diff($children, $nodeId);
}
/**
* @param $nodeId
* @param string $orderBy
*
* @return array
* @throws Zend_Db_Statement_Exception
*/
public function fetchImmediateChildrenIds($nodeId, $orderBy = self::ORDERED_HIERARCHIC)
{
$sql = "
SELECT `node`.`project_category_id`
FROM `project_category` AS `node`
WHERE `node`.`is_active` = 1
HAVING (SELECT `parent`.`project_category_id` FROM `project_category` AS `parent` WHERE `parent`.`lft` < `node`.`lft` AND `parent`.`rgt` > `node`.`rgt` ORDER BY `parent`.`rgt`-`node`.`rgt` LIMIT 1) = ?
ORDER BY `node`.`{$orderBy}`;
";
$children = $this->_db->query($sql, $nodeId)->fetchAll(Zend_Db::FETCH_NUM);
if (count($children)) {
return $this->flattenArray($children);
} else {
return array();
}
}
/**
* @param Zend_Db_Table_Row $first
* @param Zend_Db_Table_Row $second
*
* @return \Zend_Db_Table_Row
* @throws Zend_Exception
* @deprecated
*/
public function switchElements($first, $second)
{
$bufferLeft = $first->lft;
$bufferRight = $first->rgt;
$this->_db->beginTransaction();
try {
$this->_db->query("UPDATE {$this->_name} SET rgt = {$second->rgt} WHERE project_category_id = {$first->project_category_id};");
$this->_db->query("UPDATE {$this->_name} SET lft = {$second->lft} WHERE project_category_id = {$first->project_category_id};");
$this->_db->query("UPDATE {$this->_name} SET rgt = {$bufferRight} WHERE project_category_id = {$second->project_category_id};");
$this->_db->query("UPDATE {$this->_name} SET lft = {$bufferLeft} WHERE project_category_id = {$second->project_category_id};");
$this->_db->commit();
} catch (Exception $e) {
$this->_db->rollBack();
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
}
$first->refresh();
return $first;
}
/**
* @param int $returnAmount
* @param int $fetchLimit
*
* @return array|false|mixed
*/
public function fetchMainCategories($returnAmount = 25, $fetchLimit = 25)
{
$categories = $this->fetchTree(true, false, 1);
return array_slice($categories, 0, $returnAmount);
}
/**
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchMainCatIdsOrdered()
{
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__;
if (($returnValue = $cache->load($cacheName))) {
return $returnValue;
}
$sql = "
SELECT
`node`.`project_category_id`
FROM
`project_category` AS `node`
INNER JOIN
`project_category` AS `parent`
WHERE
`node`.`lft` BETWEEN `parent`.`lft` AND `parent`.`rgt`
AND `node`.`is_active` = 1
AND `node`.`is_deleted` = 0
AND `node`.`lft` > 0
GROUP BY `node`.`project_category_id`
HAVING (COUNT(`parent`.`title`) - 1) = 1
ORDER BY `node`.`orderPos`, `node`.`lft`;
";
$result = $this->_db->query($sql)->fetchAll(Zend_Db::FETCH_NUM);
if (count($result) > 0) {
$returnValue = $this->flattenArray($result);
$cache->save($returnValue, $cacheName, array(), 900);
return $returnValue;
} else {
return array();
}
}
/**
* @return array
* @throws Zend_Db_Statement_Exception
*/
public function fetchMainCatsOrdered()
{
$sql = "
SELECT
node.project_category_id, node.title, node.lft, node.rgt
FROM
project_category AS node
INNER JOIN
project_category AS parent
WHERE
node.lft BETWEEN parent.lft AND parent.rgt
AND node.is_active = 1
AND node.is_deleted = 0
AND node.lft > 0
GROUP BY node.project_category_id
HAVING (COUNT(parent.title) - 1) = 1
ORDER BY node.orderPos, node.lft;
";
$result = $this->_db->query($sql)->fetchAll();
if (count($result) > 0) {
return $result;
} else {
return array();
}
}
/**
* @param int $cat_id
* @param string $orderBy
*
* @return array
* @throws Zend_Db_Statement_Exception
*/
public function fetchSubCatIds($cat_id, $orderBy = self::ORDERED_HIERARCHIC)
{
$sql = "
SELECT
node.project_category_id
FROM
project_category AS node
INNER JOIN
project_category AS parent
WHERE
parent.project_category_id IN (:cat_id)
-- AND node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft > parent.lft AND node.rgt < parent.rgt
AND node.is_active = 1
AND node.is_deleted = 0
AND node.lft > 0
GROUP BY node.project_category_id
ORDER BY node.`{$orderBy}`
;
";
$result = $this->_db->query($sql, array('cat_id' => $cat_id))->fetchAll(Zend_Db::FETCH_NUM);
if (count($result) > 0) {
// array_shift($result);
return $this->flattenArray($result);
} else {
return array();
}
}
/**
* @param int $returnAmount
* @param int $fetchLimit
*
* @return array
*/
public function fetchRandomCategories($returnAmount = 5, $fetchLimit = 25)
{
$categories = $this->fetchTree(true, false, 1);
return $this->_array_random($categories, $returnAmount);
}
/**
* @param array $categories
* @param int $count
*
* @return array
*/
protected function _array_random($categories, $count = 1)
{
shuffle($categories);
return array_slice($categories, 0, $count);
}
/**
* @param int $currentNodeId
* @param int $newParentNodeId
* @param string $position
*
* @return bool
* @throws Zend_Db_Statement_Exception
* @throws Zend_Db_Table_Exception
* @throws Zend_Exception
*/
public function moveToParent($currentNodeId, $newParentNodeId, $position = 'top')
{
if ($currentNodeId <= 0) {
return false;
}
$currentNode = $this->fetchElement($currentNodeId);
$currentParentNode = $this->fetchParentForId($currentNode);
if ($newParentNodeId == $currentParentNode->project_category_id) {
return false;
}
$newParentNode = $this->fetchElement($newParentNodeId);
if ($position == 'top') {
return $this->moveTo($currentNode, $newParentNode['lft'] + 1);
} else {
return $this->moveTo($currentNode, $newParentNode['rgt']); // move to bottom otherwise
}
}
/**
* @param int $nodeId
*
* @return array Returns Element as array or (if empty) an array with empty values
* @throws Zend_Db_Table_Exception
*/
public function fetchElement($nodeId)
{
if (is_null($nodeId) OR $nodeId == '') {
return $this->createRow();
}
$currentNode = $this->find($nodeId)->current();
if ($currentNode === null) {
$resultValue = $this->createRow()->toArray();
} else {
$resultValue = $currentNode->toArray();
}
return $resultValue;
}
/**
* @param array $node complete node data
* @param int $newLeftPosition new left position for the node
*
* @return bool
* @throws Zend_Exception
*/
public function moveTo($node, $newLeftPosition)
{
$space = $node['rgt'] - $node['lft'] + 1;
$distance = $newLeftPosition - $node['lft'];
$srcPosition = $node['lft'];
//for backwards movement, we have to fix some values
if ($distance < 0) {
$distance -= $space;
$srcPosition += $space;
}
$this->_db->beginTransaction();
try {
// create space for subtree
$this->_db->query("UPDATE {$this->_name} SET lft = lft + :space WHERE lft >= :newLeftPosition;",
array('space' => $space, 'newLeftPosition' => $newLeftPosition));
$this->_db->query("UPDATE {$this->_name} SET rgt = rgt + :space WHERE rgt >= :newLeftPosition;",
array('space' => $space, 'newLeftPosition' => $newLeftPosition));
// move tree
$this->_db->query("UPDATE {$this->_name} SET lft = lft + :distance, rgt = rgt + :distance WHERE lft >= :srcPosition AND rgt < :srcPosition + :space;",
array('distance' => $distance, 'srcPosition' => $srcPosition, 'space' => $space));
// remove old space
$this->_db->query("UPDATE {$this->_name} SET rgt = rgt - :space WHERE rgt > :srcPosition;",
array('space' => $space, 'srcPosition' => $srcPosition));
$this->_db->query("UPDATE {$this->_name} SET lft = lft - :space WHERE lft >= :srcPosition;",
array('space' => $space, 'srcPosition' => $srcPosition));
// move it
$this->_db->commit();
} catch (Exception $e) {
$this->_db->rollBack();
Zend_Registry::get('logger')->err(__METHOD__ . ' - ' . print_r($e, true));
return false;
}
return true;
}
/**
* @param $productId
*
* @return array
*/
public function fetchMainCategoryForProduct($productId)
{
$sql = "SELECT `pc`.`project_category_id`, `pc`.`title`
FROM `project_category` AS `pc`
JOIN `project` AS `p` ON `p`.`project_category_id` = `pc`.`project_category_id`
WHERE `p`.`project_id` = :projectId
;";
return $this->_db->fetchAll($sql, array('projectId' => $productId));
}
/**
* @param $productId
*
* @return array
* @deprecated
*/
public function fetchAllCategoriesForProduct($productId)
{
$sql = "SELECT p.project_id, pc.project_category_id AS category_id, pc.title AS category, ps.project_category_id AS sub_category_id, ps.title AS sub_category
FROM project AS p
JOIN project_category AS pc ON p.project_category_id = pc.project_category_id
LEFT JOIN (SELECT prc.project_category_id, psc.project_id, prc.title FROM project_subcategory AS psc JOIN project_category AS prc ON psc.project_sub_category_id) AS ps ON p.project_id = ps.project_id
WHERE p.project_id = :projectId
";
return $this->_db->fetchAll($sql, array('projectId' => $productId));
}
/**
* @param int $cat_id
*
* @return int|string
* @throws Zend_Db_Table_Exception
*/
public function countSubCategories($cat_id)
{
$cat = $this->findCategory($cat_id);
$countSubCat = (int)$cat->rgt - (int)$cat->lft - 1;
if ($countSubCat < 0) {
return 0;
} else {
return $countSubCat;
}
}
/**
* @param int $nodeId
*
* @return Zend_Db_Table_Row_Abstract
* @throws Zend_Db_Table_Exception
*/
public function findCategory($nodeId)
{
if (is_null($nodeId) OR $nodeId == '') {
return $this->createRow();
}
$result = $this->find($nodeId);
if (count($result) > 0) {
return $result->current();
} else {
return $this->createRow();
}
}
/**
* @param $valueCatId
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchCategoriesForForm($valueCatId)
{
$level = 0;
$mainCatArray = $this->fetchMainCatForSelect(Default_Model_DbTable_ProjectCategory::ORDERED_TITLE);
$ancestors = array("catLevel-{$level}" => $mainCatArray);
$level++;
if (false == empty($valueCatId)) {
foreach (array_keys($mainCatArray) as $element) {
if($element == $valueCatId) {
return $ancestors;
}
}
$categoryAncestors = $this->fetchAncestorsAsId($valueCatId);
if ($categoryAncestors) {
$categoryPath = explode(',', $categoryAncestors['ancestors']);
foreach ($categoryPath as $element) {
$catResult = $this->fetchImmediateChildren($element, Default_Model_DbTable_ProjectCategory::ORDERED_TITLE);
$ancestors["catLevel-{$level}"] = $this->prepareDataForFormSelect($catResult);
$level++;
}
}
}
return $ancestors;
}
/**
* @param $valueCatId
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchCategoriesForFormNew($valueCatId)
{
$level = 0;
$mainCatArray = $this->fetchMainCatForSelectNew(Default_Model_DbTable_ProjectCategory::ORDERED_TITLE);
$ancestors = array("catLevel-{$level}" => $mainCatArray);
$level++;
if (false == empty($valueCatId)) {
foreach (array_keys($mainCatArray) as $element) {
if($element == $valueCatId) {
return $ancestors;
}
}
$categoryAncestors = $this->fetchAncestorsAsId($valueCatId);
if ($categoryAncestors) {
$categoryPath = explode(',', $categoryAncestors['ancestors']);
foreach ($categoryPath as $element) {
$catResult = $this->fetchImmediateChildren($element, Default_Model_DbTable_ProjectCategory::ORDERED_TITLE);
$ancestors["catLevel-{$level}"] = $this->prepareDataForFormSelect($catResult);
$level++;
}
}
}
return $ancestors;
}
/**
* @param string $orderBy
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchMainCatForSelect($orderBy = self::ORDERED_HIERARCHIC)
{
$root = $this->fetchRoot();
$resultRows = $this->fetchImmediateChildren($root['project_category_id'], $orderBy);
/*
$storeCatIds = Zend_Registry::isRegistered('store_category_list') ? Zend_Registry::get('store_category_list') : null;
if(null == $storeCatIds) {
$root = $this->fetchRoot();
$resultRows = $this->fetchImmediateChildren($root['project_category_id'], $orderBy);
} else {
$resultRows = $this->fetchImmediateChildren($storeCatIds, $orderBy, false);
}*/
$resultForSelect = $this->prepareDataForFormSelect($resultRows);
return $resultForSelect;
}
/**
* @param string $orderBy
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchMainCatForSelectNew($orderBy = self::ORDERED_HIERARCHIC)
{
//$root = $this->fetchRoot();
//$resultRows = $this->fetchImmediateChildrenNew($root['project_category_id'], $orderBy);
$storeCatIds = Zend_Registry::isRegistered('store_category_list') ? Zend_Registry::get('store_category_list') : null;
if(null == $storeCatIds) {
$root = $this->fetchRoot();
$resultRows = $this->fetchImmediateChildrenNew($root['project_category_id'], $orderBy);
} else {
$resultRows = $this->fetchImmediateChildrenNew($storeCatIds, $orderBy, false);
}
$resultForSelect = $this->prepareDataForFormSelectNew($resultRows);
return $resultForSelect;
}
/**
* @param int|array $nodeId
* @param string $orderBy
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Db_Statement_Exception
*/
public function fetchImmediateChildren($nodeId, $orderBy = 'lft')
{
$str = is_array($nodeId) ? implode(',', $nodeId) : $nodeId;
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5($str . $orderBy);
if (false === ($children = $cache->load($cacheName))) {
$inQuery = '?';
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
}
$sql = '
SELECT node.*, (SELECT parent.project_category_id FROM project_category AS parent WHERE parent.lft < node.lft AND parent.rgt > node.rgt ORDER BY parent.rgt-node.rgt LIMIT 1) AS parent
FROM project_category AS node
WHERE node.is_active = 1
HAVING parent IN (' . $inQuery . ')
ORDER BY node.' . $orderBy . '
';
$children = $this->_db->query($sql, $nodeId)->fetchAll();
if (count($children) == 0) {
$children = array();
}
$cache->save($children, $cacheName, array(), 3600);
}
return $children;
}
/**
* @param int|array $nodeId
* @param string $orderBy
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function fetchImmediateChildrenNew($nodeId, $orderBy = 'lft')
{
$str = is_array($nodeId) ? implode(',', $nodeId) : $nodeId;
/** @var Zend_Cache_Core $cache */
$cache = $this->cache;
$cacheName = __FUNCTION__ . '_' . md5($str . $orderBy);
if (false === ($children = $cache->load($cacheName))) {
$proCatModel = new Default_Model_ProjectCategory();
$store_config = Zend_Registry::get('store_config');
$store_id = $store_config->store_id;
$rows = $proCatModel->fetchTreeForView($store_id);
$children = array();
if (is_array($nodeId)) {
$inQuery = implode(',', array_fill(0, count($nodeId), '?'));
foreach ($rows as $row) {
foreach ($nodeId as $node) {
if($row['id'] == $node) {
$children[] = $row;
}
}
}
} else {
foreach ($rows as $row) {
if($row['parent_id'] == $nodeId) {
$children[] = $row;
}
}
}
if (count($children) == 0) {
$children = array();
}
$cache->save($children, $cacheName, array(), 3600);
}
return $children;
}
/**
* @param $resultRows
*
* @return array
*/
protected function prepareDataForFormSelect($resultRows)
{
$resultForSelect = array();
//$resultForSelect[''] = '';
foreach ($resultRows as $row) {
$resultForSelect[$row['project_category_id']] = $row['title'];
}
return $resultForSelect;
}
/**
* @param $resultRows
*
* @return array
*/
protected function prepareDataForFormSelectNew($resultRows)
{
$resultForSelect = array();
//$resultForSelect[''] = '';
foreach ($resultRows as $row) {
$resultForSelect[$row['id']] = $row['title'];
}
return $resultForSelect;
}
/**
* @param $catId
*
* @return array|mixed
*/
public function fetchAncestorsAsId($catId)
{
$sql = '
SELECT node.title, GROUP_CONCAT(parent.project_category_id ORDER BY parent.lft) AS ancestors
FROM project_category AS node
LEFT JOIN project_category AS parent ON parent.lft < node.lft AND parent.rgt > node.rgt AND parent.lft > 0
WHERE node.project_category_id = :categoryId
GROUP BY node.project_category_id
HAVING ancestors IS NOT NULL
';
$result = $this->_db->fetchRow($sql, array('categoryId' => $catId));
if ($result AND count($result) > 0) {
return $result;
} else {
return array();
}
}
/**
* @param $resultRows
*
* @return array
*/
protected function prepareDataForFormSelectWithTitleKey($resultRows)
{
$resultForSelect = array();
//$resultForSelect[''] = '';
foreach ($resultRows as $row) {
$resultForSelect[$row['title']] = $row['project_category_id'];
}
return $resultForSelect;
}
/**
* @deprecated
*/
protected function initLocalCache()
{
$frontendOptions = array(
'lifetime' => 3600,
'automatic_serialization' => true
);
$backendOptions = array(
'cache_dir' => APPLICATION_CACHE,
'file_locking' => true,
'read_control' => true,
'read_control_type' => 'adler32', // default 'crc32'
'hashed_directory_level' => 0,
'hashed_directory_perm' => 0700,
'file_name_prefix' => 'app',
'cache_file_perm' => 700
);
$this->cache = Zend_Cache::factory(
'Core',
'File',
$frontendOptions,
$backendOptions
);
}
}
\ No newline at end of file
diff --git a/application/modules/default/models/ProjectTagRatings.php b/application/modules/default/models/ProjectTagRatings.php
index 4bdf53968..f6ad2216c 100755
--- a/application/modules/default/models/ProjectTagRatings.php
+++ b/application/modules/default/models/ProjectTagRatings.php
@@ -1,101 +1,101 @@
.
**/
class Default_Model_ProjectTagRatings
{
/**
* @param $project_id
*/
public function getProjectTagRatings($project_id)
{
$sql = "
SELECT
r.tag_id,
r.vote,
r.member_id,
r.tag_rating_id
FROM stat_projects p
- inner join category_tag_group_rating g on p.project_category_id = g.category_id
- inner join tag_group_item i on i.tag_group_id = g.tag_group_id
+ inner join project_category g on p.project_category_id = g.project_category_id
+ inner join tag_group_item i on i.tag_group_id = g.tag_rating
inner join tag_rating r on r.tag_id = i.tag_id and r.project_id = p.project_id and r.is_deleted=0
inner join tag t on t.tag_id = r.tag_id
where p.project_id = :project_id
";
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('project_id' => $project_id))->fetchAll();
return $result;
}
public function getCategoryTagRatings($category_id)
{
$sql ="SELECT
- t.tag_id as id,
- t.tag_fullname as name,
- tg.group_display_name
- FROM category_tag_group_rating g
- inner join tag_group_item i on i.tag_group_id = g.tag_group_id
- inner join tag t on t.tag_id = i.tag_id
- inner join tag_group tg on g.tag_group_id = tg.group_id
- where g.category_id = :category_id
+ t.tag_id as id,
+ t.tag_fullname as name,
+ tg.group_display_name
+ FROM project_category g
+ inner join tag_group_item i on i.tag_group_id = g.tag_rating
+ inner join tag t on t.tag_id = i.tag_id
+ inner join tag_group tg on g.tag_rating = tg.group_id
+ where g.project_category_id =:category_id
";
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('category_id' => $category_id))->fetchAll();
return $result;
}
/**
* @return tag_rating_id,vote/false
*/
public function checkIfVote($member_id,$project_id,$tag_id)
{
$sql = "select tag_rating_id,vote from tag_rating where member_id=:member_id and project_id=:project_id and tag_id=:tag_id
and is_deleted=0";
$result = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql,array("member_id"=>$member_id
,"project_id"=>$project_id
,"tag_id" =>$tag_id
));
return $result;
if($result && $result['tag_rating_id'])
{
return $result;
}else{
return false;
}
}
public function doVote($member_id,$project_id,$tag_id,$vote)
{
Zend_Db_Table::getDefaultAdapter()->insert('tag_rating'
,array('member_id' => $member_id
,'project_id' => $project_id
,'tag_id' => $tag_id
,'vote' => $vote
));
}
public function removeVote($tag_rating_id)
{
$sql ="update tag_rating set is_deleted=1, deleted_at=now() where tag_rating_id=".$tag_rating_id;
Zend_Db_Table::getDefaultAdapter()->query($sql);
}
}
\ No newline at end of file
diff --git a/httpdocs/theme/flatui/css/stylesheet.css b/httpdocs/theme/flatui/css/stylesheet.css
index cd656ab75..9586eb710 100644
--- a/httpdocs/theme/flatui/css/stylesheet.css
+++ b/httpdocs/theme/flatui/css/stylesheet.css
@@ -1 +1 @@
-.bg_sheet{background-image:url(../img/bg_sheet.png)}.bg_sheet_statistics{background-image:url(../img/statistics_sheet.png)}.unstyled_list{list-style-type:none;padding:0px;margin:0px}.hand-with-coin{display:inline-block;background-image:url('../img/new/button/hand-w-coin.png');height:61px;width:61px}.hand-with-coin.v-2{background-image:url('../img/new/button/hand-w-coin-2.png')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url('../css/fonts/open-sans-v15-latin-300.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-300.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url('../css/fonts/open-sans-v15-latin-regular.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-regular.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans SemiBold'),local('OpenSans-SemiBold'),url('../css/fonts/open-sans-v15-latin-600.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-600.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url('../css/fonts/open-sans-v15-latin-700.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-700.woff') format('woff')}body{color:#32353d;overflow-y:scroll;font-size:1.5em;line-height:1.231;color:#4e4e4e;font-family:'Open Sans',sans-serif;font-size:medium}header,footer,main,section{width:100%;float:left}header section.wrapper,footer section.wrapper,main section.wrapper,section section.wrapper{margin-left:auto;margin-right:auto;width:95%;float:none;height:auto}a{text-decoration:none;color:#2673b0;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}a:hover{text-decoration:none}a:focus{outline:none}button::-moz-focus-inner{border:0}input,button,select,textarea{font-family:"Lato",sans-serif;font-size:14px}h1{font-size:32px;font-weight:900}h3{font-size:24px;font-weight:700;margin-bottom:4px;margin-top:2px}h5{font-size:16px;font-weight:500;text-transform:uppercase}@media (max-width:1200px) and (min-width:992px){header section.wrapper,footer section.wrapper,main section.wrapper{width:95%;margin-left:2.5%;margin-right:2.5%}}body{padding-top:34px}body .navbar-gitlab{top:34px}body#git-body #metaheader{position:fixed !important}body#git-body .nav-sidebar{top:88px}body.navigation-topics #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body.category-themes-and-apps #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body.category-general #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body[class*='category-'] #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon{margin-top:-5px}body.docked .d-header{top:34px}body.docked #metaheader{position:fixed}body.drawer-open{height:100%;overflow:hidden}.btn{background:#bdc3c7 none repeat scroll 0 0;border:medium none;border-radius:6px;box-shadow:none;color:#fff;line-height:22px;padding:9px 12px 10px;text-decoration:none;text-shadow:none;-webkit-transition:all .2 ease-out;-moz-transition:all .2 ease-out;-ms-transition:all .2 ease-out;-o-transition:all .2 ease-out}.btn.btn-large{font-size:16.996px;line-height:20px;padding:12px 18px 13px}.btn.btn-native{background-color:#2673b0;color:white}.btn.btn-pling-red{background-color:#e84310}.btn.btn-pling-green{background-color:green}.btn.btn-purple{background:#9b59b6;padding:10px 35px}.btn.btn-file-dropzone{font-size:10px;padding:8px 10px 10px;line-height:10px}.btn.btn-file-action{font-size:12px;padding:8px 10px 10px;line-height:16px;margin-left:5px}.pling-danger{background:#C9302C none repeat scroll 0 0}.standard-form input{height:41px}.standard-form input,.standard-form textarea,.standard-form select{border:1px solid #bdc3c7;padding:0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.standard-form .field{margin-bottom:15px}.icon-facebook,.icon-twitter,.icon-google{width:40px;height:40px;cursor:pointer;display:inline-block;background-image:url(../img/bg_sheet.png)}.icon-facebook{background-position:0 -105px}.icon-twitter{background-position:-40px -105px}.lightblue{color:#2673b0}.small{font-size:12px}.large{font-size:18px}.relative{position:relative}.absolute{position:absolute}.light{font-weight:300}.lightgrey{color:#95a5a6}.center{text-align:center}i.myfav{color:#8e44ad}h1.page-title{color:#34495e;font-weight:bold;font-size:32px}.modal{overflow-y:hidden}.right{float:right}.left{float:left}em.icon{display:inline-block;background-image:url(../img/bg_sheet.png)}em.icon.info-icon{width:31px;height:30px;background-position:-289px -64px}.margin-bottom-10{margin-bottom:10px}.margin-top-15{margin-top:15px}.full-width{width:100% !important}.progress{height:8px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;margin-bottom:0}.opendesktopwidgetpager{display:flex;justify-content:right;align-items:center;justify-content:flex-end}.opendesktopwidgetpager ul.opendesktopwidgetpager{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.opendesktopwidgetpager ul.opendesktopwidgetpager>li{display:inline}.opendesktopwidgetpager ul.opendesktopwidgetpager>li>span{cursor:pointer;position:relative;float:left;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd;padding:5px 10px;font-size:12px}.opendesktopwidgetpager ul.opendesktopwidgetpager>.active>span{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.disply-flex{display:flex;flex-wrap:wrap}.disply-flex>[class*='col-']{display:flex;flex-direction:column}.metamenu{width:100%;background-color:#fff;height:15px}.metamenu a#toggleStoreBtn{float:left;margin-left:20px;text-decoration:none}.metamenu a.home-link{float:left}.metamenu a.home-link img.logo{width:16px;height:16px}.meta-nav-top>li>a{padding:0px 5px ;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.meta-nav-top>li>a#ocs-stores img{width:16px;height:16px}ul.meta-nav-top{list-style:none}ul.meta-nav-top li{float:left}ul.meta-nav-top-right{margin:0px;margin-right:30px;float:right}ul.meta-nav-top-right li{padding:0 10px}ul.meta-nav-top-left{float:left}#toggleStoreContainer{z-index:1000;display:none;width:60%;height:200px;top:12px;left:190px}#toggleStoreContainer a{display:block;font-size:16px}#toggleStoreContainer a:hover{color:#6a7686}#toggleStoreContainer b{text-decoration:underline;text-align:center;padding-left:20px;font-size:18px;cursor:default}#toggleStoreContainer ul{list-style:none;padding:0;padding-top:10px;padding-left:30px}#toggleStoreContainer ul li{font-size:14px}#toggleStoreContainer ul li:hover{background-color:transparent}header nav{border-bottom:transparent}header#page_header{color:#6a7686;height:auto;font-size:10pt;font-weight:400;width:100%;font-family:Arial,sans-serif}header#page_header nav#nav-top{margin-left:130px;width:84%}header .dropdown-header{width:175px;height:12px;background-image:url(../img/bg_sheet.png);background-position:-385px 0}header a{color:#ffffff}header .pull-left,header .pull-right{padding:0}header ul{margin-bottom:0}header ul.menu-icon{float:right;display:none}header ul li{list-style:none;display:inline-block;margin:0;cursor:pointer;position:relative;height:40px;line-height:40px;float:left}header ul li a{float:left;display:block;height:inherit;line-height:inherit;padding:0 20px}header ul li.profile-menu-container{padding-top:0;padding-left:40px}header ul li.profile-menu-container .header-profile-image{top:50%;left:10px;height:30px;width:30px;margin-top:-15px}header ul li.profile-menu-container .header-profile-image .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:12px;border-radius:999px;padding:5px 5px}header ul li.profile-menu-container .header-profile-image .supporter-badge.inactive{background:#ccc}header ul li.profile-menu-container .header-profile-image img{height:30px;width:30px;float:left;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li.profile-menu-container>a{display:block}header ul li ul{width:165px;margin-left:0;position:absolute;left:-9999px;top:45px;border:none;font-size:14px;color:#7f8c8d;font-weight:normal;padding:0;z-index:10001;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul.active{left:0;top:40px}header ul li ul li{text-align:left;display:block;width:100%;background:#ecf0f1;margin:0;padding:0;height:40px;border-bottom:1px solid #d6d7d9}header ul li ul li.first,header ul li ul li:first-of-type{-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul li:last-of-type{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul li a{color:#6a7686;text-align:left;height:40px;line-height:40px}header .container{margin-left:auto;margin-right:auto;float:none;height:auto;width:100%;background-color:#e2e2e2}header .container.header{margin-left:auto;margin-right:auto;float:none;width:100%}header .container.header section.container{background-color:transparent}header .container.header section.container.backLink{background-color:#729ECD !important;height:30px}header .container.header section.container.backLink h4 a:hover{color:#1d1d1d}header .container.header section.container section.wrapper{height:40px;padding-left:80px;position:relative}header .container.header section.container+section.container{background-color:transparent;padding-left:0}header .container.header section.container+section.container>section.wrapper{padding-left:242px;height:50px}header .container.header nav{border-bottom:transparent}header .container.header nav #search{height:25px;padding:0;margin:6.5px 15px;line-height:25px;position:relative}header .container.header nav #search input.content-search{width:16em;height:25px;padding:0;border:1px solid white;margin-bottom:-1px;padding-right:30px;text-indent:5px;color:#6a7686;float:left;border-radius:6px;box-shadow:none}header .container.header nav #search div.icon-search-input{top:2px;right:0;width:25px;height:25px;background-image:url(/theme/flatui/img/icon-search-input-2.png);background-position:center center;position:absolute;cursor:pointer}header .container.header ul.menu-nav-tabs{bottom:0;display:inline-table;list-style-type:none;margin:0;padding:0;position:absolute;z-index:999}.pling-nav-tabs-a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li{background-color:transparent;margin-bottom:0px }.pling-nav-tabs ul.nav-tabs>li>a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li>a:hover{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0}.pling-nav-tabs ul.nav-tabs>li>a:hover svg{fill:#2673b0}.pling-nav-tabs ul.nav-tabs>li>a:focus{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li svg{fill:#777}.pling-nav-tabs ul.nav-tabs>li.active>a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active>a:hover{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active>a:focus{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active svg{fill:#2673b0}footer{width:100%;float:left;padding:12px 0;border-bottom:5px solid #2673b0;border-top:1px solid darkgray;background-color:gainsboro;font-size:9pt}footer h3{font-weight:normal}footer h3#footer-heading{font-size:1.3em;margin:0}footer nav#footer-nav ul{margin-top:1em;list-style:none;padding:0;margin-right:1em;float:left;width:auto;margin-bottom:.2em}footer nav#footer-nav ul li{display:inline-block;margin-right:0;font-size:1em}footer nav#footer-nav ul li a{color:#666;font-weight:400}footer nav#footer-nav ul li+li{margin-left:10px}footer h3#footer-social-heading{color:#666;font-size:1em;margin:0 0 .4em 0}footer #footer-social{float:right}footer #footer-social a{width:30px;display:block;float:left}footer #footer-social a+a{margin-left:2px}footer section.wrapper .pull-left{padding:0}footer section.wrapper .pull-right{padding:0}body.home-page main section.wrapper .container{padding:150px 0;height:auto;float:none;max-width:95%;width:95%}body.home-page main section.wrapper#intro .container{padding-bottom:50px}body.home-page main section.wrapper#intro .container article{text-align:center;width:100%}body.home-page main section.wrapper#intro .container article>*{margin-bottom:40px}body.home-page main section.wrapper#intro .container article h2{font-size:40px;font-weight:700;margin-bottom:20px}body.home-page main section.wrapper#intro .container article h3{font-size:30px;font-weight:700;margin-top:2px}body.home-page main section.wrapper#intro .container article p{margin-bottom:0;text-align:center}body.home-page main section#cat-list{border-top:1px solid #cdd7dd}body.home-page main .card-wrapper{position:relative;max-width:960px;margin:auto;margin-bottom:2rem;background:white}body.home-page main .card-wrapper .card-item{position:absolute;padding:1rem;width:31.4%;border:1px solid gray;border-radius:7px}body.home-page main .card-wrapper .card-item .category a.title{font-size:14pt;font-weight:600;min-height:30px;line-height:30px;padding-right:30px}body.home-page main .card-wrapper .card-item .category a.title span.label{padding:2px 3px}body.home-page main .card-wrapper .card-item div a.title{font-size:11pt;min-height:20px;line-height:20px;padding-right:5px}body.home-page main .card-wrapper .card-item div a.title span.label{font-size:7pt;font-weight:300;vertical-align:top;margin-left:5px;padding:1px 3px}.card-item{border:1px solid gray}.card-item .category>a.title{color:#444444}.card-item div>a.title{color:#6a6a6a}#indeximages{line-height:0;-webkit-column-count:20;-webkit-column-gap:0px;-moz-column-count:20;-moz-column-gap:0px;column-count:20;column-gap:0px}#indeximages img{width:100% !important;height:auto !important;opacity:1}@media (max-width:1920px){#indeximages{-moz-column-count:20;-webkit-column-count:20;column-count:20}}@media (max-width:1200px){#indeximages{-moz-column-count:15;-webkit-column-count:4;column-count:4}}@media (max-width:1000px){#indeximages{-moz-column-count:12;-webkit-column-count:3;column-count:3}}@media (max-width:800px){#indeximages{-moz-column-count:9;-webkit-column-count:2;column-count:2}}@media (max-width:400px){#indeximages{-moz-column-count:7;-webkit-column-count:1;column-count:1}}#products-wrapper{padding-top:20px}.explore-products{padding-left:30px;padding-right:30px;margin-top:-10px}.explore-products .product-list{width:100%;float:left;padding:0 10px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.explore-products .product-list .explore-product{padding:10px 0;font-size:12px;border-top:1px solid #ccc}.explore-products .product-list .explore-product .rownum{font-size:12px;float:left}.explore-products .product-list .explore-product .explore-product-imgcolumn{padding-left:5px;padding-right:5px}.explore-products .product-list .explore-product .imageContainer{height:167px;display:flex;justify-content:center;align-items:center}.explore-products .product-list .explore-product .explore-product-image{max-width:95%;max-height:167px}.explore-products .product-list .explore-product .contentLeft{float:left;padding-right:0px;width:270px}.explore-products .product-list .explore-product .contentLeft img{max-width:167px;max-height:167px}.explore-products .product-list .explore-product .contentLeft div.productimg{width:167px;height:167px}.explore-products .product-list .explore-product .explore-product-details{padding-left:20px}.explore-products .product-list .explore-product .explore-product-details h3{font-size:24px;font-weight:bold;color:#2673b0}.explore-products .product-list .explore-product .explore-product-details h3 span.version{font-size:smaller;padding-left:20px}.explore-products .product-list .explore-product .explore-product-details .title{display:block;margin-bottom:8px}.explore-products .product-list .explore-product .explore-product-details .title .username{padding-left:20px}.explore-products .product-list .explore-product .explore-product-details .description{display:block;margin-bottom:8px}.explore-products .product-list .explore-product .explore-product-details .packagetypes{display:block;float:left}.explore-products .product-list .explore-product .explore-product-details .packagetypes .packagetypeos{width:100px;float:left}.explore-products .product-list .explore-product .explore-product-details .productInfo{clear:left;padding-top:5px}.explore-products .product-list .explore-product .explore-product-details .productInfo span.cntSupporters{padding-right:20px}.explore-products .product-list .explore-product .explore-product-plings{padding:0}.explore-products .product-list .explore-product .explore-product-plings .plinged{width:50%;text-align:center}.explore-products .product-list .explore-product .explore-product-plings .rating{width:50%}.explore-products .product-list .explore-product .explore-product-plings .progress{margin-bottom:10px;padding:3px;opacity:0;margin-bottom:0;height:12px;opacity:1;background-color:transparent;box-shadow:none;padding:2px}.explore-products .product-list .explore-product .explore-product-plings .progress .bar{width:4px;max-width:100%;height:14px;background-color:#2673b0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}.explore-products .product-list .explore-product .explore-product-plings .progress .bar.no-goal{width:50%;opacity:0}.explore-products .product-list .explore-product .explore-product-plings .collected span{display:block;width:100%;float:left}.explore-products .product-list .explore-product:first-of-type{border-top:0}.explore-products .explore-footer{width:100%;text-align:center}.explore-products .explore-footer .projectPaginationControl{width:auto;display:table;margin:0 auto}.explore-products .explore-footer .projectPaginationControl ul#pagination-digg{padding:0;list-style-type:none;margin:20px 0;height:auto;overflow:hidden}.explore-products .explore-footer .projectPaginationControl ul#pagination-digg li{float:left;font-size:16px;font-weight:normal;margin:0 4px}aside#explore-sidebar{padding-left:0;margin-bottom:20px}main#community-page .head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative}main#community-page .head-wrap .wrapper{width:95%}main#community-page .head-wrap .page-title{height:3em;position:relative;margin-bottom:2em}main#community-page .head-wrap .page-title .center{position:absolute;top:0;left:0;width:100%;height:3em;text-align:center}main#community-page .head-wrap .page-title .center>div{background:rgba(246,246,246,0.86);width:auto;display:table;float:none;margin:0 auto}main#community-page .head-wrap .page-title .center>div>h1{margin:0 .5em}main#community-page .head-wrap .page-title hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee;border-bottom:1px solid white;float:left;width:100%}main#community-page .banner{margin:0 auto;float:none;background:white;border:1px solid #e4e4e4;padding:0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;text-align:center}main#community-page .banner .top{padding:1em;font-size:1em}main#community-page .banner .top .large{font-size:2em}main#community-page .banner .bottom{padding:1em;background:rgba(231,231,231,0.4);border-top:1px solid #e4e4e4;-webkit-border-radius:0 0 9px 9px;-moz-border-radius:0 0 9px 9px;border-radius:0 0 9px 9px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .banner .bottom a{margin-right:5px}main#community-page .body-wrap{background:white;position:relative}main#community-page .body-wrap .wrapper{width:70%}main#community-page .body-wrap #user-lists{padding-top:1em}main#community-page .body-wrap #user-lists #community-tabs{margin-bottom:20px;text-align:center}main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-tabs{text-align:center}main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-tabs>li,main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-pills>li{float:none;display:inline-block}main#community-page .body-wrap #user-lists #communityPanels .toplistmemberx .explore-product:first-child{border-top:1px solid #ccc}main#community-page .body-wrap #user-lists #communityPanels .paging{display:block;float:right}main#community-page .body-wrap #user-lists #communityPanels .btnshowmore{display:none}main#community-page .body-wrap #user-lists #communityPanels .explore-products{width:800px}main#community-page .body-wrap #user-lists #communityPanels .rowproduct{align-items:center;justify-content:center}main#community-page .body-wrap #user-lists #communityPanels .rank{font-size:33px;line-height:33px;letter-spacing:normal;text-align:center;font-weight:700;letter-spacing:-1px}main#community-page .body-wrap #user-lists #communityPanels .product-list{background-color:#F5F5F5;border:1px solid #e4e4e4;border-radius:10px}main#community-page .body-wrap #user-lists #communityPanels figure.mostplingedcreators img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list{display:block;margin:auto;padding-right:15px;padding-left:15px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}main#community-page .body-wrap #user-lists .list .u-wrap{float:left;width:100%;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative;text-align:center}main#community-page .body-wrap #user-lists .list .u-wrap figure{float:left;padding:.25em;border:1px solid #dbdbdb;background:#f6f6f6;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list .u-wrap h3{font-size:13px;font-weight:bold;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}main#community-page .body-wrap #user-lists .list .u-wrap span.small{font-size:13px;color:#444;position:absolute;bottom:5px;right:5px}main#community-page .body-wrap #user-lists .list .u-wrap div.projecttitle{font-size:11px}main#community-page .body-wrap #user-lists .list .u-wrap span.rank{font-size:14px;position:absolute;bottom:5px;left:5px;color:#444;font-weight:bold}#product-page-content{padding:0}#product-page-content #product-main-img #product-title-div{padding-left:30px;min-height:105px;padding-top:20px;display:flex}#product-page-content #product-main-img #product-title-div .product-title{flex:0 0 80%;font-size:25px;color:#2673b0;font-weight:bold;padding-bottom:15px}#product-page-content #product-main-img #product-title-div .product-title-right{flex:1}#product-page-content #product-main-img #product-title-div img.logo{max-height:85px;max-width:85px;float:left;padding-right:15px;border-radius:0px}#product-page-content #product-main-img #product-title-div .product-logo-container{float:left;width:95px}#product-page-content #product-main-img #product-title-div .product_category{font-size:small;display:block;font-weight:normal}#product-page-content #product-main-img #product-title-div .topics{padding-right:20px;float:right}#product-page-content #product-main-img #product-title-div .topics .topic-tag{display:inline-block;padding:.3em .9em;margin:0 .5em .5em 0;white-space:nowrap;background-color:#f1f8ff;border-radius:3px}#product-page-content #product-main-img #product-title-div .topics .usertagslabelcat{background-color:#f1f1f1}#product-page-content #product-main-img #product-title-div .topics .topic-tag-link:hover{text-decoration:none;background-color:#def}#product-page-content #product-main-img #product-title-div .topics .btn-link{display:inline-block;padding:0;font-size:inherit;color:#0366d6;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;float:right;padding-top:5px;padding-left:10px}#product-page-content #product-main-img #product-title-div .topics .topic-tags-saved{display:none;color:#0366d6;float:left;padding-top:5px;padding-left:10px}#product-page-content #product-main-img #product-title-div .topics .topic-tags-saved .fa-check{color:green}#product-page-content #product-main-img #product-title-div span.source{color:#4e4e4e}#product-page-content #product-main-img #product-title-div div.projectdetailRating{float:right;width:140px;z-index:100}#product-page-content #product-main-img #product-title-div div.projectdtailHeart{float:right;margin-right:5px;width:80px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling{position:relative;width:80px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonfollowproject{text-align:center;width:80px;height:30px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonplingproject{text-align:center}#product-page-content #product-main-img #product-title-div div.projectdtailHeart{float:right;z-index:100;margin-right:5px;width:50px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling{position:relative;width:50px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonfollowproject{text-align:center;width:45px;height:45px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonplingproject{text-align:center}#product-page-content #product-main-img #product-title-div .heartproject{position:relative;color:#8e44ad;font-size:45px;display:block}#product-page-content #product-main-img #product-title-div div.heartnumber{z-index:3;position:relative;top:-32px;display:block;margin:auto;color:#fff}#product-page-content #product-main-img #product-title-div .heartgrey{position:relative;color:#C8C8C8;font-size:45px;display:block}#product-page-content #product-main-img #product-title-div span.plingcircle{width:30px;height:30px;background-color:#fff;border:3px solid #C8C8C8;border-radius:50%;display:inline-block;font-size:17px;text-align:center;color:#C8C8C8;font-weight:bold;transform:rotate(345deg)}#product-page-content #product-main-img #product-title-div span.active{border:3px solid #EE6E09;color:#EE6E09}#product-page-content #product-main-img #product-title-div div.heartnumberpurple{color:#8e44ad}#product-page-content #product-tabs-container{padding-top:30px}#product-page-content #product-tabs-container #product-actions{margin-top:25px;margin-right:10px}#product-page-content #product-tabs{font-size:10pt;padding-left:25px}#product-page-content #product-panels{background:none repeat scroll 0 0 #fff;height:auto;overflow:hidden;border-radius:0px;padding:15px;float:left;width:100%;margin:0}#product-page-content #product-panels .tab-pane{width:100%;float:left;background-color:white;padding:4px}#product-page-content #product-panels .tab-pane h3{color:#2673b0;margin-bottom:20px;margin-top:0}#product-page-content #product-panels .tab-pane .panel-grey-part{padding:15px;background-color:#f3f3f3;color:#2673b0;border-left:1px solid #e5e5e5}#product-page-content #product-panels .tab-pane#about-panel #product-about{padding:20px 10px 10px 10px}#product-page-content #product-panels .tab-pane#about-panel #product-about .gitlab-readme img{max-width:100%}#product-page-content #product-panels .tab-pane#about-panel #product-about article{padding-top:15px}#product-page-content #product-panels .tab-pane#about-panel #product-about article.lastchangelog{padding-top:50px}#product-page-content #product-panels .tab-pane#donations-panel #comments{width:100%;float:left;padding:15px}#product-page-content #product-panels .tab-pane#donations-panel .list#supporters{padding:15px}#product-page-content #product-panels .tab-pane#ratings-panel2 .userimg{border-radius:50%;border:1px solid #ccc;width:40px;height:40px}#product-page-content #product-panels .tab-pane#ratings-panel .productRating-rows-inactive{color:#ddd;display:none}#product-page-content #product-panels .tab-pane#ratings-panel .userimg{border-radius:50%;border:1px solid #ccc;width:40px;height:40px}#product-page-content #product-panels .tab-pane#ratings-panel span.o-thumbs-up{color:green;padding-left:10px;padding-top:10px}#product-page-content #product-panels .tab-pane#ratings-panel span.o-thumbs-down{color:red;padding-left:10px;padding-top:10px}#product-page-content #product-panels #files-panel{padding-top:30px}#product-page-content #product-panels #files-panel table.table-ocs-file td{padding:3px;vertical-align:middle;padding-left:8px}#product-page-content #product-panels #files-panel table.table-ocs-file th{padding-right:3px}#product-page-content #product-panels #files-panel .btn{padding:3px 5px}#product-page-content #product-panels #updates-panel span.product-update-date{padding-left:10px}#product-page-content #product-panels #gitlabissues-panel span.date{font-size:10pt}#product-page-content #product-panels #gitlabissues-panel span.title{font:12pt Trebuchet MS,sans-serif;display:block;padding-bottom:10px}#product-page-content #product-panels #gitlabissues-panel span.showmore{font-size:10pt}span.page-views{float:left;font-size:12px;padding:5px 15px 5px 0px;color:#2673b0}#product-maker{background-color:#f1f1f1}#product-maker .project-share-new{padding-bottom:10px;padding-top:10px}#product-maker .project-share-new>.row{padding-left:30px}#product-maker .project-share-new .prod-user{margin-top:10px}#product-maker .project-share-new .prod-user .product-maker-thumbnail{float:right}#product-maker .project-share-new .prod-user .product-maker-thumbnail .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:10px;border-radius:999px;padding:2px 2px}#product-maker .project-share-new .prod-user .product-maker-thumbnail .supporter-badge.inactive{background:#ccc}#product-maker .project-share-new .prod-user .product-maker-summary{float:right;padding-right:20px}#product-maker .project-share-new .prod-info{font-size:12px;padding-bottom:10px}#product-maker .project-share-new .prod-info>span{width:100%;float:left;padding-left:15px}#product-maker .project-share-new .prod-download>a{position:relative;display:block;float:left;color:#2673b0;background-image:-moz-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#E8E8E8), to(#D6D6D6));background-image:-webkit-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:-o-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:linear-gradient(to bottom, #E8E8E8, #D6D6D6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0);-webkit-box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);-moz-box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);padding:10px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;height:50px;font-size:16px;line-height:30px;padding-left:15px;margin-right:5px;margin-bottom:10px}#product-maker .project-share-new .prod-download>a .glyphicon{font-size:30px;margin:0;position:absolute;height:30px;width:30px;display:block;top:10px;left:10px}#product-maker .project-share-new .prod-download>a .txt{float:left;width:100%;height:30px}#product-maker .project-share-new .prod-download>a .txt>span{text-transform:capitalize}#product-maker .project-share-new #donation-box{margin:0 -10px}.prod-widget-box{border:1px solid #ccd4d8 !important;font-size:10pt;padding:5px;margin-bottom:10px !important;width:95% !important}.prod-widget-box .product-row .product-thumbnail{width:75px;height:77px;margin:7px;padding:10px;position:relative}.prod-widget-box .product-row .product-thumbnail img{border-radius:5px;border:1px solid #b2b2b2;height:75px;width:75px}.prod-widget-box #pling-box .donation-box{padding-top:10px;padding-bottom:15px;width:100%;height:auto}.prod-widget-box #pling-box .donation-box>div{height:auto}.prod-widget-box #comments figure{width:40px;height:auto;text-align:center;border-top:1px solid #f5f5f5;padding:0 0 15px 0;float:left}.prod-widget-box #comments figure img{margin:0 auto;width:70%}.prod-widget-box.details span{line-height:1.65em;font-size:8.25pt}.prod-widget-box.details span.title{font:12pt Trebuchet MS,sans-serif;display:block;padding-bottom:10px}.prod-widget-box.details span.value{font-size:9pt}#product-donate{display:none;width:550px;height:300px;font-size:13px}main#reg-page{width:100%;height:100%}main#reg-page .form-control-feedback{line-height:40px}main#reg-page section#register-wrap{position:absolute;top:150px;left:50%;margin-left:-290px;width:580px}main#reg-page section#register-wrap input[type="text"],main#reg-page section#register-wrap input[type="password"]{border-width:1px;height:41px;margin:4px 0;width:100%;float:none;padding:0 5px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}main#reg-page section#register-wrap input[type="checkbox"]{height:20px;width:auto}main#reg-page section#register-wrap label{font-size:12px}main#reg-page section#register-wrap button#login{margin-top:8px;width:120px}main#reg-page section#register-wrap #register{width:100%;margin:auto;background:#f5f5f5;padding:10px;border-radius:5px}main#reg-page section#register-wrap #register h3{text-align:center;font-weight:400;position:relative;margin:10px 0 13px 0}main#reg-page section#register-wrap #register #register-box{padding-left:0;padding-right:0;min-height:373px}main#reg-page section#register-wrap #register #register-box #register-form-box{background-color:white;margin-bottom:0;width:373px}main#reg-page section#register-wrap #register #social-register{padding-top:20px;padding-right:15px;padding-left:30px;float:right}main#reg-page section#register-wrap #register #social-register #social-login-elements{margin-bottom:91px}main#reg-page section#register-wrap #register #social-register>div{float:left;width:100%}main#reg-page section#register-wrap #register #social-register form button{background-image:url(../img/bg_sheet.png);font-size:14px;display:block;font-weight:300;color:white;width:140px;height:41px;margin:0;border:none;text-align:left;text-indent:10px;padding-left:41px}main#reg-page section#register-wrap #register #social-register form button.facebook{background-position:0 -189px;margin-top:4px}main#reg-page section#register-wrap #register #social-register form button.twitter{background-position:0 -232px;margin-top:7px}main#reg-page section#register-wrap #register #social-register .bottom .small{margin-bottom:6px;text-align:center}main#reg-page section#register-wrap #register #social-register .bottom .login2 a{width:100%}main#reg-page section#register-wrap #login-form-box{background-color:white;margin-bottom:0;position:absolute;top:0;bottom:0}main#reg-page #thumbs{z-index:-1;width:100%;min-height:1000px;overflow:hidden;position:relative;background:#000}main#reg-page #thumbs div.thumb{width:5.5555%;max-height:100px;padding:0;float:left;background:rgba(0,0,0,0.8)}main#reg-page #thumbs div.thumb a{float:left;width:100%;height:auto;display:block;position:relative}main#reg-page #thumbs div.thumb a>span{width:100%;height:100%;display:block;position:absolute;top:0;left:0;background:rgba(0,0,0,0.8);-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}main#reg-page #thumbs div.thumb a img{width:100%;height:auto}.login-popup{position:relative;background:white;padding:0;width:420px;margin:0 auto}.login-popup .login-popup-form{background:#fff;border-radius:10px;padding:20px;float:left;margin:0;width:440px}.login-popup .login-popup-form .login-form-container{position:relative}.login-popup .login-popup-form .login-form-container form{margin:0}.login-popup .login-popup-form .login-form-container form input,.login-popup .login-popup-form .login-form-container form textarea,.login-popup .login-popup-form .login-form-container form select{border:1px solid #bdc3c7;padding:0;border-radius:5px}.login-popup .login-popup-form .login-form-container form .inputbox{border:1px solid #eaedf2;border-radius:3px;height:40px;padding:10px 0 10px 32px;width:100%;outline:none;margin-bottom:10px;font-family:inherit}.login-popup .login-popup-form .login-form-container form .email{background:#eaedf2 url(../img/email.png) 10px 15px no-repeat}.login-popup .login-popup-form .login-form-container form .password{background:#eaedf2 url(../img/password.png) 10px 10px no-repeat}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me{height:20px;clear:both;margin-bottom:10px}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me input{height:20px;margin:0 5px;float:left;width:auto}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me label{display:inline-block;font-weight:bold;font-size:13px;float:left}.login-popup .login-popup-form .login-form-links{position:absolute;bottom:10px;right:20px;font-size:13px}.login-popup .login-popup-form .login-form-links a{font-size:13px}.login-popup p{font-size:15px;margin-bottom:0;text-align:left}.login-popup .social{margin:20px 0 15px}.login-popup .social a{color:#fff;text-decoration:none;font-weight:bold;border-radius:4px 4px 4px 4px;margin-right:10px;float:left;height:40px}.user-admin-page{position:relative}.user-admin-page .head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative;padding-bottom:1.9em}.user-admin-page .head-wrap .about-me-header figure{width:6.9em;height:6.9em;padding:.3em;border:1px solid #dbdbdb;background:white;position:absolute;z-index:10;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header figure img{width:100%;height:100%;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header .user-menu{position:relative;height:auto;background:white;float:left;margin-top:1.5em;padding:.5em 2em .5em 8em;-webkit-border-radius:50px 0 0 50px;-moz-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header .user-menu .intro{margin-top:0}.user-admin-page .body-wrap{background:white;position:relative}.user-admin-page .body-wrap .product-page{padding-top:1em}.user-admin-page .my-products-page,.user-admin-page .my-payments-page{padding-bottom:2em}.user-admin-page .my-products-page span.payouthistory-icon,.user-admin-page .my-payments-page span.payouthistory-icon{width:15px;height:15px;background-image:url(../img/line-chart.svg);background-size:13px;background-position:bottom left;cursor:pointer;background-repeat:no-repeat;float:left}.user-admin-page .my-products-page .my-products-heading,.user-admin-page .my-payments-page .my-products-heading{padding-bottom:20px;margin-bottom:20px;margin-top:20px;border-bottom:1px solid #c1c1c1;float:left;width:100%}.user-admin-page .my-products-page .my-products-heading .num-products,.user-admin-page .my-payments-page .my-products-heading .num-products{margin-top:35px}.user-admin-page .my-products-page .my-products-list,.user-admin-page .my-payments-page .my-products-list{float:left;width:100%}.user-admin-page .my-products-page .my-product-item,.user-admin-page .my-payments-page .my-product-item{margin-bottom:20px}.user-admin-page .my-products-page .my-product-item figure,.user-admin-page .my-payments-page .my-product-item figure{height:auto;padding:0}.user-admin-page .my-products-page .my-product-item figure img.explore-product-image,.user-admin-page .my-payments-page .my-product-item figure img.explore-product-image{width:101px;height:auto;padding-top:10px}.user-admin-page .my-products-page .my-product-item article>div,.user-admin-page .my-payments-page .my-product-item article>div{float:left;width:100%}.user-admin-page .my-products-page .my-product-item article .title,.user-admin-page .my-payments-page .my-product-item article .title{margin-bottom:10px}.user-admin-page .my-products-page .my-product-item article .title h3,.user-admin-page .my-payments-page .my-product-item article .title h3{margin:0;padding:0}.user-admin-page .my-products-page .my-product-item article .info ul,.user-admin-page .my-payments-page .my-product-item article .info ul{list-style-type:none;padding:0;margin:0}.user-admin-page .my-products-page .my-product-item article .info ul li,.user-admin-page .my-payments-page .my-product-item article .info ul li{float:left;width:auto;font-size:12px}.user-admin-page .my-products-page .my-product-item article .info ul li span+span,.user-admin-page .my-payments-page .my-product-item article .info ul li span+span{margin-left:5px;font-weight:bold}.user-admin-page .my-products-page .my-product-item article .info ul li+li,.user-admin-page .my-payments-page .my-product-item article .info ul li+li{margin-left:15px}.user-admin-page .my-products-page .my-product-item article .text,.user-admin-page .my-payments-page .my-product-item article .text{font-size:12px;margin:5px 0 10px 0}.user-admin-page .my-products-page .my-product-item article .text p,.user-admin-page .my-payments-page .my-product-item article .text p{margin:0}.user-admin-page .my-products-page .my-product-item article .buttons a.btn.btn-native,.user-admin-page .my-payments-page .my-product-item article .buttons a.btn.btn-native{color:white;font-size:12px;padding:3px 6px}.user-admin-page .my-products-page .my-product-item article .buttons a.btn.pling-danger,.user-admin-page .my-payments-page .my-product-item article .buttons a.btn.pling-danger{background-color:#C82333}.user-admin-page .my-products-page .my-product-divider,.user-admin-page .my-payments-page .my-product-divider{border-bottom:1px solid #c1c1c1;margin-bottom:20px;width:97%;margin-left:15px}.user-admin-page .my-products-page #my-earnings-list ul.nav-tabs,.user-admin-page .my-payments-page #my-earnings-list ul.nav-tabs{top:0;position:relative;margin:0;border-radius:5px 5px 0 0;padding:10px;padding-bottom:0}.user-admin-page .my-products-page #my-earnings-list ul.nav-tabs>li>a,.user-admin-page .my-payments-page #my-earnings-list ul.nav-tabs>li>a{padding:.7em 1em;font-size:.9em;height:2.95em;color:#2673b0}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs{padding:10px;border:1px solid #ddd;border-radius:0 0 5px 5px}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane{font-weight:bold}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane .row,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane .row{margin:0}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane .row h3,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane .row h3{margin:5px 0}.modal-ppload .content-modal{width:950px}.about-me-page div.catgroupseperator{display:block;height:40px;font-size:20px;clear:both;color:#777}.about-me-page .my-fav-list{width:100%}.about-me-page .my-fav-list .totaldownloads{margin:0;padding:20px;text-align:right}.about-me-page .my-fav-list .smaller{font-size:smaller}.about-me-page .my-fav-list .row{border-bottom:1px solid #ccc;padding-top:15px;padding-bottom:15px}.about-me-page .my-fav-list .rating{width:80px !important;font-size:10pt}.about-me-page .my-fav-list .downloadhistory-image{width:50px;height:50px;float:left;margin-right:15px}.about-me-page .my-fav-list .nowrap{white-space:nowrap}.about-me-page .my-fav-list i.voteup{color:#409540;font-size:20px;padding-left:5px;padding-right:5px}.about-me-page .my-fav-list i.votedown{color:#C9302C;font-size:20px;padding-left:5px;padding-right:5px}.about-me-page .my-fav-list .newusers .u-wrap{float:left;width:100%;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative}.about-me-page .my-fav-list .newusers .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .my-fav-list .newusers .u-wrap h3{font-size:13px;font-weight:bold;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}.about-me-page .my-fav-list .newusers .u-wrap div.small{font-size:13px;color:#444;position:absolute;bottom:5px;right:5px}.about-me-page .my-fav-list .newusers .u-wrap div.small img.plingactivesmall{width:20px;height:20px}.about-me-page .my-fav-list .newusers .u-wrap div.small .cntplings{line-height:20px}.about-me-page>.head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative;padding-bottom:1em}.about-me-page>.head-wrap .page-title{height:3em;position:relative;margin-bottom:2em;margin-top:2em}.about-me-page>.head-wrap .page-title .center{position:absolute;top:0;left:0;width:100%;height:3em;text-align:center}.about-me-page>.head-wrap .page-title .center>div{background:#f6f6f6;width:auto;display:table;float:none;margin:0 auto}.about-me-page>.head-wrap .page-title .center>div>h1{margin:0 .5em}.about-me-page>.head-wrap .page-title hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee;border-bottom:1px solid white;float:left;width:100%}.about-me-page .header{height:auto;position:relative;margin-bottom:3em}.about-me-page .header>div.col-lg-8{padding-right:5px;padding-left:0}.about-me-page .header>div.col-lg-4{padding-right:0;padding-left:5px}.about-me-page .header .about{display:none}.about-me-page .header .about .well{background-color:white;padding:1em;height:22.5em}.about-me-page .header .about .well h2{font-size:1.4em;margin:0;min-height:1.4em;line-height:1.2em;border-bottom:1px solid #dbdbdb;font-weight:normal}.about-me-page .header .about .well article{border-top:1px solid #f5f5f5;padding-top:.5em;width:100%;float:left;overflow:hidden;height:18.5em}.about-me-page .header .about .well article>.scroll-pane{height:18em}.about-me-page .header .summary{float:none;margin:0 auto}.about-me-page .header .summary article{padding:0;background-color:white;height:auto;float:left}.about-me-page .header .summary article .about-title{padding:1em;height:8.9em;padding-left:8.9em;background:rgba(246,246,246,0.45);border-bottom:1px solid #e1e1e1;float:left;width:100%;position:relative}.about-me-page .header .summary article .about-title figure{width:6.9em;height:6.9em;padding:.3em;border:1px solid #dbdbdb;background:white;position:absolute;top:1em;left:1em;display:inline-block;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .header .summary article .about-title figure img{width:100%;height:100%;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .header .summary article .about-title .btnSupportMe{position:absolute;right:0;top:0}.about-me-page .header .summary article .about-title .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:16px;border-radius:999px;padding:5px 5px}.about-me-page .header .summary article .about-title .supporter-badge.inactive{background:#ccc}.about-me-page .header .summary article .about-title .mod-badge{display:block;text-align:center;padding-top:3px;font-size:small}.about-me-page .header .summary article .about-title h1{margin:1.5em 0 0 0;font-size:1.5em;min-height:1.7em;line-height:1em}.about-me-page .header .summary article .about-content{padding:1em;float:left}.about-me-page .header .summary article .about-content>div{float:left;width:100%}.about-me-page .header .summary article .about-content>div span{float:left;display:block;line-height:1.25em}.about-me-page .header .summary article .about-content>div span.glyphicon{color:#939292;margin-right:.25em;font-size:1.25em}.about-me-page .header .summary article .about-content>div span+span{line-height:1.65em}.about-me-page .header .summary article .about-content>div.social-icons a{font-size:1.35em;height:1em;width:1em;display:block;float:left}.about-me-page .header .summary article .about-content>div.social-icons a img{width:100%;height:100%;vertical-align:top}.about-me-page .header .summary article .about-content>div.social-icons a+a{margin-left:.25em}.about-me-page .header .summary article .about-content div+div{margin-top:.25em}.about-me-page .header .summary article .about-footer{float:left;width:100%;padding:1em}.about-me-page .header .summary article .about-footer .info-div{width:100%;float:left}.about-me-page .header .summary article .about-footer .info-div+.info-div{margin-top:5px}.about-me-page .header .summary article .about-footer .social-share .social+.social{margin-left:.5em}.about-me-page .header .summary article .about-footer>.pull-right em.report-icon{height:1.5em;width:1.5em;margin-top:.5em;background-size:cover}.about-me-page .about-me-details{padding-left:0;padding-right:.5em}.about-me-page .about-me-details .tab-content{padding-top:20px}.about-me-page .about-me-details h3.about-me-heading{font-size:1.5em;margin:0;min-height:1.9em;line-height:1.9em;border-bottom:1px solid #dbdbdb;font-weight:normal}.about-me-page .about-me-details article{padding-top:.5em;padding-bottom:1.5em;width:100%;float:left}.about-me-page .about-me-details .my-products-list h3{width:100%;margin-bottom:20px}.about-me-page .about-me-details .my-products-list .cat-title{padding:0 5px;position:relative;height:2em;margin-bottom:1em;margin-top:1.1em}.about-me-page .about-me-details .my-products-list .cat-title>div{position:absolute;top:0;left:1em;background:white;height:2em;width:auto;padding:0 .5em}.about-me-page .about-me-details .my-products-list .cat-title>div>h2{margin:0}.about-me-page .about-me-details .my-products-list .cat-title hr{float:left;width:100%;margin-top:1em;margin-bottom:1em;border-bottom:1px solid #F9F9F9}.about-me-page .about-me-details .my-products-list .mini-card{width:14.28571%;margin-bottom:10px}.about-me-page .about-me-details .my-products-list .mini-card p img{vertical-align:baseline}.about-me-page aside .details{float:left;width:100%;height:auto;padding:.5em}.about-me-page aside .details h3{line-height:2em;font-size:1em;margin:0;color:#a3a2a2;border-bottom:1px solid #e1e1e1}.about-me-page aside .details .box-content{padding:.5em 0 0 0;border-top:1px solid #ededed}.about-me-page aside .details .box-content>div{width:100%;float:left;height:auto;margin-top:.5em}.about-me-page aside .details .box-content>div .label{float:left;padding:0;min-height:1.5em;line-height:1.3em}.about-me-page aside .details .box-content>div .label img.accounts_icon{padding-top:2px;width:20px}.about-me-page aside .details .box-content>div .label em,.about-me-page aside .details .box-content>div .label span{font-size:1.7em;float:left;display:inline-block;color:#AAA}.about-me-page aside .details .box-content>div .label em{display:block;width:1em;height:1em;background-size:cover}.about-me-page aside .details .box-content>div .label em.fb-link{background-image:url('../img/social_icons/fb.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.tw-link{background-image:url('../img/social_icons/tw.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.gp-link{background-image:url('../img/social_icons/g_plus.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.gt-link{background-image:url('../img/social_icons/github.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.email-link{background-image:url('../img/email.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .text{width:90%;float:right;font-size:1em;min-height:1.5em;line-height:1.3em}.mini-card{padding:0 2px;width:14.28571%;margin-bottom:10px}.mini-card .u-wrap{float:left;width:100%;border:2px solid #DEE0E0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;height:15em;margin-bottom:4px;background:white;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.mini-card .u-wrap a{float:left;width:100%;height:100%;display:block;position:relative}.mini-card .u-wrap figure{width:100%;float:left;height:120px}.mini-card .u-wrap figure img{width:100%;height:120px;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.mini-card .u-wrap .rating{font-size:11px;position:absolute;right:10px;bottom:10px}.mini-card .u-wrap .u-content{width:100%;float:left;padding:3px;height:5.5em;position:relative;overflow:hidden}.mini-card .u-wrap .u-content .productCategory{color:#4e4e4e;display:block;font-size:11px}.mini-card .u-wrap .u-content>h3{font-size:12px;word-wrap:break-word;width:100%;margin:2px 0 4px 0}.mini-card .u-wrap .u-content>p{font-size:15px;position:absolute;bottom:0;right:3px;width:100%;margin:0;color:black;font-weight:bold;text-align:right;color:#444}.mini-card .u-wrap:hover{border-color:#DEE0E0;background:#f6f6f6}.mini-card .u-wrap:hover figure{background:white}@media (max-width:800px){.mini-card{width:16.6666667%}.mini-card .u-wrap{height:12em}}@media (max-width:550px){.mini-card{width:20%}.mini-card .u-wrap{height:14em}}@media (max-width:350px){.mini-card{width:33.333333%}.mini-card .u-wrap{height:16em}}.product-card{width:10%;padding:0 3px;margin-bottom:10px;height:auto}.product-card>a{display:block;float:left;width:100%;height:auto;position:relative}.product-card>a .card>.border{position:absolute;top:0;left:0;width:100%;background-color:#2673B0}.product-card>a .card>.p-wrap{width:100%;height:8.25em;border:2px solid #c5ced5;background-color:white;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-card>a .card>.p-wrap>figure{width:100%;height:3.5em;overflow:hidden;display:block;float:left;border-bottom:1px solid #c5ced5}.product-card>a .card>.p-wrap>figure>img{height:100%;width:100%}.product-card>a .card>.p-wrap>.content{width:100%;float:left;padding:.25em;font-size:1em;height:3.5em}.product-card>a .card>.p-wrap>.content>h3{font-size:.7em;margin:0;color:#34495e;display:block;width:100%;height:100%;overflow:hidden;word-break:break-word}.product-card>a .card>.p-wrap>.footer{float:left;width:100%;height:1em;line-height:1em;font-size:1em;text-align:right;padding:0 .1em;background-color:#f5f5f5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-card>a .card>.p-wrap>.footer>p{font-weight:bold;font-size:.75em;color:#a7a7a7}.product-card>a>.empty-card{width:100%}@media (max-width:800px){.product-card{width:16.6666667%}}@media (max-width:550px){.product-card{width:20%}}@media (max-width:350px){.product-card{width:33.333333%}}.wizard>.content>.body{position:inherit}.wizard>.content>.body input.error,.wizard>.content>.body select.error,.wizard>.content>.body textarea.error{background:none repeat scroll 0 0 #fbe3e4;border:1px solid #fbc2c4;color:#8a1f11}.wizard>.steps li a{background:#eee none repeat scroll 0 0;color:#aaa;cursor:default}.wizard>.steps li a:hover{cursor:pointer}.wizard>.steps>ul>li{width:20%}.add-product-top{width:100%;margin:20px 0 100px 0;padding:0 15px}.add-product-top h1{margin-bottom:0;font-size:2em}.add-product-top ul.steps{width:auto;margin-bottom:0}.add-product-top ul.steps li{float:left;display:inline-block;list-style:none;margin:0;color:#bdc3c7;border-bottom:2px solid #bdc3c7;padding:1em 2.5em;font-size:1em;width:auto}.add-product-top ul.steps li.active{color:#2673B0;border-bottom:2px solid #2673B0}.add-product-container{padding-bottom:40px}.add-product-container>form{width:50%;margin:0 auto}.add-product-container>form .field label{width:100%}.add-product-container>form .field input,.add-product-container>form .field textarea{width:100%}.add-product-container>form .field select{height:35px;width:48%}.add-product-container>form .field select+select{float:right}.add-product-container>form button+button{margin-right:10px}.add-product-form{margin:auto}.mandatory{top:2px;left:-240px;width:220px;text-align:right}.bold-font{font-size:18px;font-weight:bold}.field-missing-container{top:26px;right:-240px;width:230px}.field-missing-left{margin-top:6px;float:left;width:8px;height:22px;background:url(../img/field-missing-left.png)}.field-missing{float:left;background:#fadbd8;border-radius:5px;color:#e74c3c;padding:12px;max-width:190px;word-break:normal;word-wrap:break-word}.add-more{right:10px}a.add-more:hover{text-decoration:underline}.icon-plus{margin-left:5px;width:15px;height:15px;background:url(../img/icon-plus.png)}.product-gallery{margin-bottom:30px}.product-gallery .product-image{float:left;margin:5px 5px 0 0}.product-gallery .product-image img{max-width:110px;max-height:110px;overflow:hidden;border-radius:5px;border:3px solid #2673B0}.product-gallery .product-image img:hover{border:3px solid #bdc3c7}.product-gallery .product-image .image{width:110px;height:77px;overflow:hidden;border-radius:5px;border:3px solid #2673B0;background-size:110px;background-position:center center}.product-gallery .product-image .image:hover{border:3px solid #bdc3c7}.product-gallery .product-image .icon-check{width:20px;height:20px;background:url(../img/icon-check.png)}.product-gallery .product-image .icon-cross{display:none;width:20px;height:20px;background:url(../img/icon-cross.png);right:0;cursor:pointer}.product-gallery .upload-image-container .upload-image{float:left;cursor:pointer;width:116px;height:83px;background:url(../img/icon-upload.png);background-position:0 -15px;margin:5px 0 0 -5px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-gallery .upload-image-container .upload-image:hover{background:url(../img/icon-upload-hover.png);background-position:0 -15px}input.product-picture,input.title-picture,input.gallery-picture{opacity:0;margin-bottom:0;height:0;width:0;position:absolute}#product-picture-container,#title-picture-container{max-width:110px;max-height:110px;overflow:hidden}img#product-picture-preview,img#title-picture-preview{display:none;margin-top:20px}#embed-code{margin-top:20px}.add-page-preview{background:rgba(46,49,51,0.8);color:white;position:fixed;margin-top:0;width:100%;z-index:1}.add-page-preview>.container{padding-bottom:20px}.add-page-preview .add-product-mid>.left{width:100%}.preview-container>.row-fluid{margin-top:220px}.preview-title{font-size:18px;margin:0 60px 0 15px;padding-top:15px}.preview-explanation{padding-top:18px}.add-page-preview .add-product-top{border-bottom:1px solid #393d3f;margin-bottom:10px}.add-page-preview ul.steps{margin-bottom:0}.paypal-label{font-size:17px;margin:15px 60px 0 30px}.icon-paypal{width:40px;height:40px;background:url(../img/icon-paypal.png);margin:-10px 30px 0 0}.preview-inputs{padding:10px 0;border-bottom:1px solid #393d3f}.preview-buttons{padding:20px 0 0 0}.preview-buttons .btn.right{margin-left:10px}input.preview-input{margin-left:20px;width:250px;height:35px}.settings-page>.about-me{float:left;width:100%;margin-bottom:40px}.settings-page .settings-options{padding:0}.settings-main{padding-right:0;margin-bottom:40px}.settings-main .panel .panel-heading{position:relative}.settings-main .panel .panel-heading h4 a{font-size:1.2em;padding:.5em .5em}.settings-main .panel .panel-heading h4 a:hover{text-decoration:none;color:#2673B0}.settings-main .panel .panel-heading span.glyphicon-chevron-down{position:absolute;top:50%;margin-top:-0.5em;right:.5em;transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.settings-main .panel .panel-heading.active span.glyphicon-chevron-down{transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg)}.settings-main .panel .panel-body{padding:.5em}.settings-main .panel .panel-body>form{padding:.5em;margin-bottom:0}.settings-main .panel .panel-body>form>.row>div input[type="text"],.settings-main .panel .panel-body>form>.row>div input[type="password"],.settings-main .panel .panel-body>form>.row>div textarea{width:100%;padding:0 5px}.settings-main .panel .panel-body>form>.row>div textarea.about{padding:.5em 1em .5em .5em}.settings-main .panel .panel-body>form>.row .btn.pull-right{margin-right:15px}.settings-main .panel .panel-body>form>hr{margin-top:1em;margin-bottom:1em;border:0;border-top:1px solid #eee;border-bottom:1px solid white}.settings-main ul.errors,.settings-main ul li.text-error{color:#b94a48;list-style-type:none;font-size:.8em;padding:0;display:inline-block}.settings-main input.input-error,.settings-main textarea.input-error{border:1px solid #b94a48}.settings-main .form-success{color:#48B96C}.settings-main .section-body{padding:15px 15px 0 15px;display:none;border-bottom:1px solid #bdc3c7}.settings-main .section-body .row:last-of-type{margin:0 0 15px 0}.settings-main .section-body hr{display:block;height:0;border-top:1px solid #bdc3c7;padding:0 1em;width:100%;margin:10px 0 20px -15px}.settings-main .section-body .row input[type="text"],.settings-main .section-body .field input[type="text"],.settings-main .section-body .row input[type="password"],.settings-main .section-body .field input[type="password"],.settings-main .section-body .row textarea,.settings-main .section-body .field textarea{width:100%}.settings-main #form-profile textarea.about{height:228px}.settings-main #form-picture .image-preview,.settings-main #form-picture-background .image-preview{display:block;padding:0px;margin:10px auto;width:100%;max-width:200px;height:auto}.settings-main #form-picture .image-preview>img,.settings-main #form-picture-background .image-preview>img{width:100%;height:auto}.settings-main #form-picture .image-info,.settings-main #form-picture-background .image-info{margin:22px 0 0 -20px;padding:0px 0 0 35px;border-left:1px solid #bdc3c7;height:200px}.settings-main #form-picture .image-info p,.settings-main #form-picture-background .image-info p{margin-bottom:30px}.settings-main #form-website .clipboard-copy{background:rgba(8,165,193,0.49);padding:7px;position:relative;padding-right:230px;margin-bottom:20px;border-radius:7px}.settings-main #form-website .clipboard-copy .btn-purple{position:absolute;top:0px;right:0px;padding:7px 35px}.settings-main #form-website .clipboard-copy .clipboard-code{margin:0;width:100%;color:white;background:0;padding:0;box-shadow:none;font-size:16px}.settings-main #form-newsletter .newsletter-label{margin:5px 10px 0 0}.settings-main #form-newsletter #newsletter{height:14px;float:left;width:auto;margin:7px 0 0 0;cursor:pointer}.settings-main #add-profile-picture{width:100%;max-width:200px}.profile-summary{padding:15px;background:#FDFDFD}.profile-summary .profile-image-container{width:123px;height:123px;margin:auto;border:1px solid #ccc;padding:.25em;background:white;-webkit-border-radius:123px;-moz-border-radius:123px;border-radius:123px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.profile-summary .profile-image-container .profile-image img{width:100%;height:100%;border:1px solid #ccc;-webkit-border-radius:123px;-moz-border-radius:123px;border-radius:123px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.profile-summary .profile-name{font-size:20px;margin-bottom:45px}.profile-summary .last-active{font-size:12px;margin-top:5px}#overlays .clipboard-copy{background:#ebf5fb;padding-left:10px;margin-bottom:20px}#overlays .clipboard-copy .clipboard-code{margin:10px 0}div.image{display:inline-block;margin-left:5px;width:17px;height:17px}div.image.checked{background:url(/theme/flatui/img/icon-check-round-green.png) no-repeat}div.image.unchecked{background:url(/theme/flatui/img/icon-question-round.png) no-repeat}input.product-picture,input.title-picture,input.gallery-picture{opacity:0;margin-bottom:0;height:0;width:0;position:absolute}@media (max-width:767px){.settings-main{padding-left:0}}.static-container{margin-top:0px;margin-bottom:0px;max-width:970px}.static-container hr:first-of-type{height:0px;border-bottom:1px solid #ecf0f1;margin:40px auto}.static-container .static-heading h1.page-title{color:#34495e;font-weight:bold;font-size:32px}.static-container .static-content{margin-bottom:50px}.static-container .static-content h3{color:#2673B0;font-size:1.5em;margin:10px 0;font-weight:normal}#top-content{position:relative}#top-content>.left{padding-left:0;padding-right:15px;width:50%}#top-content>.right{padding-right:0;padding-left:15px;width:50%}#top-content h4{line-height:1.4em;font-size:1.3em;text-align:justify;margin-top:0}#top-content h3{position:absolute;bottom:1em;left:0;width:50%;text-align:center;font-size:2em}.panel-group h3{margin-bottom:10px;font-weight:normal}.panel-group .panel .panel-heading{padding:0}.panel-group .panel .panel-heading a{padding:10px 15px;width:100%;display:block}section{float:left;width:100%}section.top{border-bottom:1px solid #eeeeee;margin-bottom:40px}section.top h1.page-title{font-size:45px;height:45px;line-height:45px;margin-bottom:40px}section.top p{font-weight:bold}section.team-members{text-align:center;margin-bottom:40px}section.team-members .row{width:100%;float:right}section.team-members .row .team-member{float:left;width:104px}section.team-members .row .team-member figure{margin:0 0 10px 0;width:104px;height:104px}section.team-members .row .team-member figure img{width:104px;height:104px}section.team-members .row .team-member .info{width:150%;margin-left:-25%}section.team-members .row .team-member .info h3{font-size:14px;height:15px;line-height:15px;margin:3px 0px;font-weight:bold;color:#34495e}section.team-members .row .team-member+.team-member{margin-left:208px}section.team-members .row+.row{margin-top:30px}.term .term-description{margin:0}.term .term-description ol li+li{margin-top:5px}.content-modal .modal-header h3{text-align:center;color:#2673b0}.clipboard-copy .clipboard-code{margin-bottom:10px;float:left;background:#2673b0;color:white;padding:10px 5px;border-radius:5px;box-shadow:inset 1px 1px 1px rgba(0,0,0,0.15);font-size:13px;width:100%}.code-embed-modal .content-modal .modal-body textarea{width:100%;border-width:1px;height:100px}#files-panel{font-size:10pt}#comments-frame>h3{margin:45px 0 30px 0}#comments-frame .comment-row{width:100%;float:left;padding-bottom:15px}#comments-frame .comment-row+.comment-row{padding-top:15px}#comments-frame .comment{width:100%;padding-left:55px;float:left;position:relative;font-size:12px}#comments-frame .comment .supporter-thumbnail{width:50px;height:50px;padding:0;margin:0;position:absolute;top:0px;left:0px}#comments-frame .comment .supporter-thumbnail img{width:100%;height:100%}#comments-frame .comment .comment-content{width:100%;padding-right:0;padding-left:0}#comments-frame .comment .comment-content .popover-title{padding:0;margin-bottom:5px;font-weight:bold;background:white;border-bottom:0;font-weight:normal}#comments-frame .comment .comment-content .popover-title span{font-size:11px}#comments-frame .comment .comment-content .popover-title span.name{font-weight:bold;font-size:13px}#comments-frame .comment .comment-content .popover-title span.amount{font-size:12px}#comments-frame .comment .comment-content .popover-title span.lightgrey{margin-left:15px}#comments-frame .comment .comment-content .popover-content{overflow:hidden;padding:0;min-height:28px}#comments-frame .comment .comment-content .popover-content p{margin-bottom:0}#comments-frame .comment .comment-content .maker-comment-container{padding:0;margin-top:15px}#comments-frame .comment .comment-content .maker-comment-container.maker-form{display:none;position:relative;padding-left:8%}#comments-frame .comment .comment-content .maker-comment-container.maker-form .glyphicon{position:absolute;top:4px;left:7%;cursor:pointer;z-index:100}#comments-frame .comment .comment-content .maker-comment-container.maker-form .maker-comment{margin-top:5px;background:#f7f7f7}#comments-frame .comment .comment-content .maker-comment-container.maker-form .popover-content{height:auto;overflow:hidden;background:#f7f7f7;border-radius:4px;border:0;padding-top:4px;padding-right:4px;padding-bottom:4px;padding-left:12%}#comments-frame .comment .comment-content .maker-comment-container.maker-form textarea{border-width:1px;margin-bottom:5px}#comments-frame .comment .comment-content .maker-comment{width:100%;float:none;padding:0;position:relative;border:0}#comments-frame .comment .comment-content .maker-comment .supporter-thumbnail{width:38px}#comments-frame .comment .comment-content .maker-comment .supporter-thumbnail a{width:38px;height:38px}#comments-frame .comment .comment-content .maker-comment .content{padding-left:43px}#comments-frame .comment .comment-content .maker-comment .content .popover-content{margin-bottom:0}#comments-frame .comment a.show-maker-reply{position:absolute;bottom:1px;right:0px;display:block;cursor:pointer;color:white;font-size:.8em;padding:.2em .4em;-webkit-border-radius:4px 0 4px 0;-moz-border-radius:4px 0 4px 0;border-radius:4px 0 4px 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.modal.report-product .modal-dialog .modal-content{padding:10px 10px 0 10px}.modal.report-product .modal-dialog .modal-content #product-report button.small{border:none;background:transparent;color:#2673b0}#modal-widget .content-modal{width:770px}#modal-widget .content-modal .modal-body{overflow:hidden;height:auto}#modal-widget .content-modal .modal-body hr{float:left;width:100%}#modal-widget .content-modal #configuration-options{width:50%;float:left;padding-right:10px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane{padding:10px 0}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field{font-size:12px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field label{width:35%;float:left;height:25px;line-height:25px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="text"]{float:right;width:65%;border-width:1px;height:25px;line-height:25px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="radio"]{width:auto;float:left;margin:7px 3px 5px 0}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field span{float:left;height:25px;line-height:25px;display:inline-block}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field span+input[type="radio"]{margin-left:15px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="checkbox"]{float:left;margin:7px 0;width:auto}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field textarea{width:65%;border-width:1px;border-radius:3px;padding:2px 10px;height:100px;margin-bottom:5px}#modal-widget .content-modal #widget-preview{width:50%;padding-left:10px;float:left}#modal-widget .content-modal #widget-preview #pling-widget{width:100%;padding:8px;font-size:12px;background-color:#2673B0;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#modal-widget .content-modal #widget-preview #pling-widget .widget-header{width:100%;margin-bottom:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-header h3{margin:0;font-size:18px;margin-bottom:0 !important}#modal-widget .content-modal #widget-preview #pling-widget .widget-body{background-color:white;padding:5px;margin-bottom:5px;border:1px solid rgba(68,68,68,0.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);box-shadow:inset 0 1px 4px rgba(0,0,0,0.15)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info{width:100%;position:relative}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number{width:100%;height:20px;line-height:20px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span{display:block;float:left}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span+span{float:right}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span+span.unlimited{font-size:27px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount{width:100%;height:20px;padding:3px;background:rgba(204,204,204,0.19);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount .bar{width:4px;max-width:100%;height:14px;background-color:#2673B0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount .bar.no-goal{width:50%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .money-raised{width:100%;height:20px;line-height:20px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info.with-goal{padding-right:25%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info.with-goal .percentage{position:absolute;top:0;right:0;width:25%;height:60px;line-height:60px;text-align:center;font-size:22px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .widget-text{margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters{width:100%;height:auto;overflow:hidden;margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter{width:12.5%;height:auto;float:left;padding:2px;clear:none;border-bottom:0}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter figure{width:100%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter figure img{width:100%;height:auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments{height:auto;overflow:hidden;width:100%;margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment{position:relative;width:100%;min-height:42px;padding-left:15%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment figure{position:absolute;top:0;left:0;width:15%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment figure img{width:100%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content{width:100%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content .info{width:100%;height:12px;line-height:12px;margin-bottom:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content .text{width:100%;font-size:11px;line-height:11px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment+.comment{margin-top:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer{width:100%;height:auto;overflow:hidden}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .button{float:left}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .pay-secure{float:left;padding-left:10px;color:white;width:100px}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by{float:right}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo{display:block;background-image:url('../img/new/pling-logo-large.png');height:34px;width:63px;background-size:contain}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo.grey{background-image:url('../img/new/logo.png')}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo.icon{width:34px;background-image:url('../img/new/box-logo.png')}.code-embed-modal .content-modal{width:400px}.code-embed-modal .content-modal .modal-body textarea{width:100%;border-width:1px;height:100px}body.body-external{margin:0;padding-top:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.supporter-box-container{width:100%;height:auto;float:left;border:1px solid #999999;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container figure{float:left;margin:0;padding:0}.supporter-box-container div{float:left}.supporter-box-container>div{width:100%;height:auto;padding:7px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container .supporter-box-top{background-color:#e5e5e5;position:relative}.supporter-box-container .supporter-box-top .title{float:left;width:50%}.supporter-box-container .supporter-box-top .title>a{font-size:16px;color:#39568c;text-decoration:none;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.supporter-box-container .supporter-box-top .title>a:hover{text-decoration:underline;color:#428bca}.supporter-box-container .supporter-box-top figure{position:absolute;top:7px;right:7px;width:102px;height:68px;border:inset 1px #999999}.supporter-box-container .supporter-box-top figure a{width:100%;height:100%;display:block;overflow:hidden}.supporter-box-container .supporter-box-top figure a img{width:100%}.supporter-box-container .supporter-box-body>div{width:100%;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container .supporter-box-body .info{height:30px;padding-left:35px;position:relative;margin-bottom:10px}.supporter-box-container .supporter-box-body .info>em{position:absolute;left:0;top:0}.supporter-box-container .supporter-box-body .info>span{display:block;width:100%;height:15px;line-height:15px;font-size:13px;float:left;color:black}.supporter-box-container .supporter-box-body .info span+span{color:#1e4483}.supporter-box-container .supporter-box-body .supporters{width:102%}.supporter-box-container .supporter-box-body .supporters figure{width:30px;height:30px;margin:0 3.5px 3.5px 0}.supporter-box-container .supporter-box-body .supporters figure a{display:block;width:100%;height:100%;overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.supporter-box-container .supporter-box-body .supporters figure a img{width:100%}#configuration-options{width:60%;float:left;padding-right:10px}#configuration-options ul.nav-tabs{padding:0;background-color:white}#configuration-options ul.nav-tabs li a{padding:5px}#configuration-options .tab-content .tab-pane{padding:10px 0}#configuration-options .tab-content .tab-pane textarea{width:65%;border-width:1px;border-radius:3px;padding:0 5px;height:100px;margin-bottom:5px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#configuration-options .tab-content .tab-pane .field{font-size:12px}#configuration-options .tab-content .tab-pane .field label{width:35%;float:left;height:25px;line-height:25px}#configuration-options .tab-content .tab-pane .field input[type="text"],#configuration-options .tab-content .tab-pane .field input.color-input{padding:0 5px;float:right;width:65%;border-width:1px;height:25px;line-height:25px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#configuration-options .tab-content .tab-pane .field input[type="radio"]{width:auto;float:left;margin:7px 3px 5px 0}#configuration-options .tab-content .tab-pane .field span{float:left;height:25px;line-height:25px;display:inline-block}#configuration-options .tab-content .tab-pane .field span+input[type="radio"]{margin-left:15px}#configuration-options .tab-content .tab-pane .field input[type="checkbox"]{float:left;margin:7px 0;width:auto}#pling-widget{width:100%;max-width:400px;padding:8px;font-size:12px;background-color:#2673B0;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#pling-widget .widget-header{width:100%;margin-bottom:5px}#pling-widget .widget-header h3{margin:0;font-size:18px}#pling-widget .widget-body{background-color:white;padding:5px;margin-bottom:5px;border:1px solid rgba(68,68,68,0.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);box-shadow:inset 0 1px 4px rgba(0,0,0,0.15)}#pling-widget .widget-body .donation-amount{line-height:34px;margin:0 0 5px 0;overflow:hidden}#pling-widget .widget-body .donation-amount .support-with{width:25%;height:34px;float:left}#pling-widget .widget-body .donation-amount .donation-amount-number{width:50%;float:left;position:relative}#pling-widget .widget-body .donation-amount .donation-amount-number span.glyphicon{position:absolute;top:11px;left:0}#pling-widget .widget-body .donation-amount .donation-amount-number input[type="text"]{padding:0 10px;float:right;width:100%;border-width:1px;height:24px;line-height:24px;border-radius:3px;margin:5px 0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#pling-widget .widget-body .donation-amount .button{width:25%;float:right}#pling-widget .widget-body .donation-amount .button button{float:left;margin-top:5px;padding:0;width:100%;text-align:center;height:24px}#pling-widget .widget-body .donation-amount .payment-providers{width:100%;float:left;margin:5px 0}#pling-widget .widget-body .donation-amount .payment-providers .pay-with{width:25%;height:34px;float:left}#pling-widget .widget-body .donation-amount .payment-providers .input-group{width:37%;float:left;display:block}#pling-widget .widget-body .donation-amount .payment-providers .input-group .input-group-addon{width:20%;float:left;padding:8px 16px 4px 0;border:0;background:transparent;margin-top:3px}#pling-widget .widget-body .donation-amount .payment-providers .input-group .input-group-addon input[type="radio"]{width:auto}#pling-widget .widget-body .donation-amount .payment-providers .input-group .payment-icon{width:70%;float:left;height:34px;display:block}#pling-widget .widget-body .donation-amount .payment-providers .input-group .payment-icon img{max-width:100%;height:20px;width:auto;margin-top:7px}#pling-widget .widget-body .product-funding-info{width:100%;position:relative}#pling-widget .widget-body .product-funding-info .goal-range-number{width:100%;height:20px;line-height:20px;display:none}#pling-widget .widget-body .product-funding-info .goal-range-number span{display:block;float:left}#pling-widget .widget-body .product-funding-info .goal-range-number span+span{float:right}#pling-widget .widget-body .product-funding-info .goal-range-number span+span.unlimited{font-size:27px}#pling-widget .widget-body .product-funding-info .achieved-amount{width:100%;height:20px;padding:3px;background:rgba(204,204,204,0.19);display:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#pling-widget .widget-body .product-funding-info .achieved-amount .bar{width:4px;max-width:100%;height:14px;background-color:#2673B0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}#pling-widget .widget-body .product-funding-info .achieved-amount .bar.no-goal{width:50%}#pling-widget .widget-body .product-funding-info .money-raised{width:100%;height:20px;line-height:20px}#pling-widget .widget-body .product-funding-info.with-goal .percentage{position:absolute;top:0;right:0;width:25%;height:60px;line-height:60px;text-align:center;font-size:22px}#pling-widget .widget-body .product-funding-info.with-goal .goal-range-number{padding-right:25%;display:block}#pling-widget .widget-body .product-funding-info.with-goal .achieved-amount{width:75%;display:block}#pling-widget .widget-body .widget-text{margin-top:10px}#pling-widget .widget-body .supporters{width:100%;height:auto;overflow:hidden;margin-top:5px;padding-top:5px;border-top:1px solid #ddd}#pling-widget .widget-body .supporters .supporter{width:12.5%;height:auto;float:left;padding:2px;clear:none;border-bottom:0}#pling-widget .widget-body .supporters .supporter figure{width:100%;height:auto}#pling-widget .widget-body .supporters .supporter figure img{width:100%;height:auto}#pling-widget .widget-body .comments{height:auto;overflow:hidden;width:100%;margin-top:5px;padding-top:5px;border-top:1px solid #ddd}#pling-widget .widget-body .comments .comment{position:relative;width:100%;min-height:42px;padding-left:15%}#pling-widget .widget-body .comments .comment figure{position:absolute;top:0;left:0;width:15%;height:100%;text-align:center}#pling-widget .widget-body .comments .comment figure img{width:auto;height:100%;float:left}#pling-widget .widget-body .comments .comment .content{width:100%;padding-left:5%}#pling-widget .widget-body .comments .comment .content .info{width:100%;height:12px;line-height:12px;margin-bottom:5px}#pling-widget .widget-body .comments .comment .content .text{width:100%;font-size:11px;line-height:11px}#pling-widget .widget-body .comments .comment+.comment{margin-top:5px}#pling-widget .widget-footer{width:100%;height:auto;overflow:hidden}#pling-widget .widget-footer .donation-amount{padding-bottom:10px;color:white;font-size:14px}#pling-widget .widget-footer .button{float:left}#pling-widget .widget-footer .pay-secure{float:left;color:white;width:100px}#pling-widget .widget-footer .pay-secure a{color:white}#pling-widget .widget-footer .powered-by{float:right}#pling-widget .widget-footer .powered-by a.opendesktop-logo{display:block;background-image:url('/images/system/storeLogo.png');height:34px;width:63px;background-size:contain;background-repeat:no-repeat}#pling-widget .widget-footer .powered-by a.pling-logo{display:block;background-image:url('../img/new/pling-logo-large.png');height:34px;width:63px;background-size:contain}#pling-widget .widget-footer .powered-by a.pling-logo.grey{background-image:url('../img/new/logo.png')}#pling-widget .widget-footer .powered-by a.pling-logo.icon{width:34px;background-image:url('../img/new/box-logo.png')}#widget-preview{width:40%;padding-left:10px;float:left}#widget-code-modal{width:800px;height:auto;overflow:hidden}#widget-code-modal .modal-body{height:auto;overflow:hidden}#widget-code-modal .modal-body article{width:100%;float:left}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs{float:left;width:100%;background-color:#F3F3F3;border-bottom:1px solid #e5e5e5;position:relative;top:0}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li{border-bottom:1px solid #e5e5e5;-webkit-transition:all 0 ease-out;-moz-transition:all 0 ease-out;-ms-transition:all 0 ease-out;-o-transition:all 0 ease-out}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li a{margin:0;background-color:transparent;border:0;color:#2673B0;border-bottom:3px solid #f3f3f3;-webkit-transition:all 0 ease-out;-moz-transition:all 0 ease-out;-ms-transition:all 0 ease-out;-o-transition:all 0 ease-out}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li.active{border-color:#2673B0}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li.active a{border-color:#2673B0}.body-external .supporter-box-container{border:0;text-align:center}.body-external .supporter-box-container #pling-widget{text-align:left;float:none;height:auto;overflow:hidden}#mainpage{background-image:url(/images/system/1-opendesktop-bg.png);background-repeat:no-repeat;background-attachment:fixed;background-position:0px 0px;background-size:100% 100%;width:100% !important;margin-top:15px}#mainpage .wrapper{padding-top:100px}#mainpage .card-wrapper{border-radius:10px;padding:5px}#mainpage .card-wrapper a.title{display:block}#mainpage .card-wrapper img.logo{height:45px;margin-right:10px;margin-bottom:5px}#mainpage .card-wrapper .domainobj{margin:15px;border-bottom:1px solid #ccc}#indeximages{height:400px;width:100%;overflow:hidden}#indeximages a{cursor:default}.commentstore{border-bottom:1px solid #ccd4d8;padding-top:5px;padding-bottom:5px;overflow:hidden}.commentstore p{margin:0}.commentstore .userinfo img{border-radius:50%;width:42px;height:42px;float:right}.commentstore .userinfo{float:right}.commentstore .info{display:block}.commentstore:last-child{border-bottom:none}div.profile-img-product{width:200px;height:160px}img.imgpopover{max-width:200px;max-height:160px;display:block;margin:auto}#my-comments-tabs-content{font-size:11pt;width:100%}#my-comments-tabs-content .rownomargin{margin:0}#my-comments-tabs-content .rownopadding{padding:0}#my-comments-tabs-content .category{display:block;font-size:smaller}#my-comments-tabs-content .createat{font-size:smaller;color:#888}#my-comments-tabs-content .productrow{padding-bottom:5px;padding-top:5px;border-bottom:1px solid #ccd4d8;font-size:small}#my-comments-tabs-content .productrow .project-image{width:50px;height:50px;float:left;margin-right:15px}#my-comments-tabs-content .productrow:last-child{border-bottom:none}#my-comments-tabs-content .row{margin-top:10px}#my-comments-tabs-content .rating{width:80px}#my-comments-tabs-content .time{font-size:smaller}#my-comments-tabs-content .cntComments{font-size:smaller;display:block;padding-top:5px}#my-comments-tabs-content .productimg{width:50px;height:50px}#my-comments-tabs-content .commenttext{padding-left:20px}.user-admin-page .commentText{font-size:smaller}.user-admin-page .commentTime{font-size:smaller;padding-left:20px}.user-admin-page .title{font-weight:bold;color:#37628D;padding-top:10px;padding-bottom:10px}.user-admin-page .topics{padding-right:20px}.user-admin-page .topics .topic-tag{display:inline-block;padding:.3em .9em;margin:0 .5em .5em 0;white-space:nowrap;background-color:#f1f8ff;border-radius:3px}.user-admin-page .topics .usertagslabelcat{background-color:#f1f1f1}.user-admin-page .topics .topic-tag-link:hover{text-decoration:none;background-color:#def}.user-admin-page .topics .btn-link{display:inline-block;padding:0;font-size:inherit;color:#0366d6;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-bottom:10px}.user-admin-page .my-downloadshistory-list{width:1100px}.user-admin-page .my-downloadshistory-list .totaldownloads{margin:0;padding:20px;text-align:right}.user-admin-page .my-downloadshistory-list .smaller{font-size:smaller}.user-admin-page .my-downloadshistory-list .header{border-top:1px solid #ccc;padding-top:15px;padding-bottom:15px}.user-admin-page .my-downloadshistory-list .subheader{background-color:#ddd}.user-admin-page .my-downloadshistory-list .paddingLeft80{padding-left:80px}.user-admin-page .my-downloadshistory-list .marginLeft80{margin-left:80px}.user-admin-page .my-downloadshistory-list button.voting{line-height:10px}.user-admin-page .my-downloadshistory-list button.voting span{font-size:10px}.user-admin-page .my-downloadshistory-list .rating{width:80px !important;font-size:10pt}.user-admin-page .my-downloadshistory-list .downloadhistory-image{width:50px;height:50px;float:left;margin-right:15px}.user-admin-page .my-downloadshistory-list .nowrap{white-space:nowrap}.col-container span.cnt{padding-right:5px;display:inline-block;font-weight:bold}.col-container .stat{padding-top:15px;padding-left:15px;font-size:12px}.col-container .info{padding-left:15px}.col-container .statContent{padding-top:15px;padding-left:15px;font-size:12px}main#plings-page .wrapper{width:700px;padding:20px}main#plings-page .wrapper .title{background-color:#ccc;height:30px}main#plings-page .wrapper .label{padding-top:10px;padding-left:0px}main#plings-page .wrapper .row:not(:first-child):hover{background-color:#eef}main#plings-page .wrapper .depth0{padding-left:0px}main#plings-page .wrapper .depth1{padding-left:20px}main#plings-page .wrapper .depth2{padding-left:40px}main#plings-page .wrapper .depth3{padding-left:60px}main#plings-page .wrapper .depth4{padding-left:80px}main#plings-page .wrapper .depth5{padding-left:100px}main#plings-page .wrapper .factor{padding-right:10px}#product-page-content .sidebar-left{padding-right:15px;padding-left:15px;min-width:200px;padding-top:20px}#product-page-content .tag-element{background-clip:padding-box;background-color:#eeeeee;background-image:linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);background-repeat:repeat-x;background-size:100% 19px;border:1px solid #aaa;border-radius:3px;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05);color:#333;line-height:25px !important;margin:3px 3px 3px 0;max-width:100%;padding:0 10px;position:relative;display:inline-block}#carouselContainer .carousel-indicators{z-index:31;background-color:transparent;height:20px;bottom:-30px}#carouselContainer .carousel-indicators .active{background-color:#E2E2E2}#carouselContainer .carousel-indicators li{border:1px solid #C4D7EF}#carouselContainer iframe{border:0px}#email-collapse .group-list{list-style:outside none none}#email-collapse .group-list>li:first-child{border-top:0 none;border-top:1px solid #ddd}#email-collapse .group-list>li{border-bottom:1px solid #e5e5e5;display:block;line-height:30px;margin-left:-10px;padding:5px 10px}#email-collapse .css-truncate-target{max-width:300px;display:inline-block;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}#email-collapse .email-actions{float:right}#email-collapse .email-actions form{display:inline}#email-collapse span.label.default{background-color:#6cc644;border-radius:3px;color:#fff;margin-left:4px;padding:4px 6px}#email-collapse span.label.attention{background-color:#c64f0d;border-radius:3px;color:#fff;margin-left:4px;padding:4px 6px}#email-collapse .btn{line-height:20px;padding:4px 12px}.user-admin-page .body-wrap .well{min-height:20px;padding:20px;margin-bottom:20px;background-color:transparent;border:0px;border-radius:0px;-webkit-box-shadow:inset 0 0 0 rgba(0,0,0,0.05);box-shadow:inset 0 0 0 rgba(0,0,0,0.05)}.profile-menu li a{width:100%}.grid-container{padding-top:10px}.grid-container .flex-container{font-size:10pt !important}.grid-container .flex-container .explore-product-grid{width:200px;padding:0px;margin:20px;border:1px solid #dedede;border-radius:2px;margin:10px 10px 10px 10px;position:relative}.grid-container .flex-container .explore-product-grid figure{opacity:1;display:block;transition:.5s ease;backface-visibility:hidden}.grid-container .flex-container .explore-product-grid .explore-product-image{width:170px;height:120px}.grid-container .flex-container .explore-product-grid .explore-product-desc{background:linear-gradient(#fff, #EDEDED);padding:0px 10px 5px 10px;border-bottom-left-radius:2px;border-bottom-right-radius:2px}.grid-container .flex-container .explore-product-grid .explore-product-plings{padding:0;padding-top:5px;width:100px;margin:0 auto;font-size:10px}.grid-container .flex-container .explore-product-grid .explore-product-plings .rating{width:100%}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress{margin-bottom:10px;padding:3px;opacity:0;margin-bottom:0;height:12px;opacity:1;background-color:transparent;box-shadow:none;padding:2px}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress .bar{width:4px;max-width:100%;height:14px;background-color:#2673b0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress .bar.no-goal{width:50%;opacity:0}.grid-container .flex-container .explore-product-grid .explore-product-plings .collected span{display:block;width:100%;float:left;font-size:12px}.grid-container .flex-container .explore-product-grid .explore-product-details span.version{font-size:smaller;padding-left:20px}.grid-container .flex-container .explore-product-grid .explore-product-details span.title{display:block;font-size:smaller;line-height:1.5}@media (max-width:400px){#explore-content .GridFlex .sidebar-left{flex:0 0 100%}.metamenu{height:100%}.metamenu .sitelogo{display:block;width:100%;height:30px;font-size:20px}.metamenu .sitelogo img.logo{width:30px;height:30px}}#ratings-panel .bbtn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid #adadad;border-radius:4px;margin-right:10px}#ratings-panel .activeRating{border:2px solid #2673B0}#ratings-panel .bbtn:focus{color:#333;background-color:transparent;border-color:#2673B0}#plings-panel .u-wrap,#likes-panel .u-wrap{float:left;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative;text-align:center;font-size:small}#plings-panel .u-wrap img,#likes-panel .u-wrap img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#plings-panel .u-wrap div.username,#likes-panel .u-wrap div.username{max-width:100px;overflow:hidden;padding:5px}#plings-panel .u-wrap div.bottom-title,#likes-panel .u-wrap div.bottom-title{position:absolute;right:2px;bottom:0}.tooltipuserplingscontainer .user{display:block;float:left;text-align:center;width:60px;overflow:hidden}.tooltipuserplingscontainer .user img{width:40px;height:40px;border:1px solid #ccc;border-radius:999px}.tooltipuserplingscontainer .user .caption{display:block}#affiliates-panel .u-wrap{float:left;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:#fff;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative}#affiliates-panel .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#affiliates-panel .u-wrap h3{font-size:13px;font-weight:700;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}#affiliates-panel .u-wrap span.small{position:absolute;bottom:5px;left:5px}.containerduplicates{background-color:#fff;min-height:300px;min-width:1000px;max-height:500px;overflow:auto}.containerduplicates .row{border-bottom:1px solid #ddd}.rating-label{padding:0 1em 0;color:#fff;border-radius:.25em;font-weight:700;font-size:90%;cursor:pointer}.rating-label-highlight{border:1px solid #2185D0}#productRelationshipPanel .react-autosuggest__inputContainer{padding-bottom:10px}#productRelationshipPanel .react-autosuggest__suggestions-container--open{width:200px}#productRelationshipPanel .react-autosuggest__input{width:200px;padding-left:20px}#productRelationshipPanel .suggestionsContainer{display:flex;padding:3px 5px}#productRelationshipPanel .suggestionsContainer .description{display:flex;margin-left:10px;text-align:left;flex-flow:column}#productRelationshipPanel .suggestionsContainer .description span{line-height:20px}#productRelationshipPanel .suggestionsContainer .description span.small{font-size:small}
\ No newline at end of file
+.bg_sheet{background-image:url(../img/bg_sheet.png)}.bg_sheet_statistics{background-image:url(../img/statistics_sheet.png)}.unstyled_list{list-style-type:none;padding:0px;margin:0px}.hand-with-coin{display:inline-block;background-image:url('../img/new/button/hand-w-coin.png');height:61px;width:61px}.hand-with-coin.v-2{background-image:url('../img/new/button/hand-w-coin-2.png')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local('Open Sans Light'),local('OpenSans-Light'),url('../css/fonts/open-sans-v15-latin-300.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-300.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local('Open Sans Regular'),local('OpenSans-Regular'),url('../css/fonts/open-sans-v15-latin-regular.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-regular.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local('Open Sans SemiBold'),local('OpenSans-SemiBold'),url('../css/fonts/open-sans-v15-latin-600.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-600.woff') format('woff')}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local('Open Sans Bold'),local('OpenSans-Bold'),url('../css/fonts/open-sans-v15-latin-700.woff2') format('woff2'),url('../css/fonts/open-sans-v15-latin-700.woff') format('woff')}body{color:#32353d;overflow-y:scroll;font-size:1.5em;line-height:1.231;color:#4e4e4e;font-family:'Open Sans',sans-serif;font-size:medium}header,footer,main,section{width:100%;float:left}header section.wrapper,footer section.wrapper,main section.wrapper,section section.wrapper{margin-left:auto;margin-right:auto;width:95%;float:none;height:auto}a{text-decoration:none;color:#2673b0;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}a:hover{text-decoration:none}a:focus{outline:none}button::-moz-focus-inner{border:0}input,button,select,textarea{font-family:"Lato",sans-serif;font-size:14px}h1{font-size:32px;font-weight:900}h3{font-size:24px;font-weight:700;margin-bottom:4px;margin-top:2px}h5{font-size:16px;font-weight:500;text-transform:uppercase}@media (max-width:1200px) and (min-width:992px){header section.wrapper,footer section.wrapper,main section.wrapper{width:95%;margin-left:2.5%;margin-right:2.5%}}body{padding-top:34px}body .navbar-gitlab{top:34px}body#git-body #metaheader{position:fixed !important}body#git-body .nav-sidebar{top:88px}body.navigation-topics #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body.category-themes-and-apps #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body.category-general #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon,body[class*='category-'] #metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon{margin-top:-5px}body.docked .d-header{top:34px}body.docked #metaheader{position:fixed}body.drawer-open{height:100%;overflow:hidden}.btn{background:#bdc3c7 none repeat scroll 0 0;border:medium none;border-radius:6px;box-shadow:none;color:#fff;line-height:22px;padding:9px 12px 10px;text-decoration:none;text-shadow:none;-webkit-transition:all .2 ease-out;-moz-transition:all .2 ease-out;-ms-transition:all .2 ease-out;-o-transition:all .2 ease-out}.btn.btn-large{font-size:16.996px;line-height:20px;padding:12px 18px 13px}.btn.btn-native{background-color:#2673b0;color:white}.btn.btn-pling-red{background-color:#e84310}.btn.btn-pling-green{background-color:green}.btn.btn-purple{background:#9b59b6;padding:10px 35px}.btn.btn-file-dropzone{font-size:10px;padding:8px 10px 10px;line-height:10px}.btn.btn-file-action{font-size:12px;padding:8px 10px 10px;line-height:16px;margin-left:5px}.pling-danger{background:#C9302C none repeat scroll 0 0}.standard-form input{height:41px}.standard-form input,.standard-form textarea,.standard-form select{border:1px solid #bdc3c7;padding:0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.standard-form .field{margin-bottom:15px}.icon-facebook,.icon-twitter,.icon-google{width:40px;height:40px;cursor:pointer;display:inline-block;background-image:url(../img/bg_sheet.png)}.icon-facebook{background-position:0 -105px}.icon-twitter{background-position:-40px -105px}.lightblue{color:#2673b0}.small{font-size:12px}.large{font-size:18px}.relative{position:relative}.absolute{position:absolute}.light{font-weight:300}.lightgrey{color:#95a5a6}.center{text-align:center}i.myfav{color:#8e44ad}h1.page-title{color:#34495e;font-weight:bold;font-size:32px}.modal{overflow-y:hidden}.right{float:right}.left{float:left}em.icon{display:inline-block;background-image:url(../img/bg_sheet.png)}em.icon.info-icon{width:31px;height:30px;background-position:-289px -64px}.margin-bottom-10{margin-bottom:10px}.margin-top-15{margin-top:15px}.full-width{width:100% !important}.progress{height:8px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;margin-bottom:0}.opendesktopwidgetpager{display:flex;justify-content:right;align-items:center;justify-content:flex-end}.opendesktopwidgetpager ul.opendesktopwidgetpager{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.opendesktopwidgetpager ul.opendesktopwidgetpager>li{display:inline}.opendesktopwidgetpager ul.opendesktopwidgetpager>li>span{cursor:pointer;position:relative;float:left;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd;padding:5px 10px;font-size:12px}.opendesktopwidgetpager ul.opendesktopwidgetpager>.active>span{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.disply-flex{display:flex;flex-wrap:wrap}.disply-flex>[class*='col-']{display:flex;flex-direction:column}.metamenu{width:100%;background-color:#fff;height:15px}.metamenu a#toggleStoreBtn{float:left;margin-left:20px;text-decoration:none}.metamenu a.home-link{float:left}.metamenu a.home-link img.logo{width:16px;height:16px}.meta-nav-top>li>a{padding:0px 5px ;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.meta-nav-top>li>a#ocs-stores img{width:16px;height:16px}ul.meta-nav-top{list-style:none}ul.meta-nav-top li{float:left}ul.meta-nav-top-right{margin:0px;margin-right:30px;float:right}ul.meta-nav-top-right li{padding:0 10px}ul.meta-nav-top-left{float:left}#toggleStoreContainer{z-index:1000;display:none;width:60%;height:200px;top:12px;left:190px}#toggleStoreContainer a{display:block;font-size:16px}#toggleStoreContainer a:hover{color:#6a7686}#toggleStoreContainer b{text-decoration:underline;text-align:center;padding-left:20px;font-size:18px;cursor:default}#toggleStoreContainer ul{list-style:none;padding:0;padding-top:10px;padding-left:30px}#toggleStoreContainer ul li{font-size:14px}#toggleStoreContainer ul li:hover{background-color:transparent}header nav{border-bottom:transparent}header#page_header{color:#6a7686;height:auto;font-size:10pt;font-weight:400;width:100%;font-family:Arial,sans-serif}header#page_header nav#nav-top{margin-left:130px;width:84%}header .dropdown-header{width:175px;height:12px;background-image:url(../img/bg_sheet.png);background-position:-385px 0}header a{color:#ffffff}header .pull-left,header .pull-right{padding:0}header ul{margin-bottom:0}header ul.menu-icon{float:right;display:none}header ul li{list-style:none;display:inline-block;margin:0;cursor:pointer;position:relative;height:40px;line-height:40px;float:left}header ul li a{float:left;display:block;height:inherit;line-height:inherit;padding:0 20px}header ul li.profile-menu-container{padding-top:0;padding-left:40px}header ul li.profile-menu-container .header-profile-image{top:50%;left:10px;height:30px;width:30px;margin-top:-15px}header ul li.profile-menu-container .header-profile-image .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:12px;border-radius:999px;padding:5px 5px}header ul li.profile-menu-container .header-profile-image .supporter-badge.inactive{background:#ccc}header ul li.profile-menu-container .header-profile-image img{height:30px;width:30px;float:left;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li.profile-menu-container>a{display:block}header ul li ul{width:165px;margin-left:0;position:absolute;left:-9999px;top:45px;border:none;font-size:14px;color:#7f8c8d;font-weight:normal;padding:0;z-index:10001;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul.active{left:0;top:40px}header ul li ul li{text-align:left;display:block;width:100%;background:#ecf0f1;margin:0;padding:0;height:40px;border-bottom:1px solid #d6d7d9}header ul li ul li.first,header ul li ul li:first-of-type{-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul li:last-of-type{-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}header ul li ul li a{color:#6a7686;text-align:left;height:40px;line-height:40px}header .container{margin-left:auto;margin-right:auto;float:none;height:auto;width:100%;background-color:#e2e2e2}header .container.header{margin-left:auto;margin-right:auto;float:none;width:100%}header .container.header section.container{background-color:transparent}header .container.header section.container.backLink{background-color:#729ECD !important;height:30px}header .container.header section.container.backLink h4 a:hover{color:#1d1d1d}header .container.header section.container section.wrapper{height:40px;padding-left:80px;position:relative}header .container.header section.container+section.container{background-color:transparent;padding-left:0}header .container.header section.container+section.container>section.wrapper{padding-left:242px;height:50px}header .container.header nav{border-bottom:transparent}header .container.header nav #search{height:25px;padding:0;margin:6.5px 15px;line-height:25px;position:relative}header .container.header nav #search input.content-search{width:16em;height:25px;padding:0;border:1px solid white;margin-bottom:-1px;padding-right:30px;text-indent:5px;color:#6a7686;float:left;border-radius:6px;box-shadow:none}header .container.header nav #search div.icon-search-input{top:2px;right:0;width:25px;height:25px;background-image:url(/theme/flatui/img/icon-search-input-2.png);background-position:center center;position:absolute;cursor:pointer}header .container.header ul.menu-nav-tabs{bottom:0;display:inline-table;list-style-type:none;margin:0;padding:0;position:absolute;z-index:999}.pling-nav-tabs-a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li{background-color:transparent;margin-bottom:0px }.pling-nav-tabs ul.nav-tabs>li>a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li>a:hover{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0}.pling-nav-tabs ul.nav-tabs>li>a:hover svg{fill:#2673b0}.pling-nav-tabs ul.nav-tabs>li>a:focus{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer}.pling-nav-tabs ul.nav-tabs>li svg{fill:#777}.pling-nav-tabs ul.nav-tabs>li.active>a{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active>a:hover{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active>a:focus{border:0 ;position:relative;color:#777;font-size:13px;transition:color 0s;bottom:-1px;border-bottom-width:2px;border-bottom-style:solid;border-bottom-color:transparent;background-color:transparent;cursor:pointer;color:#2673b0;border-bottom-color:#2673b0;font-weight:bold}.pling-nav-tabs ul.nav-tabs>li.active svg{fill:#2673b0}footer{width:100%;float:left;padding:12px 0;border-bottom:5px solid #2673b0;border-top:1px solid darkgray;background-color:gainsboro;font-size:9pt}footer h3{font-weight:normal}footer h3#footer-heading{font-size:1.3em;margin:0}footer nav#footer-nav ul{margin-top:1em;list-style:none;padding:0;margin-right:1em;float:left;width:auto;margin-bottom:.2em}footer nav#footer-nav ul li{display:inline-block;margin-right:0;font-size:1em}footer nav#footer-nav ul li a{color:#666;font-weight:400}footer nav#footer-nav ul li+li{margin-left:10px}footer h3#footer-social-heading{color:#666;font-size:1em;margin:0 0 .4em 0}footer #footer-social{float:right}footer #footer-social a{width:30px;display:block;float:left}footer #footer-social a+a{margin-left:2px}footer section.wrapper .pull-left{padding:0}footer section.wrapper .pull-right{padding:0}body.home-page main section.wrapper .container{padding:150px 0;height:auto;float:none;max-width:95%;width:95%}body.home-page main section.wrapper#intro .container{padding-bottom:50px}body.home-page main section.wrapper#intro .container article{text-align:center;width:100%}body.home-page main section.wrapper#intro .container article>*{margin-bottom:40px}body.home-page main section.wrapper#intro .container article h2{font-size:40px;font-weight:700;margin-bottom:20px}body.home-page main section.wrapper#intro .container article h3{font-size:30px;font-weight:700;margin-top:2px}body.home-page main section.wrapper#intro .container article p{margin-bottom:0;text-align:center}body.home-page main section#cat-list{border-top:1px solid #cdd7dd}body.home-page main .card-wrapper{position:relative;max-width:960px;margin:auto;margin-bottom:2rem;background:white}body.home-page main .card-wrapper .card-item{position:absolute;padding:1rem;width:31.4%;border:1px solid gray;border-radius:7px}body.home-page main .card-wrapper .card-item .category a.title{font-size:14pt;font-weight:600;min-height:30px;line-height:30px;padding-right:30px}body.home-page main .card-wrapper .card-item .category a.title span.label{padding:2px 3px}body.home-page main .card-wrapper .card-item div a.title{font-size:11pt;min-height:20px;line-height:20px;padding-right:5px}body.home-page main .card-wrapper .card-item div a.title span.label{font-size:7pt;font-weight:300;vertical-align:top;margin-left:5px;padding:1px 3px}.card-item{border:1px solid gray}.card-item .category>a.title{color:#444444}.card-item div>a.title{color:#6a6a6a}#indeximages{line-height:0;-webkit-column-count:20;-webkit-column-gap:0px;-moz-column-count:20;-moz-column-gap:0px;column-count:20;column-gap:0px}#indeximages img{width:100% !important;height:auto !important;opacity:1}@media (max-width:1920px){#indeximages{-moz-column-count:20;-webkit-column-count:20;column-count:20}}@media (max-width:1200px){#indeximages{-moz-column-count:15;-webkit-column-count:4;column-count:4}}@media (max-width:1000px){#indeximages{-moz-column-count:12;-webkit-column-count:3;column-count:3}}@media (max-width:800px){#indeximages{-moz-column-count:9;-webkit-column-count:2;column-count:2}}@media (max-width:400px){#indeximages{-moz-column-count:7;-webkit-column-count:1;column-count:1}}#products-wrapper{padding-top:20px}.explore-products{padding-left:30px;padding-right:30px;margin-top:-10px}.explore-products .product-list{width:100%;float:left;padding:0 10px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.explore-products .product-list .explore-product{padding:10px 0;font-size:12px;border-top:1px solid #ccc}.explore-products .product-list .explore-product .rownum{font-size:12px;float:left}.explore-products .product-list .explore-product .explore-product-imgcolumn{padding-left:5px;padding-right:5px}.explore-products .product-list .explore-product .imageContainer{height:167px;display:flex;justify-content:center;align-items:center}.explore-products .product-list .explore-product .explore-product-image{max-width:95%;max-height:167px}.explore-products .product-list .explore-product .contentLeft{float:left;padding-right:0px;width:270px}.explore-products .product-list .explore-product .contentLeft img{max-width:167px;max-height:167px}.explore-products .product-list .explore-product .contentLeft div.productimg{width:167px;height:167px}.explore-products .product-list .explore-product .explore-product-details{padding-left:20px}.explore-products .product-list .explore-product .explore-product-details h3{font-size:24px;font-weight:bold;color:#2673b0}.explore-products .product-list .explore-product .explore-product-details h3 span.version{font-size:smaller;padding-left:20px}.explore-products .product-list .explore-product .explore-product-details .title{display:block;margin-bottom:8px}.explore-products .product-list .explore-product .explore-product-details .title .username{padding-left:20px}.explore-products .product-list .explore-product .explore-product-details .description{display:block;margin-bottom:8px}.explore-products .product-list .explore-product .explore-product-details .packagetypes{display:block;float:left}.explore-products .product-list .explore-product .explore-product-details .packagetypes .packagetypeos{width:100px;float:left}.explore-products .product-list .explore-product .explore-product-details .productInfo{clear:left;padding-top:5px}.explore-products .product-list .explore-product .explore-product-details .productInfo span.cntSupporters{padding-right:20px}.explore-products .product-list .explore-product .explore-product-plings{padding:0}.explore-products .product-list .explore-product .explore-product-plings .plinged{width:50%;text-align:center}.explore-products .product-list .explore-product .explore-product-plings .rating{width:50%}.explore-products .product-list .explore-product .explore-product-plings .progress{margin-bottom:10px;padding:3px;opacity:0;margin-bottom:0;height:12px;opacity:1;background-color:transparent;box-shadow:none;padding:2px}.explore-products .product-list .explore-product .explore-product-plings .progress .bar{width:4px;max-width:100%;height:14px;background-color:#2673b0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}.explore-products .product-list .explore-product .explore-product-plings .progress .bar.no-goal{width:50%;opacity:0}.explore-products .product-list .explore-product .explore-product-plings .collected span{display:block;width:100%;float:left}.explore-products .product-list .explore-product:first-of-type{border-top:0}.explore-products .explore-footer{width:100%;text-align:center}.explore-products .explore-footer .projectPaginationControl{width:auto;display:table;margin:0 auto}.explore-products .explore-footer .projectPaginationControl ul#pagination-digg{padding:0;list-style-type:none;margin:20px 0;height:auto;overflow:hidden}.explore-products .explore-footer .projectPaginationControl ul#pagination-digg li{float:left;font-size:16px;font-weight:normal;margin:0 4px}aside#explore-sidebar{padding-left:0;margin-bottom:20px}main#community-page .head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative}main#community-page .head-wrap .wrapper{width:95%}main#community-page .head-wrap .page-title{height:3em;position:relative;margin-bottom:2em}main#community-page .head-wrap .page-title .center{position:absolute;top:0;left:0;width:100%;height:3em;text-align:center}main#community-page .head-wrap .page-title .center>div{background:rgba(246,246,246,0.86);width:auto;display:table;float:none;margin:0 auto}main#community-page .head-wrap .page-title .center>div>h1{margin:0 .5em}main#community-page .head-wrap .page-title hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee;border-bottom:1px solid white;float:left;width:100%}main#community-page .banner{margin:0 auto;float:none;background:white;border:1px solid #e4e4e4;padding:0;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;text-align:center}main#community-page .banner .top{padding:1em;font-size:1em}main#community-page .banner .top .large{font-size:2em}main#community-page .banner .bottom{padding:1em;background:rgba(231,231,231,0.4);border-top:1px solid #e4e4e4;-webkit-border-radius:0 0 9px 9px;-moz-border-radius:0 0 9px 9px;border-radius:0 0 9px 9px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .banner .bottom a{margin-right:5px}main#community-page .body-wrap{background:white;position:relative}main#community-page .body-wrap .wrapper{width:70%}main#community-page .body-wrap #user-lists{padding-top:1em}main#community-page .body-wrap #user-lists #community-tabs{margin-bottom:20px;text-align:center}main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-tabs{text-align:center}main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-tabs>li,main#community-page .body-wrap #user-lists #community-tabs .pling-nav-tabs .nav-pills>li{float:none;display:inline-block}main#community-page .body-wrap #user-lists #communityPanels .toplistmemberx .explore-product:first-child{border-top:1px solid #ccc}main#community-page .body-wrap #user-lists #communityPanels .paging{display:block;float:right}main#community-page .body-wrap #user-lists #communityPanels .btnshowmore{display:none}main#community-page .body-wrap #user-lists #communityPanels .explore-products{width:800px}main#community-page .body-wrap #user-lists #communityPanels .rowproduct{align-items:center;justify-content:center}main#community-page .body-wrap #user-lists #communityPanels .rank{font-size:33px;line-height:33px;letter-spacing:normal;text-align:center;font-weight:700;letter-spacing:-1px}main#community-page .body-wrap #user-lists #communityPanels .product-list{background-color:#F5F5F5;border:1px solid #e4e4e4;border-radius:10px}main#community-page .body-wrap #user-lists #communityPanels figure.mostplingedcreators img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list{display:block;margin:auto;padding-right:15px;padding-left:15px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center}main#community-page .body-wrap #user-lists .list .u-wrap{float:left;width:100%;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative;text-align:center}main#community-page .body-wrap #user-lists .list .u-wrap figure{float:left;padding:.25em;border:1px solid #dbdbdb;background:#f6f6f6;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}main#community-page .body-wrap #user-lists .list .u-wrap h3{font-size:13px;font-weight:bold;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}main#community-page .body-wrap #user-lists .list .u-wrap span.small{font-size:13px;color:#444;position:absolute;bottom:5px;right:5px}main#community-page .body-wrap #user-lists .list .u-wrap div.projecttitle{font-size:11px}main#community-page .body-wrap #user-lists .list .u-wrap span.rank{font-size:14px;position:absolute;bottom:5px;left:5px;color:#444;font-weight:bold}#product-page-content{padding:0}#product-page-content #product-main-img #product-title-div{padding-left:30px;min-height:105px;padding-top:20px;display:flex}#product-page-content #product-main-img #product-title-div .product-title{flex:0 0 80%;font-size:25px;color:#2673b0;font-weight:bold;padding-bottom:15px}#product-page-content #product-main-img #product-title-div .product-title-right{flex:1}#product-page-content #product-main-img #product-title-div img.logo{max-height:85px;max-width:85px;float:left;padding-right:15px;border-radius:0px}#product-page-content #product-main-img #product-title-div .product-logo-container{float:left;width:95px}#product-page-content #product-main-img #product-title-div .product_category{font-size:small;display:block;font-weight:normal}#product-page-content #product-main-img #product-title-div .topics{padding-right:20px;float:right}#product-page-content #product-main-img #product-title-div .topics .topic-tag{display:inline-block;padding:.3em .9em;margin:0 .5em .5em 0;white-space:nowrap;background-color:#f1f8ff;border-radius:3px}#product-page-content #product-main-img #product-title-div .topics .usertagslabelcat{background-color:#f1f1f1}#product-page-content #product-main-img #product-title-div .topics .topic-tag-link:hover{text-decoration:none;background-color:#def}#product-page-content #product-main-img #product-title-div .topics .btn-link{display:inline-block;padding:0;font-size:inherit;color:#0366d6;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;float:right;padding-top:5px;padding-left:10px}#product-page-content #product-main-img #product-title-div .topics .topic-tags-saved{display:none;color:#0366d6;float:left;padding-top:5px;padding-left:10px}#product-page-content #product-main-img #product-title-div .topics .topic-tags-saved .fa-check{color:green}#product-page-content #product-main-img #product-title-div span.source{color:#4e4e4e}#product-page-content #product-main-img #product-title-div div.projectdetailRating{float:right;width:140px;z-index:100}#product-page-content #product-main-img #product-title-div div.projectdtailHeart{float:right;margin-right:5px;width:80px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling{position:relative;width:80px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonfollowproject{text-align:center;width:80px;height:30px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonplingproject{text-align:center}#product-page-content #product-main-img #product-title-div div.projectdtailHeart{float:right;z-index:100;margin-right:5px;width:50px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling{position:relative;width:50px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonfollowproject{text-align:center;width:45px;height:45px}#product-page-content #product-main-img #product-title-div div.projectdtailHeart .container-pling .partialbuttonplingproject{text-align:center}#product-page-content #product-main-img #product-title-div .heartproject{position:relative;color:#8e44ad;font-size:45px;display:block}#product-page-content #product-main-img #product-title-div div.heartnumber{z-index:3;position:relative;top:-32px;display:block;margin:auto;color:#fff}#product-page-content #product-main-img #product-title-div .heartgrey{position:relative;color:#C8C8C8;font-size:45px;display:block}#product-page-content #product-main-img #product-title-div span.plingcircle{width:30px;height:30px;background-color:#fff;border:3px solid #C8C8C8;border-radius:50%;display:inline-block;font-size:17px;text-align:center;color:#C8C8C8;font-weight:bold;transform:rotate(345deg)}#product-page-content #product-main-img #product-title-div span.active{border:3px solid #EE6E09;color:#EE6E09}#product-page-content #product-main-img #product-title-div div.heartnumberpurple{color:#8e44ad}#product-page-content #product-tabs-container{padding-top:30px}#product-page-content #product-tabs-container #product-actions{margin-top:25px;margin-right:10px}#product-page-content #product-tabs{font-size:10pt;padding-left:25px}#product-page-content #product-panels{background:none repeat scroll 0 0 #fff;height:auto;overflow:hidden;border-radius:0px;padding:15px;float:left;width:100%;margin:0}#product-page-content #product-panels .tab-pane{width:100%;float:left;background-color:white;padding:4px}#product-page-content #product-panels .tab-pane h3{color:#2673b0;margin-bottom:20px;margin-top:0}#product-page-content #product-panels .tab-pane .panel-grey-part{padding:15px;background-color:#f3f3f3;color:#2673b0;border-left:1px solid #e5e5e5}#product-page-content #product-panels .tab-pane#about-panel #product-about{padding:20px 10px 10px 10px}#product-page-content #product-panels .tab-pane#about-panel #product-about .gitlab-readme img{max-width:100%}#product-page-content #product-panels .tab-pane#about-panel #product-about article{padding-top:15px}#product-page-content #product-panels .tab-pane#about-panel #product-about article.lastchangelog{padding-top:50px}#product-page-content #product-panels .tab-pane#donations-panel #comments{width:100%;float:left;padding:15px}#product-page-content #product-panels .tab-pane#donations-panel .list#supporters{padding:15px}#product-page-content #product-panels .tab-pane#ratings-panel2 .userimg{border-radius:50%;border:1px solid #ccc;width:40px;height:40px}#product-page-content #product-panels .tab-pane#ratings-panel .productRating-rows-inactive{color:#ddd;display:none}#product-page-content #product-panels .tab-pane#ratings-panel .userimg{border-radius:50%;border:1px solid #ccc;width:40px;height:40px}#product-page-content #product-panels .tab-pane#ratings-panel span.o-thumbs-up{color:green;padding-left:10px;padding-top:10px}#product-page-content #product-panels .tab-pane#ratings-panel span.o-thumbs-down{color:red;padding-left:10px;padding-top:10px}#product-page-content #product-panels #files-panel{padding-top:30px}#product-page-content #product-panels #files-panel table.table-ocs-file td{padding:3px;vertical-align:middle;padding-left:8px}#product-page-content #product-panels #files-panel table.table-ocs-file th{padding-right:3px}#product-page-content #product-panels #files-panel .btn{padding:3px 5px}#product-page-content #product-panels #updates-panel span.product-update-date{padding-left:10px}#product-page-content #product-panels #gitlabissues-panel span.date{font-size:10pt}#product-page-content #product-panels #gitlabissues-panel span.title{font:12pt Trebuchet MS,sans-serif;display:block;padding-bottom:10px}#product-page-content #product-panels #gitlabissues-panel span.showmore{font-size:10pt}span.page-views{float:left;font-size:12px;padding:5px 15px 5px 0px;color:#2673b0}#product-maker{background-color:#f1f1f1}#product-maker .project-share-new{padding-bottom:10px;padding-top:10px}#product-maker .project-share-new>.row{padding-left:30px}#product-maker .project-share-new .prod-user{margin-top:10px}#product-maker .project-share-new .prod-user .product-maker-thumbnail{float:right}#product-maker .project-share-new .prod-user .product-maker-thumbnail .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:10px;border-radius:999px;padding:2px 2px}#product-maker .project-share-new .prod-user .product-maker-thumbnail .supporter-badge.inactive{background:#ccc}#product-maker .project-share-new .prod-user .product-maker-summary{float:right;padding-right:20px}#product-maker .project-share-new .prod-info{font-size:12px;padding-bottom:10px}#product-maker .project-share-new .prod-info>span{width:100%;float:left;padding-left:15px}#product-maker .project-share-new .prod-download>a{position:relative;display:block;float:left;color:#2673b0;background-image:-moz-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#E8E8E8), to(#D6D6D6));background-image:-webkit-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:-o-linear-gradient(top, #E8E8E8, #D6D6D6);background-image:linear-gradient(to bottom, #E8E8E8, #D6D6D6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0);-webkit-box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);-moz-box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);box-shadow:inset 0 0 0 1px rgba(154,154,154,0.45);padding:10px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;height:50px;font-size:16px;line-height:30px;padding-left:15px;margin-right:5px;margin-bottom:10px}#product-maker .project-share-new .prod-download>a .glyphicon{font-size:30px;margin:0;position:absolute;height:30px;width:30px;display:block;top:10px;left:10px}#product-maker .project-share-new .prod-download>a .txt{float:left;width:100%;height:30px}#product-maker .project-share-new .prod-download>a .txt>span{text-transform:capitalize}#product-maker .project-share-new #donation-box{margin:0 -10px}.prod-widget-box{border:1px solid #ccd4d8 !important;font-size:10pt;padding:5px;margin-bottom:10px !important;width:95% !important}.prod-widget-box .product-row .product-thumbnail{width:75px;height:77px;margin:7px;padding:10px;position:relative}.prod-widget-box .product-row .product-thumbnail img{border-radius:5px;border:1px solid #b2b2b2;height:75px;width:75px}.prod-widget-box #pling-box .donation-box{padding-top:10px;padding-bottom:15px;width:100%;height:auto}.prod-widget-box #pling-box .donation-box>div{height:auto}.prod-widget-box #comments figure{width:40px;height:auto;text-align:center;border-top:1px solid #f5f5f5;padding:0 0 15px 0;float:left}.prod-widget-box #comments figure img{margin:0 auto;width:70%}.prod-widget-box.details span{line-height:1.65em;font-size:8.25pt}.prod-widget-box.details span.title{font:12pt Trebuchet MS,sans-serif;display:block;padding-bottom:10px}.prod-widget-box.details span.value{font-size:9pt}#product-donate{display:none;width:550px;height:300px;font-size:13px}main#reg-page{width:100%;height:100%}main#reg-page .form-control-feedback{line-height:40px}main#reg-page section#register-wrap{position:absolute;top:150px;left:50%;margin-left:-290px;width:580px}main#reg-page section#register-wrap input[type="text"],main#reg-page section#register-wrap input[type="password"]{border-width:1px;height:41px;margin:4px 0;width:100%;float:none;padding:0 5px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}main#reg-page section#register-wrap input[type="checkbox"]{height:20px;width:auto}main#reg-page section#register-wrap label{font-size:12px}main#reg-page section#register-wrap button#login{margin-top:8px;width:120px}main#reg-page section#register-wrap #register{width:100%;margin:auto;background:#f5f5f5;padding:10px;border-radius:5px}main#reg-page section#register-wrap #register h3{text-align:center;font-weight:400;position:relative;margin:10px 0 13px 0}main#reg-page section#register-wrap #register #register-box{padding-left:0;padding-right:0;min-height:373px}main#reg-page section#register-wrap #register #register-box #register-form-box{background-color:white;margin-bottom:0;width:373px}main#reg-page section#register-wrap #register #social-register{padding-top:20px;padding-right:15px;padding-left:30px;float:right}main#reg-page section#register-wrap #register #social-register #social-login-elements{margin-bottom:91px}main#reg-page section#register-wrap #register #social-register>div{float:left;width:100%}main#reg-page section#register-wrap #register #social-register form button{background-image:url(../img/bg_sheet.png);font-size:14px;display:block;font-weight:300;color:white;width:140px;height:41px;margin:0;border:none;text-align:left;text-indent:10px;padding-left:41px}main#reg-page section#register-wrap #register #social-register form button.facebook{background-position:0 -189px;margin-top:4px}main#reg-page section#register-wrap #register #social-register form button.twitter{background-position:0 -232px;margin-top:7px}main#reg-page section#register-wrap #register #social-register .bottom .small{margin-bottom:6px;text-align:center}main#reg-page section#register-wrap #register #social-register .bottom .login2 a{width:100%}main#reg-page section#register-wrap #login-form-box{background-color:white;margin-bottom:0;position:absolute;top:0;bottom:0}main#reg-page #thumbs{z-index:-1;width:100%;min-height:1000px;overflow:hidden;position:relative;background:#000}main#reg-page #thumbs div.thumb{width:5.5555%;max-height:100px;padding:0;float:left;background:rgba(0,0,0,0.8)}main#reg-page #thumbs div.thumb a{float:left;width:100%;height:auto;display:block;position:relative}main#reg-page #thumbs div.thumb a>span{width:100%;height:100%;display:block;position:absolute;top:0;left:0;background:rgba(0,0,0,0.8);-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}main#reg-page #thumbs div.thumb a img{width:100%;height:auto}.login-popup{position:relative;background:white;padding:0;width:420px;margin:0 auto}.login-popup .login-popup-form{background:#fff;border-radius:10px;padding:20px;float:left;margin:0;width:440px}.login-popup .login-popup-form .login-form-container{position:relative}.login-popup .login-popup-form .login-form-container form{margin:0}.login-popup .login-popup-form .login-form-container form input,.login-popup .login-popup-form .login-form-container form textarea,.login-popup .login-popup-form .login-form-container form select{border:1px solid #bdc3c7;padding:0;border-radius:5px}.login-popup .login-popup-form .login-form-container form .inputbox{border:1px solid #eaedf2;border-radius:3px;height:40px;padding:10px 0 10px 32px;width:100%;outline:none;margin-bottom:10px;font-family:inherit}.login-popup .login-popup-form .login-form-container form .email{background:#eaedf2 url(../img/email.png) 10px 15px no-repeat}.login-popup .login-popup-form .login-form-container form .password{background:#eaedf2 url(../img/password.png) 10px 10px no-repeat}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me{height:20px;clear:both;margin-bottom:10px}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me input{height:20px;margin:0 5px;float:left;width:auto}.login-popup .login-popup-form .login-form-container form .container-checkbox-remember-me label{display:inline-block;font-weight:bold;font-size:13px;float:left}.login-popup .login-popup-form .login-form-links{position:absolute;bottom:10px;right:20px;font-size:13px}.login-popup .login-popup-form .login-form-links a{font-size:13px}.login-popup p{font-size:15px;margin-bottom:0;text-align:left}.login-popup .social{margin:20px 0 15px}.login-popup .social a{color:#fff;text-decoration:none;font-weight:bold;border-radius:4px 4px 4px 4px;margin-right:10px;float:left;height:40px}.user-admin-page{position:relative}.user-admin-page .head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative;padding-bottom:1.9em}.user-admin-page .head-wrap .about-me-header figure{width:6.9em;height:6.9em;padding:.3em;border:1px solid #dbdbdb;background:white;position:absolute;z-index:10;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header figure img{width:100%;height:100%;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header .user-menu{position:relative;height:auto;background:white;float:left;margin-top:1.5em;padding:.5em 2em .5em 8em;-webkit-border-radius:50px 0 0 50px;-moz-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.user-admin-page .head-wrap .about-me-header .user-menu .intro{margin-top:0}.user-admin-page .body-wrap{background:white;position:relative}.user-admin-page .body-wrap .product-page{padding-top:1em}.user-admin-page .my-products-page,.user-admin-page .my-payments-page{padding-bottom:2em}.user-admin-page .my-products-page span.payouthistory-icon,.user-admin-page .my-payments-page span.payouthistory-icon{width:15px;height:15px;background-image:url(../img/line-chart.svg);background-size:13px;background-position:bottom left;cursor:pointer;background-repeat:no-repeat;float:left}.user-admin-page .my-products-page .my-products-heading,.user-admin-page .my-payments-page .my-products-heading{padding-bottom:20px;margin-bottom:20px;margin-top:20px;border-bottom:1px solid #c1c1c1;float:left;width:100%}.user-admin-page .my-products-page .my-products-heading .num-products,.user-admin-page .my-payments-page .my-products-heading .num-products{margin-top:35px}.user-admin-page .my-products-page .my-products-list,.user-admin-page .my-payments-page .my-products-list{float:left;width:100%}.user-admin-page .my-products-page .my-product-item,.user-admin-page .my-payments-page .my-product-item{margin-bottom:20px}.user-admin-page .my-products-page .my-product-item figure,.user-admin-page .my-payments-page .my-product-item figure{height:auto;padding:0}.user-admin-page .my-products-page .my-product-item figure img.explore-product-image,.user-admin-page .my-payments-page .my-product-item figure img.explore-product-image{width:101px;height:auto;padding-top:10px}.user-admin-page .my-products-page .my-product-item article>div,.user-admin-page .my-payments-page .my-product-item article>div{float:left;width:100%}.user-admin-page .my-products-page .my-product-item article .title,.user-admin-page .my-payments-page .my-product-item article .title{margin-bottom:10px}.user-admin-page .my-products-page .my-product-item article .title h3,.user-admin-page .my-payments-page .my-product-item article .title h3{margin:0;padding:0}.user-admin-page .my-products-page .my-product-item article .info ul,.user-admin-page .my-payments-page .my-product-item article .info ul{list-style-type:none;padding:0;margin:0}.user-admin-page .my-products-page .my-product-item article .info ul li,.user-admin-page .my-payments-page .my-product-item article .info ul li{float:left;width:auto;font-size:12px}.user-admin-page .my-products-page .my-product-item article .info ul li span+span,.user-admin-page .my-payments-page .my-product-item article .info ul li span+span{margin-left:5px;font-weight:bold}.user-admin-page .my-products-page .my-product-item article .info ul li+li,.user-admin-page .my-payments-page .my-product-item article .info ul li+li{margin-left:15px}.user-admin-page .my-products-page .my-product-item article .text,.user-admin-page .my-payments-page .my-product-item article .text{font-size:12px;margin:5px 0 10px 0}.user-admin-page .my-products-page .my-product-item article .text p,.user-admin-page .my-payments-page .my-product-item article .text p{margin:0}.user-admin-page .my-products-page .my-product-item article .buttons a.btn.btn-native,.user-admin-page .my-payments-page .my-product-item article .buttons a.btn.btn-native{color:white;font-size:12px;padding:3px 6px}.user-admin-page .my-products-page .my-product-item article .buttons a.btn.pling-danger,.user-admin-page .my-payments-page .my-product-item article .buttons a.btn.pling-danger{background-color:#C82333}.user-admin-page .my-products-page .my-product-divider,.user-admin-page .my-payments-page .my-product-divider{border-bottom:1px solid #c1c1c1;margin-bottom:20px;width:97%;margin-left:15px}.user-admin-page .my-products-page #my-earnings-list ul.nav-tabs,.user-admin-page .my-payments-page #my-earnings-list ul.nav-tabs{top:0;position:relative;margin:0;border-radius:5px 5px 0 0;padding:10px;padding-bottom:0}.user-admin-page .my-products-page #my-earnings-list ul.nav-tabs>li>a,.user-admin-page .my-payments-page #my-earnings-list ul.nav-tabs>li>a{padding:.7em 1em;font-size:.9em;height:2.95em;color:#2673b0}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs{padding:10px;border:1px solid #ddd;border-radius:0 0 5px 5px}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane{font-weight:bold}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane .row,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane .row{margin:0}.user-admin-page .my-products-page #my-earnings-list #my-earnings-tabs .tab-pane .row h3,.user-admin-page .my-payments-page #my-earnings-list #my-earnings-tabs .tab-pane .row h3{margin:5px 0}.modal-ppload .content-modal{width:950px}.about-me-page div.catgroupseperator{display:block;line-height:80px;font-size:20px;clear:both;color:#777}.about-me-page .my-fav-list{width:100%}.about-me-page .my-fav-list .totaldownloads{margin:0;padding:20px;text-align:right}.about-me-page .my-fav-list .smaller{font-size:smaller}.about-me-page .my-fav-list .row{border-bottom:1px solid #ccc;padding-top:15px;padding-bottom:15px}.about-me-page .my-fav-list .rating{width:80px !important;font-size:10pt}.about-me-page .my-fav-list .downloadhistory-image{width:50px;height:50px;float:left;margin-right:15px}.about-me-page .my-fav-list .nowrap{white-space:nowrap}.about-me-page .my-fav-list i.voteup{color:#409540;font-size:20px;padding-left:5px;padding-right:5px}.about-me-page .my-fav-list i.votedown{color:#C9302C;font-size:20px;padding-left:5px;padding-right:5px}.about-me-page .my-fav-list .newusers .u-wrap{float:left;width:100%;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative}.about-me-page .my-fav-list .newusers .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .my-fav-list .newusers .u-wrap h3{font-size:13px;font-weight:bold;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}.about-me-page .my-fav-list .newusers .u-wrap div.small{font-size:13px;color:#444;position:absolute;bottom:5px;right:5px}.about-me-page .my-fav-list .newusers .u-wrap div.small img.plingactivesmall{width:20px;height:20px}.about-me-page .my-fav-list .newusers .u-wrap div.small .cntplings{line-height:20px}.about-me-page>.head-wrap{padding-top:1em;height:auto;background-size:cover;position:relative;padding-bottom:1em}.about-me-page>.head-wrap .page-title{height:3em;position:relative;margin-bottom:2em;margin-top:2em}.about-me-page>.head-wrap .page-title .center{position:absolute;top:0;left:0;width:100%;height:3em;text-align:center}.about-me-page>.head-wrap .page-title .center>div{background:#f6f6f6;width:auto;display:table;float:none;margin:0 auto}.about-me-page>.head-wrap .page-title .center>div>h1{margin:0 .5em}.about-me-page>.head-wrap .page-title hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee;border-bottom:1px solid white;float:left;width:100%}.about-me-page .header{height:auto;position:relative;margin-bottom:3em}.about-me-page .header>div.col-lg-8{padding-right:5px;padding-left:0}.about-me-page .header>div.col-lg-4{padding-right:0;padding-left:5px}.about-me-page .header .about{display:none}.about-me-page .header .about .well{background-color:white;padding:1em;height:22.5em}.about-me-page .header .about .well h2{font-size:1.4em;margin:0;min-height:1.4em;line-height:1.2em;border-bottom:1px solid #dbdbdb;font-weight:normal}.about-me-page .header .about .well article{border-top:1px solid #f5f5f5;padding-top:.5em;width:100%;float:left;overflow:hidden;height:18.5em}.about-me-page .header .about .well article>.scroll-pane{height:18em}.about-me-page .header .summary{float:none;margin:0 auto}.about-me-page .header .summary article{padding:0;background-color:white;height:auto;float:left}.about-me-page .header .summary article .about-title{padding:1em;height:8.9em;padding-left:8.9em;background:rgba(246,246,246,0.45);border-bottom:1px solid #e1e1e1;float:left;width:100%;position:relative}.about-me-page .header .summary article .about-title figure{width:6.9em;height:6.9em;padding:.3em;border:1px solid #dbdbdb;background:white;position:absolute;top:1em;left:1em;display:inline-block;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .header .summary article .about-title figure img{width:100%;height:100%;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.about-me-page .header .summary article .about-title .btnSupportMe{position:absolute;right:0;top:0}.about-me-page .header .summary article .about-title .supporter-badge{position:absolute;left:0px;bottom:0px;background:#EE6E09;text-align:center;color:#fff;font-size:16px;border-radius:999px;padding:5px 5px}.about-me-page .header .summary article .about-title .supporter-badge.inactive{background:#ccc}.about-me-page .header .summary article .about-title .mod-badge{display:block;text-align:center;padding-top:3px;font-size:small}.about-me-page .header .summary article .about-title h1{margin:1.5em 0 0 0;font-size:1.5em;min-height:1.7em;line-height:1em}.about-me-page .header .summary article .about-content{padding:1em;float:left}.about-me-page .header .summary article .about-content>div{float:left;width:100%}.about-me-page .header .summary article .about-content>div span{float:left;display:block;line-height:1.25em}.about-me-page .header .summary article .about-content>div span.glyphicon{color:#939292;margin-right:.25em;font-size:1.25em}.about-me-page .header .summary article .about-content>div span+span{line-height:1.65em}.about-me-page .header .summary article .about-content>div.social-icons a{font-size:1.35em;height:1em;width:1em;display:block;float:left}.about-me-page .header .summary article .about-content>div.social-icons a img{width:100%;height:100%;vertical-align:top}.about-me-page .header .summary article .about-content>div.social-icons a+a{margin-left:.25em}.about-me-page .header .summary article .about-content div+div{margin-top:.25em}.about-me-page .header .summary article .about-footer{float:left;width:100%;padding:1em}.about-me-page .header .summary article .about-footer .info-div{width:100%;float:left}.about-me-page .header .summary article .about-footer .info-div+.info-div{margin-top:5px}.about-me-page .header .summary article .about-footer .social-share .social+.social{margin-left:.5em}.about-me-page .header .summary article .about-footer>.pull-right em.report-icon{height:1.5em;width:1.5em;margin-top:.5em;background-size:cover}.about-me-page .about-me-details{padding-left:0;padding-right:.5em}.about-me-page .about-me-details .tab-content{padding-top:20px}.about-me-page .about-me-details h3.about-me-heading{font-size:1.5em;margin:0;min-height:1.9em;line-height:1.9em;border-bottom:1px solid #dbdbdb;font-weight:normal}.about-me-page .about-me-details article{padding-top:.5em;padding-bottom:1.5em;width:100%;float:left}.about-me-page .about-me-details .my-products-list h3{width:100%;margin-bottom:20px}.about-me-page .about-me-details .my-products-list .cat-title{padding:0 5px;position:relative;height:2em;margin-bottom:1em;margin-top:1.1em}.about-me-page .about-me-details .my-products-list .cat-title>div{position:absolute;top:0;left:1em;background:white;height:2em;width:auto;padding:0 .5em}.about-me-page .about-me-details .my-products-list .cat-title>div>h2{margin:0}.about-me-page .about-me-details .my-products-list .cat-title hr{float:left;width:100%;margin-top:1em;margin-bottom:1em;border-bottom:1px solid #F9F9F9}.about-me-page .about-me-details .my-products-list .mini-card{width:14.28571%;margin-bottom:10px}.about-me-page .about-me-details .my-products-list .mini-card p img{vertical-align:baseline}.about-me-page aside .details{float:left;width:100%;height:auto;padding:.5em}.about-me-page aside .details h3{line-height:2em;font-size:1em;margin:0;color:#a3a2a2;border-bottom:1px solid #e1e1e1}.about-me-page aside .details .box-content{padding:.5em 0 0 0;border-top:1px solid #ededed}.about-me-page aside .details .box-content>div{width:100%;float:left;height:auto;margin-top:.5em}.about-me-page aside .details .box-content>div .label{float:left;padding:0;min-height:1.5em;line-height:1.3em}.about-me-page aside .details .box-content>div .label img.accounts_icon{padding-top:2px;width:20px}.about-me-page aside .details .box-content>div .label em,.about-me-page aside .details .box-content>div .label span{font-size:1.7em;float:left;display:inline-block;color:#AAA}.about-me-page aside .details .box-content>div .label em{display:block;width:1em;height:1em;background-size:cover}.about-me-page aside .details .box-content>div .label em.fb-link{background-image:url('../img/social_icons/fb.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.tw-link{background-image:url('../img/social_icons/tw.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.gp-link{background-image:url('../img/social_icons/g_plus.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.gt-link{background-image:url('../img/social_icons/github.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .label em.email-link{background-image:url('../img/email.png');background-size:100%;background-repeat:no-repeat;background-position:center}.about-me-page aside .details .box-content>div .text{width:90%;float:right;font-size:1em;min-height:1.5em;line-height:1.3em}.mini-card{padding:0 2px;width:14.28571%;margin-bottom:10px}.mini-card .u-wrap{float:left;width:100%;border:2px solid #DEE0E0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;height:15em;margin-bottom:4px;background:white;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.mini-card .u-wrap a{float:left;width:100%;height:100%;display:block;position:relative}.mini-card .u-wrap figure{width:100%;float:left;height:120px}.mini-card .u-wrap figure img{width:100%;height:120px;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.mini-card .u-wrap .rating{font-size:11px;position:absolute;right:10px;bottom:10px}.mini-card .u-wrap .u-content{width:100%;float:left;padding:3px;height:5.5em;position:relative;overflow:hidden}.mini-card .u-wrap .u-content .productCategory{color:#4e4e4e;display:block;font-size:11px}.mini-card .u-wrap .u-content>h3{font-size:12px;word-wrap:break-word;width:100%;margin:2px 0 4px 0}.mini-card .u-wrap .u-content>p{font-size:15px;position:absolute;bottom:0;right:3px;width:100%;margin:0;color:black;font-weight:bold;text-align:right;color:#444}.mini-card .u-wrap:hover{border-color:#DEE0E0;background:#f6f6f6}.mini-card .u-wrap:hover figure{background:white}@media (max-width:800px){.mini-card{width:16.6666667%}.mini-card .u-wrap{height:12em}}@media (max-width:550px){.mini-card{width:20%}.mini-card .u-wrap{height:14em}}@media (max-width:350px){.mini-card{width:33.333333%}.mini-card .u-wrap{height:16em}}.product-card{width:10%;padding:0 3px;margin-bottom:10px;height:auto}.product-card>a{display:block;float:left;width:100%;height:auto;position:relative}.product-card>a .card>.border{position:absolute;top:0;left:0;width:100%;background-color:#2673B0}.product-card>a .card>.p-wrap{width:100%;height:8.25em;border:2px solid #c5ced5;background-color:white;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-card>a .card>.p-wrap>figure{width:100%;height:3.5em;overflow:hidden;display:block;float:left;border-bottom:1px solid #c5ced5}.product-card>a .card>.p-wrap>figure>img{height:100%;width:100%}.product-card>a .card>.p-wrap>.content{width:100%;float:left;padding:.25em;font-size:1em;height:3.5em}.product-card>a .card>.p-wrap>.content>h3{font-size:.7em;margin:0;color:#34495e;display:block;width:100%;height:100%;overflow:hidden;word-break:break-word}.product-card>a .card>.p-wrap>.footer{float:left;width:100%;height:1em;line-height:1em;font-size:1em;text-align:right;padding:0 .1em;background-color:#f5f5f5;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-card>a .card>.p-wrap>.footer>p{font-weight:bold;font-size:.75em;color:#a7a7a7}.product-card>a>.empty-card{width:100%}@media (max-width:800px){.product-card{width:16.6666667%}}@media (max-width:550px){.product-card{width:20%}}@media (max-width:350px){.product-card{width:33.333333%}}.wizard>.content>.body{position:inherit}.wizard>.content>.body input.error,.wizard>.content>.body select.error,.wizard>.content>.body textarea.error{background:none repeat scroll 0 0 #fbe3e4;border:1px solid #fbc2c4;color:#8a1f11}.wizard>.steps li a{background:#eee none repeat scroll 0 0;color:#aaa;cursor:default}.wizard>.steps li a:hover{cursor:pointer}.wizard>.steps>ul>li{width:20%}.add-product-top{width:100%;margin:20px 0 100px 0;padding:0 15px}.add-product-top h1{margin-bottom:0;font-size:2em}.add-product-top ul.steps{width:auto;margin-bottom:0}.add-product-top ul.steps li{float:left;display:inline-block;list-style:none;margin:0;color:#bdc3c7;border-bottom:2px solid #bdc3c7;padding:1em 2.5em;font-size:1em;width:auto}.add-product-top ul.steps li.active{color:#2673B0;border-bottom:2px solid #2673B0}.add-product-container{padding-bottom:40px}.add-product-container>form{width:50%;margin:0 auto}.add-product-container>form .field label{width:100%}.add-product-container>form .field input,.add-product-container>form .field textarea{width:100%}.add-product-container>form .field select{height:35px;width:48%}.add-product-container>form .field select+select{float:right}.add-product-container>form button+button{margin-right:10px}.add-product-form{margin:auto}.mandatory{top:2px;left:-240px;width:220px;text-align:right}.bold-font{font-size:18px;font-weight:bold}.field-missing-container{top:26px;right:-240px;width:230px}.field-missing-left{margin-top:6px;float:left;width:8px;height:22px;background:url(../img/field-missing-left.png)}.field-missing{float:left;background:#fadbd8;border-radius:5px;color:#e74c3c;padding:12px;max-width:190px;word-break:normal;word-wrap:break-word}.add-more{right:10px}a.add-more:hover{text-decoration:underline}.icon-plus{margin-left:5px;width:15px;height:15px;background:url(../img/icon-plus.png)}.product-gallery{margin-bottom:30px}.product-gallery .product-image{float:left;margin:5px 5px 0 0}.product-gallery .product-image img{max-width:110px;max-height:110px;overflow:hidden;border-radius:5px;border:3px solid #2673B0}.product-gallery .product-image img:hover{border:3px solid #bdc3c7}.product-gallery .product-image .image{width:110px;height:77px;overflow:hidden;border-radius:5px;border:3px solid #2673B0;background-size:110px;background-position:center center}.product-gallery .product-image .image:hover{border:3px solid #bdc3c7}.product-gallery .product-image .icon-check{width:20px;height:20px;background:url(../img/icon-check.png)}.product-gallery .product-image .icon-cross{display:none;width:20px;height:20px;background:url(../img/icon-cross.png);right:0;cursor:pointer}.product-gallery .upload-image-container .upload-image{float:left;cursor:pointer;width:116px;height:83px;background:url(../img/icon-upload.png);background-position:0 -15px;margin:5px 0 0 -5px;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.product-gallery .upload-image-container .upload-image:hover{background:url(../img/icon-upload-hover.png);background-position:0 -15px}input.product-picture,input.title-picture,input.gallery-picture{opacity:0;margin-bottom:0;height:0;width:0;position:absolute}#product-picture-container,#title-picture-container{max-width:110px;max-height:110px;overflow:hidden}img#product-picture-preview,img#title-picture-preview{display:none;margin-top:20px}#embed-code{margin-top:20px}.add-page-preview{background:rgba(46,49,51,0.8);color:white;position:fixed;margin-top:0;width:100%;z-index:1}.add-page-preview>.container{padding-bottom:20px}.add-page-preview .add-product-mid>.left{width:100%}.preview-container>.row-fluid{margin-top:220px}.preview-title{font-size:18px;margin:0 60px 0 15px;padding-top:15px}.preview-explanation{padding-top:18px}.add-page-preview .add-product-top{border-bottom:1px solid #393d3f;margin-bottom:10px}.add-page-preview ul.steps{margin-bottom:0}.paypal-label{font-size:17px;margin:15px 60px 0 30px}.icon-paypal{width:40px;height:40px;background:url(../img/icon-paypal.png);margin:-10px 30px 0 0}.preview-inputs{padding:10px 0;border-bottom:1px solid #393d3f}.preview-buttons{padding:20px 0 0 0}.preview-buttons .btn.right{margin-left:10px}input.preview-input{margin-left:20px;width:250px;height:35px}.settings-page>.about-me{float:left;width:100%;margin-bottom:40px}.settings-page .settings-options{padding:0}.settings-main{padding-right:0;margin-bottom:40px}.settings-main .panel .panel-heading{position:relative}.settings-main .panel .panel-heading h4 a{font-size:1.2em;padding:.5em .5em}.settings-main .panel .panel-heading h4 a:hover{text-decoration:none;color:#2673B0}.settings-main .panel .panel-heading span.glyphicon-chevron-down{position:absolute;top:50%;margin-top:-0.5em;right:.5em;transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.settings-main .panel .panel-heading.active span.glyphicon-chevron-down{transform:rotate(180deg);-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg)}.settings-main .panel .panel-body{padding:.5em}.settings-main .panel .panel-body>form{padding:.5em;margin-bottom:0}.settings-main .panel .panel-body>form>.row>div input[type="text"],.settings-main .panel .panel-body>form>.row>div input[type="password"],.settings-main .panel .panel-body>form>.row>div textarea{width:100%;padding:0 5px}.settings-main .panel .panel-body>form>.row>div textarea.about{padding:.5em 1em .5em .5em}.settings-main .panel .panel-body>form>.row .btn.pull-right{margin-right:15px}.settings-main .panel .panel-body>form>hr{margin-top:1em;margin-bottom:1em;border:0;border-top:1px solid #eee;border-bottom:1px solid white}.settings-main ul.errors,.settings-main ul li.text-error{color:#b94a48;list-style-type:none;font-size:.8em;padding:0;display:inline-block}.settings-main input.input-error,.settings-main textarea.input-error{border:1px solid #b94a48}.settings-main .form-success{color:#48B96C}.settings-main .section-body{padding:15px 15px 0 15px;display:none;border-bottom:1px solid #bdc3c7}.settings-main .section-body .row:last-of-type{margin:0 0 15px 0}.settings-main .section-body hr{display:block;height:0;border-top:1px solid #bdc3c7;padding:0 1em;width:100%;margin:10px 0 20px -15px}.settings-main .section-body .row input[type="text"],.settings-main .section-body .field input[type="text"],.settings-main .section-body .row input[type="password"],.settings-main .section-body .field input[type="password"],.settings-main .section-body .row textarea,.settings-main .section-body .field textarea{width:100%}.settings-main #form-profile textarea.about{height:228px}.settings-main #form-picture .image-preview,.settings-main #form-picture-background .image-preview{display:block;padding:0px;margin:10px auto;width:100%;max-width:200px;height:auto}.settings-main #form-picture .image-preview>img,.settings-main #form-picture-background .image-preview>img{width:100%;height:auto}.settings-main #form-picture .image-info,.settings-main #form-picture-background .image-info{margin:22px 0 0 -20px;padding:0px 0 0 35px;border-left:1px solid #bdc3c7;height:200px}.settings-main #form-picture .image-info p,.settings-main #form-picture-background .image-info p{margin-bottom:30px}.settings-main #form-website .clipboard-copy{background:rgba(8,165,193,0.49);padding:7px;position:relative;padding-right:230px;margin-bottom:20px;border-radius:7px}.settings-main #form-website .clipboard-copy .btn-purple{position:absolute;top:0px;right:0px;padding:7px 35px}.settings-main #form-website .clipboard-copy .clipboard-code{margin:0;width:100%;color:white;background:0;padding:0;box-shadow:none;font-size:16px}.settings-main #form-newsletter .newsletter-label{margin:5px 10px 0 0}.settings-main #form-newsletter #newsletter{height:14px;float:left;width:auto;margin:7px 0 0 0;cursor:pointer}.settings-main #add-profile-picture{width:100%;max-width:200px}.profile-summary{padding:15px;background:#FDFDFD}.profile-summary .profile-image-container{width:123px;height:123px;margin:auto;border:1px solid #ccc;padding:.25em;background:white;-webkit-border-radius:123px;-moz-border-radius:123px;border-radius:123px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.profile-summary .profile-image-container .profile-image img{width:100%;height:100%;border:1px solid #ccc;-webkit-border-radius:123px;-moz-border-radius:123px;border-radius:123px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.profile-summary .profile-name{font-size:20px;margin-bottom:45px}.profile-summary .last-active{font-size:12px;margin-top:5px}#overlays .clipboard-copy{background:#ebf5fb;padding-left:10px;margin-bottom:20px}#overlays .clipboard-copy .clipboard-code{margin:10px 0}div.image{display:inline-block;margin-left:5px;width:17px;height:17px}div.image.checked{background:url(/theme/flatui/img/icon-check-round-green.png) no-repeat}div.image.unchecked{background:url(/theme/flatui/img/icon-question-round.png) no-repeat}input.product-picture,input.title-picture,input.gallery-picture{opacity:0;margin-bottom:0;height:0;width:0;position:absolute}@media (max-width:767px){.settings-main{padding-left:0}}.static-container{margin-top:0px;margin-bottom:0px;max-width:970px}.static-container hr:first-of-type{height:0px;border-bottom:1px solid #ecf0f1;margin:40px auto}.static-container .static-heading h1.page-title{color:#34495e;font-weight:bold;font-size:32px}.static-container .static-content{margin-bottom:50px}.static-container .static-content h3{color:#2673B0;font-size:1.5em;margin:10px 0;font-weight:normal}#top-content{position:relative}#top-content>.left{padding-left:0;padding-right:15px;width:50%}#top-content>.right{padding-right:0;padding-left:15px;width:50%}#top-content h4{line-height:1.4em;font-size:1.3em;text-align:justify;margin-top:0}#top-content h3{position:absolute;bottom:1em;left:0;width:50%;text-align:center;font-size:2em}.panel-group h3{margin-bottom:10px;font-weight:normal}.panel-group .panel .panel-heading{padding:0}.panel-group .panel .panel-heading a{padding:10px 15px;width:100%;display:block}section{float:left;width:100%}section.top{border-bottom:1px solid #eeeeee;margin-bottom:40px}section.top h1.page-title{font-size:45px;height:45px;line-height:45px;margin-bottom:40px}section.top p{font-weight:bold}section.team-members{text-align:center;margin-bottom:40px}section.team-members .row{width:100%;float:right}section.team-members .row .team-member{float:left;width:104px}section.team-members .row .team-member figure{margin:0 0 10px 0;width:104px;height:104px}section.team-members .row .team-member figure img{width:104px;height:104px}section.team-members .row .team-member .info{width:150%;margin-left:-25%}section.team-members .row .team-member .info h3{font-size:14px;height:15px;line-height:15px;margin:3px 0px;font-weight:bold;color:#34495e}section.team-members .row .team-member+.team-member{margin-left:208px}section.team-members .row+.row{margin-top:30px}.term .term-description{margin:0}.term .term-description ol li+li{margin-top:5px}.content-modal .modal-header h3{text-align:center;color:#2673b0}.clipboard-copy .clipboard-code{margin-bottom:10px;float:left;background:#2673b0;color:white;padding:10px 5px;border-radius:5px;box-shadow:inset 1px 1px 1px rgba(0,0,0,0.15);font-size:13px;width:100%}.code-embed-modal .content-modal .modal-body textarea{width:100%;border-width:1px;height:100px}#files-panel{font-size:10pt}#comments-frame>h3{margin:45px 0 30px 0}#comments-frame .comment-row{width:100%;float:left;padding-bottom:15px}#comments-frame .comment-row+.comment-row{padding-top:15px}#comments-frame .comment{width:100%;padding-left:55px;float:left;position:relative;font-size:12px}#comments-frame .comment .supporter-thumbnail{width:50px;height:50px;padding:0;margin:0;position:absolute;top:0px;left:0px}#comments-frame .comment .supporter-thumbnail img{width:100%;height:100%}#comments-frame .comment .comment-content{width:100%;padding-right:0;padding-left:0}#comments-frame .comment .comment-content .popover-title{padding:0;margin-bottom:5px;font-weight:bold;background:white;border-bottom:0;font-weight:normal}#comments-frame .comment .comment-content .popover-title span{font-size:11px}#comments-frame .comment .comment-content .popover-title span.name{font-weight:bold;font-size:13px}#comments-frame .comment .comment-content .popover-title span.amount{font-size:12px}#comments-frame .comment .comment-content .popover-title span.lightgrey{margin-left:15px}#comments-frame .comment .comment-content .popover-content{overflow:hidden;padding:0;min-height:28px}#comments-frame .comment .comment-content .popover-content p{margin-bottom:0}#comments-frame .comment .comment-content .maker-comment-container{padding:0;margin-top:15px}#comments-frame .comment .comment-content .maker-comment-container.maker-form{display:none;position:relative;padding-left:8%}#comments-frame .comment .comment-content .maker-comment-container.maker-form .glyphicon{position:absolute;top:4px;left:7%;cursor:pointer;z-index:100}#comments-frame .comment .comment-content .maker-comment-container.maker-form .maker-comment{margin-top:5px;background:#f7f7f7}#comments-frame .comment .comment-content .maker-comment-container.maker-form .popover-content{height:auto;overflow:hidden;background:#f7f7f7;border-radius:4px;border:0;padding-top:4px;padding-right:4px;padding-bottom:4px;padding-left:12%}#comments-frame .comment .comment-content .maker-comment-container.maker-form textarea{border-width:1px;margin-bottom:5px}#comments-frame .comment .comment-content .maker-comment{width:100%;float:none;padding:0;position:relative;border:0}#comments-frame .comment .comment-content .maker-comment .supporter-thumbnail{width:38px}#comments-frame .comment .comment-content .maker-comment .supporter-thumbnail a{width:38px;height:38px}#comments-frame .comment .comment-content .maker-comment .content{padding-left:43px}#comments-frame .comment .comment-content .maker-comment .content .popover-content{margin-bottom:0}#comments-frame .comment a.show-maker-reply{position:absolute;bottom:1px;right:0px;display:block;cursor:pointer;color:white;font-size:.8em;padding:.2em .4em;-webkit-border-radius:4px 0 4px 0;-moz-border-radius:4px 0 4px 0;border-radius:4px 0 4px 0;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.modal.report-product .modal-dialog .modal-content{padding:10px 10px 0 10px}.modal.report-product .modal-dialog .modal-content #product-report button.small{border:none;background:transparent;color:#2673b0}#modal-widget .content-modal{width:770px}#modal-widget .content-modal .modal-body{overflow:hidden;height:auto}#modal-widget .content-modal .modal-body hr{float:left;width:100%}#modal-widget .content-modal #configuration-options{width:50%;float:left;padding-right:10px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane{padding:10px 0}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field{font-size:12px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field label{width:35%;float:left;height:25px;line-height:25px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="text"]{float:right;width:65%;border-width:1px;height:25px;line-height:25px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="radio"]{width:auto;float:left;margin:7px 3px 5px 0}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field span{float:left;height:25px;line-height:25px;display:inline-block}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field span+input[type="radio"]{margin-left:15px}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field input[type="checkbox"]{float:left;margin:7px 0;width:auto}#modal-widget .content-modal #configuration-options .tab-content .tab-pane .field textarea{width:65%;border-width:1px;border-radius:3px;padding:2px 10px;height:100px;margin-bottom:5px}#modal-widget .content-modal #widget-preview{width:50%;padding-left:10px;float:left}#modal-widget .content-modal #widget-preview #pling-widget{width:100%;padding:8px;font-size:12px;background-color:#2673B0;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#modal-widget .content-modal #widget-preview #pling-widget .widget-header{width:100%;margin-bottom:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-header h3{margin:0;font-size:18px;margin-bottom:0 !important}#modal-widget .content-modal #widget-preview #pling-widget .widget-body{background-color:white;padding:5px;margin-bottom:5px;border:1px solid rgba(68,68,68,0.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);box-shadow:inset 0 1px 4px rgba(0,0,0,0.15)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info{width:100%;position:relative}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number{width:100%;height:20px;line-height:20px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span{display:block;float:left}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span+span{float:right}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .goal-range-number span+span.unlimited{font-size:27px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount{width:100%;height:20px;padding:3px;background:rgba(204,204,204,0.19);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount .bar{width:4px;max-width:100%;height:14px;background-color:#2673B0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .achieved-amount .bar.no-goal{width:50%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info .money-raised{width:100%;height:20px;line-height:20px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info.with-goal{padding-right:25%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .product-funding-info.with-goal .percentage{position:absolute;top:0;right:0;width:25%;height:60px;line-height:60px;text-align:center;font-size:22px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .widget-text{margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters{width:100%;height:auto;overflow:hidden;margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter{width:12.5%;height:auto;float:left;padding:2px;clear:none;border-bottom:0}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter figure{width:100%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .supporters .supporter figure img{width:100%;height:auto;-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments{height:auto;overflow:hidden;width:100%;margin-top:10px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment{position:relative;width:100%;min-height:42px;padding-left:15%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment figure{position:absolute;top:0;left:0;width:15%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment figure img{width:100%;height:auto}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content{width:100%}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content .info{width:100%;height:12px;line-height:12px;margin-bottom:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment .content .text{width:100%;font-size:11px;line-height:11px}#modal-widget .content-modal #widget-preview #pling-widget .widget-body .comments .comment+.comment{margin-top:5px}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer{width:100%;height:auto;overflow:hidden}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .button{float:left}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .pay-secure{float:left;padding-left:10px;color:white;width:100px}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by{float:right}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo{display:block;background-image:url('../img/new/pling-logo-large.png');height:34px;width:63px;background-size:contain}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo.grey{background-image:url('../img/new/logo.png')}#modal-widget .content-modal #widget-preview #pling-widget .widget-footer .powered-by a.pling-logo.icon{width:34px;background-image:url('../img/new/box-logo.png')}.code-embed-modal .content-modal{width:400px}.code-embed-modal .content-modal .modal-body textarea{width:100%;border-width:1px;height:100px}body.body-external{margin:0;padding-top:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.supporter-box-container{width:100%;height:auto;float:left;border:1px solid #999999;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container figure{float:left;margin:0;padding:0}.supporter-box-container div{float:left}.supporter-box-container>div{width:100%;height:auto;padding:7px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container .supporter-box-top{background-color:#e5e5e5;position:relative}.supporter-box-container .supporter-box-top .title{float:left;width:50%}.supporter-box-container .supporter-box-top .title>a{font-size:16px;color:#39568c;text-decoration:none;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out}.supporter-box-container .supporter-box-top .title>a:hover{text-decoration:underline;color:#428bca}.supporter-box-container .supporter-box-top figure{position:absolute;top:7px;right:7px;width:102px;height:68px;border:inset 1px #999999}.supporter-box-container .supporter-box-top figure a{width:100%;height:100%;display:block;overflow:hidden}.supporter-box-container .supporter-box-top figure a img{width:100%}.supporter-box-container .supporter-box-body>div{width:100%;float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.supporter-box-container .supporter-box-body .info{height:30px;padding-left:35px;position:relative;margin-bottom:10px}.supporter-box-container .supporter-box-body .info>em{position:absolute;left:0;top:0}.supporter-box-container .supporter-box-body .info>span{display:block;width:100%;height:15px;line-height:15px;font-size:13px;float:left;color:black}.supporter-box-container .supporter-box-body .info span+span{color:#1e4483}.supporter-box-container .supporter-box-body .supporters{width:102%}.supporter-box-container .supporter-box-body .supporters figure{width:30px;height:30px;margin:0 3.5px 3.5px 0}.supporter-box-container .supporter-box-body .supporters figure a{display:block;width:100%;height:100%;overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.supporter-box-container .supporter-box-body .supporters figure a img{width:100%}#configuration-options{width:60%;float:left;padding-right:10px}#configuration-options ul.nav-tabs{padding:0;background-color:white}#configuration-options ul.nav-tabs li a{padding:5px}#configuration-options .tab-content .tab-pane{padding:10px 0}#configuration-options .tab-content .tab-pane textarea{width:65%;border-width:1px;border-radius:3px;padding:0 5px;height:100px;margin-bottom:5px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#configuration-options .tab-content .tab-pane .field{font-size:12px}#configuration-options .tab-content .tab-pane .field label{width:35%;float:left;height:25px;line-height:25px}#configuration-options .tab-content .tab-pane .field input[type="text"],#configuration-options .tab-content .tab-pane .field input.color-input{padding:0 5px;float:right;width:65%;border-width:1px;height:25px;line-height:25px;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#configuration-options .tab-content .tab-pane .field input[type="radio"]{width:auto;float:left;margin:7px 3px 5px 0}#configuration-options .tab-content .tab-pane .field span{float:left;height:25px;line-height:25px;display:inline-block}#configuration-options .tab-content .tab-pane .field span+input[type="radio"]{margin-left:15px}#configuration-options .tab-content .tab-pane .field input[type="checkbox"]{float:left;margin:7px 0;width:auto}#pling-widget{width:100%;max-width:400px;padding:8px;font-size:12px;background-color:#2673B0;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#pling-widget .widget-header{width:100%;margin-bottom:5px}#pling-widget .widget-header h3{margin:0;font-size:18px}#pling-widget .widget-body{background-color:white;padding:5px;margin-bottom:5px;border:1px solid rgba(68,68,68,0.2);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 4px rgba(0,0,0,0.15);box-shadow:inset 0 1px 4px rgba(0,0,0,0.15)}#pling-widget .widget-body .donation-amount{line-height:34px;margin:0 0 5px 0;overflow:hidden}#pling-widget .widget-body .donation-amount .support-with{width:25%;height:34px;float:left}#pling-widget .widget-body .donation-amount .donation-amount-number{width:50%;float:left;position:relative}#pling-widget .widget-body .donation-amount .donation-amount-number span.glyphicon{position:absolute;top:11px;left:0}#pling-widget .widget-body .donation-amount .donation-amount-number input[type="text"]{padding:0 10px;float:right;width:100%;border-width:1px;height:24px;line-height:24px;border-radius:3px;margin:5px 0;border-right:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.15);box-shadow:inset 0 1px 1px rgba(0,0,0,0.15)}#pling-widget .widget-body .donation-amount .button{width:25%;float:right}#pling-widget .widget-body .donation-amount .button button{float:left;margin-top:5px;padding:0;width:100%;text-align:center;height:24px}#pling-widget .widget-body .donation-amount .payment-providers{width:100%;float:left;margin:5px 0}#pling-widget .widget-body .donation-amount .payment-providers .pay-with{width:25%;height:34px;float:left}#pling-widget .widget-body .donation-amount .payment-providers .input-group{width:37%;float:left;display:block}#pling-widget .widget-body .donation-amount .payment-providers .input-group .input-group-addon{width:20%;float:left;padding:8px 16px 4px 0;border:0;background:transparent;margin-top:3px}#pling-widget .widget-body .donation-amount .payment-providers .input-group .input-group-addon input[type="radio"]{width:auto}#pling-widget .widget-body .donation-amount .payment-providers .input-group .payment-icon{width:70%;float:left;height:34px;display:block}#pling-widget .widget-body .donation-amount .payment-providers .input-group .payment-icon img{max-width:100%;height:20px;width:auto;margin-top:7px}#pling-widget .widget-body .product-funding-info{width:100%;position:relative}#pling-widget .widget-body .product-funding-info .goal-range-number{width:100%;height:20px;line-height:20px;display:none}#pling-widget .widget-body .product-funding-info .goal-range-number span{display:block;float:left}#pling-widget .widget-body .product-funding-info .goal-range-number span+span{float:right}#pling-widget .widget-body .product-funding-info .goal-range-number span+span.unlimited{font-size:27px}#pling-widget .widget-body .product-funding-info .achieved-amount{width:100%;height:20px;padding:3px;background:rgba(204,204,204,0.19);display:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}#pling-widget .widget-body .product-funding-info .achieved-amount .bar{width:4px;max-width:100%;height:14px;background-color:#2673B0;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}#pling-widget .widget-body .product-funding-info .achieved-amount .bar.no-goal{width:50%}#pling-widget .widget-body .product-funding-info .money-raised{width:100%;height:20px;line-height:20px}#pling-widget .widget-body .product-funding-info.with-goal .percentage{position:absolute;top:0;right:0;width:25%;height:60px;line-height:60px;text-align:center;font-size:22px}#pling-widget .widget-body .product-funding-info.with-goal .goal-range-number{padding-right:25%;display:block}#pling-widget .widget-body .product-funding-info.with-goal .achieved-amount{width:75%;display:block}#pling-widget .widget-body .widget-text{margin-top:10px}#pling-widget .widget-body .supporters{width:100%;height:auto;overflow:hidden;margin-top:5px;padding-top:5px;border-top:1px solid #ddd}#pling-widget .widget-body .supporters .supporter{width:12.5%;height:auto;float:left;padding:2px;clear:none;border-bottom:0}#pling-widget .widget-body .supporters .supporter figure{width:100%;height:auto}#pling-widget .widget-body .supporters .supporter figure img{width:100%;height:auto}#pling-widget .widget-body .comments{height:auto;overflow:hidden;width:100%;margin-top:5px;padding-top:5px;border-top:1px solid #ddd}#pling-widget .widget-body .comments .comment{position:relative;width:100%;min-height:42px;padding-left:15%}#pling-widget .widget-body .comments .comment figure{position:absolute;top:0;left:0;width:15%;height:100%;text-align:center}#pling-widget .widget-body .comments .comment figure img{width:auto;height:100%;float:left}#pling-widget .widget-body .comments .comment .content{width:100%;padding-left:5%}#pling-widget .widget-body .comments .comment .content .info{width:100%;height:12px;line-height:12px;margin-bottom:5px}#pling-widget .widget-body .comments .comment .content .text{width:100%;font-size:11px;line-height:11px}#pling-widget .widget-body .comments .comment+.comment{margin-top:5px}#pling-widget .widget-footer{width:100%;height:auto;overflow:hidden}#pling-widget .widget-footer .donation-amount{padding-bottom:10px;color:white;font-size:14px}#pling-widget .widget-footer .button{float:left}#pling-widget .widget-footer .pay-secure{float:left;color:white;width:100px}#pling-widget .widget-footer .pay-secure a{color:white}#pling-widget .widget-footer .powered-by{float:right}#pling-widget .widget-footer .powered-by a.opendesktop-logo{display:block;background-image:url('/images/system/storeLogo.png');height:34px;width:63px;background-size:contain;background-repeat:no-repeat}#pling-widget .widget-footer .powered-by a.pling-logo{display:block;background-image:url('../img/new/pling-logo-large.png');height:34px;width:63px;background-size:contain}#pling-widget .widget-footer .powered-by a.pling-logo.grey{background-image:url('../img/new/logo.png')}#pling-widget .widget-footer .powered-by a.pling-logo.icon{width:34px;background-image:url('../img/new/box-logo.png')}#widget-preview{width:40%;padding-left:10px;float:left}#widget-code-modal{width:800px;height:auto;overflow:hidden}#widget-code-modal .modal-body{height:auto;overflow:hidden}#widget-code-modal .modal-body article{width:100%;float:left}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs{float:left;width:100%;background-color:#F3F3F3;border-bottom:1px solid #e5e5e5;position:relative;top:0}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li{border-bottom:1px solid #e5e5e5;-webkit-transition:all 0 ease-out;-moz-transition:all 0 ease-out;-ms-transition:all 0 ease-out;-o-transition:all 0 ease-out}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li a{margin:0;background-color:transparent;border:0;color:#2673B0;border-bottom:3px solid #f3f3f3;-webkit-transition:all 0 ease-out;-moz-transition:all 0 ease-out;-ms-transition:all 0 ease-out;-o-transition:all 0 ease-out}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li.active{border-color:#2673B0}#widget-code-modal .modal-body article #configuration-options ul.nav-tabs li.active a{border-color:#2673B0}.body-external .supporter-box-container{border:0;text-align:center}.body-external .supporter-box-container #pling-widget{text-align:left;float:none;height:auto;overflow:hidden}#mainpage{background-image:url(/images/system/1-opendesktop-bg.png);background-repeat:no-repeat;background-attachment:fixed;background-position:0px 0px;background-size:100% 100%;width:100% !important;margin-top:15px}#mainpage .wrapper{padding-top:100px}#mainpage .card-wrapper{border-radius:10px;padding:5px}#mainpage .card-wrapper a.title{display:block}#mainpage .card-wrapper img.logo{height:45px;margin-right:10px;margin-bottom:5px}#mainpage .card-wrapper .domainobj{margin:15px;border-bottom:1px solid #ccc}#indeximages{height:400px;width:100%;overflow:hidden}#indeximages a{cursor:default}.commentstore{border-bottom:1px solid #ccd4d8;padding-top:5px;padding-bottom:5px;overflow:hidden}.commentstore p{margin:0}.commentstore .userinfo img{border-radius:50%;width:42px;height:42px;float:right}.commentstore .userinfo{float:right}.commentstore .info{display:block}.commentstore:last-child{border-bottom:none}div.profile-img-product{width:200px;height:160px}img.imgpopover{max-width:200px;max-height:160px;display:block;margin:auto}#my-comments-tabs-content{font-size:11pt;width:100%}#my-comments-tabs-content .rownomargin{margin:0}#my-comments-tabs-content .rownopadding{padding:0}#my-comments-tabs-content .category{display:block;font-size:smaller}#my-comments-tabs-content .createat{font-size:smaller;color:#888}#my-comments-tabs-content .productrow{padding-bottom:5px;padding-top:5px;border-bottom:1px solid #ccd4d8;font-size:small}#my-comments-tabs-content .productrow .project-image{width:50px;height:50px;float:left;margin-right:15px}#my-comments-tabs-content .productrow:last-child{border-bottom:none}#my-comments-tabs-content .row{margin-top:10px}#my-comments-tabs-content .rating{width:80px}#my-comments-tabs-content .time{font-size:smaller}#my-comments-tabs-content .cntComments{font-size:smaller;display:block;padding-top:5px}#my-comments-tabs-content .productimg{width:50px;height:50px}#my-comments-tabs-content .commenttext{padding-left:20px}.user-admin-page .commentText{font-size:smaller}.user-admin-page .commentTime{font-size:smaller;padding-left:20px}.user-admin-page .title{font-weight:bold;color:#37628D;padding-top:10px;padding-bottom:10px}.user-admin-page .topics{padding-right:20px}.user-admin-page .topics .topic-tag{display:inline-block;padding:.3em .9em;margin:0 .5em .5em 0;white-space:nowrap;background-color:#f1f8ff;border-radius:3px}.user-admin-page .topics .usertagslabelcat{background-color:#f1f1f1}.user-admin-page .topics .topic-tag-link:hover{text-decoration:none;background-color:#def}.user-admin-page .topics .btn-link{display:inline-block;padding:0;font-size:inherit;color:#0366d6;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-bottom:10px}.user-admin-page .my-downloadshistory-list{width:1100px}.user-admin-page .my-downloadshistory-list .totaldownloads{margin:0;padding:20px;text-align:right}.user-admin-page .my-downloadshistory-list .smaller{font-size:smaller}.user-admin-page .my-downloadshistory-list .header{border-top:1px solid #ccc;padding-top:15px;padding-bottom:15px}.user-admin-page .my-downloadshistory-list .subheader{background-color:#ddd}.user-admin-page .my-downloadshistory-list .paddingLeft80{padding-left:80px}.user-admin-page .my-downloadshistory-list .marginLeft80{margin-left:80px}.user-admin-page .my-downloadshistory-list button.voting{line-height:10px}.user-admin-page .my-downloadshistory-list button.voting span{font-size:10px}.user-admin-page .my-downloadshistory-list .rating{width:80px !important;font-size:10pt}.user-admin-page .my-downloadshistory-list .downloadhistory-image{width:50px;height:50px;float:left;margin-right:15px}.user-admin-page .my-downloadshistory-list .nowrap{white-space:nowrap}.col-container span.cnt{padding-right:5px;display:inline-block;font-weight:bold}.col-container .stat{padding-top:15px;padding-left:15px;font-size:12px}.col-container .info{padding-left:15px}.col-container .statContent{padding-top:15px;padding-left:15px;font-size:12px}main#plings-page .wrapper{width:700px;padding:20px}main#plings-page .wrapper .title{background-color:#ccc;height:30px}main#plings-page .wrapper .label{padding-top:10px;padding-left:0px}main#plings-page .wrapper .row:not(:first-child):hover{background-color:#eef}main#plings-page .wrapper .depth0{padding-left:0px}main#plings-page .wrapper .depth1{padding-left:20px}main#plings-page .wrapper .depth2{padding-left:40px}main#plings-page .wrapper .depth3{padding-left:60px}main#plings-page .wrapper .depth4{padding-left:80px}main#plings-page .wrapper .depth5{padding-left:100px}main#plings-page .wrapper .factor{padding-right:10px}#product-page-content .sidebar-left{padding-right:15px;padding-left:15px;min-width:200px;padding-top:20px}#product-page-content .tag-element{background-clip:padding-box;background-color:#eeeeee;background-image:linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);background-repeat:repeat-x;background-size:100% 19px;border:1px solid #aaa;border-radius:3px;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,0.05);color:#333;line-height:25px !important;margin:3px 3px 3px 0;max-width:100%;padding:0 10px;position:relative;display:inline-block}#carouselContainer .carousel-indicators{z-index:31;background-color:transparent;height:20px;bottom:-30px}#carouselContainer .carousel-indicators .active{background-color:#E2E2E2}#carouselContainer .carousel-indicators li{border:1px solid #C4D7EF}#carouselContainer iframe{border:0px}#email-collapse .group-list{list-style:outside none none}#email-collapse .group-list>li:first-child{border-top:0 none;border-top:1px solid #ddd}#email-collapse .group-list>li{border-bottom:1px solid #e5e5e5;display:block;line-height:30px;margin-left:-10px;padding:5px 10px}#email-collapse .css-truncate-target{max-width:300px;display:inline-block;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}#email-collapse .email-actions{float:right}#email-collapse .email-actions form{display:inline}#email-collapse span.label.default{background-color:#6cc644;border-radius:3px;color:#fff;margin-left:4px;padding:4px 6px}#email-collapse span.label.attention{background-color:#c64f0d;border-radius:3px;color:#fff;margin-left:4px;padding:4px 6px}#email-collapse .btn{line-height:20px;padding:4px 12px}.user-admin-page .body-wrap .well{min-height:20px;padding:20px;margin-bottom:20px;background-color:transparent;border:0px;border-radius:0px;-webkit-box-shadow:inset 0 0 0 rgba(0,0,0,0.05);box-shadow:inset 0 0 0 rgba(0,0,0,0.05)}.profile-menu li a{width:100%}.grid-container{padding-top:10px}.grid-container .flex-container{font-size:10pt !important}.grid-container .flex-container .explore-product-grid{width:200px;padding:0px;margin:20px;border:1px solid #dedede;border-radius:2px;margin:10px 10px 10px 10px;position:relative}.grid-container .flex-container .explore-product-grid figure{opacity:1;display:block;transition:.5s ease;backface-visibility:hidden}.grid-container .flex-container .explore-product-grid .explore-product-image{width:170px;height:120px}.grid-container .flex-container .explore-product-grid .explore-product-desc{background:linear-gradient(#fff, #EDEDED);padding:0px 10px 5px 10px;border-bottom-left-radius:2px;border-bottom-right-radius:2px}.grid-container .flex-container .explore-product-grid .explore-product-plings{padding:0;padding-top:5px;width:100px;margin:0 auto;font-size:10px}.grid-container .flex-container .explore-product-grid .explore-product-plings .rating{width:100%}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress{margin-bottom:10px;padding:3px;opacity:0;margin-bottom:0;height:12px;opacity:1;background-color:transparent;box-shadow:none;padding:2px}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress .bar{width:4px;max-width:100%;height:14px;background-color:#2673b0;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;-webkit-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);-moz-box-shadow:inset 0 6px 0 rgba(255,255,255,0.2);box-shadow:inset 0 6px 0 rgba(255,255,255,0.2)}.grid-container .flex-container .explore-product-grid .explore-product-plings .progress .bar.no-goal{width:50%;opacity:0}.grid-container .flex-container .explore-product-grid .explore-product-plings .collected span{display:block;width:100%;float:left;font-size:12px}.grid-container .flex-container .explore-product-grid .explore-product-details span.version{font-size:smaller;padding-left:20px}.grid-container .flex-container .explore-product-grid .explore-product-details span.title{display:block;font-size:smaller;line-height:1.5}@media (max-width:400px){#explore-content .GridFlex .sidebar-left{flex:0 0 100%}.metamenu{height:100%}.metamenu .sitelogo{display:block;width:100%;height:30px;font-size:20px}.metamenu .sitelogo img.logo{width:30px;height:30px}}#ratings-panel .bbtn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid #adadad;border-radius:4px;margin-right:10px}#ratings-panel .activeRating{border:2px solid #2673B0}#ratings-panel .bbtn:focus{color:#333;background-color:transparent;border-color:#2673B0}#plings-panel .u-wrap,#likes-panel .u-wrap{float:left;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:white;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative;text-align:center;font-size:small}#plings-panel .u-wrap img,#likes-panel .u-wrap img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#plings-panel .u-wrap div.username,#likes-panel .u-wrap div.username{max-width:100px;overflow:hidden;padding:5px}#plings-panel .u-wrap div.bottom-title,#likes-panel .u-wrap div.bottom-title{position:absolute;right:2px;bottom:0}.tooltipuserplingscontainer .user{display:block;float:left;text-align:center;width:60px;overflow:hidden}.tooltipuserplingscontainer .user img{width:40px;height:40px;border:1px solid #ccc;border-radius:999px}.tooltipuserplingscontainer .user .caption{display:block}#affiliates-panel .u-wrap{float:left;padding:.3em;border:.35em solid #dee0e0;border-radius:5px;height:14em;margin-bottom:1em;background:#fff;width:115px;height:200px;margin-right:10px;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-ms-transition:all .2s ease-out;-o-transition:all .2s ease-out;position:relative}#affiliates-panel .u-wrap figure img{width:100%;border:1px solid #dbdbdb;-webkit-border-radius:999px;-moz-border-radius:999px;border-radius:999px;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}#affiliates-panel .u-wrap h3{font-size:13px;font-weight:700;word-wrap:break-word;line-height:20px;height:20px;padding:0;margin:0}#affiliates-panel .u-wrap span.small{position:absolute;bottom:5px;left:5px}.containerduplicates{background-color:#fff;min-height:300px;min-width:1000px;max-height:500px;overflow:auto}.containerduplicates .row{border-bottom:1px solid #ddd}.rating-label{padding:0 1em 0;color:#fff;border-radius:.25em;font-weight:700;font-size:90%;cursor:pointer}.rating-label-highlight{border:1px solid #2185D0}#productRelationshipPanel .react-autosuggest__inputContainer{padding-bottom:10px}#productRelationshipPanel .react-autosuggest__suggestions-container--open{width:200px}#productRelationshipPanel .react-autosuggest__input{width:200px;padding-left:20px}#productRelationshipPanel .suggestionsContainer{display:flex;padding:3px 5px}#productRelationshipPanel .suggestionsContainer .description{display:flex;margin-left:10px;text-align:left;flex-flow:column}#productRelationshipPanel .suggestionsContainer .description span{line-height:20px}#productRelationshipPanel .suggestionsContainer .description span.small{font-size:small}
\ No newline at end of file
diff --git a/httpdocs/theme/flatui/less/stylesheet.less b/httpdocs/theme/flatui/less/stylesheet.less
index 35f101c0c..4857543b5 100644
--- a/httpdocs/theme/flatui/less/stylesheet.less
+++ b/httpdocs/theme/flatui/less/stylesheet.less
@@ -1,6762 +1,6762 @@
// out: ../css/stylesheet.css, sourcemap: true, compress: true
@import "stylesheets/mixins.less";
/** @import url(https://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700);**/
/**
Google fonts
**/
/* open-sans-300 - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'), local('OpenSans-Light'),
url('../css/fonts/open-sans-v15-latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('../css/fonts/open-sans-v15-latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* open-sans-regular - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans Regular'), local('OpenSans-Regular'),
url('../css/fonts/open-sans-v15-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('../css/fonts/open-sans-v15-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* open-sans-600 - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 600;
src: local('Open Sans SemiBold'), local('OpenSans-SemiBold'),
url('../css/fonts/open-sans-v15-latin-600.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('../css/fonts/open-sans-v15-latin-600.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/* open-sans-700 - latin */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'),
url('../css/fonts/open-sans-v15-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */
url('../css/fonts/open-sans-v15-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */
}
/** GENERAL **/
body {
color: #32353d;
overflow-y: scroll;
font-size: 1.5em;
line-height: 1.231;
color: #4e4e4e;
font-family: 'Open Sans',sans-serif;
font-size: medium;
}
header, footer, main, section {
width: 100%;
float: left;
section.wrapper {
margin-left: auto;
margin-right: auto;
width: 95%;
float: none;
height: auto;
}
}
a {
text-decoration: none;
color: #2673b0;
.transition();
&:hover {
text-decoration: none;
}
}
a:focus {
outline: none;
}
button::-moz-focus-inner {
border: 0;
}
input, button, select, textarea {
font-family: "Lato",sans-serif;
font-size: 14px;
}
h1 {
font-size: 32px;
font-weight: 900;
}
h3 {
font-size: 24px;
font-weight: 700;
margin-bottom: 4px;
margin-top: 2px;
}
h5 {
font-size: 16px;
font-weight: 500;
text-transform: uppercase;
}
@media (max-width: 1200px) and (min-width: 992px) {
header section.wrapper, footer section.wrapper, main section.wrapper {
width: 95%;
margin-left: 2.5%;
margin-right: 2.5%;
}
}
/** /GENERAL **/
/**metaheader extra*/
body {
padding-top: 34px;
.navbar-gitlab {
top: 34px;
}
git-body {
#metaheader {
position: fixed !important;
}
.nav-sidebar {
top:88px;
}
}
/*body-user, body-public {
opendesktop-metaheader {
position: relative !important;
#metaheader {
position: relative !important;
}
}
}*/
&.navigation-topics,
&.category-themes-and-apps,
&.category-general,
&[class*='category-'] {
#metaheader #metaheader-nav #user-context-menu-container .user-dropdown .th-icon {
margin-top: -5px;
}
}
&.docked {
.d-header {
top: 34px;
}
#metaheader {
position: fixed;
}
}
&.drawer-open {
height: 100%;
overflow: hidden;
}
}
/** COMMON **/
.btn{
background: #bdc3c7 none repeat scroll 0 0;
border: medium none;
border-radius: 6px;
box-shadow: none;
color: #fff;
line-height: 22px;
padding: 9px 12px 10px;
text-decoration: none;
text-shadow: none;
.transition(0.2);
&.btn-large {
font-size: 16.996px;
line-height: 20px;
padding: 12px 18px 13px;
}
&.btn-native {
background-color: #2673b0;
color: white;
}
&.btn-pling-red {
background-color: #e84310;
}
&.btn-pling-green {
background-color: green;
}
&.btn-purple {
background: #9b59b6;
padding: 10px 35px;
}
&.btn-file-dropzone {
font-size: 10px;
padding: 8px 10px 10px;
line-height: 10px;
}
&.btn-file-action {
font-size: 12px;
padding: 8px 10px 10px;
line-height: 16px;
margin-left: 5px;
}
}
.pling-danger{
background: #C9302C none repeat scroll 0 0;
}
.standard-form {
input {
height: 41px;
}
input,
textarea,
select {
border: 1px solid #bdc3c7;
padding: 0;
.border_radius(5px);
}
.field {
margin-bottom: 15px;
}
}
.icon-facebook, .icon-twitter, .icon-google {
width: 40px;
height: 40px;
cursor: pointer;
display: inline-block;
background-image: url(../img/bg_sheet.png);
}
.icon-facebook {
background-position: 0 -105px;
}
.icon-twitter {
background-position: -40px -105px;
}
.lightblue {
color: #2673b0;
}
.small {
font-size: 12px;
}
.large {
font-size: 18px;
}
.relative {
position: relative;
}
.absolute {
position: absolute;
}
.light {
font-weight: 300;
}
.lightgrey {
color: #95a5a6;
}
.center {
text-align: center;
}
i.myfav{
color:#8e44ad;
}
h1.page-title {
color: #34495e;
font-weight: bold;
font-size: 32px;
}
.modal {
overflow-y: hidden;
}
.right {
float: right;
}
.left {
float: left;
}
em.icon {
display: inline-block;
background-image: url(../img/bg_sheet.png);
&.info-icon {
width: 31px;
height: 30px;
background-position: -289px -64px;
}
}
.margin-bottom-10 {
margin-bottom: 10px;
}
.margin-top-15 {
margin-top: 15px;
}
.full-width {
width: 100% !important;
}
.progress {
height: 8px;
.border_radius(0);
margin-bottom: 0;
}
/*paging style*/
.opendesktopwidgetpager{
display: flex;
justify-content: right;
align-items: center;
justify-content: flex-end;
ul.opendesktopwidgetpager{
display: inline-block;
padding-left: 0;
margin: 20px 0;
border-radius: 4px;
> li {
display: inline;
>span{
cursor: pointer;
position: relative;
float: left;
margin-left: -1px;
line-height: 1.42857143;
color: #337ab7;
text-decoration: none;
background-color: #fff;
border: 1px solid #ddd;
padding: 5px 10px;
font-size: 12px;
}
}
>.active > span{
z-index: 2;
color: #fff;
cursor: default;
background-color: #337ab7;
border-color: #337ab7;
}
}
}
.disply-flex{
display: flex;
flex-wrap: wrap;
}
.disply-flex > [class*='col-']{
display: flex;
flex-direction: column;
}
/** /COMMON **/
/** TOP MENU **/
.metamenu{
width:100%;
background-color:#fff;
height:15px;
a#toggleStoreBtn{
float: left;
margin-left: 20px;
text-decoration: none;
}
a.home-link{
float: left;
img.logo{
width:16px;
height:16px;
}
}
}
.meta-nav-top {
> li {
> a{
padding:0px 5px ;
.transition();
ocs-stores {
img {
width: 16px;
height: 16px;
}
}
}
}
}
/** /TOP MENU **/
/** HEADER **/
ul.meta-nav-top
{
list-style: none;
li{
float: left;
}
}
ul.meta-nav-top-right{
margin:0px;
margin-right: 30px;
float: right;
li{
padding:0 10px;
}
}
ul.meta-nav-top-left{
float: left;
}
#toggleStoreContainer{
z-index: 1000;
display: none;
width: 60%;
height: 200px;
top:12px;
left:190px;
}
#toggleStoreContainer a{
display: block;
font-size: 16px;
}
#toggleStoreContainer a:hover{
color:#6a7686;
}
#toggleStoreContainer b{
text-decoration: underline;
text-align: center;
padding-left: 20px;
font-size: 18px;
cursor: default;
}
#toggleStoreContainer ul {
list-style: none;
padding:0;
padding-top: 10px;
padding-left:30px;
}
#toggleStoreContainer ul li{
font-size: 14px;
}
#toggleStoreContainer ul li:hover{
background-color: transparent;
}
header {
nav {
border-bottom: transparent;
}
page_header {
color: #6a7686;
height: auto;
font-size: 10pt;
font-weight: 400;
width: 100%;
font-family: Arial,sans-serif;
nav#nav-top {
margin-left:130px;
width:84%;
}
}
.dropdown-header {
width: 175px;
height: 12px;
background-image: url(../img/bg_sheet.png);
background-position: -385px 0;
}
a {
color: #ffffff;
}
.pull-left,
.pull-right {
padding:0;
}
ul {
margin-bottom: 0;
&.menu-icon {
float: right;
display: none;
}
li {
list-style: none;
display: inline-block;
margin: 0;
cursor: pointer;
float: left;
position: relative;
height: 40px;
line-height: 40px;
float: left;
a {
float: left;
display: block;
height: inherit;
line-height: inherit;
padding: 0 20px;
}
&.profile-menu-container {
padding-top: 0;
padding-left: 40px;
.header-profile-image {
top: 50%;
left: 10px;
height: 30px;
width: 30px;
margin-top: -15px;
.supporter-badge{
position: absolute;
left: 0px;
bottom: 0px;
background: #EE6E09;
text-align: center;
/*border-radius: 30px 30px 30px 30px;*/
color: #fff;
/*padding: 5px 10px;*/
font-size: 12px;
border-radius: 999px;
padding: 5px 5px;
&.inactive{
background: #ccc;
}
}
img {
height: 30px;
width: 30px;
float: left;
.border_radius(999px);
}
}
> a {
display: block;
}
}
ul {
width: 165px;
margin-left: 0;
position: absolute;
left: -9999px;
top: 45px;
border: none;
font-size: 14px;
color: #7f8c8d;
font-weight: normal;
padding: 0;
z-index: 10001;
.border_radius(5px);
&.active {
left: 0;
top: 40px;
}
li {
text-align: left;
display: block;
width: 100%;
background: #ecf0f1;
margin: 0;
padding: 0;
height: 40px;
border-bottom: 1px solid #d6d7d9;
&.first,
&:first-of-type {
.border_radius(5px 5px 0 0);
}
&:last-of-type {
.border_radius(0 0 5px 5px);
}
a {
color: #6a7686;
text-align: left;
height: 40px;
line-height: 40px;
}
}
}
}
}
.container {
margin-left: auto;
margin-right: auto;
float: none;
height: auto;
width: 100%;
background-color: #e2e2e2;
}
.container.header {
margin-left: auto;
margin-right: auto;
float: none;
width: 100%;
section.container {
background-color: transparent;
&.backLink {
background-color: #729ECD !important;
height: 30px;
h4 {
a:hover {
color: #1d1d1d;
}
}
}
section.wrapper {
height: 40px;
padding-left: 80px;
position: relative;
}
}
section.container + section.container {
background-color: transparent;
padding-left: 0;
> section.wrapper {
padding-left: 242px;
height: 50px;
}
}
nav {
border-bottom: transparent;
#search {
height: 25px;
padding: 0;
margin: 6.5px 15px;
line-height: 25px;
position: relative;
input.content-search {
width: 16em;
height: 25px;
padding: 0;
border: 1px solid white;
margin-bottom: -1px;
padding-right: 30px;
text-indent: 5px;
color: #6a7686;
float: left;
border-radius: 6px;
box-shadow: none;
}
div.icon-search-input {
top: 2px;
right: 0;
width: 25px;
height: 25px;
background-image: url(/theme/flatui/img/icon-search-input-2.png);
background-position: center center;
position: absolute;
cursor: pointer;
}
}
}
ul.menu-nav-tabs {
bottom: 0;
display: inline-table;
list-style-type: none;
margin: 0;
padding: 0;
position: absolute;
z-index: 999;
}
}
}
/*
header section.container {
background-color: transparent;
}
header section.container + section.container {
background-color: transparent;
}
header section.container + section.container > section.wrapper {
padding-left: 242px;
height: 50px;
}
header section.container.backLink {
background-color: #729ECD !important;
height: 30px;
}
header section.container.backLink h4 a:hover {
color: #1d1d1d;
}
#page_header div a.black {
color: #6a7686;
}
#page_header div a.black:hover {
color: #1d1d1d;
}
ul.menu-nav-tabs {
bottom: 0;
display: inline-table;
list-style-type: none;
margin: 0;
padding: 0;
position: absolute;
z-index: 999;
}
*/
/** /HEADER **/
/** pling nav tabs**/
// rewrite bootrap nav a
@pling-nav-tabs-active-color: #2673b0;
@pling-nav-tabs-onhover-color: #222;
@pling-nav-tabs-color: #777;
.pling-nav-tabs-a{
border: 0 ;
position: relative;
color: @pling-nav-tabs-color;
font-size: 13px;
transition: color 0s;
bottom: -1px;
border-bottom-width: 2px;
border-bottom-style: solid;
border-bottom-color: transparent;
background-color:transparent;
cursor: pointer;
}
.pling-nav-tabs{
ul.nav-tabs{
> li{
background-color:transparent;
margin-bottom: 0px ;
> a{
.pling-nav-tabs-a;
}
> a:hover{
.pling-nav-tabs-a;
color: @pling-nav-tabs-active-color;
svg{
fill:@pling-nav-tabs-active-color;
}
}
> a:focus{
.pling-nav-tabs-a;
}
svg{
fill:@pling-nav-tabs-color;
}
&.active{
> a {
.pling-nav-tabs-a;
color: @pling-nav-tabs-active-color;
border-bottom-color: @pling-nav-tabs-active-color;
font-weight: bold;
}
> a:hover{
.pling-nav-tabs-a;
color: @pling-nav-tabs-active-color;
border-bottom-color: @pling-nav-tabs-active-color;
font-weight: bold;
}
> a:focus{
.pling-nav-tabs-a;
color: @pling-nav-tabs-active-color;
border-bottom-color: @pling-nav-tabs-active-color;
font-weight: bold;
}
svg {
fill: @pling-nav-tabs-active-color;
}
}
}
}
}
/** pling nav tabs end**/
/** FOOTER **/
footer {
width: 100%;
float: left;
padding: 12px 0;
border-bottom: 5px solid #2673b0;
border-top: 1px solid darkgray;
background-color: gainsboro;
font-size: 9pt;
h3 {
font-weight: normal;
}
h3#footer-heading {
font-size: 1.3em;
margin: 0;
}
nav#footer-nav {
ul {
margin-top: 1em;
list-style: none;
padding: 0;
margin-right: 1em;
float: left;
width: auto;
margin-bottom: .2em;
li {
display: inline-block;
margin-right: 0;
font-size: 1em;
a {
color: #666;
font-weight: 400;
}
}
li + li {
margin-left: 10px;
}
}
}
h3#footer-social-heading {
color: #666;
font-size: 1em;
margin: 0 0 .4em 0;
}
#footer-social {
float: right;
a {
width: 30px;
display: block;
float: left;
}
a + a {
margin-left:2px;
}
}
section.wrapper {
.pull-left {
padding: 0;
}
.pull-right {
padding: 0;
}
}
}
/** /FOOTER **/
/** HOME PAGE **/
body.home-page {
main {
section.wrapper {
.container {
padding: 150px 0;
height: auto;
float: none;
max-width: 95%;
width: 95%;
}
intro {
.container {
padding-bottom: 50px;
article {
text-align: center;
width: 100%;
> * {
margin-bottom: 40px;
}
h2 {
font-size: 40px;
font-weight: 700;
margin-bottom: 20px;
}
h3 {
font-size: 30px;
font-weight: 700;
margin-top: 2px;
}
p {
margin-bottom: 0;
text-align: center;
}
}
}
}
}
section#cat-list {
border-top: 1px solid #cdd7dd;
}
.card-wrapper {
position: relative;
max-width: 960px;
margin: auto;
margin-bottom: 2rem;
background: white;
.card-item {
position: absolute;
padding: 1rem;
width: 31.4%;
border: 1px solid gray;
border-radius: 7px;
.category {
a.title {
font-size: 14pt;
font-weight: 600;
min-height: 30px;
line-height: 30px;
padding-right: 30px;
span.label {
padding: 2px 3px;
}
}
}
div {
a.title {
font-size: 11pt;
min-height: 20px;
line-height: 20px;
padding-right: 5px;
span.label {
font-size: 7pt;
font-weight: 300;
vertical-align: top;
margin-left: 5px;
padding: 1px 3px;
}
}
}
}
}
}
}
.card-item {
border: 1px solid gray;
}
.card-item .category > a.title {
color: #444444;
}
.card-item div > a.title {
color: #6a6a6a;
}
#indeximages {
/* Prevent vertical gaps */
line-height: 0;
-webkit-column-count: 20;
-webkit-column-gap: 0px;
-moz-column-count: 20;
-moz-column-gap: 0px;
column-count: 20;
column-gap: 0px;
}
#indeximages img {
/* Just in case there are inline attributes */
width: 100% !important;
height: auto !important;
opacity: 1;
}
@media (max-width: 1920px) {
#indeximages {
-moz-column-count: 20;
-webkit-column-count: 20;
column-count: 20;
}
}
@media (max-width: 1200px) {
#indeximages {
-moz-column-count: 15;
-webkit-column-count: 4;
column-count: 4;
}
}
@media (max-width: 1000px) {
#indeximages {
-moz-column-count: 12;
-webkit-column-count: 3;
column-count: 3;
}
}
@media (max-width: 800px) {
#indeximages {
-moz-column-count: 9;
-webkit-column-count: 2;
column-count: 2;
}
}
@media (max-width: 400px) {
#indeximages {
-moz-column-count: 7;
-webkit-column-count: 1;
column-count: 1;
}
}
/** /HOME PAGE **/
/** BROWSE PAGE **/
#products-wrapper {
padding-top: 20px;
}
/*
.explore-products {
padding-left: 30px;
ul.nav-tabs {
border-bottom: 0;
margin-bottom: -2px !important;
li.active {
padding-bottom: 0;
a {
border-bottom: 0;
span {
height: 30px;
background: white;
border-radius: 2px 2px 0 0;
border-bottom: 0;
}
}
}
li {
margin: 0;
margin-right: 5px;
top: 2px;
&.right {
float: right;
}
&.active {
padding-bottom: 0;
a {
border-bottom: 0;
span {
height: 30px;
background: white;
border-radius: 2px 2px 0 0;
border-bottom: 0;
}
}
}
a {
margin: 0;
padding: 0;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
border: 1px solid #ccc;
span {
display: block;
padding: 5px;
font-size: 12px;
font-weight: bold;
height: 23px;
line-height: 1;
background: #e8e8e8;
border: 1px solid white;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
border-radius: 2px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
}
}
}
.product-list {
width: 100%;
float: left;
padding: 0 10px;
border: 1px solid #ccc;
background-color: white;
.border_radius(0 0 5px 5px);
.explore-product {
padding: 10px 0;
font-size: 12px;
border-top: 1px solid #ccc;
.explore-product-imgcolumn
{
padding-left: 5px;
padding-right: 5px;
}
.explore-product-image {
max-width: 95%;
max-height: 167px;
}
img{
max-width: 100%;
}
.contentLeft
{
float: left;
padding-right: 0px;
width: 270px;
img{
max-width: 167px;
max-height: 167px;
}
div.productimg
{
width: 167px;
height: 167px;
}
}
.rownum {
font-size: large;
color: graytext;
width: 90px;
float:left;
}
.explore-product-details {
padding-left: 0px;
h3 {
margin: 0 0 10px 0;
font-size: 16px;
height: 20px;
font-weight: bold;
color: #2673b0;
span.version
{
font-size: smaller;
padding-left: 20px;
}
}
.categoryname
{
font-weight: bold;
}
.productInfo
{
padding-top: 15px;
span.cntSupporters
{
padding-right: 20px;
}
}
}
.explore-product-plings {
padding: 0;
.rating {
width: 50%;
}
.progress {
margin-bottom: 10px;
padding: 3px;
opacity:0;
margin-bottom: 0;
height:12px;
opacity:1.0;
background-color: transparent;
box-shadow: none;
padding:2px;
.bar {
width: 4px;
max-width: 100%;
height: 14px;
background-color: #2673b0;
.border_radius(5px);
.box_shadow(inset 0 6px 0 rgba(255,255,255,0.2));
&.no-goal {
width: 50%;
opacity: 0;
}
}
}
.collected {
span {
display: block;
width: 100%;
float: left;
}
}
}
&:first-of-type {
border-top:0;
}
}
}
.explore-footer {
width: 100%;
text-align: center;
.projectPaginationControl {
width: auto;
display: table;
margin: 0 auto;
ul#pagination-digg {
padding: 0;
list-style-type: none;
margin: 20px 0;
height: auto;
overflow: hidden;
li {
float: left;
font-size: 16px;
font-weight: normal;
margin: 0 4px;
}
}
}
}
}
*/
/* .explore-products css cleanup*/
.explore-products {
padding-left: 30px;
padding-right: 30px;
margin-top: -10px;
/*
.nav-tabs{
> li{
background-color:@contentbgcolor;
> a{
border: 0;
color: #777;
font-size: 13px;
}
> a:hover{
border: 0;
color: #222;
background-color:@contentbgcolor;
}
&.right {
float: right;
}
}
> li.active{
> a {
background-color: @contentbgcolor;
border: 0px;
border-bottom: 3px solid #2673b0;
color: #2673b0;
font-weight: bold;
}
}
}
*/
.product-list {
width: 100%;
float: left;
padding: 0 10px;
.border_radius(0 0 5px 5px);
.explore-product {
padding: 10px 0;
font-size: 12px;
border-top: 1px solid #ccc;
.rownum{
font-size: 12px;
float:left;
}
.explore-product-imgcolumn
{
padding-left: 5px;
padding-right: 5px;
}
.imageContainer{
height:167px;
display:flex;
justify-content: center;
align-items: center;
}
.explore-product-image {
max-width: 95%;
max-height: 167px;
}
.contentLeft
{
float: left;
padding-right: 0px;
width: 270px;
img{
max-width: 167px;
max-height: 167px;
}
div.productimg
{
width: 167px;
height: 167px;
}
}
.explore-product-details {
padding-left: 20px;
h3 {
font-size: 24px;
font-weight: bold;
color: #2673b0;
span.version
{
font-size: smaller;
padding-left: 20px
}
}
.title{
display: block;
margin-bottom: 8px;
.username{
padding-left: 20px;
}
}
.description{
display: block;
margin-bottom: 8px;
}
.packagetypes{
display: block;
float: left;
.packagetypeos{
width: 100px;
float: left;
}
}
.productInfo
{
clear: left;
padding-top: 5px;
span.cntSupporters
{
padding-right: 20px;
}
}
}
.explore-product-plings {
padding: 0;
.plinged{
width: 50%;
text-align: center;
}
.rating {
width: 50%;
}
.progress {
margin-bottom: 10px;
padding: 3px;
opacity:0;
margin-bottom: 0;
height:12px;
opacity:1.0;
background-color: transparent;
box-shadow: none;
padding:2px;
.bar {
width: 4px;
max-width: 100%;
height: 14px;
background-color: #2673b0;
.border_radius(5px);
.box_shadow(inset 0 6px 0 rgba(255,255,255,0.2));
&.no-goal {
width: 50%;
opacity: 0;
}
}
}
.collected {
span {
display: block;
width: 100%;
float: left;
}
}
}
&:first-of-type {
border-top:0;
}
}
}
.explore-footer {
width: 100%;
text-align: center;
.projectPaginationControl {
width: auto;
display: table;
margin: 0 auto;
ul#pagination-digg {
padding: 0;
list-style-type: none;
margin: 20px 0;
height: auto;
overflow: hidden;
li {
float: left;
font-size: 16px;
font-weight: normal;
margin: 0 4px;
}
}
}
}
}
aside#explore-sidebar {
padding-left: 0;
margin-bottom: 20px;
}
/** /BROWSE PAGE **/
/** COMMUNITY PAGE **/
main#community-page {
.head-wrap {
padding-top: 1em;
height: auto;
background-size: cover;
position: relative;
.wrapper {
width: 95%;
}
.page-title {
height: 3em;
position: relative;
margin-bottom: 2em;
.center {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 3em;
text-align: center;
> div {
background: rgba(246,246,246,0.86);
width: auto;
display: table;
float: none;
margin: 0 auto;
>h1 {
margin: 0 .5em;
}
}
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
border-bottom: 1px solid white;
float: left;
width: 100%;
}
}
}
.banner {
margin: 0 auto;
float: none;
background: white;
border: 1px solid #e4e4e4;
padding: 0;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
text-align: center;
.top {
padding: 1em;
font-size: 1em;
.large {
font-size: 2em;
}
}
.bottom {
padding: 1em;
background: rgba(231,231,231,0.4);
border-top: 1px solid #e4e4e4;
.border_radius(0 0 9px 9px);
a {
margin-right: 5px;
}
}
}
.body-wrap {
background: white;
position: relative;
.wrapper {
width: 70%;
}
#user-lists {
padding-top: 1em;
#community-tabs{
margin-bottom:20px;
text-align:center;
.pling-nav-tabs{
.nav-tabs {
text-align:center;
}
.nav-tabs > li, .nav-pills > li {
float:none;
display:inline-block;
}
}
}
#communityPanels{
.toplistmemberx
{
.explore-product:first-child
{
border-top: 1px solid #ccc;
}
}
.paging{
display: block;
float: right;
}
.btnshowmore{
display: none;
}
.explore-products{
width: 800px;
}
.rowproduct{
align-items: center;
justify-content: center;
}
.rank{
font-size: 33px;
line-height: 33px;
letter-spacing: normal;
text-align: center;
font-weight: 700;
letter-spacing: -1px;
}
.product-list
{
background-color: #F5F5F5;
border: 1px solid #e4e4e4;
border-radius: 10px;
}
figure.mostplingedcreators img
{
width: 100%;
border: 1px solid #dbdbdb;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
}
.list{
display:block;
margin:auto;
padding-right: 15px;
padding-left: 15px;
display:flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
.u-wrap{
float: left;
width: 100%;
padding: 0.3em;
border: 0.35em solid #dee0e0;
border-radius: 5px;
height: 14em;
margin-bottom: 1em;
background: white;
width: 115px;
height: 200px;
margin-right: 10px;
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
position: relative;
text-align: center;
figure {
float: left;
padding: .25em;
border: 1px solid #dbdbdb;
background: #f6f6f6;
.border_radius(999px);
img{
width: 100%;
border: 1px solid #dbdbdb;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
}
h3{
font-size: 13px;
font-weight: bold;
word-wrap: break-word;
line-height: 20px;
height: 20px;
padding: 0;
margin: 0;
}
span.small {
font-size: 13px;
color: #444;
position: absolute;
bottom: 5px;
right: 5px;
}
div.projecttitle{
font-size: 11px;
}
span.rank {
font-size: 14px;
position: absolute;
bottom: 5px;
left: 5px;
color: #444;
font-weight: bold;
}
}
}
}
}
}
/** /COMMUNITY PAGE **/
/** PRODUCT PAGE **/
#product-page-content {
padding: 0;
#product-main-img {
#product-title-div {
padding-left: 30px;
min-height:105px;
padding-top: 20px;
display: flex;
.product-title{
flex:0 0 80%;
font-size: 25px;
color: #2673b0;
font-weight: bold;
padding-bottom: 15px;
}
.product-title-right{
flex:1;
}
img.logo {
max-height: 85px;
max-width: 85px;
float: left;
padding-right: 15px;
border-radius: 0px;
}
.product-logo-container {
float: left;
width: 95px;
}
.product_category {
font-size: small;
display: block;
font-weight: normal;
}
.topics{
padding-right: 20px;
float: right;
.topic-tag
{
display: inline-block;
padding: 0.3em 0.9em;
margin: 0 0.5em 0.5em 0;
white-space: nowrap;
background-color: #f1f8ff;
border-radius: 3px;
}
.usertagslabelcat{
background-color: #f1f1f1;
}
.topic-tag-link
{
&:hover {
text-decoration: none;
background-color: #def;
}
}
.btn-link{
display: inline-block;
padding: 0;
font-size: inherit;
color: #0366d6;
text-decoration: none;
white-space: nowrap;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: transparent;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
float: right;
padding-top: 5px;
padding-left: 10px;
}
.topic-tags-saved{
display: none;
color: #0366d6;
float: left;
padding-top: 5px;
padding-left: 10px;
.fa-check{
color: green;
}
}
}
span.source{
color:#4e4e4e;
}
div.projectdetailRating{
float: right;
width:140px;
z-index: 100;
}
div.projectdtailHeart{
float: right;
margin-right: 5px;
width: 80px;
.container-pling{
position: relative;
width: 80px;
.partialbuttonfollowproject{
text-align: center;
width: 80px;
height: 30px;
}
.partialbuttonplingproject
{
text-align: center;
}
}
}
div.projectdtailHeart{
float: right;
z-index: 100;
margin-right: 5px;
width: 50px;
.container-pling{
position: relative;
width: 50px;
.partialbuttonfollowproject{
text-align: center;
width: 45px;
height: 45px;
}
.partialbuttonplingproject
{
text-align: center;
}
}
}
.heartproject{
position:relative;
color:#8e44ad;
font-size: 45px;
display: block;
}
div.heartnumber{
z-index: 3;
position: relative;
top: -32px;
display: block;
margin: auto;
color: #fff;
}
.heartgrey{
position: relative;
color: #C8C8C8;
font-size: 45px;
display: block;
}
/*
.heartproject{
color:#8e44ad;
font-size: 25px;
display: block;
float: right;
}
.heartgrey{
position:relative;
color:#C8C8C8;
font-size: 25px;
display: block;
float: right;
}
div.heartnumber{
}
*/
span.plingcircle{
width: 30px;
height: 30px;
background-color: #fff;
border: 3px solid #C8C8C8;
border-radius: 50%;
display: inline-block;
font-size: 17px;
text-align: center;
color: #C8C8C8;
font-weight: bold;
transform: rotate(345deg);
}
span.active{
border: 3px solid #EE6E09;
color: #EE6E09;
}
div.plingtext{
}
div.heartnumberpurple{
color: #8e44ad;
}
}
}
#product-tabs-container {
padding-top: 30px;
#product-actions {
margin-top:25px;
margin-right: 10px;
}
}
#product-tabs {
font-size: 10pt;
padding-left: 25px;
}
/*
ul.nav-tabs {
padding: 0 15px;
border-bottom: 0;
width: auto;
float: left;
li {
float: left;
margin-bottom: -1px;
a {
color: white;
background-color: #21659b;
.border_radius(10px 10px 0 0);
}
}
li.active,
li:hover,
li:focus {
a {
border-color: #21659b;
background-color: #2673b0;
}
}
}
*/
#product-panels {
background: none repeat scroll 0 0 #fff;
height: auto;
overflow: hidden;
/* border-top: 2px solid #21659b;*/
border-radius: 0px;
padding: 15px;
float: left;
width: 100%;
margin: 0;
.tab-pane {
width: 100%;
float: left;
background-color: white;
padding: 4px;
h3 {
color: #2673b0;
margin-bottom: 20px;
margin-top: 0;
}
.panel-grey-part {
padding: 15px;
background-color: #f3f3f3;
color: #2673b0;
border-left: 1px solid #e5e5e5;
}
about-panel {
#product-about {
padding: 20px 10px 10px 10px;
.gitlab-readme{
img{
max-width: 100%;
}
}
article {
padding-top: 15px;
}
article.lastchangelog{
padding-top: 50px;
}
}
#product-discussion {
}
}
donations-panel {
#comments {
width: 100%;
float: left;
padding: 15px;
}
.list#supporters {
padding: 15px;
}
}
ratings-panel2{
.userimg {
border-radius: 50%;
border: 1px solid #ccc;
width: 40px;
height: 40px;
}
}
ratings-panel{
.productRating-rows-inactive{
color: #ddd ;
display: none;
}
.userimg{
border-radius: 50%;
border: 1px solid #ccc;
width: 40px;
height: 40px;
}
span.o-thumbs-up{
color:green;
padding-left:10px;
padding-top:10px
}
span.o-thumbs-down{
color:red;
padding-left:10px;
padding-top:10px
}
}
}
#files-panel{
padding-top: 30px;
table.table-ocs-file{
td{
padding: 3px;
vertical-align: middle;
padding-left: 8px;
}
th{
padding-right: 3px;
}
}
.btn{
padding: 3px 5px;
}
}
#updates-panel{
span.product-update-date{
padding-left: 10px;
}
}
#gitlabissues-panel{
span.date{
font-size: 10pt;
}
span.title{
font: 12pt Trebuchet MS,sans-serif;
display: block;
padding-bottom: 10px;
}
span.showmore{
font-size: 10pt;
}
}
}
}
span.page-views {
float: left;
font-size: 12px;
padding: 5px 15px 5px 0px;
color: #2673b0;
}
#product-maker {
background-color: #f1f1f1;
.project-share-new {
padding-bottom: 10px;
padding-top: 10px;
>.row {
padding-left: 30px;
}
.prod-user {
margin-top: 10px;
.product-maker-thumbnail {
float: right;
.supporter-badge{
position: absolute;
left: 0px;
bottom: 0px;
background: #EE6E09;
text-align: center;
/*border-radius: 15px 15px 15px 15px;*/
color: #fff;
/*padding: 2px 5px;*/
font-size: 10px;
border-radius: 999px;
padding: 2px 2px;
&.inactive{
background: #ccc;
}
}
}
.product-maker-summary {
float:right;
padding-right: 20px;
}
}
.prod-info {
font-size: 12px;
padding-bottom: 10px;
> span {
width: 100%;
float: left;
padding-left: 15px;
}
}
.prod-download {
> a {
position: relative;
display: block;
float: left;
color:#2673b0;
.gradient_color(#E8E8E8, #D6D6D6);
.box_shadow(inset 0 0 0 1px rgba(154, 154, 154, 0.45));
padding: 10px;
.border_radius(5px);
height: 50px;
font-size: 16px;
line-height: 30px;
padding-left: 15px;
margin-right: 5px;
margin-bottom: 10px;
.glyphicon {
font-size: 30px;
margin: 0;
position: absolute;
height: 30px;
width: 30px;
display: block;
top: 10px;
left: 10px;
}
.txt {
float: left;
width: 100%;
height: 30px;
> span {
text-transform: capitalize;
}
}
}
}
#donation-box {
margin: 0 -10px;
}
}
/*
div.projectdtailHeart{
.container-like{
position: relative;
width: 80px;
height: 30px;
float: left;
.heartproject{
position:relative;
color:#8e44ad;
font-size: 30px;
display: block;
float: right;
}
.heartgrey{
position:relative;
color:#C8C8C8;
font-size: 30px;
display: block;
float: right;
}
.likelabel{
line-height: 29px;
}
div.heartnumber{
z-index: 3;
position: relative;
top: -24px;
display: block;
color:#fff;
text-align: center;
}
div.heartnumberpurple{
color: #8e44ad;
}
}
.container-pling{
position: relative;
.partialbuttonfollowproject{
text-align: center;
width: 45px;
height: 45px;
}
.partialbuttonplingproject
{
text-align: center;
}
}
}
*/
}
.prod-widget-box {
border: 1px solid #ccd4d8 !important;
font-size: 10pt;
padding: 5px;
margin-bottom: 10px !important;
width: 95% !important;
.product-row {
.product-thumbnail {
width: 75px;
height: 77px;
margin: 7px;
padding: 10px;
position: relative;
img {
border-radius: 5px;
border: 1px solid #b2b2b2;
height: 75px;
width: 75px;
}
}
}
#pling-box {
.donation-box {
padding-top: 10px;
padding-bottom: 15px;
width: 100%;
height: auto;
>div {
height: auto;
}
}
}
#comments {
figure {
width: 40px;
height: auto;
text-align: center;
border-top: 1px solid #f5f5f5;
padding: 0 0 15px 0;
float: left;
img {
margin: 0 auto;
width: 70%;
}
}
}
&.details
{
span{
line-height: 1.65em;
font-size: 8.25pt;
}
span.title
{
font: 12pt Trebuchet MS,sans-serif;
display: block;
padding-bottom: 10px;
}
span.value
{
font-size: 9pt;
}
}
}
#product-donate {
display: none;
width:550px;
height:300px;
font-size: 13px;
}
/** /PRODUCT PAGE **/
/** REGISTER **/
main#reg-page {
width: 100%;
height: 100%;
.form-control-feedback {
line-height: 40px;
}
section#register-wrap {
position: absolute;
top: 150px;
left: 50%;
margin-left: -290px;
width: 580px;
input[type="text"],
input[type="password"] {
border-width: 1px;
height: 41px;
margin: 4px 0;
width: 100%;
float: none;
padding: 0 5px;
.border_radius(4px);
.box_shadow(inset 0 1px 1px rgba(0,0,0,0.15));
}
input[type="checkbox"] {
height: 20px;
width: auto;
}
label {
font-size: 12px;
}
button#login {
margin-top: 8px;
width: 120px;
}
#register {
width: 100%;
margin: auto;
background: #f5f5f5;
padding: 10px;
border-radius: 5px;
/*@media(max-width:800px){
max-height: 400px;
overflow-y: auto;
}*/
/*@media(max-width:550px){
max-height: 300px;
overflow-y: auto;
}*/
/*@media(max-width:350px){
max-height: 200px;
overflow-y: auto;
}*/
h3 {
text-align: center;
font-weight: 400;
position: relative;
margin: 10px 0 13px 0;
}
#register-box {
padding-left: 0;
padding-right: 0;
min-height: 373px;
#register-form-box {
background-color: white;
margin-bottom: 0;
width: 373px;
}
}
#social-register {
padding-top: 20px;
padding-right: 15px;
padding-left: 30px;
float: right;
#social-login-elements {
margin-bottom: 91px;
}
> div {
float: left;
width: 100%;
}
form {
button {
background-image: url(../img/bg_sheet.png);
font-size: 14px;
display: block;
font-weight: 300;
color: white;
width: 140px;
height: 41px;
margin: 0;
border: none;
text-align: left;
text-indent: 10px;
padding-left: 41px;
}
button.facebook {
background-position: 0 -189px;
margin-top: 4px;
}
button.twitter {
background-position: 0 -232px;
margin-top: 7px;
}
}
.bottom {
.small {
margin-bottom: 6px;
text-align: center;
}
.login2 a {
width: 100%;
}
}
}
}
#login-form-box {
background-color: white;
margin-bottom: 0;
position: absolute;
top: 0;
bottom: 0;
}
}
#thumbs {
z-index: -1;
width: 100%;
min-height: 1000px;
overflow: hidden;
position: relative;
background: rgba(0,0,0,1);
div.thumb {
width: 5.5555%;
max-height: 100px;
padding: 0;
/*height: auto;*/
float: left;
background: rgba(0,0,0,0.8);
a {
float: left;
width: 100%;
height: auto;
display: block;
position: relative;
> span {
width: 100%;
height: 100%;
display: block;
position: absolute;
top: 0;
left: 0;
background: rgba(0,0,0,0.8);
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
}
img {
width: 100%;
height: auto;
}
}
}
}
}
.login-popup {
position: relative;
background: white;
padding: 0;
width: 420px;
margin: 0 auto;
.login-popup-form {
background: #fff;
border-radius: 10px;
padding: 20px;
float: left;
margin: 0;
width: 440px;
.login-form-container {
position: relative;
form {
margin: 0;
input,
textarea,
select {
border: 1px solid #bdc3c7;
padding: 0;
border-radius: 5px;
}
.inputbox {
border: 1px solid #eaedf2;
border-radius: 3px;
height: 40px;
padding: 10px 0 10px 32px;
width: 100%;
outline: none;
margin-bottom: 10px;
font-family: inherit;
}
.email {
background: #eaedf2 url(../img/email.png) 10px 15px no-repeat;
}
.password {
background: #eaedf2 url(../img/password.png) 10px 10px no-repeat;
}
.container-checkbox-remember-me {
height: 20px;
clear: both;
margin-bottom: 10px;
input {
height: 20px;
margin: 0 5px;
float: left;
width: auto;
}
label {
display: inline-block;
font-weight: bold;
font-size: 13px;
float: left;
}
}
}
}
.login-form-links {
position: absolute;
bottom: 10px;
right: 20px;
font-size: 13px;
a {
font-size: 13px;
}
}
}
p {
font-size: 15px;
margin-bottom: 0;
text-align: left;
}
.social {
margin: 20px 0 15px;
a {
color: #fff;
text-decoration: none;
font-weight: bold;
border-radius: 4px 4px 4px 4px;
margin-right: 10px;
float: left;
height: 40px;
}
}
}
/** /REGISTER **/
/** USER ADMIN PAGE **/
.user-admin-page {
position: relative;
.head-wrap {
padding-top: 1em;
height: auto;
background-size: cover;
position: relative;
padding-bottom: 1.9em;
.about-me-header {
figure {
width: 6.9em;
height: 6.9em;
padding: .3em;
border: 1px solid #dbdbdb;
background: white;
position: absolute;
z-index: 10;
.border_radius(999px);
img {
width: 100%;
height: 100%;
.border_radius(999px);
}
}
.user-menu {
position: relative;
height: auto;
background: white;
float: left;
margin-top: 1.5em;
padding: .5em 2em .5em 8em;
.border_radius(50px 0 0 50px);
.intro {
margin-top: 0;
}
}
}
}
.body-wrap {
background: white;
position: relative;
.product-page {
padding-top: 1em;
}
/*
ul.nav-tabs {
li {
a {
padding: .7em 1em;
font-size: .9em;
height: 2.95em;
color: #2673b0;
&.active {
color: #21659b;
}
}
}
}
*/
}
.my-products-page, .my-payments-page {
padding-bottom: 2em;
span.payouthistory-icon
{
width: 15px;
height: 15px;
background-image: url(../img/line-chart.svg);
background-size: 13px;
background-position: bottom left;
cursor: pointer;
background-repeat: no-repeat;
float: left;
}
.my-products-heading {
padding-bottom: 20px;
margin-bottom: 20px;
margin-top: 20px;
border-bottom: 1px solid #c1c1c1;
float: left;
width: 100%;
.num-products {
margin-top: 35px;
}
}
.my-products-list {
float: left;
width: 100%;
}
.my-product-item {
margin-bottom: 20px;
figure {
height: auto;
padding: 0;
img.explore-product-image {
width: 101px;
height: auto;
padding-top: 10px;
}
}
article {
>div {
float: left;
width: 100%;
}
.title {
margin-bottom: 10px;
h3 {
margin: 0;
padding: 0;
}
}
.info {
ul {
list-style-type: none;
padding: 0;
margin: 0;
li {
float: left;
width: auto;
font-size: 12px;
span+span {
margin-left: 5px;
font-weight: bold;
}
}
li + li {
margin-left: 15px;
}
}
}
.text {
font-size: 12px;
margin: 5px 0 10px 0;
p {
margin: 0;
}
}
.buttons {
a.btn.btn-native {
color: white;
font-size: 12px;
padding: 3px 6px;
}
a.btn.pling-danger{
background-color: #C82333;
}
}
}
}
.my-product-divider {
border-bottom: 1px solid rgb(193, 193, 193);
margin-bottom: 20px;
width: 97%;
margin-left: 15px;
}
#my-earnings-list {
ul.nav-tabs {
top: 0;
position: relative;
margin: 0;
border-radius: 5px 5px 0 0;
padding: 10px;
padding-bottom: 0;
> li {
> a {
padding: .7em 1em;
font-size: .9em;
height: 2.95em;
color: #2673b0;
}
}
}
#my-earnings-tabs {
padding: 10px;
border: 1px solid #ddd;
border-radius: 0 0 5px 5px;
.tab-pane {
font-weight: bold;
.row {
margin: 0;
h3 {
margin: 5px 0;
}
}
}
}
}
}
}
.modal-ppload {
.content-modal {
width: 950px;
}
}
/** /USER ADMIN PAGE **/
/** MEMENER PAGE **/
.about-me-page {
div.catgroupseperator
{
display: block;
- height: 40px;
+ line-height: 80px;
font-size: 20px;
clear: both;
color: #777;
}
.my-fav-list{
width: 100%;
.totaldownloads{
margin:0;
padding: 20px;
text-align: right;
}
.smaller{
font-size: smaller;
}
.row{
border-bottom:1px solid #ccc;
padding-top:15px;
padding-bottom:15px;
}
.rating{
width: 80px !important;
font-size: 10pt;
}
.downloadhistory-image{
width: 50px;
height: 50px;
float: left;
margin-right: 15px;
}
.nowrap{
white-space: nowrap;
}
i.voteup{
color: #409540;
font-size: 20px;
padding-left:5px;
padding-right:5px;
}
i.votedown{
color: #C9302C;
font-size: 20px;
padding-left:5px;
padding-right:5px;
}
.newusers{
.u-wrap{
float: left;
width: 100%;
padding: 0.3em;
border: 0.35em solid #dee0e0;
border-radius: 5px;
height: 14em;
margin-bottom: 1em;
background: white;
width: 115px;
height: 200px;
margin-right: 10px;
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
position: relative;
figure img{
width: 100%;
border: 1px solid #dbdbdb;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
h3{
font-size: 13px;
font-weight: bold;
word-wrap: break-word;
line-height: 20px;
height: 20px;
padding: 0;
margin: 0;
}
div.small {
font-size: 13px;
color: #444;
position: absolute;
bottom: 5px;
right: 5px;
img.plingactivesmall{
width: 20px;
height:20px;
}
.cntplings{
line-height: 20px;
}
}
}
}
}
> .head-wrap {
padding-top: 1em;
height: auto;
background-size: cover;
position: relative;
padding-bottom: 1em;
.page-title {
height: 3em;
position: relative;
margin-bottom: 2em;
margin-top: 2em;
.center {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 3em;
text-align: center;
> div {
background: #f6f6f6;
width: auto;
display: table;
float: none;
margin: 0 auto;
> h1 {
margin: 0 0.5em;
}
}
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
border-bottom: 1px solid white;
float: left;
width: 100%;
}
}
}
.header {
height: auto;
position: relative;
margin-bottom: 3em;
> div.col-lg-8 {
padding-right: 5px;
padding-left: 0;
}
> div.col-lg-4 {
padding-right: 0;
padding-left: 5px;
}
.about {
display: none;
.well {
background-color: white;
padding: 1em;
height: 22.5em;
h2 {
font-size: 1.4em;
margin: 0;
min-height: 1.4em;
line-height: 1.2em;
border-bottom: 1px solid #dbdbdb;
font-weight: normal;
}
article {
border-top: 1px solid #f5f5f5;
padding-top: 0.5em;
width: 100%;
float: left;
overflow: hidden;
height: 18.5em;
> .scroll-pane {
height: 18em;
}
}
}
}
.summary {
float: none;
margin: 0 auto;
article {
padding: 0;
background-color: white;
height: auto;
float: left;
.about-title {
padding: 1em;
height: 8.9em;
padding-left: 8.9em;
position: relative;
background: rgba(246, 246, 246, 0.45);
border-bottom: 1px solid #e1e1e1;
float: left;
width: 100%;
position:relative;
figure {
width: 6.9em;
height: 6.9em;
padding: 0.3em;
border: 1px solid #dbdbdb;
background: white;
position: absolute;
top: 1em;
left: 1em;
display:inline-block;
.border_radius(999px);
img {
width: 100%;
height: 100%;
.border_radius(999px);
}
}
.btnSupportMe
{
position:absolute;
right: 0;
top:0;
}
.supporter-badge{
position: absolute;
left: 0px;
bottom: 0px;
background: #EE6E09;
text-align: center;
/*border-radius: 30px 30px 30px 30px;*/
color: #fff;
/*padding: 5px 10px;*/
font-size: 16px;
border-radius: 999px;
padding: 5px 5px;
&.inactive{
background: #ccc;
}
}
.mod-badge{
display: block;
text-align: center;
padding-top: 3px;
font-size: small;
}
h1 {
margin: 1.5em 0 0 0;
font-size: 1.5em;
min-height: 1.7em;
line-height: 1em;
}
}
.about-content {
padding: 1em;
float: left;
> div {
float: left;
width: 100%;
span {
float: left;
display: block;
line-height: 1.25em;
}
span.glyphicon {
color: #939292;
margin-right: 0.25em;
font-size: 1.25em;
}
span + span {
line-height: 1.65em;
}
&.social-icons {
a {
font-size: 1.35em;
height: 1em;
width: 1em;
display: block;
float: left;
img {
width: 100%;
height: 100%;
vertical-align: top;
}
}
a + a {
margin-left: 0.25em;
}
}
}
div + div {
margin-top: 0.25em;
}
}
.about-footer {
float: left;
width: 100%;
padding: 1em;
.info-div {
width: 100%;
float: left;
}
.info-div + .info-div {
margin-top: 5px;
}
.social-share {
.social + .social {
margin-left: 0.5em;
}
}
> .pull-right {
em.report-icon {
height: 1.5em;
width: 1.5em;
margin-top: 0.5em;
background-size: cover;
}
}
}
}
}
}
.about-me-details {
padding-left: 0;
padding-right: .5em;
.tab-content{
padding-top: 20px;
}
h3.about-me-heading {
font-size: 1.5em;
margin: 0;
min-height: 1.9em;
line-height: 1.9em;
border-bottom: 1px solid #dbdbdb;
font-weight: normal;
}
article {
padding-top: 0.5em;
padding-bottom: 1.5em;
width: 100%;
float: left;
}
.my-products-list {
h3 {
width: 100%;
margin-bottom: 20px;
}
.cat-title {
padding: 0 5px;
position: relative;
height: 2em;
margin-bottom: 1em;
margin-top: 1.1em;
> div {
position: absolute;
top: 0;
left: 1em;
background: white;
height: 2em;
width: auto;
padding: 0 0.5em;
> h2 {
margin: 0;
}
}
hr {
float: left;
width: 100%;
margin-top: 1em;
margin-bottom: 1em;
border-bottom: 1px solid #F9F9F9;
}
}
.mini-card {
width: 14.28571%;
margin-bottom: 10px;
p {
img {
vertical-align: baseline;
}
}
}
}
}
aside {
.details {
float: left;
width: 100%;
height: auto;
padding: 0.5em;
h3 {
line-height: 2em;
font-size: 1em;
margin: 0;
color: #a3a2a2;
border-bottom: 1px solid #e1e1e1;
}
.box-content {
padding: 0.5em 0 0 0;
border-top: 1px solid #ededed;
> div {
width: 100%;
float: left;
height: auto;
margin-top: 0.5em;
.label {
float: left;
padding: 0;
min-height: 1.5em;
line-height: 1.3em;
img.accounts_icon
{
padding-top:2px;
width: 20px;
}
em, span {
font-size: 1.7em;
float: left;
display: inline-block;
color: #AAA;
}
em {
display: block;
width: 1em;
height: 1em;
background-size: cover;
&.fb-link {
background-image: url('../img/social_icons/fb.png');
background-size: 100%;
background-repeat: no-repeat;
background-position: center;
}
&.tw-link {
background-image: url('../img/social_icons/tw.png');
background-size: 100%;
background-repeat: no-repeat;
background-position: center;
}
&.gp-link {
background-image: url('../img/social_icons/g_plus.png');
background-size: 100%;
background-repeat: no-repeat;
background-position: center;
}
&.gt-link {
background-image: url('../img/social_icons/github.png');
background-size: 100%;
background-repeat: no-repeat;
background-position: center;
}
&.email-link {
background-image: url('../img/email.png');
background-size: 100%;
background-repeat: no-repeat;
background-position: center;
}
}
}
.text {
width: 90%;
float: right;
font-size: 1em;
min-height: 1.5em;
line-height: 1.3em;
}
}
}
}
}
}
/**-- MINI CARDS --**/
.mini-card {
padding: 0 2px;
width: 14.28571%;
margin-bottom: 10px;
.u-wrap {
float: left;
width: 100%;
border: 2px solid #DEE0E0;
.border_radius(5px);
height: 15em;
margin-bottom: 4px;
background: white;
.transition();
a {
float: left;
width: 100%;
height: 100%;
display: block;
position: relative;
}
figure {
width: 100%;
float: left;
height: 120px;
img {
width: 100%;
height: 120px;
.border_radius(3px 3px 0 0);
}
}
.rating {
font-size: 11px;
position: absolute;
right: 10px;
bottom: 10px;
}
.u-content {
width: 100%;
float: left;
padding: 3px;
height: 5.5em;
position: relative;
overflow: hidden;
.productCategory {
color: #4e4e4e;
display: block;
font-size: 11px;
}
> h3 {
font-size: 12px;
word-wrap: break-word;
width: 100%;
margin: 2px 0 4px 0;
}
> p {
font-size: 15px;
position: absolute;
bottom: 0;
right: 3px;
width: 100%;
margin: 0;
color: black;
font-weight: bold;
text-align: right;
color: #444;
}
}
&:hover {
border-color:#DEE0E0;
background: rgba(246,246,246,1);
figure {
background: white;
}
}
}
@media(max-width:800px){
width: 16.6666667%;
.u-wrap {
height:12em;
}
}
@media(max-width:550px){
width: 20%;
.u-wrap {
height: 14em;
}
}
@media(max-width:350px){
width: 33.333333%;
.u-wrap {
height:16em;
}
}
}
.product-card {
width: 10%;
height: auto;
padding: 0 3px;
margin-bottom: 10px;
height: auto;
> a {
display: block;
float: left;
width: 100%;
height: auto;
//height: 100%;
position: relative;
.card {
//width: 100%;
//height: 100%;
//position: absolute;
//padding-top: 3px;
> .border {
position: absolute;
top: 0;
left: 0;
width: 100%;
//height: 3px;
background-color: @newblue;
}
> .p-wrap {
width: 100%;
height: 8.25em;
border: 2px solid #c5ced5;
//border-top: 0;
background-color: white;
.border_radius(5px);
> figure {
width: 100%;
height: 3.5em;
overflow: hidden;
display: block;
float: left;
border-bottom:1px solid #c5ced5;
> img {
height: 100%;
width: 100%;
}
}
> .content {
width: 100%;
float: left;
padding: 0.25em;
font-size: 1em;
height: 3.5em;
> h3 {
font-size: .7em;
margin: 0;
color: #34495e;
display: block;
width: 100%;
height: 100%;
overflow: hidden;
word-break: break-word;
}
}
> .footer {
float: left;
width: 100%;
height: 1em;
line-height: 1em;
font-size: 1em;
text-align: right;
padding: 0 0.1em;
background-color: #f5f5f5;
.border_radius(3px);
//border-top: 1px solid #c5ced5;
> p {
font-weight: bold;
font-size: 0.75em;
color: #a7a7a7;
}
}
}
}
> .empty-card {
width: 100%;
//height: 100%;
}
}
@media(max-width:800px){
width: 16.6666667%;
}
@media(max-width:550px){
width: 20%;
}
@media(max-width:350px){
width: 33.333333%;
}
}
/**-- MINI CARDS --**/
/** /MEMBER PAGE **/
/** ADD PRODUCT PAGE **/
.wizard {
> .content {
> .body {
position: inherit;
input.error,
select.error,
textarea.error {
background: none repeat scroll 0 0 #fbe3e4;
border: 1px solid #fbc2c4;
color: #8a1f11;
}
}
}
> .steps {
li {
a {
background: #eee none repeat scroll 0 0;
color: #aaa;
cursor: default;
&:hover {
cursor: pointer;
}
}
}
> ul {
> li {
width: 20%;
}
}
}
}
/** STEP 1 **/
.add-product-top {
width: 100%;
margin: 20px 0 100px 0;
padding: 0 15px;
h1 {
margin-bottom: 0;
font-size: 2em;
}
ul.steps {
width: auto;
margin-bottom: 0;
li {
float: left;
display: inline-block;
list-style: none;
margin: 0;
color: #bdc3c7;
border-bottom: 2px solid #bdc3c7;
padding: 1em 2.5em;
font-size: 1em;
width: auto;
}
li.active {
color: @newblue;
border-bottom: 2px solid @newblue;
}
}
}
.add-product-container {
padding-bottom: 40px;
> form {
width: 50%;
margin: 0 auto;
.field {
label {
width: 100%;
}
input, textarea {
width: 100%;
}
select {
height: 35px;
width: 48%;
}
select + select {
float: right;
}
}
button + button {
margin-right: 10px;
}
}
}
.add-product-form {
margin: auto;
}
.mandatory {
top: 2px;
left: -240px;
width: 220px;
text-align: right;
}
.bold-font {
font-size: 18px;
font-weight: bold;
}
.field-missing-container {
top: 26px;
right: -240px;
width: 230px;
}
.field-missing-left {
margin-top: 6px;
float: left;
width: 8px;
height: 22px;
background: url(../img/field-missing-left.png);
}
.field-missing {
float: left;
background: #fadbd8;
border-radius: 5px;
color: #e74c3c;
padding: 12px;
max-width: 190px;
word-break: normal;
word-wrap: break-word;
}
.add-more {
right: 10px;
}
a.add-more:hover {
text-decoration: underline;
}
.icon-plus {
margin-left: 5px;
width: 15px;
height: 15px;
background: url(../img/icon-plus.png);
}
.product-gallery {
margin-bottom: 30px;
.product-image {
float: left;
margin: 5px 5px 0 0;
img {
max-width: 110px;
max-height: 110px;
overflow: hidden;
border-radius: 5px;
border: 3px solid @newblue;
&:hover {
border: 3px solid #bdc3c7;
}
}
.image {
width: 110px;
height: 77px;
overflow: hidden;
border-radius: 5px;
border: 3px solid @newblue;
background-size: 110px;
background-position: center center;
}
.image:hover {
border: 3px solid #bdc3c7;
}
.icon-check {
width: 20px;
height: 20px;
background: url(../img/icon-check.png);
}
.icon-cross {
display: none;
width: 20px;
height: 20px;
background: url(../img/icon-cross.png);
right: 0;
cursor: pointer;
}
}
.upload-image-container {
.upload-image {
float: left;
cursor: pointer;
width: 116px;
height: 83px;
background: url(../img/icon-upload.png);
background-position: 0px -15px;
margin: 5px 0 0 -5px;
.border_radius(10px);
}
.upload-image:hover {
background: url(../img/icon-upload-hover.png);
background-position: 0px -15px;
}
}
}
input.product-picture,
input.title-picture,
input.gallery-picture {
opacity: 0;
margin-bottom: 0;
height: 0;
width: 0;
position: absolute;
}
#product-picture-container,
#title-picture-container {
max-width: 110px;
max-height: 110px;
overflow: hidden;
}
img#product-picture-preview,
img#title-picture-preview {
display: none;
margin-top: 20px;
}
#embed-code {
margin-top: 20px;
}
/** /STEP 1 **/
/** /STEP 2 **/
.add-page-preview {
background: rgba(46, 49, 51, 0.8);
color: white;
position: fixed;
margin-top: 0;
width: 100%;
z-index: 1;
> .container {
padding-bottom: 20px;
}
.add-product-mid {
> .left {
width: 100%;
}
}
}
.preview-container > .row-fluid {
margin-top: 220px;
}
.preview-title {
font-size: 18px;
margin: 0 60px 0 15px;
padding-top: 15px;
}
.preview-explanation {
padding-top: 18px;
}
.add-page-preview .add-product-top {
border-bottom: 1px solid #393d3f;
margin-bottom: 10px;
}
.add-page-preview ul.steps {
margin-bottom: 0;
}
.paypal-label {
font-size: 17px;
margin: 15px 60px 0 30px;
}
.icon-paypal {
width: 40px;
height: 40px;
background: url(../img/icon-paypal.png);
margin: -10px 30px 0 0;
}
.preview-inputs {
padding: 10px 0;
border-bottom: 1px solid #393d3f;
}
.preview-buttons {
padding: 20px 0 0 0;
}
.preview-buttons .btn.right {
margin-left: 10px;
}
input.preview-input {
margin-left: 20px;
width: 250px;
height: 35px;
}
/** /STEP 2 **/
/** /ADD PRODUCT PAGE **/
/** SETTINGS PAGE **/
.settings-page {
> .about-me {
float: left;
width: 100%;
margin-bottom: 40px;
}
.settings-options {
padding: 0;
}
}
/** main settings panel **/
.settings-main {
padding-right: 0;
margin-bottom: 40px;
.panel {
.panel-heading {
position: relative;
h4 {
a {
font-size: 1.2em;
padding: 0.5em 0.5em;
&:hover {
text-decoration:none;
color: @newblue;
}
}
}
span.glyphicon-chevron-down {
position: absolute;
top: 50%;
margin-top: -0.5em;
right: 0.5em;
.rotate(0deg);
.transition();
}
&.active {
span.glyphicon-chevron-down {
.rotate(180deg);
}
}
}
.panel-body {
padding: 0.5em;
> form {
padding: 0.5em;
margin-bottom: 0;
> .row {
> div {
input[type="text"],
input[type="password"],
textarea {
width: 100%;
padding: 0 5px;
}
textarea.about {
padding: 0.5em 1em 0.5em 0.5em;
}
}
.btn.pull-right {
margin-right: 15px;
}
}
> hr {
margin-top: 1em;
margin-bottom: 1em;
border: 0;
border-top: 1px solid #eee;
border-bottom: 1px solid white;
}
}
}
}
ul.errors, ul li.text-error {
color: #b94a48;
list-style-type: none;
font-size: 0.8em;
padding: 0;
display: inline-block;
}
input.input-error, textarea.input-error {
border: 1px solid #b94a48;
}
.form-success {
color: #48B96C;
}
.section-body {
padding: 15px 15px 0 15px;
display: none;
border-bottom: 1px solid #bdc3c7;
.row:last-of-type {
margin: 0 0 15px 0;
}
hr {
display: block;
height: 0;
border-top: 1px solid #bdc3c7;
padding: 0 1em;
width: 100%;
margin: 10px 0 20px -15px;
}
.row,
.field {
input[type="text"],
input[type="password"],
textarea {
width: 100%;
}
}
}
#form-profile {
textarea.about {
height: 228px;
}
}
#form-picture,#form-picture-background {
.image-preview {
display: block;
padding: 0px;
margin: 10px auto;
width: 100%;
max-width: 200px;
height: auto;
> img {
width: 100%;
height: auto;
}
}
.image-info {
margin: 22px 0 0 -20px;
padding: 0px 0 0 35px;
border-left: 1px solid #bdc3c7;
height: 200px;
p {
margin-bottom: 30px;
}
}
}
#form-website {
.clipboard-copy {
background: rgba(8, 165, 193, 0.49);
padding: 7px;
position: relative;
padding-right: 230px;
margin-bottom: 20px;
border-radius: 7px;
.btn-purple {
position: absolute;
top: 0px;
right: 0px;
padding: 7px 35px;
}
.clipboard-code {
margin: 0;
width: 100%;
color: white;
background: 0;
padding: 0;
box-shadow: none;
font-size: 16px;
}
}
}
#form-newsletter {
.newsletter-label {
margin: 5px 10px 0 0;
}
#newsletter {
height: 14px;
float: left;
width: auto;
margin: 7px 0 0 0;
cursor: pointer;
}
}
#add-profile-picture {
width: 100%;
max-width: 200px;
}
}
/** /main setting panel **/
/** side bar **/
.profile-summary {
padding: 15px;
background: #FDFDFD;
.profile-image-container {
width: 123px;
height: 123px;
margin: auto;
border: 1px solid #ccc;
padding: 0.25em;
background: white;
.border_radius(123px);
.profile-image {
img {
width: 100%;
height: 100%;
border: 1px solid #ccc;
.border_radius(123px);
}
}
}
.profile-name {
font-size: 20px;
margin-bottom: 45px;
}
.last-active {
font-size: 12px;
margin-top: 5px;
}
}
/** /sidebar **/
#overlays {
.clipboard-copy {
background: #ebf5fb;
padding-left: 10px;
margin-bottom: 20px;
.clipboard-code {
margin: 10px 0;
}
}
}
div.image {
display: inline-block;
margin-left: 5px;
width: 17px;
height: 17px;
}
div.image.checked {
background: url(/theme/flatui/img/icon-check-round-green.png) no-repeat;
}
div.image.unchecked {
background: url(/theme/flatui/img/icon-question-round.png) no-repeat;
}
input.product-picture, input.title-picture, input.gallery-picture {
opacity: 0;
margin-bottom: 0;
height: 0;
width: 0;
position: absolute;
}
/** RESPONSIVE FIX **/
@media (max-width: 767px) {
.settings-main {
padding-left: 0;
}
}
/** /RESPONSIVE FIX **/
/** /SETTINGS PAGE **/
/*==================*/
/* STATIC PAGES */
/*==================*/
.static-container {
margin-top: 0px;
margin-bottom: 0px;
max-width: 970px;
hr:first-of-type {
height: 0px;
border-bottom: 1px solid #ecf0f1;
margin: 40px auto;
}
.static-heading {
h1.page-title {
color: #34495e;
font-weight: bold;
font-size: 32px;
}
}
.static-content {
margin-bottom: 50px;
h3 {
color: @newblue;
font-size: 1.5em;
margin: 10px 0;
font-weight: normal;
}
}
}
/**-- FAQ PAGE -------------------**/
#top-content {
position: relative;
> .left {
padding-left: 0;
padding-right: 15px;
width: 50%;
}
> .right {
padding-right: 0;
padding-left: 15px;
width: 50%;
}
h4 {
line-height: 1.4em;
font-size: 1.3em;
text-align: justify;
margin-top: 0;
}
h3 {
position: absolute;
bottom: 1em;
left: 0;
width: 50%;
text-align: center;
font-size: 2em;
}
}
.panel-group {
h3 {
margin-bottom: 10px;
font-weight: normal;
}
.panel {
.panel-heading {
padding: 0;
a {
padding: 10px 15px;
width: 100%;
display: block;
}
}
}
}
/**-- /FAQ PAGE -------------------**/
/**-- TEAM PAGE ---------------------------**/
section {
float: left;
width: 100%;
&.top {
border-bottom: 1px solid #eeeeee;
margin-bottom: 40px;
h1.page-title {
font-size: 45px;
height: 45px;
line-height: 45px;
margin-bottom: 40px;
}
p {
font-weight: bold;
}
}
&.team-members {
text-align: center;
margin-bottom: 40px;
.row {
width: 100%;
float: right;
.team-member {
float: left;
width: 104px;
figure {
margin: 0 0 10px 0;
width: 104px;
height: 104px;
img {
width: 104px;
height: 104px;
}
}
.info {
width: 150%;
margin-left: -25%;
h3 {
font-size: 14px;
height: 15px;
line-height: 15px;
margin: 3px 0px;
font-weight: bold;
color: #34495e;
}
}
}
.team-member + .team-member {
margin-left: 208px;
}
}
.row + .row {
margin-top: 30px;
}
}
}
/**-- /TEAM PAGE ---------------------------**/
/**-- TERMS & CONDITIONS -------------------**/
.term {
.term-description {
margin: 0;
ol {
li + li {
margin-top: 5px;
}
}
}
}
/**-- /TERMS & CONDITIONS -------------------**/
/** MODALS **/
.content-modal {
.modal-header {
h3 {
text-align: center;
color: #2673b0;
}
}
}
.clipboard-copy {
.clipboard-code {
margin-bottom: 10px;
float: left;
background: #2673b0;
color: white;
padding: 10px 5px;
border-radius: 5px;
box-shadow: inset 1px 1px 1px rgba(0,0,0,0.15);
font-size: 13px;
width: 100%;
}
}
.code-embed-modal {
.content-modal {
.modal-body {
.demo-code {
//display: none;
}
textarea {
width: 100%;
border-width: 1px;
height: 100px;
}
}
}
}
#files-panel {
font-size: 10pt;
}
#comments-frame {
> h3 {
margin: 45px 0 30px 0;
}
.comment-row {
width: 100%;
float: left;
padding-bottom: 15px;
}
.comment-row + .comment-row {
padding-top: 15px;
}
.comment {
width: 100%;
padding-left: 55px;
float: left;
position: relative;
font-size: 12px;
.supporter-thumbnail {
@size: 50px;
width: @size;
height: @size;
padding: 0;
margin: 0;
position: absolute;
top: 0px;
left: 0px;
img {
width: 100%;
height: 100%;
}
}
.comment-content {
width: 100%;
padding-right: 0;
padding-left: 0;
.popover-title {
padding: 0;
margin-bottom: 5px;
font-weight: bold;
background: white;
border-bottom: 0;
font-weight: normal;
span {
font-size: 11px;
}
span.name {
font-weight: bold;
font-size: 13px;
}
span.amount {
font-size: 12px;
}
span.lightgrey {
margin-left: 15px;
}
}
.popover-content {
overflow: hidden;
padding: 0;
min-height: 28px;
p {
margin-bottom: 0;
}
}
.maker-comment-container {
padding: 0;
margin-top: 15px;
&.maker-form {
display: none;
position: relative;
padding-left: 8%;
.glyphicon {
position: absolute;
top: 4px;
left: 7%;
cursor: pointer;
z-index: 100;
}
.maker-comment {
margin-top: 5px;
background: #f7f7f7;
}
.popover-content {
height: auto;
overflow: hidden;
background: #f7f7f7;
border-radius: 4px;
border: 0;
padding-top: 4px;
padding-right: 4px;
padding-bottom: 4px;
padding-left: 12%;
}
textarea {
border-width: 1px;
margin-bottom: 5px;
}
}
}
.maker-comment {
width: 100%;
float: none;
padding: 0;
position: relative;
border: 0;
.supporter-thumbnail {
width: 38px;
a {
width: 38px;
height: 38px;
}
}
.content {
padding-left: 43px;
.popover-content {
margin-bottom: 0;
}
}
}
}
a.show-maker-reply {
position: absolute;
bottom: 1px;
right: 0px;
display: block;
cursor: pointer;
color: white;
font-size: 0.8em;
padding: 0.2em 0.4em;
.border_radius(4px 0 4px 0);
}
}
}
.modal.report-product {
.modal-dialog {
.modal-content {
padding: 10px 10px 0 10px;
#product-report {
button.small {
border:none;
background: transparent;
color: #2673b0;
}
}
}
}
}
/*-- WIDGET MODAL --*/
#modal-widget {
.content-modal {
width: 770px;
.modal-body {
overflow: hidden;
height: auto;
hr {
float: left;
width: 100%;
}
}
#configuration-options {
width: 50%;
float: left;
padding-right: 10px;
.tab-content {
.tab-pane {
padding: 10px 0;
.field {
font-size: 12px;
label {
width: 35%;
float: left;
height: 25px;
line-height: 25px;
}
input[type="text"]{
float: right;
width: 65%;
border-width: 1px;
height: 25px;
line-height: 25px;
border-radius: 3px;
.box_shadow(inset 0 1px 1px rgba(0,0,0,0.15));
}
input[type="radio"]{
width: auto;
float: left;
margin: 7px 3px 5px 0;
}
span {
float: left;
height: 25px;
line-height: 25px;
display: inline-block;
}
span + input[type="radio"]{
margin-left: 15px;
}
input[type="checkbox"]{
float: left;
margin: 7px 0;
width: auto;
}
textarea {
width: 65%;
border-width: 1px;
border-radius: 3px;
padding: 2px 10px;
height: 100px;
margin-bottom: 5px;
}
}
}
}
#colors-config {
}
}
#widget-preview {
width: 50%;
padding-left: 10px;
float: left;
#pling-widget {
width: 100%;
padding: 8px;
font-size: 12px;
background-color: @newblue;
.border_radius(8px);
.widget-header {
width: 100%;
margin-bottom: 5px;
h3 {
margin: 0;
font-size: 18px;
margin-bottom: 0 !important;
}
}
.widget-body {
background-color: white;
padding: 5px;
margin-bottom: 5px;
border: 1px solid rgba(68, 68, 68, 0.2);
.border_radius(5px);
.box_shadow(inset 0 1px 4px rgba(0,0,0,0.15));
.product-funding-info {
width: 100%;
position: relative;
.goal-range-number {
width: 100%;
height: 20px;
line-height: 20px;
span {
display: block;
float: left;
}
span + span {
float: right;
&.unlimited {
font-size: 27px;
}
}
}
.achieved-amount {
width: 100%;
height: 20px;
padding: 3px;
background: rgba(204, 204, 204, 0.19);
.border_radius(4px);
.box_shadow(inset 0 1px 1px rgba(0, 0, 0, 0.05));
.bar {
width: 4px;
max-width: 100%;
height: 14px;
background-color: @newblue;
.border_radius(2px);
.box_shadow(inset 0 6px 0 rgba(255, 255, 255, 0.2));
&.no-goal {
width: 50%;
}
}
}
.money-raised {
width: 100%;
height: 20px;
line-height: 20px;
}
&.with-goal {
padding-right:25%;
.percentage {
position: absolute;
top: 0;
right: 0;
width: 25%;
height: 60px;
line-height: 60px;
text-align: center;
font-size: 22px;
}
}
}
.widget-text {
margin-top: 10px;
}
.supporters {
width: 100%;
height: auto;
overflow: hidden;
margin-top: 10px;
.supporter {
width: 12.5%;
height: auto;
float: left;
padding: 2px;
clear: none;
border-bottom: 0;
figure {
width: 100%;
height: auto;
img {
width: 100%;
height: auto;
.border_radius(100%);
}
}
}
}
.comments {
height: auto;
overflow: hidden;
width: 100%;
margin-top: 10px;
.comment {
position: relative;
width: 100%;
min-height: 42px;
padding-left: 15%;
figure {
position: absolute;
top: 0;
left: 0;
width: 15%;
height: auto;
img {
width: 100%;
height: auto;
}
}
.content {
width: 100%;
.info {
width: 100%;
height: 12px;
line-height: 12px;
margin-bottom: 5px;
}
.text {
width: 100%;
font-size: 11px;
line-height: 11px;
}
}
}
.comment + .comment {
margin-top: 5px;
}
}
}
.widget-footer {
width: 100%;
height: auto;
overflow: hidden;
.button {
float: left;
}
.pay-secure {
float: left;
padding-left: 10px;
color: white;
width: 100px;
}
.powered-by {
float: right;
a.pling-logo {
display: block;
background-image: url('../img/new/pling-logo-large.png');
height: 34px;
width: 63px;
background-size: contain;
&.grey {
background-image: url('../img/new/logo.png');
}
&.icon {
width: 34px;
background-image: url('../img/new/box-logo.png');
}
}
}
}
}
}
}
}
/*-- /. MODAL --*/
/*-- CODE EMBED --*/
.code-embed-modal {
.content-modal {
width: 400px;
.modal-body {
textarea {
width: 100%;
border-width: 1px;
height: 100px;
}
}
}
}
/*-- /CODE EMBED --*/
/** /MODALS **/
/**-- SUPPORTER BOX ---------------------------*/
body.body-external {
margin: 0;
padding-top: 0;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
}
.supporter-box-container {
width: 100%;
height: auto;
float: left;
border:1px solid #999999;
.box_sizing();
figure {
float: left;
margin: 0;
padding: 0;
}
div {
float: left;
}
> div {
width: 100%;
height: auto;
padding: 7px;
.box_sizing();
}
.supporter-box-top {
background-color: #e5e5e5;
position: relative;
.title {
float: left;
width: 50%;
> a {
font-size: 16px;
color: #39568c;
text-decoration: none;
.transition();
&:hover {
text-decoration:underline;
color: #428bca;
}
}
}
figure {
position: absolute;
top: 7px;
right: 7px;
width: 102px;
height: 68px;
border:inset 1px #999999;
a {
width: 100%;
height: 100%;
display: block;
overflow: hidden;
img {
width: 100%;
}
}
}
}
.supporter-box-body {
> div {
width: 100%;
float: left;
.box_sizing();
}
.info {
height: 30px;
padding-left: 35px;
position: relative;
margin-bottom: 10px;
> em {
position: absolute;
left: 0;
top: 0;
}
> span {
display: block;
width: 100%;
height: 15px;
line-height: 15px;
font-size: 13px;
float: left;
color: black;
}
span + span {
color: #1e4483;
}
}
.supporters {
width: 102%;
figure {
width: 30px;
height: 30px;
margin: 0px 3.5px 3.5px 0px;
a {
display: block;
width: 100%;
height: 100%;
overflow: hidden;
.border_radius(3px);
img {
width: 100%;
}
}
}
}
}
}
/**-- /SUPPORTER BOX ---------------------------*/
/*------ WIDGET --------------------*/
#configuration-options {
width: 60%;
float: left;
padding-right: 10px;
ul.nav-tabs {
padding: 0;
background-color: white;
li {
a {
padding: 5px;
}
}
}
.tab-content {
.tab-pane {
padding: 10px 0;
textarea {
width: 65%;
border-width: 1px;
border-radius: 3px;
padding: 0 5px;
height: 100px;
margin-bottom: 5px;
.box_shadow(inset 0 1px 1px rgba(0,0,0,0.15));
}
.field {
font-size: 12px;
label {
width: 35%;
float: left;
height: 25px;
line-height: 25px;
}
input[type="text"],
input.color-input {
padding: 0 5px;
float: right;
width: 65%;
border-width: 1px;
height: 25px;
line-height: 25px;
border-radius: 3px;
.box_shadow(inset 0 1px 1px rgba(0,0,0,0.15));
}
input[type="radio"]{
width: auto;
float: left;
margin: 7px 3px 5px 0;
}
span {
float: left;
height: 25px;
line-height: 25px;
display: inline-block;
}
span + input[type="radio"]{
margin-left: 15px;
}
input[type="checkbox"]{
float: left;
margin: 7px 0;
width: auto;
}
}
}
}
#colors-config {
}
}
#pling-widget {
width: 100%;
max-width: 400px;
padding: 8px;
font-size: 12px;
background-color: @newblue;
.border_radius(8px);
.widget-header {
width: 100%;
margin-bottom: 5px;
h3 {
margin: 0;
font-size: 18px;
}
}
.widget-body {
background-color: white;
padding: 5px;
margin-bottom: 5px;
border: 1px solid rgba(68, 68, 68, 0.2);
.border_radius(5px);
.box_shadow(inset 0 1px 4px rgba(0,0,0,0.15));
.donation-amount {
line-height: 34px;
margin: 0 0 5px 0;
overflow: hidden;
.support-with {
width: 25%;
height: 34px;
float: left;
}
.donation-amount-number {
width: 50%;
float: left;
position: relative;
span.glyphicon {
position: absolute;
top: 11px;
left: 0;
}
input[type="text"] {
padding: 0 10px;
float: right;
width: 100%;
border-width: 1px;
height: 24px;
line-height: 24px;
border-radius: 3px;
margin: 5px 0;
border-right: 0;
.box_shadow(inset 0 1px 1px rgba(0,0,0,0.15));
}
}
.button {
width: 25%;
float: right;
button {
float: left;
margin-top: 5px;
padding: 0;
width: 100%;
text-align: center;
height: 24px;
}
}
.payment-providers {
width: 100%;
float: left;
margin: 5px 0;
.pay-with {
width: 25%;
height: 34px;
float: left;
}
.input-group {
width: 37%;
float: left;
display: block;
.input-group-addon {
width: 20%;
float: left;
padding: 8px 16px 4px 0;
border: 0;
background: transparent;
margin-top: 3px;
input[type="radio"] {
width: auto;
}
}
.payment-icon {
width: 70%;
float: left;
height: 34px;
display: block;
img {
max-width: 100%;
height: 20px;
width: auto;
margin-top: 7px;
}
}
}
}
}
.product-funding-info {
width: 100%;
position: relative;
.goal-range-number {
width: 100%;
height: 20px;
line-height: 20px;
display: none;
span {
display: block;
float: left;
}
span + span {
float: right;
&.unlimited {
font-size: 27px;
}
}
}
.achieved-amount {
width: 100%;
height: 20px;
padding: 3px;
background: rgba(204, 204, 204, 0.19);
display: none;
.border_radius(4px);
.box_shadow(inset 0 1px 1px rgba(0, 0, 0, 0.05));
.bar {
width: 4px;
max-width: 100%;
height: 14px;
background-color: @newblue;
.border_radius(2px);
.box_shadow(inset 0 6px 0 rgba(255, 255, 255, 0.2));
&.no-goal {
width: 50%;
}
}
}
.money-raised {
width: 100%;
height: 20px;
line-height: 20px;
}
&.with-goal {
.percentage {
position: absolute;
top: 0;
right: 0;
width: 25%;
height: 60px;
line-height: 60px;
text-align: center;
font-size: 22px;
}
.goal-range-number {
padding-right: 25%;
display: block;
}
.achieved-amount {
width: 75%;
display: block;
}
}
}
.widget-text {
margin-top: 10px;
}
.supporters {
width: 100%;
height: auto;
overflow: hidden;
margin-top: 5px;
padding-top: 5px;
border-top: 1px solid #ddd;
.supporter {
width: 12.5%;
height: auto;
float: left;
padding: 2px;
clear: none;
border-bottom: 0;
figure {
width: 100%;
height: auto;
img {
width: 100%;
height: auto;
}
}
}
}
.comments {
height: auto;
overflow: hidden;
width: 100%;
margin-top: 5px;
padding-top: 5px;
border-top: 1px solid #ddd;
.comment {
position: relative;
width: 100%;
min-height: 42px;
padding-left: 15%;
figure {
position: absolute;
top: 0;
left: 0;
width: 15%;
height: 100%;
text-align: center;
img {
width: auto;
height: 100%;
float: left;
}
}
.content {
width: 100%;
padding-left: 5%;
.info {
width: 100%;
height: 12px;
line-height: 12px;
margin-bottom: 5px;
}
.text {
width: 100%;
font-size: 11px;
line-height: 11px;
}
}
}
.comment + .comment {
margin-top: 5px;
}
}
}
.widget-footer {
width: 100%;
height: auto;
overflow: hidden;
.donation-amount {
padding-bottom: 10px;
color: white;
font-size: 14px;
}
.button {
float: left;
}
.pay-secure {
float: left;
//padding-left: 10px;
color: white;
width: 100px;
a {
color: white;
}
}
.powered-by {
float: right;
a.opendesktop-logo
{
display: block;
background-image: url('/images/system/storeLogo.png');
height: 34px;
width: 63px;
background-size: contain;
background-repeat:no-repeat;
}
a.pling-logo {
display: block;
background-image: url('../img/new/pling-logo-large.png');
height: 34px;
width: 63px;
background-size: contain;
&.grey {
background-image: url('../img/new/logo.png');
}
&.icon {
width: 34px;
background-image: url('../img/new/box-logo.png');
}
}
}
}
}
/** preview area **/
#widget-preview {
width: 40%;
padding-left: 10px;
float: left;
}
/** /preview area **/
/** in modal **/
#widget-code-modal {
width: 800px;
height: auto;
overflow: hidden;
.modal-body {
height: auto;
overflow: hidden;
article {
width: 100%;
float: left;
#configuration-options {
ul.nav-tabs {
float: left;
width: 100%;
background-color: #F3F3F3;
border-bottom: 1px solid #e5e5e5;
position: relative;
top: 0;
li {
border-bottom: 1px solid #e5e5e5;
.transition(0);
a {
margin: 0;
background-color: transparent;
border: 0;
color: @newblue;
border-bottom: 3px solid #f3f3f3;
.transition(0);
}
&.active {
border-color: @newblue;
a {
border-color: @newblue;
}
}
}
}
}
}
}
}
/** /in modal **/
/** in iframe **/
.body-external {
.supporter-box-container {
border: 0;
text-align: center;
#pling-widget {
text-align: left;
float: none;
height: auto;
overflow: hidden;
}
}
}
/** /in iframe **/
/*------ /WIDGET --------------------*/
/***** index-pling *******/
#mainpage
{
background-image: url(/images/system/1-opendesktop-bg.png);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:0px 0px;
background-size: 100% 100%;
width: 100% !important;
margin-top: 15px;
}
#mainpage .wrapper
{
padding-top: 100px;
}
#mainpage .card-wrapper
{
border-radius:10px;
padding:5px;
}
#mainpage .card-wrapper
{
a.title
{
display:block;
}
img.logo
{
height:45px;
margin-right:10px;
margin-bottom:5px;
}
.domainobj
{
margin: 15px;
border-bottom:1px solid #ccc;
}
}
#indeximages
{
height:400px;
width: 100%;
overflow: hidden;
}
#indeximages a
{
cursor: default;
}
.commentstore
{
border-bottom:1px solid #ccd4d8 ;
padding-top: 5px;
padding-bottom: 5px;
overflow: hidden;
p{
margin: 0;
}
.userinfo img
{
border-radius: 50%;
width: 42px;
height: 42px;
float: right;
}
.userinfo
{
float: right;
}
.info
{
display: block;
}
}
.commentstore:last-child
{
border-bottom:none;
}
/*product detail popover*/
div.profile-img-product
{
width: 200px;
height: 160px;
}
img.imgpopover
{
max-width: 200px;
max-height: 160px;
display: block;
margin: auto;
}
/*aboutme tab comments*/
#my-comments-tabs-content {
font-size: 11pt;
width: 100%;
.rownomargin
{
margin:0;
}
.rownopadding
{
padding: 0;
}
.category
{
display: block;
font-size: smaller;
}
.createat
{
font-size: smaller;
color: #888;
}
.productrow
{
padding-bottom: 5px;
padding-top: 5px;
border-bottom: 1px solid #ccd4d8;
font-size: small;
.project-image{
width: 50px;
height: 50px;
float: left;
margin-right: 15px;
}
}
.productrow:last-child {
border-bottom: none;
}
.row
{
margin-top: 10px;
}
.rating
{
width: 80px;
}
.time
{
font-size: smaller;
}
.cntComments
{
font-size: smaller;
display: block;
padding-top: 5px;
}
.productimg
{
width:50px;
height:50px;
}
.commenttext{
padding-left: 20px;
}
}
.user-admin-page
{
.commentText
{
font-size: smaller;
}
.commentTime
{
font-size: smaller;
padding-left: 20px;
}
.title
{
font-weight: bold;
color:#37628D;
padding-top: 10px;
padding-bottom: 10px;
}
.topics{
padding-right: 20px;
.topic-tag
{
display: inline-block;
padding: 0.3em 0.9em;
margin: 0 0.5em 0.5em 0;
white-space: nowrap;
background-color: #f1f8ff;
border-radius: 3px;
}
.usertagslabelcat{
background-color: #f1f1f1;
}
.topic-tag-link
{
&:hover {
text-decoration: none;
background-color: #def;
}
}
.btn-link{
display: inline-block;
padding: 0;
font-size: inherit;
color: #0366d6;
text-decoration: none;
white-space: nowrap;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-color: transparent;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding-bottom:10px;
}
}
.my-downloadshistory-list{
width: 1100px;
.totaldownloads{
margin:0;
padding: 20px;
text-align: right;
}
.smaller{
font-size: smaller;
}
.header{
border-top:1px solid #ccc;
padding-top:15px;
padding-bottom:15px;
}
.subheader{
background-color: #ddd
}
.paddingLeft80{
padding-left: 80px;
}
.marginLeft80{
margin-left: 80px;
}
button.voting{
line-height: 10px;
}
button.voting span{
font-size: 10px;
}
.rating{
width: 80px !important;
font-size: 10pt;
}
.downloadhistory-image{
width: 50px;
height: 50px;
float: left;
margin-right: 15px;
}
.nowrap{
white-space: nowrap;
}
}
}
.col-container
{
span.cnt
{
padding-right: 5px;
display: inline-block;
font-weight: bold;
}
.stat
{
padding-top: 15px;
padding-left: 15px;
font-size: 12px;
}
.info
{
padding-left: 15px;
}
.statContent
{
padding-top: 15px;
padding-left: 15px;
font-size: 12px;
}
}
/** plings **/
main#plings-page{
.wrapper{
width:700px;
padding:20px;
/*max-height: 700px;
overflow: auto;
*/
.title{
background-color:#ccc;
height: 30px;
}
.label{
padding-top: 10px;
padding-left: 0px;
}
.row:not(:first-child):hover{
background-color: #eef;
}
.depth0 {
padding-left: 0px;
}
.depth1 {
padding-left: 20px;
}
.depth2 {
padding-left: 40px;
}
.depth3 {
padding-left: 60px;
}
.depth4 {
padding-left: 80px;
}
.depth5 {
padding-left: 100px;
}
.factor {
padding-right: 10px;
}
}
}
/** plings END**/
/* new look test */
#product-page-content {
.sidebar-left{
padding-right: 15px;
padding-left: 15px;
min-width: 200px;
padding-top: 20px;
}
.tag-element {
background-clip: padding-box;
background-color: #eeeeee;
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
background-repeat: repeat-x;
background-size: 100% 19px;
border: 1px solid #aaa;
border-radius: 3px;
box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
color: #333;
line-height: 25px !important;
margin: 3px 3px 3px 0;
max-width: 100%;
padding: 0 10px;
position: relative;
display: inline-block;
}
}
#carouselContainer{
.carousel-indicators {
z-index: 31;
background-color: transparent;
height: 20px;
bottom: -30px;
& .active{
background-color: #E2E2E2;
}
li{
border: 1px solid #C4D7EF;
}
}
iframe{
border: 0px;
}
}
/*update member page*/
#email-collapse{
.group-list {
list-style: outside none none;
> li:first-child {
border-top: 0 none;
border-top: 1px solid #ddd;
}
> li {
border-bottom: 1px solid #e5e5e5;
display: block;
line-height: 30px;
margin-left: -10px;
padding: 5px 10px;
}
}
.css-truncate-target {
max-width: 300px;
display: inline-block;
text-overflow: ellipsis;
vertical-align: top;
white-space: nowrap;
}
.email-actions {
float: right;
form {
display: inline;
}
}
span.label.default {
background-color: #6cc644;
border-radius: 3px;
color: #fff;
margin-left: 4px;
padding: 4px 6px;
}
span.label.attention {
background-color: #c64f0d;
border-radius: 3px;
color: #fff;
margin-left: 4px;
padding: 4px 6px;
}
.btn {
line-height: 20px;
padding: 4px 12px;
}
}
.user-admin-page
{
.body-wrap{
.well{
min-height: 20px;
padding: 20px;
margin-bottom: 20px;
background-color: transparent;
border: 0px;
border-radius: 0px;
-webkit-box-shadow: inset 0 0px 0px rgba(0,0,0,.05);
box-shadow: inset 0 0px 0px rgba(0,0,0,.05);
}
}
}
.profile-menu{
li{
a{
width: 100%;
}
}
}
// grid layout 19.06
.grid-container{
padding-top: 10px;
.flex-container{
font-size: 10pt !important;
.explore-product-grid{
width: 200px;
padding: 0px;
margin: 20px;
border: 1px solid #dedede;
border-radius: 2px;
margin: 10px 10px 10px 10px;
position: relative;
/*background: url(../img/app-container-bg.png) repeat-x;*/
figure{
/*height: 167px;*/
opacity: 1;
display: block;
transition: .5s ease;
backface-visibility: hidden;
}
.explore-product-image{
/*
max-width: 95%;
height: 167px;
*/
width: 170px;
height: 120px;
}
.explore-product-desc{
background: linear-gradient(#fff, #EDEDED);
padding:0px 10px 5px 10px;
border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px;
}
.explore-product-plings {
padding: 0;
padding-top: 5px;
width: 100px;
margin:0 auto;
font-size: 10px;
.rating {
width: 100%;
}
.progress {
margin-bottom: 10px;
padding: 3px;
opacity:0;
margin-bottom: 0;
height:12px;
opacity:1.0;
background-color: transparent;
box-shadow: none;
padding:2px;
.bar {
width: 4px;
max-width: 100%;
height: 14px;
background-color: #2673b0;
.border_radius(5px);
.box_shadow(inset 0 6px 0 rgba(255,255,255,0.2));
&.no-goal {
width: 50%;
opacity: 0;
}
}
}
.collected {
span {
display: block;
width: 100%;
float: left;
font-size: 12px;
}
}
}
.explore-product-details {
span.version
{
font-size: smaller;
padding-left: 20px;
}
span.title{
display: block;
font-size: smaller;
line-height: 1.5;
}
}
}
}
}
/* mobile settings */
@media (max-width: 400px) {
#explore-content{
.GridFlex{
.sidebar-left{
flex: 0 0 100%;
}
}
}
.metamenu{
height: 100%;
.sitelogo{
display:block;
width:100%;
height:30px;
font-size:20px;
img.logo{
width: 30px;
height: 30px;
}
}
}
}
#ratings-panel{
.bbtn{
display: inline-block;
padding: 6px 12px;
margin-bottom: 0;
font-size: 14px;
font-weight: 400;
line-height: 1.42857143;
text-align: center;
white-space: nowrap;
vertical-align: middle;
-ms-touch-action: manipulation;
touch-action: manipulation;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
background-image: none;
border: 1px solid #adadad;
border-radius: 4px;
margin-right:10px;
}
.activeRating{
border: 2px solid #2673B0;
}
.bbtn:focus{
color: #333;
background-color: transparent;
border-color: #2673B0
}
}
#plings-panel,#likes-panel{
.u-wrap{
float: left;
padding: 0.3em;
border: 0.35em solid #dee0e0;
border-radius: 5px;
height: 14em;
margin-bottom: 1em;
background: white;
width: 115px;
height: 200px;
margin-right: 10px;
-webkit-transition: all 0.2s ease-out;
-moz-transition: all 0.2s ease-out;
-ms-transition: all 0.2s ease-out;
-o-transition: all 0.2s ease-out;
position:relative;
text-align: center;
font-size: small;
img{
width: 100%;
border: 1px solid #dbdbdb;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
div.username{
max-width: 100px;
overflow: hidden;
padding:5px;
}
div.bottom-title{
position: absolute;
right: 2px;
bottom: 0;
}
}
}
.tooltipuserplingscontainer{
.user{
display: block;
float: left;
text-align: center;
width: 60px;
overflow: hidden;
img{
width:40px;
height:40px;
border:1px solid #ccc;
border-radius: 999px;
}
.caption{
display: block;
}
}
}
#affiliates-panel {
.u-wrap {
float: left;
padding: .3em;
border: .35em solid #dee0e0;
border-radius: 5px;
height: 14em;
margin-bottom: 1em;
background: #fff;
width: 115px;
height: 200px;
margin-right: 10px;
-webkit-transition: all .2s ease-out;
-moz-transition: all .2s ease-out;
-ms-transition: all .2s ease-out;
-o-transition: all .2s ease-out;
position: relative;
figure img {
width: 100%;
border: 1px solid #dbdbdb;
-webkit-border-radius: 999px;
-moz-border-radius: 999px;
border-radius: 999px;
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
h3 {
font-size: 13px;
font-weight: 700;
word-wrap: break-word;
line-height: 20px;
height: 20px;
padding: 0;
margin: 0;
}
span.small {
position: absolute;
bottom: 5px;
left:5px;
}
}
}
.containerduplicates
{
background-color:#fff;
min-height:300px;min-width:1000px; max-height:500px; overflow:auto;
.row{
border-bottom:1px solid #ddd;
}
}
/*
* Rating Begin
*/
.rating-label
{
padding: .0em 1em 0em;
color: #fff;
border-radius: .25em;
font-weight: 700;
font-size: 90%;
cursor: pointer;
&-highlight{
border: 1px solid #2185D0;
}
}
#productRelationshipPanel{
.react-autosuggest__inputContainer{
padding-bottom: 10px;
}
.react-autosuggest__suggestions-container--open
{
width: 200px;
}
.react-autosuggest__input
{
width:200px;
padding-left: 20px
}
.suggestionsContainer
{
display: flex;
padding: 3px 5px;
.description{
display: flex;
margin-left: 10px;
text-align: left;
flex-flow: column;
span{
line-height: 20px;
}
span.small{
font-size: small;
}
}
}
}
\ No newline at end of file
diff --git a/httpdocs/theme/react/assets/css/product-browse.css b/httpdocs/theme/react/assets/css/product-browse.css
index a6536d992..539a81806 100644
--- a/httpdocs/theme/react/assets/css/product-browse.css
+++ b/httpdocs/theme/react/assets/css/product-browse.css
@@ -1 +1 @@
-#product-browse{position:relative}#product-browse #product-tag-filter-container{position:absolute;right:0px;top:10px}#product-browse #product-tag-filter-container .product-tag-group-dropdown{width:135px;margin-right:5px;float:left}#product-browse #product-tag-filter-container .product-tag-group-dropdown select{width:100%}#product-browse-container #product-browse-item-list{padding:25px 0;float:left;margin-right:-7px;margin-left:-7px;min-width:100%}#product-browse-container #product-browse-item-list.on-mobile{margin:0}#product-browse-container #product-browse-item-list .product-browse-item-row{width:100%;float:left}#product-browse-container #product-browse-item-list .product-browse-item-row.favorites-row{padding:10px 0;font-size:12px;border-top:1px solid #ccc}#product-browse-container #product-browse-item-list .product-browse-item-row.favorites-row:first-of-type{border-top:0}#product-browse-container #product-browse-item-list .product-browse-item{float:left;margin-bottom:30px;position:relative;padding:0 7px}#product-browse-container #product-browse-item-list .product-browse-item>a{display:block;width:100%;height:auto;text-decoration:none}#product-browse-container #product-browse-item-list .product-browse-item>a:hover{text-decoration:none !important}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars{display:block;width:83px !important;float:left;background-image:url('../img/rating_stars.png');background-position:0px 0px;height:25px !important}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-5{background-position:0 -22px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-10{background-position:0 -44px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-15{background-position:0 -66px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-20{background-position:0 -88px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-25{background-position:0 -110px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-30{background-position:0 -132px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-35{background-position:0 -154px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-40{background-position:0 -176px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-45{background-position:0 -198px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-50{background-position:0 -220px}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image{width:100%;overflow:hidden;box-shadow:1px 1px 2px rgba(0,0,0,0.5);position:relative}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image .product-browse-item-preview-music-player{position:absolute;top:0;left:0}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image img{width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info{font-size:14px;font-weight:bold;overflow:hidden}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info h2{font-size:20px;font-weight:bold;margin-bottom:3px;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;font-size:18px;min-height:22px;margin-top:8px;margin-bottom:4px}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span{width:50%;float:left;display:block;font-weight:normal;color:black;font-size:1.2rem}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span b{color:black;font-weight:normal}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span+span{text-align:right}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info{font-size:14px;padding:5px;float:left;margin-bottom:5px;width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info h2{font-size:16px;font-weight:bold;margin-bottom:3px;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;margin:5px 0;width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info span{width:100%;float:left;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;margin:2px 0}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter{margin-top:3px;font-size:12px;font-weight:400;margin-bottom:5px}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container .glyphicon{width:auto;font-size:15px;color:#c1c1c1;font-weight:normal;margin-right:5px;margin-top:0px}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container .glyphicon.glyphicon-heart{display:none}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container:hover .glyphicon{display:none}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container:hover .glyphicon-heart{display:block ;color:red}#product-browse-container #product-browse-item-list .product-browse-item .info-container{width:100%;float:left}#product-browse-container #product-browse-item-list .product-browse-item .wrapper{width:100%;position:relative}#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures .product-browse-image{border-radius:5px 5px 5px 5px}#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures h2,#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures span{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.comics .product-browse-item-info h2{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.comics .product-browse-item-info .score-container{margin-top:-10px}#product-browse-container #product-browse-item-list .product-browse-item.music *,#product-browse-container #product-browse-item-list .product-browse-item.music-test *{user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}#product-browse-container #product-browse-item-list .product-browse-item.music .product-browse-music-item-info h2,#product-browse-container #product-browse-item-list .product-browse-item.music-test .product-browse-music-item-info h2,#product-browse-container #product-browse-item-list .product-browse-item.music .product-browse-music-item-info span,#product-browse-container #product-browse-item-list .product-browse-item.music-test .product-browse-music-item-info span{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.music-test{height:150px}#product-browse-container #product-browse-item-list .product-browse-item.music-test .wrapper a.product-browse-item-wrapper{display:none}#product-browse-container #product-browse-item-list .product-browse-item.favorites{margin-bottom:0}#product-browse-container #product-browse-item-list .product-browse-item.favorites:first-of-type{border-top:0}#product-browse-container #product-browse-item-list .product-browse-item.favorites span.index{width:8.33333333%;display:block;float:left;text-align:center}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper{width:91.6666667%;display:block;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-image{width:15%;overflow:hidden;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-image img{max-width:100%;height:auto}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info{width:85%;float:left;padding-left:15px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .info-container{width:75%;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .info-container span{width:auto;margin-right:10px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container{float:left;width:25%}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container .rating{width:50%;margin-bottom:10px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container .rating .rating-text{margin-bottom:5px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player{width:100%;position:absolute;top:44px;left:0;z-index:10}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player button{padding:0;background-color:transparent;border:0;outline:none !important}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player{top:-44px;position:absolute;width:100%;left:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .track-counter{padding:5px;height:40px;background-color:rgba(0,0,0,0.5)}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls{float:left;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls span{cursor:pointer}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls svg{font-size:28px;color:white;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;vertical-align:middle}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls svg:hover{color:#31c27c}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .track-counter{float:right;color:white;line-height:30px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls{width:100%;height:100px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .play-icon,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .pause-icon{font-size:60px;top:20px;position:absolute;left:50%;margin-left:-30px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .prev-icon{font-size:50px;position:absolute;top:25px;left:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .next-icon{font-size:50px;position:absolute;top:25px;right:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .track-counter{position:absolute;left:50%;bottom:0;height:27px;background:0;margin-left:-25px;padding:0;width:50px;text-align:center}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .music-player-counter{position:absolute;top:-44px;background-color:rgba(0,0,0,0.7);right:0;display:block;z-index:100000;height:44px;color:white;line-height:35px;padding:5px;display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel{position:absolute;height:44px;width:38px;overflow:hidden;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .play-mode-title{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content{padding:5px;height:100%;position:relative;display:block}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .img-content,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .audio-title,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .progress-bar-content{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content{padding:0px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group{padding:0;margin:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.next-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.audio-lists-btn,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.play-sounds{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.play-btn.play{margin-right:5px;margin-top:3px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.loading{margin-top:2px;margin-left:42px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile{height:auto;position:absolute;top:-44px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-header,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-singer,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-switch,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-cover,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-progress,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-operation{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-toggle{padding:0;display:flex;justify-content:center}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-toggle .play-btn{padding:0 20px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .group.next-audio{display:none;padding-top:6px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .music-player-counter{display:block}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .react-jinke-music-player-main .music-player-panel{width:110px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .group.next-audio{display:block !important}#product-browse-container #product-browse-pagination{text-align:center;clear:both}#product-browse-container #product-browse-pagination ul{display:table;margin:10px auto;padding:0;list-style-type:none}#product-browse-container #product-browse-pagination ul li{float:left}#product-browse-container #product-browse-pagination ul li a,#product-browse-container #product-browse-pagination ul li span.no-link{display:block;padding:5px 4px;cursor:pointer}
\ No newline at end of file
+#product-browse{position:relative}#product-browse #product-tag-filter-container{position:absolute;right:0px;top:10px}#product-browse #product-tag-filter-container .product-tag-group-dropdown{width:135px;margin-right:5px;float:left}#product-browse #product-tag-filter-container .product-tag-group-dropdown select{width:100%}#product-browse-container #product-browse-item-list{padding:25px 0;float:left;margin-right:-7px;margin-left:-7px;min-width:100%}#product-browse-container #product-browse-item-list.on-mobile{margin:0}#product-browse-container #product-browse-item-list .product-browse-item-row{width:100%;float:left}#product-browse-container #product-browse-item-list .product-browse-item-row.favorites-row{padding:10px 0;font-size:12px;border-top:1px solid #ccc}#product-browse-container #product-browse-item-list .product-browse-item-row.favorites-row:first-of-type{border-top:0}#product-browse-container #product-browse-item-list .product-browse-item{float:left;margin-bottom:30px;position:relative;padding:0 7px}#product-browse-container #product-browse-item-list .product-browse-item>a{display:block;width:100%;height:auto;text-decoration:none}#product-browse-container #product-browse-item-list .product-browse-item>a:hover{text-decoration:none !important}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars{display:block;width:83px !important;float:left;background-image:url('../img/rating_stars.png');background-position:0px 0px;height:25px !important}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-5{background-position:0 -22px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-10{background-position:0 -44px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-15{background-position:0 -66px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-20{background-position:0 -88px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-25{background-position:0 -110px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-30{background-position:0 -132px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-35{background-position:0 -154px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-40{background-position:0 -176px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-45{background-position:0 -198px}#product-browse-container #product-browse-item-list .product-browse-item .product-score-stars.stars-50{background-position:0 -220px}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image{width:100%;overflow:hidden;box-shadow:1px 1px 2px rgba(0,0,0,0.5);position:relative}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image .product-browse-item-preview-music-player{position:absolute;top:0;left:0}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-image img{width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info{font-size:14px;font-weight:bold;overflow:hidden}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info h2{font-size:20px;font-weight:bold;margin-bottom:3px;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;font-size:18px;min-height:22px;margin-top:8px;margin-bottom:4px}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span{width:50%;float:left;display:block;font-weight:normal;color:black;font-size:1.2rem}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span b{color:black;font-weight:normal}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-item-info span+span{text-align:right}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info{font-size:14px;padding:5px;float:left;margin-bottom:5px;width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info h2{font-size:16px;font-weight:bold;margin-bottom:3px;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;margin:5px 0;width:100%}#product-browse-container #product-browse-item-list .product-browse-item .product-browse-music-item-info span{width:100%;float:left;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;margin:2px 0}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter{margin-top:3px;font-size:12px;font-weight:400;margin-bottom:5px}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container .glyphicon{width:auto;font-size:15px;color:#c1c1c1;font-weight:normal;margin-right:5px;margin-top:0px}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container .glyphicon.glyphicon-heart{display:none}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container:hover .glyphicon{display:none}#product-browse-container #product-browse-item-list .product-browse-item .likes-counter .hearts-container:hover .glyphicon-heart{display:block ;color:red}#product-browse-container #product-browse-item-list .product-browse-item .info-container{width:100%;float:left}#product-browse-container #product-browse-item-list .product-browse-item .wrapper{width:100%;position:relative}#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures .product-browse-image{border-radius:5px 5px 5px 5px}#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures h2,#product-browse-container #product-browse-item-list .product-browse-item.phone-pictures span{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.comics .product-browse-item-info h2{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.comics .product-browse-item-info .score-container{margin-top:-10px}#product-browse-container #product-browse-item-list .product-browse-item.music *,#product-browse-container #product-browse-item-list .product-browse-item.music-test *{user-select:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}#product-browse-container #product-browse-item-list .product-browse-item.music .product-browse-music-item-info h2,#product-browse-container #product-browse-item-list .product-browse-item.music-test .product-browse-music-item-info h2,#product-browse-container #product-browse-item-list .product-browse-item.music .product-browse-music-item-info span,#product-browse-container #product-browse-item-list .product-browse-item.music-test .product-browse-music-item-info span{font-size:13px;line-height:14px;font-weight:400}#product-browse-container #product-browse-item-list .product-browse-item.music-test{height:150px}#product-browse-container #product-browse-item-list .product-browse-item.music-test .wrapper a.product-browse-item-wrapper{display:none}#product-browse-container #product-browse-item-list .product-browse-item.favorites{margin-bottom:0}#product-browse-container #product-browse-item-list .product-browse-item.favorites:first-of-type{border-top:0}#product-browse-container #product-browse-item-list .product-browse-item.favorites span.index{width:8.33333333%;display:block;float:left;text-align:center}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper{width:91.6666667%;display:block;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-image{width:15%;overflow:hidden;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-image img{max-width:100%;height:auto}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info{width:85%;float:left;padding-left:15px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .info-container{width:75%;float:left}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .info-container span{width:auto;margin-right:10px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container{float:left;width:25%}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container .rating{width:50%;margin-bottom:10px}#product-browse-container #product-browse-item-list .product-browse-item.favorites .product-browse-item-wrapper .product-browse-item-info .score-container .rating .rating-text{margin-bottom:5px}#product-browse-container #product-browse-item-list .product-browse-item.books .wrapper{overflow:hidden;box-shadow:1px 1px 2px rgba(0,0,0,0.5);position:relative}#product-browse-container #product-browse-item-list .product-browse-item.books .wrapper .product-browse-image{box-shadow:none}#product-browse-container #product-browse-item-list .product-browse-item.books .wrapper .product-browse-item-info{padding:5px;height:100px}#product-browse-container #product-browse-item-list .product-browse-item.books .wrapper .product-browse-item-info>span{width:100%}#product-browse-container #product-browse-item-list .product-browse-item.books .wrapper .likes-counter{margin-top:3px;font-size:12px;font-weight:400;margin-bottom:5px;position:absolute;left:5px;bottom:5px;width:100%}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player{width:100%;position:absolute;top:44px;left:0;z-index:10}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player button{padding:0;background-color:transparent;border:0;outline:none !important}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player{top:-44px;position:absolute;width:100%;left:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .track-counter{padding:5px;height:40px;background-color:rgba(0,0,0,0.5)}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls{float:left;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls span{cursor:pointer}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls svg{font-size:28px;color:white;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out;vertical-align:middle}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .audio-player-controls svg:hover{color:#31c27c}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .player .track-counter{float:right;color:white;line-height:30px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls{width:100%;height:100px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .play-icon,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .pause-icon{font-size:60px;top:20px;position:absolute;left:50%;margin-left:-30px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .prev-icon{font-size:50px;position:absolute;top:25px;left:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .audio-player-controls .next-icon{font-size:50px;position:absolute;top:25px;right:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.mobile .player .player-interface .track-counter{position:absolute;left:50%;bottom:0;height:27px;background:0;margin-left:-25px;padding:0;width:50px;text-align:center}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .music-player-counter{position:absolute;top:-44px;background-color:rgba(0,0,0,0.7);right:0;display:block;z-index:100000;height:44px;color:white;line-height:35px;padding:5px;display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel{position:absolute;height:44px;width:38px;overflow:hidden;-webkit-transition:all .2s ease-out;-moz-transition:all .2s ease-out;-o-transition:all .2s ease-out;transition:all .2s ease-out}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .play-mode-title{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content{padding:5px;height:100%;position:relative;display:block}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .img-content,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .audio-title,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .progress-bar-content{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content{padding:0px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group{padding:0;margin:0}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.next-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.audio-lists-btn,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.play-sounds{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.play-btn.play{margin-right:5px;margin-top:3px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-main .music-player-panel .panel-content .player-content .group.loading{margin-top:2px;margin-left:42px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile{height:auto;position:absolute;top:-44px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-header,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-singer,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-switch,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-cover,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-progress,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-operation{display:none}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-toggle{padding:0;display:flex;justify-content:center}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .react-jinke-music-player-mobile-toggle .play-btn{padding:0 20px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player .react-jinke-music-player-mobile .group.next-audio{display:none;padding-top:6px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .music-player-counter{display:block}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .react-jinke-music-player-main .music-player-panel{width:110px}#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .group.prev-audio,#product-browse-container #product-browse-item-list .product-browse-item-preview-music-player.show-controls .group.next-audio{display:block !important}#product-browse-container #product-browse-pagination{text-align:center;clear:both}#product-browse-container #product-browse-pagination ul{display:table;margin:10px auto;padding:0;list-style-type:none}#product-browse-container #product-browse-pagination ul li{float:left}#product-browse-container #product-browse-pagination ul li a,#product-browse-container #product-browse-pagination ul li span.no-link{display:block;padding:5px 4px;cursor:pointer}
\ No newline at end of file
diff --git a/httpdocs/theme/react/assets/less/product-browse.less b/httpdocs/theme/react/assets/less/product-browse.less
index 7eccd409f..3722e8d49 100644
--- a/httpdocs/theme/react/assets/less/product-browse.less
+++ b/httpdocs/theme/react/assets/less/product-browse.less
@@ -1,601 +1,633 @@
// out: ../css/product-browse.css, sourcemap: true, compress: true
@import "elements.less";
#product-browse {
position: relative;
#product-tag-filter-container {
position: absolute;
right: 0px;
top: 10px;
.product-tag-group-dropdown {
width: 135px;
margin-right: 5px;
float: left;
select {
width:100%;
}
}
}
}
#product-browse-container {
#product-browse-item-list {
padding: 25px 0;
float: left;
margin-right: -7px;
margin-left: -7px;
min-width: 100%;
&.on-mobile {
margin: 0;
}
.product-browse-item-row {
width: 100%;
float: left;
&.favorites-row {
padding: 10px 0;
font-size: 12px;
border-top: 1px solid #ccc;
&:first-of-type {
border-top: 0;
}
}
}
.product-browse-item {
float:left;
margin-bottom:30px;
position: relative;
padding: 0 7px;
> a {
display: block;
width:100%;
height:auto;
text-decoration: none;
&:hover {
text-decoration: none !important;
}
}
.product-score-stars {
display: block;
width:83px !important;
float: left;
background-image: url('../img/rating_stars.png');
background-position: 0px 0px;
height: 25px !important;
&.stars-5 {
background-position: 0px -22px;
}
&.stars-10 {
background-position: 0px -44px;
}
&.stars-15 {
background-position: 0px -66px;
}
&.stars-20 {
background-position: 0px -88px;
}
&.stars-25 {
background-position: 0px -110px;
}
&.stars-30 {
background-position: 0px -132px;
}
&.stars-35 {
background-position: 0px -154px;
}
&.stars-40 {
background-position: 0px -176px;
}
&.stars-45 {
background-position: 0px -198px;
}
&.stars-50 {
background-position: 0px -220px;
}
}
.product-browse-image {
width: 100%;
overflow: hidden;
box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
position: relative;
.product-browse-item-preview-music-player {
position: absolute;
top:0;
left:0;
}
img {
width: 100%;
}
}
.product-browse-item-info {
font-size:14px;
font-weight: bold;
overflow: hidden;
h2 {
font-size: 20px;
font-weight: bold;
margin-bottom: 3px;
white-space: nowrap;
overflow: hidden;
display: block;
text-overflow: ellipsis;
font-size: 18px;
min-height: 22px;
margin-top: 8px;
margin-bottom: 4px;
}
span {
width: 50%;
float: left;
display: block;
font-weight: normal;
color: black;
font-size: 1.2rem;
b {
color:black;
font-weight: normal;
}
}
span + span {
text-align: right;
}
}
.product-browse-music-item-info {
font-size: 14px;
padding: 5px;
float: left;
margin-bottom: 5px;
width:100%;
h2 {
font-size: 16px;
font-weight: bold;
margin-bottom: 3px;
white-space: nowrap;
overflow: hidden;
display: block;
text-overflow: ellipsis;
margin: 5px 0;
width:100%;
}
span {
width: 100%;
float: left;
white-space: nowrap;
overflow: hidden;
display: block;
text-overflow: ellipsis;
margin: 2px 0;
}
}
.likes-counter {
margin-top: 3px;
font-size: 12px;
font-weight: 400;
margin-bottom: 5px;
.hearts-container {
.glyphicon {
width: auto;
font-size: 15px;
color: #c1c1c1;
font-weight: normal;
margin-right: 5px;
margin-top: 0px;
&.glyphicon-heart {
display: none;
}
}
&:hover {
.glyphicon {
display: none;
}
.glyphicon-heart {
display: block ;
color:red;
}
}
}
}
.info-container {
width:100%;
float:left;
}
.wrapper {
width:100%;
position: relative;
}
&.phone-pictures {
.product-browse-image {
border-radius: 5px 5px 5px 5px;
}
h2, span {
font-size: 13px;
line-height: 14px;
font-weight: 400;
}
}
&.comics {
.product-browse-item-info {
h2 {
font-size: 13px;
line-height: 14px;
font-weight: 400;
}
.score-container {
margin-top: -10px;
}
}
}
&.music, &.music-test {
* {
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
}
.product-browse-music-item-info {
h2, span {
font-size: 13px;
line-height: 14px;
font-weight: 400;
}
}
}
&.music-test {
height: 150px;
.wrapper {
a.product-browse-item-wrapper {
display: none;
}
}
}
&.favorites {
margin-bottom: 0;
&:first-of-type {
border-top: 0;
}
span.index {
width: 8.33333333%;
display: block;
float: left;
text-align: center;
}
.product-browse-item-wrapper {
width: 91.6666667%;
display: block;
float: left;
.product-browse-image {
width:15%;
overflow: hidden;
float: left;
img {
max-width: 100%;
height: auto;
}
}
.product-browse-item-info {
width: 85%;
float: left;
padding-left:15px;
.info-container {
width: 75%;
float: left;
span {
width: auto;
margin-right:10px;
}
}
.score-container {
float: left;
width:25%;
.rating {
width:50%;
margin-bottom: 10px;
.rating-text {
margin-bottom: 5px;
}
}
}
}
}
}
+
+ &.books {
+ .wrapper {
+ overflow: hidden;
+ box-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+ position: relative;
+
+ .product-browse-image {
+ box-shadow: none;
+ }
+
+ .product-browse-item-info {
+ padding: 5px;
+ height: 100px;
+
+ > span {
+ width: 100%;
+ }
+ }
+
+ .likes-counter {
+ margin-top: 3px;
+ font-size: 12px;
+ font-weight: 400;
+ margin-bottom: 5px;
+ position: absolute;
+ left: 5px;
+ bottom: 5px;
+ width: 100%;
+ }
+ }
+ }
}
.product-browse-item-preview-music-player {
width:100%;
position: absolute;
top: 44px;
left: 0;
z-index: 10;
button {
padding: 0;
background-color: transparent;
border: 0;
outline: none !important;
}
.player {
top: -44px;
position: absolute;
width:100%;
left: 0;
.audio-player-controls, .track-counter {
padding: 5px;
height: 40px;
background-color: rgba(0,0,0,0.5);
}
.audio-player-controls {
float: left;
.transition();
span {
cursor: pointer;
}
svg {
font-size: 28px;
color:white;
.transition();
vertical-align: middle;
&:hover {
color: #31c27c;
}
}
}
.track-counter {
float: right;
color: white;
line-height: 30px;
}
}
&.mobile {
.player {
.player-interface {
.audio-player-controls {
width:100%;
height:100px;
.play-icon,
.pause-icon {
font-size: 60px;
top: 20px;
position: absolute;
left: 50%;
margin-left: -30px;
}
.prev-icon {
font-size: 50px;
position: absolute;
top: 25px;
left: 0;
}
.next-icon {
font-size: 50px;
position: absolute;
top: 25px;
right: 0;
}
}
.track-counter {
position: absolute;
left: 50%;
bottom: 0;
height: 27px;
background: 0;
margin-left: -25px;
padding: 0;
width: 50px;
text-align: center;
}
}
}
}
.music-player-counter {
position: absolute;
top: -44px;
background-color: rgba(0, 0, 0, 0.7);
right: 0;
display: block;
z-index: 100000;
height: 44px;
color: white;
line-height: 35px;
padding: 5px;
display: none;
}
.react-jinke-music-player-main .music-player-panel {
position: absolute;
height: 44px;
width: 38px;
overflow: hidden;
.transition();
.play-mode-title {
display: none;
}
.panel-content {
padding:5px;
height: 100%;
position: relative;
display: block;
.img-content,
.audio-title,
.progress-bar-content {
display: none;
}
.player-content {
padding:0px;
.group {
padding:0;
margin:0;
&.prev-audio,
&.next-audio,
&.audio-lists-btn,
&.play-sounds {
display: none;
}
&.play-btn.play {
margin-right:5px;
margin-top: 3px;
}
&.loading {
margin-top: 2px;
margin-left: 42px;
}
}
}
}
}
.react-jinke-music-player-mobile {
height: auto;
position: absolute;
top: -44px;
.react-jinke-music-player-mobile-header,
.react-jinke-music-player-mobile-singer,
.react-jinke-music-player-mobile-switch,
.react-jinke-music-player-mobile-cover,
.react-jinke-music-player-mobile-progress,
.react-jinke-music-player-mobile-operation {
display: none;
}
.react-jinke-music-player-mobile-toggle {
padding: 0;
display: flex;
justify-content: center;
.play-btn {
padding:0 20px;
}
}
.group.prev-audio,
.group.next-audio {
display: none;
padding-top: 6px;
}
}
&.show-controls {
.music-player-counter {
display: block;
}
.react-jinke-music-player-main .music-player-panel {
width:110px;
}
.group {
&.prev-audio,
&.next-audio {
display: block !important;
}
}
}
}
}
#product-browse-pagination {
text-align: center;
clear: both;
ul {
display: table;
margin: 10px auto;
padding: 0;
list-style-type: none;
li {
float: left;
a, span.no-link {
display: block;
padding: 5px 4px;
cursor: pointer;
}
}
}
}
}
\ No newline at end of file
diff --git a/httpdocs/theme/react/product-browse/app/product-browse-helpers.js b/httpdocs/theme/react/product-browse/app/product-browse-helpers.js
index 2e829b0ba..16e5e0321 100644
--- a/httpdocs/theme/react/product-browse/app/product-browse-helpers.js
+++ b/httpdocs/theme/react/product-browse/app/product-browse-helpers.js
@@ -1,110 +1,115 @@
export function getNumberOfItemsPerRow(browseListType,isMobile,containerWidth){
let itemsPerRow;
if (isMobile) itemsPerRow = 2;
else {
if (browseListType === "music" || browseListType === "music-test") itemsPerRow = getAdujustItemsPerRow(7,containerWidth,160 + 14)
+ else if (browseListType === "books") itemsPerRow = getAdujustItemsPerRow(6,containerWidth,180 + 14)
else if (browseListType === "apps") itemsPerRow = getAdujustItemsPerRow(7,containerWidth,160 + 14)
else if (browseListType === "comics") itemsPerRow = getAdujustItemsPerRow(7,containerWidth,160 + 14)
else if (browseListType === "phone-pictures") itemsPerRow = getAdujustItemsPerRow(5,containerWidth,210)
else if (browseListType === "favorites" ) itemsPerRow = getAdujustItemsPerRow(1,containerWidth,containerWidth - 1);
else itemsPerRow = getAdujustItemsPerRow(3,containerWidth,250 + 14)
}
return itemsPerRow;
}
function getAdujustItemsPerRow(itemsPerRow,containerWidth,minWidth){
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
else {
itemsPerRow = itemsPerRow - 1;
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
else {
itemsPerRow = itemsPerRow - 1;
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
else {
itemsPerRow = itemsPerRow - 1;
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
else {
itemsPerRow = itemsPerRow - 1;
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
else {
itemsPerRow = itemsPerRow - 1;
if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;
}
}
}
}
}
}
export function chunkArray(myArray, chunk_size){
var index = 0;
var arrayLength = myArray.length;
var tempArray = [];
for (index = 0; index < arrayLength; index += chunk_size) {
const myChunk = myArray.slice(index, index+chunk_size);
// Do something if you want with the group
tempArray.push(myChunk);
}
return tempArray;
}
export function getItemWidth(browseListType,containerWidth,itemsInRow){
let itemWidth;
if (browseListType === "music" || browseListType === "music-test") itemWidth = 160 + 14;
else if (browseListType === "apps") itemWidth = 160 + 14;
else if (browseListType === "comics") itemWidth = 160 + 14;
+ else if (browseListType === "books") itemWidth = 180 + 14;
else itemWidth = containerWidth / itemsInRow;
return itemWidth;
}
export function getImageHeight(browseListType,itemWidth){
let itemHeightDivider, imgHeight;
itemWidth = itemWidth - 14;
if (browseListType === "music" || browseListType === "music-test"){
imgHeight = 155;
}
else if (browseListType === "apps"){
imgHeight = 155;
}
else if (browseListType === "phone-pictures"){
itemHeightDivider = .5;
imgHeight = itemWidth / itemHeightDivider;
}
else if (browseListType === "comics"){
imgHeight = 220;
}
+ else if (browseListType === "books"){
+ imgHeight = 220;
+ }
else if (browseListType === "favorites"){
imgHeight = 167;
}
else {
itemHeightDivider = 1.85;
imgHeight = itemWidth / itemHeightDivider;
}
return imgHeight;
}
export function getImageUrl(p,itemWidth,imgHeight){
let imgUrl = "";
if (p.image_small && p.image_small.indexOf('https://') > -1 || p.image_small && p.image_small.indexOf('http://') > -1 ) imgUrl = p.image_small;
else {
imgUrl = json_server_images;
imgUrl += "/cache/" + Math.ceil(itemWidth * 2) + "x" + Math.ceil(imgHeight * 2) + "/img/" + p.image_small;
}
return imgUrl;
}
export function ConvertObjectToArray(object,key){
let newArray = [];
for (var i in object){
const newObject = {
tag:object[i],
id:i
}
newArray.push(newObject);
}
return newArray;
}
\ No newline at end of file
diff --git a/httpdocs/theme/react/product-browse/app/product-browse-item.js b/httpdocs/theme/react/product-browse/app/product-browse-item.js
index 57cb410e8..f593690b8 100644
--- a/httpdocs/theme/react/product-browse/app/product-browse-item.js
+++ b/httpdocs/theme/react/product-browse/app/product-browse-item.js
@@ -1,405 +1,407 @@
import React, { useState } from 'react';
import { isMobile } from 'react-device-detect';
import { getImageUrl } from './product-browse-helpers';
export function ProductBrowseItem(props){
const p = props.product;
const [ productFilesFetched, setProductFilesFetched ] = useState(false);
const [ productFiles, setProductFiles ] = useState();
const [ imgUrl, setImgUrl ] = useState(getImageUrl(p,props.itemWidth,props.imgHeight));
- console.log(browseListType);
-
- if (window.location.search === "?index=7") {
- window.browseListType === "favorites";
- browseListType = "favorites";
- }
-
React.useEffect(() => {
if (browseListType === "music" && productFilesFetched === false ||browseListType === "music-test" && productFilesFetched === false) onMusicProductLoad()
},[])
function onMusicProductLoad(){
setProductFilesFetched(true);
const ajaxUrl = window.location.origin + "/p/"+p.project_id+"/loadfilesjson";
$.ajax({
url: ajaxUrl
}).done(function(res) {
let newProductFiles = [];
res.forEach(function(f,index){
if ( f.type.split('/')[0] === "audio" || f.type.split('/')[1] === "ogg"){
let nf = f;
nf.musicSrc = f.url.replace(/%2F/g,'/').replace(/%3A/g,':');
nf.cover = imgUrl;
newProductFiles.push(nf);
}
});
setProductFiles(newProductFiles);
});
}
function onImageLoadError(){
const ajaxUrl = window.location.origin + "/p/"+p.project_id+"/loadfilesjson";
$.ajax({
url: ajaxUrl
}).done(function(res) {
let newImgUrl;
res.forEach(function(f,index){
if ( f.type.split('/')[0] === "image"){
newImgUrl = f.url.replace(/%2F/g,'/').replace(/%3A/g,':');
}
});
if (!newImgUrl){
newImgUrl = "https://cn.opendesktop.";
newImgUrl += window.location.host.endsWith('org') === true || window.location.host.endsWith('com') === true ? "org" : "cc";
newImgUrl += "/cache/" + Math.ceil(props.itemWidth * 2) + "x" + Math.ceil(props.imgHeight * 2) + "/img/default.png";
}
setImgUrl(newImgUrl);
});
}
const productBrowseItemLikesDislpay = (
({p.count_follower}) Likes
)
let itemInfoDisplay,
musicItemInfoDisplay,
musicPlayerDisplay,
showIndex,
itemInfoHeight;
if (browseListType === "picture") {
itemInfoDisplay = (
{p.title}
{p.cat_title}
by {p.username}
)
} else if (browseListType === "apps") {
itemInfoDisplay = (
{p.title}
{p.cat_title}
by {p.username}
)
}
else if (browseListType === "phone-pictures"){
itemInfoDisplay = (
{p.title}
)
}
else if (browseListType === "comics"){
itemInfoDisplay = (
{p.title}
{productBrowseItemLikesDislpay}
)
}
+ else if (browseListType === "books"){
+ itemInfoDisplay = (
+
+
{p.title}
+ {p.username}
+ {productBrowseItemLikesDislpay}
+
+ )
+ }
else if (browseListType === "music" || browseListType === "music-test"){
musicItemInfoDisplay = (
{p.title}
{productBrowseItemLikesDislpay}
{p.cat_title}
by {p.username}
);
if (productFiles && productFiles.length > 0){
musicPlayerDisplay = (
)
}
}
else if (browseListType === "videos"){
itemInfoDisplay = (
{p.title}
{productBrowseItemLikesDislpay}
{p.cat_title}
by {p.username}
)
}
else if (browseListType === "favorites"){
itemInfoHeight = props.imgHeight;
showIndex = true;
itemInfoDisplay = (
{p.title}
{p.cat_title}
by {p.username}
Score {p.laplace_score / 10}%
{p.created_at}
)
}
let indexDisplay;
if (showIndex === true){
indexDisplay = (
{props.rowIndex + 1}
)
}
let itemLink = json_serverUrl;
itemLink = is_show_real_domain_as_url === 1 ? "/" : "/s/" + json_store_name + "/";
itemLink += p.type_id === "3" ? "c" : "p";
itemLink += "/" + p.project_id;
return (
)
}
function ProductBrowseItemPreviewMusicPlayerTwo(props){
const [ productFiles, setProductFiles ] = useState(props.productFiles)
console.log('files:');
console.log(productFiles);
const [ showAudioControls, setShowAudioControls ] = useState(false);
const [ playIndex, setPlayIndex ] = useState(0);
let initialPLayedAudioArray = [];
if (productFiles){
productFiles.forEach(function(i,index){
const pa = {
...i,
played:0,
stopped:0
}
initialPLayedAudioArray.push(pa);
})
}
const [ playedAudioArray, setPlayedAudioArray ] = useState(initialPLayedAudioArray);
const [ isPlaying, setIsPlaying ] = useState(false);
const [ isPaused, setIsPaused ] = useState(false);
function onPlayClick(pIndex){
const playerElement = document.getElementById("product-browse-music-player-"+props.projectId).getElementsByTagName('audio');
let currentSrc;
if (isPaused === false) {
currentSrc = productFiles[pIndex].musicSrc;
playerElement[0].src = currentSrc;
}
playerElement[0].play();
setShowAudioControls(true);
setIsPlaying(true);
setIsPaused(false);
onReportAudioPlay(currentSrc);
}
function onPauseClick(){
const playerElement = document.getElementById("product-browse-music-player-"+props.projectId).getElementsByTagName('audio');
playerElement[0].pause();
setShowAudioControls(false);
setIsPlaying(false);
setIsPaused(true);
onReportAudioStop(productFiles[playIndex].musicSrc)
}
function onPrevTrackPlayClick(){
let prevTrackIndex;
if (playIndex === 0){
prevTrackIndex = productFiles.length - 1;
} else {
prevTrackIndex = playIndex - 1;
}
setPlayIndex(prevTrackIndex);
onPlayClick(prevTrackIndex);
}
function onNextTrackPlayClick(){
let nextTrackIndex;
if (playIndex + 1 === productFiles.length){
nextTrackIndex = 0;
} else {
nextTrackIndex = playIndex + 1;
}
setPlayIndex(nextTrackIndex);
onPlayClick(nextTrackIndex);
}
function onReportAudioPlay(src){
const audioItem = playedAudioArray.find((i => i.musicSrc === src));
const audioItemIndex = playedAudioArray.findIndex((i => i.musicSrc === src));
const newAudioItem = {
...audioItem,
played:audioItem.played + 1
}
const newPLayedAudioArray = [
...playedAudioArray.slice(0,audioItemIndex),
newAudioItem,
...playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)
];
setPlayedAudioArray(newPLayedAudioArray);
if (playedAudioArray[audioItemIndex].played === 0){
const audioStartUrl = window.location.href + "/p/" + props.projectId + "/" + 'startmediaviewajax?collection_id='+audioItem.collection_id+'&file_id='+audioItem.id+'&type_id=2';
$.ajax({url: audioStartUrl}).done(function(res) {
const newAudioItem = {
...audioItem,
mediaViewId:res.MediaViewId,
played:audioItem.played + 1
}
const newPLayedAudioArray = [
...playedAudioArray.slice(0,audioItemIndex),
newAudioItem,
...playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)
];
setPlayedAudioArray(newPLayedAudioArray);
});
}
}
function onReportAudioStop(src){
const audioItem = playedAudioArray.find((i => i.musicSrc === src));
const audioItemIndex = playedAudioArray.findIndex((i => i.musicSrc === src));
const newAudioItem = {
...audioItem,
stopped:audioItem.stopped + 1
}
const newPLayedAudioArray = [
...playedAudioArray.slice(0,audioItemIndex),
newAudioItem,
...playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)
];
setPlayedAudioArray(newPLayedAudioArray);
// console.log('stppped - ' + playedAudioArray[audioItemIndex].stopped)
if (playedAudioArray[audioItemIndex].stopped === 0){
const audioStopUrl = window.location.href + "/p/" + props.projectId + "/" + "stopmediaviewajax?media_view_id=" + playedAudioArray[audioItemIndex].mediaViewId;
$.ajax({url: audioStopUrl}).done(function(res) {
});
}
}
let musicPlayerDisplay;
if (productFiles) {
const playButtonElement = (
)
const pauseButtonElement = (
)
const prevButtonElement = (
)
const nextButtonElement = (
)
let prevDisplay, nextDisplay;
if (productFiles.length > 1 && showAudioControls){
prevDisplay = onPrevTrackPlayClick()}>{prevButtonElement}
nextDisplay = onNextTrackPlayClick()}>{nextButtonElement}
}
let playButtonDisplay;
if (isPlaying === true) playButtonDisplay = onPauseClick()}>{pauseButtonElement}
else playButtonDisplay = onPlayClick(playIndex)}>{playButtonElement}
let trackCounterDisplay;
if (showAudioControls === true){
trackCounterDisplay = (
{playIndex + 1}/{productFiles.length}
)
}
musicPlayerDisplay = (
{prevDisplay}
{playButtonDisplay}
{nextDisplay}
{trackCounterDisplay}
)
}
let showControlsCssClass = "";
if (showAudioControls === true) showControlsCssClass = " show-controls"
let isMobileCssClass = "";
if (isMobile === true) isMobileCssClass = " mobile";
return (
{musicPlayerDisplay}
)
}
export default ProductBrowseItem;
\ No newline at end of file
diff --git a/httpdocs/theme/react/product-browse/product-browse.js b/httpdocs/theme/react/product-browse/product-browse.js
index 08aa7d0d7..aa222d563 100644
--- a/httpdocs/theme/react/product-browse/product-browse.js
+++ b/httpdocs/theme/react/product-browse/product-browse.js
@@ -1,279 +1,279 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./app/product-browse.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./app/product-browse-helpers.js":
/*!***************************************!*\
!*** ./app/product-browse-helpers.js ***!
\***************************************/
/*! exports provided: getNumberOfItemsPerRow, chunkArray, getItemWidth, getImageHeight, getImageUrl, ConvertObjectToArray */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNumberOfItemsPerRow\", function() { return getNumberOfItemsPerRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chunkArray\", function() { return chunkArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getItemWidth\", function() { return getItemWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageHeight\", function() { return getImageHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageUrl\", function() { return getImageUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConvertObjectToArray\", function() { return ConvertObjectToArray; });\nfunction getNumberOfItemsPerRow(browseListType, isMobile, containerWidth) {\n var itemsPerRow;\n if (isMobile) itemsPerRow = 2;else {\n if (browseListType === \"music\" || browseListType === \"music-test\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"apps\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"comics\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"phone-pictures\") itemsPerRow = getAdujustItemsPerRow(5, containerWidth, 210);else if (browseListType === \"favorites\") itemsPerRow = getAdujustItemsPerRow(1, containerWidth, containerWidth - 1);else itemsPerRow = getAdujustItemsPerRow(3, containerWidth, 250 + 14);\n }\n return itemsPerRow;\n}\n\nfunction getAdujustItemsPerRow(itemsPerRow, containerWidth, minWidth) {\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;\n }\n }\n }\n }\n }\n}\n\nfunction chunkArray(myArray, chunk_size) {\n var index = 0;\n var arrayLength = myArray.length;\n var tempArray = [];\n\n for (index = 0; index < arrayLength; index += chunk_size) {\n var myChunk = myArray.slice(index, index + chunk_size); // Do something if you want with the group\n\n tempArray.push(myChunk);\n }\n\n return tempArray;\n}\nfunction getItemWidth(browseListType, containerWidth, itemsInRow) {\n var itemWidth;\n if (browseListType === \"music\" || browseListType === \"music-test\") itemWidth = 160 + 14;else if (browseListType === \"apps\") itemWidth = 160 + 14;else if (browseListType === \"comics\") itemWidth = 160 + 14;else itemWidth = containerWidth / itemsInRow;\n return itemWidth;\n}\nfunction getImageHeight(browseListType, itemWidth) {\n var itemHeightDivider, imgHeight;\n itemWidth = itemWidth - 14;\n\n if (browseListType === \"music\" || browseListType === \"music-test\") {\n imgHeight = 155;\n } else if (browseListType === \"apps\") {\n imgHeight = 155;\n } else if (browseListType === \"phone-pictures\") {\n itemHeightDivider = .5;\n imgHeight = itemWidth / itemHeightDivider;\n } else if (browseListType === \"comics\") {\n imgHeight = 220;\n } else if (browseListType === \"favorites\") {\n imgHeight = 167;\n } else {\n itemHeightDivider = 1.85;\n imgHeight = itemWidth / itemHeightDivider;\n }\n\n return imgHeight;\n}\nfunction getImageUrl(p, itemWidth, imgHeight) {\n var imgUrl = \"\";\n if (p.image_small && p.image_small.indexOf('https://') > -1 || p.image_small && p.image_small.indexOf('http://') > -1) imgUrl = p.image_small;else {\n imgUrl = json_server_images;\n imgUrl += \"/cache/\" + Math.ceil(itemWidth * 2) + \"x\" + Math.ceil(imgHeight * 2) + \"/img/\" + p.image_small;\n }\n return imgUrl;\n}\nfunction ConvertObjectToArray(object, key) {\n var newArray = [];\n\n for (var i in object) {\n var newObject = {\n tag: object[i],\n id: i\n };\n newArray.push(newObject);\n }\n\n return newArray;\n}\n\n//# sourceURL=webpack:///./app/product-browse-helpers.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNumberOfItemsPerRow\", function() { return getNumberOfItemsPerRow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chunkArray\", function() { return chunkArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getItemWidth\", function() { return getItemWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageHeight\", function() { return getImageHeight; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageUrl\", function() { return getImageUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ConvertObjectToArray\", function() { return ConvertObjectToArray; });\nfunction getNumberOfItemsPerRow(browseListType, isMobile, containerWidth) {\n var itemsPerRow;\n if (isMobile) itemsPerRow = 2;else {\n if (browseListType === \"music\" || browseListType === \"music-test\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"books\") itemsPerRow = getAdujustItemsPerRow(6, containerWidth, 180 + 14);else if (browseListType === \"apps\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"comics\") itemsPerRow = getAdujustItemsPerRow(7, containerWidth, 160 + 14);else if (browseListType === \"phone-pictures\") itemsPerRow = getAdujustItemsPerRow(5, containerWidth, 210);else if (browseListType === \"favorites\") itemsPerRow = getAdujustItemsPerRow(1, containerWidth, containerWidth - 1);else itemsPerRow = getAdujustItemsPerRow(3, containerWidth, 250 + 14);\n }\n return itemsPerRow;\n}\n\nfunction getAdujustItemsPerRow(itemsPerRow, containerWidth, minWidth) {\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;else {\n itemsPerRow = itemsPerRow - 1;\n if (containerWidth / itemsPerRow > minWidth) return itemsPerRow;\n }\n }\n }\n }\n }\n}\n\nfunction chunkArray(myArray, chunk_size) {\n var index = 0;\n var arrayLength = myArray.length;\n var tempArray = [];\n\n for (index = 0; index < arrayLength; index += chunk_size) {\n var myChunk = myArray.slice(index, index + chunk_size); // Do something if you want with the group\n\n tempArray.push(myChunk);\n }\n\n return tempArray;\n}\nfunction getItemWidth(browseListType, containerWidth, itemsInRow) {\n var itemWidth;\n if (browseListType === \"music\" || browseListType === \"music-test\") itemWidth = 160 + 14;else if (browseListType === \"apps\") itemWidth = 160 + 14;else if (browseListType === \"comics\") itemWidth = 160 + 14;else if (browseListType === \"books\") itemWidth = 180 + 14;else itemWidth = containerWidth / itemsInRow;\n return itemWidth;\n}\nfunction getImageHeight(browseListType, itemWidth) {\n var itemHeightDivider, imgHeight;\n itemWidth = itemWidth - 14;\n\n if (browseListType === \"music\" || browseListType === \"music-test\") {\n imgHeight = 155;\n } else if (browseListType === \"apps\") {\n imgHeight = 155;\n } else if (browseListType === \"phone-pictures\") {\n itemHeightDivider = .5;\n imgHeight = itemWidth / itemHeightDivider;\n } else if (browseListType === \"comics\") {\n imgHeight = 220;\n } else if (browseListType === \"books\") {\n imgHeight = 220;\n } else if (browseListType === \"favorites\") {\n imgHeight = 167;\n } else {\n itemHeightDivider = 1.85;\n imgHeight = itemWidth / itemHeightDivider;\n }\n\n return imgHeight;\n}\nfunction getImageUrl(p, itemWidth, imgHeight) {\n var imgUrl = \"\";\n if (p.image_small && p.image_small.indexOf('https://') > -1 || p.image_small && p.image_small.indexOf('http://') > -1) imgUrl = p.image_small;else {\n imgUrl = json_server_images;\n imgUrl += \"/cache/\" + Math.ceil(itemWidth * 2) + \"x\" + Math.ceil(imgHeight * 2) + \"/img/\" + p.image_small;\n }\n return imgUrl;\n}\nfunction ConvertObjectToArray(object, key) {\n var newArray = [];\n\n for (var i in object) {\n var newObject = {\n tag: object[i],\n id: i\n };\n newArray.push(newObject);\n }\n\n return newArray;\n}\n\n//# sourceURL=webpack:///./app/product-browse-helpers.js?");
/***/ }),
/***/ "./app/product-browse-item.js":
/*!************************************!*\
!*** ./app/product-browse-item.js ***!
\************************************/
/*! exports provided: ProductBrowseItem, default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProductBrowseItem\", function() { return ProductBrowseItem; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-device-detect */ \"./node_modules/react-device-detect/dist/index.js\");\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_device_detect__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _product_browse_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./product-browse-helpers */ \"./app/product-browse-helpers.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\nfunction ProductBrowseItem(props) {\n var p = props.product;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState2 = _slicedToArray(_useState, 2),\n productFilesFetched = _useState2[0],\n setProductFilesFetched = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(),\n _useState4 = _slicedToArray(_useState3, 2),\n productFiles = _useState4[0],\n setProductFiles = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getImageUrl\"])(p, props.itemWidth, props.imgHeight)),\n _useState6 = _slicedToArray(_useState5, 2),\n imgUrl = _useState6[0],\n setImgUrl = _useState6[1];\n\n console.log(browseListType);\n\n if (window.location.search === \"?index=7\") {\n window.browseListType === \"favorites\";\n browseListType = \"favorites\";\n }\n\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {\n if (browseListType === \"music\" && productFilesFetched === false || browseListType === \"music-test\" && productFilesFetched === false) onMusicProductLoad();\n }, []);\n\n function onMusicProductLoad() {\n setProductFilesFetched(true);\n var ajaxUrl = window.location.origin + \"/p/\" + p.project_id + \"/loadfilesjson\";\n $.ajax({\n url: ajaxUrl\n }).done(function (res) {\n var newProductFiles = [];\n res.forEach(function (f, index) {\n if (f.type.split('/')[0] === \"audio\" || f.type.split('/')[1] === \"ogg\") {\n var nf = f;\n nf.musicSrc = f.url.replace(/%2F/g, '/').replace(/%3A/g, ':');\n nf.cover = imgUrl;\n newProductFiles.push(nf);\n }\n });\n setProductFiles(newProductFiles);\n });\n }\n\n function onImageLoadError() {\n var ajaxUrl = window.location.origin + \"/p/\" + p.project_id + \"/loadfilesjson\";\n $.ajax({\n url: ajaxUrl\n }).done(function (res) {\n var newImgUrl;\n res.forEach(function (f, index) {\n if (f.type.split('/')[0] === \"image\") {\n newImgUrl = f.url.replace(/%2F/g, '/').replace(/%3A/g, ':');\n }\n });\n\n if (!newImgUrl) {\n newImgUrl = \"https://cn.opendesktop.\";\n newImgUrl += window.location.host.endsWith('org') === true || window.location.host.endsWith('com') === true ? \"org\" : \"cc\";\n newImgUrl += \"/cache/\" + Math.ceil(props.itemWidth * 2) + \"x\" + Math.ceil(props.imgHeight * 2) + \"/img/default.png\";\n }\n\n setImgUrl(newImgUrl);\n });\n }\n\n var productBrowseItemLikesDislpay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"likes-counter\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"hearts-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-heart\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-heart-empty\"\n })), \"(\", p.count_follower, \") Likes\");\n var itemInfoDisplay, musicItemInfoDisplay, musicPlayerDisplay, showIndex, itemInfoHeight;\n\n if (browseListType === \"picture\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n } else if (browseListType === \"apps\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n } else if (browseListType === \"phone-pictures\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title));\n } else if (browseListType === \"comics\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay);\n } else if (browseListType === \"music\" || browseListType === \"music-test\") {\n musicItemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-music-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n\n if (productFiles && productFiles.length > 0) {\n musicPlayerDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowseItemPreviewMusicPlayerTwo, {\n productFiles: productFiles,\n projectId: p.project_id,\n imgHeight: props.imgHeight\n });\n }\n } else if (browseListType === \"videos\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"info-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username))));\n } else if (browseListType === \"favorites\") {\n itemInfoHeight = props.imgHeight;\n showIndex = true;\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"info-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"explore-product-plings\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"rating\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"rating-text\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"small\", {\n className: \"center-block text-center\"\n }, \"Score \", p.laplace_score / 10, \"%\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress-bar\",\n style: {\n \"backgroundColor\": \"#c8c8c8\",\n \"width\": p.laplace_score / 10 + \"%\"\n }\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress-bar\",\n style: {\n \"backgroundColor\": \"#eeeeee\",\n \"opacity\": \"0.5\",\n \"width\": 100 - p.laplace_score / 10 + \"%\"\n }\n }))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"collected\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.created_at)))));\n }\n\n var indexDisplay;\n\n if (showIndex === true) {\n indexDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"index\"\n }, props.rowIndex + 1);\n }\n\n var itemLink = json_serverUrl;\n itemLink = is_show_real_domain_as_url === 1 ? \"/\" : \"/s/\" + json_store_name + \"/\";\n itemLink += p.type_id === \"3\" ? \"c\" : \"p\";\n itemLink += \"/\" + p.project_id;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item \" + browseListType,\n id: \"product-\" + p.project_id,\n style: {\n \"width\": props.itemWidth\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"wrapper\"\n }, indexDisplay, musicPlayerDisplay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: itemLink,\n className: \"product-browse-item-wrapper\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-image\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: imgUrl,\n height: props.imgHeight,\n onError: onImageLoadError\n }), musicItemInfoDisplay), itemInfoDisplay)));\n}\n\nfunction ProductBrowseItemPreviewMusicPlayerTwo(props) {\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(props.productFiles),\n _useState8 = _slicedToArray(_useState7, 2),\n productFiles = _useState8[0],\n setProductFiles = _useState8[1];\n\n console.log('files:');\n console.log(productFiles);\n\n var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState10 = _slicedToArray(_useState9, 2),\n showAudioControls = _useState10[0],\n setShowAudioControls = _useState10[1];\n\n var _useState11 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0),\n _useState12 = _slicedToArray(_useState11, 2),\n playIndex = _useState12[0],\n setPlayIndex = _useState12[1];\n\n var initialPLayedAudioArray = [];\n\n if (productFiles) {\n productFiles.forEach(function (i, index) {\n var pa = _objectSpread({}, i, {\n played: 0,\n stopped: 0\n });\n\n initialPLayedAudioArray.push(pa);\n });\n }\n\n var _useState13 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(initialPLayedAudioArray),\n _useState14 = _slicedToArray(_useState13, 2),\n playedAudioArray = _useState14[0],\n setPlayedAudioArray = _useState14[1];\n\n var _useState15 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState16 = _slicedToArray(_useState15, 2),\n isPlaying = _useState16[0],\n setIsPlaying = _useState16[1];\n\n var _useState17 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState18 = _slicedToArray(_useState17, 2),\n isPaused = _useState18[0],\n setIsPaused = _useState18[1];\n\n function onPlayClick(pIndex) {\n var playerElement = document.getElementById(\"product-browse-music-player-\" + props.projectId).getElementsByTagName('audio');\n var currentSrc;\n\n if (isPaused === false) {\n currentSrc = productFiles[pIndex].musicSrc;\n playerElement[0].src = currentSrc;\n }\n\n playerElement[0].play();\n setShowAudioControls(true);\n setIsPlaying(true);\n setIsPaused(false);\n onReportAudioPlay(currentSrc);\n }\n\n function onPauseClick() {\n var playerElement = document.getElementById(\"product-browse-music-player-\" + props.projectId).getElementsByTagName('audio');\n playerElement[0].pause();\n setShowAudioControls(false);\n setIsPlaying(false);\n setIsPaused(true);\n onReportAudioStop(productFiles[playIndex].musicSrc);\n }\n\n function onPrevTrackPlayClick() {\n var prevTrackIndex;\n\n if (playIndex === 0) {\n prevTrackIndex = productFiles.length - 1;\n } else {\n prevTrackIndex = playIndex - 1;\n }\n\n setPlayIndex(prevTrackIndex);\n onPlayClick(prevTrackIndex);\n }\n\n function onNextTrackPlayClick() {\n var nextTrackIndex;\n\n if (playIndex + 1 === productFiles.length) {\n nextTrackIndex = 0;\n } else {\n nextTrackIndex = playIndex + 1;\n }\n\n setPlayIndex(nextTrackIndex);\n onPlayClick(nextTrackIndex);\n }\n\n function onReportAudioPlay(src) {\n var audioItem = playedAudioArray.find(function (i) {\n return i.musicSrc === src;\n });\n var audioItemIndex = playedAudioArray.findIndex(function (i) {\n return i.musicSrc === src;\n });\n\n var newAudioItem = _objectSpread({}, audioItem, {\n played: audioItem.played + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray);\n\n if (playedAudioArray[audioItemIndex].played === 0) {\n var audioStartUrl = window.location.href + \"/p/\" + props.projectId + \"/\" + 'startmediaviewajax?collection_id=' + audioItem.collection_id + '&file_id=' + audioItem.id + '&type_id=2';\n $.ajax({\n url: audioStartUrl\n }).done(function (res) {\n var newAudioItem = _objectSpread({}, audioItem, {\n mediaViewId: res.MediaViewId,\n played: audioItem.played + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray);\n });\n }\n }\n\n function onReportAudioStop(src) {\n var audioItem = playedAudioArray.find(function (i) {\n return i.musicSrc === src;\n });\n var audioItemIndex = playedAudioArray.findIndex(function (i) {\n return i.musicSrc === src;\n });\n\n var newAudioItem = _objectSpread({}, audioItem, {\n stopped: audioItem.stopped + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray); // console.log('stppped - ' + playedAudioArray[audioItemIndex].stopped)\n\n if (playedAudioArray[audioItemIndex].stopped === 0) {\n var audioStopUrl = window.location.href + \"/p/\" + props.projectId + \"/\" + \"stopmediaviewajax?media_view_id=\" + playedAudioArray[audioItemIndex].mediaViewId;\n $.ajax({\n url: audioStopUrl\n }).done(function (res) {});\n }\n }\n\n var musicPlayerDisplay;\n\n if (productFiles) {\n var playButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"play-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m20.1 2.9q4.7 0 8.6 2.3t6.3 6.2 2.3 8.6-2.3 8.6-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3z m8.6 18.3q0.7-0.4 0.7-1.2t-0.7-1.2l-12.1-7.2q-0.7-0.4-1.5 0-0.7 0.4-0.7 1.3v14.2q0 0.9 0.7 1.3 0.4 0.2 0.8 0.2 0.3 0 0.7-0.2z\"\n })));\n var pauseButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"pause-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m18.7 26.4v-12.8q0-0.3-0.2-0.5t-0.5-0.2h-5.7q-0.3 0-0.5 0.2t-0.2 0.5v12.8q0 0.3 0.2 0.5t0.5 0.2h5.7q0.3 0 0.5-0.2t0.2-0.5z m10 0v-12.8q0-0.3-0.2-0.5t-0.5-0.2h-5.7q-0.3 0-0.5 0.2t-0.2 0.5v12.8q0 0.3 0.2 0.5t0.5 0.2h5.7q0.3 0 0.5-0.2t0.2-0.5z m8.6-6.4q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z\"\n })));\n var prevButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"prev-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m15.9 20l14.1-10v20z m-5.9-10h3.4v20h-3.4v-20z\"\n })));\n var nextButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"next-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m26.6 10h3.4v20h-3.4v-20z m-16.6 20v-20l14.1 10z\"\n })));\n var prevDisplay, nextDisplay;\n\n if (productFiles.length > 1 && showAudioControls) {\n prevDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPrevTrackPlayClick();\n }\n }, prevButtonElement);\n nextDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onNextTrackPlayClick();\n }\n }, nextButtonElement);\n }\n\n var playButtonDisplay;\n if (isPlaying === true) playButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPauseClick();\n }\n }, pauseButtonElement);else playButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPlayClick(playIndex);\n }\n }, playButtonElement);\n var trackCounterDisplay;\n\n if (showAudioControls === true) {\n trackCounterDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"track-counter\"\n }, playIndex + 1, \"/\", productFiles.length);\n }\n\n musicPlayerDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"player\",\n id: \"product-browse-music-player-\" + props.projectId\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"audio\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"player-interface\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"audio-player-controls\"\n }, prevDisplay, playButtonDisplay, nextDisplay), trackCounterDisplay));\n }\n\n var showControlsCssClass = \"\";\n if (showAudioControls === true) showControlsCssClass = \" show-controls\";\n var isMobileCssClass = \"\";\n if (react_device_detect__WEBPACK_IMPORTED_MODULE_1__[\"isMobile\"] === true) isMobileCssClass = \" mobile\";\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-preview-music-player\" + showControlsCssClass + isMobileCssClass,\n id: \"music-player-\" + props.projectId\n }, musicPlayerDisplay);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProductBrowseItem);\n\n//# sourceURL=webpack:///./app/product-browse-item.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProductBrowseItem\", function() { return ProductBrowseItem; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-device-detect */ \"./node_modules/react-device-detect/dist/index.js\");\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_device_detect__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _product_browse_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./product-browse-helpers */ \"./app/product-browse-helpers.js\");\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { keys.push.apply(keys, Object.getOwnPropertySymbols(object)); } if (enumerableOnly) keys = keys.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\nfunction ProductBrowseItem(props) {\n var p = props.product;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState2 = _slicedToArray(_useState, 2),\n productFilesFetched = _useState2[0],\n setProductFilesFetched = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(),\n _useState4 = _slicedToArray(_useState3, 2),\n productFiles = _useState4[0],\n setProductFiles = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_2__[\"getImageUrl\"])(p, props.itemWidth, props.imgHeight)),\n _useState6 = _slicedToArray(_useState5, 2),\n imgUrl = _useState6[0],\n setImgUrl = _useState6[1];\n\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {\n if (browseListType === \"music\" && productFilesFetched === false || browseListType === \"music-test\" && productFilesFetched === false) onMusicProductLoad();\n }, []);\n\n function onMusicProductLoad() {\n setProductFilesFetched(true);\n var ajaxUrl = window.location.origin + \"/p/\" + p.project_id + \"/loadfilesjson\";\n $.ajax({\n url: ajaxUrl\n }).done(function (res) {\n var newProductFiles = [];\n res.forEach(function (f, index) {\n if (f.type.split('/')[0] === \"audio\" || f.type.split('/')[1] === \"ogg\") {\n var nf = f;\n nf.musicSrc = f.url.replace(/%2F/g, '/').replace(/%3A/g, ':');\n nf.cover = imgUrl;\n newProductFiles.push(nf);\n }\n });\n setProductFiles(newProductFiles);\n });\n }\n\n function onImageLoadError() {\n var ajaxUrl = window.location.origin + \"/p/\" + p.project_id + \"/loadfilesjson\";\n $.ajax({\n url: ajaxUrl\n }).done(function (res) {\n var newImgUrl;\n res.forEach(function (f, index) {\n if (f.type.split('/')[0] === \"image\") {\n newImgUrl = f.url.replace(/%2F/g, '/').replace(/%3A/g, ':');\n }\n });\n\n if (!newImgUrl) {\n newImgUrl = \"https://cn.opendesktop.\";\n newImgUrl += window.location.host.endsWith('org') === true || window.location.host.endsWith('com') === true ? \"org\" : \"cc\";\n newImgUrl += \"/cache/\" + Math.ceil(props.itemWidth * 2) + \"x\" + Math.ceil(props.imgHeight * 2) + \"/img/default.png\";\n }\n\n setImgUrl(newImgUrl);\n });\n }\n\n var productBrowseItemLikesDislpay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"likes-counter\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"hearts-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-heart\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-heart-empty\"\n })), \"(\", p.count_follower, \") Likes\");\n var itemInfoDisplay, musicItemInfoDisplay, musicPlayerDisplay, showIndex, itemInfoHeight;\n\n if (browseListType === \"picture\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n } else if (browseListType === \"apps\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n } else if (browseListType === \"phone-pictures\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title));\n } else if (browseListType === \"comics\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay);\n } else if (browseListType === \"books\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.username), productBrowseItemLikesDislpay);\n } else if (browseListType === \"music\" || browseListType === \"music-test\") {\n musicItemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-music-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username)));\n\n if (productFiles && productFiles.length > 0) {\n musicPlayerDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowseItemPreviewMusicPlayerTwo, {\n productFiles: productFiles,\n projectId: p.project_id,\n imgHeight: props.imgHeight\n });\n }\n } else if (browseListType === \"videos\") {\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), productBrowseItemLikesDislpay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"info-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username))));\n } else if (browseListType === \"favorites\") {\n itemInfoHeight = props.imgHeight;\n showIndex = true;\n itemInfoDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-info\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"info-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, p.title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.cat_title), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, \"by \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"b\", null, p.username))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"score-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"explore-product-plings\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"rating\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"rating-text\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"small\", {\n className: \"center-block text-center\"\n }, \"Score \", p.laplace_score / 10, \"%\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress-bar\",\n style: {\n \"backgroundColor\": \"#c8c8c8\",\n \"width\": p.laplace_score / 10 + \"%\"\n }\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"progress-bar\",\n style: {\n \"backgroundColor\": \"#eeeeee\",\n \"opacity\": \"0.5\",\n \"width\": 100 - p.laplace_score / 10 + \"%\"\n }\n }))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"collected\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null, p.created_at)))));\n }\n\n var indexDisplay;\n\n if (showIndex === true) {\n indexDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"index\"\n }, props.rowIndex + 1);\n }\n\n var itemLink = json_serverUrl;\n itemLink = is_show_real_domain_as_url === 1 ? \"/\" : \"/s/\" + json_store_name + \"/\";\n itemLink += p.type_id === \"3\" ? \"c\" : \"p\";\n itemLink += \"/\" + p.project_id;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item \" + browseListType,\n id: \"product-\" + p.project_id,\n style: {\n \"width\": props.itemWidth\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"wrapper\"\n }, indexDisplay, musicPlayerDisplay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: itemLink,\n className: \"product-browse-item-wrapper\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-image\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: imgUrl,\n height: props.imgHeight,\n onError: onImageLoadError\n }), musicItemInfoDisplay), itemInfoDisplay)));\n}\n\nfunction ProductBrowseItemPreviewMusicPlayerTwo(props) {\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(props.productFiles),\n _useState8 = _slicedToArray(_useState7, 2),\n productFiles = _useState8[0],\n setProductFiles = _useState8[1];\n\n console.log('files:');\n console.log(productFiles);\n\n var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState10 = _slicedToArray(_useState9, 2),\n showAudioControls = _useState10[0],\n setShowAudioControls = _useState10[1];\n\n var _useState11 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0),\n _useState12 = _slicedToArray(_useState11, 2),\n playIndex = _useState12[0],\n setPlayIndex = _useState12[1];\n\n var initialPLayedAudioArray = [];\n\n if (productFiles) {\n productFiles.forEach(function (i, index) {\n var pa = _objectSpread({}, i, {\n played: 0,\n stopped: 0\n });\n\n initialPLayedAudioArray.push(pa);\n });\n }\n\n var _useState13 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(initialPLayedAudioArray),\n _useState14 = _slicedToArray(_useState13, 2),\n playedAudioArray = _useState14[0],\n setPlayedAudioArray = _useState14[1];\n\n var _useState15 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState16 = _slicedToArray(_useState15, 2),\n isPlaying = _useState16[0],\n setIsPlaying = _useState16[1];\n\n var _useState17 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState18 = _slicedToArray(_useState17, 2),\n isPaused = _useState18[0],\n setIsPaused = _useState18[1];\n\n function onPlayClick(pIndex) {\n var playerElement = document.getElementById(\"product-browse-music-player-\" + props.projectId).getElementsByTagName('audio');\n var currentSrc;\n\n if (isPaused === false) {\n currentSrc = productFiles[pIndex].musicSrc;\n playerElement[0].src = currentSrc;\n }\n\n playerElement[0].play();\n setShowAudioControls(true);\n setIsPlaying(true);\n setIsPaused(false);\n onReportAudioPlay(currentSrc);\n }\n\n function onPauseClick() {\n var playerElement = document.getElementById(\"product-browse-music-player-\" + props.projectId).getElementsByTagName('audio');\n playerElement[0].pause();\n setShowAudioControls(false);\n setIsPlaying(false);\n setIsPaused(true);\n onReportAudioStop(productFiles[playIndex].musicSrc);\n }\n\n function onPrevTrackPlayClick() {\n var prevTrackIndex;\n\n if (playIndex === 0) {\n prevTrackIndex = productFiles.length - 1;\n } else {\n prevTrackIndex = playIndex - 1;\n }\n\n setPlayIndex(prevTrackIndex);\n onPlayClick(prevTrackIndex);\n }\n\n function onNextTrackPlayClick() {\n var nextTrackIndex;\n\n if (playIndex + 1 === productFiles.length) {\n nextTrackIndex = 0;\n } else {\n nextTrackIndex = playIndex + 1;\n }\n\n setPlayIndex(nextTrackIndex);\n onPlayClick(nextTrackIndex);\n }\n\n function onReportAudioPlay(src) {\n var audioItem = playedAudioArray.find(function (i) {\n return i.musicSrc === src;\n });\n var audioItemIndex = playedAudioArray.findIndex(function (i) {\n return i.musicSrc === src;\n });\n\n var newAudioItem = _objectSpread({}, audioItem, {\n played: audioItem.played + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray);\n\n if (playedAudioArray[audioItemIndex].played === 0) {\n var audioStartUrl = window.location.href + \"/p/\" + props.projectId + \"/\" + 'startmediaviewajax?collection_id=' + audioItem.collection_id + '&file_id=' + audioItem.id + '&type_id=2';\n $.ajax({\n url: audioStartUrl\n }).done(function (res) {\n var newAudioItem = _objectSpread({}, audioItem, {\n mediaViewId: res.MediaViewId,\n played: audioItem.played + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray);\n });\n }\n }\n\n function onReportAudioStop(src) {\n var audioItem = playedAudioArray.find(function (i) {\n return i.musicSrc === src;\n });\n var audioItemIndex = playedAudioArray.findIndex(function (i) {\n return i.musicSrc === src;\n });\n\n var newAudioItem = _objectSpread({}, audioItem, {\n stopped: audioItem.stopped + 1\n });\n\n var newPLayedAudioArray = [].concat(_toConsumableArray(playedAudioArray.slice(0, audioItemIndex)), [newAudioItem], _toConsumableArray(playedAudioArray.slice(audioItemIndex + 1, playedAudioArray.length)));\n setPlayedAudioArray(newPLayedAudioArray); // console.log('stppped - ' + playedAudioArray[audioItemIndex].stopped)\n\n if (playedAudioArray[audioItemIndex].stopped === 0) {\n var audioStopUrl = window.location.href + \"/p/\" + props.projectId + \"/\" + \"stopmediaviewajax?media_view_id=\" + playedAudioArray[audioItemIndex].mediaViewId;\n $.ajax({\n url: audioStopUrl\n }).done(function (res) {});\n }\n }\n\n var musicPlayerDisplay;\n\n if (productFiles) {\n var playButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"play-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m20.1 2.9q4.7 0 8.6 2.3t6.3 6.2 2.3 8.6-2.3 8.6-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3z m8.6 18.3q0.7-0.4 0.7-1.2t-0.7-1.2l-12.1-7.2q-0.7-0.4-1.5 0-0.7 0.4-0.7 1.3v14.2q0 0.9 0.7 1.3 0.4 0.2 0.8 0.2 0.3 0 0.7-0.2z\"\n })));\n var pauseButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"pause-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m18.7 26.4v-12.8q0-0.3-0.2-0.5t-0.5-0.2h-5.7q-0.3 0-0.5 0.2t-0.2 0.5v12.8q0 0.3 0.2 0.5t0.5 0.2h5.7q0.3 0 0.5-0.2t0.2-0.5z m10 0v-12.8q0-0.3-0.2-0.5t-0.5-0.2h-5.7q-0.3 0-0.5 0.2t-0.2 0.5v12.8q0 0.3 0.2 0.5t0.5 0.2h5.7q0.3 0 0.5-0.2t0.2-0.5z m8.6-6.4q0 4.7-2.3 8.6t-6.3 6.2-8.6 2.3-8.6-2.3-6.2-6.2-2.3-8.6 2.3-8.6 6.2-6.2 8.6-2.3 8.6 2.3 6.3 6.2 2.3 8.6z\"\n })));\n var prevButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"prev-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m15.9 20l14.1-10v20z m-5.9-10h3.4v20h-3.4v-20z\"\n })));\n var nextButtonElement = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"svg\", {\n fill: \"currentColor\",\n preserveAspectRatio: \"xMidYMid meet\",\n height: \"1em\",\n width: \"1em\",\n viewBox: \"0 0 40 40\",\n className: \"next-icon\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"g\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"path\", {\n d: \"m26.6 10h3.4v20h-3.4v-20z m-16.6 20v-20l14.1 10z\"\n })));\n var prevDisplay, nextDisplay;\n\n if (productFiles.length > 1 && showAudioControls) {\n prevDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPrevTrackPlayClick();\n }\n }, prevButtonElement);\n nextDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onNextTrackPlayClick();\n }\n }, nextButtonElement);\n }\n\n var playButtonDisplay;\n if (isPlaying === true) playButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPauseClick();\n }\n }, pauseButtonElement);else playButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n onClick: function onClick() {\n return onPlayClick(playIndex);\n }\n }, playButtonElement);\n var trackCounterDisplay;\n\n if (showAudioControls === true) {\n trackCounterDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"track-counter\"\n }, playIndex + 1, \"/\", productFiles.length);\n }\n\n musicPlayerDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"player\",\n id: \"product-browse-music-player-\" + props.projectId\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"audio\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"player-interface\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"audio-player-controls\"\n }, prevDisplay, playButtonDisplay, nextDisplay), trackCounterDisplay));\n }\n\n var showControlsCssClass = \"\";\n if (showAudioControls === true) showControlsCssClass = \" show-controls\";\n var isMobileCssClass = \"\";\n if (react_device_detect__WEBPACK_IMPORTED_MODULE_1__[\"isMobile\"] === true) isMobileCssClass = \" mobile\";\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-preview-music-player\" + showControlsCssClass + isMobileCssClass,\n id: \"music-player-\" + props.projectId\n }, musicPlayerDisplay);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProductBrowseItem);\n\n//# sourceURL=webpack:///./app/product-browse-item.js?");
/***/ }),
/***/ "./app/product-browse.js":
/*!*******************************!*\
!*** ./app/product-browse.js ***!
\*******************************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-device-detect */ \"./node_modules/react-device-detect/dist/index.js\");\n/* harmony import */ var react_device_detect__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_device_detect__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _product_browse_item__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./product-browse-item */ \"./app/product-browse-item.js\");\n/* harmony import */ var _product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./product-browse-helpers */ \"./app/product-browse-helpers.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\nfunction ProductBrowse() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-browse\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductTagGroupFilterContainer, null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowseFilterContainer, null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowseItemList, null));\n}\n\nfunction ProductBrowseFilterContainer() {\n var filtersBaseUrl = json_serverUrl;\n filtersBaseUrl += json_store_name === \"ALL\" ? \"/\" : \"/s/\" + json_store_name + \"/\";\n filtersBaseUrl += \"browse/\";\n if (typeof filters.category === 'number') filtersBaseUrl += \"cat/\" + filters.category + \"/\";\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-browse-top-menu\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"pling-nav-tabs\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", {\n className: \"nav nav-tabs pling-nav-tabs\",\n id: \"sort\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n className: filters.order === \"latest\" ? \"active\" : \"\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: filtersBaseUrl + \"ord/latest/\" + window.location.search\n }, \"Latest\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n className: filters.order === \"rating\" ? \"active\" : \"\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: filtersBaseUrl + \"ord/rating/\" + window.location.search\n }, \"Score\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n className: filters.order === \"plinged\" ? \"active\" : \"\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: filtersBaseUrl + \"ord/plinged/\" + window.location.search\n }, \"Plinged\")))));\n}\n\nfunction ProductTagGroupFilterContainer() {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n _useState2 = _slicedToArray(_useState, 2),\n tagGroups = _useState2[0],\n setTagGroups = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n _useState4 = _slicedToArray(_useState3, 2),\n tagGroupIds = _useState4[0],\n setTagGroupIds = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n _useState6 = _slicedToArray(_useState5, 2),\n selectedTags = _useState6[0],\n setSelectedTags = _useState6[1];\n\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(function () {\n renderTagGroups();\n }, []);\n\n function renderTagGroups() {\n for (var i in tag_group_filter) {\n var newTagGroupIds = tagGroupIds;\n newTagGroupIds.push(i);\n setTagGroupIds(newTagGroupIds);\n var tagGroup = tag_group_filter[i];\n\n for (var ii in tagGroup) {\n if (ii === \"selected_tag\") {\n var newSelectedTags = selectedTags;\n newSelectedTags.push(tagGroup[ii]);\n setSelectedTags(newSelectedTags);\n } else {\n var newArray = Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"ConvertObjectToArray\"])(tagGroup[ii], ii);\n var newTagGroupsArray = tagGroups;\n newTagGroupsArray.push(newArray);\n setTagGroups(newTagGroupsArray);\n }\n }\n }\n }\n\n var tagGroupsDropdownDisplay;\n\n if (tagGroups.length > 0) {\n tagGroupsDropdownDisplay = tagGroups.map(function (tagGroup, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(TagGroupDropDownMenu, {\n key: index,\n tagGroup: tagGroup,\n tagGroupId: tagGroupIds[index],\n selectedTag: selectedTags[index]\n });\n });\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-tag-filter-container\",\n style: {\n \"width\": 140 * tagGroups.length + 1\n }\n }, tagGroupsDropdownDisplay);\n}\n\nfunction TagGroupDropDownMenu(props) {\n console.log(props);\n\n function onSelectTag(e) {\n var serverUrl = json_serverUrl.split('://')[1];\n var ajaxUrl = \"https://\" + serverUrl + \"/explore/savetaggroupfilter?group_id=\" + props.tagGroupId + \"&tag_id=\" + e.target.value;\n $.ajax({\n url: ajaxUrl\n }).done(function (res) {\n window.location.reload();\n });\n }\n\n var tagsDisplay = props.tagGroup.map(function (tag, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"option\", {\n key: index,\n selected: tag.id === props.selectedTag,\n value: tag.id\n }, tag.tag);\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-tag-group-dropdown\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"select\", {\n onChange: function onChange(e) {\n return onSelectTag(e);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"option\", null), tagsDisplay));\n}\n\nfunction ProductBrowseItemList(props) {\n if (window.location.search === \"?index=7\") {\n window.browseListType === \"favorites\";\n browseListType = \"favorites\";\n }\n\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])($('#product-browse-container').width() + 14),\n _useState8 = _slicedToArray(_useState7, 2),\n containerWidth = _useState8[0],\n setContainerWidth = _useState8[1];\n\n var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getNumberOfItemsPerRow\"])(browseListType, react_device_detect__WEBPACK_IMPORTED_MODULE_2__[\"isMobile\"], containerWidth)),\n _useState10 = _slicedToArray(_useState9, 2),\n itemsInRow = _useState10[0],\n setItemsInRow = _useState10[1];\n\n var _useState11 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getItemWidth\"])(browseListType, containerWidth, itemsInRow)),\n _useState12 = _slicedToArray(_useState11, 2),\n itemWidth = _useState12[0],\n setItemWidth = _useState12[1];\n\n var _useState13 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getImageHeight\"])(browseListType, itemWidth)),\n _useState14 = _slicedToArray(_useState13, 2),\n imgHeight = _useState14[0],\n setImgHeight = _useState14[1];\n\n react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () {\n window.addEventListener(\"resize\", function (event) {\n updateDimensions();\n });\n window.addEventListener(\"orientationchange\", function (event) {\n updateDimensions();\n });\n }, []);\n\n function updateDimensions() {\n var newContainerWidth = $('#product-browse-container').width() + 14;\n setContainerWidth(newContainerWidth);\n var newItemsInRow = Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getNumberOfItemsPerRow\"])(browseListType, react_device_detect__WEBPACK_IMPORTED_MODULE_2__[\"isMobile\"], newContainerWidth);\n setItemsInRow(newItemsInRow);\n var newItemWidth = Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getItemWidth\"])(browseListType, newContainerWidth, newItemsInRow);\n setItemWidth(newItemWidth);\n var newImgHeight = Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"getImageHeight\"])(browseListType, newItemWidth);\n setImgHeight(newImgHeight);\n }\n\n var productsRowsDisplay;\n\n if (itemsInRow) {\n productsRowsDisplay = Object(_product_browse_helpers__WEBPACK_IMPORTED_MODULE_4__[\"chunkArray\"])(products, itemsInRow).map(function (ac, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowseItemsRow, {\n key: index,\n rowIndex: index,\n products: ac,\n itemWidth: itemWidth,\n imgHeight: imgHeight\n });\n });\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-browse-item-list\",\n className: react_device_detect__WEBPACK_IMPORTED_MODULE_2__[\"isMobile\"] ? \"mobile\" : \"\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-browse-list-container\"\n }, productsRowsDisplay, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowsePagination, null)));\n}\n\nfunction ProductBrowseItemsRow(props) {\n var productsDisplay = props.products.map(function (p, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_product_browse_item__WEBPACK_IMPORTED_MODULE_3__[\"ProductBrowseItem\"], {\n key: index,\n index: index,\n rowIndex: props.rowIndex,\n product: p,\n itemWidth: props.itemWidth,\n imgHeight: props.imgHeight\n });\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"product-browse-item-row \" + (browseListType ? browseListType + \"-row\" : \"\")\n }, productsDisplay);\n}\n\nfunction ProductBrowsePagination() {\n var _useState15 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(pagination.totalcount),\n _useState16 = _slicedToArray(_useState15, 2),\n totalItems = _useState16[0],\n setTotalItems = _useState16[1];\n\n var _useState17 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(50),\n _useState18 = _slicedToArray(_useState17, 2),\n itemsPerPage = _useState18[0],\n setItemsPerPage = _useState18[1];\n\n var _useState19 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(pagination.page),\n _useState20 = _slicedToArray(_useState19, 2),\n currentPage = _useState20[0],\n setCurrentPage = _useState20[1];\n\n var _useState21 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(Math.ceil(totalItems / itemsPerPage)),\n _useState22 = _slicedToArray(_useState21, 2),\n totalPages = _useState22[0],\n setTotalPages = _useState22[1];\n\n var minPage = currentPage - 5 > 0 ? currentPage - 5 : 0;\n var maxPage = minPage + 10 < totalPages ? minPage + 10 : totalPages;\n var paginationArray = [];\n\n for (var i = minPage; i < maxPage; i++) {\n paginationArray.push(i + 1);\n }\n\n var pageLinkBase = json_serverUrl;\n pageLinkBase += is_show_real_domain_as_url === 1 ? \"/\" : \"/s/\" + json_store_name + \"/\";\n pageLinkBase += \"browse/page/\";\n var pageLinkSuffix = \"/\";\n if (typeof filters.category === 'number') pageLinkSuffix += \"cat/\" + filters.category + \"/\";\n pageLinkSuffix += \"ord/\" + filters.order + \"/\";\n var previousButtonDisplay;\n if (currentPage > 1) previousButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: pageLinkBase + (currentPage - 1) + pageLinkSuffix\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-chevron-left\"\n }), \" Previous\"));\n var nextButtonDisplay;\n if (currentPage < totalPages) nextButtonDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: pageLinkBase + (currentPage + 1) + pageLinkSuffix\n }, \"Next \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"glyphicon glyphicon-chevron-right\"\n })));\n var paginationDisplay = paginationArray.map(function (p, index) {\n var pageLinkDisplay;\n if (currentPage === p) pageLinkDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: \"no-link\"\n }, p);else pageLinkDisplay = react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: pageLinkBase + p + pageLinkSuffix\n }, p);\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n key: index\n }, pageLinkDisplay);\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"product-browse-pagination\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, previousButtonDisplay, paginationDisplay, nextButtonDisplay));\n}\n\nvar rootElement = document.getElementById(\"product-browse-container\");\nreact_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(ProductBrowse, null), rootElement);\n\n//# sourceURL=webpack:///./app/product-browse.js?");
/***/ }),
/***/ "./node_modules/object-assign/index.js":
/*!*********************************************!*\
!*** ./node_modules/object-assign/index.js ***!
\*********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack:///./node_modules/object-assign/index.js?");
/***/ }),
/***/ "./node_modules/prop-types/checkPropTypes.js":
/*!***************************************************!*\
!*** ./node_modules/prop-types/checkPropTypes.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar printWarning = function() {};\n\nif (true) {\n var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ \"./node_modules/prop-types/lib/ReactPropTypesSecret.js\");\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (true) {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (true) {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/checkPropTypes.js?");
/***/ }),
/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
/*!*************************************************************!*\
!*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//# sourceURL=webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js?");
/***/ }),
/***/ "./node_modules/react-device-detect/dist/index.js":
/*!********************************************************!*\
!*** ./node_modules/react-device-detect/dist/index.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("module.exports =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 3);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar UAParser = __webpack_require__(6);\n\nvar UA = exports.UA = new UAParser();\n\nvar browser = exports.browser = UA.getBrowser();\nvar cpu = exports.cpu = UA.getCPU();\nvar device = exports.device = UA.getDevice();\nvar engine = exports.engine = UA.getEngine();\nvar os = exports.os = UA.getOS();\nvar ua = exports.ua = UA.getUA();\nvar setUA = exports.setUA = function setUA(uaStr) {\n return UA.setUA(uaStr);\n};\n\nvar mockUserAgent = exports.mockUserAgent = function mockUserAgent(userAgent) {\n window.navigator.__defineGetter__(\"userAgent\", function () {\n return userAgent;\n });\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isYandex = exports.isEdge = exports.getUA = exports.engineVersion = exports.engineName = exports.mobileModel = exports.mobileVendor = exports.browserName = exports.browserVersion = exports.fullBrowserVersion = exports.osName = exports.osVersion = exports.isIE = exports.isOpera = exports.isSafari = exports.isFirefox = exports.isChrome = exports.isIOS = exports.isWinPhone = exports.isAndroid = exports.isBrowser = exports.isTablet = exports.isMobileOnly = exports.isMobile = exports.isChromium = exports.isMobileSafari = exports.isWearable = exports.isConsole = exports.isSmartTV = undefined;\n\nvar _getUaData = __webpack_require__(0);\n\nvar _types = __webpack_require__(2);\n\nvar CHROME = _types.BROWSER_TYPES.CHROME,\n CHROMIUM = _types.BROWSER_TYPES.CHROMIUM,\n IE = _types.BROWSER_TYPES.IE,\n INTERNET_EXPLORER = _types.BROWSER_TYPES.INTERNET_EXPLORER,\n OPERA = _types.BROWSER_TYPES.OPERA,\n FIREFOX = _types.BROWSER_TYPES.FIREFOX,\n SAFARI = _types.BROWSER_TYPES.SAFARI,\n MOBILE_SAFARI = _types.BROWSER_TYPES.MOBILE_SAFARI,\n EDGE = _types.BROWSER_TYPES.EDGE,\n YANDEX = _types.BROWSER_TYPES.YANDEX;\nvar MOBILE = _types.DEVICE_TYPES.MOBILE,\n TABLET = _types.DEVICE_TYPES.TABLET,\n SMART_TV = _types.DEVICE_TYPES.SMART_TV,\n BROWSER = _types.DEVICE_TYPES.BROWSER,\n WEARABLE = _types.DEVICE_TYPES.WEARABLE,\n CONSOLE = _types.DEVICE_TYPES.CONSOLE;\nvar ANDROID = _types.OS_TYPES.ANDROID,\n WINDOWS_PHONE = _types.OS_TYPES.WINDOWS_PHONE,\n IOS = _types.OS_TYPES.IOS;\n\n\nvar isMobileType = function isMobileType() {\n return _getUaData.device.type === MOBILE;\n};\nvar isTabletType = function isTabletType() {\n return _getUaData.device.type === TABLET;\n};\n\nvar isMobileAndTabletType = function isMobileAndTabletType() {\n switch (_getUaData.device.type) {\n case MOBILE:\n case TABLET:\n return true;\n default:\n return false;\n }\n};\n\nvar isSmartTVType = function isSmartTVType() {\n return _getUaData.device.type === SMART_TV;\n};\nvar isBrowserType = function isBrowserType() {\n return _getUaData.device.type === BROWSER;\n};\nvar isWearableType = function isWearableType() {\n return _getUaData.device.type === WEARABLE;\n};\nvar isConsoleType = function isConsoleType() {\n return _getUaData.device.type === CONSOLE;\n};\nvar isAndroidType = function isAndroidType() {\n return _getUaData.os.name === ANDROID;\n};\nvar isWinPhoneType = function isWinPhoneType() {\n return _getUaData.os.name === WINDOWS_PHONE;\n};\nvar isIOSType = function isIOSType() {\n return _getUaData.os.name === IOS;\n};\nvar isChromeType = function isChromeType() {\n return _getUaData.browser.name === CHROME;\n};\nvar isFirefoxType = function isFirefoxType() {\n return _getUaData.browser.name === FIREFOX;\n};\nvar isChromiumType = function isChromiumType() {\n return _getUaData.browser.name === CHROMIUM;\n};\nvar isEdgeType = function isEdgeType() {\n return _getUaData.browser.name === EDGE;\n};\nvar isYandexType = function isYandexType() {\n return _getUaData.browser.name === YANDEX;\n};\nvar isSafariType = function isSafariType() {\n return _getUaData.browser.name === SAFARI || _getUaData.browser.name === MOBILE_SAFARI;\n};\nvar isMobileSafariType = function isMobileSafariType() {\n return _getUaData.browser.name === MOBILE_SAFARI;\n};\nvar isOperaType = function isOperaType() {\n return _getUaData.browser.name === OPERA;\n};\nvar isIEType = function isIEType() {\n return _getUaData.browser.name === INTERNET_EXPLORER || _getUaData.browser.name === IE;\n};\n\nvar getBrowserFullVersion = function getBrowserFullVersion() {\n return _getUaData.browser.major;\n};\nvar getBrowserVersion = function getBrowserVersion() {\n return _getUaData.browser.version;\n};\nvar getOsVersion = function getOsVersion() {\n return _getUaData.os.version ? _getUaData.os.version : \"none\";\n};\nvar getOsName = function getOsName() {\n return _getUaData.os.name ? _getUaData.os.name : \"none\";\n};\nvar getBrowserName = function getBrowserName() {\n return _getUaData.browser.name;\n};\nvar getMobileVendor = function getMobileVendor() {\n return _getUaData.device.vendor ? _getUaData.device.vendor : \"none\";\n};\nvar getMobileModel = function getMobileModel() {\n return _getUaData.device.model ? _getUaData.device.model : \"none\";\n};\nvar getEngineName = function getEngineName() {\n return _getUaData.engine.name;\n};\nvar getEngineVersion = function getEngineVersion() {\n return _getUaData.engine.version;\n};\nvar getUseragent = function getUseragent() {\n return _getUaData.ua;\n};\n\nvar isSmartTV = exports.isSmartTV = isSmartTVType();\nvar isConsole = exports.isConsole = isConsoleType();\nvar isWearable = exports.isWearable = isWearableType();\nvar isMobileSafari = exports.isMobileSafari = isMobileSafariType();\nvar isChromium = exports.isChromium = isChromiumType();\nvar isMobile = exports.isMobile = isMobileAndTabletType();\nvar isMobileOnly = exports.isMobileOnly = isMobileType();\nvar isTablet = exports.isTablet = isTabletType();\nvar isBrowser = exports.isBrowser = isBrowserType();\nvar isAndroid = exports.isAndroid = isAndroidType();\nvar isWinPhone = exports.isWinPhone = isWinPhoneType();\nvar isIOS = exports.isIOS = isIOSType();\nvar isChrome = exports.isChrome = isChromeType();\nvar isFirefox = exports.isFirefox = isFirefoxType();\nvar isSafari = exports.isSafari = isSafariType();\nvar isOpera = exports.isOpera = isOperaType();\nvar isIE = exports.isIE = isIEType();\nvar osVersion = exports.osVersion = getOsVersion();\nvar osName = exports.osName = getOsName();\nvar fullBrowserVersion = exports.fullBrowserVersion = getBrowserFullVersion();\nvar browserVersion = exports.browserVersion = getBrowserVersion();\nvar browserName = exports.browserName = getBrowserName();\nvar mobileVendor = exports.mobileVendor = getMobileVendor();\nvar mobileModel = exports.mobileModel = getMobileModel();\nvar engineName = exports.engineName = getEngineName();\nvar engineVersion = exports.engineVersion = getEngineVersion();\nvar getUA = exports.getUA = getUseragent();\nvar isEdge = exports.isEdge = isEdgeType();\nvar isYandex = exports.isYandex = isYandexType();\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wearPayload = exports.consolePayload = exports.stvPayload = exports.mobilePayload = exports.broPayload = exports.getCurrentBrowser = exports.checkType = exports.OS_TYPES = exports.BROWSER_TYPES = exports.DEVICE_TYPES = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _getUaData = __webpack_require__(0);\n\nvar DEVICE_TYPES = exports.DEVICE_TYPES = {\n MOBILE: 'mobile',\n TABLET: 'tablet',\n SMART_TV: 'smarttv',\n CONSOLE: 'console',\n WEARABLE: 'wearable',\n BROWSER: undefined\n};\n\nvar BROWSER_TYPES = exports.BROWSER_TYPES = {\n CHROME: 'Chrome',\n FIREFOX: \"Firefox\",\n OPERA: \"Opera\",\n YANDEX: \"Yandex\",\n SAFARI: \"Safari\",\n INTERNET_EXPLORER: \"Internet Explorer\",\n EDGE: \"Edge\",\n CHROMIUM: \"Chromium\",\n IE: 'IE',\n MOBILE_SAFARI: \"Mobile Safari\"\n};\n\nvar OS_TYPES = exports.OS_TYPES = {\n IOS: 'iOS',\n ANDROID: \"Android\",\n WINDOWS_PHONE: \"Windows Phone\"\n};\n\nvar initialData = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkType = exports.checkType = function checkType(type) {\n switch (type) {\n case DEVICE_TYPES.MOBILE:\n return { isMobile: true };\n case DEVICE_TYPES.TABLET:\n return { isTablet: true };\n case DEVICE_TYPES.SMART_TV:\n return { isSmartTV: true };\n case DEVICE_TYPES.CONSOLE:\n return { isConsole: true };\n case DEVICE_TYPES.WEARABLE:\n return { isWearable: true };\n case DEVICE_TYPES.BROWSER:\n return { isBrowser: true };\n default:\n return initialData;\n }\n};\n\nvar getCurrentBrowser = exports.getCurrentBrowser = function getCurrentBrowser(name) {\n switch (name) {\n case BROWSER_TYPES.CHROME:\n case BROWSER_TYPES.FIREFOX:\n case BROWSER_TYPES.OPERA:\n case BROWSER_TYPES.YANDEX:\n case BROWSER_TYPES.SAFARI:\n case BROWSER_TYPES.IE:\n case BROWSER_TYPES.EDGE:\n case BROWSER_TYPES.CHROMIUM:\n return true;\n default:\n return false;\n }\n};\n\nvar broPayload = exports.broPayload = function broPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: browser.major,\n browserFullVersion: browser.version,\n browserName: browser.name,\n engineName: engine.name || false,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar mobilePayload = exports.mobilePayload = function mobilePayload(type, device, os, ua) {\n return _extends({}, type, {\n vendor: device.vendor || \"none\",\n model: device.model || \"none\",\n os: os.name || \"none\",\n osVersion: os.version || \"none\",\n ua: ua || \"none\"\n });\n};\n\nvar stvPayload = exports.stvPayload = function stvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: engine.name || false,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar consolePayload = exports.consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: engine.name || false,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\nvar wearPayload = exports.wearPayload = function wearPayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: engine.name || false,\n engineVersion: engine.version,\n osName: os.name,\n osVersion: os.version,\n userAgent: ua\n };\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.deviceDetect = undefined;\n\nvar _views = __webpack_require__(4);\n\nObject.keys(_views).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _views[key];\n }\n });\n});\n\nvar _selectors = __webpack_require__(1);\n\nObject.keys(_selectors).forEach(function (key) {\n if (key === \"default\" || key === \"__esModule\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function get() {\n return _selectors[key];\n }\n });\n});\n\nvar _detect = __webpack_require__(8);\n\nvar _detect2 = _interopRequireDefault(_detect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.deviceDetect = _detect2.default;\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CustomView = exports.WearableView = exports.ConsoleView = exports.SmartTVView = exports.MobileOnlyView = exports.WinPhoneView = exports.TabletView = exports.MobileView = exports.IOSView = exports.IEView = exports.BrowserView = exports.AndroidView = undefined;\n\nvar _react = __webpack_require__(5);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _selectors = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AndroidView = exports.AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n viewClassName = _ref.viewClassName,\n style = _ref.style;\n\n return _selectors.isAndroid ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar BrowserView = exports.BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n viewClassName = _ref2.viewClassName,\n style = _ref2.style;\n\n return _selectors.isBrowser ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar IEView = exports.IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n viewClassName = _ref3.viewClassName,\n style = _ref3.style;\n\n return _selectors.isIE ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar IOSView = exports.IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n viewClassName = _ref4.viewClassName,\n style = _ref4.style;\n\n return _selectors.isIOS ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar MobileView = exports.MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n viewClassName = _ref5.viewClassName,\n style = _ref5.style;\n\n return _selectors.isMobile ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar TabletView = exports.TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n viewClassName = _ref6.viewClassName,\n style = _ref6.style;\n\n return _selectors.isTablet ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar WinPhoneView = exports.WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n viewClassName = _ref7.viewClassName,\n style = _ref7.style;\n\n return _selectors.isWinPhone ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar MobileOnlyView = exports.MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style;\n\n return _selectors.isMobileOnly ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar SmartTVView = exports.SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n viewClassName = _ref9.viewClassName,\n style = _ref9.style;\n\n return _selectors.isSmartTV ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar ConsoleView = exports.ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n viewClassName = _ref10.viewClassName,\n style = _ref10.style;\n\n return _selectors.isConsole ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar WearableView = exports.WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n viewClassName = _ref11.viewClassName,\n style = _ref11.style;\n\n return _selectors.isWearable ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\nvar CustomView = exports.CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition;\n\n return condition ? renderWithFragment ? _react2.default.createElement(\n _react.Fragment,\n null,\n children\n ) : _react2.default.createElement(\n 'div',\n { className: viewClassName, style: style },\n children\n ) : null;\n};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman \n * Dual licensed under GPLv2 or MIT\n */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"0.7.18\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\";var util={extend:function(regexes,extensions){var margedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){margedRegexes[i]=extensions[i].concat(regexes[i])}else{margedRegexes[i]=regexes[i]}}return margedRegexes},has:function(str1,str2){if(typeof str1===\"string\"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}else{return false}},lowerize:function(str){return str.toLowerCase()},major:function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,\"\").split(\".\")[0]:undefined},trim:function(str){return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\")}};var mapper={rgx:function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j