Cloned DMOJ
10
resources/admin/css/pagedown.css
Normal file
|
@ -0,0 +1,10 @@
|
|||
.wmd-wrapper {
|
||||
padding-right: 15px !important;
|
||||
}
|
||||
|
||||
|
||||
.wmd-preview {
|
||||
margin-top: 15px;
|
||||
padding: 15px;
|
||||
word-wrap: break-word;
|
||||
}
|
3
resources/admin/css/select2bootstrap.css
Normal file
|
@ -0,0 +1,3 @@
|
|||
.select2-container {
|
||||
min-width: 220px !important;
|
||||
}
|
674
resources/base.scss
Normal file
|
@ -0,0 +1,674 @@
|
|||
@charset "UTF-8";
|
||||
|
||||
@import "vars";
|
||||
|
||||
@-ms-viewport {
|
||||
min-width: 480px;
|
||||
max-width: device-width;
|
||||
}
|
||||
|
||||
@-o-viewport {
|
||||
min-width: 480px;
|
||||
max-width: device-width;
|
||||
}
|
||||
|
||||
@viewport {
|
||||
min-width: 480px;
|
||||
max-width: device-width;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #1958c1;
|
||||
|
||||
&:hover {
|
||||
color: #0645ad;
|
||||
}
|
||||
|
||||
&:active {
|
||||
color: #faa700;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
|
||||
// height: auto
|
||||
}
|
||||
|
||||
.full {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.sortable thead {
|
||||
background-color: $background_gray;
|
||||
color: #666;
|
||||
font-weight: bold;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
th {
|
||||
&.tablesorter-headerAsc:after {
|
||||
content: " ▴";
|
||||
}
|
||||
|
||||
&.tablesorter-headerDesc:after {
|
||||
content: " ▾";
|
||||
}
|
||||
}
|
||||
|
||||
div {
|
||||
&.tablesorter-header-inner {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 0;
|
||||
border: 0;
|
||||
font-style: italic;
|
||||
border-bottom: 1px solid $border_gray;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.dashed {
|
||||
border-bottom: 1px dashed $border_gray;
|
||||
}
|
||||
|
||||
th {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-area {
|
||||
display: inline-block;
|
||||
background: $background_light_gray;
|
||||
padding: 5px 10px 10px 15px;
|
||||
border-radius: $widget_border_radius;
|
||||
border: 1px solid $border_gray;
|
||||
}
|
||||
|
||||
div.info-float {
|
||||
float: right;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
footer {
|
||||
color: gray;
|
||||
display: block;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
margin: 0 auto;
|
||||
max-width: 107em;
|
||||
font-size: $base_font_size;
|
||||
line-height: 1.231;
|
||||
background: $background_light_gray;
|
||||
font-family: "Segoe UI", "Lucida Grande", Arial, sans-serif;
|
||||
color: #000;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.unselectable {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 5em;
|
||||
letter-spacing: -2px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
b {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight: 400;
|
||||
font-size: 2em;
|
||||
border-radius: $widget_border_radius;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-weight: 400;
|
||||
font-size: 1.4em;
|
||||
border-radius: $widget_border_radius;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.1em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
header {
|
||||
background: #111;
|
||||
color: #aaa;
|
||||
text-align: left;
|
||||
display: block;
|
||||
height: 60px;
|
||||
margin-top: -10px;
|
||||
padding: 10px 10px 10px 5%;
|
||||
}
|
||||
|
||||
#user-links {
|
||||
top: 0;
|
||||
right: 0;
|
||||
position: absolute;
|
||||
color: #5c5954;
|
||||
|
||||
.anon {
|
||||
padding-right: 10px;
|
||||
display: inline-flex;
|
||||
min-height: 100%;
|
||||
align-items: center;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
li {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
& > ul {
|
||||
display: block;
|
||||
margin: 0;
|
||||
|
||||
& > li > a > span {
|
||||
font-size: 13px;
|
||||
height: 36px;
|
||||
padding-top: 8px;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
|
||||
& > img {
|
||||
vertical-align: middle;
|
||||
border-radius: $widget_border_radius;
|
||||
display: inline;
|
||||
margin: 2px 6px 0 5px;
|
||||
}
|
||||
|
||||
& > span {
|
||||
color: #eee;
|
||||
vertical-align: middle;
|
||||
display: inline;
|
||||
margin-top: 11px;
|
||||
margin-right: 9px;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#nav-shadow {
|
||||
height: 3px;
|
||||
background: linear-gradient(rgba(0, 0, 0, 0.5), transparent);
|
||||
}
|
||||
|
||||
#nav-container {
|
||||
background: $widget_black;
|
||||
|
||||
// opacity: 0.77
|
||||
// filter: alpha(opacity=77)
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
nav {
|
||||
position: relative;
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
z-index: 500;
|
||||
text-align: left;
|
||||
|
||||
ul {
|
||||
margin: 0 0 0 -5px !important;
|
||||
padding: 0 0 0 1%;
|
||||
text-align: left;
|
||||
display: inline;
|
||||
list-style: none;
|
||||
background: transparent;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
color: #FFF;
|
||||
text-transform: uppercase;
|
||||
position: relative;
|
||||
|
||||
&.home-nav-element a {
|
||||
padding: 0;
|
||||
height: 44px;
|
||||
|
||||
&:hover {
|
||||
border-bottom: none;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
a, button {
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
vertical-align: middle;
|
||||
color: #FFF;
|
||||
padding: 13px 7px;
|
||||
height: 18px;
|
||||
|
||||
&:link {
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #FFF;
|
||||
background: rgba(255, 255, 255, 0.25);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: #FFF;
|
||||
background: $highlight_blue;
|
||||
}
|
||||
|
||||
.nav-expand {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
left: 5px;
|
||||
display: none;
|
||||
color: #fff;
|
||||
background: $widget_black;
|
||||
margin: 0 !important;
|
||||
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4);
|
||||
|
||||
li {
|
||||
&:first-child {
|
||||
a.active {
|
||||
border-top: 1px solid $widget_black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
|
||||
a, button {
|
||||
padding: 8px 20px 8px 8px !important;
|
||||
font-size: 0.8em;
|
||||
line-height: 18px;
|
||||
display: block;
|
||||
border-left: 4px solid $highlight_blue;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
background: none;
|
||||
text-align: left;
|
||||
border: none;
|
||||
width: 100%;
|
||||
border-radius: 0;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
&:hover > ul, &:active > ul, &:focus > ul {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
&.home-nav-element a:hover {
|
||||
border-bottom: 0;
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-divider {
|
||||
width: 1px;
|
||||
vertical-align: middle;
|
||||
padding-left: 3px;
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
margin-right: 1px;
|
||||
border-right: 3px solid rgba(255, 255, 255, 0.15);
|
||||
}
|
||||
}
|
||||
|
||||
hr {
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
#content {
|
||||
margin: 52px auto auto;
|
||||
|
||||
// Header
|
||||
width: 90%;
|
||||
height: 100%;
|
||||
min-height: 25em;
|
||||
display: block;
|
||||
|
||||
.title {
|
||||
color: #393630;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center;
|
||||
height: 40px;
|
||||
border-top: 1px solid $border_gray;
|
||||
background: #ededed;
|
||||
}
|
||||
|
||||
html {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
display: inline;
|
||||
}
|
||||
|
||||
noscript #noscript {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 111%;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
background: $announcement_red;
|
||||
text-align: center;
|
||||
padding: 5px 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
position: fixed;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
#announcement {
|
||||
font-family: Arial, sans-serif;
|
||||
font-size: 111%;
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
background: $announcement_red;
|
||||
text-align: center;
|
||||
max-width: 30%;
|
||||
position: fixed;
|
||||
border-radius: $widget_border_radius;
|
||||
z-index: 100;
|
||||
bottom: -4px;
|
||||
right: -4px;
|
||||
padding: 5px 6px 6px 5px;
|
||||
|
||||
a {
|
||||
color: orange;
|
||||
}
|
||||
}
|
||||
|
||||
.time {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.toggle {
|
||||
font-weight: bold;
|
||||
|
||||
.fa {
|
||||
transition: transform 0.4s;
|
||||
}
|
||||
|
||||
&.open .fa {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
#form-errors, .form-errors {
|
||||
background: rgba(255, 0, 0, 0.3);
|
||||
border: 3px solid red;
|
||||
border-radius: $widget_border_radius;
|
||||
padding: 0 1em 0.1em 1em;
|
||||
margin: 0.3em 0 0.5em 0;
|
||||
}
|
||||
|
||||
#navicon {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#nav-placeholder {
|
||||
height: 47px;
|
||||
max-width: 107em;
|
||||
background: white;
|
||||
border-right: 1px solid $border_gray;
|
||||
border-left: 1px solid $border_gray;
|
||||
}
|
||||
|
||||
#contest-info {
|
||||
font-size: 1.25em;
|
||||
border: 5px solid $highlight_blue;
|
||||
border-left: 5px dotted white;
|
||||
border-radius: 0 $widget_border_radius $widget_border_radius 0;
|
||||
background: rgba(0, 0, 0, 0.77);
|
||||
z-index: 100000;
|
||||
padding: 10px 12px;
|
||||
color: white;
|
||||
cursor: move;
|
||||
position: fixed;
|
||||
left: 20px;
|
||||
top: 90%;
|
||||
display: none;
|
||||
|
||||
a {
|
||||
height: 1.4em;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
color: white;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
#contest-time-remaining {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.spacer {
|
||||
display: inline-block;
|
||||
flex: 1 1 1px;
|
||||
}
|
||||
|
||||
#user-links {
|
||||
height: 100%;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
height: 100%;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#page-container {
|
||||
min-height: 100%;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
border-right: 1px solid $border_gray;
|
||||
border-left: 1px solid $border_gray;
|
||||
background: white;
|
||||
}
|
||||
|
||||
// border-bottom: 1px solid rgb(204, 204, 204)
|
||||
// border-bottom-left-radius: 4px
|
||||
// border-bottom-right-radius: 4px
|
||||
|
||||
#content-body {
|
||||
padding-bottom: 4em;
|
||||
}
|
||||
|
||||
// Offset the footer
|
||||
|
||||
.title-line-action {
|
||||
float: right;
|
||||
margin-top: 1.2em;
|
||||
}
|
||||
|
||||
math {
|
||||
font-size: 1.155em;
|
||||
}
|
||||
|
||||
.MathJax {
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media(max-width: 1498px) {
|
||||
#page-container {
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
#navigation {
|
||||
height: 36px;
|
||||
}
|
||||
|
||||
#navicon {
|
||||
transition-duration: 0.25s;
|
||||
display: block;
|
||||
line-height: 26px;
|
||||
font-size: 2em;
|
||||
color: #FFF;
|
||||
padding: 0 0.25em;
|
||||
margin: 4px 0.25em;
|
||||
white-space: nowrap;
|
||||
float: left;
|
||||
|
||||
&.hover {
|
||||
color: #4db7fe;
|
||||
text-shadow: 0 0 5px $highlight_blue;
|
||||
transition-duration: 0.25s;
|
||||
}
|
||||
}
|
||||
|
||||
#nav-list {
|
||||
display: none;
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
border-left: 4px solid $highlight_blue;
|
||||
position: fixed;
|
||||
top: 36px;
|
||||
background: $widget_black;
|
||||
bottom: 0;
|
||||
width: 8em;
|
||||
left: 0;
|
||||
box-shadow: none;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
|
||||
.nav-expand {
|
||||
float: right;
|
||||
display: block;
|
||||
height: inherit;
|
||||
margin: (-13px) -7px;
|
||||
padding: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
left: 8em;
|
||||
top: auto;
|
||||
bottom: auto;
|
||||
margin-top: -36px;
|
||||
}
|
||||
|
||||
&.home-nav-element {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#user-links {
|
||||
bottom: 6px;
|
||||
right: 6px;
|
||||
position: absolute;
|
||||
|
||||
& > ul > li {
|
||||
& > a > span {
|
||||
padding-top: 4px;
|
||||
height: 32px;
|
||||
}
|
||||
|
||||
& > ul {
|
||||
left: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
width: auto;
|
||||
padding: 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media not all and (max-width: 760px) {
|
||||
#nav-list {
|
||||
display: block !important;
|
||||
|
||||
li {
|
||||
&.home-menu-item {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:not(:hover) > ul {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
ul {
|
||||
left: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
BIN
resources/blank.gif
Normal file
After Width: | Height: | Size: 43 B |
122
resources/blog.scss
Normal file
|
@ -0,0 +1,122 @@
|
|||
@import "vars";
|
||||
|
||||
.blog-content {
|
||||
padding-right: 0em;
|
||||
flex: 73.5%;
|
||||
vertical-align: top;
|
||||
margin-right: 0;
|
||||
|
||||
.post {
|
||||
border-bottom: 2px solid $border_gray;
|
||||
padding-top: 0.5em;
|
||||
|
||||
.title {
|
||||
font-weight: 600;
|
||||
font-size: 1.7em;
|
||||
|
||||
a {
|
||||
color: #5b80b9 !important;
|
||||
|
||||
&:hover {
|
||||
color: #0645ad !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.blog-sidebar {
|
||||
flex: 26.5%;
|
||||
}
|
||||
|
||||
.blog-sidebox {
|
||||
h3 {
|
||||
padding-bottom: 0.25em;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
padding-left: 1em;
|
||||
padding-right: 0.5em;
|
||||
|
||||
li {
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
}
|
||||
|
||||
.contest {
|
||||
padding: 1.25em 0 1.5em 0;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid $border_gray;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.name {
|
||||
font-size: 1.25em;
|
||||
font-weight: 500;
|
||||
|
||||
a {
|
||||
color: #5b80b9 !important;
|
||||
|
||||
&:hover {
|
||||
color: #0645ad !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 800px) {
|
||||
.blog-content, .blog-sidebar {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.blog-content {
|
||||
margin-right: 1em !important;
|
||||
}
|
||||
|
||||
#mobile.tabs {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#blog-container {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
#mobile.tabs {
|
||||
margin: 0;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.rssatom {
|
||||
text-align: right;
|
||||
padding: 0.25em;
|
||||
display: block;
|
||||
|
||||
span {
|
||||
width: 1em;
|
||||
height: 1em;
|
||||
padding: 0.1em;
|
||||
font-size: 0.8em;
|
||||
color: white;
|
||||
border-radius: 0.2em;
|
||||
display: inline-block;
|
||||
margin-right: 0.2em;
|
||||
border: 1px solid rgb(201, 90, 18);
|
||||
background: #fb9e39;
|
||||
background: linear-gradient(135deg, #e46d27 0, #fb9e39 47%, #e46d27 100%);
|
||||
|
||||
i {
|
||||
text-align: center;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
136
resources/comments.scss
Normal file
|
@ -0,0 +1,136 @@
|
|||
@import "vars";
|
||||
|
||||
.comment-score {
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
a {
|
||||
&.upvote-link, &.downvote-link {
|
||||
color: black;
|
||||
}
|
||||
|
||||
&.voted {
|
||||
text-shadow: 0 0 4px black, 0 0 9px blue;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-area {
|
||||
margin-right: 30px;
|
||||
|
||||
h2 {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.no-comments-message {
|
||||
margin-top: -15px;
|
||||
margin-left: 2.75em;
|
||||
}
|
||||
|
||||
.comment-author {
|
||||
font-weight: bold;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.comment-header {
|
||||
color: rgba(1, 1, 1, 1);
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
padding: 5px 10px 5px 5px;
|
||||
margin-left: 30px;
|
||||
border: 1px solid $border_gray;
|
||||
border-radius: $widget_border_radius;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.comment-lock {
|
||||
width: 100%;
|
||||
padding-left: 14px;
|
||||
}
|
||||
|
||||
.comment-spacer {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.comment-edits:not(:empty) {
|
||||
padding-right: 2px;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.comment-operation {
|
||||
float: right;
|
||||
|
||||
.fa {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
a + a {
|
||||
padding-left: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.comments.top-level-comments {
|
||||
margin-right: -26px;
|
||||
}
|
||||
|
||||
.comment-submit {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.comment-post-wrapper {
|
||||
div {
|
||||
padding-bottom: 2px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
input, textarea {
|
||||
min-width: 100%;
|
||||
max-width: 100%;
|
||||
|
||||
// Hack for 4k on Chrome
|
||||
font-size: $base_font_size;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-box {
|
||||
border-radius: $widget_border_radius;
|
||||
padding: 5px 10px 10px 15px;
|
||||
border: 1px solid $border_gray;
|
||||
background: rgba(0, 0, 0, 0.01);
|
||||
}
|
||||
|
||||
.comment {
|
||||
list-style: none none;
|
||||
border-radius: $widget_border_radius;
|
||||
margin: (-50px) -4px 10px -40px;
|
||||
padding-top: 50px;
|
||||
|
||||
&:target > .comment-box {
|
||||
border-left: 10px solid $highlight_blue;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
&:before {
|
||||
display: block;
|
||||
content: " ";
|
||||
margin-top: -50px;
|
||||
height: 50px;
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-author {
|
||||
margin-bottom: 1em;
|
||||
|
||||
img {
|
||||
width: 1.25em;
|
||||
height: 1.25em;
|
||||
border-radius: 0.2em;
|
||||
vertical-align: bottom;
|
||||
margin-right: 0.3em;
|
||||
}
|
||||
}
|
||||
|
||||
.comment-body {
|
||||
word-wrap: break-word;
|
||||
}
|
355
resources/common.js
Normal file
|
@ -0,0 +1,355 @@
|
|||
// IE 8
|
||||
if (!Array.prototype.indexOf) {
|
||||
Array.prototype.indexOf = function (obj) {
|
||||
for (var i = 0; i < this.length; i++) {
|
||||
if (this[i] == obj) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!String.prototype.startsWith) {
|
||||
String.prototype.startsWith = function (searchString, position) {
|
||||
return this.substr(position || 0, searchString.length) === searchString;
|
||||
};
|
||||
}
|
||||
|
||||
if (!String.prototype.endsWith) {
|
||||
String.prototype.endsWith = function (searchString, position) {
|
||||
var subjectString = this.toString();
|
||||
if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {
|
||||
position = subjectString.length;
|
||||
}
|
||||
position -= searchString.length;
|
||||
var lastIndex = subjectString.lastIndexOf(searchString, position);
|
||||
return lastIndex !== -1 && lastIndex === position;
|
||||
};
|
||||
}
|
||||
|
||||
// http://stackoverflow.com/a/1060034/1090657
|
||||
$(function () {
|
||||
var hidden = 'hidden';
|
||||
|
||||
// Standards:
|
||||
if (hidden in document)
|
||||
document.addEventListener('visibilitychange', onchange);
|
||||
else if ((hidden = 'mozHidden') in document)
|
||||
document.addEventListener('mozvisibilitychange', onchange);
|
||||
else if ((hidden = 'webkitHidden') in document)
|
||||
document.addEventListener('webkitvisibilitychange', onchange);
|
||||
else if ((hidden = 'msHidden') in document)
|
||||
document.addEventListener('msvisibilitychange', onchange);
|
||||
// IE 9 and lower:
|
||||
else if ('onfocusin' in document)
|
||||
document.onfocusin = document.onfocusout = onchange;
|
||||
// All others:
|
||||
else
|
||||
window.onpageshow = window.onpagehide
|
||||
= window.onfocus = window.onblur = onchange;
|
||||
|
||||
function onchange(evt) {
|
||||
var v = 'window-visible', h = 'window-hidden', evtMap = {
|
||||
focus: v, focusin: v, pageshow: v, blur: h, focusout: h, pagehide: h
|
||||
};
|
||||
|
||||
evt = evt || window.event;
|
||||
if (evt.type in evtMap)
|
||||
document.body.className = evtMap[evt.type];
|
||||
else
|
||||
document.body.className = this[hidden] ? 'window-hidden' : 'window-visible';
|
||||
|
||||
if ('$' in window)
|
||||
$(window).trigger('dmoj:' + document.body.className);
|
||||
}
|
||||
|
||||
// set the initial state (but only if browser supports the Page Visibility API)
|
||||
if (document[hidden] !== undefined)
|
||||
onchange({type: document[hidden] ? 'blur' : 'focus'});
|
||||
});
|
||||
|
||||
function register_toggle(link) {
|
||||
link.click(function () {
|
||||
var toggled = link.next('.toggled');
|
||||
if (toggled.is(':visible')) {
|
||||
toggled.hide(400);
|
||||
link.removeClass('open');
|
||||
link.addClass('closed');
|
||||
} else {
|
||||
toggled.show(400);
|
||||
link.addClass('open');
|
||||
link.removeClass('closed');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(function register_all_toggles() {
|
||||
$('.toggle').each(function () {
|
||||
register_toggle($(this));
|
||||
});
|
||||
});
|
||||
|
||||
function featureTest(property, value, noPrefixes) {
|
||||
var prop = property + ':',
|
||||
el = document.createElement('test'),
|
||||
mStyle = el.style;
|
||||
|
||||
if (!noPrefixes) {
|
||||
mStyle.cssText = prop + ['-webkit-', '-moz-', '-ms-', '-o-', ''].join(value + ';' + prop) + value + ';';
|
||||
} else {
|
||||
mStyle.cssText = prop + value;
|
||||
}
|
||||
return !!mStyle[property];
|
||||
}
|
||||
|
||||
window.fix_div = function (div, height) {
|
||||
var div_offset = div.offset().top - $('html').offset().top;
|
||||
var is_moving;
|
||||
var moving = function () {
|
||||
div.css('position', 'absolute').css('top', div_offset);
|
||||
is_moving = true;
|
||||
};
|
||||
var fix = function () {
|
||||
div.css('position', 'fixed').css('top', height);
|
||||
is_moving = false;
|
||||
};
|
||||
($(window).scrollTop() - div_offset > -height) ? fix() : moving();
|
||||
$(window).scroll(function () {
|
||||
if (($(window).scrollTop() - div_offset > -height) == is_moving)
|
||||
is_moving ? fix() : moving();
|
||||
});
|
||||
};
|
||||
|
||||
$(function () {
|
||||
if (typeof window.orientation !== 'undefined') {
|
||||
$(window).resize(function () {
|
||||
var width = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
|
||||
$('#viewport').attr('content', width > 480 ? 'initial-scale=1' : 'width=480');
|
||||
});
|
||||
}
|
||||
|
||||
var $nav_list = $('#nav-list');
|
||||
$('#navicon').click(function (event) {
|
||||
event.stopPropagation();
|
||||
$nav_list.toggle();
|
||||
if ($nav_list.is(':hidden'))
|
||||
$(this).blur().removeClass('hover');
|
||||
else {
|
||||
$(this).addClass('hover');
|
||||
$nav_list.find('li ul').css('left', $('#nav-list').width()).hide();
|
||||
}
|
||||
}).hover(function () {
|
||||
$(this).addClass('hover');
|
||||
}, function () {
|
||||
$(this).removeClass('hover');
|
||||
});
|
||||
|
||||
$nav_list.find('li a .nav-expand').click(function (event) {
|
||||
event.preventDefault();
|
||||
$(this).parent().siblings('ul').css('display', 'block');
|
||||
});
|
||||
|
||||
$nav_list.find('li a').each(function () {
|
||||
if (!$(this).siblings('ul').length)
|
||||
return;
|
||||
$(this).on('contextmenu', function (event) {
|
||||
event.preventDefault();
|
||||
}).on('taphold', function () {
|
||||
$(this).siblings('ul').css('display', 'block');
|
||||
});
|
||||
});
|
||||
|
||||
$nav_list.click(function (event) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
$('html').click(function () {
|
||||
$nav_list.hide();
|
||||
});
|
||||
|
||||
$.ajaxSetup({
|
||||
beforeSend: function (xhr, settings) {
|
||||
if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type)) && !this.crossDomain)
|
||||
xhr.setRequestHeader('X-CSRFToken', $.cookie('csrftoken'));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
if (!Date.now) {
|
||||
Date.now = function () {
|
||||
return new Date().getTime();
|
||||
};
|
||||
}
|
||||
|
||||
function count_down(label) {
|
||||
var initial = parseInt(label.attr('data-secs'));
|
||||
var start = Date.now();
|
||||
|
||||
function format(num) {
|
||||
var s = "0" + num;
|
||||
return s.substr(s.length - 2);
|
||||
}
|
||||
|
||||
var timer = setInterval(function () {
|
||||
var time = Math.round(initial - (Date.now() - start) / 1000);
|
||||
if (time <= 0) {
|
||||
clearInterval(timer);
|
||||
setTimeout(function() {
|
||||
window.location.reload();
|
||||
}, 2000);
|
||||
}
|
||||
var d = Math.floor(time / 86400);
|
||||
var h = Math.floor(time % 86400 / 3600);
|
||||
var m = Math.floor(time % 3600 / 60);
|
||||
var s = time % 60;
|
||||
if (d > 0)
|
||||
label.text(npgettext('time format with day', '%d day %h:%m:%s', '%d days %h:%m:%s', d)
|
||||
.replace('%d', d).replace('%h', format(h)).replace('%m', format(m)).replace('%s', format(s)));
|
||||
else
|
||||
label.text(pgettext('time format without day', '%h:%m:%s')
|
||||
.replace('%h', format(h)).replace('%m', format(m)).replace('%s', format(s)));
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function register_time(elems, limit) {
|
||||
limit = limit || 300;
|
||||
elems.each(function () {
|
||||
var outdated = false;
|
||||
var $this = $(this);
|
||||
var time = moment($this.attr('data-iso'));
|
||||
var rel_format = $this.attr('data-format');
|
||||
var abs = $this.text();
|
||||
|
||||
function update() {
|
||||
if ($('body').hasClass('window-hidden'))
|
||||
return outdated = true;
|
||||
outdated = false;
|
||||
if (moment().diff(time, 'days') > limit) {
|
||||
$this.text(abs);
|
||||
return;
|
||||
}
|
||||
$this.text(rel_format.replace('{time}', time.fromNow()));
|
||||
setTimeout(update, 10000);
|
||||
}
|
||||
|
||||
$(window).on('dmoj:window-visible', function () {
|
||||
if (outdated)
|
||||
update();
|
||||
});
|
||||
|
||||
update();
|
||||
});
|
||||
}
|
||||
|
||||
$(function () {
|
||||
register_time($('.time-with-rel'));
|
||||
|
||||
$('form').submit(function (evt) {
|
||||
// Prevent multiple submissions of forms, see #565
|
||||
$("input[type='submit']").prop('disabled', true);
|
||||
});
|
||||
});
|
||||
|
||||
window.notification_template = {
|
||||
icon: '/logo.png'
|
||||
};
|
||||
window.notification_timeout = 5000;
|
||||
|
||||
window.notify = function (type, title, data, timeout) {
|
||||
if (localStorage[type + '_notification'] != 'true') return;
|
||||
var template = window[type + '_notification_template'] || window.notification_template;
|
||||
var data = (typeof data !== 'undefined' ? $.extend({}, template, data) : template);
|
||||
var object = new Notification(title, data);
|
||||
if (typeof timeout === 'undefined')
|
||||
timeout = window.notification_timeout;
|
||||
if (timeout)
|
||||
setTimeout(function () {
|
||||
object.close();
|
||||
}, timeout);
|
||||
return object;
|
||||
};
|
||||
|
||||
window.register_notify = function (type, options) {
|
||||
if (typeof options === 'undefined')
|
||||
options = {};
|
||||
|
||||
function status_change() {
|
||||
if ('change' in options)
|
||||
options.change(localStorage[key] == 'true');
|
||||
}
|
||||
|
||||
var key = type + '_notification';
|
||||
if ('Notification' in window) {
|
||||
if (!(key in localStorage) || Notification.permission !== 'granted')
|
||||
localStorage[key] = 'false';
|
||||
|
||||
if ('$checkbox' in options) {
|
||||
options.$checkbox.change(function () {
|
||||
var status = $(this).is(':checked');
|
||||
if (status) {
|
||||
if (Notification.permission === 'granted') {
|
||||
localStorage[key] = 'true';
|
||||
notify(type, 'Notification enabled!');
|
||||
status_change();
|
||||
} else
|
||||
Notification.requestPermission(function (permission) {
|
||||
if (permission === 'granted') {
|
||||
localStorage[key] = 'true';
|
||||
notify(type, 'Notification enabled!');
|
||||
} else localStorage[key] = 'false';
|
||||
status_change();
|
||||
});
|
||||
} else {
|
||||
localStorage[key] = 'false';
|
||||
status_change();
|
||||
}
|
||||
}).prop('checked', localStorage[key] == 'true');
|
||||
}
|
||||
|
||||
$(window).on('storage', function (e) {
|
||||
e = e.originalEvent;
|
||||
if (e.key === key) {
|
||||
if ('$checkbox' in options)
|
||||
options.$checkbox.prop('checked', e.newValue == 'true');
|
||||
status_change();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if ('$checkbox' in options) options.$checkbox.hide();
|
||||
localStorage[key] = 'false';
|
||||
}
|
||||
status_change();
|
||||
};
|
||||
|
||||
|
||||
$(function () {
|
||||
// Close dismissable boxes
|
||||
$("a.close").click(function () {
|
||||
var $closer = $(this);
|
||||
$closer.parent().fadeOut(200);
|
||||
});
|
||||
});
|
||||
|
||||
$.fn.textWidth = function () {
|
||||
var html_org = $(this).html();
|
||||
var html_calc = '<span style="white-space: nowrap;">' + html_org + '</span>';
|
||||
$(this).html(html_calc);
|
||||
var width = $(this).find('span:first').width();
|
||||
$(this).html(html_org);
|
||||
return width;
|
||||
};
|
||||
|
||||
$(function () {
|
||||
$('.tabs').each(function () {
|
||||
var $this = $(this), $h2 = $(this).find('h2'), $ul = $(this).find('ul');
|
||||
var cutoff = ($h2.textWidth() || 400) + 20, handler;
|
||||
$ul.children().each(function () {
|
||||
cutoff += $(this).width();
|
||||
});
|
||||
$(window).resize(handler = function () {
|
||||
$this.toggleClass('tabs-no-flex', $this.width() < cutoff);
|
||||
});
|
||||
handler();
|
||||
});
|
||||
});
|
258
resources/content-description.scss
Normal file
|
@ -0,0 +1,258 @@
|
|||
@import "vars";
|
||||
|
||||
.content-description {
|
||||
line-height: 1.5em;
|
||||
font-size: 1em;
|
||||
font-family: "Segoe UI", "Lucida Grande", Arial, sans-serif;
|
||||
|
||||
p {
|
||||
margin: 1em 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: normal;
|
||||
color: #111;
|
||||
margin-bottom: 0.75em;
|
||||
padding: 0;
|
||||
background: 0;
|
||||
}
|
||||
|
||||
h3, h4, h5, h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.6em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.4em;
|
||||
border-bottom: 1px solid #EEE;
|
||||
line-height: 1.225;
|
||||
padding-bottom: 0.3em;
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.15em;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #666;
|
||||
margin: 0;
|
||||
padding-left: 1.5em;
|
||||
border-left: 0.5em #EEE solid;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 0;
|
||||
border: 0;
|
||||
font-style: italic;
|
||||
border-bottom: 1px solid $border_gray;
|
||||
margin: 25px 0 20px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
pre, code, kbd, samp, span.code {
|
||||
color: #000;
|
||||
page-break-inside: avoid;
|
||||
font-family: $monospace-fonts;
|
||||
font-size: 0.98em;
|
||||
}
|
||||
|
||||
code, span.code {
|
||||
font-family: $monospace-fonts !important;
|
||||
margin: 0 2px;
|
||||
padding: 0 5px;
|
||||
border: 1px solid $border_gray;
|
||||
background-color: #f8f8f8;
|
||||
border-radius: $widget_border_radius;
|
||||
font-size: 0.95em;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
pre {
|
||||
code, div.code {
|
||||
border: 0;
|
||||
line-height: 1em;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: transparent;
|
||||
font-size: 1em;
|
||||
color: black;
|
||||
}
|
||||
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
margin: 1.5em 0 1.5em 0;
|
||||
padding: 1em;
|
||||
border: 1px solid $border_gray;
|
||||
background-color: #f8f8f8;
|
||||
color: black;
|
||||
border-radius: $widget_border_radius;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
ins {
|
||||
background: #ff9;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
sub {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
padding: 0 0 0 2em !important;
|
||||
}
|
||||
|
||||
li p:last-child {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 0 2em;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
td {
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
|
||||
.display-math {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
@media (min-width: 700px) {
|
||||
#common-content {
|
||||
display: flex;
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
#content-left {
|
||||
flex: 86%;
|
||||
width: 100%;
|
||||
|
||||
&.split-common-content {
|
||||
max-width: 86%;
|
||||
}
|
||||
|
||||
.content-description {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
#content-right {
|
||||
flex: 14%;
|
||||
max-width: 12.5em;
|
||||
min-width: 8em;
|
||||
padding-left: 1.5em;
|
||||
padding-top: 1em;
|
||||
|
||||
.info-float {
|
||||
float: none;
|
||||
padding: 0;
|
||||
position: sticky;
|
||||
top: 70px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media not all and (min-width: 700px) {
|
||||
#content-right .info-float {
|
||||
float: none;
|
||||
width: 100% !important;
|
||||
position: static !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
a.view-pdf {
|
||||
padding-top: 0.6em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.problem-title {
|
||||
display: -webkit-box;
|
||||
display: -webkit-flex;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
|
||||
.spacer {
|
||||
display: inline-block;
|
||||
flex: 1 1 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.info-float .fa {
|
||||
color: #000;
|
||||
padding-right: 0.2em;
|
||||
}
|
||||
|
||||
#problem-types, #allowed-langs {
|
||||
.toggled {
|
||||
margin-left: 1.3em;
|
||||
}
|
||||
}
|
215
resources/contest.scss
Normal file
|
@ -0,0 +1,215 @@
|
|||
@import "vars";
|
||||
|
||||
#contest-calendar {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
th {
|
||||
border-bottom: 1px solid $border_gray;
|
||||
|
||||
&.sun {
|
||||
border-left: 1px solid $border_gray;
|
||||
}
|
||||
|
||||
&.sun, &.mon, &.tue, &.wed, &.thu, &.fri, &.sat {
|
||||
font-size: 0.95em;
|
||||
border-right: 1px solid $border_gray;
|
||||
background: $background_light_gray;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
height: 110px;
|
||||
width: 170px;
|
||||
color: #000;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
font-size: 0.75em;
|
||||
border-right: 1px solid $border_gray;
|
||||
border-bottom: 1px solid $border_gray;
|
||||
transition-duration: 0.2s;
|
||||
|
||||
.num {
|
||||
font-size: 1.1em;
|
||||
font-weight: bold;
|
||||
display: block;
|
||||
border-bottom: 1px dashed $border_gray;
|
||||
padding-right: 0.2em;
|
||||
margin-bottom: 0.4em;
|
||||
}
|
||||
|
||||
ul {
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
|
||||
li {
|
||||
margin-left: 17px;
|
||||
margin-bottom: 0.2em;
|
||||
|
||||
i.fa {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #222;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: rgba(0, 0, 255, 0.3);
|
||||
color: white;
|
||||
|
||||
.num {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul li a {
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.noday {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
|
||||
.today {
|
||||
background: rgba(255, 255, 100, 0.5);
|
||||
}
|
||||
|
||||
tr td:first-child {
|
||||
border-left: 1px solid #aaa;
|
||||
}
|
||||
}
|
||||
|
||||
#banner {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
|
||||
padding-bottom: 1em;
|
||||
|
||||
a.date {
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
text-align: center;
|
||||
line-height: 1.3;
|
||||
font-size: 2.3em;
|
||||
padding-bottom: 0.15em;
|
||||
|
||||
&:link, &:visited {
|
||||
color: #5B80B9;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #0645AD;
|
||||
}
|
||||
}
|
||||
|
||||
#time {
|
||||
text-align: center;
|
||||
display: block;
|
||||
color: rgb(85, 85, 85);
|
||||
font-size: $base_font_size;
|
||||
}
|
||||
}
|
||||
|
||||
.contest-list {
|
||||
td {
|
||||
vertical-align: middle !important;
|
||||
|
||||
&:nth-child(2) {
|
||||
min-width: 4em;
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
min-width: 6em;
|
||||
}
|
||||
}
|
||||
|
||||
tbody tr {
|
||||
height: 4em;
|
||||
}
|
||||
|
||||
.floating-time-left {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.floating-time-right {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
.floating-time {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.contest-tags {
|
||||
padding-left: 0.75em;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.participate-button {
|
||||
display: inline-block;
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
.contest-block {
|
||||
text-align: left;
|
||||
padding: 0.5em 0.5em 0.5em 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.contest-tag {
|
||||
box-shadow: inset 0 -0.1em 0 rgba(0, 0, 0, 0.12);
|
||||
padding: 0.15em 0.3em;
|
||||
border-radius: 0.15em;
|
||||
font-weight: 600;
|
||||
margin-right: 0.45em;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.contest-list-title {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
form.contest-join-pseudotab {
|
||||
display: inline;
|
||||
padding: 6px 8px !important;
|
||||
line-height: 1.7em;
|
||||
margin-left: 0.5em;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
|
||||
input {
|
||||
display: inline;
|
||||
border: none;
|
||||
padding: 0;
|
||||
background: none;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
|
||||
.contest-participation-operation {
|
||||
float: right;
|
||||
|
||||
.fa {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
a + a {
|
||||
padding-left: 1px;
|
||||
}
|
||||
|
||||
padding: 0 5px;
|
||||
}
|
58
resources/django_select2.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
(function ($) {
|
||||
var init = function ($element, options) {
|
||||
$element.select2(options);
|
||||
};
|
||||
|
||||
var initHeavy = function ($element, options) {
|
||||
var settings = $.extend({
|
||||
ajax: {
|
||||
data: function (params) {
|
||||
return {
|
||||
term: params.term,
|
||||
page: params.page,
|
||||
field_id: $element.data('field_id')
|
||||
};
|
||||
},
|
||||
processResults: function (data, page) {
|
||||
return {
|
||||
results: data.results,
|
||||
pagination: {
|
||||
more: data.more
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}, options);
|
||||
|
||||
$element.select2(settings);
|
||||
};
|
||||
|
||||
$.fn.djangoSelect2 = function (options) {
|
||||
var settings = $.extend({}, options);
|
||||
$.each(this, function (i, element) {
|
||||
var $element = $(element);
|
||||
if ($element.hasClass('django-select2-heavy')) {
|
||||
initHeavy($element, settings);
|
||||
} else {
|
||||
init($element, settings);
|
||||
}
|
||||
});
|
||||
return this;
|
||||
};
|
||||
|
||||
$(function () {
|
||||
$('.django-select2:not([id*=__prefix__])').djangoSelect2({
|
||||
dropdownAutoWidth: true
|
||||
});
|
||||
});
|
||||
|
||||
if ('django' in window && 'jQuery' in window.django)
|
||||
django.jQuery(document).on('formset:added', function(event, $row) {
|
||||
$row.find('.django-select2').each(function () {
|
||||
// Notice how we are passing it into a different jQuery.
|
||||
$(this).djangoSelect2({
|
||||
dropdownAutoWidth: true
|
||||
})
|
||||
});
|
||||
});
|
||||
}(jQuery));
|
41
resources/dmmd-preview.css
Normal file
|
@ -0,0 +1,41 @@
|
|||
div.dmmd-preview {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div.dmmd-preview-update {
|
||||
background: #ccc;
|
||||
color: #333;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
height: 2em;
|
||||
line-height: 2em;
|
||||
}
|
||||
|
||||
div.dmmd-preview-content {
|
||||
padding: 0 7px;
|
||||
}
|
||||
|
||||
div.dmmd-preview.dmmd-preview-has-content div.dmmd-preview-update {
|
||||
border-radius: 4px 4px 0 0;
|
||||
}
|
||||
|
||||
div.dmmd-preview-has-content div.dmmd-preview-content {
|
||||
padding-bottom: 7px;
|
||||
}
|
||||
|
||||
div.dmmd-no-button div.dmmd-preview-update {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dmmd-no-button div.dmmd-preview-content {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
div.dmmd-no-button:not(.dmmd-preview-has-content) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dmmd-preview-stale {
|
||||
background: repeating-linear-gradient(-45deg, #fff, #fff 10px, #f8f8f8 10px, #f8f8f8 20px);
|
||||
}
|
99
resources/dmmd-preview.js
Normal file
|
@ -0,0 +1,99 @@
|
|||
$(function () {
|
||||
window.register_dmmd_preview = function ($preview) {
|
||||
var $form = $preview.parents('form').first();
|
||||
var $update = $preview.find('.dmmd-preview-update');
|
||||
var $content = $preview.find('.dmmd-preview-content');
|
||||
var preview_url = $preview.attr('data-preview-url');
|
||||
var $textarea = $('#' + $preview.attr('data-textarea-id'));
|
||||
|
||||
// Submit the form if Ctrl+Enter is pressed in pagedown textarea.
|
||||
$textarea.keydown(function (ev) {
|
||||
// Ctrl+Enter pressed (metaKey used to support command key on mac).
|
||||
if ((ev.metaKey || ev.ctrlKey) && ev.which == 13) {
|
||||
$form.submit();
|
||||
}
|
||||
});
|
||||
|
||||
$update.click(function () {
|
||||
var text = $textarea.val();
|
||||
if (text) {
|
||||
$preview.addClass('dmmd-preview-stale');
|
||||
$.post(preview_url, {
|
||||
preview: text,
|
||||
csrfmiddlewaretoken: $.cookie('csrftoken')
|
||||
}, function (result) {
|
||||
$content.html(result);
|
||||
$preview.addClass('dmmd-preview-has-content').removeClass('dmmd-preview-stale');
|
||||
|
||||
var $jax = $content.find('.require-mathjax-support');
|
||||
if ($jax.length) {
|
||||
if (!('MathJax' in window)) {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: $jax.attr('data-config'),
|
||||
dataType: 'script',
|
||||
cache: true,
|
||||
success: function () {
|
||||
$.ajax({
|
||||
type: 'GET',
|
||||
url: 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS_HTML',
|
||||
dataType: 'script',
|
||||
cache: true,
|
||||
success: function () {
|
||||
MathJax.Hub.Queue(function () {
|
||||
$content.find('.tex-image').hide();
|
||||
$content.find('.tex-text').show();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
} else {
|
||||
MathJax.Hub.Queue(['Typeset', MathJax.Hub, $content[0]], function () {
|
||||
$content.find('.tex-image').hide();
|
||||
$content.find('.tex-text').show();
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
$content.empty();
|
||||
$preview.removeClass('dmmd-preview-has-content').removeClass('dmmd-preview-stale');
|
||||
}
|
||||
}).click();
|
||||
|
||||
var timeout = $preview.attr('data-timeout');
|
||||
var last_event = null;
|
||||
var last_text = $textarea.val();
|
||||
if (timeout) {
|
||||
$textarea.on('keyup paste', function () {
|
||||
var text = $textarea.val();
|
||||
if (last_text == text) return;
|
||||
last_text = text;
|
||||
|
||||
$preview.addClass('dmmd-preview-stale');
|
||||
if (last_event)
|
||||
clearTimeout(last_event);
|
||||
last_event = setTimeout(function () {
|
||||
$update.click();
|
||||
last_event = null;
|
||||
}, timeout);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$('.dmmd-preview').each(function () {
|
||||
register_dmmd_preview($(this));
|
||||
});
|
||||
|
||||
if ('django' in window && 'jQuery' in window.django)
|
||||
django.jQuery(document).on('formset:added', function(event, $row) {
|
||||
var $preview = $row.find('.dmmd-preview');
|
||||
if ($preview.length) {
|
||||
var id = $row.attr('id');
|
||||
id = id.substr(id.lastIndexOf('-') + 1);
|
||||
$preview.attr('data-textarea-id', $preview.attr('data-textarea-id').replace('__prefix__', id));
|
||||
register_dmmd_preview($preview);
|
||||
}
|
||||
});
|
||||
});
|
68
resources/event.js
Normal file
|
@ -0,0 +1,68 @@
|
|||
function EventReceiver(websocket, poller, channels, last_msg, onmessage) {
|
||||
this.websocket_path = websocket;
|
||||
this.channels = channels;
|
||||
this.last_msg = last_msg;
|
||||
this.poller_base = poller;
|
||||
this.poller_path = poller + channels.join('|');
|
||||
if (onmessage)
|
||||
this.onmessage = onmessage;
|
||||
var receiver = this;
|
||||
|
||||
function init_poll() {
|
||||
function long_poll() {
|
||||
$.ajax({
|
||||
url: receiver.poller_path,
|
||||
data: {last: receiver.last_msg},
|
||||
success: function (data, status, jqXHR) {
|
||||
receiver.onmessage(data.message);
|
||||
receiver.last_msg = data.id;
|
||||
long_poll();
|
||||
},
|
||||
error: function (jqXHR, status, error) {
|
||||
if (jqXHR.status == 504)
|
||||
long_poll();
|
||||
else {
|
||||
console.log('Long poll failure: ' + status);
|
||||
console.log(jqXHR);
|
||||
setTimeout(long_poll, 2000);
|
||||
}
|
||||
},
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
long_poll();
|
||||
}
|
||||
|
||||
this.onwsclose = null;
|
||||
if (window.WebSocket) {
|
||||
this.websocket = new WebSocket(websocket);
|
||||
var timeout = setTimeout(function () {
|
||||
receiver.websocket.close();
|
||||
receiver.websocket = null;
|
||||
init_poll();
|
||||
}, 2000);
|
||||
this.websocket.onopen = function (event) {
|
||||
clearTimeout(timeout);
|
||||
this.send(JSON.stringify({
|
||||
command: 'start-msg',
|
||||
start: last_msg
|
||||
}));
|
||||
this.send(JSON.stringify({
|
||||
command: 'set-filter',
|
||||
filter: channels
|
||||
}));
|
||||
};
|
||||
this.websocket.onmessage = function (event) {
|
||||
var data = JSON.parse(event.data);
|
||||
receiver.onmessage(data.message);
|
||||
receiver.last_msg = data.id;
|
||||
};
|
||||
this.websocket.onclose = function (event) {
|
||||
if (event.code != 1000 && receiver.onwsclose !== null)
|
||||
receiver.onwsclose(event);
|
||||
}
|
||||
} else {
|
||||
this.websocket = null;
|
||||
init_poll();
|
||||
}
|
||||
}
|
BIN
resources/favicon.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/icons/android-chrome-144x144.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
resources/icons/android-chrome-192x192.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
resources/icons/android-chrome-36x36.png
Normal file
After Width: | Height: | Size: 797 B |
BIN
resources/icons/android-chrome-48x48.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
resources/icons/android-chrome-72x72.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/icons/android-chrome-96x96.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/icons/apple-touch-icon-114x114.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
resources/icons/apple-touch-icon-120x120.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
resources/icons/apple-touch-icon-144x144.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
resources/icons/apple-touch-icon-152x152.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
resources/icons/apple-touch-icon-180x180.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
resources/icons/apple-touch-icon-57x57.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
resources/icons/apple-touch-icon-60x60.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
resources/icons/apple-touch-icon-72x72.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/icons/apple-touch-icon-76x76.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
resources/icons/apple-touch-icon-precomposed.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
resources/icons/apple-touch-icon.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
12
resources/icons/browserconfig.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/mstile-70x70.png"/>
|
||||
<square150x150logo src="/mstile-150x150.png"/>
|
||||
<square310x310logo src="/mstile-310x310.png"/>
|
||||
<wide310x150logo src="/mstile-310x150.png"/>
|
||||
<TileColor>#00aba9</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
BIN
resources/icons/favicon-16x16.png
Normal file
After Width: | Height: | Size: 830 B |
BIN
resources/icons/favicon-32x32.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
resources/icons/favicon-96x96.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
resources/icons/favicon.ico
Normal file
After Width: | Height: | Size: 15 KiB |
2
resources/icons/icon.svg
Normal file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512"><g transform="translate(-39.05 141.54)"><ellipse cx="295.05" cy="114.46" stroke="#000" stroke-width="43.98" rx="234.01" ry="234.01"/><path fill="#fcdb05" stroke="#fcdb05" stroke-width="10.1" d="M292.15-97.87c-108.9.25-218 93.24-208.73 229.88 2.64 38.92 18.04 79.05 44.08 112.72 39.74 51.4 104.26 87.73 186.03 81.76 102.46-7.49 196.34-96.45 194.3-215.88-1.97-115.8-98.7-210.83-215.68-208.48m3.57 441.81C170.89 345.96 64.98 240.1 65.85 114.11c.87-127.2 104.19-230.62 231.63-228.85 125.82 1.75 228.06 99.76 227.16 233.15-.82 123.46-102.09 225.84-228.91 225.53"/><path fill="#fcdb05" d="M329.88 125.54c14.59 20.43 31.64 38.19 47.8 56.64 18.38 20.98 18.63 20.64-3.87 36.43a323.13 323.13 0 0 0-21.09 16.03c-6.33 5.26-10.61 6.44-15.2-2.48-12.92-25.09-43.6-78.04-46.49-77.52-2.75.5-32.75 53.64-46.81 78.18-4.61 8.05-8.12 6.99-14.26 1.97-10.9-8.93-22.03-17.76-33.91-25.3-7.58-4.8-7.66-8.16-2.1-14.34 18.41-20.47 57.68-66.13 60-69.4-29.07-6.04-56.94-12-84.88-17.54-10.47-2.08-13.92-4.45-9.3-16.96 4.37-11.77 10.46-23.62 11.68-36.4 1.08-11.3 6.47-11.5 14.62-7.83 25.03 11.27 78.4 35 81.42 35.94 1.08-21.34-7.3-80.7-8.72-89.9-1.03-6.76 1.2-9.53 8.58-9.25 14.79.55 29.67 1.08 44.38-.14 11.37-.94 13.17 4.21 11.53 13.08-5.22 28.16-5.58 56.73-7.83 86.7 26.11-11.44 51.64-22 76.59-33.8 14.14-6.68 16.52-6.37 20.02 8.05 2.92 12.02 7.6 23.6 11.58 35.24 4.15 12.13-1.5 13.41-9.92 15.16-27.61 5.72-55.22 11.5-83.82 17.46"/></g></svg>
|
After Width: | Height: | Size: 1.5 KiB |
BIN
resources/icons/logo.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
16
resources/icons/logo.svg
Normal file
|
@ -0,0 +1,16 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="160" height="44">
|
||||
<g transform="matrix(.08265 0 0 -.0827 -18.736 55.375)">
|
||||
<path fill="#FCDB05" stroke="#FCDB05" stroke-width="10" d="M477.898 612.007c-107.844-.25-215.89-92.284-206.703-227.507 6.614-97.33 93.848-202.26 227.87-192.475 101.47 7.41 194.44 95.456 192.42 213.653-1.96 114.6-97.744 208.65-213.587 206.33m3.533-437.256c-123.62-2.002-228.5 102.77-227.64 227.46.87 125.882 103.18 228.238 229.38 226.488 124.6-1.727 225.85-98.733 224.96-230.748-.82-122.186-101.1-223.51-226.69-223.2"/>
|
||||
<path fill="#fcdb05" d="M515.264 390.9c14.44-20.215 31.333-37.793 47.34-56.057 18.196-20.76 18.438-20.43-3.845-36.05-7.16-5.014-14.16-10.288-20.88-15.868-6.27-5.203-10.51-6.375-15.06 2.458-12.79 24.824-43.17 77.232-46.028 76.716-2.73-.5-32.438-53.09-46.36-77.37-4.567-7.97-8.044-6.92-14.116-1.95-10.807 8.84-21.825 17.57-33.59 25.03-7.504 4.75-7.585 8.08-2.073 14.2 18.23 20.26 57.116 65.45 59.423 68.69-28.8 5.974-56.39 11.873-84.065 17.355-10.37 2.055-13.786 4.4-9.2 16.78 4.32 11.65 10.353 23.38 11.56 36.02 1.067 11.187 6.41 11.39 14.473 7.76 24.793-11.16 77.644-34.635 80.63-35.575 1.073 21.123-7.233 79.865-8.628 88.975-1.027 6.686 1.18 9.43 8.496 9.157 14.638-.545 29.38-1.074 43.94.132 11.26.932 13.05-4.163 11.42-12.94-5.17-27.87-5.52-56.143-7.755-85.808 25.865 11.322 51.147 21.774 75.85 33.45 14 6.613 16.357 6.306 19.824-7.96 2.892-11.905 7.53-23.366 11.466-34.877 4.11-12.01-1.486-13.28-9.816-15.007-27.35-5.66-54.684-11.38-83.012-17.28"/>
|
||||
</g>
|
||||
<g transform="matrix(.53656 0 0 .52273 46.09 -512.12)">
|
||||
<path fill="#FCDB05" d="M1.8 1045v-46.4h16.4q24.7 0 24.7 22.6 0 10.8-6.8 17.3-6.7 6.5-18 6.5H1.7zm10.4-37.9v29.4h5.2q6.8 0 10.6-4.1 3.9-4.1 3.9-11.1 0-6.6-3.8-10.4-3.8-3.8-10.7-3.8h-5.1z"/>
|
||||
<path fill="#ffde05" d="M101.5 1045H91.2v-27.8q0-4.5.4-9.9h-.3q-.8 4.3-1.5 6.1l-10.9 31.5h-8.5l-11.1-31.2q-.5-1.3-1.5-6.5h-.3q.4 6.9.4 12v25.7h-9.4v-46.4h15.3l9.5 27.5q1.1 3.3 1.6 6.6h.2q.9-3.8 1.8-6.7l9.5-27.4h14.9v46.4z"/>
|
||||
<g fill="#ffde05">
|
||||
<path d="M113.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/>
|
||||
<path d="M129.6 1018.2q-2.5 0-4.2-1.5-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.8-1.7 1.5-4.4 1.5zm0 23.7q-2.5 0-4.2-1.6-1.7-1.6-1.7-3.8 0-2.3 1.7-3.8t4.3-1.5q2.6 0 4.3 1.5 1.7 1.5 1.7 3.8 0 2.4-1.7 3.9t-4.4 1.5z"/>
|
||||
</g>
|
||||
<path fill="#aaa" d="M161.7 1045.8q-10 0-16.2-6.5-6.3-6.5-6.3-16.9 0-11 6.4-17.8 6.4-6.8 16.9-6.8 9.9 0 16 6.5t6.1 17.1q0 10.9-6.4 17.6-6.3 6.7-16.6 6.7zm.5-39q-5.5 0-8.7 4.1-3.2 4.1-3.2 10.9 0 6.9 3.2 10.9t8.5 4q5.4 0 8.6-3.9 3.2-3.9 3.2-10.8 0-7.2-3.1-11.2-3.1-4-8.4-4z"/>
|
||||
<path fill="#aaa" d="M209.6 1026.6q0 9.3-4.3 14.3-4.3 4.9-12.5 4.9-3.7 0-6.8-1.3v-9.8q2.7 2 6 2 7.1 0 7.1-10.6v-27.6h10.5v28z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.9 KiB |
41
resources/icons/manifest.json
Normal file
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "DMOJ",
|
||||
"icons": [
|
||||
{
|
||||
"src": "\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": 0.75
|
||||
},
|
||||
{
|
||||
"src": "\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": 1
|
||||
},
|
||||
{
|
||||
"src": "\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": 1.5
|
||||
},
|
||||
{
|
||||
"src": "\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": 2
|
||||
},
|
||||
{
|
||||
"src": "\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": 3
|
||||
},
|
||||
{
|
||||
"src": "\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": 4
|
||||
}
|
||||
]
|
||||
}
|
BIN
resources/icons/mstile-144x144.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
resources/icons/mstile-150x150.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
resources/icons/mstile-310x150.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
resources/icons/mstile-310x310.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
resources/icons/mstile-70x70.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
19
resources/icons/safari-pinned-tab.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="960.000000pt" height="960.000000pt" viewBox="0 0 960.000000 960.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,960.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M4430 9579 c-1066 -77 -2049 -478 -2810 -1146 -900 -791 -1457 -1877
|
||||
-1597 -3115 -25 -218 -25 -828 0 -1048 126 -1122 585 -2089 1362 -2865 773
|
||||
-774 1763 -1251 2865 -1381 183 -21 681 -30 891 -15 951 68 1836 397 2584 961
|
||||
181 137 295 236 474 413 538 531 923 1151 1161 1867 129 386 200 739 231 1150
|
||||
15 201 6 734 -16 929 -126 1130 -590 2116 -1355 2881 -763 763 -1738 1226
|
||||
-2855 1355 -166 20 -744 28 -935 14z"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 933 B |
49
resources/math.scss
Normal file
|
@ -0,0 +1,49 @@
|
|||
.mwe-math-mathml-inline {
|
||||
display: inline !important;
|
||||
}
|
||||
|
||||
.mwe-math-mathml-display {
|
||||
display: block !important;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.mwe-math-mathml-a11y {
|
||||
clip: rect(1px, 1px, 1px, 1px);
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.mwe-math-fallback-image-inline {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.mwe-math-fallback-image-display {
|
||||
display: block;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Latin Modern Math';
|
||||
src: url('libs/latinmodernmath/latinmodern-math.eot'); /* IE9 Compat Modes */
|
||||
src: local('Latin Modern Math'), local('LatinModernMath-Regular'),
|
||||
url('libs/latinmodernmath/latinmodern-math.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('libs/latinmodernmath/latinmodern-math.woff2') format('woff2'), /* Modern Browsers */
|
||||
url('libs/latinmodernmath/latinmodern-math.woff') format('woff'), /* Modern Browsers */
|
||||
url('libs/latinmodernmath/latinmodern-math.ttf') format('truetype'); /* Safari, Android, iOS */
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
math {
|
||||
font-family: "Latin Modern Math";
|
||||
}
|
||||
|
||||
img.inline-math {
|
||||
display: inline;
|
||||
}
|
10
resources/mathjax_config.js
Normal file
|
@ -0,0 +1,10 @@
|
|||
window.MathJax = {
|
||||
messageStyle: 'none',
|
||||
tex2jax: {
|
||||
inlineMath: [
|
||||
['~', '~'],
|
||||
['\\(', '\\)']
|
||||
]
|
||||
},
|
||||
showMathMenu: false
|
||||
};
|
55
resources/misc.scss
Normal file
|
@ -0,0 +1,55 @@
|
|||
@import "vars";
|
||||
|
||||
#judge-versions {
|
||||
display: block;
|
||||
|
||||
.version {
|
||||
font-family: $monospace-fonts;
|
||||
}
|
||||
|
||||
.version-blank {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
.version-latest {
|
||||
background: #b3ff3fe6;
|
||||
}
|
||||
|
||||
.version-outdated {
|
||||
background: #f00c;
|
||||
color: white;
|
||||
}
|
||||
|
||||
tbody {
|
||||
display: block;
|
||||
}
|
||||
|
||||
tr {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
padding: 0;
|
||||
|
||||
&:first-child {
|
||||
position: sticky;
|
||||
top: 42px;
|
||||
line-height: 1.8em;
|
||||
}
|
||||
}
|
||||
|
||||
td, th {
|
||||
display: block;
|
||||
flex: 1 0 110px;
|
||||
overflow-x: hidden;
|
||||
height: auto;
|
||||
padding: 7px 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.django-as-table {
|
||||
text-align: left;
|
||||
|
||||
th {
|
||||
vertical-align: top;
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
17
resources/pagedown_math.js
Normal file
|
@ -0,0 +1,17 @@
|
|||
function mathjax_pagedown($) {
|
||||
if ('MathJax' in window) {
|
||||
$.each(window.editors, function (id, editor) {
|
||||
var preview = $('div.wmd-preview#' + id + '_wmd_preview')[0];
|
||||
editor.hooks.chain('onPreviewRefresh', function () {
|
||||
MathJax.Hub.Queue(["Typeset", MathJax.Hub, preview]);
|
||||
});
|
||||
MathJax.Hub.Queue(["Typeset", MathJax.Hub, preview]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
window.mathjax_pagedown = mathjax_pagedown;
|
||||
|
||||
$(window).load(function () {
|
||||
(mathjax_pagedown)('$' in window ? $ : django.jQuery);
|
||||
});
|
138
resources/pagedown_widget.css
Normal file
|
@ -0,0 +1,138 @@
|
|||
.wmd-panel {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.wmd-button-bar {
|
||||
width: 100%;
|
||||
background-color: Silver;
|
||||
}
|
||||
|
||||
.wmd-input {
|
||||
height: 300px;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
border: 1px solid DarkGray;
|
||||
font-family: Consolas, "Liberation Mono", Monaco, "Courier New", monospace !important;
|
||||
}
|
||||
|
||||
.wmd-preview {
|
||||
background: none;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.wmd-button-row {
|
||||
position: relative;
|
||||
margin: 10px 5px 5px;
|
||||
padding: 0;
|
||||
height: 20px;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.wmd-spacer {
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
margin-left: 14px;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.wmd-button {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
padding-left: 2px;
|
||||
padding-right: 3px;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
list-style: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.wmd-button > span {
|
||||
background: url(pagedown/wmd-buttons.png) no-repeat 0 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.wmd-spacer1 {
|
||||
left: 50px;
|
||||
}
|
||||
|
||||
.wmd-spacer2 {
|
||||
left: 175px;
|
||||
}
|
||||
|
||||
.wmd-spacer3 {
|
||||
left: 300px;
|
||||
}
|
||||
|
||||
.wmd-prompt-background {
|
||||
background-color: Black;
|
||||
}
|
||||
|
||||
.wmd-prompt-dialog {
|
||||
border: 1px solid #999999;
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
.wmd-prompt-dialog > div {
|
||||
font-size: 0.8em;
|
||||
font-family: arial, helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.wmd-prompt-dialog > form > input[type="text"] {
|
||||
border: 1px solid #999999;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.wmd-prompt-dialog > form > input[type="button"] {
|
||||
border: 1px solid #888888;
|
||||
font-family: trebuchet MS, helvetica, sans-serif;
|
||||
font-size: 0.8em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.wmd-wrapper {
|
||||
padding-right: 0 !important;
|
||||
}
|
||||
|
||||
.wmd-preview {
|
||||
margin-top: 15px;
|
||||
padding: 7px;
|
||||
background: white;
|
||||
line-height: 1.5em;
|
||||
font-size: 1em;
|
||||
border: 1px solid #a9a9a9;
|
||||
border-radius: 5px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.wmd-preview:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.wmd-preview h1, .wmd-preview h2, .wmd-preview h3, .wmd-preview h4, .wmd-preview h5, .wmd-preview h6 {
|
||||
font-weight: bold !important;
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
.wmd-preview:not(.dmmd-preview) h1 {
|
||||
font-size: 1.6em !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.wmd-preview:not(.dmmd-preview) h2 {
|
||||
font-size: 1.4em !important
|
||||
}
|
||||
|
||||
.wmd-preview:not(.dmmd-preview) h3 {
|
||||
font-size: 1em !important
|
||||
}
|
||||
|
||||
.wmd-preview:not(.dmmd-preview) h4, .wmd-preview:not(.dmmd-preview) h5, .wmd-preview:not(.dmmd-preview) h6 {
|
||||
font-size: .9em !important
|
||||
}
|
292
resources/problem.scss
Normal file
|
@ -0,0 +1,292 @@
|
|||
#problem-table {
|
||||
td {
|
||||
&.category {
|
||||
text-align: left;
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
&.problem {
|
||||
text-align: left;
|
||||
padding-left: 1em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.pp {
|
||||
text-align: left;
|
||||
padding-left: 1em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&.users {
|
||||
text-align: left;
|
||||
padding: 0 1em;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&.types {
|
||||
text-align: left;
|
||||
padding: 0 1em;
|
||||
}
|
||||
|
||||
&.ac-rate {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
&.points {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
transition: background-color linear 0.2s;
|
||||
|
||||
&:hover {
|
||||
background: #eaeaea;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#filter-form {
|
||||
vertical-align: top;
|
||||
margin-bottom: 0.5em;
|
||||
margin-top: 0.75em;
|
||||
|
||||
a {
|
||||
margin-right: 5px;
|
||||
display: inline-block;
|
||||
padding: 3px 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
input {
|
||||
vertical-align: middle;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
label {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.filter-form-group {
|
||||
margin-top: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
#content-right {
|
||||
&.problems {
|
||||
flex: 26.5%;
|
||||
max-width: unset;
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#content-left {
|
||||
&.problems {
|
||||
flex: 73.5%;
|
||||
}
|
||||
}
|
||||
|
||||
#search {
|
||||
width: 100%;
|
||||
height: 2.3em;
|
||||
}
|
||||
|
||||
label[for="category"], label[for="type"] {
|
||||
padding-bottom: 0.25em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#category {
|
||||
margin-top: 0.5em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#types {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
span.type-tag {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
ul.problem-list {
|
||||
list-style: none;
|
||||
padding-left: 1em;
|
||||
padding-right: 0.5em;
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.pi-name {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.pi-name:after {
|
||||
content: " ";
|
||||
}
|
||||
|
||||
.authors-value, .judges-value {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
.lang-name:after {
|
||||
content: ": ";
|
||||
}
|
||||
|
||||
.lang-limit {
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
|
||||
.solved-problem-color {
|
||||
color: #44AD41;
|
||||
}
|
||||
|
||||
.unsolved-problem-color {
|
||||
color: #DE2121;
|
||||
}
|
||||
|
||||
.attempted-problem-color {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.submissions-left {
|
||||
color: black;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
.no-submissions-left {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.organization-tags {
|
||||
padding-left: 0.75em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.organization-tag {
|
||||
box-shadow: inset 0 -0.1em 0 rgba(0, 0, 0, 0.12);
|
||||
padding: 0.15em 0.3em;
|
||||
border-radius: 0.15em;
|
||||
font-weight: 600;
|
||||
margin-right: 0.45em;
|
||||
position: relative;
|
||||
background-color: #ccc;
|
||||
transform: translateY(+35%);
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.organization-tag a {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.pdf-icon {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
font-size: 1.5em;
|
||||
|
||||
.pdf-icon-logo {
|
||||
color: #d40e13;
|
||||
}
|
||||
|
||||
.pdf-icon-bar {
|
||||
height: 0.2em;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0.3em;
|
||||
background: #d40e13;
|
||||
width: 0.6em;
|
||||
margin-left: -0.15em;
|
||||
}
|
||||
}
|
||||
|
||||
.license {
|
||||
float: left;
|
||||
font-size: 0.85em;
|
||||
|
||||
a {
|
||||
color: gray;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.clarify {
|
||||
float: right;
|
||||
}
|
||||
|
||||
#problem_submit {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
|
||||
.button {
|
||||
float: right;
|
||||
padding: 6px 12px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 550px) {
|
||||
#problem-table tr :nth-child(6) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 450px) {
|
||||
#problem-table tr :nth-child(4) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 350px) {
|
||||
#problem-table tr :nth-child(3) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
#problem-table th a {
|
||||
color: inherit;
|
||||
display: block;
|
||||
padding: 4px 10px;
|
||||
}
|
||||
|
||||
#category, #types {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
#filter-form .form-label {
|
||||
margin-top: 0.5em;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
#point-slider {
|
||||
margin: 30px 15px 10px;
|
||||
height: 10px;
|
||||
|
||||
.noUi-handle {
|
||||
height: 20px;
|
||||
width: 16px;
|
||||
left: -8px;
|
||||
}
|
||||
|
||||
.noUi-handle:before, .noUi-handle:after {
|
||||
top: 3px;
|
||||
height: 12px;
|
||||
}
|
||||
|
||||
.noUi-handle:before {
|
||||
left: 5px;
|
||||
}
|
||||
|
||||
.noUi-handle:after {
|
||||
left: 8px;
|
||||
}
|
||||
|
||||
.noUi-tooltip {
|
||||
height: 17px;
|
||||
line-height: 13px;
|
||||
padding: 0 3px;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
102
resources/problem_edit.css
Normal file
|
@ -0,0 +1,102 @@
|
|||
.selector {
|
||||
width: 840px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.selector select {
|
||||
width: 400px;
|
||||
height: 17.2em;
|
||||
}
|
||||
|
||||
.selector-available, .selector-chosen {
|
||||
float: left;
|
||||
width: 400px;
|
||||
text-align: center;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.selector-chosen select {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.selector-available h2, .selector-chosen h2 {
|
||||
border: 1px solid #ccc;
|
||||
background: white bottom left repeat-x;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.selector .selector-filter {
|
||||
background: white;
|
||||
border: 1px solid #ccc;
|
||||
border-width: 0 1px;
|
||||
padding: 3px;
|
||||
color: #999;
|
||||
font-size: 10px;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.selector .selector-filter label,
|
||||
.inline-group .aligned .selector .selector-filter label {
|
||||
width: 16px;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.selector .selector-available input {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.selector ul.selector-chooser {
|
||||
float: left;
|
||||
width: 22px;
|
||||
height: 50px;
|
||||
background-color: #eee;
|
||||
margin: 10em 5px 0 5px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.selector-chooser li {
|
||||
margin: 0;
|
||||
padding: 3px;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.selector select {
|
||||
margin-bottom: 10px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.selector-add, .selector-remove {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
display: block;
|
||||
text-indent: -3000px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
a.selector-chooseall, a.selector-clearall {
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
a.selector-chooseall {
|
||||
padding: 3px 18px 3px 0;
|
||||
}
|
||||
|
||||
a.selector-clearall {
|
||||
padding: 3px 0 3px 18px;
|
||||
}
|
||||
|
||||
a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
|
||||
color: #036;
|
||||
}
|
||||
|
||||
.selector h2 {
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
margin: 1em 0 0 0;
|
||||
}
|
61
resources/pygment-github.css
Normal file
|
@ -0,0 +1,61 @@
|
|||
code .hll { background-color: #ffffcc }
|
||||
code .c { color: #999988; font-style: italic } /* Comment */
|
||||
code .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
code .k { color: #000000; font-weight: bold } /* Keyword */
|
||||
code .o { color: #000000; font-weight: bold } /* Operator */
|
||||
code .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
code .cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
|
||||
code .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
code .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
code .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
code .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
||||
code .gr { color: #aa0000 } /* Generic.Error */
|
||||
code .gh { color: #999999 } /* Generic.Heading */
|
||||
code .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
code .go { color: #888888 } /* Generic.Output */
|
||||
code .gp { color: #555555 } /* Generic.Prompt */
|
||||
code .gs { font-weight: bold } /* Generic.Strong */
|
||||
code .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||
code .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
code .kc { color: #000000; font-weight: bold } /* Keyword.Constant */
|
||||
code .kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
|
||||
code .kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
|
||||
code .kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
|
||||
code .kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
|
||||
code .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
code .m { color: #009999 } /* Literal.Number */
|
||||
code .s { color: #d01040 } /* Literal.String */
|
||||
code .na { color: #008080 } /* Name.Attribute */
|
||||
code .nb { color: #0086B3 } /* Name.Builtin */
|
||||
code .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
code .no { color: #008080 } /* Name.Constant */
|
||||
code .nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
|
||||
code .ni { color: #800080 } /* Name.Entity */
|
||||
code .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
code .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
code .nl { color: #990000; font-weight: bold } /* Name.Label */
|
||||
code .nn { color: #555555 } /* Name.Namespace */
|
||||
code .nt { color: #000080 } /* Name.Tag */
|
||||
code .nv { color: #008080 } /* Name.Variable */
|
||||
code .ow { color: #000000; font-weight: bold } /* Operator.Word */
|
||||
code .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
code .mf { color: #009999 } /* Literal.Number.Float */
|
||||
code .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
code .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
code .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
code .sb { color: #d01040 } /* Literal.String.Backtick */
|
||||
code .sc { color: #d01040 } /* Literal.String.Char */
|
||||
code .sd { color: #d01040 } /* Literal.String.Doc */
|
||||
code .s2 { color: #d01040 } /* Literal.String.Double */
|
||||
code .se { color: #d01040 } /* Literal.String.Escape */
|
||||
code .sh { color: #d01040 } /* Literal.String.Heredoc */
|
||||
code .si { color: #d01040 } /* Literal.String.Interpol */
|
||||
code .sx { color: #d01040 } /* Literal.String.Other */
|
||||
code .sr { color: #009926 } /* Literal.String.Regex */
|
||||
code .s1 { color: #d01040 } /* Literal.String.Single */
|
||||
code .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
code .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
code .vc { color: #008080 } /* Name.Variable.Class */
|
||||
code .vg { color: #008080 } /* Name.Variable.Global */
|
||||
code .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
code .il { color: #009999 } /* Literal.Number.Integer.Long */
|
105
resources/ranks.scss
Normal file
|
@ -0,0 +1,105 @@
|
|||
.admin a, .admin {
|
||||
color: black !important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
@mixin rate-svg-color($color) {
|
||||
circle {
|
||||
stroke: $color;
|
||||
}
|
||||
path {
|
||||
fill: $color;
|
||||
}
|
||||
}
|
||||
|
||||
svg.rate-box {
|
||||
width: 1.2em;
|
||||
|
||||
circle {
|
||||
fill: none;
|
||||
stroke-width: 2px;
|
||||
}
|
||||
|
||||
&.rate-none {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
&.rate-newbie {
|
||||
@include rate-svg-color(#999);
|
||||
}
|
||||
|
||||
&.rate-amateur {
|
||||
@include rate-svg-color(#00a900);
|
||||
}
|
||||
|
||||
&.rate-expert {
|
||||
@include rate-svg-color(#66f);
|
||||
}
|
||||
|
||||
&.rate-candidate-master {
|
||||
@include rate-svg-color(#f6f);
|
||||
}
|
||||
|
||||
&.rate-master {
|
||||
@include rate-svg-color(#dc0);
|
||||
}
|
||||
|
||||
&.rate-grandmaster, &.rate-target {
|
||||
@include rate-svg-color(#e00);
|
||||
}
|
||||
|
||||
&.rate-target {
|
||||
circle:last-child {
|
||||
stroke: none;
|
||||
fill: #e00;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.rating {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.rate-none, .rate-none a {
|
||||
color: black;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.rate-newbie, .rate-newbie a {
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.rate-amateur, .rate-amateur a {
|
||||
color: #00a900;
|
||||
}
|
||||
|
||||
.rate-expert, .rate-expert a {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.rate-candidate-master, .rate-candidate-master a {
|
||||
color: purple;
|
||||
}
|
||||
|
||||
.rate-master, .rate-master a {
|
||||
color: #ffb100;
|
||||
}
|
||||
|
||||
.rate-grandmaster, .rate-grandmaster a, .rate-target, .rate-target a {
|
||||
color: #e00;
|
||||
}
|
||||
|
||||
.rate-group {
|
||||
white-space: nowrap;
|
||||
display: inline-block;
|
||||
color: black;
|
||||
|
||||
.rating {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.rate-box {
|
||||
margin-right: 0.2em;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
}
|
44
resources/status.scss
Normal file
|
@ -0,0 +1,44 @@
|
|||
.AB {
|
||||
background-color: #CCC;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.AC {
|
||||
background-color: #53f23f;
|
||||
color: green;
|
||||
}
|
||||
|
||||
._AC {
|
||||
background-color: #DFFF00;
|
||||
color: green;
|
||||
}
|
||||
|
||||
.WA {
|
||||
background-color: #CCC;
|
||||
color: #ef1b53;
|
||||
}
|
||||
|
||||
.TLE, .MLE {
|
||||
background-color: #CCC;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.OLE, .IR, .RTE, .OTH {
|
||||
background-color: #FAB623;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.CE {
|
||||
background-color: #CCC;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.IE {
|
||||
background-color: red;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.QU, .G {
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
14
resources/style.scss
Normal file
|
@ -0,0 +1,14 @@
|
|||
@import "base";
|
||||
@import "table";
|
||||
@import "math";
|
||||
@import "status";
|
||||
@import "blog";
|
||||
@import "problem";
|
||||
@import "ranks";
|
||||
@import "users";
|
||||
@import "content-description";
|
||||
@import "widgets";
|
||||
@import "comments";
|
||||
@import "submission";
|
||||
@import "contest";
|
||||
@import "misc";
|
325
resources/submission.scss
Normal file
|
@ -0,0 +1,325 @@
|
|||
.info-float {
|
||||
position: sticky;
|
||||
top: 60px;
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
#submissions-table {
|
||||
background: rgba(0, 0, 0, .01);
|
||||
}
|
||||
|
||||
.submission-row {
|
||||
display: flex;
|
||||
border-left: #ccc 1px solid;
|
||||
border-right: #ccc 1px solid;
|
||||
transition: background-color linear 0.2s;
|
||||
|
||||
&:hover {
|
||||
background: #F2F2F2;
|
||||
}
|
||||
|
||||
&:first-of-type {
|
||||
border-top: #ccc 1px solid;
|
||||
}
|
||||
|
||||
> div {
|
||||
padding: 7px 5px;
|
||||
vertical-align: middle;
|
||||
border-bottom: #ccc 1px solid;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sub-result {
|
||||
min-width: 80px;
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
border-bottom-color: white;
|
||||
border-right: #ccc 1px solid;
|
||||
|
||||
.state {
|
||||
font-size: 0.7em;
|
||||
font-weight: bold;
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
|
||||
.score {
|
||||
font-size: 1.3em;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
.sub-info {
|
||||
flex: 1;
|
||||
padding-left: 20px !important;
|
||||
|
||||
.name {
|
||||
font-weight: 700;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
}
|
||||
|
||||
.sub-testcase {
|
||||
color: #555;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.sub-prop {
|
||||
a {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.sub-usage {
|
||||
min-width: 70px;
|
||||
width: 70px;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
border-left: #ccc 1px solid;
|
||||
|
||||
.time {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sub-prop .fa {
|
||||
display: none;
|
||||
}
|
||||
|
||||
label[for="language"], label[for="status"] {
|
||||
padding-bottom: 0.25em;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#language {
|
||||
margin-top: 0.5em;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#status {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#statistics-table tr:not(:first-child) td {
|
||||
border-top: 1px solid white !important;
|
||||
}
|
||||
|
||||
#statistics-table tr:not(:last-child) td:not(:last-child) {
|
||||
border-right: 1px solid white;
|
||||
}
|
||||
|
||||
#content-left.submission {
|
||||
flex: 70%;
|
||||
}
|
||||
|
||||
#content-right.submission {
|
||||
flex: 12%;
|
||||
min-width: initial;
|
||||
max-width: 100%;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
@media(max-width: 700px) {
|
||||
.sub-prop {
|
||||
.label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.fa {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
#fake-info-float {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#statistics-table {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#content-left.submission {
|
||||
flex: 100%;
|
||||
}
|
||||
|
||||
#content-right.submission {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.submission-contest {
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.source-ln {
|
||||
color: gray;
|
||||
border-right: 1px solid gray;
|
||||
padding-right: 5px;
|
||||
text-align: right;
|
||||
|
||||
a {
|
||||
color: gray;
|
||||
display: block;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&::before {
|
||||
display: block;
|
||||
content: " ";
|
||||
margin-top: -50px;
|
||||
height: 50px;
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.source-code pre, .source-ln pre {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.source-code {
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
.source-wrap {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.statistics-table {
|
||||
.status {
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.count {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
|
||||
#test-cases {
|
||||
.toggle .fa {
|
||||
margin-left: -1.28571em;
|
||||
}
|
||||
|
||||
.batch-cases {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
padding-bottom: 3px;
|
||||
padding-top: 3px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.batch-cases .case-row td b {
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.case-row td:nth-child(3) {
|
||||
padding-right: 0;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.case-row td:nth-child(3) span {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.case-row td:nth-child(4) {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.case-info {
|
||||
margin: 0;
|
||||
padding-left: 1em;
|
||||
padding-bottom: 3px;
|
||||
padding-top: 3px;
|
||||
border: 1px solid #2980b9;
|
||||
border-left-width: .5em;
|
||||
border-radius: 4px;
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.case-output {
|
||||
margin: 0;
|
||||
margin-right: 1em;
|
||||
}
|
||||
|
||||
table td {
|
||||
margin: 0;
|
||||
padding: 0 5px 0 0;
|
||||
}
|
||||
|
||||
.toggle {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.case-feedback {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.case-ext-feedback {
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.case-AC {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.case-_AC {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.case-WA {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.case-TLE, .case-SC {
|
||||
color: gray;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.case-MLE, .case-OLE, .case-RTE, .case-IR {
|
||||
color: orange;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.half-hr {
|
||||
float: left;
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.source-wrap {
|
||||
.line {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.highlighter {
|
||||
position: absolute;
|
||||
width: 9999px;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
a:active .line .highlighter {
|
||||
background: rgba(255, 212, 0, 0.48);
|
||||
}
|
||||
}
|
||||
|
||||
.submission-info {
|
||||
text-align: right;
|
||||
float: right;
|
||||
|
||||
.submission-date {
|
||||
color: gray;
|
||||
}
|
||||
}
|
87
resources/table.scss
Normal file
|
@ -0,0 +1,87 @@
|
|||
@import "vars";
|
||||
|
||||
$table_header_rounding: 6px;
|
||||
|
||||
.table {
|
||||
border-spacing: 0;
|
||||
width: 100%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-bottom: 0.5em;
|
||||
background: rgba(0, 0, 0, 0.01);
|
||||
|
||||
&.striped tr:nth-child(even) {
|
||||
background: #f7f7f7;
|
||||
}
|
||||
|
||||
td:first-child {
|
||||
border-color: $border_gray;
|
||||
border-width: 1px 1px 0 1px;
|
||||
}
|
||||
|
||||
tr:last-child td {
|
||||
&:first-child {
|
||||
border: 1px solid $border_gray;
|
||||
}
|
||||
|
||||
border-color: $border_gray;
|
||||
border-width: 1px 1px 1px 0;
|
||||
}
|
||||
|
||||
thead th {
|
||||
vertical-align: middle;
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: $table_header_rounding;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-top-right-radius: $table_header_rounding;
|
||||
}
|
||||
}
|
||||
|
||||
th {
|
||||
height: 2em;
|
||||
color: #FFF;
|
||||
background-color: $widget_black;
|
||||
border-color: #555;
|
||||
border-width: 1px 1px 0 0;
|
||||
border-style: solid;
|
||||
padding: 4px 10px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
font-weight: 600;
|
||||
font-size: 1.1em;
|
||||
|
||||
&:first-child {
|
||||
border-top-left-radius: $table_header_rounding;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-top-right-radius: $table_header_rounding;
|
||||
}
|
||||
}
|
||||
|
||||
td {
|
||||
border-color: $border_gray;
|
||||
border-width: 1px 1px 0 0;
|
||||
border-style: solid;
|
||||
padding: 7px 5px;
|
||||
vertical-align: middle;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// Monkey-patches for awkward table rounding
|
||||
tr:not(:first-child) th {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
tr:last-child th {
|
||||
border-bottom-left-radius: $table_header_rounding;
|
||||
}
|
||||
|
||||
thead tr th {
|
||||
border-bottom-left-radius: 0 !important;
|
||||
}
|
||||
}
|
169
resources/task_status.css
Normal file
|
@ -0,0 +1,169 @@
|
|||
.container {
|
||||
width: 100%;
|
||||
padding-right: 15px;
|
||||
padding-left: 15px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.container {
|
||||
max-width: 540px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 720px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.container {
|
||||
max-width: 960px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
|
||||
.jumbotron {
|
||||
padding: 2rem 1rem;
|
||||
margin-bottom: 2rem;
|
||||
background-color: #e9ecef;
|
||||
border-radius: 0.3rem;
|
||||
}
|
||||
|
||||
@media (min-width: 576px) {
|
||||
.jumbotron {
|
||||
padding: 4rem 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.jumbotron-fluid {
|
||||
padding-right: 0;
|
||||
padding-left: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@keyframes progress-bar-stripes {
|
||||
from {
|
||||
background-position: 1rem 0;
|
||||
}
|
||||
to {
|
||||
background-position: 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
.progress {
|
||||
display: flex;
|
||||
height: 1rem;
|
||||
overflow: hidden;
|
||||
font-size: 0.75rem;
|
||||
background-color: #e9ecef;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
background-color: #007bff;
|
||||
transition: width 0.6s ease;
|
||||
}
|
||||
|
||||
@media screen and (prefers-reduced-motion: reduce) {
|
||||
.progress-bar {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
.progress-bar-striped, .jumbotron .progress.progress-unknown .progress-bar {
|
||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
||||
background-size: 1rem 1rem;
|
||||
}
|
||||
|
||||
.progress-bar-animated {
|
||||
animation: progress-bar-stripes 1s linear infinite;
|
||||
}
|
||||
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
font-size: 1rem;
|
||||
font-weight: 400;
|
||||
line-height: 1.5;
|
||||
color: #212529;
|
||||
text-align: left;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
min-height: 100vh;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.jumbotron .icon {
|
||||
display: block;
|
||||
margin: 0 auto 3rem;
|
||||
max-width: 15rem;
|
||||
}
|
||||
|
||||
.jumbotron .action {
|
||||
text-align: center;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.jumbotron .stage {
|
||||
text-align: center;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.jumbotron .progress {
|
||||
background: #007bff;
|
||||
position: relative;
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.jumbotron .progress .progress-bar {
|
||||
background: #28a745;
|
||||
font-size: 1.25rem;
|
||||
height: 2rem;
|
||||
}
|
||||
|
||||
.jumbotron .progress .progress-text {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 2rem;
|
||||
line-height: 2rem;
|
||||
font-size: 1.25rem;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.jumbotron .progress.progress-unknown .progress-bar {
|
||||
width: 100%;
|
||||
background-color: #007bff;
|
||||
}
|
||||
|
||||
.jumbotron .progress.progress-complete .progress-bar {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.jumbotron .progress.progress-failed .progress-bar {
|
||||
width: 100%;
|
||||
background: #dc3545;
|
||||
}
|
11
resources/unselectable.htc
Normal file
|
@ -0,0 +1,11 @@
|
|||
<public:component lightweight="true">
|
||||
<public:attach event="ondocumentready" onevent="unselectable()"/>
|
||||
<script type="text/javascript">
|
||||
function unselectable() {
|
||||
element.onselectstart = function () {
|
||||
return false;
|
||||
};
|
||||
element.setAttribute('unselectable', 'on', 0);
|
||||
}
|
||||
</script>
|
||||
</public:component>
|
281
resources/users.scss
Normal file
|
@ -0,0 +1,281 @@
|
|||
@media(min-width: 400px) {
|
||||
#content-right {
|
||||
&.users {
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#content-right {
|
||||
&.users {
|
||||
flex: 40%;
|
||||
max-width: 17em;
|
||||
}
|
||||
}
|
||||
|
||||
#content-left {
|
||||
&.users {
|
||||
flex: 60%;
|
||||
}
|
||||
}
|
||||
|
||||
td.user-name {
|
||||
padding-left: 2em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
tr {
|
||||
padding-bottom: 96px;
|
||||
|
||||
&:target {
|
||||
background: #fff897;
|
||||
}
|
||||
}
|
||||
|
||||
th.header.rank {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#search-handle {
|
||||
width: 100%;
|
||||
height: 2.3em;
|
||||
}
|
||||
|
||||
.user-search-image, .user-search-name {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.user-search-name {
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
#users-table {
|
||||
.username {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.rank, .points, .problems, .username {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
tr {
|
||||
transition: background-color linear .2s;
|
||||
|
||||
&:hover {
|
||||
background: #EAEAEA;
|
||||
}
|
||||
|
||||
&.highlight {
|
||||
background: #fff897;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#search-form {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 225px;
|
||||
float: right;
|
||||
|
||||
.select2-selection__arrow {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.select2-selection__rendered {
|
||||
cursor: text;
|
||||
}
|
||||
|
||||
.select2-results__option {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.select2-results__option--highlighted {
|
||||
background-color: #DEDEDE !important;
|
||||
}
|
||||
|
||||
li.select2-results__option--highlighted a.user-redirect {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
a.user-redirect {
|
||||
color: #2980b9;
|
||||
vertical-align: middle;
|
||||
font-size: 1.2em;
|
||||
position: absolute;
|
||||
right: 0.8em;
|
||||
display: none;
|
||||
|
||||
&:hover {
|
||||
text-shadow: 0 0 2px blue;
|
||||
}
|
||||
}
|
||||
|
||||
a.edit-profile {
|
||||
float: right;
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
.user-problem-group {
|
||||
h3 {
|
||||
font-weight: 600;
|
||||
font-size: 1.25em;
|
||||
margin-bottom: -10px;
|
||||
max-height: 20%;
|
||||
line-height: 2.5em;
|
||||
}
|
||||
ul {
|
||||
-webkit-columns: 300px 4;
|
||||
-moz-columns: 300px 4;
|
||||
columns: 300px 4;
|
||||
list-style-type: none;
|
||||
margin-top: 0;
|
||||
margin-left: -20px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
a img {
|
||||
max-width: 1em;
|
||||
margin-right: 3px;
|
||||
padding-bottom: 1px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.user-info-cell {
|
||||
padding-left: 15px;
|
||||
border-left: 1px solid #CCC;
|
||||
}
|
||||
|
||||
.contest-history-cell {
|
||||
border-left: 1px solid #CCC;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
.hide-solved-problems {
|
||||
text-align: right;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.hide-solved-problems > span {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.hide-solved-problems > span:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 100000px;
|
||||
height: 1px;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
right: 100%;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.user-info-page {
|
||||
display: flex;
|
||||
max-width: 100%;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.user-sidebar {
|
||||
flex: 0 0 150px;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.user-content {
|
||||
flex: 1 1;
|
||||
overflow: hidden;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
@media not all and (min-width: 600px) {
|
||||
.user-info-page {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.user-sidebar {
|
||||
width: 150px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.user-content {
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
|
||||
.pp-table {
|
||||
.pp {
|
||||
font-weight: 600;
|
||||
font-size: 1.4em;
|
||||
}
|
||||
|
||||
.pp-scaled {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.pp-weighted {
|
||||
color: #777;
|
||||
}
|
||||
|
||||
div.sub-pp {
|
||||
text-align: right;
|
||||
min-width: unset;
|
||||
width: unset;
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
td.problem-name {
|
||||
text-align: left;
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
td.problem-score {
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
td.problem-category {
|
||||
width: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
#pp-load-link-wrapper {
|
||||
text-align: center;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
||||
#pp-load-more-link {
|
||||
display: block;
|
||||
padding: 0.5em 0;
|
||||
}
|
||||
|
||||
.pp-breakdown-header {
|
||||
font-weight: 600;
|
||||
font-size: 1.25em;
|
||||
margin-bottom: 0.2em;
|
||||
}
|
||||
|
||||
#rating-chart {
|
||||
height: 400px;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
#rating-tooltip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
color: white;
|
||||
padding: 3px;
|
||||
border-radius: 3px;
|
||||
transition: all .1s ease;
|
||||
pointer-events: none;
|
||||
transform: translate(-50%, 0);
|
||||
|
||||
&.rate-group {
|
||||
color: white;
|
||||
}
|
||||
}
|
11
resources/vars.scss
Normal file
|
@ -0,0 +1,11 @@
|
|||
$highlight_blue: #2980B9;
|
||||
$widget_black: #3b3b3b;
|
||||
$border_gray: #ccc;
|
||||
$background_gray: #ededed;
|
||||
$background_light_gray: #fafafa;
|
||||
$announcement_red: #ae0000;
|
||||
|
||||
$base_font_size: 14px;
|
||||
$widget_border_radius: 4px;
|
||||
|
||||
$monospace-fonts: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;
|
518
resources/widgets.scss
Normal file
|
@ -0,0 +1,518 @@
|
|||
@import "vars";
|
||||
|
||||
.social i {
|
||||
display: inline;
|
||||
font-size: 1.9em;
|
||||
}
|
||||
|
||||
.facebook-this, .tweet-this, .gplus-this {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.tweet-this i {
|
||||
color: #55ACEE;
|
||||
}
|
||||
|
||||
.facebook-this it {
|
||||
color: #133783;
|
||||
}
|
||||
|
||||
.gplus-this i {
|
||||
color: #DD4B38;
|
||||
}
|
||||
|
||||
.social {
|
||||
font-size: 1.3em;
|
||||
float: right;
|
||||
}
|
||||
|
||||
// Bootstrap-y buttons
|
||||
.button, button, input[type=submit] {
|
||||
color: white !important;
|
||||
text-decoration: none !important;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
white-space: nowrap;
|
||||
font-weight: 400;
|
||||
line-height: 1.4;
|
||||
background: rgb(51, 122, 183) none repeat scroll 0 (0% / auto) padding-box border-box;
|
||||
background: -webkit-linear-gradient(top, #337ab7 0, #265a88 100%) repeat-x;
|
||||
background: linear-gradient(to bottom, #337ab7 0, #265a88 100%) repeat-x;
|
||||
border-radius: $widget_border_radius;
|
||||
padding: 6px 12px;
|
||||
display: block;
|
||||
border: 1px solid #245580;
|
||||
text-align: center;
|
||||
|
||||
// 4k hack
|
||||
font-size: $base_font_size;
|
||||
|
||||
&:hover {
|
||||
background: #265a88;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
background: linear-gradient(to bottom, darkgray 0, gray 100%) repeat-x !important;
|
||||
border-color: grey !important;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
.button.full, input[type=submit].full, button.full {
|
||||
padding: 6px 0;
|
||||
}
|
||||
|
||||
button:hover, button:hover, input[type=submit]:hover {
|
||||
background: #265a88;
|
||||
}
|
||||
|
||||
.button:active, button:active, input[type=submit]:hover {
|
||||
border-color: #245580;
|
||||
background: #265a88;
|
||||
}
|
||||
|
||||
.inline-button {
|
||||
display: inline;
|
||||
vertical-align: top;
|
||||
padding: 3px 6px;
|
||||
}
|
||||
|
||||
input {
|
||||
&[type=text], &[type=password], &[type=email], &[type=number] {
|
||||
padding: 4px 8px;
|
||||
color: #555;
|
||||
background: #FFF none;
|
||||
border: 1px solid $border_gray;
|
||||
border-radius: $widget_border_radius;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
|
||||
transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
|
||||
box-sizing: border-box;
|
||||
|
||||
// Need this explicitly because UA stylesheet for Chrome on 4k makes
|
||||
// everything look bad otherwise (forces it to 9.3px)
|
||||
font-size: $base_font_size;
|
||||
}
|
||||
|
||||
&[type=number] {
|
||||
padding: 2px 0 2px 5px;
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
padding: 4px 8px;
|
||||
color: #555;
|
||||
background: #FFF none;
|
||||
border: 1px solid $border_gray;
|
||||
border-radius: $widget_border_radius;
|
||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075) inset;
|
||||
transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
textarea:hover {
|
||||
border-color: rgba(82, 168, 236, 0.8);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);
|
||||
}
|
||||
|
||||
input {
|
||||
&[type="text"]:hover, &[type="password"]:hover {
|
||||
border-color: rgba(82, 168, 236, 0.8);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 4px rgba(82, 168, 236, 0.6);
|
||||
}
|
||||
}
|
||||
|
||||
textarea:focus {
|
||||
border-color: rgba(82, 168, 236, 0.8);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input {
|
||||
&[type="text"]:focus, &[type="password"]:focus {
|
||||
border-color: rgba(82, 168, 236, 0.8);
|
||||
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// Bootstrap-y copy button
|
||||
.btn-clipboard {
|
||||
top: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
font-size: 12px;
|
||||
color: #767676;
|
||||
cursor: pointer;
|
||||
background-color: #FFF;
|
||||
border: 1px solid #E1E1E8;
|
||||
border-radius: 0 $widget_border_radius;
|
||||
position: absolute;
|
||||
padding: 5px 8px;
|
||||
}
|
||||
|
||||
.copy-clipboard {
|
||||
position: relative;
|
||||
margin-top: 1.5em;
|
||||
}
|
||||
|
||||
// Bootstrap-y tabs
|
||||
.ul_tab_a_active {
|
||||
color: black;
|
||||
cursor: default;
|
||||
background-color: #fff;
|
||||
border: 1px solid $border_gray;
|
||||
border-bottom-color: transparent;
|
||||
border-image: none;
|
||||
}
|
||||
|
||||
.tabs {
|
||||
border-bottom: 1px solid $border_gray;
|
||||
margin: 0 0 8px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
|
||||
&.tabs-no-flex {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tab {
|
||||
.tab-icon {
|
||||
padding-right: 0.3em;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
a, span {
|
||||
border-top-width: 3px !important;
|
||||
}
|
||||
|
||||
&.active {
|
||||
a, span {
|
||||
border-top-color: $highlight_blue !important;
|
||||
}
|
||||
|
||||
.tab-icon {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: #393630;
|
||||
}
|
||||
|
||||
> ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: outside none none;
|
||||
display: flex;
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
|
||||
> li {
|
||||
margin-bottom: -1px;
|
||||
position: relative;
|
||||
display: block;
|
||||
|
||||
&.active > a, &.active > span {
|
||||
@extend .ul_tab_a_active;
|
||||
|
||||
&:hover {
|
||||
@extend .ul_tab_a_active;
|
||||
}
|
||||
|
||||
&:focus {
|
||||
@extend .ul_tab_a_active;
|
||||
}
|
||||
}
|
||||
|
||||
> a, > span {
|
||||
margin-right: 2px;
|
||||
line-height: 1.42857;
|
||||
border: 1px solid transparent;
|
||||
border-radius: $widget_border_radius $widget_border_radius 0 0;
|
||||
position: relative;
|
||||
display: block;
|
||||
padding: 10px 15px;
|
||||
color: #555;
|
||||
text-decoration: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Bootstrap-y pagination
|
||||
ul.pagination a:hover {
|
||||
color: #FFF;
|
||||
background: rgba(0, 0, 0, 0.55);
|
||||
}
|
||||
|
||||
ul.pagination {
|
||||
display: inline-block;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
border-radius: $widget_border_radius;
|
||||
|
||||
> {
|
||||
li {
|
||||
display: inline;
|
||||
|
||||
&:first-child > {
|
||||
a, span {
|
||||
margin-left: 0;
|
||||
border-top-left-radius: $widget_border_radius;
|
||||
border-bottom-left-radius: $widget_border_radius;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child > {
|
||||
a, span {
|
||||
margin-left: 0;
|
||||
border-top-right-radius: $widget_border_radius;
|
||||
border-bottom-right-radius: $widget_border_radius;
|
||||
}
|
||||
}
|
||||
|
||||
> {
|
||||
a, span {
|
||||
position: relative;
|
||||
float: left;
|
||||
padding: 4px 12px;
|
||||
line-height: 1.42857;
|
||||
text-decoration: none;
|
||||
color: #FFF;
|
||||
background-color: $widget_black;
|
||||
border: 1px solid #505050;
|
||||
margin-left: -1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.disabled-page > {
|
||||
a {
|
||||
color: #888;
|
||||
background-color: $widget_black;
|
||||
border-color: #282828;
|
||||
}
|
||||
|
||||
span {
|
||||
color: #888;
|
||||
background-color: $widget_black;
|
||||
border-color: #505050;
|
||||
}
|
||||
}
|
||||
|
||||
.active-page > {
|
||||
a {
|
||||
z-index: 2;
|
||||
color: #FFF;
|
||||
background-color: $highlight_blue;
|
||||
border-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
span {
|
||||
z-index: 2;
|
||||
color: #FFF;
|
||||
background-color: $highlight_blue;
|
||||
border-color: transparent;
|
||||
cursor: default;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.alert {
|
||||
padding: 15px;
|
||||
margin-bottom: 20px;
|
||||
border: 1px solid transparent;
|
||||
border-radius: $widget_border_radius;
|
||||
}
|
||||
|
||||
.alert-info {
|
||||
color: #31708f;
|
||||
background-color: #d9edf7;
|
||||
border-color: #bce8f1;
|
||||
}
|
||||
|
||||
.alert-warning {
|
||||
color: #8a6d3b;
|
||||
background-color: #fcf8e3;
|
||||
border-color: #faebcc;
|
||||
}
|
||||
|
||||
.alert-danger {
|
||||
color: #a94442;
|
||||
background-color: #f2dede;
|
||||
border-color: #ebccd1;
|
||||
}
|
||||
|
||||
.alert-dismissable, .alert-dismissible {
|
||||
padding-right: 35px;
|
||||
}
|
||||
|
||||
.alert-dismissable .close, .alert-dismissible .close {
|
||||
position: relative;
|
||||
top: -2px;
|
||||
right: -21px;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.close {
|
||||
float: right;
|
||||
font-size: 21px;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
color: #000;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
filter: alpha(opacity=20);
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
a.close {
|
||||
text-decoration: none !important;
|
||||
font-size: 18px !important;
|
||||
line-height: 1;
|
||||
|
||||
&:hover {
|
||||
color: black !important;
|
||||
}
|
||||
}
|
||||
|
||||
.close {
|
||||
&:focus, &:hover {
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
filter: alpha(opacity=50);
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
.badge {
|
||||
min-width: 10px;
|
||||
padding: 0 7px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
line-height: 1;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: middle;
|
||||
background-color: #e84848;
|
||||
border-radius: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.form-submit-group {
|
||||
border-top: 1px solid #EEE;
|
||||
margin-top: 0.8em;
|
||||
padding-top: 0.5em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
ul.select2-selection__rendered {
|
||||
padding: 0 5px !important;
|
||||
}
|
||||
|
||||
.sidebox h3 {
|
||||
margin: 0 -5px;
|
||||
background: $widget_black;
|
||||
border-radius: $widget_border_radius $widget_border_radius 0 0;
|
||||
color: white;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
padding-left: 7px;
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
.sidebox h3 .fa {
|
||||
color: white;
|
||||
float: right;
|
||||
margin: 0.2em 0.4em 0 0;
|
||||
}
|
||||
|
||||
.sidebox-content {
|
||||
border: 1px solid $border_gray;
|
||||
border-top: none;
|
||||
margin: 0 -5px;
|
||||
padding: 1px 0.5em 3px;
|
||||
|
||||
&.sidebox-table {
|
||||
border: none;
|
||||
padding: 0;
|
||||
|
||||
.table {
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebox {
|
||||
border-top-left-radius: $widget_border_radius;
|
||||
border-top-right-radius: $widget_border_radius;
|
||||
padding: 0 5px !important;
|
||||
padding-bottom: 1.5em !important;
|
||||
}
|
||||
|
||||
.ws-closed {
|
||||
position: sticky;
|
||||
top: 42px;
|
||||
background: $announcement_red;
|
||||
border-radius: 5px 5px 0 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ws-closed a {
|
||||
display: block;
|
||||
padding: 7px 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.semibold {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.messages {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
|
||||
li {
|
||||
padding: 1em 1.5em;
|
||||
margin-bottom: 1em;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 5px;
|
||||
|
||||
&.debug {
|
||||
color: #383d41;
|
||||
background-color: #e2e3e5;
|
||||
border-color: #d6d8db;
|
||||
}
|
||||
|
||||
&.info {
|
||||
color: #0c5460;
|
||||
background-color: #d1ecf1;
|
||||
border-color: #bee5eb;
|
||||
}
|
||||
|
||||
&.success {
|
||||
color: #155724;
|
||||
background-color: #d4edda;
|
||||
border-color: #c3e6cb;
|
||||
}
|
||||
|
||||
&.warning {
|
||||
color: #856404;
|
||||
background-color: #fff3cd;
|
||||
border-color: #ffeeba;
|
||||
}
|
||||
|
||||
&.error {
|
||||
color: #721c24;
|
||||
background-color: #f8d7da;
|
||||
border-color: #f5c6cb;
|
||||
}
|
||||
}
|
||||
}
|
68
resources/wpadmin/css/wpadmin.site.css
Normal file
|
@ -0,0 +1,68 @@
|
|||
.select2-selection ul li {
|
||||
list-style-type: inherit;
|
||||
}
|
||||
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||
line-height: unset !important;
|
||||
}
|
||||
|
||||
.wmd-wrapper {
|
||||
padding-top: 2em;
|
||||
}
|
||||
|
||||
.wmd-wrapper ul.wmd-button-row {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.wmd-input {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
#content .content-description h1,
|
||||
#content .content-description h2,
|
||||
#content .content-description h3,
|
||||
#content .content-description h4,
|
||||
#content .content-description h5,
|
||||
#content .content-description h6 {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#content .content-description h5 {
|
||||
letter-spacing: initial;
|
||||
text-transform: initial;
|
||||
}
|
||||
|
||||
#content input.select2-search__field {
|
||||
border: none;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
#content .content-description ul,
|
||||
#content .content-description ol {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#content .content-description li {
|
||||
list-style-type: inherit;
|
||||
}
|
||||
|
||||
select[id^=id_contest_problems] {
|
||||
width: 20em !important;
|
||||
}
|
||||
|
||||
select#id_organizers.django-select2,
|
||||
select#id_organizations.django-select2,
|
||||
select#id_tags.django-select2 {
|
||||
width: 20em;
|
||||
}
|
||||
|
||||
@media (max-width: 780px) {
|
||||
#content .vLargeTextField {
|
||||
max-width: unset;
|
||||
}
|
||||
}
|
||||
|
||||
.dmmd-preview-update {
|
||||
position: sticky;
|
||||
top: 38px;
|
||||
}
|