<|start_filename|>controlcenter/templates/controlcenter/widgets/contrib/value_list.html<|end_filename|>
{% load controlcenter_tags %}

<table class="controlcenter__table" {% if widget.sortable and widget.items|length > 1 %}data-sortable{% endif %}>
    {% if widget.items and widget.sortable %}
        <thead class="controlcenter__table__thead">
            <tr class="controlcenter__table__tr">
                <th class="controlcenter__table__th controlcenter__table__th--value">{{ widget.value_column_label|default:'Value' }}</th>
            </tr>
        </thead>
    {% endif %}
    <tbody class="controlcenter__table__tbody">
        {% for value in widget.items %}
            <tr class="controlcenter__table__tr">
                <td class="controlcenter__table__td">
                    {% include "controlcenter/snippets/generic_item.html" with item=value %}
                </td>
            </tr>
        {% empty %}
            <tr class="controlcenter__table__tr">
                <td class="controlcenter__table__td controlcenter__table__td--novalues">{{ widget.empty_message }}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>


<|start_filename|>controlcenter/templates/controlcenter/widgets/itemlist.html<|end_filename|>
{% load controlcenter_tags %}
<table class="controlcenter__table"{% if widget.sortable and widget.values|length > 1 %} data-sortable{% endif %}>
    {% if widget.list_display and widget.values %}
        <thead class="controlcenter__table__thead">
            <tr class="controlcenter__table__tr">
                {% for attr in widget.list_display %}
                    {% if attr == sharp %}
                        <th class="controlcenter__table__th controlcenter__table__th--row-counter">{{ sharp }}</th>
                    {% else %}
                        <th class="controlcenter__table__th controlcenter__table__th--{{ attr }}">{{ widget|attrlabel:attr|capfirst }}</th>
                    {% endif %}
                {% endfor %}
            </tr>
        </thead>
    {% endif %}
    <tbody class="controlcenter__table__tbody">
        {% for obj in widget.values %}
            <tr class="controlcenter__table__tr">
                {% change_url widget obj as url %}
                {% for attr in widget.list_display %}
                    <td class="controlcenter__table__td controlcenter__table__td--{% if attr == sharp %}row-counter{% else %}{{ attr }}{% endif %}">
                        {% if attr == sharp %}
                            {% if url and attr in widget.list_display_links or url and not widget.list_display_links and forloop.first %}
                                <a href="{{ url }}">{{ forloop.parentloop.counter }}</a>
                            {% else %}
                                {{ forloop.parentloop.counter }}
                            {% endif %}
                        {% elif url and attr in widget.list_display_links or url and not widget.list_display_links and forloop.first %}
                            <a href="{{ url }}">{% attrvalue widget obj attr %}</a>
                        {% else %}
                            {% attrvalue widget obj attr %}
                        {% endif %}
                    </td>
                {% empty %}
                    {% if obj|is_sequence %}
                        {% for value in obj %}
                            <td class="controlcenter__table__td">
                                {% if url and forloop.first %}
                                    <a href="{{ url }}">{{ value }}</a>
                                {% else %}
                                    {{ value }}
                                {% endif %}
                            </td>
                        {% endfor %}
                    {% else %}
                        <td class="controlcenter__table__td">Object is not iterable.</td>
                    {% endif %}
                {% endfor %}
            </tr>
        {% empty %}
            <tr class="controlcenter__table__tr">
                <td class="controlcenter__table__td controlcenter__table__td--novalues">{{ widget.empty_message }}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>


<|start_filename|>Gruntfile.js<|end_filename|>
'use strict';

module.exports = function(grunt) {
    var css_path = 'controlcenter/static/controlcenter/css/',
        styl_path = 'controlcenter/stylus/',
        file_names = ['all', 'chartist-default-colors', 'chartist-material-colors'],
        files = {};

    for (var i = 0; i < file_names.length; i++){
        files[css_path + file_names[i] + '.css'] = styl_path + file_names[i] + '.styl';
    }

    grunt.initConfig({
        stylus: {
            build: {
                options: {
                    compress: false,
                    urlfunc: 'embedurl',
                    use: [
                        function(){
                            return require('autoprefixer-stylus')('last 2 versions');
                        }
                    ]
                },
                files: files
            }
        },

        combine_mq: {
            build: {
                src: css_path + 'all.css',
                dest: css_path + 'all.css'
            }
        },

        watch: {
            css: {
                files: styl_path + '*.styl',
                tasks: ['stylus:build', 'combine_mq:build']
            }
        }
    });

    grunt.loadNpmTasks('grunt-contrib-watch');
    grunt.loadNpmTasks('grunt-contrib-stylus');
    grunt.loadNpmTasks('grunt-combine-mq');
    grunt.registerTask('default', ['stylus', 'combine_mq']);
};

<|start_filename|>controlcenter/templates/controlcenter/snippets/generic_item.html<|end_filename|>
{% load external_link from controlcenter_tags %}

{% if item.url %}
    {% external_link item.url label=item.label %}
{% elif item.label %}
    {{ item.label }}
{% else %}
    {{ item }}
{% endif %}

{% if item.help_text %}
    <div class="help">{{ item.help_text }}</div>
{% endif %}


<|start_filename|>controlcenter/static/controlcenter/css/chartist-default-colors.css<|end_filename|>
.ct-series-a .ct-bar,
.ct-series-a .ct-line,
.ct-series-a .ct-point,
.ct-series-a .ct-slice-donut {
  stroke: #d70206;
}
.ct-series-a .ct-area,
.ct-series-a .ct-slice-pie {
  fill: #d70206;
}
.ct-legend-a {
  background: #d70206;
}
.ct-series-b .ct-bar,
.ct-series-b .ct-line,
.ct-series-b .ct-point,
.ct-series-b .ct-slice-donut {
  stroke: #f05b4f;
}
.ct-series-b .ct-area,
.ct-series-b .ct-slice-pie {
  fill: #f05b4f;
}
.ct-legend-b {
  background: #f05b4f;
}
.ct-series-c .ct-bar,
.ct-series-c .ct-line,
.ct-series-c .ct-point,
.ct-series-c .ct-slice-donut {
  stroke: #f4c63d;
}
.ct-series-c .ct-area,
.ct-series-c .ct-slice-pie {
  fill: #f4c63d;
}
.ct-legend-c {
  background: #f4c63d;
}
.ct-series-d .ct-bar,
.ct-series-d .ct-line,
.ct-series-d .ct-point,
.ct-series-d .ct-slice-donut {
  stroke: #d17905;
}
.ct-series-d .ct-area,
.ct-series-d .ct-slice-pie {
  fill: #d17905;
}
.ct-legend-d {
  background: #d17905;
}
.ct-series-e .ct-bar,
.ct-series-e .ct-line,
.ct-series-e .ct-point,
.ct-series-e .ct-slice-donut {
  stroke: #453d3f;
}
.ct-series-e .ct-area,
.ct-series-e .ct-slice-pie {
  fill: #453d3f;
}
.ct-legend-e {
  background: #453d3f;
}
.ct-series-f .ct-bar,
.ct-series-f .ct-line,
.ct-series-f .ct-point,
.ct-series-f .ct-slice-donut {
  stroke: #59922b;
}
.ct-series-f .ct-area,
.ct-series-f .ct-slice-pie {
  fill: #59922b;
}
.ct-legend-f {
  background: #59922b;
}
.ct-series-g .ct-bar,
.ct-series-g .ct-line,
.ct-series-g .ct-point,
.ct-series-g .ct-slice-donut {
  stroke: #0544d3;
}
.ct-series-g .ct-area,
.ct-series-g .ct-slice-pie {
  fill: #0544d3;
}
.ct-legend-g {
  background: #0544d3;
}
.ct-series-h .ct-bar,
.ct-series-h .ct-line,
.ct-series-h .ct-point,
.ct-series-h .ct-slice-donut {
  stroke: #6b0392;
}
.ct-series-h .ct-area,
.ct-series-h .ct-slice-pie {
  fill: #6b0392;
}
.ct-legend-h {
  background: #6b0392;
}
.ct-series-i .ct-bar,
.ct-series-i .ct-line,
.ct-series-i .ct-point,
.ct-series-i .ct-slice-donut {
  stroke: #f05b4f;
}
.ct-series-i .ct-area,
.ct-series-i .ct-slice-pie {
  fill: #f05b4f;
}
.ct-legend-i {
  background: #f05b4f;
}
.ct-series-j .ct-bar,
.ct-series-j .ct-line,
.ct-series-j .ct-point,
.ct-series-j .ct-slice-donut {
  stroke: #dda458;
}
.ct-series-j .ct-area,
.ct-series-j .ct-slice-pie {
  fill: #dda458;
}
.ct-legend-j {
  background: #dda458;
}
.ct-series-k .ct-bar,
.ct-series-k .ct-line,
.ct-series-k .ct-point,
.ct-series-k .ct-slice-donut {
  stroke: #eacf7d;
}
.ct-series-k .ct-area,
.ct-series-k .ct-slice-pie {
  fill: #eacf7d;
}
.ct-legend-k {
  background: #eacf7d;
}
.ct-series-l .ct-bar,
.ct-series-l .ct-line,
.ct-series-l .ct-point,
.ct-series-l .ct-slice-donut {
  stroke: #86797d;
}
.ct-series-l .ct-area,
.ct-series-l .ct-slice-pie {
  fill: #86797d;
}
.ct-legend-l {
  background: #86797d;
}
.ct-series-m .ct-bar,
.ct-series-m .ct-line,
.ct-series-m .ct-point,
.ct-series-m .ct-slice-donut {
  stroke: #b2c326;
}
.ct-series-m .ct-area,
.ct-series-m .ct-slice-pie {
  fill: #b2c326;
}
.ct-legend-m {
  background: #b2c326;
}
.ct-series-n .ct-bar,
.ct-series-n .ct-line,
.ct-series-n .ct-point,
.ct-series-n .ct-slice-donut {
  stroke: #6188e2;
}
.ct-series-n .ct-area,
.ct-series-n .ct-slice-pie {
  fill: #6188e2;
}
.ct-legend-n {
  background: #6188e2;
}
.ct-series-o .ct-bar,
.ct-series-o .ct-line,
.ct-series-o .ct-point,
.ct-series-o .ct-slice-donut {
  stroke: #a748ca;
}
.ct-series-o .ct-area,
.ct-series-o .ct-slice-pie {
  fill: #a748ca;
}
.ct-legend-o {
  background: #a748ca;
}


<|start_filename|>package.json<|end_filename|>
{
  "name": "django-controlcenter",
  "author": "<NAME>",
  "dependencies": {
    "autoprefixer-stylus": "*",
    "grunt": "*",
    "grunt-combine-mq": "*",
    "grunt-contrib-stylus": "*",
    "grunt-contrib-watch": "*",
    "load-grunt-tasks": "*"
  },
  "engine": "node >= 0.10"
}


<|start_filename|>controlcenter/static/controlcenter/css/all.css<|end_filename|>
.controlcenter {
  line-height: 1.4;
  font-size: 12px;
  color: #333;
  width: 100%;
}

.controlcenter,.controlcenter *,.controlcenter *::before,.controlcenter *::after {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

.controlcenter__masonry {
  width: 100%;
  overflow: hidden;
  margin-bottom: 20px;
}

.controlcenter__masonry__offset {
  overflow: hidden;
  margin: -20px 0 0 -20px;
}

.controlcenter__masonry__block {
  float: left;
  padding: 20px 0 0 20px;
  width: 100%;
}

.controlcenter__masonry__block--sizer {
  display: block;
  padding: 0;
  height: 0;
}

.controlcenter__widget {
  overflow: hidden;
  position: relative;
  border: 1px solid #e3e3e3;
  border-radius: 3px;
  background-color: #f2f2f2;
  background-repeat: repeat-x, repeat;
  background-size: auto 35px, auto;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABGCAAAAAAoI6GBAAAAOElEQVR4ATWNhQEAMAjDoP/fO3cJkwrmTU1dprmfX/TLwfefA6J2xWEfh4wJ1NJLLTtuNbuYEpUWQ5QZZ928F4cAAAAASUVORK5CYII="), url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAAAAADFHGIkAAAAQElEQVR4AXXIOQHAAACEMPzbxMEp6NafjMG7XYiXeImXeImXeImXeImXeImXeImX+BE/4kf8iB/xI37Ej/gRvwPQEA5XmMlaIAAAAAB<KEY>);
}

.controlcenter__widget__tab,.controlcenter__widget__subtitle {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  outline: none;
  float: left;
  height: 35px;
  line-height: 35px;
  padding: 0 14px;
  position: relative;
  cursor: pointer;
  text-transform: uppercase;
  font-size: 11px;
  font-weight: bold;
  color: #aaa;
}

.controlcenter__widget__tab--active,.controlcenter__widget__subtitle--active {
  cursor: default;
  color: #333;
}

.controlcenter__widget__tab--active + .controlcenter__widget__body,.controlcenter__widget__subtitle--active + .controlcenter__widget__body {
  visibility: visible;
}

.controlcenter__widget__tab--active + .controlcenter__widget__body + .controlcenter__widget__out,.controlcenter__widget__subtitle--active + .controlcenter__widget__body + .controlcenter__widget__out {
  display: block;
}

.controlcenter__widget__body {
  overflow: auto;
  visibility: hidden;
  margin: 35px 0 0 -100%;
  width: 100%;
  float: right;
  background: #fff;
  -webkit-box-shadow: 0 2px 2px rgba(0,0,0,0.1);
  box-shadow: 0 2px 2px rgba(0,0,0,0.1);
  position: relative;
  z-index: 1;
}

.controlcenter__widget__out {
  opacity: 0.5;
  display: none;
  position: absolute;
  z-index: 2;
  outline: none;
  top: 0;
  right: 0;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQ<KEY>);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 12px;
  cursor: pointer;
  width: 20px;
  height: 20px;
}

.controlcenter__widget__out:hover,.controlcenter__widget__out:focus {
  opacity: 1;
}

.controlcenter__nav {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  outline: none;
  overflow: hidden;
  font-size: 0;
  text-align: center;
  margin-bottom: 15px;
  white-space: nowrap;
}

.controlcenter__nav__item {
  display: inline-block;
  vertical-align: top;
  text-decoration: none !important;
  border: 1px solid #e3e3e3;
  background: #f2f2f2;
  line-height: 26px;
  padding: 0 15px;
  font-size: 12px;
  margin-right: -1px;
}

.controlcenter__nav__item:first-child {
  border-radius: 26px 0 0 26px;
}

.controlcenter__nav__item:last-child {
  border-radius: 0 26px 26px 0;
  margin-right: 0;
}

.controlcenter__nav__item--active {
  font-weight: bold;
  background: #eee;
  cursor: default;
}

.controlcenter__table {
  display: table;
  width: 100%;
  border: 0;
}

.controlcenter__table__th,.controlcenter__table__td {
  border: 0;
  vertical-align: top;
  padding: 7px 7px;
  background: none;
  font-size: 12px;
  line-height: 1.4;
}

.controlcenter__table__th:first-child,.controlcenter__table__td:first-child {
  padding-left: 14px;
}

.controlcenter__table__th:last-child,.controlcenter__table__td:last-child {
  padding-right: 14px;
}

.controlcenter__table__th--pk,.controlcenter__table__td--pk,.controlcenter__table__th--id,.controlcenter__table__td--id,.controlcenter__table__th--row-counter,.controlcenter__table__td--row-counter {
  width: 1%;
}

.controlcenter__table__th--row-counter,.controlcenter__table__td--row-counter {
  text-align: right;
}

.controlcenter__table__th {
  color: #888;
  text-transform: none;
}

.controlcenter__table__td {
  word-wrap: break-word;
}

.controlcenter__table__td--row-counter {
  color: #ccc;
}

.controlcenter__table__td--novalues {
  color: #ccc;
  text-align: center;
}

.controlcenter__table__thead .controlcenter__table__th {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  outline: none;
  cursor: default;
  background: #f2f2f2;
  font-weight: normal;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th {
  cursor: pointer;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th:hover {
  color: #aaa;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th::after {
  content: "";
  visibility: hidden;
  display: inline-block;
  vertical-align: inherit;
  height: 0;
  width: 0;
  border-width: 5px;
  border-style: solid;
  border-color: transparent;
  margin-right: 1px;
  margin-left: 10px;
  float: right;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th[data-sorted='true']::after {
  visibility: visible;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th[data-sorted-direction='ascending'] {
  color: #333 !important;
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0,0,0,0)), to(rgba(0,0,0,0.035)));
  background-image: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.035) 100%);
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th[data-sorted-direction='ascending']::after {
  border-bottom-color: inherit;
  margin-top: 1px;
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th[data-sorted-direction='descending'] {
  color: #333 !important;
  background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0,0,0,0)), to(rgba(0,0,0,0.05)));
  background-image: linear-gradient(to top, rgba(0,0,0,0) 0%, rgba(0,0,0,0.05) 100%);
}

.controlcenter__table[data-sortable] .controlcenter__table__thead .controlcenter__table__th[data-sorted-direction='descending']::after {
  border-top-color: inherit;
  margin-top: 6px;
}

.controlcenter__table__tbody .controlcenter__table__tr {
  background: #fff;
}

.controlcenter__table__tbody .controlcenter__table__tr:nth-child(odd) {
  background: #fafafa;
}

.controlcenter__chart-legend {
  overflow: hidden;
  padding: 8px;
  background-color: #f8f8f8;
}

.controlcenter__chart-legend__offset {
  margin: -15px 0 0 -15px;
  overflow: hidden;
}

.controlcenter__chart-legend__series {
  float: left;
  margin: 15px 0 0 15px;
  font-size: 11px;
  line-height: 1;
  padding: 2px;
}

.controlcenter__chart-legend__series__color {
  float: left;
  width: 10px;
  height: 10px;
  margin: 1px;
  border-radius: 50%;
}

.controlcenter__chart-legend__series__label {
  margin-left: 15px;
}

.ct-chart:empty {
  background-size: 28px auto;
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAAqAQMAAADcVgrNAAAABlBMVEUAAAD/UE2pKe1bAAAAAXRSTlMAQObYZgAAACZJREFUeAFj+MAABPYHyKEZ/1GDrm8gku7/SBeaAQwI0v8hAJ0GALO/lSB/0yDtAAAAAElFTkSuQmCC");
  background-position: center;
  background-repeat: no-repeat;
}

#grp-content-title {
  display: none;
}

#grp-content {
  padding-bottom: 0;
}

#container {
  min-width: 320px !important;
}

#content > h1 {
  display: none;
}

@media (min-width: 768px) {
  .controlcenter__masonry__block--w1 {
    width: 50%;
  }

  .controlcenter__masonry__block--w2 {
    width: 50%;
  }

  .controlcenter__masonry__block--w3 {
    width: 50%;
  }

  .controlcenter__masonry__block--w4,.controlcenter__masonry__block--w5,.controlcenter__masonry__block--w6 {
    width: 100%;
  }
}

@media (min-width: 1000px) {
  .controlcenter__masonry__block--w1 {
    width: 25%;
  }

  .controlcenter__masonry__block--w2 {
    width: 33.33333333333333%;
  }

  .controlcenter__masonry__block--w3 {
    width: 50%;
  }

  .controlcenter__masonry__block--w4 {
    width: 66.66666666666666%;
  }

  .controlcenter__masonry__block--w5 {
    width: 75%;
  }

  .controlcenter__masonry__block--w6 {
    width: 100%;
  }
}

@media (max-width: 999px) {
  #content,.breadcrumbs,#header {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
}

@media (max-width: 767px) {
  .controlcenter__masonry__offset {
    position: relative !important;
    height: auto !important;
  }

  .controlcenter__masonry__block {
    position: relative !important;
    left: auto !important;
    top: auto !important;
  }

  .controlcenter__widget__tab--active + .controlcenter__widget__body,.controlcenter__widget__subtitle--active + .controlcenter__widget__body {
    position: relative;
  }

  .controlcenter__widget__body {
    position: absolute;
  }
}


<|start_filename|>controlcenter/static/controlcenter/js/scripts.js<|end_filename|>
document.addEventListener('DOMContentLoaded', function(){
    // GRID
    var msnry = new Masonry('.controlcenter__masonry__offset', {
        itemSelector: '.controlcenter__masonry__block',
        columnWidth: '.controlcenter__masonry__block--sizer',
        percentPosition: true,
        transitionDuration: 0
    });

    // TABS
    var tab_klass = 'controlcenter__widget__tab',
        tab_klass_active = tab_klass + '--active',
        tab_nodes = document.querySelectorAll('.' + tab_klass);

    [].map.call(tab_nodes, function(tab){
        tab.addEventListener('click', function(e){
            [].map.call(tab.parentNode.childNodes, function(child){
                if (child.classList){
                    child.classList.remove(tab_klass_active);
                }
            });
            tab.classList.add(tab_klass_active);
        }, false);
    });
}, false);


<|start_filename|>controlcenter/templates/controlcenter/dashboard.html<|end_filename|>
{% extends "admin/base_site.html" %}
{% load cache controlcenter_tags %}

{% block title %}{{ dashboard.title }}{% endblock %}
{% block extrahead %}
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {{ dashboard.media }}
{% endblock %}
{% block content %}
<div class="controlcenter" id="{{ dashboard.slug }}">
    {% if dashboards|length > 1 %}
        <nav class="controlcenter__nav">
            {% for item in dashboards %}
                {% if dashboard == item %}
                    <div class="controlcenter__nav__item controlcenter__nav__item--active">{{ item.title }}</div>
                {% else %}
                    <a class="controlcenter__nav__item" href="{{ item.get_absolute_url }}">{{ item.title }}</a>
                {% endif %}
            {% endfor %}
        </nav>
    {% endif %}
    <div class="controlcenter__masonry">
        <div class="controlcenter__masonry__offset">
            {% for group in groups %}
                <div id="{{ group.get_id }}" class="controlcenter__masonry__block controlcenter__masonry__block--w{{ group.get_width }} {{ group.get_class }}" {% for key, value in group.get_attrs.vieitems %}{{ key }}="{{ value }}"{% endfor %}>
                    <div class="controlcenter__widget">
                        {% for widget in group %}
                            <div class="controlcenter__widget__tab{% if forloop.first %} controlcenter__widget__tab--active{% endif %}">{{ widget.title }}</div>
                            <div class="controlcenter__widget__body" {% if group.get_height %}style="max-height:{{ group.get_height  }}px"{% endif %}>
                                {% if widget.subtitle %}
                                    <div class="controlcenter__widget__subtitle">{{ widget.subtitle }}</div>
                                {% endif %}
                                {% if widget.cache_timeout %}
                                    {% cache widget.cache_timeout controlcenter_widget widget.slug %}
                                        {% include widget.get_template_name %}
                                    {% endcache %}
                                {% else %}
                                    {% include widget.get_template_name %}
                                {% endif %}
                            </div>
                            {% if widget.changelist_url %}
                                <a class="controlcenter__widget__out" href="{{ widget|changelist_url }}" title="Show more"></a>
                            {% endif %}
                        {% endfor %}
                    </div>
                </div>
            {% endfor %}
            <div class="controlcenter__masonry__block--sizer controlcenter__masonry__block--w1"></div>
        </div>
    </div>
</div>
{% endblock %}


<|start_filename|>controlcenter/static/controlcenter/css/chartist-material-colors.css<|end_filename|>
.ct-series-a .ct-bar,
.ct-series-a .ct-line,
.ct-series-a .ct-point,
.ct-series-a .ct-slice-donut {
  stroke: #f05b4f;
}
.ct-series-a .ct-area,
.ct-series-a .ct-slice-pie {
  fill: #f05b4f;
}
.ct-legend-a {
  background: #f05b4f;
}
.ct-series-b .ct-bar,
.ct-series-b .ct-line,
.ct-series-b .ct-point,
.ct-series-b .ct-slice-donut {
  stroke: #2196f3;
}
.ct-series-b .ct-area,
.ct-series-b .ct-slice-pie {
  fill: #2196f3;
}
.ct-legend-b {
  background: #2196f3;
}
.ct-series-c .ct-bar,
.ct-series-c .ct-line,
.ct-series-c .ct-point,
.ct-series-c .ct-slice-donut {
  stroke: #4caf50;
}
.ct-series-c .ct-area,
.ct-series-c .ct-slice-pie {
  fill: #4caf50;
}
.ct-legend-c {
  background: #4caf50;
}
.ct-series-d .ct-bar,
.ct-series-d .ct-line,
.ct-series-d .ct-point,
.ct-series-d .ct-slice-donut {
  stroke: #ffc107;
}
.ct-series-d .ct-area,
.ct-series-d .ct-slice-pie {
  fill: #ffc107;
}
.ct-legend-d {
  background: #ffc107;
}
.ct-series-e .ct-bar,
.ct-series-e .ct-line,
.ct-series-e .ct-point,
.ct-series-e .ct-slice-donut {
  stroke: #673ab7;
}
.ct-series-e .ct-area,
.ct-series-e .ct-slice-pie {
  fill: #673ab7;
}
.ct-legend-e {
  background: #673ab7;
}
.ct-series-f .ct-bar,
.ct-series-f .ct-line,
.ct-series-f .ct-point,
.ct-series-f .ct-slice-donut {
  stroke: #03a9f4;
}
.ct-series-f .ct-area,
.ct-series-f .ct-slice-pie {
  fill: #03a9f4;
}
.ct-legend-f {
  background: #03a9f4;
}
.ct-series-g .ct-bar,
.ct-series-g .ct-line,
.ct-series-g .ct-point,
.ct-series-g .ct-slice-donut {
  stroke: #8bc34a;
}
.ct-series-g .ct-area,
.ct-series-g .ct-slice-pie {
  fill: #8bc34a;
}
.ct-legend-g {
  background: #8bc34a;
}
.ct-series-h .ct-bar,
.ct-series-h .ct-line,
.ct-series-h .ct-point,
.ct-series-h .ct-slice-donut {
  stroke: #ff9800;
}
.ct-series-h .ct-area,
.ct-series-h .ct-slice-pie {
  fill: #ff9800;
}
.ct-legend-h {
  background: #ff9800;
}
.ct-series-i .ct-bar,
.ct-series-i .ct-line,
.ct-series-i .ct-point,
.ct-series-i .ct-slice-donut {
  stroke: #e91e63;
}
.ct-series-i .ct-area,
.ct-series-i .ct-slice-pie {
  fill: #e91e63;
}
.ct-legend-i {
  background: #e91e63;
}
.ct-series-j .ct-bar,
.ct-series-j .ct-line,
.ct-series-j .ct-point,
.ct-series-j .ct-slice-donut {
  stroke: #3f51b5;
}
.ct-series-j .ct-area,
.ct-series-j .ct-slice-pie {
  fill: #3f51b5;
}
.ct-legend-j {
  background: #3f51b5;
}
.ct-series-k .ct-bar,
.ct-series-k .ct-line,
.ct-series-k .ct-point,
.ct-series-k .ct-slice-donut {
  stroke: #009688;
}
.ct-series-k .ct-area,
.ct-series-k .ct-slice-pie {
  fill: #009688;
}
.ct-legend-k {
  background: #009688;
}
.ct-series-l .ct-bar,
.ct-series-l .ct-line,
.ct-series-l .ct-point,
.ct-series-l .ct-slice-donut {
  stroke: #cddc39;
}
.ct-series-l .ct-area,
.ct-series-l .ct-slice-pie {
  fill: #cddc39;
}
.ct-legend-l {
  background: #cddc39;
}
.ct-series-m .ct-bar,
.ct-series-m .ct-line,
.ct-series-m .ct-point,
.ct-series-m .ct-slice-donut {
  stroke: #795548;
}
.ct-series-m .ct-area,
.ct-series-m .ct-slice-pie {
  fill: #795548;
}
.ct-legend-m {
  background: #795548;
}
.ct-series-n .ct-bar,
.ct-series-n .ct-line,
.ct-series-n .ct-point,
.ct-series-n .ct-slice-donut {
  stroke: #9c27b0;
}
.ct-series-n .ct-area,
.ct-series-n .ct-slice-pie {
  fill: #9c27b0;
}
.ct-legend-n {
  background: #9c27b0;
}
.ct-series-o .ct-bar,
.ct-series-o .ct-line,
.ct-series-o .ct-point,
.ct-series-o .ct-slice-donut {
  stroke: #00bcd4;
}
.ct-series-o .ct-area,
.ct-series-o .ct-slice-pie {
  fill: #00bcd4;
}
.ct-legend-o {
  background: #00bcd4;
}
