$fa-font-path: '~fork-awesome/fonts'; @import '~fork-awesome/scss/fork-awesome'; @import '~purecss/build/pure.css'; @import '~purecss/build/grids-responsive.css'; @import '~pure-extras/css/pure-extras.css'; @import '~awesomplete/awesomplete.css'; $white: #fff; $black: #000; $almost-white: #f5f5f5; $dark-grey: #252525; $light-grey: #797979; $main-green: #1b926c; $light-green: #b0ddce; $dark-green: #186446; $red: #ac2925; $orange: #f89406; $blue: #0b5ea6; $background-color: #d0d0d0; $background-linklist-info: #ddd; $light-shadow: rgba(255, 255, 255, 7.8%); $dark-shadow: rgba(0, 0, 0, 29.8%); $warning-text: #97600d; $form-input-border: #d8d8d8; $form-input-background: #eee; :root { --main-color: #{$main-green}; --background-color: #{$background-color}; --dark-main-color: #{$dark-green}; } // General body { background: var(--background-color); } .strong { font-weight: bold; } .clear { clear: both; } .center { margin: auto; text-align: center; } .label { display: inline-block; border-radius: .25rem; padding: .25em .4em; vertical-align: baseline; text-align: center; line-height: 1; white-space: nowrap; font-size: 75%; font-weight: 700; } pre { max-width: 100%; } @font-face { font-family: Roboto; font-weight: 400; font-style: normal; src: local('Roboto-Regular'), url('../fonts/Roboto-Regular.woff2') format('woff2'), url('../fonts/Roboto-Regular.woff') format('woff'); } @font-face { font-family: Roboto; font-weight: 700; font-style: normal; src: local('Roboto-Bold'), url('../fonts/Roboto-Bold.woff2') format('woff2'), url('../fonts/Roboto-Bold.woff') format('woff'); } body, .pure-g [class*='pure-u'] { font-family: Roboto, Arial, sans-serif; } // Extends Pure grids responsive to hide items. // Use xx-0 to hide an item on xx screen. // Display it at any level with xx-visible. .pure-u-0 { display: none !important; } @media screen and (min-width: 35.5em) { .pure-u-sm-0 { display: none !important; } .pure-u-sm-visible { display: inline-block !important; } } @media screen and (min-width: 48em) { .pure-u-md-0 { display: none !important; } .pure-u-md-visible { display: inline-block !important; } } @media screen and (min-width: 64em) { .pure-u-lg-0 { display: none !important; } .pure-u-lg-visible { display: inline-block !important; } } @media screen and (min-width: 80em) { .pure-u-xl-0 { display: none !important; } .pure-u-xl-visible { display: inline-block !important; } } .page-form, .pure-alert { code { display: inline-block; padding: 0 2px; color: $dark-grey; background-color: var(--background-color); } } // Make pure-extras alert closable. .pure-alert-closable { .fa-times { float: right; } } .pure-alert-close { cursor: pointer; } .pure-alert-success { background-color: var(--main-color); } .pure-alert-warning { a { color: $warning-text; font-weight: bold; } } .page-single-alert { margin-top: 100px; } .anchor { &:target { padding-top: 40px; } } // MENU .shaarli-menu { position: fixed; top: 0; transition: max-height .5s; z-index: 999; background: var(--main-color); width: 100%; // Hack to transition with auto height: http://stackoverflow.com/a/8331169/1484919 max-height: 45px; overflow: hidden; -webkit-font-smoothing: antialiased; &.open { transition: max-height .75s; max-height: 500px; } } .pure-menu-item { // Chrome bugfix: with 100% height, it only displays the first element. height: 45px; &:hover { &::after { display: block; margin: -4px auto 0; background: $white; width: 100%; height: 4px; content: ''; } } } .head-logo { float: left; margin: 0 5px 0 0; } %menu-link { padding: .8em 1em; color: $almost-white; } %menu-link-hover { background: transparent; color: $white; } .pure-menu-link { @extend %menu-link; &:visited { @extend %menu-link; } &:hover, &:focus { @extend %menu-link-hover; } } .pure-menu-selected { .pure-menu-link { @extend %menu-link; &:visited { @extend %menu-link; } &:hover, &:focus { @extend %menu-link-hover; } } } .menu-toggle { display: none; position: absolute; top: 5px; right: 0; width: 34px; height: 45px; .bar { display: block; position: absolute; top: 18px; right: 7px; border-radius: 100px; background-color: $light-green; width: 20px; height: 2px; transition-duration: .5s; &:first-child { transform: translateY(-6px); } } &.x { .bar { transform: rotate(45deg); &:first-child { transform: rotate(-45deg); } } } } @media screen and (max-width: 64em) { .menu-toggle { display: block; } } .header-buttons { text-align: right; } .linkcount { color: $dark-grey; font-size: .8em; } @media screen and (min-width: 64em) { .linkcount { position: absolute; right: 5px; } } .searchform-block { width: 100%; text-align: center; input { &[type='text'] { border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 1px $dark-shadow inset; background: $almost-white; padding: 0 5px; width: 260px; height: 30px; color: $dark-grey; &::placeholder { color: $light-grey; } } } button { border: 0; border-radius: 2px; background-color: var(--main-color); padding: 4px 8px 6px; color: $almost-white; } } @media screen and (max-width: 64em) { .searchform { margin: 0 auto; max-width: 260px; } } .search-tagcloud { button { width: 90%; } } @media screen and (max-width: 64em) { .search-linklist { button { width: 100%; } .awesomplete { margin: 5px 0; } } } .header-search, .search-linklist, .search-tagcloud { button { &:hover { color: var(--background-color); } } } .header-search, .search-linklist { padding: 6px 0; } @media screen and (max-width: 64em) { .header-search, .header-search * { visibility: hidden; } } %subheader-form-input { border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 4px $dark-shadow inset; background: $almost-white; padding: 5px 5px 3px 15px; color: $dark-grey; } .subheader-form { display: block; position: fixed; visibility: hidden; z-index: 999; background: var(--main-color); padding: 5px 0; width: 100%; height: 30px; text-align: center; input { &[type='text'], &[type='password'] { @extend %subheader-form-input; &::placeholder { color: $dark-grey; } } } &[type='submit'] { display: inline-block; margin: 0 0 5px; border: 1px solid $almost-white; border-radius: 2px; background: var(--main-color); padding: 4px 0; width: 100px; height: 28px; color: $almost-white; &:hover { background: $almost-white; color: var(--main-color); } } .remember-me { @extend %subheader-form-input; display: inline-block; cursor: pointer; padding: 5px 20px 3px; width: auto; label, input { cursor: pointer; } } a { &.button { border: 2px solid $almost-white; border-radius: 5px; padding: 3px 10px; text-decoration: none; color: $almost-white; font-weight: bold; } } } .header-login-form { input { &[type='text'], &[type='password'] { width: 200px; // because chrome &::placeholder { color: $light-grey; } } } } @media screen and (min-width: 64em) { .subheader-form { &.open { visibility: visible; * { visibility: visible; } } } } .new-version-message { text-align: center; a { color: $warning-text; font-weight: bold; } } .header-alert-message { text-align: center; } // CONTENT - GENERAL .container { position: relative; z-index: 2; margin-top: 45px; } // Plugins additional forms .toolbar-plugin { margin: 5px 0; text-align: center; input { &[type='text'] { border: medium none currentcolor; border-radius: 2px; box-shadow: 0 1px 0 $light-shadow, 0 1px 1px $dark-shadow inset; background: $almost-white; padding: 0 5px; width: 300px; height: 30px; color: $dark-grey; &::placeholder { color: $light-grey; } } &[type='submit'] { border: medium none currentcolor; border-radius: 2px; background: $almost-white; padding: 0 10px; height: 30px; color: $dark-grey; &:hover { background: $white; } } } } @media screen and (max-width: 64em) { .toolbar-plugin { input { &[type='text'] { width: 70%; } } } } // CONTENT - LINKLIST PAGING // 64em -> lg .linklist-filters { margin: 5px 0; color: $dark-grey; font-size: .9em; a { display: inline-block; margin: 3px 0; padding: 5px 8px; text-decoration: none; } .filter-off { background: $almost-white; color: $dark-grey; } .filter-on { background: var(--main-color); color: $light-green; } .filter-block { background: $red; color: $almost-white; } } .linklist-pages { margin: 5px 0; text-align: center; color: $dark-grey; a { text-decoration: none; color: $dark-grey; &:hover { color: $white; } } } %linksperpage-button { display: inline-block; width: 20px; text-align: center; } .linksperpage { margin: 5px 0; text-align: right; color: $dark-grey; font-size: .9em; form { display: inline; } a { @extend %linksperpage-button; background: $almost-white; padding: 5px; text-decoration: none; color: $dark-grey; &.selected { background: var(--main-color); color: $white; } } input { &[type='text'] { @extend %linksperpage-button; margin: 0; border: medium none currentcolor; background: $almost-white; padding: 4px 5px 3px 8px; height: 20px; color: $dark-grey; font-size: .8em; } } } // CONTENT - LINKLIST ITEMS %private-border { display: block; position: absolute; top: 0; left: 3px; z-index: 1; background: $orange; width: 2px; height: 96%; content: ''; } .linklist-item { position: relative; margin: 0 0 10px; box-shadow: 1px 1px 3px $light-grey; background: $almost-white; &.private { &::before { display: block; position: absolute; top: 0; left: 0; z-index: 1; background: $orange; width: 2px; height: 100%; content: ''; } } .search-highlight { background-color: yellow; } } .linklist-item-buttons { position: relative; z-index: 99; background: transparent; width: 23px; } .linklist-item-buttons-right { float: right; margin-right: -25px; } .linklist-item-buttons * { display: block; float: left; margin: auto; width: 100%; text-align: center; } .linklist-item-title { position: relative; margin: 0; background: $almost-white; word-wrap: break-word; h2 { margin: 0; padding: 3px 10px 0; line-height: 30px; word-wrap: break-word; a { vertical-align: middle; text-decoration: none; color: $dark-grey; font-size: .7em; &:visited { .linklist-link { color: var(--dark-main-color); } } &:hover { color: $dark-grey; } } } .linklist-link { color: var(--main-color); font-size: 1.1em; &:hover { color: $dark-grey; } } .label { font-family: Arial, sans-serif; font-size: .65em; } .label-private { border: solid 1px $orange; color: $orange; } .label-sticky { border: solid 1px $blue; color: $blue; } } .fold-button { display: none; color: $dark-grey; } .linklist-item-editbuttons { float: right; padding: 8px 5px; * { display: block; float: left; margin: 0 1px; } a { font-size: 1em; } .link-checkbox { display: none; } } .edit-link { color: $blue; font-size: 1.2em; } .delete-link { color: $red !important; font-size: 1.3em; } .pin-link { font-size: 1.3em; } .pinned-link { color: $blue !important; } .linklist-item-description { position: relative; padding: 0 10px; line-height: 1.3em; color: $dark-grey; word-wrap: break-word; a { text-decoration: none; color: var(--main-color); &:hover { color: $dark-grey; } &:visited { color: var(--dark-main-color); } } } .linklist-item-thumbnail { position: relative; float: right; z-index: 50; margin: 0; padding: 0 0 0 5px; height: 90px; } .linklist-item-infos { background: $background-linklist-info; padding: 4px 8px; color: $dark-grey; a { text-decoration: none; color: $dark-grey; &:hover { color: $black; } } .linklist-item-tags { font-size: .8em; } .label-tag { font-size: 1em; } .mobile-buttons { text-align: right; } .linklist-plugin-icon { display: inline-block; margin: 0 2px; width: 16px; height: 16px; } } .linklist-item-infos-dateblock { font-size: .9em; } .linklist-plugin-icon { width: 13px; height: 13px; } .linklist-item-infos-url { height: 23px; overflow: hidden; text-align: right; text-overflow: ellipsis; line-height: 23px; white-space: nowrap; font-size: .8em; } .linklist-item-infos-controls-group { display: inline-block; border-right: 1px solid $light-grey; padding-right: 6px; } .ctrl-edit { margin: 0 7px; } .ctrl-delete { margin: 0 7px 0 0; } // 64em -> lg @media screen and (max-width: 64em) { .linklist-item-infos-url { text-align: left; } } // Footer .footer-container { margin: 20px 0; padding: 5px; text-align: center; color: $dark-grey; &::before { display: block; margin: 10px auto; background: linear-gradient(to right, var(--background-color), $dark-grey, var(--background-color)); width: 80%; height: 1px; content: ''; } a { color: $dark-grey; } } // PAGE FORM %page-form-input { margin: 10px 0; border: solid 1px $form-input-border; border-radius: 2px; background: $form-input-background; padding: 5px 5px 3px 15px; width: 90%; height: 35px; color: $dark-grey; box-sizing: border-box; } %page-form-button { display: inline-block; margin: 15px 5px; border: 0; box-shadow: 1px 1px 1px $form-input-border, -1px -1px 6px $form-input-border, -1px 1px 2px $form-input-border, 1px -1px 2px $form-input-border; background: var(--main-color); min-width: 150px; height: 35px; vertical-align: center; text-decoration: none; line-height: 35px; color: $almost-white; font-size: 1.2em; font-weight: normal; } .page-form { margin: 20px 0 0; box-shadow: 1px 1px 2px $light-grey; background: $almost-white; overflow: hidden; color: $dark-grey; .window-title { margin: 0 0 10px; background: $almost-white; padding: 10px 0; width: 100%; text-align: center; color: var(--main-color); } .window-subtitle { text-align: center; } a { text-decoration: none; color: var(--main-color); font-weight: bold; &.button { @extend %page-form-button; } } p { margin: 0; padding: 5px 10px; } input { &[type='text'] { @extend %page-form-input; &::placeholder { color: $light-grey; } } &[type='password'] { @extend %page-form-input; &::placeholder { color: $light-grey; } } &[type='submit'] { @extend %page-form-button; } } textarea { @extend %page-form-input; padding: 15px 5px 3px 15px; min-height: 240px; resize: vertical; overflow-y: auto; word-wrap: break-word; } select { color: $dark-grey; } .button { &.button-red { background: $red; } &.button-grey { background: $light-grey; } } .submit-buttons { margin-bottom: 10px; } section { margin: 10px 0 25px; } table, th, td { border-width: 1px 0; border-style: solid; border-color: $light-grey; } th, td { padding: 5px; } table { margin: 10px auto 25px auto; width: 90%; .order { text-decoration: none; color: $dark-grey; } } .awesomplete { width: 90%; input { width: 100%; } } div { .awesomplete { > ul { color: $black; } } } } @media screen and (min-width: 64em) { .page-form { .submit-buttons { position: relative; .button { &.button-red { position: absolute; right: 5%; } &.button-grey { position: absolute; left: 5%; } } } } } @media screen and (max-width: 64em) { .page-form { .submit-buttons { .button { margin: auto; } } } } // PAGE FORM - LIGHT .page-form-light { div, p { text-align: center; } } // PAGE FORM - COMPLETE %page-form-valign { position: absolute; top: 50%; transform: translateY(-50%); } .page-form-complete { div, p { color: $dark-grey; } .form-label, .form-input { position: relative; height: 60px; } .form-label { label { @extend %page-form-valign; right: 0; padding: 0 20px; text-align: right; } } .label-name { font-weight: bold; } .label-desc { font-size: .8em; } .form-input { input { @extend %page-form-valign; &[type='text'], &[type='password'] { margin: 0; } } select { &.align { @extend %page-form-valign; } } } textarea { margin: 0; } .timezone { @extend %page-form-valign; } } // Awesomeplete fix div { &.awesomplete { width: inherit; > input { display: inherit; } > ul { z-index: 9999; } } } form { &[name='linkform'] { &.page-form { overflow: visible; } } } @media screen and (max-width: 64em) { %page-form-valign-mobile { position: inherit; top: inherit; transform: translateY(0); } .page-form-complete { .form-label { height: inherit; label { @extend %page-form-valign-mobile; display: block; margin: 10px 0 0; text-align: left; } } .form-input { text-align: center; input { @extend %page-form-valign-mobile; &[type='checkbox'] { position: absolute; top: 50%; right: 50%; transform: translateY(-50%); } } } .timezone { @extend %page-form-valign-mobile; } .radio-buttons { padding: 5px 15px; text-align: left; } } .timezone-continent { &::after { white-space: pre; content: '\a\a'; } } } // Page visitor (page form extended) .page-visitor { color: $dark-grey; } .page-error-container { color: $dark-grey; h2 { margin: 70px 0 25px; } a { color: var(--main-color); } pre { margin: 0 20%; padding: 20px 0; text-align: left; line-height: 1em; } } // EDIT LINK .edit-link-container { .created-date { margin-bottom: 10px; color: $light-grey; } } .loading-input { position: relative; @keyframes around { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .icon-container { position: absolute; right: 60px; top: calc(50% - 10px); } .loader { position: relative; height: 20px; width: 20px; display: inline-block; animation: around 5.4s infinite; &::after, &::before { content: ""; background: $form-input-background; position: absolute; display: inline-block; width: 100%; height: 100%; border-width: 2px; border-color: #333 #333 transparent transparent; border-style: solid; border-radius: 20px; box-sizing: border-box; top: 0; left: 0; animation: around 0.7s ease-in-out infinite; } &::after { animation: around 0.7s ease-in-out 0.1s infinite; background: transparent; } } } // LOGIN .login-form-container { .remember-me { margin: 5px 0; } } // Search results .search-result { a { text-decoration: none; color: $white; } .label-tag { border-color: $white; .remove { margin: 0 0 0 5px; border-left: $white 1px solid; padding: 0 0 0 5px; } } .label-private { border: 1px solid $white; } } // TOOLS .tools-item { margin: 10px 0; .pure-button { &:hover { background-color: var(--main-color); background-image: none; color: $almost-white; } } } // PLUGIN ADMIN .pluginform-container { .mobile-row { font-size: .9em; } .more { margin-top: 10px; } } @media screen and (max-width: 64em) { .pluginform-container { .main-row { border-top-style: none; border-bottom-style: none; td { border-top-style: none; border-bottom-style: none; } } } } // IMPORT .import-field-container { margin: 15px 0; } // TAG CLOUD .cloudtag-container { padding: 10px; text-align: center; text-decoration: none; color: $dark-grey; a { text-decoration: none; color: $dark-grey; } .count { color: $light-grey; } } // TAG LIST .taglist-container { padding: 0 10px; a { text-decoration: none; color: $dark-grey; } .count { display: inline-block; width: 35px; text-align: right; color: $light-grey; } .rename-tag-form { display: none; } .delete-tag { display: none; color: $red; } .rename-tag { color: $blue; } .validate-rename-tag { color: var(--main-color); } } // Picture wall CSS .picwall-container { clear: both; margin: 0 10px 10px; background-color: $almost-white; color: $dark-grey; } .picwall-pictureframe { display: table-cell; position: relative; float: left; z-index: 5; margin: 2px; background-color: $almost-white; width: 90px; height: 90px; overflow: hidden; vertical-align: middle; text-align: center; // Adapt the width of the image img { max-width: 100%; height: auto; color: transparent; } a { text-decoration: none; } span { &.info { display: none; font-family: Arial, sans-serif; } } // CSS to show title when hovering an image - no javascript required. &:hover { span { &.info { display: block; position: absolute; top: 0; left: 0; background-color: $dark-shadow; width: 90px; height: 90px; text-align: left; color: $almost-white; font-size: 9pt; font-weight: bold; } } } } .b-lazy { transition: opacity 500ms ease-in-out; opacity: 0; min-width: 1px; min-height: 1px; &.b-loaded { opacity: 1; } } // DAILY .daily-desc { color: $light-grey; font-size: .8em; a { text-decoration: none; color: $dark-grey; &:hover { color: $light-grey; } } } .daily-about { h3 { &::before, &::after { display: block; margin: 10px auto; background: linear-gradient(to right, var(--background-color), $dark-grey, var(--background-color)); width: 90%; height: 1px; content: ''; } } } .daily-entry { padding: 0 10px; .daily-entry-title { margin: 10px 0 0; a { text-decoration: none; color: $black; } &::after { display: block; margin: 5px auto; background: linear-gradient(to right, $white, $light-grey, $white); width: 70%; height: 1px; content: ''; } } .daily-entry-description { padding: 5px 5px 0; text-align: justify; font-size: .9em; word-wrap: break-word; } .daily-entry-tags { padding: 0 5px 5px; font-size: .8em; } } .daily-entry-thumbnail { float: left; margin: 15px 5px 5px 15px; } .daily-entry-description { a { text-decoration: none; color: var(--main-color); &:hover { text-shadow: 1px 1px $background-linklist-info; } &:visited { color: var(--dark-main-color); } } } .tag-sort { margin-top: 30px; text-align: center; a { background: $almost-white; display: inline-block; padding: 5px; text-decoration: none; color: $dark-grey; } } // Markdown .markdown { p { margin: 0 !important; } p + p { margin: .5em 0 0 !important; } * { &:first-child { margin-top: 0 !important; } &:last-child { margin-bottom: 5px !important; } } } // Pure Button .pure-button-success, .pure-button-error, .pure-button-warning, .pure-button-primary, .pure-button-shaarli, .pure-button-secondary { border-radius: 4px; text-shadow: 0 1px 1px $dark-shadow; color: $white !important; } .pure-button-shaarli { background-color: var(--main-color); } .progressbar { border-radius: 6px; background-color: var(--main-color); padding: 1px; > div { border-radius: 10px; background: repeating-linear-gradient( -45deg, $almost-white, $almost-white 6px, var(--background-color) 6px, var(--background-color) 12px ); width: 0%; height: 10px; } } .thumbnails-page-container { .progress-counter { padding: 10px 0 20px; } .thumbnail-placeholder { margin: 10px auto; background-color: $light-grey; } .thumbnail-link-title { padding-bottom: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } // SERVER PAGE .server-tables-page, .server-tables { .window-subtitle { &::before { display: block; margin: 8px auto; background: linear-gradient(to right, var(--background-color), $dark-grey, var(--background-color)); width: 50%; height: 1px; content: ''; } } .server-row { p { height: 25px; padding: 0 10px; } } .server-label { text-align: right; font-weight: bold; } i { &.fa-color-green { color: $main-green; } &.fa-color-orange { color: $orange; } &.fa-color-red { color: $red; } } @media screen and (max-width: 64em) { .server-label { text-align: center; } .server-row { p { text-align: center; } } } } // Batch creation input[name='save_edit_batch'] { @extend %page-form-button; } .addlink-batch-show-more { display: flex; align-items: center; margin: 20px 0 8px; a { color: var(--main-color); text-decoration: none; } &::before, &::after { content: ""; flex-grow: 1; background: rgba(0, 0, 0, 35%); height: 1px; font-size: 0; line-height: 0; } &::before { margin: 0 16px 0 0; } &::after { margin: 0 0 0 16px; } } .dark-layer { display: none; position: fixed; height: 100%; width: 100%; z-index: 998; background-color: rgba(0, 0, 0, 75%); color: #fff; .screen-center { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; min-height: 100vh; } .progressbar { width: 33%; } } .addlink-batch-form-block { .pure-alert { margin: 25px 0 0 0; } } // Print rules @media print { .shaarli-menu { position: absolute; } .search-linklist, .link-count-block, .linklist-item-infos-controls-group, .mobile-buttons { display: none; } }