/*! * elFinder-Material-Theme (Gray) v2.1.15 (https://github.com/RobiNN1/elFinder-Material-Theme) * Copyright 2016-2023 Róbert Kelčák * Licensed under MIT (https://github.com/RobiNN1/elFinder-Material-Theme/blob/master/LICENSE) */ .elfinder { color: #546e7a; font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .elfinder.ui-widget.ui-widget-content { font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); border-radius: 0; border: 0; } .elfinder * { outline: 0 !important; } /** * Loading */ .elfinder-info-spinner, .elfinder-navbar-spinner, .elfinder-button-icon-spinner { background: url("../../material/images/loading.svg") center center no-repeat !important; width: 16px; height: 16px; } /** * Progress Bar */ @-webkit-keyframes progress-animation { from { background-position: 1rem 0; } to { background-position: 0 0; } } @keyframes progress-animation { from { background-position: 1rem 0; } to { background-position: 0 0; } } .elfinder-notify-progressbar { border: 0; } .elfinder-notify-progress, .elfinder-notify-progressbar { border-radius: 0; } .elfinder-notify-progress, .elfinder-resize-spinner { background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-size: 1rem 1rem; -webkit-animation: progress-animation 1s linear infinite; animation: progress-animation 1s linear infinite; background-color: #0275d8; height: 1rem; } /** * Toast Notification */ .elfinder .elfinder-toast > div { background-color: #323232 !important; color: #d6d6d6; box-shadow: none; opacity: inherit; padding: 10px 60px; } .elfinder .elfinder-toast > div button.ui-button { color: #fff; } .elfinder .elfinder-toast > .toast-info button.ui-button { background-color: #3498db; } .elfinder .elfinder-toast > .toast-error button.ui-button { background-color: #f44336; } .elfinder .elfinder-toast > .toast-success button.ui-button { background-color: #4caf50; } .elfinder .elfinder-toast > .toast-warning button.ui-button { background-color: #ff9800; } .elfinder-toast-msg { font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; font-size: 17px; } /** * For Ace Editor */ #ace_settingsmenu { font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6) !important; background-color: #1d2736 !important; color: #e6e6e6 !important; } #ace_settingsmenu, #kbshortcutmenu { padding: 0; } .ace_optionsMenuEntry { padding: 5px 10px; } .ace_optionsMenuEntry:hover { background-color: #111721; } .ace_optionsMenuEntry label { font-size: 13px; } #ace_settingsmenu input[type="text"], #ace_settingsmenu select { margin: 1px 2px 2px; padding: 2px 5px; border-radius: 3px; border: 0; background: rgba(9, 53, 121, 0.75); color: white !important; } /** * Icons */ @font-face { font-family: material; src: url("../../material/icons/material.eot?91804974"); src: url("../../material/icons/material.eot?91804974#iefix") format("embedded-opentype"), url("../../material/icons/material.woff2?91804974") format("woff2"), url("../../material/icons/material.woff?91804974") format("woff"), url("../../material/icons/material.ttf?91804974") format("truetype"), url("../../material/icons/material.svg?91804974#material") format("svg"); font-weight: normal; font-style: normal; } @media screen and (-webkit-min-device-pixel-ratio: 0) { @font-face { font-family: material; src: url("../../material/icons/material.svg?91804974#material") format("svg"); } } .elfinder .ui-icon, .elfinder-button-icon, .ui-widget-header .ui-icon, .ui-widget-content .ui-icon { font: normal normal normal 14px/1 material; background-image: inherit; text-indent: inherit; } .elfinder .ui-button-icon-only .ui-icon { font: normal normal normal 14px/1 material; background-image: inherit !important; text-indent: 0; font-size: 16px; } .elfinder-button-icon { background: inherit; } .elfinder-button-icon-home:before { content: '\e800'; } .elfinder-button-icon-back:before { content: '\e801'; } .elfinder-button-icon-forward:before { content: '\e802'; } .elfinder-button-icon-up:before { content: '\e803'; } .elfinder-button-icon-dir:before { content: '\e804'; } .elfinder-button-icon-opendir:before { content: '\e805'; } .elfinder-button-icon-reload:before { content: '\e806'; } .elfinder-button-icon-open:before { content: '\e807'; } .elfinder-button-icon-mkdir:before { content: '\e808'; } .elfinder-button-icon-mkfile:before { content: '\e809'; } .elfinder-button-icon-rm:before { content: '\e80a'; } .elfinder-button-icon-trash:before { content: '\e80b'; } .elfinder-button-icon-restore:before { content: '\e80c'; } .elfinder-button-icon-copy:before { content: '\e80d'; } .elfinder-button-icon-cut:before { content: '\e80e'; } .elfinder-button-icon-paste:before { content: '\e80f'; } .elfinder-button-icon-getfile:before { content: '\e810'; } .elfinder-button-icon-duplicate:before { content: '\e811'; } .elfinder-button-icon-rename:before { content: '\e812'; } .elfinder-button-icon-edit:before { content: '\e813'; } .elfinder-button-icon-quicklook:before { content: '\e814'; } .elfinder-button-icon-upload:before { content: '\e815'; } .elfinder-button-icon-download:before { content: '\e816'; } .elfinder-button-icon-info:before { content: '\e817'; } .elfinder-button-icon-extract:before { content: '\e818'; } .elfinder-button-icon-archive:before { content: '\e819'; } .elfinder-button-icon-view:before { content: '\e81a'; } .elfinder-button-icon-view-list:before { content: '\e81b'; } .elfinder-button-icon-help:before { content: '\e81c'; } .elfinder-button-icon-resize:before { content: '\e81d'; } .elfinder-button-icon-link:before { content: '\e81e'; } .elfinder-button-icon-search:before { content: '\e81f'; } .elfinder-button-icon-sort:before { content: '\e820'; } .elfinder-button-icon-rotate-r:before { content: '\e821'; } .elfinder-button-icon-rotate-l:before { content: '\e822'; } .elfinder-button-icon-netmount:before { content: '\e823'; } .elfinder-button-icon-netunmount:before { content: '\e824'; } .elfinder-button-icon-places:before { content: '\e825'; } .elfinder-button-icon-chmod:before { content: '\e826'; } .elfinder-button-icon-accept:before { content: '\e827'; } .elfinder-button-icon-menu:before { content: '\e828'; } .elfinder-button-icon-colwidth:before { content: '\e829'; } .elfinder-button-icon-fullscreen:before { content: '\e82a'; } .elfinder-button-icon-unfullscreen:before { content: '\e82b'; } .elfinder-button-icon-empty:before { content: '\e82c'; } .elfinder-button-icon-undo:before { content: '\e82d'; } .elfinder-button-icon-redo:before { content: '\e82e'; } .elfinder-button-icon-preference:before { content: '\e82f'; } .elfinder-button-icon-mkdirin:before { content: '\e830'; } .elfinder-button-icon-selectall:before { content: '\e831'; } .elfinder-button-icon-selectnone:before { content: '\e832'; } .elfinder-button-icon-selectinvert:before { content: '\e833'; } .elfinder-button-icon-logout:before { content: '\e85a'; } .elfinder-button-icon-opennew:before { content: '\e85b'; } .elfinder-button-icon-hide:before { content: '\e85d'; } .elfinder-button-search .ui-icon.ui-icon-search { font-size: 17px; } .elfinder-button-search .ui-icon:hover { opacity: 1; } .elfinder-navbar-icon { font: normal normal normal 16px/1 material; background-image: inherit !important; } .elfinder-navbar-icon:before { content: '\e804'; } .elfinder-droppable-active .elfinder-navbar-icon:before, .elfinder .ui-state-active .elfinder-navbar-icon:before, .elfinder .ui-state-hover .elfinder-navbar-icon:before { content: '\e805'; } .elfinder-navbar-root-local .elfinder-navbar-icon:before { content: '\e83d' !important; } .elfinder-navbar-root-ftp .elfinder-navbar-icon:before { content: '\e823' !important; } .elfinder-navbar-root-sql .elfinder-navbar-icon:before { content: '\e83e' !important; } .elfinder-navbar-root-dropbox .elfinder-navbar-icon:before { content: '\e83f' !important; } .elfinder-navbar-root-googledrive .elfinder-navbar-icon:before { content: '\e840' !important; } .elfinder-navbar-root-onedrive .elfinder-navbar-icon:before { content: '\e841' !important; } .elfinder-navbar-root-box .elfinder-navbar-icon:before { content: '\e842' !important; } .elfinder-navbar-root-trash .elfinder-navbar-icon:before { content: '\e80b' !important; } .elfinder-navbar-root-zip .elfinder-navbar-icon:before { content: '\e85c' !important; } .elfinder-navbar-root-network .elfinder-navbar-icon:before { content: '\e823' !important; } .elfinder-places .elfinder-navbar-root .elfinder-navbar-icon:before { content: '\e825' !important; } .elfinder-navbar-arrow { background-image: inherit !important; font: normal normal normal 14px/1 material; font-size: 10px; padding-top: 3px; padding-left: 2px; color: #a9a9a9; } .elfinder .ui-state-active .elfinder-navbar-arrow { color: #fff; } .elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { content: '\e857'; } .elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow:before { content: '\e858'; } .elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow:before, .elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow:before { content: '\e851'; } .elfinder .elfinder-cwd table thead td.ui-state-hover{ color: #000 !important; } .elfinder .elfinder-cwd table thead td.ui-state-active { background: #737f86 !important; color: #fff !important; } .elfinder .elfinder-cwd table thead td { padding: 6px 12px !important; background: #d7d7d7 !important; } .elfinder-ltr .elfinder-cwd table td { text-align: left; } .elfinder .elfinder-cwd table td { padding: 4px 12px !important; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename { padding-left: 23px; } div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { font-size: 8px; margin-top: 5px; margin-right: 5px; } div.elfinder-cwd-wrapper-list .ui-icon-grip-dotted-vertical { margin: 2px; } .elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon, .elfinder-navbar-root-local .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon, .elfinder-navbar-root-ftp .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon, .elfinder-navbar-root-sql .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon, .elfinder-navbar-root-dropbox .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon, .elfinder-navbar-root-googledrive .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon, .elfinder-navbar-root-onedrive .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon, .elfinder-navbar-root-box .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon, .elfinder-navbar-root-trash .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon, .elfinder-navbar-root-zip .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon, .elfinder-navbar-root-network .elfinder-cwd-icon { background-image: inherit; } .elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, .elfinder-navbar-root-local .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, .elfinder-navbar-root-ftp .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, .elfinder-navbar-root-sql .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon:before, .elfinder-navbar-root-dropbox .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon:before, .elfinder-navbar-root-googledrive .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon:before, .elfinder-navbar-root-onedrive .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon:before, .elfinder-navbar-root-box .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, .elfinder-navbar-root-trash .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, .elfinder-navbar-root-zip .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, .elfinder-navbar-root-network .elfinder-cwd-icon:before { font-family: material; background-color: transparent; color: #525252; font-size: 55px; position: relative; top: -10px !important; padding: 0; display: contents !important; } .elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon:before, .elfinder-navbar-root-local .elfinder-cwd-icon:before { content: '\e83d'; } .elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon:before, .elfinder-navbar-root-ftp .elfinder-cwd-icon:before { content: '\e823'; } .elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon:before, .elfinder-navbar-root-sql .elfinder-cwd-icon:before { content: '\e83e'; } .elfinder-cwd-view-list .elfinder-navbar-roor-dropbox td .elfinder-cwd-icon:before, .elfinder-navbar-roor-dropbox .elfinder-cwd-icon:before { content: '\e83f'; } .elfinder-cwd-view-list .elfinder-navbar-roor-googledrive td .elfinder-cwd-icon:before, .elfinder-navbar-roor-googledrive .elfinder-cwd-icon:before { content: '\e840'; } .elfinder-cwd-view-list .elfinder-navbar-roor-onedrive td .elfinder-cwd-icon:before, .elfinder-navbar-roor-onedrive .elfinder-cwd-icon:before { content: '\e841'; } .elfinder-cwd-view-list .elfinder-navbar-roor-box td .elfinder-cwd-icon:before, .elfinder-navbar-roor-box .elfinder-cwd-icon:before { content: '\e842'; } .elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon:before, .elfinder-navbar-root-trash .elfinder-cwd-icon:before { content: '\e80b'; } .elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon:before, .elfinder-navbar-root-zip .elfinder-cwd-icon:before { content: '\e85c'; } .elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon:before, .elfinder-navbar-root-network .elfinder-cwd-icon:before { content: '\e823'; } .elfinder-dialog-icon { font: normal normal normal 14px/1 material; background: inherit; color: #524949; font-size: 37px; } .elfinder-dialog-icon:before { content: '\e843'; } .elfinder-dialog-icon-mkdir:before { content: '\e808'; } .elfinder-dialog-icon-mkfile:before { content: '\e809'; } .elfinder-dialog-icon-copy:before { content: '\e80d'; } .elfinder-dialog-icon-prepare:before, .elfinder-dialog-icon-move:before { content: '\e844'; } .elfinder-dialog-icon-upload:before, .elfinder-dialog-icon-chunkmerge:before { content: '\e815'; } .elfinder-dialog-icon-rm:before { content: '\e80a'; } .elfinder-dialog-icon-open:before, .elfinder-dialog-icon-readdir:before, .elfinder-dialog-icon-file:before { content: '\e807'; } .elfinder-dialog-icon-reload:before { content: '\e806'; } .elfinder-dialog-icon-download:before { content: '\e816'; } .elfinder-dialog-icon-save:before { content: '\e845'; } .elfinder-dialog-icon-rename:before { content: '\e812'; } .elfinder-dialog-icon-zipdl:before, .elfinder-dialog-icon-archive:before { content: '\e819'; } .elfinder-dialog-icon-extract:before { content: '\e818'; } .elfinder-dialog-icon-search:before { content: '\e81f'; } .elfinder-dialog-icon-loadimg:before { content: '\e846'; } .elfinder-dialog-icon-url:before { content: '\e81e'; } .elfinder-dialog-icon-resize:before { content: '\e81d'; } .elfinder-dialog-icon-netmount:before { content: '\e823'; } .elfinder-dialog-icon-netunmount:before { content: '\e824'; } .elfinder-dialog-icon-chmod:before { content: '\e826'; } .elfinder-dialog-icon-preupload:before, .elfinder-dialog-icon-dim:before { content: '\e847'; } .elfinder-contextmenu .elfinder-contextmenu-item span.elfinder-contextmenu-icon { font-size: 16px; } .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-contextsubmenu-item .ui-icon { font-size: 15px; } .elfinder-contextmenu .elfinder-contextmenu-item .elfinder-button-icon-link:before { content: '\e837'; } .elfinder .elfinder-contextmenu-extra-icon { margin-top: -6px; } .elfinder .elfinder-contextmenu-extra-icon a { padding: 5px; margin: -16px; } .elfinder-button-icon-link:before { content: '\e81e' !important; } .elfinder .elfinder-contextmenu-arrow { font: normal normal normal 14px/1 material; background-image: inherit; font-size: 10px !important; padding-top: 3px; } .elfinder .elfinder-contextmenu-arrow:before { content: '\e857'; } .elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { background-image: inherit; } .elfinder-quicklook .ui-resizable-se { background: inherit; } .elfinder-quicklook-navbar-icon { background: transparent; font: normal normal normal 14px/1 material; font-size: 24px; width: 24px; height: 24px; color: #fff; } .elfinder-quicklook-titlebar-icon { margin-top: -8px; } .elfinder-quicklook-titlebar-icon .ui-icon { border: 0; opacity: 0.8; font-size: 15px; padding: 1px; } .elfinder-quicklook-titlebar .ui-icon-circle-close, .elfinder-quicklook .ui-icon-gripsmall-diagonal-se { color: #f1f1f1; } .elfinder-quicklook-navbar-icon-prev:before { content: '\e848'; } .elfinder-quicklook-navbar-icon-next:before { content: '\e849'; } .elfinder-quicklook-navbar-icon-fullscreen:before { content: '\e84a'; } .elfinder-quicklook-navbar-icon-fullscreen-off:before { content: '\e84b'; } .elfinder-quicklook-navbar-icon-close:before { content: '\e84c'; } .elfinder .ui-button-icon { background-image: inherit; } .elfinder .ui-icon-search:before { content: '\e81f'; } .elfinder .ui-icon-closethick:before, .elfinder .ui-icon-close:before { content: '\e839'; } .elfinder .ui-icon-circle-close:before { content: '\e84c'; } .elfinder .ui-icon-gear:before { content: '\e82f'; } .elfinder .ui-icon-gripsmall-diagonal-se:before { content: '\e838'; } .elfinder .ui-icon-locked:before { content: '\e834'; } .elfinder .ui-icon-unlocked:before { content: '\e836'; } .elfinder .ui-icon-arrowrefresh-1-n:before { content: '\e821'; } .elfinder .ui-icon-plusthick:before { content: '\e83a'; } .elfinder .ui-icon-arrowreturnthick-1-s:before { content: '\e83b'; } .elfinder .ui-icon-minusthick:before { content: '\e83c'; } .elfinder .ui-icon-pin-s:before { content: '\e84d'; } .elfinder .ui-icon-check:before { content: '\e84e'; } .elfinder .ui-icon-arrowthick-1-s:before { content: '\e84f'; } .elfinder .ui-icon-arrowthick-1-n:before { content: '\e850'; } .elfinder .ui-icon-triangle-1-s:before { content: '\e851'; } .elfinder .ui-icon-triangle-1-n:before { content: '\e852'; } .elfinder .ui-icon-grip-dotted-vertical:before { content: '\e853'; } .elfinder-lock, .elfinder-perms, .elfinder-symlink { background-image: inherit; font: normal normal normal 18px/1 material; color: #4d4d4d; } .elfinder-na .elfinder-perms:before { content: '\e824'; } .elfinder-ro .elfinder-perms:before { content: '\e835'; } .elfinder-wo .elfinder-perms:before { content: '\e854'; } .elfinder-group .elfinder-perms:before { content: '\e800'; } .elfinder-lock:before { content: '\e84d'; } .elfinder-symlink:before { content: '\e837'; } .elfinder .elfinder-toast > div { font: normal normal normal 14px/1 material; } .elfinder .elfinder-toast > div:before { font-size: 45px; position: absolute; left: 5px; top: 15px; } .elfinder .elfinder-toast > .toast-info, .elfinder .elfinder-toast > .toast-error, .elfinder .elfinder-toast > .toast-success, .elfinder .elfinder-toast > .toast-warning { background-image: inherit !important; } .elfinder .elfinder-toast > .toast-info:before { content: '\e817'; color: #3498db; } .elfinder .elfinder-toast > .toast-error:before { content: '\e855'; color: #f44336; } .elfinder .elfinder-toast > .toast-success:before { content: '\e84e'; color: #4caf50; } .elfinder .elfinder-toast > .toast-warning:before { content: '\e856'; color: #ff9800; } .elfinder-drag-helper-icon-status { font: normal normal normal 14px/1 material; background: inherit; } .elfinder-drag-helper-icon-status:before { content: '\e824'; } .elfinder-drag-helper-move .elfinder-drag-helper-icon-status { -webkit-transform: rotate(180deg); transform: rotate(180deg); } .elfinder-drag-helper-move .elfinder-drag-helper-icon-status:before { content: '\e854'; } .elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { -webkit-transform: rotate(90deg); transform: rotate(90deg); } .elfinder-drag-helper-plus .elfinder-drag-helper-icon-status:before { content: '\e84c'; } /** * MIME Types */ .elfinder-cwd-view-list td .elfinder-cwd-icon { background-image: url("../../material/images/icons-small.svg"); } .elfinder-cwd-icon { background: url("../../material/images/icons-big.svg") 0 0 no-repeat; border-radius: 0; } .elfinder-cwd-icon:before { font-size: 10px; position: relative; top: 27px; left: inherit; padding: 1px; background-color: transparent; } .elfinder-cwd-icon-directory { background-position: 0 -50px; } .elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { background-position: 0 -100px; } .elfinder-cwd-icon-group { background-position: 0 -150px; } .elfinder-cwd-icon-application { background-position: 0 -200px; } .elfinder-cwd-icon-rtf, .elfinder-cwd-icon-rtfd, .elfinder-cwd-icon-text { background-position: 0 -250px; } .elfinder-cwd-icon-image { background-position: 0 -300px; } .elfinder-cwd-icon-audio { background-position: 0 -350px; } .elfinder-cwd-icon-video, .elfinder-cwd-icon-flash-video, .elfinder-cwd-icon-dash-xml, .elfinder-cwd-icon-vnd-apple-mpegurl, .elfinder-cwd-icon-x-mpegurl { background-position: 0 -400px; } .elfinder-cwd-icon-plain, .elfinder-cwd-icon-x-empty { background-position: 0 -450px; } .elfinder-cwd-icon-pdf { background-position: 0 -500px; } .elfinder-cwd-icon-vnd-ms-office { background-position: 0 -550px; } .elfinder-cwd-icon-x-msaccess { background-position: 0 -600px; } .elfinder-cwd-icon-x-msaccess:before { content: none !important; } .elfinder-cwd-icon-ms-excel, .elfinder-cwd-icon-vnd-ms-excel, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12 { background-position: 0 -650px; } .elfinder-cwd-icon-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before { content: none !important; } .elfinder-cwd-icon-vnd-ms-powerpoint, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12 { background-position: 0 -700px; } .elfinder-cwd-icon-vnd-ms-powerpoint:before, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before { content: none !important; } .elfinder-cwd-icon-msword, .elfinder-cwd-icon-vnd-ms-word, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12 { background-position: 0 -750px; } .elfinder-cwd-icon-msword:before, .elfinder-cwd-icon-vnd-ms-word:before, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before { content: none !important; } .elfinder-cwd-icon-vnd-oasis-opendocument-base, .elfinder-cwd-icon-vnd-oasis-opendocument-chart, .elfinder-cwd-icon-vnd-oasis-opendocument-database, .elfinder-cwd-icon-vnd-oasis-opendocument-formula, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, .elfinder-cwd-icon-vnd-oasis-opendocument-image, .elfinder-cwd-icon-vnd-openofficeorg-extension { background-position: 0 -800px; } .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template { background-position: 0 -850px; } .elfinder-cwd-icon-vnd-oasis-opendocument-presentation, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template { background-position: 0 -900px; } .elfinder-cwd-icon-vnd-oasis-opendocument-text, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template { background-position: 0 -950px; } .elfinder-cwd-icon-zip, .elfinder-cwd-icon-x-zip, .elfinder-cwd-icon-x-xz, .elfinder-cwd-icon-x-7z-compressed, .elfinder-cwd-icon-x-gzip, .elfinder-cwd-icon-x-tar, .elfinder-cwd-icon-x-bzip, .elfinder-cwd-icon-x-bzip2, .elfinder-cwd-icon-x-rar, .elfinder-cwd-icon-x-rar-compressed { background-position: 0 -1000px; } .elfinder-cwd-icon-postscript { background-position: 0 -1050px; } .elfinder-cwd-icon-vnd-adobe-photoshop { background-position: 0 -1100px; } .elfinder-cwd-icon-vnd-adobe-photoshop:before { content: none !important; } .elfinder-cwd-icon-x-shockwave-flash { background-position: 0 -1150px; } .elfinder-cwd-icon-vnd-android-package-archive { background-position: 0 -1200px; } .elfinder-cwd-icon-vnd-android-package-archive:before { content: none !important; } .elfinder-cwd-icon-x-c, .elfinder-cwd-icon-x-csrc, .elfinder-cwd-icon-x-chdr, .elfinder-cwd-icon-x-c--, .elfinder-cwd-icon-x-c--src, .elfinder-cwd-icon-x-c--hdr { background-position: 0 -1250px; } .elfinder-cwd-icon-css { background-position: 0 -1300px; } .elfinder-cwd-icon-html { background-position: 0 -1350px; } .elfinder-cwd-icon-x-jar, .elfinder-cwd-icon-x-java, .elfinder-cwd-icon-x-java-source { background-position: 0 -1400px; } .elfinder-cwd-icon-x-jar:before, .elfinder-cwd-icon-x-java:before, .elfinder-cwd-icon-x-java-source:before { content: none !important; } .elfinder-cwd-icon-javascript, .elfinder-cwd-icon-x-javascript { background-position: 0 -1450px; } .elfinder-cwd-icon-json { background-position: 0 -1500px; } .elfinder-cwd-icon-json:before { content: none !important; } .elfinder-cwd-icon-markdown, .elfinder-cwd-icon-x-markdown { background-position: 0 -1550px; } .elfinder-cwd-icon-markdown:before, .elfinder-cwd-icon-x-markdown:before { content: none !important; } .elfinder-cwd-icon-x-perl { background-position: 0 -1600px; } .elfinder-cwd-icon-x-php { background-position: 0 -1650px; } .elfinder-cwd-icon-x-python:after, .elfinder-cwd-icon-x-python { background-position: 0 -1700px; } .elfinder-cwd-icon-x-ruby { background-position: 0 -1750px; } .elfinder-cwd-icon-x-sh, .elfinder-cwd-icon-x-shellscript { background-position: 0 -1800px; } .elfinder-cwd-icon-sql, .elfinder-cwd-icon-x-sql, .elfinder-cwd-icon-x-sqlite3 { background-position: 0 -1850px; } .elfinder-cwd-icon-x-eps, .elfinder-cwd-icon-svg, .elfinder-cwd-icon-svg-xml { background-position: 0 -1900px; } .elfinder-cwd-icon-xml:after, .elfinder-cwd-icon-xml { background-position: 0 -1950px; } .elfinder-cwd-icon-zip:before, .elfinder-cwd-icon-x-zip:before { content: 'zip' !important; } .elfinder-cwd-icon-x-xz:before { content: 'xz' !important; } .elfinder-cwd-icon-x-7z-compressed:before { content: '7z' !important; } .elfinder-cwd-icon-x-gzip:before { content: 'gzip' !important; } .elfinder-cwd-icon-x-tar:before { content: 'tar' !important; } .elfinder-cwd-icon-x-bzip:before, .elfinder-cwd-icon-x-bzip2:before { content: 'bzip' !important; } .elfinder-cwd-icon-x-rar:before, .elfinder-cwd-icon-x-rar-compressed:before { content: 'rar' !important; } /** * Toolbar */ .elfinder-toolbar { background: #3b4047; border-radius: 0; border: 0; padding: 5px 0; } .elfinder-toolbar .elfinder-button-icon { font-size: 20px; color: #ddd; margin-top: -2px; } .elfinder-buttonset { border-radius: 0; border: 0; margin: 0 5px; height: 24px; } .elfinder .elfinder-button { background: transparent; border-radius: 0; cursor: pointer; color: #efefef; } .elfinder .elfinder-button-text { top: -3px; margin-left: 6px; } .elfinder-toolbar-button-separator { border: 0; } .elfinder-button-menu { border-radius: 2px; box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); border: none; margin-top: 5px; } .elfinder-button-menu-item { color: #666; padding: 6px 19px; } .elfinder-button-menu-item.ui-state-hover { color: #141414; background-color: #f5f4f4; } .elfinder-button-menu-item-separated { border-top: 1px solid #e5e5e5; } .elfinder-button-menu-item-separated.ui-state-hover { border-top: 1px solid #e5e5e5; } .elfinder .elfinder-button-search { margin: 0 10px; min-height: inherit; overflow: hidden; } .elfinder .elfinder-button-search .ui-icon { color: #fff !important; } .elfinder .elfinder-button-search input { background: rgba(40, 42, 45, 0.79); border-radius: 2px; box-sizing: content-box; border: 0; margin: 0; padding: 0 23px; height: 24px !important; color: #fff; } .elfinder .elfinder-button-search .elfinder-button-menu { margin-top: 4px; border: none; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); } .elfinder .elfinder-button-search-menu { border-radius: 0; top: 30px !important; } .elfinder .elfinder-button-search-menu .ui-button { padding: 0.4em 1em !important; } /** * Navbar */ .elfinder .elfinder-navbar { background: #535e64; box-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); border: none; } .elfinder .elfinder-navbar .elfinder-lock, .elfinder .elfinder-navbar .elfinder-perms, .elfinder .elfinder-navbar .elfinder-symlink { color: #1d1d1d; opacity: 0.8; } .elfinder-navbar-dir { color: #e6e6e6; cursor: pointer; border-radius: 2px; padding: 5px; border: none; } .elfinder-navbar-dir .elfinder-navbar-icon { color: #fff; } .elfinder-navbar-dir.ui-state-hover, .elfinder-navbar-dir.ui-state-active.ui-state-hover { background: #3c4448; color: #e6e6e6; border: none; } .elfinder-navbar-dir.ui-state-hover .elfinder-navbar-icon, .elfinder-navbar-dir.ui-state-active.ui-state-hover .elfinder-navbar-icon { color: #fff; } .elfinder-navbar .ui-state-active, .elfinder-disabled .elfinder-navbar .ui-state-active { background: #41494e; color: #e8e8e8 !important; border: none; } .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon, .elfinder-disabled .elfinder-navbar .ui-state-active.elfinder-navbar-dir .elfinder-navbar-icon { color: #e8e8e8 !important; } /** * Workzone */ .elfinder-workzone { background: #cdcfd4; } .elfinder-cwd-file { color: #555; } .elfinder-cwd-file.ui-state-hover, .elfinder-cwd-file.ui-selected.ui-state-hover { background: #4c5961; color: #ddd; } .elfinder-cwd-file.ui-selected { background: #455158; color: #555; } .elfinder-cwd-filename input, .elfinder-cwd-filename textarea { padding: 2px; border-radius: 2px !important; background: #fff; color: #222; } .elfinder-cwd-filename input:focus, .elfinder-cwd-filename textarea:focus { outline: none; border: 1px solid #555; } .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover, .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-disabled .elfinder-cwd table td.ui-state-hover, .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { background: transparent; color: #ddd; } .elfinder-cwd table { padding: 0; } .elfinder-cwd table thead td { padding: 5px 14px !important; } .elfinder-cwd table tr { border: 0 !important; } .elfinder-cwd table tr.ui-state-default, .elfinder-cwd table tr.ui-widget-content .ui-state-default { background: none; } .elfinder-cwd table tr .ui-state-hover { background: #4c5961; color: #ddd; } .elfinder-cwd.elfinder-table-header-sticky table { border: 0; } .elfinder-cwd .elfinder-lock, .elfinder-cwd .elfinder-perms, .elfinder-cwd .elfinder-symlink { color: #4d4d4d; } .elfinder-cwd-view-icons .elfinder-lock { top: 0; } .elfinder-cwd-view-list thead td .ui-resizable-handle { top: 3px; } .elfinder-cwd-view-list .elfinder-lock, .elfinder-cwd-view-list .elfinder-perms, .elfinder-cwd-view-list .elfinder-symlink { font-size: 14px; opacity: 0.7; } .elfinder-cwd-view-list .elfinder-perms { left: inherit; } #elfinder-elfinder-cwd-thead td, .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list td { background: #353b42; color: #ddd !important; height: 18px; } #elfinder-elfinder-cwd-thead td.ui-state-hover, .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list td.ui-state-hover, #elfinder-elfinder-cwd-thead td.ui-state-active, .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list td.ui-state-active { background: #2a2e34 !important; } #elfinder-elfinder-cwd-thead td.ui-state-active.ui-state-hover, .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list td.ui-state-active.ui-state-hover { background: #2e333a !important; } .elfinder .ui-selectable-helper { border: 1px solid #3b4047; background-color: rgba(104, 111, 121, 0.5); } .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash { background-color: #e4e4e4; } .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file { color: #333; } .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-state-hover, .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected.ui-state-hover { background: #4c5961; color: #ddd; } .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash .elfinder-cwd-file.ui-selected { background: #455158; color: #555; } .elfinder-info-title .elfinder-cwd-icon:before { top: 32px; display: block; margin: 0 auto; } .elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:before { background-color: #313131 !important; } .elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { left: inherit; background-color: #313131; } .elfinder-cwd-icon:before, .elfinder-quicklook .elfinder-cwd-icon:before, .elfinder-cwd-size1 .elfinder-cwd-icon:before, .elfinder-cwd-size2 .elfinder-cwd-icon:before, .elfinder-cwd-size3 .elfinder-cwd-icon:before, .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before, .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { top: 35px; left: 50% !important; position: relative !important; display: block !important; -webkit-transform: translateX(-50%); transform: translateX(-50%); max-width: 52px; color: #fff; } .elfinder .elfinder-cwd-view-icons .elfinder-cwd-bgurl:after, .elfinder .elfinder-quicklook-info-wrapper .elfinder-cwd-bgurl:after { display: none; } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { top: 53px; -webkit-transform: scale(1.32) translateX(-50%); transform: scale(1.32) translateX(-50%); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { top: 74px; -webkit-transform: scale(1.53) translateX(-50%); transform: scale(1.53) translateX(-50%); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { top: 87px; -webkit-transform: scale(2.22) translateX(-50%); transform: scale(2.22) translateX(-50%); } /** * Status Bar */ .elfinder .elfinder-statusbar { background: #3b4047; border-radius: 0; border: 0; color: #cfd2d4; padding-top: 5px; } .elfinder-path, .elfinder-stat-size { margin: 0 15px; } /** * Input & Select */ .elfinder input, .elfinder select { padding: 4px; color: #666; background: #fff; border-radius: 3px; font-weight: normal; border-color: #888; box-shadow: none !important; } .elfinder input.ui-state-hover, .elfinder select.ui-state-hover { background: #fff !important; color: #666 !important; } .elfinder input[type="checkbox"] { position: relative; height: initial; } .elfinder input[type="checkbox"]:after, .elfinder input[type="checkbox"]:focus:after { content: ""; display: block; width: 12px; height: 12px; border: 1px solid #707070; background-color: #fff; border-radius: 2px; } .elfinder input[type="checkbox"]:checked:before { content: ""; position: absolute; top: -3px; left: 6px; display: table; width: 4px; height: 12px; border: 2px solid #707070; border-top-width: 0; border-left-width: 0; -webkit-transform: rotate(45deg); transform: rotate(45deg); } /** * Buttons */ .elfinder .ui-button, .elfinder .ui-button:active, .elfinder .ui-button.ui-state-default { display: inline-block; font-weight: normal; text-align: center; vertical-align: middle; cursor: pointer; white-space: nowrap; border-radius: 3px; text-transform: uppercase; box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4) !important; transition: all 0.4s; background: #fff; color: #222; border: none; padding: 7px 6px; } .elfinder .ui-button .ui-icon, .elfinder .ui-button:active .ui-icon, .elfinder .ui-button.ui-state-default .ui-icon { color: #222; } .elfinder .ui-button:hover, .elfinder a.ui-button:active, .elfinder .ui-button:active, .elfinder .ui-button:focus, .elfinder .ui-button.ui-state-hover, .elfinder .ui-button.ui-state-active { background: #3498db !important; color: #fff !important; border: none; } .elfinder .ui-button:hover .ui-icon, .elfinder a.ui-button:active .ui-icon, .elfinder .ui-button:active .ui-icon, .elfinder .ui-button:focus .ui-icon, .elfinder .ui-button.ui-state-hover .ui-icon, .elfinder .ui-button.ui-state-active .ui-icon { color: #fff; } .elfinder .ui-button.ui-state-active:hover { background: #217dbb; color: #fff; border: none; } .elfinder .ui-button:focus { outline: none !important; } .elfinder .ui-controlgroup-horizontal .ui-button { border-radius: 0; border: 0; } .elfinder input:not([type="checkbox"]), .elfinder .elfinder-resize-preset-container .ui-button { height: 21px; } /** * Context Menu */ .elfinder .elfinder-contextmenu, .elfinder .elfinder-contextmenu-sub { border-radius: 2px; box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); border: none; } .elfinder .elfinder-contextmenu-separator, .elfinder .elfinder-contextmenu-sub-separator { border-top: 1px solid #e5e5e5; } .elfinder .elfinder-contextmenu-item { color: #666; padding: 5px 30px; } .elfinder .elfinder-contextmenu-item.ui-state-hover { background-color: #f5f4f4; color: #141414; } .elfinder .elfinder-contextmenu-item.ui-state-active { background-color: #2196f3; color: #fff; } /** * Dialogs */ .elfinder .elfinder-dialog { border-radius: 0; border: 0; box-shadow: 0 1px 30px rgba(0, 0, 0, 0.6); } .elfinder .elfinder-dialog .ui-dialog-content[id*="edit-elfinder-elfinder-"] { padding: 0; } .elfinder .elfinder-dialog .ui-tabs { border-radius: 0; border: 0; padding: 0; } .elfinder .elfinder-dialog .ui-tabs-nav { border-radius: 0; border: 0; background: transparent; border-bottom: 1px solid #ddd; } .elfinder .elfinder-dialog .ui-tabs-nav li { border: 0; font-weight: normal; background: transparent; margin: 0; padding: 0; } .elfinder .elfinder-dialog .ui-tabs-nav li a { padding: 7px 9px; } .elfinder .elfinder-dialog .ui-tabs-nav .ui-tabs-selected a, .elfinder .elfinder-dialog .ui-tabs-nav .ui-state-active a, .elfinder .elfinder-dialog .ui-tabs-nav li:hover a { box-shadow: inset 0 -2px 0 #3498db; color: #3498db; } .elfinder .elfinder-dialog .ui-tabs .elfinder-tabstop.ui-state-hover { background: transparent; box-shadow: inset 0 -2px 0 #3498db; color: #3498db; } .elfinder .elfinder-dialog label.ui-state-hover { background: transparent; } .elfinder .elfinder-dialog .ui-resizable-se { display: none; } .std42-dialog .ui-dialog-titlebar { background: #353b44; border-radius: 0; border: 0; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { border-color: inherit; transition: 0.2s ease-out; opacity: 0.8; color: #fff; width: auto; height: auto; font-size: 12px; padding: 3px; } .std42-dialog, .std42-dialog .ui-dialog-content, .std42-dialog.elfinder-bg-translucent, .std42-dialog.elfinder-bg-translucent .ui-widget-content { background-color: #fff; } .std42-dialog .ui-dialog-buttonpane button { margin: -1px 2px 2px; padding: 7px 6px; } .std42-dialog .ui-dialog-buttonpane button span.ui-icon { padding: 0; } .std42-dialog .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select { margin-top: 0; } .std42-dialog, .std42-dialog .ui-widget-content { background-color: #fff; } .elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon { background-color: #f44336; } .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon { background-color: #4caf50; } .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon { background-color: #ff9800; } .elfinder-dialog-title { color: #f1f1f1; } .elfinder .ui-widget-content { font-family: -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif; color: #546e7a; } .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { width: inherit; height: inherit; padding: 7px; margin-left: 5px; color: #222; box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.4); background: #fff; bottom: 4px; border-radius: 2px; } .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect.ui-state-hover { background: #3498db !important; color: #fff !important; outline: none; } .elfinder-upload-dialog-wrapper .ui-button { padding: 0.4em 3px; margin: 0 -15px 0 19px; } .elfinder-upload-dropbox { border: 2px dashed #bbb; } .elfinder-upload-dropbox:focus { outline: none; } .elfinder-upload-dropbox.ui-state-hover { background: #f1f1f1; border: 2px dashed #bbb; } .elfinder-dialog-resize .elfinder-resize-control-panel { margin-left: -5px; } .elfinder-dialog-resize .elfinder-resize-control-panel .ui-button { height: inherit; margin-bottom: 5px; } .elfinder-help * { color: #546e7a; } .elfinder-help a { color: #3498db; } .elfinder-help a:hover { color: #217dbb; } .elfinder .ui-slider.ui-slider-horizontal { height: 2px; border: 0; background-color: #bababa !important; } .elfinder .ui-slider .ui-slider-handle { background-image: none; background-color: #5d5858; border-radius: 50%; border: 0; margin-top: -3px; } .elfinder .ui-slider .ui-slider-handle.ui-state-hover { background: #5d5858 !important; box-shadow: none !important; border-radius: 50%; cursor: pointer; } /** * Quick Look */ .elfinder-quicklook { background: #232323; border-radius: 2px; } .elfinder-quicklook-navbar { height: 27px; } .elfinder-quicklook-titlebar { background: inherit; } .elfinder-quicklook-titlebar-icon, .elfinder-quicklook-titlebar-icon .ui-icon { background: transparent; color: #fff; } .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { border: inherit; opacity: inherit; border-radius: 4px; background: rgba(66, 66, 66, 0.73); } .elfinder .elfinder-navdock { border: 0; } .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close, .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize, .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full { background-image: none; } Rabby Wallet pour les utilisateurs NordVPN : Risques de détection et contournement géographique sécurisé – Crafted Web Campus

Un utilisateur en zone géographique restrictive se trouve face à un dilemme technique concret : gérer des actifs cryptographiques tout en maintenant une connexion sécurisée via VPN. La question n’est pas simplement de savoir si Rabby Wallet fonctionne avec NordVPN. C’est plutôt de comprendre comment les mécanismes de détection de phishing intégrés au portefeuille interagissent avec les routes réseau anonymisées, comment les adresses IP routées via VPN sont traitées par les services de sécurité tiers, et quels risques opérationnels émergent de cette combinaison.

Rabby Wallet, développé par DeBank, est un portefeuille non-custodial distribué sous forme d’extension navigateur et d’application de bureau, supportant 141+ blockchains EVM avec chiffrement des clés privées sur l’appareil de l’utilisateur. Mais un portefeuille sécurisé n’existe que dans le contexte complet de sa couche réseau. Un VPN change ce contexte en altérant l’identité réseau visible aux services externes, y compris les fournisseurs d’alertes de phishing sur lesquels repose la sécurité du portefeuille. Cette interaction crée des zones grises opérationnelles : une détection de phishing moins fiable, un taux potentiellement plus élevé de faux positifs, et des décisions de sécurité dont la logique peut sembler impénétrable à l’utilisateur.

Interface de Rabby Wallet affichant la gestion des actifs multi-chaînes et les contrôles de sécurité

Les fondations non-custodiales et l’architecture de détection

Rabby Wallet est construit sur le principe fondamental que les clés privées ne quittent jamais l’appareil de l’utilisateur. Cette architecture non-custodiale change le modèle de risque par rapport aux bourses centralisées : aucune entité tiers ne peut geler les fonds, les transférer sans consentement, ou maintenir des registres d’historique de transactions associés à un compte de plateforme. Le chiffrement local des clés signifie que même les développeurs de Rabby ne peuvent pas accéder aux actifs.

Cependant, cette isolation cryptographique locale ne s’étend pas automatiquement à chaque fonction du portefeuille. La phishing detection intégrée à Rabby fonctionne en contactant des services externes pour vérifier si une URL est connue comme dangereuse, si une transaction simule un phishing, ou si un site réseau a été signalé. Ces vérifications supposent une visibilité réseau directe ou du moins une identité réseau suffisamment stable pour que les bases de données de sécurité tierce puissent fonctionner de manière cohérente. Un VPN masque ou modifie cette identité réseau, ce qui change la façon dont ces services externes traitent les requêtes.

La simulation de transaction, une autre couche de sécurité de Rabby, examine les effets attendus d’une transaction avant qu’elle ne soit signée. Cette fonction peut identifier les tentatives d’approbation illimitée de tokens, les transferts d’actifs inattendus, ou les interactions défavorables avec des smart contracts. La simulation elle-même ne dépend pas de l’adresse IP, car elle s’appuie sur une exécution locale ou sur des nœuds RPC accessibles. Mais les mécanismes de détection de contrats malveillants ou de patterns suspects peuvent se fier à des listes noires maintenues sur des serveurs, qui peuvent elles-mêmes filtrer ou traiter différemment les requêtes provenant de points d’accès VPN identifiés.

En pratique, cela signifie qu’un utilisateur en zone restrictive utilisant Rabby Wallet avec NordVPN peut expérimenter trois catégories de comportements : une détection normale fonctionnant sans friction, une détection altérée provoquant des faux positifs ou des avertissements erratiques, ou une détection dégradée où les services tiers refusent simplement de répondre à une adresse IP routée via VPN. L’utilisateur ne peut pas toujours distinguer entre ces trois cas de son propre système.

Interaction entre l’anonymat VPN et l’identité de portefeuille

Un paradoxe central émerge rapidement : la raison même d’utiliser un VPN (masquer l’adresse IP réelle) entre en tension avec les mécanismes de sécurité qui supposent une identité réseau stable. Si un service de détection de phishing maintient une liste de contrats malveillants, de domaines frauduleux, ou de patterns de transaction suspects, cette liste est souvent compilée à partir de signalements agrégés, de données d’adresse IP suspectes, et de comportements de masse. Une adresse IP routée via un grand VPN public comme NordVPN appartient à un pool partagé avec des milliers d’autres utilisateurs. Les services de sécurité peuvent traiter ce pool entièrement différemment d’une adresse IP résidentielle unique.

Par exemple, si une adresse IP NordVPN a été utilisée par un attaquant pour diffuser du phishing ou exploiter un service Web3, cette IP peut figurer dans une liste noire ou être soumise à une détection amplifiée. Tous les autres utilisateurs accédant via la même IP subiront alors des avertissements plus agressifs, des délais de réponse accrus, ou des rejets purs et simples de requêtes. Inversement, certains services peuvent refuser catégoriquement de répondre à des requêtes détectées comme étant routées via VPN, supposant que cela indique une activité malveillante. Dans ce scénario, la secure wallet ne peut tout simplement pas contacter ses services de sécurité tiers pour valider les menaces.

L’authentification par adresse IP est une forme silencieuse d’identification. Si un utilisateur enregistre un compte de service Web3 sous sa véritable adresse IP, puis accède plus tard via NordVPN, les heuristiques de détection de fraude peuvent signaler ce changement comme suspect. Cela peut déclencher des demandes de vérification, des limitations temporaires, ou des blocages de compte qui compliquent l’accès aux fonds ou la participation aux transactions. Le problème est que beaucoup de ces mécanismes ne sont pas transparents : l’utilisateur voit une erreur, pas une explication.

La solution partielle consiste à utiliser le VPN de manière cohérente à partir du premier accès. Si un utilisateur configure Rabby Wallet sous une adresse IP VPN et continue à accéder depuis cette même adresse IP ou un petit ensemble d’adresses IP NordVPN, les systèmes de détection de fraude auront moins de raison de signaler des anomalies. Cela nécessite une discipline opérationnelle : jamais de commutation ad-hoc vers une adresse IP directe, jamais d’accès depuis des emplacements physiques différents sans maintenir un serveur VPN cohérent, jamais de modification du serveur VPN sans comprendre les conséquences.

Détection de phishing, géolocalisation et faux positifs

Les mécanismes de phishing detection utilisés par Rabby Wallet s’appuient sur plusieurs couches. La première est une vérification locale basée sur des listes de domaines malveillants connues, souvent mises à jour de manière décentralisée ou via des services comme la liste noire Google Safe Browsing. Ces listes ne sont généralement pas affectées par l’adresse IP de l’utilisateur, car elles jugent le domaine lui-même, pas celui qui le visite. La deuxième couche est la détection comportementale : si une transaction semble anormale (par exemple, une approbation illimitée suspecte, un transfert d’une grande quantité, une interaction avec un contrat rare), Rabby peut examiner son historique et signaler le modèle.

La troisième couche est la géolocalisation IP. Certains services de sécurité tiers consultent des bases de données de géolocalisation pour vérifier si une transaction provient d’une juridiction ou d’une région associée à des risques plus élevés. Si Rabby contacte un service de validation d’URL ou un oracle de sécurité depuis une adresse IP géolocalisée en Suisse (via NordVPN), mais que l’historique de l’utilisateur montre des transactions généralement initiées depuis la Chine, cet écart peut déclencher des alertes. Le VPN a effectivement donné au système un signal trompeur.

Les faux positifs deviennent alors une catégorie d’erreur courante. Un utilisateur légitime en zone restrictive utilisant un VPN peut voir Rabby signaler une transaction sûre comme suspecte, simplement parce que l’adresse IP du VPN est nouvelle pour le service de détection, ou parce qu’elle est partagée avec d’autres utilisateurs dont l’un a déjà commis une infraction. Le portefeuille n’approuvera pas automatiquement la transaction, mais il laissera l’utilisateur ignorer l’avertissement s’il le souhaite. Cela place la responsabilité de la discrimination sur l’utilisateur : est-ce une fausse alarme ou une menace réelle ?

Pour minimiser les faux positifs, un utilisateur devrait : premièrement, utiliser constamment le même serveur NordVPN ou un ensemble très petit de serveurs pour ne pas paraître continuellement changer de lieu ; deuxièmement, créer un historique de transactions sain et vérifiable depuis cet emplacement VPN avant de déplacer des actifs de valeur élevée ; troisièmement, accepter que certains services tiers refuseront de coopérer quelles que soient les mesures prises. L’avertissement de phishing n’est pas une interdiction absolue ; c’est un signal d’incertitude que l’utilisateur doit évaluer dans le contexte de ses intentions réelles.

Gestion des clés matérielles et des routes VPN

Rabby Wallet supporte l’intégration avec des portefeuilles matériels comme Ledger, Trezor et Keystone. Cette couche de sécurité supplémentaire signifie que même si l’appareil exécutant Rabby était compromis, les clés restent sur le dispositif matériel et les transactions doivent être approuvées physiquement. Cependant, l’utilisation d’un portefeuille matériel via un VPN introduit une nouvelle complexité : la communication entre l’ordinateur et le dispositif matériel doit rester locale et sûre, mais la communication entre Rabby et les services de simulation, de sécurité et de blockchain passe par le VPN.

Cela crée une asymétrie : un attaquant qui compromet la connexion VPN peut observer quelle adresse de portefeuille matériel est utilisée, voir les transactions en cours de signature, et potentiellement comprendre les intentions de transaction en analysant les requêtes RPC. Un portefeuille matériel ne protège pas contre la fuite d’information métadonnées au niveau du réseau. L’approche sécurisée consiste à traiter le VPN comme un masque d’identité, pas comme une garantie d’intégrité de la communication. Combiné avec un portefeuille matériel, le VPN réduit la surface d’attaque de la clé privée elle-même, mais il ne supprime pas la nécessité de vérifier les détails des transactions avant approbation sur le dispositif matériel.

Un utilisateur en zone restrictive utilisant Rabby avec Ledger et NordVPN devrait être conscient que chaque partie de cette pile ajoute du complexe. Le VPN ne peut pas authentifier le service qui demande une signature ; il peut seulement cacher l’adresse IP. Ledger ne peut pas savoir si la transaction affichée sur son écran a été altérée entre Rabby et le portefeuille matériel. Ensemble, ils forment une défense en profondeur, mais chaque couche a des limites définies. Le risque résiduel concerne les faux positifs de sécurité, la détection dégradée de phishing, et les tentatives de contournement sophistiquées qui ciblent la couche d’affichage plutôt que les clés elles-mêmes.

Revocation par lot et surveillance des contrats malveillants via VPN

Une fonctionnalité très utile de Rabby Wallet est la révocation par lot des approbations de tokens. Un utilisateur peut voir toutes les approbations accordées à des contrats et révoquer celles qui ne sont plus nécessaires en une seule transaction. Cette fonctionnalité dépend de la capacité à interroger des services de blockchain RPC pour récupérer un enregistrement complet des contrats approuvés. Lorsqu’un VPN est utilisé, cette interrogation passe toujours par le VPN, ce qui signifie que le fournisseur RPC voit une adresse IP NordVPN, pas l’adresse IP réelle de l’utilisateur.

Les fournisseurs RPC publics peuvent appliquer des limites de taux basées sur l’adresse IP. Si une adresse IP NordVPN a déjà atteint son quota de requêtes de la part d’autres utilisateurs, la requête de cet utilisateur peut être rejetée ou ralentie. Cela est généralement temporaire, mais cela peut perturber le flux de travail de révocation. Une solution consiste à utiliser un nœud RPC privé ou un fournisseur comme Infura ou Alchemy qui impose des limites de taux moins agressives aux adresses VPN. Rabby permet une configuration manuelle de points de terminaison RPC, ce qui offre à un utilisateur en zone restrictive la flexibilité de contourner ces limitations.

La détection des contrats malveillants introduit un problème similaire. Rabby utilise des bases de données d’adresses de contrats identifiées comme malveillantes, frauduleuses, ou non auditées. Si un utilisateur tente d’interagir avec l’un de ces contrats, Rabby signalera le risque. Comme pour la phishing detection, ce système repose sur des services tiers mis à jour régulièrement. Une adresse IP VPN peut être filtrée ou servie depuis un cache moins à jour que celui utilisé par les utilisateurs standard. Le résultat est que la protection contre les contrats malveillants peut être moins à jour ou moins fiable pour un utilisateur via VPN. L’utilisateur qui interagit intentionnellement avec un contrat connu mais risqué (par exemple, un pool de liquidités nouvellement lancé non audité) peut voir un avertissement ; celui qui ne comprend pas pourquoi l’avertissement apparaît peut ignorer par erreur une menace réelle.

Contournement géographique sécurisé : Design opérationnel

Un utilisateur en zone géographiquement restrictive qui souhaite utiliser Rabby Wallet de manière fiable doit concevoir son infrastructure opérationnelle en trois couches. La première couche est la sélection VPN : NordVPN, Mullvad, Proton VPN, et d’autres offrent des niveaux de transparence différents, des politiques de confidentialité, et des résistances à l’introspection. Pour une utilisation Web3, un VPN offrant une protection split-tunneling robuste est important, car certaines interactions (par exemple, la connexion à un hardware wallet via USB) doivent rester hors du VPN, tandis que d’autres (le trafic navigateur vers les dApps) doivent rester à l’intérieur.

La deuxième couche concerne la cohérence d’identité réseau. Un utilisateur ne devrait pas basculer entre plusieurs serveurs VPN, utiliser quelquefois une adresse IP directe, et passer à un VPN la prochaine fois. Cette inconstance crée une cascade de signalements de sécurité. À la place, sélectionnez un serveur VPN ou un petit cluster de serveurs et utilisez-les exclusivement pour Rabby Wallet. Acceptez que cet emplacement VPN géolocalisé peut être très éloigné de votre situation géographique réelle. Les services de sécurité tiers verront probablement cette incohérence, mais une fois établie une trace cohérente, les faux positifs diminueront.

La troisième couche concerne la connaissance des limites. Acceptez qu’avec un VPN, une détection d’adresse de phishing moins fiable, des délais RPC augmentés, et potentiellement des refus de service de la part de certains fournisseurs. Testez toutes les fonctions importantes (transaction simulation, revocation par lot, affichage d’NFT) sur une petite quantité d’actifs avant d’utiliser Rabby pour des transactions de haute valeur. Gardez une sauvegarde détaillée de votre phrase de récupération dans un endroit physique sécurisé, complètement séparé de tout appareil connecté à Internet, y compris celui qui exécute Rabby. Si vous devez accéder à des fonds en situation d’urgence, vous aurez besoin de cette phrase pour restaurer le portefeuille sur un appareil différent ou via une infrastructure alternative.

Risques résiduels et chaînes d’attaque ciblées

Même avec une conception opérationnelle prudente, les risques résiduels subsistent. Une attaque ciblée contre un utilisateur en zone restrictive pourrait s’efforcer de compromettre la route VPN elle-même, interceptant les requêtes entre Rabby et les services de sécurité tiers. Cela ne ferait pas fuir les clés privées, qui restent chiffrées localement, mais pourrait permettre au attaquant de valider une fausse transaction ou de modifier les avertissements de phishing affichés. Un portefeuille matériel offre une protection partielle ici : même si l’écran du navigateur affiche une transaction altérée, l’affichage du portefeuille matériel lui-même devrait rester fiable si le canal de communication USB est sécurisé.

Un deuxième risque résiduel concerne l’authentification au niveau de la dApp. Lorsqu’un utilisateur se connecte à une application décentralisée via Rabby Wallet, cet acte de connexion peut être enregistré par la dApp avec l’adresse IP du VPN. Si une dApp maintient un registre d’adresses IP et de portefeuilles associés, cette métadonnée pourrait être ultérieurement utile à un adversaire tentant de vous relier à votre identité réelle, soit par corrélation avec d’autres sources de données, soit par attaque directe si la dApp est compromise. Cela ne peut pas être évité en utilisant Rabby, mais il est pertinent de reconnaître que chaque interaction dApp ajoute de l’information au monde.

Un troisième risque concerne la transition entre les États de sécurité. Si un utilisateur en zone restrictive utilise Rabby via NordVPN, accumule un historique de transactions et construit une réputation de sécurité tiers autour de cette identité VPN, puis sort physiquement de cette zone et tente d’accéder aux mêmes portefeuilles sans VPN, un changement dramatique d’adresse IP peut déclencher des blocages de sécurité ou une détection accrue. À l’inverse, si un utilisateur se connecte parfois via VPN et parfois directement, les services de sécurité tiers ne pourront jamais construire un profil cohérent. L’utilisateur doit accepter d’être à jamais une entité légèrement suspecte aux yeux des systèmes de détection de phishing.

Surveillance active des incidents et ajustement des tactiques

Un utilisateur qui opère sous une configuration VPN + Rabby Wallet en zone restrictive doit surveiller activement les signaux d’incident. Ces signaux incluent : des avertissements répétés de phishing sur des sites que vous connaissez et de confiance ; des taux de rejet RPC qui augmentent ou des délais d’attente réseau qui s’allongent ; des services de dApp qui cessent de répondre ou qui demandent une vérification supplémentaire ; une révocation de lot qui échoue sistématiquement. Chacun de ces signaux peut indiquer que l’adresse IP VPN a été mise en liste noire, que les services tiers refusent maintenant de la servir, ou que quelque chose de plus malveillant se produit.

La première réaction est souvent de changer de serveur VPN. Cela peut aider temporairement, en vous donnant une nouvelle adresse IP, mais cela réinitialise également l’historique de réputation. Vous serez à nouveau une entité nouvelle et potentiellement suspecte. Si les incidents persistent sur plusieurs serveurs VPN, le problème est probablement au niveau de l’application (votre appareil est peut-être compromis) ou au niveau des services tiers (qui filtrent maintenant agressivement tous les VPN). À ce stade, il devient nécessaire d’envisager une infrastructure alternative : un portefeuille matériel connecté via une autre machine, un nœud complet privé pour la vérification de transaction, ou même l’exploration d’autres chaînes ou portefeuilles avec des profils de détection différents.

La documentation des incidents aide également à créer une trace pour des examens futurs. Notez quand des avertissements se sont produits, sur quels sites, et si vous pensiez que c’était un faux positif ou une menace réelle. Au fil du temps, ce journal peut révéler des patterns. Si tous les avertissements proviennent de dApps d’un seul écosystème, le problème peut être spécifique à cet écosystème. Si les avertissements sont universels à toutes les dApps, c’est un signal plus grave. Un utilisateur qui comprend ses propres patterns peut prendre des décisions de sécurité plus éclairées que celui qui voit simplement chaque alerte comme un événement isolé.

Frequently asked questions

Questions fréquemment posées

Est-ce que Rabby Wallet fonctionne correctement avec NordVPN sans restriction ?

Rabby Wallet fonctionne techniquement avec NordVPN, car le portefeuille lui-même n’impose aucune vérification d’adresse IP. Cependant, les services de phishing detection et de sécurité tiers auxquels Rabby se fie peuvent traiter différemment ou ignorer les requêtes provenant d’adresses IP VPN identifiées. Utilisez un serveur VPN constant, testez les fonctions critiques sur de petites transactions d’abord, et comprenez que vous pouvez rencontrer plus d’avertissements ou de faux positifs qu’un utilisateur direct.

Un VPN peut-il aider à contourner la détection de phishing ou au contraire la rendre moins fiable ?

Un VPN ne contourne pas la phishing detection ; il peut la rendre moins fiable. Les services de détection de phishing reposent sur des adresses IP stables, la géolocalisation, et les enregistrements historiques d’adresses IP précédentes. Un VPN change votre adresse IP apparente, ce qui peut confondre les heuristiques d’authentification et entraîner des faux positifs, ou alternativement, faire que votre adresse IP soit déjà sur une liste noire en raison d’autres utilisateurs. Vous devez manuellement confirmer que les avertissements sont réels ou ignorables.

Quelle est la meilleure pratique pour utiliser Rabby Wallet de manière sécurisée depuis une zone géographiquement restrictive ?

Choisissez un serveur VPN spécifique et utilisez-le exclusivement. Établissez un historique de transactions sain et inoffensif avant de déplacer des actifs de grande valeur. Testez toutes les fonctionnalités (simulation de transactions, révocation, affichage d’NFT) avec de petits montants d’abord. Gardez une sauvegarde hors ligne de votre phrase de récupération. Acceptez que la détection de phishing soit moins fiable et révisez les avertissements manuellement dans le contexte de vos intentions réelles. Envisagez un portefeuille matériel pour les fonds de grande valeur.

Post a Comment

Your email address will not be published. Required fields are marked *