UNPKG

droppy

Version:
1,554 lines (1,326 loc) 33.8 kB
@charset "UTF-8"; /* ============================= Global styles ============================= */ body, div, a, header, input, button, label, li, nav, p, section, span, ul, figure, figcaption, img { box-sizing: border-box; font-family: inherit; font-size: 100%; line-height: normal; font-weight: inherit; text-size-adjust: 100%; vertical-align: baseline; -webkit-touch-callout: none; margin: 0; padding: 0; border: 0; } svg { fill: currentColor } svg use > svg { all: inherit } /* https://bugzilla.mozilla.org/show_bug.cgi?id=1298557 */ button { color: inherit } li { list-style: none } a { text-decoration: none; background: transparent } :focus, a:active, a:hover { outline: none } select, textarea { font-family: inherit; font-size: 100%; margin: 0 } button, input { line-height: normal } ::-moz-focus-inner { border: none; padding: 0; outline: none } ::-moz-focus-outer { border: none } ::selection { background: #05a; color: #fff } input::placeholder { color: #999; opacity: 1 } /* de-style inputs[type=search] in Safari */ input[type="search"] { -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { display: none; } @media screen and (max-resolution: 1.99dppx) { nav, .path, .tip:before { -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; } } /* =============================== Animations ============================== */ @keyframes shake { 0%, 50%, 100% { transform: translateX(-5px) } 25%, 75% { transform: translateX(5px) } } @keyframes spin { from { transform: rotate(0deg) } to { transform: rotate(359deg) } } /* ============================ Main Page Layout =========================== */ main { position: absolute; left: 0; right: 0; top: 0; bottom: 0; flex-direction: column; } nav { background: #181818; text-align: center; order: 1; flex: 0 0 1.5rem; display: flex; white-space: nowrap; user-select: none; } /* ================================== View ================================= */ .view { position: absolute; bottom: 0; left: 0; right: 0; top: 0; display: flex; flex-direction: column; } .content-container { position: relative; overflow: auto; flex: 1; order: 2; } .view.left { left:0; right:50% } .view.right { left:50%; right:0 } .view.right .content.directory { border-left: 1px solid #ccc } .view.left .prefs, .view.left .about, .view.left .logout { display: none } .content { left: 0; width: 100%; transition: transform .175s; transform: translateX(0); } .content.directory { background: #eee; display: flex; flex-direction: column; } .content.media, .content.document { height: 100%; background: #0a0a0a; position: absolute; overflow: hidden; } .content.back { z-index: 0; position:absolute; transform: translateX(-100%) } .content.forward { z-index: 0; position:absolute; transform: translateX(100%) } /* ================================== Path ================================= */ .path { box-shadow: 0 0 .5em rgba(0,0,0,.15); overflow: hidden; white-space: nowrap; width: 100%; z-index: 1; flex: 0 0 1.5rem; order: 1; font-size: .9rem; position: relative; } .path .triangle { position: absolute; height: 1.5rem; width: 1.5rem; right: -.88rem; } .path .home { height: .8rem; width: .8rem; position: relative; top: -2px; vertical-align: middle; } .path li { color: #ccc; cursor: pointer; display: inline-block; line-height: 1.5rem; opacity: 0; position: relative; transform: translateX(-2em); transition: .2s; } .path li.in { opacity: 1; transform: translateX(0) } .path li .triangle { transition: .2s } @media (min-width: 1024px) { .path li { padding: 0 .4em 0 1.6em } } @media (max-width: 1023px) { .path li { padding: 0 .2em 0 1.4em } } .path li:hover .home { fill: #fff } .path li:first-of-type { padding-left: .5em } .path li:nth-child(odd) { background: #404040 } .path li:nth-child(odd) .triangle { fill: #404040 } .path li:nth-child(even) { background: #2d2d2d } .path li:nth-child(even) .triangle { fill: #2d2d2d } .path li:nth-child(odd):hover { background: #812; color: #fff } .path li:nth-child(odd):hover .triangle { fill: #812 } .path li:nth-child(even):hover { background: #25a; color: #fff } .path li:nth-child(even):hover .triangle { fill: #25a } .path li:nth-child(1) { z-index: 16 } .path li:nth-child(2) { z-index: 15 } .path li:nth-child(3) { z-index: 14 } .path li:nth-child(4) { z-index: 13 } .path li:nth-child(5) { z-index: 12 } .path li:nth-child(6) { z-index: 11 } .path li:nth-child(7) { z-index: 10 } .path li:nth-child(8) { z-index: 9 } .path li:nth-child(9) { z-index: 8 } .path li:nth-child(10) { z-index: 7 } .path li:nth-child(11) { z-index: 6 } .path li:nth-child(12) { z-index: 5 } .path li:nth-child(13) { z-index: 4 } .path li:nth-child(14) { z-index: 3 } .path li:nth-child(15) { z-index: 2 } .path li:nth-child(16) { z-index: 1 } .path li.dirty { color: #f71 } .path li.saved { background: #361 } .path li.saved svg { fill: #361 !important } .path li.save-failed { background: #b44 } .path li.save-failed svg { fill: #b44 !important } .path li.dirty:after { content: "*"; position: absolute; } .path li a { max-width: calc(100vw - 4rem); overflow: hidden; display: inline-block; white-space: nowrap; text-overflow: ellipsis; line-height: 1.5rem; } .view.left .path li a, .view.right .path li a { max-width: calc(50vw - 4rem); } /* ========================= File/Folder Display =========================== */ .paste-button { background: #333; text-align: center; position: absolute; white-space: nowrap; z-index: 445; color: #bbb; padding: 0 .25em; right: 0; top: 1.5rem; cursor: pointer; transition: opacity .3s, visibility 0s .3s; user-select: none; opacity: 0; visibility: hidden; line-height: 1.5rem; } .paste-button.in { opacity: 1; visibility: visible; transition: opacity .3s } .paste-button .triangle { position: absolute; transform: rotate(180deg); fill: #333; } .paste-button .triangle { position: absolute; height: 1.5rem; width: 1.5rem; left: -.875rem; } .paste-button svg.paste { display: inline-block; vertical-align: middle; position: relative; top: -.05em; margin-right: .25em; } .paste-button:hover svg.triangle {fill: #25a } .paste-button:hover { background: #25a; color: #fff } .paste-button .filename { color: #fff } #overlay { background: #000; position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 31; opacity: 0; visibility: hidden; user-select: none; transition: .15s; } #overlay.in { opacity: .4; visibility: visible } .file-header { display: flex; order: -1; color: #555; font-size: .8rem; height: 1.3em; border-bottom: 1px solid #bbb; background: #e0e0e0; user-select: none; align-items: center; padding: 0 .1rem; } .file-header span { white-space: nowrap; cursor: pointer; } .file-header .triangle { height: .5em; width: .5em; margin-left: .25em; transition: .3s; } .file-header .down .triangle { transform: rotate(90deg); top: -.15em } .file-header .up .triangle { transform: rotate(270deg); top: -.05em } .file-header .active { color: #000 } .header-name, .entry-link, .inline-namer { flex: 1 1; overflow: hidden; } .header-name { margin-left: .25rem; } .header-mtime, .mtime { flex: 0 0 6rem; justify-content: flex-end; white-space: nowrap; } .header-size, .size { flex: 0 0 6rem; display: inline-block; justify-content: flex-end; white-space: nowrap; } .header-line-buttons, .line-buttons { flex: 0 0 4.5rem; justify-content: flex-end; } .readonly .header-line-buttons, .readonly .line-buttons { flex: 0 0 3.5rem; } .line-buttons svg { cursor: pointer; fill: #555; padding: 0 1px; margin: .15rem 0; } .line-buttons span:hover svg, .line-buttons a:hover svg { fill: #000 } .line-buttons svg.menu {width: .75rem} .icon-play svg, .icon-view svg { width: 24px; height: 24px; margin-top: .25rem; visibility: hidden; cursor: pointer; } .playable:not(.playing):hover .icon-play svg, .viewable:hover .icon-view svg { visibility: visible; } .playable:not(.playing):hover .sprite, .viewable:hover .sprite { background: none; } .data-row { display: flex; padding: 0 .1rem; } .data-row.editing.invalid input { color: #d22 } .data-row.editing .entry-link { display: none } .data-row, .data-row a { color: #333 } .data-row:not(.playing):not(.animating):not(.editing):hover, .data-row:not(.playing):not(.animating):not(.editing).active { background: #e3e3e3; } .data-row.playing { background: #05a; } .data-row.playing a.entry-link, .playing span { color: #fff } .data-row.playing svg { fill: #ccc !important } .data-row.playing svg:hover { fill: #fff !important } .data-row.editing { background: #f8f8f8 !important } .data-row > *, .file-header > *, .line-buttons > * { display: flex; align-items: center; align-self: stretch; } .entry-link { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; display: block; /* needed for ellipsis */ line-height: 1.3 /* fix centering because of display:block */; } .error-link { cursor: default !important; color: #f44 !important; } .inline-namer { background: transparent; padding: .1rem 0; } /* Hide certain list elements when width gets too small */ @media (max-width: 639px) { .header-line-buttons, .line-buttons { flex: 0 0 4rem } .line-buttons svg { padding: 0 } .header-size, .size { flex: 0 0 3.25rem } .header-mtime, .mtime { display: none } } @media (max-width: 319px) { .header-size, .size { display: none } .line-buttons { flex: 0 0 3.5rem } } /* Hide them sooner when the view is split */ @media (max-width: 1365px) { .left .header-line-buttons, .right .header-line-buttons, .left .line-buttons, .right .line-buttons { flex: 0 0 3.5rem } .left .line-buttons svg, .right .line-buttons svg { padding: 0 } .left .header-size, .right .header-size, .left .size, .right .size { flex: 0 0 3.25rem } .left .header-mtime, .right .header-mtime, .left .mtime, .right .mtime { display: none } } @media (max-width: 799px) { .left .header-size, .right .header-size, .left .size, .right .size { display: none } .left .line-buttons, .right .line-buttons { flex: 0 0 3rem } } /* ============================= Empty Folder ============================== */ .empty, .noresults { text-align: center; cursor: pointer; overflow: hidden; padding: 1em 0; order: 2; } .empty svg { height: 70px; width: 70px; transition: .3s; position: relative; bottom: -12px; } .empty .text { position: relative; top: -25px; opacity: 0; transition: .3s; } .noresults { color: #333 } .empty { color: #666 } .empty:hover svg { opacity: 1; bottom: 0; fill: #333 } .empty:hover .text { opacity: 1; top: -5px; color: #333 } /* ================================= Icons ================================= */ .sprite { flex: 0 0 24px; height: 24px; background-size: 240px 216px; align-self: center; } @media (min-width: 1024px) { .sprite { transform: scale(1.4); margin: 0 .4em } } @media (max-width: 1023px) { .sprite { transform: scale(1.2); margin: .05em .2em } } @media (max-width: 639px) { .sprite { transform: scale(1); margin: .05em .1em } } .spinner { position: absolute; right: 0; top: 0; z-index: 16; height: 1.5rem; width: 1.5rem; visibility: hidden; pointer-events: none; fill: #bbb; } .spinner.in { visibility: visible; animation: spin .75s infinite linear } @media (max-width: 639px) { .spinner { height: 1.25rem; width: 1.25rem; top: 0 } } /* ============================= View Nav ============================== */ .view-nav { display: flex; flex: 0 0 1.5rem; user-select: none; justify-content: space-between; } .view-nav-left, .view-nav-right { display: flex; } .button { width: 2rem; background: transparent; color: #ccc; cursor: pointer; display: flex; align-items: center; justify-content: center; } .search { display: none; align-items: center; position: relative; color: rgba(255,255,255,.8); font-size: .8rem; } .view[data-type="directory"] .search { display: flex; } .view[data-type="directory"] .content-container { background: #eee; } .search svg { left: 0; top: .4rem; fill: $greya; cursor: pointer; } .search input { background: transparent; padding: .125rem 0; margin-left: .25rem; width: 0; color: #fff; transition: width .1s; } .search.toggled-on input { width: 6rem; border-bottom: 1px solid #ccc; } .search:hover svg, .search input:hover + svg, .search input:focus + svg, .search input:active + svg { fill: #fff; } @media (max-width: 800px) { .view.left .button, .view.right .button { width: 1.5rem } } @media (max-width: 530px) { .view.left .button, .view.right .button { width: auto; margin: 0 1px } } @media (max-width: 400px) { .button { width: 1.5rem } } .button + .button { border-left: none } .af:hover { color: rgb(102,166,255) } .ad:hover { color: rgb(255,102,252) } .cf:hover { color: rgb(102,255,235) } .cd:hover { color: rgb(102,255,125) } .about:hover { color: rgb(148,102,255) } .prefs:hover { color: rgb(255,212,102) } .logout:hover { color: rgb(255, 82, 82) } .newview:hover { color: rgb(255,166,100) } .reload:hover { color: rgb( 70,140,240) } .reload { display: none; } .nowatch .view[data-type="directory"] .reload { display: flex; } .button.disabled { color: #444 !important; cursor: not-allowed !important } .button.disabled:hover { color: #444 !important; background: transparent !important } .button.disabled:hover svg { fill: #444 !important } /* ============================ Entry Menu ============================ */ #entry-menu { background: #eee; border-radius: 4px; box-shadow: 0 8px 24px rgba(0,0,0,.3); opacity: 0; position: absolute; overflow: hidden; user-select: none; visibility: hidden; cursor: pointer; z-index: 32; } #entry-menu.in { opacity: 1; visibility: visible } html:not(.mobile) #entry-menu a:hover, html:not(.mobile) #entry-menu a.active { background: #05a; color: #fff; } #entry-menu a { padding: .25em .35em; color: #333; display: flex; align-items: center; } #entry-menu svg { margin-right: .25em; float: left; } #entry-menu a.play, #entry-menu.type-folder a.edit { display: none; } #entry-menu.type-audio .play { display: block; } .readonly a.rename, .readonly a.copy, .readonly a.cut, .readonly a.delete, .readonly .af, .readonly .ad, .readonly .cf, .readonly .cd, .readonly .movefile, .readonly .copyfile, .public .logout, .readonly .sidebar .save, .readonly .delete-file { display: none !important; } /* ============================ Media View ============================ */ .pswp__container { transition: .25s; } .pswp__bg { background: #0a0a0a !important; } .pswp__top-bar { background: rgba(0,0,0,.6) !important; height: 1.4rem !important; pointer-events: none; color: #e6e6e6; z-index: 1; } .pswp__button { opacity: 1; background: none !important; } .pswp__button svg { pointer-events: none; } .pswp__counter { opacity: 1 !important; color: inherit !important; font-size: 1rem !important; font-family: sans-serif; line-height: 1.5rem !important; } .pswp__top-bar .pswp__button, .pswp__counter { pointer-events: auto; background: none; opacity: 1; } .pswp__top-bar, .pswp__ui { transition: all .4s ease-in-out !important; } .pswp__ui--idle { transform: translateY(-1.5rem) !important; } .pswp__top-bar svg { height: 34px; width: 34px; } .pswp__button--zoom:hover { color: #f82 } .pswp__button--close:hover { color: #d44 } .pswp__button--fs:hover { color: #ff4 } .fit-h:hover { color: #18f } .fit-v:hover { color: #5c5 } .autonext, .loop { color: #666 } .on { color: #fff } .pswp__button--arrow--left:before, .pswp__button--arrow--right:before { background: none !important; content: normal !important; } .pswp__button--arrow--left, .pswp__button--arrow--right { width: 3em; cursor: pointer; color: rgba(255,255,255,.5); stroke: rgba(0,0,0,.5); stroke-width: 8; top: 1.4rem !important; height: calc(100% - 2.8rem) !important; margin-top: 0 !important; } .pswp__button--arrow--left svg, .pswp__button--arrow--right svg { height: 2em; width: 2em; position: absolute; transition: .25s; } .pswp__button--arrow--left svg { transform: rotate(270deg) translateX(50%); left: -.25em } .pswp__button--arrow--right svg { transform: rotate(90deg) translateX(-50%); right: -.25em } .pswp__button--arrow--left:hover svg { height: 2.5em; width: 2.5em; left: -.5em; color: #fff; stroke: #000 } .pswp__button--arrow--right:hover svg { height: 2.5em; width: 2.5em; right: -.5em; color: #fff; stroke: #000 } .pswp__item { overflow-x: hidden !important; overflow-y: auto !important; } /* ================================= Video ================================= */ .plyr__video-wrapper { background: none !important; } .plyr--video .plyr__controls { padding: .1rem 0 !important; background: rgba(0,0,0,.6) !important; } .plyr__volume { margin-right: .25rem !important; } :fullscreen .plyr__video-wrapper--fixed-ratio { height: 100vh !important; padding-bottom: 0 !important; } video { height: calc(100vh - 3rem) !important; } :fullscreen video { height: 100vh !important; } /* ============================ Document ============================ */ .view[data-type="document"] ::-webkit-scrollbar { background: transparent !important; max-width: 6px !important; max-height: 6px !important; } .view[data-type="document"] ::-webkit-scrollbar-thumb { background: rgba(128,128,128,.5) !important; } .view[data-type="document"] ::-webkit-scrollbar-thumb:hover { background: #18f !important; } .CodeMirror { line-height: 1.2em !important; height: 100% !important; width: 100% !important; } /* Need some weight to override some themes */ .content div.CodeMirror { font-size: 16px } .CodeMirror, .CodeMirror-diaglog input { font-family: SFMono-Regular, "Source Code Pro", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; } .CodeMirror-scrollbar-filler { background: transparent !important } .CodeMirror-lines { padding: 0 !important } .CodeMirror-dialog-top { border-bottom: 1px solid #383838; top: 0 } .CodeMirror-dialog-bottom { border-top: 1px solid #383838; bottom: 0 } .CodeMirror-dialog { position: absolute; left: 0; right: 0; background: #282828; z-index: 15; padding: .1em .8em; overflow: hidden; color: #aaa; white-space: nowrap; } .CodeMirror-dialog input { border: none; outline: none; background: transparent; width: 20em !important; color: #eee; } .CodeMirror-dialog button { background: #181818; padding: .05rem .2rem; color: #eee; } .CodeMirror-dialog button:hover { background: #383838; } .sidebar { position: absolute; top: .25em; right: 0; width: 2.5em; user-select: none; } .sidebar > li { position: relative; z-index: 5; } .sidebar svg { fill: rgba(128,128,128,.5); margin-left: .75em; } .sidebar span { display: block; text-align: center; opacity: 0; font-size: .7em; position: relative; top: -.3em; } .sidebar > li:hover { cursor: pointer } .sidebar > li:hover span { color: #fff; opacity: 1 } .sidebar > .exit:hover svg { fill: #d44 } .sidebar > .save:hover svg { fill: #5c5 } .sidebar > .dl:hover svg { fill: #71f } .sidebar > .ww:hover svg { fill: #18f } .sidebar > .syntax:hover svg, .sidebar > .syntax.in svg { fill: #f82 } .sidebar > .syntax.in span { color: #fff; opacity: 1 } .sidebar > .find:hover svg { fill: #a4c } .sidebar > .full:hover svg { fill: #ff4 } .mode-select { background: #282828; border: none; box-shadow: 0 8px 16px rgba(0,0,0,.6); border-radius: 2px; color: #ccc; font-size: .8em; margin-top: -2.85em; padding: .7em 3em .7em .5em; position: absolute; right: 0; visibility: hidden; z-index: 4; appearance: none; } .mode-select.in { visibility: visible } /* ============================ Upload Progress ============================ */ .upload-info { background: #181818; color: #eee; transition: flex-basis .2s; width: 100%; position: relative; display: flex; flex: 0 0 0; order: 4; } .upload-info.in { flex-basis: 1.5em } .upload-info > span { line-height: 1.5em; position: relative; z-index: 2; } .upload-percentage { flex: 0 0 2em; text-align: center; margin: 0 .5em; } .upload-title { flex: 1; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } .upload-time { text-align: right; white-space: nowrap; margin: 0 .25em; } .upload-cancel { transition: color .2s; cursor: pointer; flex: 0 0 1.25em; text-align: center; } .upload-bar { position: absolute; background: #05a; top: 0; bottom: 0; left: 0; transition: width .2s; width: 0; z-index: 1; } .upload-info svg { vertical-align: middle; transition: fill .15s; position: relative; top: -.1em; margin-right: .25em; } .upload-cancel:hover { color: #f44 } .upload-cancel:hover svg.remove { fill: #f44 } .file { display: none } /* =============================== Audio Panel =============================== */ .audio-bar { background: #181818; box-shadow: 0 0 .5em rgba(0,0,0,.2); flex: 0 0 0; order: 3; display: flex; position: relative; transition: flex-basis .15s; width: 100%; user-select: none; overflow: hidden; } .audio-bar.in { flex-basis: 1.5em } .audio-icon { z-index: 4; flex: 0 0 1.5em; } .audio-icon:first-of-type { margin-left: .25em } @media (max-width: 639px) { .audio-icon { flex-basis: 1.25em } } .audio-icon svg { fill: rgba(255,255,255,.55); height: 1.125em; width: 1.125em; margin: .0625em .125em; padding: .125em; pointer-events: none; } @media (max-width: 639px) { .audio-icon svg { height: 1em; width: 1em; margin: .125em } } .audio-icon:hover svg { fill: #fff } .audio-icon.active svg { fill: #fff; background: rgba(255,255,255,.3); border-radius: 4px; } .volume-slider { z-index: 4; height: .75em; transition: flex-basis .2s; flex: 0 0 0; margin: .375em 0; } .volume-slider.in { flex-basis: 4em; box-shadow: 0 0 0 1px #eee } .volume-slider-inner { background: #eee; height: .75em; } .audio-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.5em; color: #fff; flex: 1; z-index: 4; cursor: default; } .seekbar { position: absolute; left: 0; right: 0; bottom: 0; top: 0; transition: .2s; overflow: visible; } .seekbar-played { position: absolute; width: 0; background: #05a; height: 100%; z-index: 2; } .seekbar-loaded { position: absolute; width: 0; height: 100%; background: #282d38; z-index: 1; } .audio-bar .time { z-index: 4; text-align: right; margin-right: .25em; display: block; color: #999; line-height: 1.5em; cursor: default; } .time > * { pointer-events: none } .time-cur, .time-max { color: #fff } @media (max-width: 639px) { .time-max, .time-sep { visibility: hidden } } /* =============================== About box =============================== */ #about-box { background: #eee; border-radius: 6px; box-shadow: 0 8px 24px rgba(0,0,0,.3); color: #333; height: 150px; top: 50%; left: 50%; opacity: 0; visibility: hidden; position: fixed; transition: .15s, visibility 0s .15s; transform: translate(-50%, -50%); width: 300px; text-align: center; z-index: 64; } #about-box.in { opacity: 1; visibility: visible; transition: .15s } #about-title { font-size: 1.3em; padding: .5em 0 .25em; } #about-engine { font-size: .8em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-bottom: .25em; } #about-copy { bottom: 0; font-size: .7em; margin-bottom: .2em; width: 300px; position: absolute; } #about-copy a { padding: 0 .3em; color: #000; border: 1px solid transparent; } #about-fork { font-size: .7em; color: #333; border-radius: .4em; } #about-fork .github { display: inline-block; vertical-align: middle; height: 1em; margin: 0 .25em .25em 0; } #about-fork:hover, #about-fork:hover svg, #about-copy a:hover { color: #05a; fill: #05a; border-radius: 4px; text-decoration: underline; } /* ================================= Prefs ================================ */ #prefs-box { background: #eee; border-radius: 6px; box-shadow: 0 8px 24px rgba(0,0,0,.3); color: #555; max-height: 95%; left: 50%; top: 50%; position: fixed; transition: .15s, visibility 0s .15s; transform: translate(-50%, -50%); z-index: 64; padding: .5em; overflow-y: auto; opacity: 0; visibility: hidden; } #prefs-box.in { opacity: 1; visibility: visible; transition: .15s } @media (min-width: 800px) { #prefs-box { width: 24em } } @media (max-width: 799px) { #prefs-box { width: 80% } } #prefs-box li:hover { background: #ddd; color: #000; } .list-prefs li { display: flex; padding: .125em .25em; border-radius: 3px } .list-prefs li:first-of-type { margin-top: 0 } .list-prefs label { display: inline-block; white-space: nowrap; line-height: 1.33em; flex: 1; } @media (max-width: 639px) { #prefs-box { font-size: .8em } .list-prefs li { flex-direction: column; height: auto; } .list-prefs label { width: 100%; text-align: center; margin-bottom: .25em; line-height: 1em; } .list-prefs select { width: 100%; margin-bottom: .25em; } } #prefs-box select { padding: 0 .25em; border-radius: 3px; border:none; color: #555; background-color: #fff; background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NDAiIGhlaWdodD0iNjQwIiB2aWV3Qm94PSIwIDAgNjQwIDY0MCI+PHBhdGggc3R5bGU9ImZpbGw6ICM5OTkiIGQ9Ik0zMjAgMGwtMTQ3LjIgMjMzLjZoMjk0LjM2OGwtMTQ3LjE2OC0yMzMuNnpNMzIwLjAzMiA2NDBsMTQ3LjE2OC0yMzMuNi0yOTQuNC0wLjAzMiAxNDcuMjMyIDIzMy42MzJ6Ij48L3BhdGg+PC9zdmc+"); background-size: 1em; background-repeat: no-repeat; background-position: right; flex: 1; appearance: none; } #prefs-box li:hover select { color: #000 } .list-user { padding:.3em 0 } .list-user:before { content: "Users"; border-bottom: 1px solid #aaa; margin-bottom: 1px; color: #333; padding: .125em; display: block; } .list-user li { padding: 0 .25em; line-height: 1.2em; display: flex; align-items: center; justify-content: center; } .username { flex: 1; display: flex; align-items: center; } .username svg { margin-right: .5rem } .delete-user { cursor: pointer; flex: 0 0 1rem; display: flex; } .delete-user:hover { color: #f44 } .add-user { cursor: pointer; text-align: center; user-select: none; } .add-user svg { height: .8em; width: .8em; margin-right: .25em; } /* ============================== Login Form =============================== */ #login-box { color: #aaa; background: #181818; border-radius: 6px; height: 11rem; width: 24rem; position: absolute; text-align: center; top: 50%; left: 50%; transform: translate(-50%, -50%); box-shadow: 0 .25rem 1rem #000; border: 1px solid #333; } @media (max-width: 639px), (max-height: 399px) { #login-box { border-radius: 0; box-shadow: none; font-size: .7em; top: 50%; left: 50%; height: 100%; width: 100%; margin: 0; } } #form { position: absolute; width: 100%; height: 100%; } #firstrun-title { font-size: 1.3em; margin-top: 1.5em; width: 100%; } #login-info-box { line-height: 2.25rem; background: #202020; color: #ddd; border-bottom: 1px solid #333; border-radius: 5px 5px 0 0; transition: background .2s; position: absolute; top: 0; width: 100%; } #login-info-box svg { width: 1.4rem; height: 1.4rem; display: inline-block; vertical-align: middle; margin: 0 .25rem; } #login-info-box.error { background: #911; color: #fff } @media (max-width: 639px), (max-height: 399px) { #login-info-box { border-radius: 0 } } #login-info { line-height: 1.75rem; } #fields { position: absolute; left: 50%; top: 50%; width: 80%; transform: translate(-50%, -50%); } #fields input { background: #202020; color: #fff; padding: 0 10px; height: 2rem; width: 100%; border-radius: 3px; border: 1px solid #383838; } #fields input::placeholder { color: #666; opacity: 1 } #fields input:focus { background: #282828; border: 1px solid #404040; } #fields input + input { margin-top: .3rem; } #login-box .bottom { position: absolute; bottom: 0; width: 100%; height: 2.25rem; display: flex; background: #202020; border-top: 1px solid #333; border-radius: 0 0 5px 5px; } #remember, #submit { line-height: 2.25rem; background: transparent; bottom: 0; cursor: pointer; user-select: none; white-space: nowrap; flex: 1; } #remember svg, #submit svg { display: inline-block; vertical-align: middle; position: relative; top: -.05rem; margin: 0 .25rem; } #remember:hover, #remember:focus, #submit:hover, #submit:focus { color: #fff } #submit svg { margin-right: .35em } #remember:not(.checked) svg { fill: transparent } @media (max-width: 639px), (max-height: 399px) { #remember, #submit { border-radius: 0; } } /* =============================== Info Box ================================ */ .info-box { border-radius: 6px; left: 50%; top: 50%; transform: translate(-50%, -50%); position: absolute; transition: .15s, visibility 0s .15s; z-index: 40; display: flex; opacity: 0; color: #333; background: #eee; visibility: hidden; box-shadow: 0 8px 24px rgba(0,0,0,.3); max-width: 96%; } .info-box.in { opacity: 1; visibility: visible; transition: .15s } .info-box .icon { display: flex; width: 3rem; border-radius: 6px 0 0 6px; justify-content: center; align-items: center; color: #fff; } .info-box.link .icon { background: #05a } .info-box.error .icon { background: #f44 } .info-box .icon svg { height: 2em; width: 2em; } .info-box.link span { display: none } .info-box.error .link-out { display: none } .info-box span, .link-out { color: #444; } .link-out { white-space: nowrap; padding: .25em .5rem; position: relative; } .link-out:after { content: ""; position: absolute; right: 0; top: 0; bottom: 0; width: .5rem; background: linear-gradient(to right, rgba(255,255,255,0), rgba(255,255,255,1)) } .info-box span { flex: 1; line-height: 1.25em; padding: .5em; } .info-box .link-out { flex: 1; line-height: 2.5em; overflow: hidden; backface-visibility: hidden; } .link-options { font-size: .8rem; white-space: nowrap; justify-content: center; background: #05a; color: #fff; border-radius: 0 6px 6px 0; cursor: pointer; user-select: none; } .info-box.error .link-options { display: none } .link-options svg { margin: 0 .5em 0 .75em; transition: opacity .2s; } .link-options .dl-link:not(.checked) svg { opacity: 0; } .link-options > div { height: 1.5rem; display: flex; align-items: center; padding-right: 1em; } .link-options > div:first-of-type { border-top-right-radius: 6px } .link-options > div:last-of-type { border-bottom-right-radius: 6px } .link-options > div:hover { background: rgba(255,255,255,.2); } /* =========================== Drop Select Menu ============================ */ #drop-select { position: fixed; left: 50%; top: 50%; width: 12em; z-index: 34; transform: translate(-50%, -50%); background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.3); border-radius: 6px; visibility: hidden; opacity: 0; display: flex; flex-direction: row; } #drop-select.in { opacity: 1; visibility: visible } #drop-select span { cursor: pointer; display: inline-block; text-align: center; flex: 1; line-height: 2em; } html:not(.mobile) #drop-select span:hover, html:not(.mobile) #drop-select span.active { background: #05a; color: #fff; } .movefile:hover, .movefile.active { border-radius: 6px 0 0 6px } .viewfile:hover, .viewfile.active { border-radius: 0 6px 6px 0 } .readonly .viewfile:hover, .readonly .viewfile.active { border-radius: 6px } @media (max-width: 639px) { #drop-select { flex-direction: column; width: 3.5em; font-size: .8em; line-height: 1.75em; } #drop-select .movefile:hover { border-radius: 6px 6px 0 0 } #drop-select .viewfile:hover { border-radius: 0 0 6px 6px } } /* ============================= Misc Elements ============================= */ .dropzone { position: absolute; left: 0; right: 0; bottom: 0; top: 1.5rem; z-index: 5; opacity: 0; visibility: hidden; pointer-events: none; background: rgba(0,0,0,.3); display: flex; align-items: center; justify-content: center; } @media (max-width: 639px) { .dropzone { top: 1.25rem } } .dropzone.in { opacity: .9; visibility: visible } .dropzone svg { height: 50%; width: 50%; fill: #fff; } .shake { animation: shake .3s } .no-transition { transition: none !important } .ce { position: fixed; overflow: hidden; width: 1px; height: 1px; right: -1px; bottom: -1px; } .pdf-container { display: flex; flex-direction: column; } .pdf-container > canvas { padding: 1px; }