:root { --color-bg: var(--background); --color-menu: var(--f_high); --color-menubg: var(--b_low); --color-menuascent: var(--f_med); --color-item: var(--f_high); --color-itembg: var(--b_low); --color-itemascent: var(--f_med); --color-image: #fff; /*Text overlaying an image item*/ --color-imagedarken: #000; /*Overlay on image as text background */ --color-page-bg: #000; --color-page-input: #111; --color-page-i: #222; /*idle*/ --color-page-e: #333; /*enabled*/ --color-page-a: #666; /*ascent*/ --alpha-darken: 0.6; --alpha-idleicon: 0.2; --alpha-idle: 0.4; --alpha-enabledicon: 0.4; --alpha-enabled: 1.0; --alpha-ascent: 1.0; --size-menu: 150px; --size-menu-item-sepv: 14px; /*vertical space between menu items*/ --size-menu-item-seph: 10px; /*horizontal space between menu item count and icon*/ --size-menu-itemgroup-sepv: 30px; /*vertical space between menu types (types to terms, terms to tags)*/ --size-menu-tag-sepv: 10px; /*space between tag items*/ --size-grid-gutter: 20px; --size-grid-column: 350px; --size-item-corner: 10px; --size-item-elem-padding: 1em; /*vertical space between grid item internal elements (tags, notes, quotes etc)*/ --size-item-elem-sep: 0.75em; /*horizontal space between item element icon and element text (tag icon and tags)*/ --size-font-title: 1em; --size-font-body: 0.8em; --size-font-menutypes: 1em; --size-font-menutags: 0.8em; --size-font-bodytypes: 1em; /*font size of type icon/count*/ --cursor-expandImage: zoom-in; --cursor-minimizeImage: zoom-out; } * { box-sizing: border-box; } html { font-family: 'Monaco', 'Andale Mono', 'Deja Vu Sans Mono', 'Consolas', monospace; background: var(--background); padding: 0em; margin: 0; overflow-y: scroll; } body { padding: 0em; margin: 0; } ::selection { background: var(--color-itemascent); color: var(--color-itembg) } /* LOADING */ .loading-wave { display: inline-block; position: absolute; top: 50%; left: 50%; width: 94px; height: 40px; transform: translateY(-50%) translateX(-50%); } .loading-wave div { position: absolute; top: 14px; width: 12px; height: 12px; border-radius: 50%; background: var(--color-itemascent); animation: loading-wave 1.5s infinite; transition-timing-function: ease-in-out; -webkit-animation-timing-function: ease-in-out; } .loading-wave div:nth-child(1) { left: 0px; animation-delay: 0s; } .loading-wave div:nth-child(2) { left: 20px; animation-delay: -0.1s; } .loading-wave div:nth-child(3) { left: 40px; animation-delay: -0.2s; } .loading-wave div:nth-child(4) { left: 60px; animation-delay: -0.3s; } .loading-wave div:nth-child(5) { left: 80px; animation-delay: -0.4s; } @keyframes loading-wave { 0% { transform: translateY(10px); } 50% { transform: translateY(-10px); } 100% { transform: translateY(10px); } } /* ERROR */ .error { position: fixed; top: 50%; left: 50%; font-size: 128px; transform: translateY(-50%) translateX(-50%); display: none; color: var(--color-itemascent); font-size: 128px; vertical-align: center; text-align: center; z-index: 500; padding: 0; background-color: var(--color-bg); border-radius: var(--size-item-corner); border-color: var(--color-item); border-width: 1px; border-style: solid; } .error:after { content:'error'; margin-left: var(--size-grid-gutter) ; margin-right: var(--size-grid-gutter) ; } /* NAV */ nav { padding-top: var(--size-grid-gutter); background: var(--color-bg); opacity: var(--alpha-idle); width: var(--size-menu); position: fixed; height: 100%; z-index: 100; left: 0px; top: 0px; /*overflow-y: scroll;*/ /*allow menu to scroll on small screens*/ } nav:hover { opacity: var(--alpha-ascent); } nav::-webkit-scrollbar { display: none; } .nav-itemgroup { padding-bottom: var(--size-menu-itemgroup-sepv); width: 100%; float: left; } .nav-item { padding-bottom: calc(var(--size-menu-item-sepv) / 2); padding-top: calc(var(--size-menu-item-sepv) / 2); font-size: var(--size-font-menutypes); opacity: var(--alpha-idle); color: var(--color-menu); text-align: center; margin: 0px auto; width: 100%; float: left; } .nav-item:hover { color: var(--color-menuascent); opacity: var(--alpha-ascent); } .nav-itemcount { padding-right: calc(var(--size-menu-item-seph) / 2); display: inline-block; text-align: right; float: left; width: 50%; } .nav-itemicon { margin-left: calc(var(--size-menu-item-seph) / 2); margin-top: calc(var(--size-font-bodytypes) / 10); width: calc(var(--size-font-bodytypes) * 1.25); display: inline-block; text-align: center; float: left; } .nav-tagcontainer { margin: 0 auto; display: table; } .nav-tagicon { padding-bottom: calc(var(--size-menu-item-sepv) / 2); padding-top: calc(var(--size-menu-item-sepv) / 2); font-size: var(--size-font-menutags); opacity: var(--alpha-idle); color: var(--color-menu); display: table-row; text-align: center; width: 100%; float: left; } .nav-tag { padding-bottom: calc(var(--size-menu-tag-sepv) / 2); padding-top: calc(var(--size-menu-tag-sepv) / 2); font-size: var(--size-font-body); opacity: var(--alpha-idle); color: var(--color-menu); width: 100%; float: left; clear: left; } .nav-tagcount { padding-right: var(--size-menu-tag-sepv); text-align: right; float: left; } .nav-taglabel { text-align: left; float: left; } .nav-tag:hover { opacity: var(--alpha-ascent); } .nav-tag:hover .nav-taglabel { background-color: var(--color-itemascent); color: var(--color-menubg); } .nav-tag:hover .nav-tagcount { color: var(--color-itemascent); } /* MAIN */ .container { background: var(--background); margin-left: calc(var(--size-menu) + var(--size-grid-gutter)); margin-right: var(--size-grid-gutter); } main { margin: var(--size-grid-gutter) auto; } main:after { /* clearfix (reset) */ display: block; content: ''; clear: both; } /* GRID ITEM */ .article, .article-wide { border-radius: var(--size-item-corner); margin-bottom: var(--size-grid-gutter); background: var(--color-itembg); width: var(--size-grid-column); text-decoration: none; position: relative; float: left; overflow: hidden; } @media screen and (min-width: 886px) { .article-wide { width: calc(var(--size-grid-column) * 2 + var(--size-grid-gutter)); } } article:hover { background: var(--color-itembg); } article::selection { background: var(--b_high); } .article-containerupper { padding: var(--size-grid-gutter) var(--size-grid-gutter) 0 var(--size-grid-gutter); display: inline-block; z-index: 100; width: 100%; } .article-containerlower { padding: 0 var(--size-grid-gutter) var(--size-grid-gutter); display: inline-block; z-index: 100; } /*IMAGE*/ .article-imageType-imgContainer { z-index: 200; position: relative; } .article-containerupper-image { cursor: var(--cursor-expandImage); padding: var(--size-grid-gutter) var(--size-grid-gutter) 0 var(--size-grid-gutter); display: none; position: absolute; width: 100%; left: 0; z-index: 300; top: 0; } article:hover .article-containerupper-image { display: inline-block; } .article-containerlower-image { cursor: var(--cursor-expandImage); padding: var(--size-grid-gutter); position: absolute; bottom: 0; z-index: 200; left: 0; } .article-containerlower-image:empty { display: none; } article:hover .article-containerlower-image { display: inline-block; } .article-containerbelow { display: table; padding-left: var(--size-grid-gutter); padding-right: var(--size-grid-gutter); padding-top: calc(var(--size-grid-gutter)/2); padding-bottom: var(--size-grid-gutter); } .article-containerbelow:empty { display: none; } .article-image { position: absolute; top: 0; background: transparent; padding-bottom: 0; overflow: hidden; } .article-image-img { vertical-align: middle; /* vertical-align css hack removes bottom padding */ object-fit: cover; margin-bottom: 0px; width: 100%; max-height: 1000px; position: relative; z-index: 100; top: 0; left: 0; } .article-img { vertical-align: middle; /* vertical-align css hack removes bottom padding */ width: calc(100% + var(--size-grid-gutter)*2); max-height: 1000px; margin-left: calc(-1 * var(--size-grid-gutter)); margin-right: calc(-1 * var(--size-grid-gutter)); padding-top: var(--size-grid-gutter); cursor: var(--cursor-expandImage); } .image-overlay { background-color: var(--color-imagedarken); position: absolute; height: 100%; width: 100%; z-index: 150; opacity: 0; cursor: var(--cursor-expandImage); } .article:hover .image-overlay { opacity: var(--alpha-darken); } .article-image .article-link { display: none; } .article-image:hover .article-link { display: initial; text-shadow: 0 0 3em #000; } /* TITLE */ .article-title { color: var(--color-item); font-size: var(--size-font-title); text-decoration: none; float: left; clear: both; } .article-image .article-title { display: none; } .article-image:hover .article-title { display: initial; text-shadow: 0 0 3em #000; color: white; } /* LINK */ .article-linkcontainer { margin-top: var(--size-item-elem-padding); float: left; clear: both; } .article-link { width: calc(100% - var(--size-font-bodytypes) * 2); float: left; clear: both; text-decoration: none; display: inline-block; } .article-linktitle { opacity: var(--alpha-idle); color: var(--color-item); font-size: var(--size-font-body); float: left; } .article-link:hover .article-linktitle { background-color: var(--color-itemascent); color: var(--color-itembg); } .article-linkicon { width: 23px; font-size: 15px; color: var(--color-item); float: left; } article:hover .article-linktitle { opacity: var(--alpha-enabled); } .article-link:hover .article-linktitle { opacity: var(--alpha-ascent); } /* TYPE */ .article-typecontainer { position: absolute; right: 0px; top: 0px; margin-right: var(--size-grid-gutter); } .article-type { color: var(--color-item); padding-bottom: var(--size-grid-gutter); padding-top: var(--size-grid-gutter); font-size: var(--size-font-bodytypes); vertical-align: top; text-align: center; float: right; text-decoration: none; width: 30px; padding-left: 10px; } .article-image .article-typeicon { display: none; } .article-image:hover .article-typeicon { display: initial; color: var(--color-image); } .article-typeicon { opacity: var(--alpha-idleicon); } article:hover .article-typeicon { opacity: var(--alpha-enabledicon); color: var(--color-item); } .article-type:hover .article-typeicon { opacity: var(--alpha-ascent); color: var(--color-itemascent); } /* DATE, NOTE, QUOTE, TERM, TAGS, AUTH, PROG etc */ .article-icon { float: left; opacity: var(--alpha-idleicon); } article:hover .article-icon { opacity: var(--alpha-enabledicon); } .article-row { padding-top: var(--size-item-elem-padding); color: var(--color-item); font-size: var(--size-font-body); float: left; clear: both; cursor: default; } article:hover .article-row { color: var(--color-item); } .article-image .article-row { color: var(--color-image); } .article-rowtext { display: inline; opacity: var(--alpha-idle); } article:hover .article-rowtext { opacity: var(--alpha-enabled); } .article-file { word-break: break-all; } .article-file-link { color: var(--color-item); text-decoration: none; } .article-file-link:hover { background-color: var(--color-itemascent); color: var(--color-itembg); word-break: break-all; } /* IMAGE */ .article-containerlower-image { display: none; } .article-image:hover .article-containerlower-image { display: initial; } .article-taglink { color: var(--color-item); text-decoration:none; } article:hover .article-taglink { color: var(--color-item); } article:hover .article-taglink:hover { background-color: var(--color-itemascent); color: var(--color-itembg); } .article-image:hover .article-taglink { color: #fff; } .article-image:hover .article-taglink:hover { color: #fff; } /* SMALL ICONS */ .textIcon { color: #fff; margin-right: var(--size-item-elem-sep); } article:hover .textIcon { color: var(--color-item); } /* LIGHTBOX */ .lightbox { position: fixed; left: 0; top: 0; z-index: 300; width: 100%; height: 100%; display: none; align-items: center; } .lightbox-back { width: 100%; height: 100%; background-color: rgba(0,0,0,0.9); cursor: var(--cursor-minimizeImage); } .lightbox-img { position: absolute; top: 50%; left: 50%; max-height: 100vh; max-width: 100vw; transform: translateY(-50%) translateX(-50%); vertical-align: middle; cursor: var(--cursor-minimizeImage); } /*TODO: refactor below; */ /* PAGE */ .page-overlay { /* visual */ background-color: var(--color-page-bg); opacity: 0; /*-webkit-transition: opacity var(--animation-time) linear; transition: opacity var(--animation-time) linear;*/ width: 100%; height: 100%; /* position */ position: absolute; z-index: -100; left: 0; top: 0; /* content */ display: none; align-items: center; justify-content: center; user-select: none; /*noselect stops an unwanted selection visual on button click*/ -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } .page-overlay .content-menu { width: 100px; float: left; text-align: center; height: 100%; padding-top: auto; padding-bottom: auto; margin-right: 50px; border-radius: var(--size-item-corner); } .page-overlay .content-menu:hover { background-color: var(--color-page-i); } .page-overlay .content-menu:hover a { color: var(--color-page-a); } .page-overlay .content-menu a { color: var(--color-page-e); text-decoration: none; } .page-overlay .content-menu .content-menu-option { height: 100px; width: 100px; display: flex; align-items: center; justify-content: center; } .page-overlay .content form { float: left; } .page-overlay .content .row .key { width: 100px; color: var(--color-page-a); visibility: hidden; float: left; padding: 9px 7px 10px 0; text-align: right; margin-right: 0px; } .page-overlay .content .row input { padding: 10px; width: 400px; margin-bottom: 10px; background-color: var(--color-page-input); color: #fff; border-width: 0px; border-radius: var(--size-item-corner); } .page-overlay .content .row input::placeholder { opacity: 1; color: var(--color-menu); } .page-overlay .content .row input:hover { background-color: var(--color-page-i); } .page-overlay .content .row input:focus { background-color: var(--color-page-e); } .page-overlay .content .display { float: left; height: 100%; width: 400px; padding: 10px; margin-left: 50px; color: var(--color-page-e); } .page-overlay .content-enter { margin-top: 50px; float: left; width: 100%; height: 100px; clear: both; text-align: center; padding-top: auto; padding-bottom: auto; vertical-align: center; border-radius: var(--size-item-corner); } .page-overlay .content-enter .content-menu-option { height: 100%; vertical-align: center; padding-top: auto; padding-bottom: auto; display: flex; align-items: center; justify-content: center; } .page-overlay .content-enter:hover { background-color: var(--color-page-i); } .page-overlay .content-enter:hover a { color: var(--color-page-a); } .page-overlay .content-enter a { color: var(--color-page-e); text-decoration: none; }