diff --git a/gulpfile.js b/gulpfile.js index a34546e43..4f87b0666 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -22,6 +22,8 @@ var argv = require('yargs').argv, jshint = require('gulp-jshint'), mainBowerFiles = require('main-bower-files'), path = require('path'), + rename = require('gulp-rename'), + sass = require('gulp-sass'), sourcemaps = require('gulp-sourcemaps'), templateCache = require('gulp-angular-templatecache'), through = require('through2'), @@ -102,6 +104,30 @@ gulp.task('templates', function () { .pipe(gulp.dest(path.join(output_directory, 'js'))); }); +// Build the openslides-site.css file from the main file core/static/css/site.scss. +// Minimizes the outputfile if the production flag is given. +gulp.task('css-site', function () { + return gulp.src([ + path.join('openslides', 'core', 'static', 'css', 'site.scss') + ]) + .pipe(sass().on('error', sass.logError)) + .pipe(gulpif(argv.production, cssnano({safe: true}))) + .pipe(rename('openslides-site.css')) + .pipe(gulp.dest(path.join(output_directory, 'css'))); +}); + +// Build the openslides-projector.css file from the main file core/static/css/projector.scss. +// Minimizes the outputfile if the production flag is given. +gulp.task('css-projector', function () { + return gulp.src([ + path.join('openslides', 'core', 'static', 'css', 'projector.scss') + ]) + .pipe(sass().on('error', sass.logError)) + .pipe(gulpif(argv.production, cssnano({safe: true}))) + .pipe(rename('openslides-projector.css')) + .pipe(gulp.dest(path.join(output_directory, 'css'))); +}); + // Catches all CSS files from all bower components and concats them to one file // css/openslides-libs.css. In production mode the file is uglified. gulp.task('css-libs', function () { @@ -210,6 +236,8 @@ gulp.task('default', [ 'pdf-worker', 'pdf-worker-libs', 'templates', + 'css-site', + 'css-projector', 'css-libs', 'fonts-libs', 'ckeditor', @@ -223,13 +251,16 @@ gulp.task('default', [ */ // Watches changes in JavaScript and templates. -gulp.task('watch', ['js', 'templates', 'pdf-worker'], function () { +gulp.task('watch', ['js', 'templates', 'pdf-worker', 'css-site', 'css-projector'], function () { gulp.watch([ path.join('openslides', '*', 'static', 'js', '**', '*.js'), '!' + path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js') ], ['js']); gulp.watch(path.join('openslides', '*', 'static', 'templates', '**', '*.html'), ['templates']); gulp.watch(path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js'), ['pdf-worker']); + // We cannot differentiate between all scss files which belong to each realm. So if + // one scss file changes the site and projector css is rebuild. + gulp.watch(path.join('openslides', '*', 'static', 'css', '**', '*.scss'), ['css-site', 'css-projector']); }); // Extracts translatable strings using angular-gettext and saves them in file diff --git a/openslides/agenda/static/css/agenda/_list_of_speakers.scss b/openslides/agenda/static/css/agenda/_list_of_speakers.scss new file mode 100644 index 000000000..81c5c34da --- /dev/null +++ b/openslides/agenda/static/css/agenda/_list_of_speakers.scss @@ -0,0 +1,21 @@ +/* List of speakers */ +.lastSpeakers { + color: #9a9898; + margin-left: 27px; +} + +.currentSpeaker { + font-weight: bold; + + i { + padding-right: 5px; + } +} + +.nextSpeakers { + margin-left: 13px; + + li { + line-height: 150%; + } +} diff --git a/openslides/agenda/static/css/agenda/_projector.scss b/openslides/agenda/static/css/agenda/_projector.scss new file mode 100644 index 000000000..ff956afe1 --- /dev/null +++ b/openslides/agenda/static/css/agenda/_projector.scss @@ -0,0 +1,34 @@ +@import 'list_of_speakers'; + +/* Agenda list */ +.agendalist { + line-height: 1.5em; + + p { + font-size: 140%; + + &.done { + color: #9a9898; + } + } + + .mainitem { + margin-top: 25px; + } + + .subitem { + font-size: 100%; + margin-bottom: 4px; + } +} +.agendalist-table { + td { + vertical-align: top; + padding-left: 5px; + } + + .number { + padding: 0; + white-space: nowrap; + } +} diff --git a/openslides/agenda/static/css/agenda/_site.scss b/openslides/agenda/static/css/agenda/_site.scss new file mode 100644 index 000000000..fd3b568f1 --- /dev/null +++ b/openslides/agenda/static/css/agenda/_site.scss @@ -0,0 +1,28 @@ +@import 'list_of_speakers'; + +#agenda-table { + .icon-column { + width: 5%; + } + + .title-column { + padding: 0px 10px; + width: 95%; + } +} + +.agenda-sort { + .internal { + padding: 7px; + opacity: 0.6; + } + .angular-ui-tree-node { + min-height: 0; + } +} + +.speakers-toolbar { + margin: -20px -20px 30px -20px; + padding: 12px 15px 10px 15px; + +} diff --git a/openslides/assignments/static/css/assignments/_projector.scss b/openslides/assignments/static/css/assignments/_projector.scss new file mode 100644 index 000000000..bfd37c454 --- /dev/null +++ b/openslides/assignments/static/css/assignments/_projector.scss @@ -0,0 +1,19 @@ +.electionresults table { + width: calc(100% - 230px); +} + +#speakerbox { + width: 40%; + float: right; + margin: 20px; + right: 0; + bottom: 0; + position: absolute; + background: #d3d3d3; + border-radius: 7px; + border: 1px solid #999; + padding: 0px 7px 10px 19px; + z-index: 99; + box-shadow: 3px 3px 10px 1px rgba(0,0,0,0.5); + overflow: hidden; +} diff --git a/openslides/assignments/static/css/assignments/_site.scss b/openslides/assignments/static/css/assignments/_site.scss new file mode 100644 index 000000000..e7c8fa269 --- /dev/null +++ b/openslides/assignments/static/css/assignments/_site.scss @@ -0,0 +1,14 @@ +#content .col1 .ballot-tabs { + ul { + margin-left: 0px; + } + li.active a { + background-color: #f5f5f5 !important; + } + .tab-content { + background-color: #f5f5f5; + border: 1px solid #ddd; + border-width: 0px 1px 1px 1px; + padding: 15px; + } +} diff --git a/openslides/core/static/css/_fonts.scss b/openslides/core/static/css/_fonts.scss new file mode 100644 index 000000000..57c7f95cf --- /dev/null +++ b/openslides/core/static/css/_fonts.scss @@ -0,0 +1,28 @@ +/* + * Font definitions for OpenSlides site + */ + +@font-face { + font-family: $font; + src: $font-src; + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: $font-medium; + src: $font-medium-src; + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: $font-condensed; + src: $font-condensed-src; + font-weight: 100; + font-style: normal; +} +@font-face { + font-family: $font-condensed-light; + src: $font-condensed-light-src; + font-weight: 100; + font-style: normal; +} diff --git a/openslides/core/static/css/_helper.scss b/openslides/core/static/css/_helper.scss new file mode 100644 index 000000000..62e946e10 --- /dev/null +++ b/openslides/core/static/css/_helper.scss @@ -0,0 +1,228 @@ +/** General helper classes **/ +.disabled { + color: #555; + cursor: not-allowed !important; +} + +.bold { + font-weight: bold; +} + +.dropdown-menu { + margin-left: 0px !important; +} + +.slimDropDown { + padding-left: 4px !important; + padding-right: 4px !important; +} + +.btn-primary { + background-color: #317796; +} + +.btn-slim { + padding-left: 6px; + padding-right: 6px; +} + +.spacer, .spacer-top { + margin-top: 7px; +} + +.spacer-top-lg { + margin-top: 25px; +} + +.spacer-bottom { + margin-bottom: 7px; +} + +.spacer-right { + margin-right: 5px; +} + +.spacer-left { + margin-left: 5px; +} + +.spacer-left-lg { + margin-left: 10px; +} + +.no-padding { + padding: 0px; +} + +.lead-div { + margin-bottom: 20px; + + .lead { + margin-bottom: 0; + } +} + +.italic { + font-style: italic; +} + +.hoverActions { + font-size: 85%; +} + +.hiddenDiv { + visibility: hidden; +} + +.vcenter { + vertical-align: middle; +} + +.white-space-pre-line { + white-space: pre-line; +} + +.slimlabel.label { + padding: 0px 10px; +} + +.indentation, .indentation20 { + margin-left: 20px !important; +} + +.indentation-lg { + margin-left: 35px !important; +} + +.halfWidth { + width: 50%; +} + +.badge-info { + background-color: #f0ad4e; +} + +.badge-success { + background-color: #5bb85b; +} + +.smallhr { + margin-top: 5px; + margin-bottom: 5px; + border-color: #cccccc; +} + +.nobr { + white-space: nowrap; +} + +.rotate-45-deg-right { + filter: "progid: DXImageTransform.Microsoft.BasicImage(rotation=0.5)"; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); +} + +.optional { /* show optional column */ + display: auto; +} + +.login-logo { + width: 250px; +} + +.loginForm .input-group-addon i { + width: 15px; +} + +.modal-header { + padding: 5px; +} + +.no-padding { + padding: 0 !important; +} + +.no-padding-left { + padding-left: 0 !important; +} + +.no-padding-right { + padding-right: 0 !important; +} + +.scroll-x-container { + overflow-x: auto; +} + +.btn-group > label > input[type=radio] { + display: none; +} + +/* tables */ +.minimum { + width: 1px; +} + +.minimumTable { + width: auto; +} + +.deleteColumn { + text-align: center; + background-color: #ff9999 !important; +} + +th.sortable:hover, tr.pointer:hover, .pointer { + cursor: pointer; +} + +/** background colors for table rows **/ +tr.hiddenrow td { + background-color: #F5DCDC; +} + +tr.activeline td, li.activeline, .projected { + background-color: #bed4de !important; +} + +.related-projected { + background-color: #e1ecfe !important; +} + +tr.selected td { + background-color: #ff9999; +} + +.help-block { + font-size: 85%; + margin-top: 2px; + margin-left: 2px; +} + +.grey { + color: #9a9898; +} + +.info { + color: #222; + background-color: #bed4de; + border-color: #46b8da; +} +.error { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.warning { + color: #725523; + background-color: #fcf8e3; + border-color: #faebcc; +} diff --git a/openslides/core/static/css/_mediaqueries.scss b/openslides/core/static/css/_mediaqueries.scss new file mode 100644 index 000000000..129068b8d --- /dev/null +++ b/openslides/core/static/css/_mediaqueries.scss @@ -0,0 +1,109 @@ +/*//////////////////////////////////////// + =MEDIA QUERIES (RESPONSIVE DESIGN) +////////////////////////////////////////*/ + +/* display for 900 to 1200px resolutions */ +@media only screen and (max-width: 1200px) { + + body { font-size: 12px; } + + h1 { font-size: 30px; padding-bottom: 6px; } + + h2 { font-size: 22px; padding-bottom: 10px; } + + h3 { font-size: 18px; padding-bottom: 10px; } + + .col-md-4 { + float: left; + width: 50%; + } + + .motion-text.line-numbers-outside .os-line-number:after { + font-size: 10px; + top: 9px; + } +} + + +/* display for resolutions smaller that 900px */ +@media only screen and (max-width: 900px) { + + #nav .navbar li a { padding: 24px 5px; } + + #groups-table .perm-head { + width: 200px; + } + + /* hide text in groups-table earlier */ + #groups-table .optional { display: none; } + + /* show replacement elements, if any */ + #groups-table .optional-show { display: block !important; } + + /* hide searchbar input */ + #nav .searchbar input { display: none !important; } + #nav .searchbar .btn { + border-top-left-radius: 4px !important; + border-bottom-left-radius: 4px !important; + } +} + + +/* display for resolutions smaller that 760px */ +@media only screen and (max-width: 760px) { + + h1 { font-size: 22px; padding-bottom: 4px; } + + h2 { font-size: 16px; padding-bottom: 4px; } + + h3 { font-size: 14px; padding-bottom: 4px; } + + .user i { font-size: 16px; padding: 3px; } + + #nav .navbar { box-shadow: none; padding-right: 60px !important; } + #nav .navbar ul li a { padding: 10px 15px; } + #nav .searchbar { margin: 15px -53px 0 0 !important; } + + #chatbox { width: 100%; top: 40px; } + + .badge { font-size: 10px; } + + /* show replacement elements, if any */ + .optional-show { display: block !important; } + + /* hide marked element / column */ + .optional, .hide-sm { display: none !important; } +} + +/* display for resolutions smaller that 560px */ +@media only screen and (max-width: 560px) { + #content .containerOS { padding: 0; } + + #content .col2 { width: 100%; } + + #content .col2.sidebar-max, #content .col2.sidebar-min, + #content .col1.sidebar-min, #content .col1.sidebar-max { + width: 100%; + } + + #sidebar { + display: none !important; + } + + #sidebar-xs { + display: block !important; + } + + #sidebar-xs .projector_full { + margin-left: 0 !important; + width: 100%; + } + + #groups-table .perm-head { + width: 150px; + } + + .personalNoteFixed { + width: 100%; + } +} diff --git a/openslides/core/static/css/_startup-spinner.scss b/openslides/core/static/css/_startup-spinner.scss new file mode 100644 index 000000000..fe496aecf --- /dev/null +++ b/openslides/core/static/css/_startup-spinner.scss @@ -0,0 +1,34 @@ +#wrapper { + float: left; + width: 100%; + margin: 0 auto 0 auto; +} + +#startup-overlay { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + background-color: #fff; + z-index: 900; +} + +#spinner-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + max-height: 340px; + z-index: 1000; + + div { + width: 100%; + position: absolute; + bottom: 0; + font-size: 56px; + text-align: center; + color: #317796; + } +} diff --git a/openslides/core/static/css/_ui-override.scss b/openslides/core/static/css/_ui-override.scss new file mode 100644 index 000000000..3704f2fda --- /dev/null +++ b/openslides/core/static/css/_ui-override.scss @@ -0,0 +1,170 @@ +/* override booststrap's label class to fix linebreak and add spacing */ +.label { + display: inline-block; + padding: .4em .6em; + margin-right: .2em; + white-space: normal; +} + +/* Custom OpenSlides slider classes */ +.os-slider { + margin-top: 40px; + margin-bottom: 20px; + + &.rzslider { + .rz-bar { + background: #317796; + opacity: 0.3; + height: 2px; + } + + .rz-selection { + background: #317796; + } + + .rz-pointer { + width: 14px; + height: 14px; + top: -7px; + bottom: 0; + background-color: #317796; + border-radius: 7px; + + &:after { + display: none; + } + } + } +} + +/* ngDialog: override ngdialog-theme-default */ +.ngdialog.ngdialog-theme-default { + padding-top: 40px; + + .ngdialog-content { + font-family: $font, sans-serif !important; + } + + h2 { + margin-top: 5px; + } + + label { + font-family: $font-medium; + font-family: $font-medium, sans-serif; + font-weight: normal; + } + + .row:after, .row:before { + display: table-cell !important; + } +} + +.ngdialog.ngdialog-theme-default.wide-form .ngdialog-content { + width: 750px; + line-height: 1em; +} + +/* Bootbox: override z-index, that bootboxes are higher than ngDialogs */ +.bootbox { + z-index: 100000; +} + +/* angular-chosen: override default width of select fields in quickmode */ +.chosen-container { + width: 100% !important; + font-size: 14px; + + .chosen-choices { + border: 1px solid #ccc; + border-radius: 4px; + + li.search-choice { + margin: 6px 5px 0 0 !important; + } + } + + input { + margin: 4px 0 !important; + } +} + +.chosen-container-active .chosen-choices { + border-color: rgba(82,168,236,.8); + box-shadow: 0 0 8px rgba(82,168,236,.6); +} + +/* angular-ui-tree style */ +.angular-ui-tree-handle { + background: none repeat scroll 0 0 #f8faff; + border: 1px solid #dae2ea; + color: #7c9eb2; + padding: 10px; + + &:hover { + background: none repeat scroll 0 0 #f4f6f7; + border-color: #dce2e8; + color: #438eb9; + } +} + +.angular-ui-tree-placeholder { + background: none repeat scroll 0 0 #f0f9ff; + border: 2px dashed #bed2db; + box-sizing: border-box; +} + +/* ngAnimate classes */ +.animate-item.ng-enter { + -webkit-animation: fade-in 0.5s linear; + animation: fade-in 0.5s linear; +} + +.animate-item.ng-leave { + -webkit-animation: fade-out 0.25s linear; + animation: fade-out 0.25s linear; +} + +/* xeditable */ +.editable-click { + border: none; + cursor: pointer; + color: #555; + + &:hover { + color: #555; + } +} + +.popover-wrapper { + .editable-hide { + display: inline !important; + } + + .small-form { + input{ + width: 100px; + height: 30px; + } + + button{ + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + } + } +} + +@keyframes fade-out { + 0% { opacity: 1; background: none; } + 100% { opacity: 0; background: none; } +} +@keyframes fade-in { + 0% { opacity: 0; background: none; } + 100% { opacity: 1; background: none; } +} + +/* Angular formly */ +.checkbox label { + padding-left: 0; +} diff --git a/openslides/core/static/css/_variables.scss b/openslides/core/static/css/_variables.scss new file mode 100644 index 000000000..f52882b66 --- /dev/null +++ b/openslides/core/static/css/_variables.scss @@ -0,0 +1,9 @@ +/** Fonts **/ +$font: 'Roboto'; +$font-src: url('../fonts/Roboto-Regular.woff') format('woff'); +$font-medium: 'Roboto Medium'; +$font-medium-src: url('../fonts/Roboto-Medium.woff') format('woff'); +$font-condensed: 'Roboto Condensed'; +$font-condensed-src: url('../fonts/Roboto-Condensed-Regular.woff') format('woff'); +$font-condensed-light: 'Roboto Condensed Light'; +$font-condensed-light-src: url('../fonts/Roboto-Condensed-Light.woff') format('woff'); diff --git a/openslides/core/static/css/app.css b/openslides/core/static/css/app.css deleted file mode 100644 index a831578f0..000000000 --- a/openslides/core/static/css/app.css +++ /dev/null @@ -1,2025 +0,0 @@ -/* - * Font definitions for OpenSlides site - */ - -@font-face { - font-family: 'Roboto Condensed'; - src: url('../fonts/Roboto-Condensed-Regular.woff') format('woff'); - font-weight: 100; - font-style: normal; -} -@font-face { - font-family: 'Roboto Condensed Light'; - src: url('../fonts/Roboto-Condensed-Light.woff') format('woff'); - font-weight: 100; - font-style: normal; -} -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Regular.woff') format('woff'); - font-weight: 400; - font-style: normal; -} -@font-face { - font-family: 'Roboto Medium'; - src: url('../fonts/Roboto-Medium.woff') format('woff'); - font-weight: 400; - font-style: normal; -} - -body,.ngdialog-content { - font-family: "Roboto", sans-serif !important; -} -strong, b, th, .os-table .title, .user_details label, .ngdialog label { - font-family: "Roboto Medium"; - font-family: "Roboto Medium", sans-serif; - font-weight: normal; -} -h1, h2, h3, h4, h5, h6, #header .title { - font-family: "Roboto Condensed", sans-serif; - font-weight: 400; -} -#content .col2 h4 { - font-family: 'Roboto Condensed Light'; - font-weight: 300; -} -#content .col1 .meta .heading .drop-down-name, #content .col1 .meta h3 { - font-family: 'Roboto Condensed Light'; -} -.details h1 { - font-size: 20px; - color: #000; -} -.details h2 { - font-size: 18px; - color: #000; -} -.details h3 { - font-size: 16px; - color: #000; -} - - -/* - * Template styles for OpenSlides site - */ - -* { /* set margin/padding for all (block) elements to null */ - margin: 0; - padding: 0; -} - -body { - font-size: 14px; - line-height: 1.5; - color: #222; - text-align: center; - background: #e8eaed; -} - -div { - text-align: left; -} - -blockquote { - font-size: inherit; -} - -h1, h2, h3, h4, h5, h6 { - line-height: 1.1; -} - -h1 { - font-size: 36px; - color: #317796; - padding-bottom: 8px; -} - -h2 { - font-size: 22px; - color: #9a9898; - padding-bottom: 14px; -} - -h3 { - font-size: 22px; - color: #222; - padding-bottom: 14px; -} - -h4 { - font-size: 18px; - color: #222; -} -.heading a { - color: #444; -} -.heading a:hover { - color: #2b6883; - text-decoration: none; -} - -p.os-split-after { - margin-bottom: 0; -} -p.os-split-before { - margin-top: 0; -} - -ul.os-split-after, ol.os-split-after { - margin-bottom: 0; -} - -a { - text-decoration: none; - color: #2b6883; -} - -a:hover { - text-decoration: underline; -} - -img { - border: none; -} - -#wrapper { - float: left; - width: 100%; - margin: 0 auto 0 auto; -} - -#startup-overlay { - position: absolute; - top: 0; - left: 0; - height: 100%; - width: 100%; - background-color: #fff; - z-index: 900; -} - -#spinner-container { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - max-height: 340px; - z-index: 1000; -} -#spinner-container div { - width: 100%; - position: absolute; - bottom: 0; - font-size: 56px; - text-align: center; - color: #317796; -} - -/** Header **/ -#header { - float: left; - width: 100%; - height: 40px; - background: #002c42; - color: #999; -} - -#header a.headerlink { - text-decoration: none; -} -#header a.headerlink { - color: #999; -} -#header a.headerlink:hover, #header a.headerlink:active, #header a.headerlink.active { - color: #e8eaed; -} - -#header .title { - float: left; - margin: 2px 0 0 -5px; - color: #fff; -} - -#header .user { - float: right; - margin: 5px 0 0 0; - height: 100%; -} -#header .user .inline { - display: inline; -} - -#nav { - float: left; - width: 100%; - height: auto; - background: #317796; - color: #fff; - overflow-y: hidden; -} - -#header .containerOS, #nav .containerOS, #content .containerOS { - max-width: 1300px; - height: 100%; - margin: 0 auto 0 auto; - padding: 0 30px; -} - -#nav .navbar { - width: 100%; - border: none; - margin: 0; -} - -#nav .navbar-toggle { - padding: 5px 0; - z-index: 2; -} - -#nav .navbar-toggle i { - font-size: 28px; - color: #fff; - opacity: 0.5; -} - -#nav .navbar-toggle:hover i { - opacity: 1; -} - -#nav .navbar-collapse { - padding: 0; -} - -#nav .navbar ul { - list-style: none; - margin: 0; -} - -#nav .navbar ul li { - float: left; - text-align: center; -} - -#nav .navbar ul li.active { - background: url('/static/img/nav_dark-bg.png'); -} - -#nav .navbar ul li.active a { - background: url('/static/img/nav_active.png') no-repeat bottom; -} - -#nav .navbar li a { - display: block; - color: #fff; - padding: 22px 15px; - text-decoration: none; -} - -#nav .navbar li a:hover { - background: url('/static/img/nav_dark-bg.png'); - text-decoration: none; -} - -#nav .navbar li i { - font-size: 28px; - display: block; - margin-bottom: 6px; - margin-right: 0; - opacity: 0.5; -} - -#nav .navbar li.active i, #nav .navbar li a:hover i { - opacity: 1; -} - -#nav .searchbar { - float: right; - margin-top: 33px; - margin-bottom: 32px; - display: inline-table; -} - -#nav .searchbar input { - width: 150px; -} - -#nav .searchbar .btn { - background: #e8eaed; - color: #555; -} - -/** Goto top link **/ -#goto-top { - position: fixed; - bottom: 15px; - right: 30px; - padding: 10px 30px; - background: white; - opacity: 0.6; - transition: opacity 250ms ease-out; - z-index: 100; -} -#goto-top:hover { - opacity: 1; - transition: opacity 250ms ease-in; -} -#goto-top a:hover { - text-decoration: none; -} - -/** Content **/ - -#content { - float: left; - width: 100%; - margin-top: 20px; -} - -#content .containerOS { - height: 30px; -} - - -/** Main column **/ - -#content .col1 { - float: left; -} - -#content .col1.sidebar-max { /*with maximized sidebar*/ - width: calc(100% - 325px); -} - -#content .col1.sidebar-min { /*with minimized sidebar*/ - width: calc(100% - 70px); -} - -#content .col1.sidebar-none { /*without sidebar*/ - width: 100%; -} - -.col1 .header { - background: #fff; - border: 1px solid #d3d3d3; -} - -.col1 .title { - padding: 0 20px; - width: auto; - background: #fff; -} - -.col1 .header .submenu { - float: right; -} - -.col1 .meta .title { - width: 100%; - cursor: pointer; - height: 30px; - color: #fff; - background: #317796; - padding: 5px 20px 0 20px; -} -.col1 .meta .title .name { - float: left; - font-size: 14px; -} -.col1 .meta .title .icon { - float: right; -} - -.col1 .meta .detail { - padding: 0 20px 10px 20px; - width: 100%; - min-height: 30px; - background: #d3d3d3; - color: #444; -} - -.col1 .details { - padding: 20px; - width: auto; - margin-top: 20px; - background: #fff; - border: 1px solid #d3d3d3; -} - -.col1 .details .motion-toolbar .toolbar-left { - margin-top: 0; - margin-bottom: 55px; - margin-left: 15px; -} - -.col1 .details .motion-toolbar .toolbar-left > * { - margin-right: 5px; - float: left; -} - -.col1 .details .motion-toolbar .toolbar-left .btn.disabled { - cursor: default; - opacity: 1; - background-color: #eee; -} - -.col1 .details .inline-editing-activator { - margin-right: 13px; -} - -.col1 .details img { - max-width: 100%; - height: auto; -} -.col1 ol, .col1 ul { - margin-left: 15px; -} -.ballot-tabs ul { - margin-left: 0px; -} -.ballot-tabs li.active a { - background-color: #f5f5f5 !important; -} -.ballot-tabs .tab-content { - background-color: #f5f5f5; - border: 1px solid #ddd; - border-width: 0px 1px 1px 1px; - padding: 15px; - -} - - -/* Toolbar to save motion in inline editing mode */ -.motion-save-toolbar { - position: fixed; - bottom: 0; - left: 50%; - height: 75px; - width: 300px; - background: #d3d3d3; - color: black; - text-align: center; - padding: 5px; - z-index: 1000001; - display: none; - border: 1px solid #d3d3d3; - margin-left: -150px; - border-bottom: none; - -webkit-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); - -moz-box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); - box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.75); -} -.motion-save-toolbar.visible { - display: block; -} - -.motion-save-toolbar .changed-hint { - display: block; - line-height: 16px; - text-align: center; - margin-bottom: 10px; - font-weight: bold; -} - -.motion-save-toolbar label { - font-weight: normal; - line-height: 16px; - text-align: left; - padding-left: 16px; - margin-top: 5px; - margin-left: 15px; -} - -.motion-save-toolbar label input { - margin-left: -16px; -} - -/*** Line numbers ***/ -.motion-text .highlight { - background-color: #ff0; -} -.motion-text ins { - color: green; - text-decoration: underline; -} -.motion-text del { - color: red; - text-decoration: line-through; -} -.motion-text.line-numbers-outside { - padding-left: 40px; - position: relative; -} -.motion-text.line-numbers-outside .os-line-number { - display: inline-block; - font-size: 0; - line-height: 0; - width: 22px; - height: 22px; - position: absolute; - left: -20px; - padding-right: 55px; -} -.motion-text.line-numbers-outside .os-line-number:after { - content: attr(data-line-number); - position: absolute; - left: 20px; - top: 10px; - vertical-align: top; - color: gray; - font-size: 12px; - font-weight: normal; -} - -.motion-text.line-numbers-inline .os-line-break { - display: none; -} -.motion-text.line-numbers-inline .os-line-number { - display: inline-block; -} -.motion-text.line-numbers-inline .os-line-number:after { - display: inline-block; - content: attr(data-line-number); - vertical-align: top; - font-size: 10px; - font-weight: normal; - color: gray; - margin-top: -3px; - margin-left: 0; - margin-right: 0; -} - -.motion-text.line-numbers-none .os-line-break { - display: none; -} -.motion-text.line-numbers-none .os-line-number { - display: none; -} - -.os-line-number { - position: relative; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} -.os-line-number:after { - position: relative; - user-select: none; - -moz-user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - -o-user-select: none; -} - -.line-numbers-outside .os-line-number.selectable:hover:before, .line-numbers-outside .os-line-number.selected:before { - cursor: pointer; - content: "\f067"; - display: inline-block; - position: absolute; - width: 14px; - height: 14px; - border-radius: 0.25em; - top: 4px; - left: 43px; - font-family: FontAwesome; - font-size: 12px; - color: white; - line-height: 16px; - text-align: center; - background-color: #337ab7; -} - -.tt_change_recommendation_create_help { - display: none; - max-width: 150px; - left: -45px; - margin-top: -15px !important; - z-index: 10000; -} -/* special hack for firefox only (see issue#2967) */ -@-moz-document url-prefix() { - .tt_change_recommendation_create_help { - margin-top: -20px !important; - } -} -.tt_change_recommendation_create_help.opened { - display: inherit; - opacity: 0.8; -} - -/** Styles for annotating the original motion text with change recommendations */ - -.motion-text-holder { - position: relative; -} - -.motion-text-holder .change-recommendation-list { - position: absolute; - top: 0; - left: -10px; - width: 4px; - list-style-type: none; - margin: 0; -} - -.motion-text-holder .change-recommendation-list > li { - position: absolute; - width: 4px; - cursor: pointer; -} -.motion-text-holder .change-recommendation-list > li.insert { - background-color: #00aa00; -} -.motion-text-holder .change-recommendation-list > li.delete { - background-color: #aa0000; -} -.motion-text-holder .change-recommendation-list > li.replace { - background-color: #0333ff; -} -.motion-text-holder .change-recommendation-list > li.other { - background-color: #777777; -} - -.motion-text-holder .change-recommendation-list .tooltip { - display: none; -} - -/** Diff view */ - -.motion-text-holder li.os-split-before { - list-style-type: none; -} - -.change-recommendation-overview { - background-color: #eee; - border: solid 1px #ddd; - border-radius: 3px; - margin-bottom: 5px; - margin-top: -15px; - padding-top: 5px; -} -.change-recommendation-overview { - margin-bottom: 30px; - padding: 10px 15px 0 10px; -} -.change-recommendation-overview h3 { - margin-top: 10px; -} -.change-recommendation-overview ul { - list-style: none; - display: table; -} -.change-recommendation-overview li { - display: table-row; - cursor: pointer; -} -.change-recommendation-overview li:hover { - text-decoration: underline; -} -.change-recommendation-overview li > * { - display: table-cell; - padding: 1px; -} -.change-recommendation-overview .status { - color: gray; - font-style: italic; -} -.change-recommendation-overview .status > *:before { - content: '('; -} -.change-recommendation-overview .status > *:after { - content: ')'; -} -.change-recommendation-overview .no-changes { - font-style: italic; - color: grey; -} - -.diff-box { - background-color: #f9f9f9; - border: solid 1px #eee; - border-radius: 3px; - margin-bottom: 0; - padding-top: 0; - padding-right: 155px; -} -.motion-text-with-diffs li.os-split-before { - list-style-type: none; -} -.motion-text-with-diffs .original-text ul:last-child, .motion-text-with-diffs .original-text ol:last-child { - padding-bottom: 16px; -} -.motion-text-with-diffs .original-text ul.os-split-after:last-child, .motion-text-with-diffs .original-text ol.os-split-after:last-child { - padding-bottom: 0; -} -.motion-text-with-diffs.line-numbers-inline .diff-box, .motion-text-with-diffs.line-numbers-none .diff-box { - margin-right: -220px; -} -.diff-box:hover { - background-color: #f0f0f0; -} -.diff-box .action-row { - font-size: 0.8em; - padding-top: 5px; - padding-bottom: 5px; - float: right; - width: 150px; - text-align: right; - margin-right: -150px; - opacity: 0.5; -} -.diff-box:hover .action-row { - opacity: 1; -} -.diff-box .action-row .btn-delete { - margin-left: 5px; - color: red; -} -.diff-box .action-row .btn-edit { - margin-left: 5px; -} -.diff-box .status-row { - font-style: italic; - color: gray; -} -.diff-box .status-row > *:after { - content: ':'; -} - -.motion-text-diff .delete { - color: red; - text-decoration: line-through; -} -.motion-text-diff .insert { - color: green; - text-decoration: underline; -} -.motion-text-diff.line-numbers-outside .insert .os-line-number { - display: none; -} -.motion-text-diff.line-numbers-inline .insert .os-line-number { - display: none; -} - -/** Motion personal note **/ -#personalNote.pinned { - position: fixed; - z-index: 1000; - bottom: 0; - margin: 0px 20px; - -webkit-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5); - -moz-box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5); - box-shadow: 0px 0px 10px 1px rgba(0,0,0,0.5); -} - -#personalNote.pinned #personal-note-inline-editor { - overflow-y: scroll; - min-height: 100px; - max-height: 200px; -} - -#personalNoteSpacer { - display: none; - height: 220px; -} - -#personalNoteSpacer.activeSpace { - display: block; -} - -/** Projector sidebar column **/ - -#content .col2 { - float: right; - position: relative; - display: inline-flex; - z-index: 3; - margin-bottom: 20px; -} - -#sidebar-xs { - display: none !important; -} - -#content .col2.sidebar-max { - width: 325px; -} - -#content .col2.sidebar-min { - width: 70px; -} -#content .col2.sidebar-none { - width: 0px; -} - -#content .col2 h4 { - font-size: 22px; - line-height: 24px; - color: #444; -} -#content .col1 .meta .heading, #content .col1 .meta h3 { - font-size: 22px; - line-height: 24px; - font-weight: 300; - color: #444; - padding-bottom: 0; - margin-top: 20px; - margin-bottom: 5px; -} - -#content .col2 a:hover h4 { - text-decoration: none; -} - -.col2 .projector_min { - background: url('/static/img/nav_projector_sidebar_min.png') no-repeat left 17px; - width: 50px; - margin-left: 20px; - padding-left: 8px; - float: right; -} - -.col2 .projector_min .icon { - float: left; - color: #fff; - font-size: 24px; - width: 50px; - text-align: center; - padding: 7px 0; - background: #317796; -} - -.col2 .projector_min .icon a i { - opacity: 0.5; -} - -.col2 .projector_min .icon a:hover i { - opacity: 1; -} - -.col2 .projector_min .icon a { - color: #fff; - display: block; -} - -.col2 .projector_full { - margin-left: 30px; - width: auto; -} - -.col2 .projector_full .title { - width: 100%; - color: #fff; - height: 50px; - background: #317796; - cursor: pointer; -} - -.col2 .projector_full .title i { - margin-right: 10px; -} - -.col2 .projector_full .title .name { - float: left; - padding: 8px 0 0 20px; - font-size: 22px; - font-weight: 400; -} - -.col2 .projector_full .title .icon { - float: right; - width: 50px; - text-align: center; - padding-top: 7px; - font-size: 24px; -} - -.col2 .projector_full .title a, .col2 .projector_full .title a:hover { - color: #fff; - text-decoration: none; - display: block; -} -.meta .title:hover, .col2 .projector_full .title:hover { - color: #d3d3d3; -} - -.col2 .projector_full .details { - clear: both; - width: 100%; - background: #d3d3d3; -} - -.col2 .projector_full .details .section { - padding: 1px 20px; - width: auto; - border-bottom: 1px solid #c2c2c2; -} -.col2 .projector_full .details .section div.in.collapse { - padding-bottom: 15px; -} - -#content .col2 .section a:hover { - text-decoration: none; -} - -#content .toggle-icon { - font-size: 20px; - float: right; - margin-top: 10px; -} - -/* Countdown fullscreen mode */ -#countdownWrapper { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1000; - background-color: white; -} -#countdownWrapper > div { - text-align: center; - margin-top: 50px; -} -#countdown { - display: inline-block; - padding: 20px 50px; - border-radius: 8px; - font-size: 30vw; - line-height: 1; - font-weight: bold; -} -#countdown .description { - font-weight: normal; - font-size: 5vw; -} -#countdown.warning { - color: #ed940d; -} -#countdown.negative { - color: #CC0000; -} - -/* countdown and message controls */ -.col2 .countdown.panel, .col2 .message.panel { - margin-bottom: 7px; -} - -.col2 .countdown .panel-heading { - padding: 3px 15px; -} - -.col2 .countdown .panel-body { - padding: 5px 15px; -} - -.col2 .message .panel-heading { - padding: 3px 15px; -} - -.col2 .message .panel-body { - padding: 10px 15px; -} - -.col2 .message projector-button { - float: left; - width: auto; - margin: 5px 10px 5px 0px; -} - -.col2 .message .innermessage { - float: left; - width: 180px; - max-width: 170px; - overflow: hidden; -} - -.col2 .message .panel-input { - width: 228px; - float: left; - margin-top: 10px; -} - -.col2 .countdown_timer { - font-size: 2.2em; - font-weight: bold; -} - -.col2 .countdown .icons, .col2 .message .editicon { - padding-right: 10px; -} - -.col2 .countdown_timer.warning { - color: #ed940d; -} - -.col2 .countdown_timer.negative { - color: #CC0000; -} - -.notNull { - color: red; - font-weight: bold; -} - -/* iframe for live view */ -.iframe { - -moz-transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -o-transform-origin: 0 0; - transform-origin: 0 0 0; -} - -.iframewrapper { - width: 256px; - position: relative; - overflow: hidden; - border: 1px solid #D5D5D5; - margin-bottom: 10px; -} - -.iframeoverlay { - width: 256px; - position: absolute; - top: 0px; - left: 0px; - display: block; - z-index: 1; -} - -/** Motion **/ -.motion-toolbar, .speakers-toolbar { - background-color: #f5f5f5; - border-bottom: 1px solid #ddd; - padding: 12px 0 10px 0; - height: 54px; - margin: -20px -5px 50px -5px; -} - -.motion-toolbar:first-child { - margin-bottom: 20px; -} - -.speakers-toolbar { - margin: -20px -20px 30px -20px; - padding: 12px 15px 10px 15px; - -} - -/** OS-Table **/ -.os-table small { - color: #555; -} -.os-table .row { - border: 1px solid #ddd; - border-top: 0px; -} - -.os-table .data-row:hover { - background-color: #f5f5f5; -} - -.os-table .data-row > div { - padding: 10px 0px 10px 0px; -} - -.os-table .id-col { - width: 50px; - min-height: 1px; - word-wrap: break-word; -} - -.os-table .id-col-space { - width: calc(100% - 50px); -} - -.os-table .no-projector-spacer { - margin-right: 20px; - float: left; -} - -.os-table .header-row { - border-top: 1px solid #ddd; - background-color: #f5f5f5; -} - -.os-table .header-row > div { - padding: 10px; -} - -.os-table .main-header { - width: calc(100% - 50px); - float: right; -} - -.os-table .main-header .form-inline { - margin-left: 15px; - width: 100%; -} - -.os-table .content > div { /* horizontal blocks */ - display: inline-block; - float: left; -} - -.os-table .content > div > div { /* vertival blocks */ - margin-bottom: 3px; -} - -.os-table .content > div > div:last-child { - margin-bottom: 0px; -} - -.os-table .row .centered { - text-align: center; -} - -.os-table .row .col-xs-1 { - width: 50px; -} - -.os-table .projector { - width: 70px !important; -} - -.os-table .row .col-xs-4 { - padding-right: 10px; -} - -.os-table .header-row .dropdown > span, .os-table .sort-spacer { - padding: 5px 10px 5px 10px; -} - -.os-table .title { - font-size: 120%; - margin-right: 3px; - padding: 0; - background-color: transparent; -} - -.os-table .dropdown-hover-space { - padding: 5px 5px 5px 0; -} - -/** Agenda table **/ -#agenda-table .icon-column { - width: 5%; -} - -#agenda-table .title-column { - padding: 0px 10px; - width: 95%; -} - -/** Mediafile table **/ -#mediafile-table .icon-column { - width: 10%; -} - -#mediafile-table .title-column { - padding: 0px 10px; - width: 90%; -} - -/** Config **/ -.input-comments > div { - margin-bottom: 5px; -} -.config-checkbox { - padding: 6px 12px; -} -.config-translations > div { - margin-bottom: 5px; - padding-right: 15px; - width: 100%; -} -.config-translations .inputs input { - width: 47%; -} -.config-translations .inputs .arrow { - width: 6%; - float: left; - text-align: center; -} - -/** Pojector sidebar **/ -.col2 .projectorSelector { - margin-top: 10px; - margin-bottom: 10px; -} - -.col2 .projectorSelector > div > div { - width: 65%; - padding-right: 5px; - float: left; - margin-bottom: 10px; -} - -.col2 .projectorSelector > div > div > button { - width: 100%; -} - -.col2 .projectorSelector .manageBtn { - width: 35%; -} - -.col2 .projectorSelector .btn-group { - margin-left: auto; - margin-right: auto; - display: table; -} - -.col2 .projectorSelector > div { - margin-bottom: 10px; -} - -/** manage-projectors **/ - -.projectorContainer > div { - display: inline-table; - width: 256px; - margin: 10px 20px 35px 10px; -} - -.projectorContainer > div > div { - margin-bottom: 10px; -} - -.projectorContainer .middle { - width: 100%; -} - -.projectorContainer .middle > div { - margin-left: auto; - margin-right: auto; - display: table; -} - -.projectorContainer .dropdown { - width: 65%; - padding-right: 5px; - float: left; -} - -.projectorContainer .dropdown > button { - width: 100%; -} - -.projectorContainer .btn-danger { - width: 35%; -} - -.projectorContainer .resolution { - display: inline-block; - width: 120px; -} - -/** Agenda sort view **/ -.agenda-sort .internal { - padding: 7px; - opacity: 0.6; -} -.agenda-sort .angular-ui-tree-node { - min-height: 0; -} - -/** Footer **/ -#footer { - float: left; - height: 50px; - padding-top: 15px; - font-size: 90%; -} - -/** Messaging status bar **/ -#messaging { - position: fixed; - bottom: 0; - width: 100%; - z-index: 100000; -} -#messaging-container { - margin: 0 auto 0 auto; - padding: 0px 20px; - max-width: 1400px; -} -#messaging-container > div { - margin-bottom: 10px; - padding: 10px 20px; - border-radius: 6px; - box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); -} -#messaging .info { - color: #222; - background-color: #bed4de; - border-color: #46b8da; -} -#messaging .error { - color: #a94442; - background-color: #f2dede; - border-color: #ebccd1; -} -#messaging .success { - color: #3c763d; - background-color: #dff0d8; - border-color: #d6e9c6; -} -#messaging .warning { - color: #725523; - background-color: #fcf8e3; - border-color: #faebcc; -} - -/** General helper classes **/ -.disabled { - color: #555; - cursor: not-allowed !important; -} - -.bold { - font-weight: bold; -} - -.btn-primary { - background-color: #317796; -} - -.dropdown-menu { - margin-left: 0px !important; -} - -.slimDropDown { - padding-left: 4px !important; - padding-right: 4px !important; -} - -.btn-slim { - padding-left: 6px; - padding-right: 6px; -} - -.spacer, .spacer-top { - margin-top: 7px; -} - -.spacer-top-lg { - margin-top: 25px; -} - -.spacer-bottom { - margin-bottom: 7px; -} - -.spacer-right { - margin-right: 5px; -} - -.spacer-left { - margin-left: 5px; -} - -.spacer-left-lg { - margin-left: 10px; -} -.no-padding { - padding: 0px; -} -.lead-div { - margin-bottom: 20px; -} - -.lead-div .lead { - margin-bottom: 0; -} - -.italic { - font-style: italic; -} -.hoverActions { - font-size: 85%; -} - -.hiddenDiv { - visibility: hidden; -} - -.vcenter { - vertical-align: middle; -} - -.white-space-pre-line { - white-space: pre-line; -} - -.slimlabel.label { - padding: 0px 10px; -} - -.indentation, .indentation20 { - margin-left: 20px !important; -} - -.indentation-lg { - margin-left: 35px !important; -} - -.halfWidth { - width: 50%; -} - -.badge-info { - background-color: #f0ad4e; -} -.badge-success { - background-color: #5bb85b; -} - -.smallhr { - margin-top: 5px; - margin-bottom: 5px; - border-color: #cccccc; -} - -.nobr { - white-space: nowrap; -} - -.rotate-45-deg-right { - filter: progid: DXImageTransform.Microsoft.BasicImage(rotation=0.5); - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - -o-transform: rotate(45deg); - transform: rotate(45deg); -} - -.optional { /* show optional column */ - display: auto; -} - -.login-logo { - width: 250px; -} - -.loginForm .input-group-addon i { - width: 15px; -} - -.modal-header { - padding: 5px; -} - -.no-padding { - padding: 0 !important; -} -.no-padding-left { - padding-left: 0 !important; -} -.no-padding-right { - padding-right: 0 !important; -} - -.scroll-x-container { - overflow-x: auto; -} -.import-preview p { - margin: 0; - padding: 0; -} - -.btn-group > label > input[type=radio] { - display: none; -} - -/* user details */ -.user_details fieldset { - margin-bottom: 10px; -} -.user_details legend { - margin-bottom: 5px; -} -.user_details label { - margin: 10px 0 0 0; - display: block; -} -.user_details label:after { - content: ":"; -} - -/* group list */ -#groups-table { - table-layout: fixed; - text-align: center; -} - -#groups-table > thead > tr > th { - vertical-align: top; - text-align: center; - min-width: 40px; - overflow: hidden; -} - -#groups-table .perm-head { - width: 300px; -} - -#groups-table > thead > tr > th > div { - text-align: center; -} - -#groups-table > tbody > tr:hover { - background-color: #f5f5f5 !important; -} - -#groups-table > tbody > tr:first-child { - background-color: #f9f9f9; -} - -#groups-table > tbody > tr > td:first-child { - text-align: left; -} - -#groups-table .optional-show { /* hide optional-show column */ - display: none; -} - -.lastSpeakers { - color: #9a9898; -} -.lastSpeakers .indentation { - margin-left: 27px; -} - -.currentSpeaker { - font-weight: bold; -} - -.currentSpeaker i { - padding-right: 5px; -} - -.nextSpeakers { - margin-left: 8px; -} - -.nextSpeakers li { - line-height: 150%; -} - -/* search results */ -.searchresults li { - margin-bottom: 12px; -} -.searchresults h3 { - margin-bottom: 3px; - padding-bottom: 0; -} -.searchresults .hits { - margin-bottom: 10px; - color: #999999; - font-size: 85%; -} - -/* Custom OpenSlides slider classes */ -.os-slider { - margin-top: 40px; - margin-bottom: 12px; -} -.os-slider.rzslider .rz-bar { - background: #317796; - opacity: 0.3; - height: 2px; -} -.os-slider.rzslider .rz-selection { - background: #317796; -} -.os-slider.rzslider .rz-pointer { - width: 14px; - height: 14px; - top: -7px; - bottom: 0; - background-color: #317796; - border-radius: 7px; -} -.os-slider.rzslider .rz-pointer:after { - display: none; -} - -/* image plugin for CKEditor */ -#imageBrowserContainer .imageTable { - table-layout: fixed; - width: 100%; -} - -#imagePreviewSection { - position: absolute; - margin: 0px 20px 20px 20px; -} - -#imagePreviewSection input { - width: 65px; -} - -#imagePreviewSection .hidden { - display: none; -} - -#imagePreviewSection > div { - margin-bottom: 10px; -} - -#imagePreviewSection i { - font-size: 130%; - cursor: pointer; -} - -#imagePreview { - max-width: 400px; - max-height: 300px; - overflow: auto; - padding: 2px; - border: 3px solid #317796; -} - -#imagePreview img[src=""] { - display: none; -} - -#imageBrowser { - max-height: 500px; - overflow: auto; -} - -#imageBrowser .image { - position: relative; - float: left; - width: 75px; - height: 75px; - margin: 5px; - background-size: 125%; - background-repeat: no-repeat; - background-position: center center; - border: 2px solid #bed4de; - cursor: pointer; -} -#imageBrowser .image:hover { - border-color: #317796; -} -#imageBrowser .image.selected { - border-color: #317796; -} - -/* ngDialog: override ngdialog-theme-default */ - -.ngdialog.ngdialog-theme-default { - padding-top: 40px; -} - -.ngdialog.ngdialog-theme-default.wide-form .ngdialog-content { - width: 750px; - line-height: 1em; -} - -.ngdialog h2 { - margin-top: 5px; -} - -.ngdialog .row:after, .ngdialog .row:before { - display: table-cell !important; -} - -.help-block { - font-size: 85%; - margin-top: 2px; - margin-left: 2px; -} - -/* Bootbox: override z-index, that bootboxes are higher than ngDialogs */ -.bootbox { - z-index: 100000; -} - -/* angular-chosen: override default width of select fields in quickmode */ -.chosen-container { - width: 100% !important; - font-size: 14px; -} -.chosen-container .chosen-choices { - border: 1px solid #ccc; - border-radius: 4px; -} -.chosen-container-active .chosen-choices { - border-color: rgba(82,168,236,.8); - box-shadow: 0 0 8px rgba(82,168,236,.6); -} -.chosen-container .chosen-choices li.search-choice { - margin: 6px 5px 0 0 !important; -} -.chosen-container input { - margin: 4px 0 !important; -} - -/* angular-ui-tree style */ - -.angular-ui-tree-handle { - background: none repeat scroll 0 0 #f8faff; - border: 1px solid #dae2ea; - color: #7c9eb2; - padding: 10px; -} - -.angular-ui-tree-handle:hover { - background: none repeat scroll 0 0 #f4f6f7; - border-color: #dce2e8; - color: #438eb9; -} - -.angular-ui-tree-placeholder { - background: none repeat scroll 0 0 #f0f9ff; - border: 2px dashed #bed2db; - box-sizing: border-box; -} - -/* ngAnimate classes */ -.animate-item.ng-enter { - -webkit-animation: fade-in 0.5s linear; - animation: fade-in 0.5s linear; -} - -.animate-item.ng-leave { - -webkit-animation: fade-out 0.25s linear; - animation: fade-out 0.25s linear; -} - -/* xeditable */ -.editable-click { - border: none; - cursor: pointer; - color: #555; -} - -.editable-click:hover { - color: #555; -} - -.popover-wrapper .editable-hide { - display: inline !important; -} - -.popover-wrapper .small-form input{ - width: 100px; - height: 30px; -} -.popover-wrapper .small-form button{ - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; -} - -@keyframes fade-out { - 0% { opacity: 1; background: none; } - 100% { opacity: 0; background: none; } -} -@keyframes fade-in { - 0% { opacity: 0; background: none; } - 100% { opacity: 1; background: none; } -} - -/* override bootstraps's progress bar for poll results */ -.pollresults .progress { - height: 12px; - margin-bottom: 0; -} - - -/* override booststrap's label class to fix linebreak and add spacing */ -.label { - display: inline-block; - padding: .4em .6em; - margin-right: .2em; - white-space: normal; -} - -/* for csv import form */ -.import { - margin-left: 15px; - width: 35%; -} - -.import .file-select input { - display: none; -} - -.import .file-select label { - font-weight: normal; - cursor: pointer; -} - -.import .clear-file { - color: #555; -} - -.import .help-block { - padding-bottom: 0; -} - -.import .help-block-big { - font-size: 100%; -} - -/* voting results */ -.result_label { - margin-top: 5px; -} -.pollresults table { - margin-bottom: 0; -} -.pollresults table td{ - border: none !important; - padding: 5px 2px !important; - vertical-align: middle !important; -} -.pollresults table .icon { - color: #636363; -} -.pollresults table tr.total td { - border-top: 1px solid #444 !important; -} - -/* Chatbox */ -#chatbox { - position: fixed; - top: 40px; - right: 0; - width: 40%; - border-color: #dddddd; - border-width: 1px; - box-shadow: -5px 5px 5px rgba(0, 0, 0, 0.2); - height: 234px; - padding: 0 10px 10px 10px; - z-index: 5; -} - -#chatbox-text { - overflow-y: scroll; - height: 190px; - color: #222; -} - -/* tables */ - -.minimum { - width: 1px; -} - -.minimumTable { - width: auto; -} - -.deleteColumn { - text-align: center; - background-color: #ff9999 !important; -} - -th.sortable:hover, tr.pointer:hover, .pointer { - cursor: pointer; -} - -/* background colors for table rows */ -tr.hiddenrow td { - background-color: #F5DCDC; -} - -tr.activeline td, li.activeline, .projected { - background-color: #bed4de !important; -} - -.related-projected { - background-color: #e1ecfe !important; -} - -tr.selected td { - background-color: #ff9999; -} - -/** Angular formly **/ -.checkbox label { - padding-left: 0; -} - -/** Colors **/ - -.grey { /*h2 grey*/ - color: #9a9898; -} - -/*//////////////////////////////////////// - =MEDIA QUERIES (RESPONSIVE DESIGN) -////////////////////////////////////////*/ - -/* display for 900 to 1200px resolutions */ -@media only screen and (max-width: 1200px) { - - body { font-size: 12px;} - - h1 { font-size: 30px; padding-bottom: 6px; } - - h2 { font-size: 22px; padding-bottom: 10px; } - - h3 { font-size: 18px; padding-bottom: 10px; } - - .col-md-4 { - float: left; - width: 50%; - } - - .motion-text.line-numbers-outside .os-line-number:after { - font-size: 10px; - top: 9px; - } -} - - -/* display for resolutions smaller that 900px */ -@media only screen and (max-width: 900px) { - - #nav .navbar li a { padding: 24px 5px; } - - #groups-table .perm-head { - width: 200px; - } - - /* hide text in groups-table earlier */ - #groups-table .optional { display: none; } - - /* show replacement elements, if any */ - #groups-table .optional-show { display: block !important; } - - /* hide searchbar input */ - #nav .searchbar input { display: none !important; } - #nav .searchbar .btn { - border-top-left-radius: 4px !important; - border-bottom-left-radius: 4px !important; - } -} - - -/* display for resolutions smaller that 760px */ -@media only screen and (max-width: 760px) { - - h1 { font-size: 22px; padding-bottom: 4px; } - - h2 { font-size: 16px; padding-bottom: 4px; } - - h3 { font-size: 14px; padding-bottom: 4px; } - - .user i { font-size: 16px; padding: 3px; } - - #nav .navbar { box-shadow: none; padding-right: 60px !important; } - #nav .navbar ul li a { padding: 10px 15px; } - #nav .searchbar { margin: 15px -53px 0 0 !important; } - - #chatbox { width: 100%; top: 40px; } - - .badge { font-size: 10px; } - - /* show replacement elements, if any */ - .optional-show { display: block !important; } - - /* hide marked element / column */ - .optional, .hide-sm { display: none !important; } -} - -/* display for resolutions smaller that 560px */ -@media only screen and (max-width: 560px) { - #content .containerOS { - padding: 0; - } - #content .col2 { - width: 100%; - } - #content .col2.sidebar-max, #content .col2.sidebar-min, - #content .col1.sidebar-min, #content .col1.sidebar-max { - width: 100%; - } - #sidebar { - display: none !important; - } - #sidebar-xs { - display: block !important; - } - #sidebar-xs .projector_full { - margin-left: 0 !important; - width: 100%; - } - #groups-table .perm-head { - width: 150px; - } - .personalNoteFixed { - width: 100%; - } -} diff --git a/openslides/core/static/css/core/_chatbox.scss b/openslides/core/static/css/core/_chatbox.scss new file mode 100644 index 000000000..f53fb00f1 --- /dev/null +++ b/openslides/core/static/css/core/_chatbox.scss @@ -0,0 +1,19 @@ +/* Chatbox */ +#chatbox { + position: fixed; + top: 40px; + right: 0; + width: 40%; + border-color: #dddddd; + border-width: 1px; + box-shadow: -5px 5px 5px rgba(0, 0, 0, 0.2); + height: 234px; + padding: 0 10px 10px 10px; + z-index: 5; +} + +#chatbox-text { + overflow-y: scroll; + height: 190px; + color: #222; +} diff --git a/openslides/core/static/css/core/_config.scss b/openslides/core/static/css/core/_config.scss new file mode 100644 index 000000000..98e4c52a2 --- /dev/null +++ b/openslides/core/static/css/core/_config.scss @@ -0,0 +1,28 @@ +/** Config **/ +#content .col1 #config { + .comments > div { + margin-bottom: 5px; + } + .config-checkbox { + padding: 6px 12px; + } + .custom-translations { + > div { + margin-bottom: 5px; + padding-right: 15px; + width: 100%; + } + + .inputs { + input { + width: 47%; + } + + .arrow { + width: 6%; + float: left; + text-align: center; + } + } + } +} diff --git a/openslides/core/static/css/core/_countdown.scss b/openslides/core/static/css/core/_countdown.scss new file mode 100644 index 000000000..4b035e87d --- /dev/null +++ b/openslides/core/static/css/core/_countdown.scss @@ -0,0 +1,32 @@ +/** Countdown fullscreen mode **/ +#countdownWrapper { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1000; + background-color: white; +} +#countdownWrapper > div { + text-align: center; + margin-top: 50px; +} +#countdown { + display: inline-block; + padding: 20px 50px; + border-radius: 8px; + font-size: 30vw; + line-height: 1; + font-weight: bold; +} +#countdown .description { + font-weight: normal; + font-size: 5vw; +} +#countdown.warning { + color: #ed940d; +} +#countdown.negative { + color: #CC0000; +} diff --git a/openslides/core/static/css/core/_csv-import.scss b/openslides/core/static/css/core/_csv-import.scss new file mode 100644 index 000000000..ddd57a81d --- /dev/null +++ b/openslides/core/static/css/core/_csv-import.scss @@ -0,0 +1,28 @@ +/* for csv import form */ +#content .col1 #csv-import { + margin-left: 15px; + width: 35%; + + .file-select { + input { + display: none; + } + + label { + font-weight: normal; + cursor: pointer; + } + } + + .clear-file { + color: #555; + } + + .help-block { + padding-bottom: 0; + } + + .help-block-big { + font-size: 100%; + } +} diff --git a/openslides/core/static/css/core/_goto-top.scss b/openslides/core/static/css/core/_goto-top.scss new file mode 100644 index 000000000..2d982010c --- /dev/null +++ b/openslides/core/static/css/core/_goto-top.scss @@ -0,0 +1,20 @@ +/** Goto top link **/ +#goto-top { + position: fixed; + bottom: 15px; + right: 30px; + padding: 10px 30px; + background: white; + opacity: 0.6; + transition: opacity 250ms ease-out; + z-index: 100; + + &:hover { + opacity: 1; + transition: opacity 250ms ease-in; + } + + a:hover { + text-decoration: none; + } +} diff --git a/openslides/core/static/css/core/_manage-projectors.scss b/openslides/core/static/css/core/_manage-projectors.scss new file mode 100644 index 000000000..58ec23442 --- /dev/null +++ b/openslides/core/static/css/core/_manage-projectors.scss @@ -0,0 +1,41 @@ +/** manage-projectors **/ +#manage-projectors { + > div { + display: inline-table; + width: 256px; + margin: 10px 20px 35px 10px; + + > div { + margin-bottom: 10px; + } + } + + .middle { + width: 100%; + + > div { + margin-left: auto; + margin-right: auto; + display: table; + } + } + + .dropdown { + width: 65%; + padding-right: 5px; + float: left; + + button { + width: 100%; + } + } + + .btn-danger { + width: 35%; + } + + .resolution { + display: inline-block; + width: 120px; + } +} diff --git a/openslides/core/static/css/core/_messaging.scss b/openslides/core/static/css/core/_messaging.scss new file mode 100644 index 000000000..6cede6d82 --- /dev/null +++ b/openslides/core/static/css/core/_messaging.scss @@ -0,0 +1,20 @@ +/** Messaging status bar **/ +#messaging { + position: fixed; + bottom: 0; + width: 100%; + z-index: 100000; +} + +#messaging-container { + margin: 0 auto 0 auto; + padding: 0px 20px; + max-width: 1400px; + + > div { + margin-bottom: 10px; + padding: 10px 20px; + border-radius: 6px; + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); + } +} diff --git a/openslides/core/static/css/core/_os-table.scss b/openslides/core/static/css/core/_os-table.scss new file mode 100644 index 000000000..0e7626698 --- /dev/null +++ b/openslides/core/static/css/core/_os-table.scss @@ -0,0 +1,103 @@ +/** OS-Table **/ +#content .col1 .os-table { + font-weight: normal; + + small { + color: #555; + } + + .row { + border: 1px solid #ddd; + border-top: 0px; + + .col-xs-1 { + width: 50px; + } + + .col-xs-4 { + padding-right: 10px; + } + + // TODO: Isn't this defined in the _helper.scss? + .centered { + text-align: center; + } + } + + .data-row:hover { + background-color: #f5f5f5; + } + + .data-row > div { + padding: 10px 0px 10px 0px; + } + + .id-col { + width: 50px; + min-height: 1px; + word-wrap: break-word; + } + + .id-col-space { + width: calc(100% - 50px); + } + + .no-projector-spacer { + margin-right: 20px; + float: left; + } + + .header-row { + border-top: 1px solid #ddd; + background-color: #f5f5f5; + } + + .header-row > div { + padding: 10px; + } + + .main-header { + width: calc(100% - 50px); + float: right; + + .form-inline { + margin-left: 15px; + } + } + + .content > div { /* horizontal blocks */ + display: inline-block; + float: left; + } + + .content > div > div { /* vertival blocks */ + margin-bottom: 3px; + } + + .content > div > div:last-child { + margin-bottom: 0px; + } + + .projector { + width: 70px !important; + } + + + .header-row .dropdown > span, .sort-spacer { + padding: 5px 10px 5px 10px; + } + + .title { + font-family: $font-medium; + font-family: $font-medium, sans-serif; + font-weight: normal; + font-size: 120%; + margin-right: 3px; + padding: 0; + background-color: transparent; + } + + .dropdown-hover-space { + padding: 5px 5px 5px 0; + } +} diff --git a/openslides/core/static/css/core/_projector-container.scss b/openslides/core/static/css/core/_projector-container.scss new file mode 100644 index 000000000..f686c7922 --- /dev/null +++ b/openslides/core/static/css/core/_projector-container.scss @@ -0,0 +1,43 @@ +/* ProjectorContainer */ +.pContainer { + background-color: #222; + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + display: table; + + & > div { + display: table-cell; + vertical-align: middle; + } + + #iframe { + -moz-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -o-transform-origin: 0 0; + transform-origin: 0 0 0; + } + + #iframewrapper, .error { + position: relative; + overflow: hidden; + margin-left: auto; + margin-right: auto; + } + + .error > p { + color: #f00; + font-size: 150%; + text-align: center; + } + + #iframeoverlay { + position: absolute; + top: 0px; + left: 0px; + display: block; + z-index: 1; + } +} diff --git a/openslides/core/static/css/core/_projector-sidebar.scss b/openslides/core/static/css/core/_projector-sidebar.scss new file mode 100644 index 000000000..9983f6182 --- /dev/null +++ b/openslides/core/static/css/core/_projector-sidebar.scss @@ -0,0 +1,30 @@ +/* Pojector sidebar */ +.col2 .projectorSelector { + margin-top: 10px; + margin-bottom: 10px; + + & > div { + margin-bottom: 10px; + + & > div { + width: 65%; + padding-right: 5px; + float: left; + margin-bottom: 10px; + + & > button { + width: 100%; + } + } + } + + .manageBtn { + width: 35%; + } + + .btn-group { + margin-left: auto; + margin-right: auto; + display: table; + } +} diff --git a/openslides/core/static/css/core/_projector.scss b/openslides/core/static/css/core/_projector.scss new file mode 100644 index 000000000..511f6643b --- /dev/null +++ b/openslides/core/static/css/core/_projector.scss @@ -0,0 +1,280 @@ +@import "projector-container"; + +/* Template styles for OpenSlides projector */ +html, body { + height: 100%; +} + +body { + font-family: $font, sans-serif; + font-size: 20px !important; + line-height: 24px !important; + overflow: hidden; + color: #222; +} + +h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-family: $font-condensed, sans-serif; + font-weight: normal; +} + +h1 { + font-size: 2.25em; + line-height: 1.1em; +} + +h2 { + font-size: 28px; + margin-top: 15px; + display: block; + color: #9a9898; +} + +h3 { + color: #222; + margin-bottom: 10px +} + +ul, ol { + margin: 0 0 10px 2em; +} + +li { + line-height: normal; +} + +hr { + margin: 10px 0; +} + +#header { + font-family: $font-condensed-light; + background-repeat: no-repeat; + background-size: 100% 100%; + box-shadow: 0 0 7px rgba(0,0,0,0.6); + height: 70px; + margin-bottom: 20px; +} + +#logo { + position: relative; + left: 50px; + top: 10px; + height: 50px; + margin-right: 25px; + float: left; +} + +#eventdata { + position: relative; + left: 50px; + top: 12px; + height: 50px; + overflow: hidden; + + .title { + font-size: 26px; + font-weight: bold; + + &.titleonly { + position: relative; + top: 12px; + } + } + + .description { + font-size: 18px; + opacity: 0.8; + } +} + +#currentTime { + font-family: $font-condensed-light; + border: 0 solid #000000; + font-size: 24px; + position: absolute; + text-align: right; + top: 23px; + right: 50px; + padding-left: 30px; +} + +#footer { + font-family: $font-condensed-light; + position: fixed; + bottom: 0; + height: 35px; + width: 100%; + font-size: 16px; + padding-left: 50px; + padding-right: 50px; + padding-top: 5px; + overflow: hidden; + text-align: right; + + span { + opacity: 0.8; + } +} + +/* Content */ +.content { + position: absolute; + left: 50px; + right: 50px; + z-index: -1; + line-height: 1.5em; + + img { + max-width: 65%; + height: auto; + } +} + +.scrollcontent { + transition-property: margin; + transition-duration: 1s; +} + +.zoomcontent { + transition-property: font-size; + transition-duration: 1s; +} + +.fullscreen { + position: fixed; + top: 0 !important; + left: 0; + width: 100%; + height: 100%; + z-index: 100; + background-color: black; + + canvas { + margin: auto; + display: block !important; + } +} + +#title { + border-bottom: 5px solid #d3d3d3; + margin-bottom: 40px; + + h1 { + margin-bottom: 0; + padding-bottom: 0; + } + + h2 { + margin-top: 10px; + margin-bottom: 5px; + } +} + +/* Overlays: countdown and message */ +.countdown { + min-width: 260px; + position: relative; + margin: 0 0 10px 10px; + top: 0px; + right: 0px; + padding: 26px 45px 7px 19px; + min-height: 72px; + font-family: $font-condensed, sans-serif; + font-size: 3.7em; + font-weight: bold; + text-align: right; + border-radius: 7px 7px 7px 7px; + z-index: 320; + + .description { + font-weight: normal; + font-size: 18px; + margin-top: 20px; + padding-right: 6px; + } + + &.warning { + color: #ed940d; + } + + &.negative { + color: #CC0000; + } +} + +.message_background { + background-color: #777777; + opacity: 0.8; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 300; +} +.message { + font-family: $font-condensed, sans-serif; + font-weight: normal; + position: fixed; + top: 35%; + left: 10%; + width: 80%; + text-align: center; + border-radius: 0.2em; + background: #FFFFFF; + font-size: 2.75em; + padding: 0.2em 0; + line-height: normal !important; + z-index: 350; +} +.identify { + background-color: #D9F8C4; + z-index: 400; +} + +/* Table style */ +.table { + border-collapse:collapse; + border-color:#CCCCCC -moz-use-text-color #CCCCCC #CCCCCC; + border-style:solid none solid solid; + border-width:1px medium 1px 1px; + margin:0; + border-spacing:0px; + + th { + border-right:1px solid #CCCCCC; + color:#333333; + font-weight:normal; + padding:10px 10px 10px 10px; + text-align:left; + text-transform:uppercase; + } + + tr.odd td { + background:none repeat scroll 0 0 #F1F1F1; + } + + td { + background:none repeat scroll 0 0 #F7F7F7; + border-right:1px solid #CCCCCC; + line-height:120%; + padding: 10px 10px; + vertical-align:middle; + } + + tr.total td { + border-top: 1px solid #333333; + background-color: #e3e3e3; + } + + tr.elected td { + background-color: #BED4DE !important; + } +} + +.transparentTable td { + background-color: transparent; + padding-right: 10px; +} diff --git a/openslides/core/static/css/core/_search.scss b/openslides/core/static/css/core/_search.scss new file mode 100644 index 000000000..7e869cb55 --- /dev/null +++ b/openslides/core/static/css/core/_search.scss @@ -0,0 +1,13 @@ +/* search results */ +.searchresults li { + margin-bottom: 12px; +} +.searchresults h3 { + margin-bottom: 3px; + padding-bottom: 0; +} +.searchresults .hits { + margin-bottom: 10px; + color: #999999; + font-size: 85%; +} diff --git a/openslides/core/static/css/core/_site.scss b/openslides/core/static/css/core/_site.scss new file mode 100644 index 000000000..363dcd3af --- /dev/null +++ b/openslides/core/static/css/core/_site.scss @@ -0,0 +1,599 @@ +/** Template styles for OpenSlides site **/ + +@import "config"; +@import "search"; +@import "os-table"; +@import "csv-import"; +@import "chatbox"; +@import "countdown"; +@import "goto-top"; +@import "messaging"; + +@import "projector-sidebar"; +@import "manage-projectors"; + +* { /* set margin/padding for all (block) elements to null */ + margin: 0; + padding: 0; +} + +body { + font-size: 14px; + line-height: 1.5; + color: #222; + text-align: center; + background: #e8eaed; + font-family: $font, sans-serif !important; +} + +div { + text-align: left; +} + +img { + border: none; +} + +a { + text-decoration: none; + color: #2b6883; + + &:hover { + text-decoration: underline; + } +} + +blockquote { + font-size: inherit; +} + +h1, h2, h3, h4, h5, h6 { + line-height: 1.1; + font-family: $font-condensed, sans-serif; + font-weight: 400; +} + +h1 { + font-size: 36px; + color: #317796; + padding-bottom: 8px; +} + +h2 { + font-size: 22px; + color: #9a9898; + padding-bottom: 14px; +} + +h3 { + font-size: 22px; + color: #222; + padding-bottom: 14px; +} + +h4 { + font-size: 18px; + color: #222; +} + +strong, b, th { + font-family: $font-medium; + font-family: $font-medium, sans-serif; + font-weight: normal; +} + +.heading { + a { + color: #444; + + &:hover { + color: #2b6883; + text-decoration: none; + } + } + +} + +/** Header **/ +#header { + float: left; + width: 100%; + height: 40px; + background: #002c42; + color: #999; + + a.headerlink { + text-decoration: none; + color: #999; + } + + a.headerlink:hover, a.headerlink:active, a.headerlink.active { + color: #e8eaed; + } + + .title { + float: left; + margin: 2px 0 0 -5px; + color: #fff; + font-family: $font-condensed, sans-serif; + font-weight: 400; + } + + .user { + float: right; + margin: 5px 0 0 0; + height: 100%; + + .inline { + display: inline; + } + } +} + +#nav { + float: left; + width: 100%; + height: auto; + background: #317796; + color: #fff; + overflow-y: hidden; + + .navbar { + width: 100%; + border: none; + margin: 0; + } + + .navbar-toggle { + padding: 5px 0; + z-index: 2; + + i { + font-size: 28px; + color: #fff; + opacity: 0.5; + } + + &:hover i { + opacity: 1; + } + } + + .navbar-collapse { + padding: 0; + } + + .navbar ul { + list-style: none; + margin: 0; + + li { + float: left; + text-align: center; + + a { + display: block; + color: #fff; + padding: 22px 15px; + text-decoration: none; + + &:hover { + background: url('/static/img/nav_dark-bg.png'); + text-decoration: none; + } + } + + i { + font-size: 28px; + display: block; + margin-bottom: 6px; + margin-right: 0; + opacity: 0.5; + } + } + + li.active { + background: url('/static/img/nav_dark-bg.png'); + + a { + background: url('/static/img/nav_active.png') no-repeat bottom; + } + + i { + opacity: 1; + } + } + } + + .searchbar { + float: right; + margin-top: 33px; + margin-bottom: 32px; + display: inline-table; + + input { + width: 150px; + } + + .btn { + background: #e8eaed; + color: #555; + } + } +} + +#header .containerOS, #nav .containerOS, #content .containerOS { + max-width: 1300px; + height: 100%; + margin: 0 auto 0 auto; + padding: 0 30px; +} + + +/** Content **/ +#content { + float: left; + width: 100%; + margin-top: 20px; + + .containerOS { + height: 30px; + } +} + + +/** Main column **/ +#content .col1 { + float: left; + + &.sidebar-max { /*with maximized sidebar*/ + width: calc(100% - 325px); + } + + &.sidebar-min { /*with minimized sidebar*/ + width: calc(100% - 70px); + } + + &.sidebar-none { /*without sidebar*/ + width: 100%; + } + + .header { + background: #fff; + border: 1px solid #d3d3d3; + + .submenu { + float: right; + } + } + + .title { + padding: 0 20px; + width: auto; + } + + + .meta { + h3 { + font-family: $font-condensed-light; + } + + .heading, h3 { + font-size: 22px; + line-height: 24px; + font-weight: 300; + color: #444; + padding-bottom: 0; + margin-top: 20px; + margin-bottom: 5px; + } + + .title { + width: 100%; + cursor: pointer; + height: 30px; + color: #fff; + background: #317796; + padding: 5px 20px 0 20px; + + &:hover { + color: #d3d3d3; + } + + .name { + float: left; + font-size: 14px; + } + + .icon { + float: right; + } + } + + .detail { + padding: 0 20px 10px 20px; + width: 100%; + min-height: 30px; + background: #d3d3d3; + color: #444; + } + + .heading .drop-down-name { + font-family: $font-condensed-light; + } + } + + .details { + padding: 20px; + width: auto; + margin-top: 20px; + background: #fff; + border: 1px solid #d3d3d3; + + img { + max-width: 100%; + height: auto; + } + } + + ol, ul { + margin-left: 15px; + } +} + +/** Projector sidebar column **/ +#sidebar-xs { + display: none !important; +} + +#content .col2 { + float: right; + position: relative; + display: inline-flex; + z-index: 3; + margin-bottom: 20px; + + &.sidebar-max { + width: 325px; + } + + &.sidebar-min { + width: 70px; + } + + &.sidebar-none { + width: 0px; + } + + h4 { + font-size: 20px; + line-height: 24px; + color: #444; + font-family: $font-condensed-light; + font-weight: 300; + } + + a:hover h4 { + text-decoration: none; + } + + .projector_min { + background: url('/static/img/nav_projector_sidebar_min.png') no-repeat left 17px; + width: 50px; + margin-left: 20px; + padding-left: 8px; + float: right; + + .icon { + float: left; + color: #fff; + font-size: 24px; + width: 50px; + text-align: center; + padding: 7px 0; + background: #317796; + + a { + color: #fff; + display: block; + + i { + opacity: 0.5; + } + + &:hover i { + opacity: 1; + } + } + } + } + + .projector_full { + margin-left: 30px; + width: auto; + + .title { + width: 100%; + color: #fff; + height: 50px; + background: #317796; + cursor: pointer; + + &:hover { + color: #d3d3d3; + } + + a, a:hover { + color: #fff; + text-decoration: none; + display: block; + } + + i { + margin-right: 10px; + } + + .name { + float: left; + padding: 8px 0 0 20px; + font-size: 22px; + font-weight: 400; + } + + .icon { + float: right; + width: 50px; + text-align: center; + padding-top: 7px; + font-size: 24px; + } + + } + + .details { + clear: both; + width: 100%; + background: #d3d3d3; + + .section { + padding: 1px 20px; + width: auto; + border-bottom: 1px solid #c2c2c2; + + a:hover { + text-decoration: none; + } + + div.in.collapse { + padding-bottom: 15px; + } + } + } + + .toggle-icon { + font-size: 20px; + float: right; + margin-top: 10px; + } + } + + /* countdown and message controls */ + .countdown { + &.panel { + margin-bottom: 7px; + } + + .panel-heading { + padding: 3px 15px; + } + + .panel-body { + padding: 5px 15px; + } + + .icons { + padding-right: 10px; + } + } + + .message { + &.panel { + margin-bottom: 7px; + } + + .panel-heading { + padding: 3px 15px; + } + + .panel-body { + padding: 10px 15px; + } + + projector-button { + float: left; + width: auto; + margin: 5px 10px 5px 0px; + } + + .innermessage { + float: left; + width: 180px; + max-width: 170px; + overflow: hidden; + } + + .panel-input { + width: 228px; + float: left; + margin-top: 10px; + } + + .editicon { + padding-right: 10px; + } + } + + .countdown_timer { + font-size: 2.2em; + font-weight: bold; + + &.warning { + color: #ed940d; + } + + &.negative { + color: #CC0000; + } + } + + .notNull { + color: red; + font-weight: bold; + } +} + +/* iframe for live view */ +.iframe { + -moz-transform-origin: 0 0; + -webkit-transform-origin: 0 0; + -o-transform-origin: 0 0; + transform-origin: 0 0 0; +} + +.iframewrapper { + width: 256px; + position: relative; + overflow: hidden; + border: 1px solid #D5D5D5; + margin-bottom: 10px; +} + +.iframeoverlay { + width: 256px; + position: absolute; + top: 0px; + left: 0px; + display: block; + z-index: 1; +} + +/** Footer **/ +#footer { + float: left; + height: 50px; + padding-top: 15px; + font-size: 90%; +} + +.details h1 { + font-size: 20px; + color: #000; +} +.details h2 { + font-size: 18px; + color: #000; +} +.details h3 { + font-size: 16px; + color: #000; +} diff --git a/openslides/core/static/css/projector.css b/openslides/core/static/css/projector.css deleted file mode 100644 index 4b6a58e79..000000000 --- a/openslides/core/static/css/projector.css +++ /dev/null @@ -1,636 +0,0 @@ -/* - * Font definitions for OpenSlides projector - */ - -@font-face { - font-family: 'Roboto Condensed'; - src: url('../fonts/Roboto-Condensed-Regular.woff') format('woff'); - font-weight: 100; - font-style: normal; -} -@font-face { - font-family: 'Roboto Condensed Light'; - src: url('../fonts/Roboto-Condensed-Light.woff') format('woff'); - font-weight: 100; - font-style: normal; -} -@font-face { - font-family: 'Roboto'; - src: url('../fonts/Roboto-Regular.woff') format('woff'); - font-weight: 400; - font-style: normal; -} - -body { - font-family: "Roboto", sans-serif; -} -h1, h2, h3, h4, h5, h6 { - font-size: inherit; -} -h1, h2, h3, h4, h5, h6, .countdown, .message { - font-family: "Roboto Condensed", sans-serif; - font-weight: normal; -} -#header, #currentTime, #footer { - font-family: 'Roboto Condensed Light'; -} - -/* - * Template styles for OpenSlides projector - * - */ - -html, body { - height: 100%; -} - -body { - font-size: 20px !important; - line-height: 24px !important; - overflow: hidden; - color: #222; -} - -/* override booststrap's label class to fix linebreak and add spacing */ -.label { - display: inline-block; - padding: .4em .6em; - margin-right: .2em; - white-space: normal; -} - -/*** ProjectorContainer ***/ -.pContainer { - background-color: #222; - width: 100%; - height: 100%; - position: absolute; - top: 0; - left: 0; - display: table; -} - -.pContainer > div { - display: table-cell; - vertical-align: middle; -} - -.pContainer #iframe { - -moz-transform-origin: 0 0; - -webkit-transform-origin: 0 0; - -o-transform-origin: 0 0; - transform-origin: 0 0 0; -} - -.pContainer #iframewrapper, .pContainer .error { - position: relative; - overflow: hidden; - margin-left: auto; - margin-right: auto; -} - -.pContainer #iframeoverlay { - position: absolute; - top: 0px; - left: 0px; - display: block; - z-index: 1; -} - -.pContainer .error > p { - color: #f00; - font-size: 150%; - text-align: center; -} - -/*** HEADER ***/ -#header { - background-repeat: no-repeat; - background-size: 100% 100%; - box-shadow: 0 0 7px rgba(0,0,0,0.6); - height: 70px; - margin-bottom: 20px; -} -#logo { - position: relative; - left: 50px; - top: 10px; - height: 50px; - margin-right: 25px; - float: left; -} -#eventdata { - position: relative; - left: 50px; - top: 12px; - height: 50px; - overflow: hidden; -} -#eventdata .title { - font-size: 26px; - font-weight: bold; - } -#eventdata .title.titleonly { - position: relative; - top: 12px; -} -#eventdata .description { - font-size: 18px; - opacity: 0.8; -} -#currentTime { - border: 0 solid #000000; - font-size: 24px; - position: absolute; - text-align: right; - top: 23px; - right: 50px; - padding-left: 30px; -} -#footer { - position: fixed; - bottom: 0; - height: 35px; - width: 100%; - font-size: 16px; - padding-left: 50px; - padding-right: 50px; - padding-top: 5px; - overflow: hidden; - text-align: right; -} -#footer span { - opacity: 0.8; -} - -/*** CONTENT with base style elements ***/ -.content { - position: absolute; - left: 50px; - right: 50px; - z-index: -1; - line-height: 1.5em; -} -.content img { - max-width: 65%; - height: auto; -} -.scrollcontent { - transition-property: margin; - transition-duration: 1s; -} -.zoomcontent { - transition-property: font-size; - transition-duration: 1s; -} -.fullscreen { - position: fixed; - top: 0 !important; - left: 0; - width: 100%; - height: 100%; - z-index: 100; - background-color: black; -} -.fullscreen canvas { - margin: auto; - display: block !important; -} - -h1 { - font-size: 2.25em; - line-height: 1.1em; -} -h2 { - font-size: 28px; - margin-top: 15px; - display: block; - color: #9a9898; -} -h3 { - color: #222; - margin-bottom: 10px -} -#title { - border-bottom: 5px solid #d3d3d3; - margin-bottom: 40px; -} -#title h1 { - margin-bottom: 0; - padding-bottom: 0; -} -#title h2 { - margin-top: 10px; - margin-bottom: 5px; -} -#motioncontent { - width: calc(100% - 230px); -} -#sidebox { - width: 260px; - right: 0; - margin-top: 75px; - background: #d3d3d3; - border-radius: 7px 0 0 7px; - padding: 3px 7px 10px 19px; - position: fixed; - z-index: 5; -} -#sidebox h3 { - margin-top: 10px; - margin-bottom: 0px; -} -#speakerbox { - width: 40%; - float: right; - margin: 20px; - right: 0; - bottom: 0; - position: absolute; - background: #d3d3d3; - border-radius: 7px; - border: 1px solid #999; - padding: 0px 7px 10px 19px; - z-index: 99; - box-shadow: 3px 3px 10px 1px rgba(0,0,0,0.5); - overflow: hidden; -} -ul, ol { - margin: 0 0 10px 2em; -} -li { - line-height: normal; -} -.result { - line-height: 30px; -} -.result hr { - border-top: 1px solid; - margin: 5px 0; - width: 10em; -} -.result.big { - font-size: 120%; - line-height: 40px; -} -.result .bold, .electionresults .bold { - font-weight: bold; -} -.electionresults table { - width: calc(100% - 230px); -} -.electionresults .progress { - margin-bottom: 0; -} -hr { - margin: 10px 0; -} -.nobr { - white-space: nowrap; -} -.white-space-pre-line { - white-space: pre-line; -} - - -/*** Overlay ***/ -.countdown { - min-width: 260px; - position: relative; - margin: 0 0 10px 10px; - top: 0px; - right: 0px; - padding: 26px 45px 7px 19px; - min-height: 72px; - font-size: 3.7em; - font-weight: bold; - text-align: right; - border-radius: 7px 7px 7px 7px; - z-index: 320; -} -.countdown .description { - font-weight: normal; - font-size: 18px; - margin-top: 20px; - padding-right: 6px; -} -.countdown.warning { - color: #ed940d; -} -.countdown.negative { - color: #CC0000; -} - -.message_background { - background-color: #777777; - opacity: 0.8; - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 300; -} -.message { - font-weight: normal; - position: fixed; - top: 35%; - left: 10%; - width: 80%; - text-align: center; - border-radius: 0.2em; - background: #FFFFFF; - font-size: 2.75em; - padding: 0.2em 0; - line-height: normal !important; - z-index: 350; -} -.identify { - background-color: #D9F8C4; - z-index: 400; -} - -/*** PDF presentation ***/ -.rotate0 { - transform: rotate(0deg); -} -.rotate90 { - transform: rotate(90deg); -} -.rotate180 { - transform: rotate(180deg); -} -.rotate270 { - transform: rotate(270deg); -} - -/*** Table style ***/ -.table { - border-collapse:collapse; - border-color:#CCCCCC -moz-use-text-color #CCCCCC #CCCCCC; - border-style:solid none solid solid; - border-width:1px medium 1px 1px; - margin:0; - border-spacing:0px; -} -.table th { - border-right:1px solid #CCCCCC; - color:#333333; - font-weight:normal; - padding:10px 10px 10px 10px; - text-align:left; - text-transform:uppercase; -} -.table tr.odd td { - background:none repeat scroll 0 0 #F1F1F1; -} -.table td { - background:none repeat scroll 0 0 #F7F7F7; - border-right:1px solid #CCCCCC; - line-height:120%; - padding: 10px 10px; - vertical-align:middle; -} -tr.total td { - border-top: 1px solid #333333; - background-color: #e3e3e3; -} -tr.elected td { - background-color: #BED4DE !important; -} -.transparentTable td { - background-color: transparent; - padding-right: 10px; -} -.pollresults table .icon { - color: #636363; - height: 45px; -} - -/*** Agenda list ***/ -.agendalist { - line-height: 1.5em; -} -.agendalist p { - font-size: 140%; -} -.agendalist p.done { - color: #9a9898; -} -.agendalist .mainitem { - margin-top: 25px; -} -.agendalist .subitem { - font-size: 100%; - margin-bottom: 4px; -} -.spacer { - margin-top: 10px; -} -.spacer-left-lg { - margin-left: 20px; -} - -.agendalist-table td { - vertical-align: top; - padding-left: 5px; -} - -.agendalist-table .number { - padding: 0; - white-space: nowrap; -} - - -/*** List of speakers ***/ -.slimlabel.label { - padding: 0px 10px; -} - -.lastSpeakers { - color: #9a9898; - margin-left: 27px; -} -.currentSpeaker { - font-weight: bold; - margin-left: 0px; -} -.currentSpeaker i { - padding-right: 5px; -} -.nextSpeakers { - margin-left: 13px; -} -.nextSpeakers li { - line-height: 150%; -} - - -/*** Line numbers ***/ -.motion-text .highlight { - background-color: #ff0; -} -.motion-text ins { - color: green; - text-decoration: underline; -} -.motion-text del { - color: red; - text-decoration: line-through; -} -.motion-text.line-numbers-outside { - padding-left: 0; - margin-left: 25px; - position: relative; -} - -.motion-text.line-numbers-outside .os-line-number { - display: inline-block; - font-size: 0; - line-height: 0; - width: 22px; - height: 22px; - position: absolute; - left: -25px; -} -.motion-text.line-numbers-outside .os-line-number:after { - content: attr(data-line-number); - position: absolute; - top: 17px; - vertical-align: top; - color: gray; - font-size: 14px; - font-weight: normal; -} - -.motion-text.line-numbers-inline .os-line-break { - display: none; -} -.motion-text.line-numbers-inline .os-line-number { - display: inline-block; -} -.motion-text.line-numbers-inline .os-line-number:after { - display: inline-block; - content: attr(data-line-number); - vertical-align: top; - font-size: 0.75em; - font-weight: normal; - color: gray; - margin-top: -5px; - margin-left: 0; -} - -.motion-text.line-numbers-none .os-line-break { - display: none; -} -.motion-text.line-numbers-none .os-line-number { - visibility: hidden; -} - -/** Diff view */ -p.os-split-after { - margin-bottom: 0; -} -p.os-split-before { - margin-top: 0; -} -ul.os-split-after, ol.os-split-after { - margin-bottom: 0; -} - -.motion-text-holder li.os-split-before { - list-style-type: none; -} - -.diff-box { - padding-top: 0; -} -.motion-text-with-diffs li.os-split-before { - list-style-type: none; -} -.motion-text-with-diffs .original-text ul:last-child, .motion-text-with-diffs .original-text ol:last-child { - padding-bottom: 16px; -} -.motion-text-with-diffs .original-text ul.os-split-after:last-child, .motion-text-with-diffs .original-text ol.os-split-after:last-child { - padding-bottom: 0; -} -ol.os-split-after, ul.os-split-after { - margin-bottom: 0; - padding-bottom: 0; -} -p.os-split-after { - margin-bottom: 0; -} -.diff-box:hover { - background-color: #f0f0f0; -} -.motion-text-diff .delete { - color: red; - text-decoration: line-through; -} -.motion-text-diff .insert { - color: green; - text-decoration: underline; -} -.motion-text-diff p.os-split-before { - padding-top: 0; - margin-top: 0; -} -.motion-text-diff p.os-split-after { - margin-top: 0; - margin-bottom: 0; -} -.motion-text-diff.line-numbers-outside .insert .os-line-number { - display: none; -} -.motion-text-diff.line-numbers-inline .insert .os-line-number { - display: none; -} - -/*** Motion blocks ***/ -.motion-block { - display: flex; - flex-wrap: wrap; -} -.motion-block > div { - width: 50%; - font-size: 1.1em; - margin-bottom: 15px; - padding-right: 15px; - line-height: 1em; -} -.motion-block .label { - text-align: left; - padding: 5px 10px; - margin-top: 3px; -} - -/*** Video and Image projection ***/ -img.projector-image { - width: 100%; -} - -div.projector-image { - width: 100%; - height: 100%; - background-size: contain; - background-repeat: no-repeat; - background-position: 50% 50%; - background-color: #fff; -} - -.video-container { - width: 100%; - height: 100%; - display: flex; - align-items: center; - justify-content: center; -} - -.video-container > * { - flex: 1 1 auto; - max-width: 100%; - max-height: 100%; - width: 100%; - height: 100%; -} diff --git a/openslides/core/static/css/projector.scss b/openslides/core/static/css/projector.scss new file mode 100644 index 000000000..3b555410a --- /dev/null +++ b/openslides/core/static/css/projector.scss @@ -0,0 +1,14 @@ +/* Main projector CSS file. Just import all files needed for the site here. */ + +/* General */ +@import "variables"; +@import "fonts"; +@import "helper"; +@import "ui-override"; + +/* Apps */ +@import "core/projector"; +@import "../../../agenda/static/css/agenda/projector"; +@import "../../../assignments/static/css/assignments/projector"; +@import "../../../motions/static/css/motions/projector"; +@import "../../../mediafiles/static/css/mediafiles/projector"; diff --git a/openslides/core/static/css/site.scss b/openslides/core/static/css/site.scss new file mode 100644 index 000000000..b0f101633 --- /dev/null +++ b/openslides/core/static/css/site.scss @@ -0,0 +1,18 @@ +/* Main site CSS file. Just import all files needed for the site here. */ + +/* General */ +@import "variables"; // TODO: Add colors, ... +@import "fonts"; +@import "helper"; +@import "mediaqueries"; +@import "ui-override"; +@import "startup-spinner"; + +/* Apps */ +@import "core/site"; +@import "../../../agenda/static/css/agenda/site"; +@import "../../../assignments/static/css/assignments/site"; +@import "../../../motions/static/css/motions/site"; +@import "../../../users/static/css/users/site"; +@import "../../../mediafiles/static/css/mediafiles/site"; + diff --git a/openslides/core/static/templates/config-form-field.html b/openslides/core/static/templates/config-form-field.html index 8ee60eb7d..e2e7326ae 100644 --- a/openslides/core/static/templates/config-form-field.html +++ b/openslides/core/static/templates/config-form-field.html @@ -19,7 +19,7 @@ -