123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891 |
- @import './_variables.scss';
- #app {
- min-height: 100vh;
- max-width: 100%;
- overflow: hidden;
- }
- .app-bg-wrapper {
- position: fixed;
- z-index: -1;
- height: 100%;
- left: 0;
- right: -20px;
- background-size: cover;
- background-repeat: no-repeat;
- background-color: var(--wallpaper);
- background-image: var(--body-background-image);
- background-position: 50% 50px;
- }
- i[class^='icon-'] {
- user-select: none;
- }
- h4 {
- margin: 0;
- }
- #content {
- box-sizing: border-box;
- padding-top: 60px;
- margin: auto;
- min-height: 100vh;
- max-width: 980px;
- align-content: flex-start;
- }
- .underlay {
- background-color: rgba(0,0,0,0.15);
- background-color: var(--underlay, rgba(0,0,0,0.15));
- }
- .text-center {
- text-align: center;
- }
- html {
- font-size: 14px;
- }
- body {
- overscroll-behavior-y: none;
- font-family: sans-serif;
- font-family: var(--interfaceFont, sans-serif);
- margin: 0;
- color: $fallback--text;
- color: var(--text, $fallback--text);
- max-width: 100vw;
- overflow-x: hidden;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- &.hidden {
- display: none;
- }
- }
- a {
- text-decoration: none;
- color: $fallback--link;
- color: var(--link, $fallback--link);
- }
- .button-default {
- user-select: none;
- color: $fallback--text;
- color: var(--btnText, $fallback--text);
- background-color: $fallback--fg;
- background-color: var(--btn, $fallback--fg);
- border: none;
- border-radius: $fallback--btnRadius;
- border-radius: var(--btnRadius, $fallback--btnRadius);
- cursor: pointer;
- box-shadow: $fallback--buttonShadow;
- box-shadow: var(--buttonShadow);
- font-size: 14px;
- font-family: sans-serif;
- font-family: var(--interfaceFont, sans-serif);
- &.-sublime {
- background: transparent;
- }
- i[class*=icon-],
- .svg-inline--fa {
- color: $fallback--text;
- color: var(--btnText, $fallback--text);
- }
- &::-moz-focus-inner {
- border: none;
- }
- &:hover {
- box-shadow: 0px 0px 4px rgba(255, 255, 255, 0.3);
- box-shadow: var(--buttonHoverShadow);
- }
- &:active {
- box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.3), 0px 1px 0px 0px rgba(0, 0, 0, 0.2) inset, 0px -1px 0px 0px rgba(255, 255, 255, 0.2) inset;
- box-shadow: var(--buttonPressedShadow);
- color: $fallback--text;
- color: var(--btnPressedText, $fallback--text);
- background-color: $fallback--fg;
- background-color: var(--btnPressed, $fallback--fg);
- svg,
- i {
- color: $fallback--text;
- color: var(--btnPressedText, $fallback--text);
- }
- }
- &:disabled {
- cursor: not-allowed;
- color: $fallback--text;
- color: var(--btnDisabledText, $fallback--text);
- background-color: $fallback--fg;
- background-color: var(--btnDisabled, $fallback--fg);
- svg,
- i {
- color: $fallback--text;
- color: var(--btnDisabledText, $fallback--text);
- }
- }
- &.toggled {
- color: $fallback--text;
- color: var(--btnToggledText, $fallback--text);
- background-color: $fallback--fg;
- background-color: var(--btnToggled, $fallback--fg);
- box-shadow: 0px 0px 4px 0px rgba(255, 255, 255, 0.3), 0px 1px 0px 0px rgba(0, 0, 0, 0.2) inset, 0px -1px 0px 0px rgba(255, 255, 255, 0.2) inset;
- box-shadow: var(--buttonPressedShadow);
- svg,
- i {
- color: $fallback--text;
- color: var(--btnToggledText, $fallback--text);
- }
- }
- &.danger {
- // TODO: add better color variable
- color: $fallback--text;
- color: var(--alertErrorPanelText, $fallback--text);
- background-color: $fallback--alertError;
- background-color: var(--alertError, $fallback--alertError);
- }
- }
- .button-unstyled {
- background: none;
- border: none;
- outline: none;
- display: inline;
- text-align: initial;
- font-size: 100%;
- font-family: inherit;
- padding: 0;
- line-height: unset;
- cursor: pointer;
- box-sizing: content-box;
- color: inherit;
- &.-link {
- color: $fallback--link;
- color: var(--link, $fallback--link);
- }
- &.-fullwidth {
- width: 100%;
- }
- &.-hover-highlight {
- &:hover svg {
- color: $fallback--lightText;
- color: var(--lightText, $fallback--lightText);
- }
- }
- }
- input, textarea, .input {
- &.unstyled {
- border-radius: 0;
- background: none;
- box-shadow: none;
- height: unset;
- }
- border: none;
- border-radius: $fallback--inputRadius;
- border-radius: var(--inputRadius, $fallback--inputRadius);
- box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2) inset, 0px -1px 0px 0px rgba(255, 255, 255, 0.2) inset, 0px 0px 2px 0px rgba(0, 0, 0, 1) inset;
- box-shadow: var(--inputShadow);
- background-color: $fallback--fg;
- background-color: var(--input, $fallback--fg);
- color: $fallback--lightText;
- color: var(--inputText, $fallback--lightText);
- font-family: sans-serif;
- font-family: var(--inputFont, sans-serif);
- font-size: 14px;
- margin: 0;
- box-sizing: border-box;
- display: inline-block;
- position: relative;
- height: 28px;
- line-height: 16px;
- hyphens: none;
- padding: 8px .5em;
- &:disabled, &[disabled=disabled], &.disabled {
- cursor: not-allowed;
- opacity: 0.5;
- }
- &[type=range] {
- background: none;
- border: none;
- margin: 0;
- box-shadow: none;
- flex: 1;
- }
- &[type=radio] {
- display: none;
- &:checked + label::before {
- box-shadow: 0px 0px 2px black inset, 0px 0px 0px 4px $fallback--fg inset;
- box-shadow: var(--inputShadow), 0px 0px 0px 4px var(--fg, $fallback--fg) inset;
- background-color: var(--accent, $fallback--link);
- }
- &:disabled {
- &,
- & + label,
- & + label::before {
- opacity: .5;
- }
- }
- + label::before {
- flex-shrink: 0;
- display: inline-block;
- content: '';
- transition: box-shadow 200ms;
- width: 1.1em;
- height: 1.1em;
- border-radius: 100%; // Radio buttons should always be circle
- box-shadow: 0px 0px 2px black inset;
- box-shadow: var(--inputShadow);
- margin-right: .5em;
- background-color: $fallback--fg;
- background-color: var(--input, $fallback--fg);
- vertical-align: top;
- text-align: center;
- line-height: 1.1em;
- font-size: 1.1em;
- box-sizing: border-box;
- color: transparent;
- overflow: hidden;
- box-sizing: border-box;
- }
- }
- &[type=checkbox] {
- display: none;
- &:checked + label::before {
- color: $fallback--text;
- color: var(--inputText, $fallback--text);
- }
- &:disabled {
- &,
- & + label,
- & + label::before {
- opacity: .5;
- }
- }
- + label::before {
- flex-shrink: 0;
- display: inline-block;
- content: '✓';
- transition: color 200ms;
- width: 1.1em;
- height: 1.1em;
- border-radius: $fallback--checkboxRadius;
- border-radius: var(--checkboxRadius, $fallback--checkboxRadius);
- box-shadow: 0px 0px 2px black inset;
- box-shadow: var(--inputShadow);
- margin-right: .5em;
- background-color: $fallback--fg;
- background-color: var(--input, $fallback--fg);
- vertical-align: top;
- text-align: center;
- line-height: 1.1em;
- font-size: 1.1em;
- box-sizing: border-box;
- color: transparent;
- overflow: hidden;
- box-sizing: border-box;
- }
- }
- &.resize-height {
- resize: vertical;
- }
- }
- option {
- color: $fallback--text;
- color: var(--text, $fallback--text);
- background-color: $fallback--bg;
- background-color: var(--bg, $fallback--bg);
- }
- .hide-number-spinner {
- -moz-appearance: textfield;
- &[type=number]::-webkit-inner-spin-button,
- &[type=number]::-webkit-outer-spin-button {
- opacity: 0;
- display: none;
- }
- }
- i[class*=icon-], .svg-inline--fa {
- color: $fallback--icon;
- color: var(--icon, $fallback--icon);
- }
- .btn-block {
- display: block;
- width: 100%;
- }
- .btn-group {
- position: relative;
- display: inline-flex;
- vertical-align: middle;
- button {
- position: relative;
- flex: 1 1 auto;
- &:not(:last-child) {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- }
- &:not(:first-child) {
- border-top-left-radius: 0;
- border-bottom-left-radius: 0;
- }
- }
- }
- .container {
- display: flex;
- flex-wrap: wrap;
- margin: 0;
- padding: 0 10px 0 10px;
- }
- .auto-size {
- flex: 1
- }
- main-router {
- flex: 1;
- }
- .status.compact {
- color: rgba(0, 0, 0, 0.42);
- font-weight: 300;
- p {
- margin: 0;
- font-size: 0.8em
- }
- }
- /* Panel */
- .panel {
- display: flex;
- position: relative;
- flex-direction: column;
- margin: 0.5em;
- background-color: $fallback--bg;
- background-color: var(--bg, $fallback--bg);
- &::after, & {
- border-radius: $fallback--panelRadius;
- border-radius: var(--panelRadius, $fallback--panelRadius);
- }
- &::after {
- content: '';
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- pointer-events: none;
- box-shadow: 1px 1px 4px rgba(0,0,0,.6);
- box-shadow: var(--panelShadow);
- }
- }
- .panel-body:empty::before {
- content: "¯\\_(ツ)_/¯"; // Could use words but it'd require translations
- display: block;
- margin: 1em;
- text-align: center;
- }
- .panel-heading {
- display: flex;
- flex: none;
- border-radius: $fallback--panelRadius $fallback--panelRadius 0 0;
- border-radius: var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius) 0 0;
- background-size: cover;
- padding: .6em .6em;
- text-align: left;
- line-height: 28px;
- color: var(--panelText);
- background-color: $fallback--fg;
- background-color: var(--panel, $fallback--fg);
- align-items: baseline;
- box-shadow: var(--panelHeaderShadow);
- .title {
- flex: 1 0 auto;
- font-size: 1.3em;
- }
- .faint {
- background-color: transparent;
- color: $fallback--faint;
- color: var(--panelFaint, $fallback--faint);
- }
- .faint-link {
- color: $fallback--faint;
- color: var(--faintLink, $fallback--faint);
- }
- .alert {
- white-space: nowrap;
- text-overflow: ellipsis;
- overflow-x: hidden;
- }
- .button-default,
- .alert {
- // height: 100%;
- line-height: 21px;
- min-height: 0;
- box-sizing: border-box;
- margin: 0;
- margin-left: .5em;
- min-width: 1px;
- align-self: stretch;
- }
- .button-default {
- flex-shrink: 0;
- &,
- i[class*=icon-] {
- color: $fallback--text;
- color: var(--btnPanelText, $fallback--text);
- }
- &:active {
- background-color: $fallback--fg;
- background-color: var(--btnPressedPanel, $fallback--fg);
- color: $fallback--text;
- color: var(--btnPressedPanelText, $fallback--text);
- }
- &:disabled {
- color: $fallback--text;
- color: var(--btnDisabledPanelText, $fallback--text);
- }
- &.toggled {
- color: $fallback--text;
- color: var(--btnToggledPanelText, $fallback--text);
- }
- }
- a,
- .-link {
- color: $fallback--link;
- color: var(--panelLink, $fallback--link)
- }
- }
- .panel-heading.stub {
- border-radius: $fallback--panelRadius;
- border-radius: var(--panelRadius, $fallback--panelRadius);
- }
- /* TODO Should remove timeline-footer from here when we refactor panels into
- * separate component and utilize slots
- */
- .panel-footer, .timeline-footer {
- display: flex;
- border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;
- border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);
- flex: none;
- padding: 0.6em 0.6em;
- text-align: left;
- line-height: 28px;
- align-items: baseline;
- border-width: 1px 0 0 0;
- border-style: solid;
- border-color: var(--border, $fallback--border);
- .faint {
- color: $fallback--faint;
- color: var(--panelFaint, $fallback--faint);
- }
- a,
- .-link {
- color: $fallback--link;
- color: var(--panelLink, $fallback--link);
- }
- }
- .panel-body > p {
- line-height: 18px;
- padding: 1em;
- margin: 0;
- }
- .container > * {
- min-width: 0px;
- }
- .fa {
- color: grey;
- }
- nav {
- z-index: 1000;
- color: var(--topBarText);
- background-color: $fallback--fg;
- background-color: var(--topBar, $fallback--fg);
- color: $fallback--faint;
- color: var(--faint, $fallback--faint);
- box-shadow: 0px 0px 4px rgba(0,0,0,.6);
- box-shadow: var(--topBarShadow);
- box-sizing: border-box;
- }
- .fade-enter-active, .fade-leave-active {
- transition: opacity .2s
- }
- .fade-enter, .fade-leave-active {
- opacity: 0
- }
- .main {
- flex-basis: 50%;
- flex-grow: 1;
- flex-shrink: 1;
- }
- .sidebar-bounds {
- flex: 0;
- flex-basis: 35%;
- }
- .sidebar-flexer {
- flex: 1;
- flex-basis: 345px;
- width: 365px;
- }
- .mobile-shown {
- display: none;
- }
- @media all and (min-width: 800px) {
- body {
- overflow-y: scroll;
- }
- .sidebar-bounds {
- overflow: hidden;
- max-height: 100vh;
- width: 345px;
- position: fixed;
- margin-top: -10px;
- .sidebar-scroller {
- height: 96vh;
- width: 365px;
- padding-top: 10px;
- padding-right: 50px;
- overflow-x: hidden;
- overflow-y: scroll;
- }
- .sidebar {
- width: 345px;
- }
- }
- .sidebar-flexer {
- max-height: 96vh;
- flex-shrink: 0;
- flex-grow: 0;
- }
- }
- .badge {
- box-sizing: border-box;
- display: inline-block;
- border-radius: 99px;
- max-width: 10em;
- min-width: 1.7em;
- height: 1.3em;
- padding: 0.15em 0.15em;
- vertical-align: middle;
- font-weight: normal;
- font-style: normal;
- font-size: 0.9em;
- line-height: 1;
- text-align: center;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- &.badge-notification {
- background-color: $fallback--cRed;
- background-color: var(--badgeNotification, $fallback--cRed);
- color: white;
- color: var(--badgeNotificationText, white);
- }
- }
- .alert {
- margin: 0.35em;
- padding: 0.25em;
- border-radius: $fallback--tooltipRadius;
- border-radius: var(--tooltipRadius, $fallback--tooltipRadius);
- min-height: 28px;
- line-height: 28px;
- &.error {
- background-color: $fallback--alertError;
- background-color: var(--alertError, $fallback--alertError);
- color: $fallback--text;
- color: var(--alertErrorText, $fallback--text);
- .panel-heading & {
- color: $fallback--text;
- color: var(--alertErrorPanelText, $fallback--text);
- }
- }
- &.warning {
- background-color: $fallback--alertWarning;
- background-color: var(--alertWarning, $fallback--alertWarning);
- color: $fallback--text;
- color: var(--alertWarningText, $fallback--text);
- .panel-heading & {
- color: $fallback--text;
- color: var(--alertWarningPanelText, $fallback--text);
- }
- }
- &.success {
- background-color: var(--alertSuccess, $fallback--alertWarning);
- color: var(--alertSuccessText, $fallback--text);
- .panel-heading & {
- color: var(--alertSuccessPanelText, $fallback--text);
- }
- }
- }
- .faint {
- color: $fallback--faint;
- color: var(--faint, $fallback--faint);
- }
- .faint-link {
- color: $fallback--faint;
- color: var(--faint, $fallback--faint);
- &:hover {
- text-decoration: underline;
- }
- }
- .visibility-notice {
- padding: .5em;
- border: 1px solid $fallback--faint;
- border: 1px solid var(--faint, $fallback--faint);
- border-radius: $fallback--inputRadius;
- border-radius: var(--inputRadius, $fallback--inputRadius);
- }
- .notice-dismissible {
- padding-right: 4rem;
- position: relative;
- .dismiss {
- position: absolute;
- top: 0;
- right: 0;
- padding: .5em;
- color: inherit;
- }
- }
- .fa-scale-110 {
- &.svg-inline--fa {
- font-size: 1.1em;
- }
- }
- .fa-old-padding {
- &.svg-inline--fa {
- padding: 0 0.3em;
- }
- }
- @keyframes shakeError {
- 0% {
- transform: translateX(0);
- }
- 15% {
- transform: translateX(0.375rem);
- }
- 30% {
- transform: translateX(-0.375rem);
- }
- 45% {
- transform: translateX(0.375rem);
- }
- 60% {
- transform: translateX(-0.375rem);
- }
- 75% {
- transform: translateX(0.375rem);
- }
- 90% {
- transform: translateX(-0.375rem);
- }
- 100% {
- transform: translateX(0);
- }
- }
- @media all and (max-width: 800px) {
- .mobile-hidden {
- display: none;
- }
- .panel-switcher {
- display: flex;
- }
- .container {
- padding: 0;
- }
- .panel {
- margin: 0.5em 0 0.5em 0;
- }
- .menu-button {
- display: block;
- margin-right: 0.8em;
- }
- .main {
- margin-bottom: 7em;
- }
- }
- .setting-list,
- .option-list{
- list-style-type: none;
- padding-left: 2em;
- li {
- margin-bottom: 0.5em;
- }
- .suboptions {
- margin-top: 0.3em
- }
- }
- .login-hint {
- text-align: center;
- @media all and (min-width: 801px) {
- display: none;
- }
- a {
- display: inline-block;
- padding: 1em 0px;
- width: 100%;
- }
- }
- .btn.button-default {
- min-height: 28px;
- }
- .animate-spin {
- animation: spin 2s infinite linear;
- display: inline-block;
- }
- @keyframes spin {
- 0% {
- transform: rotate(0deg);
- }
- 100% {
- transform: rotate(359deg);
- }
- }
- .new-status-notification {
- position: relative;
- font-size: 1.1em;
- z-index: 1;
- flex: 1;
- }
- .chat-layout {
- // Needed for smoother chat navigation in the desktop Safari (otherwise the chat layout "jumps" as the chat opens).
- overflow: hidden;
- height: 100%;
- // Get rid of scrollbar on body as scrolling happens on different element
- body {
- overflow: hidden;
- }
- // Ensures the fixed position of the mobile browser bars on scroll up / down events.
- // Prevents the mobile browser bars from overlapping or hiding the message posting form.
- @media all and (max-width: 800px) {
- body {
- height: 100%;
- }
- #app {
- height: 100%;
- overflow: hidden;
- min-height: auto;
- }
- #app_bg_wrapper {
- overflow: hidden;
- }
- .main {
- overflow: hidden;
- height: 100%;
- }
- #content {
- padding-top: 0;
- height: 100%;
- overflow: visible;
- }
- }
- }
|