/* =========================================================== GENERAL STYLES & BASE LAYOUT =========================================================== */ /* Reserve stable space for header + main */ :root { --header-h: 55px; } .header-container { min-height: var(--header-h); } img.logo{ width:50px; height:50px; display:block; } /* belt & suspenders for logo sizing */ /* Hidden-but-reserved utility (no clicks) */ .is-visually-hidden { visibility: hidden; pointer-events: none; } /* After auth: show app, hide login */ #fr-login-tip { min-height: 40px; /* reserve space */ max-width: 520px; margin: 8px auto 0; border-radius: 8px; padding: 10px 12px; text-align: left; margin-bottom: 10px; } .main-wrapper{ display:flex; /* or grid—flex is fine here */ gap:5px; align-items:flex-start; } /* GENERAL STYLES */ body { font-family: 'Roboto', sans-serif; background-color: #f5f5f5; margin: 0; transition: background-color 0.3s, color 0.3s; }body { letter-spacing: 0.2px; overflow-x: hidden; }.custom-dash { display: inline-block; transform: scaleX(1.5); padding-left: 2px !important; padding-right: 2px !important; }/* CONTAINER */ .container, .container-fluid { margin-top: 10px; padding-right: 4px !important; padding-left: 4px !important; }@media (min-width: 1300px) { .container-fluid { padding-left: 20px !important; padding-right: 20px !important; }} @media (max-width: 600px) { .zones-toggle { left: 85px !important; } } /* Optional tokens */ :root{ --filr-accent-500:#008CB4; /* base */ --filr-accent-600:#00789A; /* hover */ --filr-accent-700:#006882; /* active/border */ --filr-accent-ring:rgba(0,140,180,.4); } /* Button */ .btn-color-folder{ display:inline-flex; align-items:center; gap:6px; background:var(--filr-accent-500); border:1px solid var(--filr-accent-700); color:#fff; /* ensure white text */ } .btn-color-folder .material-icons{ color:currentColor; /* makes icon white too */ } .btn-color-folder:hover, .btn-color-folder:focus-visible{ background:var(--filr-accent-600); border-color:var(--filr-accent-700); } .btn-color-folder:active{ background:var(--filr-accent-700); } .btn-color-folder:focus-visible{ outline:2px solid var(--filr-accent-ring); outline-offset:2px; } /* Dark mode: start slightly deeper so it doesn't glow */ .dark-mode .btn-color-folder{ background:var(--filr-accent-600); border-color:var(--filr-accent-700); color:#fff; } .dark-mode .btn-color-folder:hover, .dark-mode .btn-color-folder:focus-visible{ background:var(--filr-accent-700); } /* =========================================================== HEADER & NAVIGATION =========================================================== */ /************************************************************/ /* FLEXBOX HEADER: LOGO, TITLE, BUTTONS FIXED */ /************************************************************/ .btn-login { margin-top: 10px; }/* Color overrides */ .orange-icon { color: #2196F3 !important; font-size: 34px !important; transform: translateY(-3px) !important; }.red-icon { width: 34px !important; display: inline-block !important; font-size: 34px !important; color: red !important; transform: translateY(-3px) !important; }.header-container { display: flex; align-items: center; justify-content: space-between; width: 100%; height: 55px; padding: 10px 20px; background-color: #2196F3; transition: background-color 0.3s ease; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); }.dark-mode .header-container { background-color: #1f1f1f; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.7); }#darkModeIcon { color: #fff; }.header-logo { max-height: 50px; width: auto; display: block; }.header-logo svg { height: 50px; width: auto; }.dark-mode header { background-color: #1f1f1f; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.7); }.header-left { display: flex; align-items: center; flex: 1; min-width: 100px; }.header-title { position: absolute; left: 50%; transform: translateX(-50%); text-align: center; white-space: nowrap; }.header-title h1 { font-size: 2rem; color: #fff; margin: 0; }.header-buttons { display: flex; align-items: center; justify-content: flex-end; flex: 1; min-width: 150px; gap: 0px; }.header-buttons button { background: none; border: none; cursor: pointer; color: #fff; transition: background-color 0.2s ease, box-shadow 0.2s ease; }.header-buttons button:not(#userDropdownToggle) { border-radius: 50%; padding: 9px; }#userDropdownToggle { border-radius: 4px !important; padding: 6px 10px !important; } #headerDropArea.header-drop-zone{ display: flex; justify-content: flex-end; /* buttons to the right */ align-items: center; min-height: 40px; /* so the label has room */ } .header-buttons button:hover { background-color: rgba(255, 255, 255, 0.2); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); color: #fff; }@media (max-width: 600px) { header { flex-direction: column; text-align: center; height: auto; padding: 10px; }.header-left, .header-buttons { justify-content: center; flex: unset; }.header-title { order: 1; width: 100%; margin-bottom: 10px; position: relative; left: auto; transform: none; }.header-buttons { order: 2; flex-wrap: wrap; justify-content: center; }} .header-buttons button i { font-size: 24px; }.dark-mode-toggle { background-color: #424242; border: 1px solid #fff; color: #fff; padding: 6px 14px; border-radius: 6px; cursor: pointer; font-size: 0.9em; transition: background 0.3s; }.dark-mode-toggle:hover { background-color: rgba(255, 255, 255, 0.2); }/* Folder Help Tooltip - Light Mode */ .folder-help-tooltip { background-color: #fff; color: #333; border: 1px solid #ccc; border-radius: 4px; padding: 10px; box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.2); }/* Folder Help Tooltip - Dark Mode */ .dark-mode .folder-help-tooltip { background-color: #333 !important; color: #eee !important; border: 1px solid #555 !important; }#folderHelpBtn i.material-icons.folder-help-icon { -webkit-text-fill-color: orange !important; color: inherit !important; padding-right: 10px !important; }.dark-mode #folderHelpBtn i.material-icons.folder-help-icon { -webkit-text-fill-color: #ffa500 !important; padding-right: 10px !important; }/************************************************************/ /* RESPONSIVE HEADER FIXES */ /************************************************************/ @media (max-width: 790px) { .header-container { flex-wrap: wrap; height: auto; }.header-title { text-align: center; flex-basis: 100%; order: 2; }.header-right { order: 3; flex-basis: 100%; justify-content: center; margin-top: 10px; }} @media (max-width: 600px) { .header-container { flex-direction: column; text-align: center; }.header-left { justify-content: center; flex-basis: 100%; }.header-title { font-size: 1.7rem; margin-top: 5px; }.header-buttons { flex-direction: row; justify-content: center; gap: 5px; margin-top: 5px; }} /* =========================================================== MATERIAL ICONS =========================================================== */ .material-icons { font-size: 24px; vertical-align: middle; color: white; }.material-icons.folder-icon, .material-icons.gallery-icon { color: black; margin-right: 5px; }.dark-mode .material-icons.folder-icon, .dark-mode .material-icons.gallery-icon { color: white; margin-right: 5px; }.remove-file-btn { width: 24px; height: 24px; line-height: 24px; text-align: center; background: transparent; border: none; color: red; cursor: pointer; margin-right: 0px; padding: 0; border-radius: 50%; transition: background-color 0.3s; }.remove-file-btn:hover { background-color: red; color: white; }/* =========================================================== FORMS & LOGIN =========================================================== */ .remember-me-container { margin-top: 20px !important; }#loginForm { margin: 0 auto; max-width: 400px; background: white; padding: 20px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); border-radius: 4px; }.dark-mode #loginForm { background-color: #2c2c2c; color: #e0e0e0; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(255, 255, 255, 0.2); }.dark-mode #loginForm input { background-color: #333; color: #fff; border: 1px solid #555; }.dark-mode #loginForm label { color: #ddd; }.dark-mode #loginForm button { background-color: #007bff; color: white; border: none; }.dark-mode #loginForm button:hover { background-color: #0056b3; }/* =========================================================== CARDS & MODALS =========================================================== */ #restoreFilesModal .modal-content { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; margin: 0 !important; z-index: 10000 !important; width: 95% !important; max-width: 800px !important; background: transparent !important; }/* Ensure the inner modal content still has a white background */ #restoreFilesModal .modal-content { background: #fff !important; padding: 20px; border: 1px solid #ccc; border-radius: 4px; }/* Override modal content for dark mode */ .dark-mode #restoreFilesModal .modal-content { background: #2c2c2c !important; border: 1px solid #555 !important; color: #f0f0f0; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.6) !important; }/* Custom styling for restore modal buttons */ #restoreSelectedBtn, #restoreAllBtn, #deleteTrashSelectedBtn, #deleteAllBtn, #closeRestoreModal { padding: 10px 20px !important; font-size: 16px !important; border-radius: 4px !important; transition: background-color 0.3s ease !important; border: none !important; margin-bottom: 10px !important; }/* Primary button - Restore Selected */ #restoreSelectedBtn { background-color: #007bff !important; color: #ffffff !important; }#restoreSelectedBtn:hover { background-color: #0056b3 !important; color: #ffffff !important; }/* Secondary button - Restore All */ #restoreAllBtn { background-color: #6c757d !important; color: #ffffff !important; }#restoreAllBtn:hover { background-color: #5a6268 !important; color: #ffffff !important; }/* Warning button - Delete Selected */ #deleteTrashSelectedBtn { background-color: #ffc107 !important; color: #212529 !important; }#deleteTrashSelectedBtn:hover { background-color: #e0a800 !important; color: #212529 !important; }/* Danger button - Delete All */ #deleteAllBtn { background-color: #dc3545 !important; color: #ffffff !important; }#deleteAllBtn:hover { background-color: #c82333 !important; color: #ffffff !important; }/* Dark button - Close Restore Modal */ #closeRestoreModal { background-color: #343a40 !important; color: #ffffff !important; }#closeRestoreModal:hover { background-color: #23272b !important; color: #ffffff !important; }.modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 1050; }.modal .modal-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: #fff; padding: 20px; border: 1px solid #ccc; border-radius: 4px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); max-width: 400px; width: 90%; overflow-y: auto; white-space: normal; word-wrap: break-word; overflow-wrap: break-word; height: auto; max-height: 90vh; }@media (max-width: 600px) { .modal .modal-content { transform: translate(-50%, -70%); }} .dark-mode .modal .modal-content { background-color: #2c2c2c; color: #e0e0e0; border-color: #444; }.editor-close-btn { position: absolute; top: 10px; right: 10px; display: flex; justify-content: center; align-items: center; font-size: 20px; font-weight: bold; cursor: pointer; z-index: 1000; width: 32px; height: 32px; border-radius: 50%; text-align: center; line-height: 30px; color: #ff4d4d; background-color: rgba(255, 255, 255, 0.9); border: 2px solid transparent; transition: all 0.3s ease-in-out; }.editor-close-btn:hover { color: white; background-color: #ff4d4d; box-shadow: 0px 0px 6px rgba(255, 77, 77, 0.8); transform: scale(1.05); }.dark-mode .editor-close-btn { background-color: rgba(0, 0, 0, 0.7); color: #ff6666; }.dark-mode .editor-close-btn:hover { background-color: #ff6666; color: #000; }/* Editor Modal */ .editor-modal { position: fixed; top: 2%; left: 5%; width: 90vw; height: 90vh; background-color: #fff; padding: 10px 20px 20px 20px; border: 1px solid #ccc; border-radius: 4px !important; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2) !important; z-index: 1100 !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; resize: both !important; }/* Editor Textarea */ .editor-textarea { flex-grow: 1 !important; width: 100% !important; resize: none !important; overflow: auto !important; }.dark-mode .editor-modal { background-color: #2c2c2c; color: #e0e0e0; border-color: #444; }@media (max-width: 768px) { .editor-modal { top: 0%; left: 0%; transform: translate(4%, 4%) !important; width: 90vw !important; max-height: 90vh; padding: 15px; min-width: auto !important; }} .editor-header { display: flex; align-items: center; justify-content: space-between; height: 33px; padding: 0 10px; margin-bottom: 7px; }.editor-title { margin: 0; line-height: 33px; }.dark-mode .editor-header { background-color: #2c2c2c; }@media (max-width: 600px) { .editor-title { font-size: 1.2rem; max-width: 95%; }} .editor-controls { text-align: right; margin-right: 30px; margin-bottom: 5px; }.editor-footer { margin-top: 5px; text-align: right; }/* =========================================================== LOGOUT & USER CONTROLS =========================================================== */ .modal-content .button-container { display: flex !important; justify-content: flex-end; gap: 5px; margin-top: 20px; }.logout-container { position: absolute; top: 10px; right: 10px; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }#uploadBtn { font-size: 20px; padding: 10px 22px; align-items: center; }.card-body.d-flex.flex-column { padding: 0.75rem !important; }#customChooseBtn { background-color: #9E9E9E; color: #fff; border: none; border-radius: 4px; padding: 8px 18px; font-size: 16px; cursor: pointer; white-space: nowrap; }@media (max-width: 768px) { #customChooseBtn { font-size: 14px; padding: 6px 14px; }} /* =========================================================== UPLOAD PROGRESS STYLES =========================================================== */ .pause-resume-btn { background: none; border: none; padding: 0; margin: 0; cursor: pointer; outline: none; margin-right: 5px; }.material-icons.pauseResumeBtn { color: black !important; padding: 4px; border-radius: 4px; transition: background-color 0.2s ease, color 0.2s ease; }.dark-mode .material-icons.pauseResumeBtn { color: white !important; }.dark-mode .material-icons.pauseResumeBtn:hover { background-color: rgba(255, 215, 0, 0.3); color: #fff; }body:not(.dark-mode) .material-icons.pauseResumeBtn:hover { background-color: rgba(0, 0, 0, 0.1); color: #000; }#uploadProgressContainer ul { list-style: none; padding: 0; margin: 0; }#uploadProgressContainer li { display: flex; align-items: center; margin-bottom: 10px; flex-wrap: wrap; }#uploadProgressContainer .file-preview { width: 32px !important; height: 32px !important; margin-right: 0; flex-shrink: 0; }#uploadProgressContainer .file-preview img { width: 32px !important; height: 32px !important; object-fit: cover; }#uploadProgressContainer .file-name { margin: 0 20px 0 2px; flex-grow: 1; word-break: break-word; }#uploadProgressContainer .progress { background-color: #e9ecef; border-radius: 5px; overflow: hidden; margin: 5px 0 10px; height: 24px; width: 250px; }#uploadProgressContainer .progress-bar { background-color: #007bff; height: 100%; line-height: 24px; color: #000; text-align: center; transition: width 0.4s ease; font-size: 0.9rem; }#uploadProgressContainer { margin-top: 20px; }/* =========================================================== RESPONSIVE ADJUSTMENTS (General Small Screens) =========================================================== */ @media (max-width: 768px) { .logout-container { position: static; align-items: flex-end; text-align: right; margin-top: 10px; }.logout-container button { width: auto; min-width: 120px; }.hide-small { display: none; }} @media (min-width: 768px) and (max-width: 991px) { .hide-medium { display: none !important; }} /* =========================================================== BUTTON STYLES (MATERIAL THEME) & Preserve Bootstrap colors =========================================================== */ .btn { font-size: 0.9rem; border: none; border-radius: 4px; padding: 8px 16px; cursor: pointer; white-space: nowrap; text-decoration: none; display: inline-block; }.btn:hover { opacity: 0.9; }#deleteSelectedBtn { background-color: #f44336; color: white; }#deleteSelectedBtn:hover { background-color: #d32f2f; }#copySelectedBtn { background-color: #9E9E9E; color: white; }#copySelectedBtn:hover { background-color: #757575; }#moveSelectedBtn { background-color: #ff9800; color: white; }#moveSelectedBtn:hover { background-color: #fb8c00; }#downloadZipBtn { background-color: #009688; color: white; }#downloadZipBtn:hover { background-color: #00796B; }#createBtn { background-color: #007bff; color: white; }.dark-mode .dropdown-menu { background-color: #2c2c2c !important; border-color: #444 !important; color: #e0e0e0!important; }.dark-mode .dropdown-menu .dropdown-item { color: #e0e0e0 !important; }.dropdown-item:hover { background-color: rgba(0,0,0,0.05); }.dark-mode .dropdown-item:hover { background-color: rgba(255,255,255,0.1); }#fileList button.edit-btn { background-color: #007bff; color: white; }.rename-btn .material-icons, #renameFolderBtn .material-icons { color: black !important; }/* =========================================================== FILE LIST & TABLE STYLES =========================================================== */ #fileList table { background-color: transparent; border-collapse: collapse !important; border-spacing: 0 !important; table-layout: auto !important; width: 100% !important; }#fileList table tr:nth-child(even) { background-color: transparent; } /* --- File list rows: match folder-tree hover/selected --- */ :root { --filr-row-hover-bg: rgba(122,179,255,.14); --filr-row-selected-bg: rgba(122,179,255,.24); } /* Let cell corners round like a pill */ #fileList table { border-collapse: separate; border-spacing: 0; } /* ===== Reset any conflicting backgrounds (Bootstrap etc.) inside #fileList only ===== */ #fileList table tbody tr, #fileList table tbody tr > td { background-color: transparent !important; } /* Kill Bootstrap hover/zebra just for this table */ #fileList table.table-hover tbody tr:hover > * { background-color: transparent !important; } #fileList table.table-striped > tbody > tr:nth-of-type(odd) > * { background-color: transparent !important; } /* ===== Our look, scoped to the table we tagged in JS ===== */ #fileList table.filr-table tbody tr, #fileList table.filr-table tbody td { transition: background-color .12s ease; } /* Hover (when not selected) */ #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td { background: var(--filr-row-hover-bg) !important; } /* Selected (support a few legacy class names just in case) */ #fileList table.filr-table tbody tr.selected > td, #fileList table.filr-table tbody tr.row-selected > td, #fileList table.filr-table tbody tr.selected-row > td, #fileList table.filr-table tbody tr.is-selected > td { background: var(--filr-row-selected-bg) !important; box-shadow: inset 0 0 0 1px rgba(122,179,255,.45); } /* Rounded “pill” ends on hover/selected */ #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td:first-child, #fileList table.filr-table tbody tr.selected > td:first-child, #fileList table.filr-table tbody tr.row-selected > td:first-child, #fileList table.filr-table tbody tr.selected-row > td:first-child, #fileList table.filr-table tbody tr.is-selected > td:first-child { border-top-left-radius: 8px; border-bottom-left-radius: 8px; } #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td:last-child, #fileList table.filr-table tbody tr.selected > td:last-child, #fileList table.filr-table tbody tr.row-selected > td:last-child, #fileList table.filr-table tbody tr.selected-row > td:last-child, #fileList table.filr-table tbody tr.is-selected > td:last-child { border-top-right-radius: 8px; border-bottom-right-radius: 8px; } /* Keyboard focus visibility */ #fileList table.filr-table tbody tr:focus-within > td { outline: 2px solid #8ab4f8; outline-offset: -2px; border-top-left-radius: 8px; border-bottom-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 8px; } .dark-mode #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td { background: var(--filr-row-hover-bg) !important; } .dark-mode #fileList table.filr-table tbody tr.selected > td, .dark-mode #fileList table.filr-table tbody tr.row-selected > td, .dark-mode #fileList table.filr-table tbody tr.selected-row > td, .dark-mode #fileList table.filr-table tbody tr.is-selected > td { background: var(--filr-row-selected-bg) !important; } #fileList table.filr-table { --bs-table-hover-color: inherit; --bs-table-striped-color: inherit; } #fileList table.table-hover tbody tr:hover, #fileList table.table-hover tbody tr:hover > td { color: inherit !important; } .dark-mode #fileList table.filr-table tbody td a, .dark-mode #fileList table.filr-table tbody td a:hover { color: inherit !important; } :root{ --filr-row-outline: rgba(122,179,255,.45); --filr-row-outline-hover: rgba(122,179,255,.35); } #fileList table.filr-table > :not(caption) > * > * { border: 0 !important; } #fileList table.filr-table td, #fileList table.filr-table th { box-shadow: none !important; } #fileList table.filr-table tbody tr.selected > td, #fileList table.filr-table tbody tr.row-selected > td, #fileList table.filr-table tbody tr.selected-row > td, #fileList table.filr-table tbody tr.is-selected > td { background: var(--filr-row-selected-bg) !important; box-shadow: inset 0 1px 0 var(--filr-row-outline), inset 0 -1px 0 var(--filr-row-outline); } #fileList table.filr-table tbody tr.selected > td:first-child, #fileList table.filr-table tbody tr.row-selected > td:first-child, #fileList table.filr-table tbody tr.selected-row > td:first-child, #fileList table.filr-table tbody tr.is-selected > td:first-child { box-shadow: inset 1px 0 0 var(--filr-row-outline), inset 0 1px 0 var(--filr-row-outline), inset 0 -1px 0 var(--filr-row-outline); border-top-left-radius: 8px; border-bottom-left-radius: 8px; } #fileList table.filr-table tbody tr.selected > td:last-child, #fileList table.filr-table tbody tr.row-selected > td:last-child, #fileList table.filr-table tbody tr.selected-row > td:last-child, #fileList table.filr-table tbody tr.is-selected > td:last-child { box-shadow: inset -1px 0 0 var(--filr-row-outline), inset 0 1px 0 var(--filr-row-outline), inset 0 -1px 0 var(--filr-row-outline); border-top-right-radius: 8px; border-bottom-right-radius: 8px; } #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td { background: var(--filr-row-hover-bg) !important; box-shadow: inset 0 1px 0 var(--filr-row-outline-hover), inset 0 -1px 0 var(--filr-row-outline-hover); } #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td:first-child { box-shadow: inset 1px 0 0 var(--filr-row-outline-hover), inset 0 1px 0 var(--filr-row-outline-hover), inset 0 -1px 0 var(--filr-row-outline-hover); border-top-left-radius: 8px; border-bottom-left-radius: 8px; } #fileList table.filr-table tbody tr:hover:not(.selected, .row-selected, .selected-row, .is-selected) > td:last-child { box-shadow: inset -1px 0 0 var(--filr-row-outline-hover), inset 0 1px 0 var(--filr-row-outline-hover), inset 0 -1px 0 var(--filr-row-outline-hover); border-top-right-radius: 8px; border-bottom-right-radius: 8px; } #fileList table.filr-table tbody tr:focus-within > td { outline: none; } #fileList table.filr-table tbody tr:focus-within > td:first-child, #fileList table.filr-table tbody tr:focus-within > td:last-child { outline: 2px solid #8ab4f8; outline-offset: -2px; } #fileListTitle { white-space: normal !important; word-wrap: break-word !important; overflow-wrap: break-word !important; max-width: 100% !important; display: block !important; text-align: left !important; }@media (max-width: 600px) { #fileListTitle { font-size: 1.4rem !important; }} #fileList table tr { box-shadow: none; border: none !important; outline: none !important; }.dark-mode #fileList table tr { box-shadow: none; border: none !important; outline: none !important; }#fileList table th, #fileList table td { border: none !important; white-space: nowrap; }#fileList table th[data-column="name"], #fileList table td:nth-child(2) { white-space: normal !important; word-wrap: break-word !important; overflow-wrap: break-word !important; word-break: break-word !important; text-align: left !important; line-height: 1.2 !important; vertical-align: middle !important; padding: 8px 10px !important; max-width: 250px !important; min-width: 120px !important; }@media (min-width: 500px) { #fileList table th[data-column="name"], #fileList table td:nth-child(2) { max-width: 250px !important; min-width: 120px !important; }} @media (min-width: 1024px) { #fileList table th[data-column="name"], #fileList table td:nth-child(2) { max-width: 280px !important; min-width: 120px !important; }} @media (min-width: 1440px) { #fileList table th[data-column="name"], #fileList table td:nth-child(2) { max-width: 510px !important; min-width: 240px !important; }} #fileList table th:not([data-column="name"]), #fileList table td:not(:nth-child(2)) { white-space: nowrap !important; }#fileList table td { vertical-align: middle !important; padding: 8px 10px !important; }:root { --file-row-height: 48px; }#fileList table.table tbody tr { height: auto !important; min-height: var(--file-row-height) !important; }#fileList table.table tbody td:not(.file-name-cell) { height: var(--file-row-height) !important; line-height: var(--file-row-height) !important; padding-top: 0 !important; padding-bottom: 0 !important; vertical-align: middle; }#fileList table.table tbody td.file-name-cell { white-space: normal; word-break: break-word; line-height: 1.2em !important; height: auto !important; }/* =========================================================== HEADINGS & FORM LABELS =========================================================== */ h2 { font-size: 2em; }.form-group { margin-bottom: 10px; }label { font-size: 0.9rem; }/* =========================================================== UTILITY CLASSES =========================================================== */ .align-items-center { display: flex; align-items: center; }.table th button { background: none; border: none; color: inherit; cursor: pointer; padding: 0; } #uploadForm { display: none; } .folder-actions { display: flex; justify-content: center; align-items: center; gap: 2px; flex-wrap: wrap; white-space: normal; margin: 0; /* no hacks needed */ } @media (min-width: 600px) and (max-width: 992px) { .folder-actions { white-space: nowrap; }} .folder-actions .btn { padding: 10px 12px; font-size: 0.85rem; line-height: 1.1; border-radius: 6px; }.folder-actions .material-icons { font-size: 24px; vertical-align: -2px; }.folder-actions .btn { font-size: 0.85rem; line-height: 1.1; border-radius: 6px; transform: scale(1); transform-origin: center; transition: transform 120ms ease, box-shadow 120ms ease; will-change: transform; }.folder-actions .material-icons { font-size: 20px; vertical-align: -2px; transition: transform 120ms ease; }.folder-actions .btn:hover, .folder-actions .btn:focus-visible { transform: scale(1.06); box-shadow: 0 2px 8px rgba(0,0,0,0.12); }.folder-actions .btn:hover .material-icons, .folder-actions .btn:focus-visible .material-icons { transform: scale(1.05); }.folder-actions .btn:focus-visible { outline: 2px solid rgba(33,150,243,0.6); outline-offset: 2px; }@media (prefers-reduced-motion: reduce) { .folder-actions .btn, .folder-actions .material-icons { transition: none; }} #moveFolderBtn { background-color: #ff9800; border-color: #ff9800; color: #fff; }.row-selected { background-color: #f2f2f2 !important; }.dark-mode .row-selected { background-color: #444 !important; color: #fff !important; }.custom-prev-next-btn { background-color: #e0e0e0; color: #000; border: none; padding: 6px 12px; font-size: 14px; border-radius: 4px; margin: 0 4px; cursor: pointer; }.custom-prev-next-btn:hover:not(:disabled) { background-color: #d5d5d5; }.dark-mode .custom-prev-next-btn { background-color: #444; color: #fff; border: none; }.dark-mode .custom-prev-next-btn:hover:not(:disabled) { background-color: #555; }#customToast { position: fixed; bottom: 20px; right: 20px; background: #333; color: #fff; padding: 15px; border-radius: 4px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3); opacity: 0; transition: opacity 0.5s ease; z-index: 9999; min-width: 250px; display: none; }#customToast.show { opacity: 0.9; }.button-wrap { display: flex; flex-wrap: nowrap; row-gap: 5px; column-gap: 0px; }@media (max-width: 500px) { .button-wrap { width: 100%; }} .button-wrap .btn { align-items: center; height: 32px !important; font-size: 14px !important; }.button-wrap .btn i.material-icons { font-size: 16px !important; line-height: 1 !important; vertical-align: middle !important; }#fileListContainer { border: 1px solid #e0e0e0; background: white; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); border-radius: 8px; max-width: 100%; padding-bottom: 10px !important; padding-left: 5px !important; padding-right: 5px !important; margin: 0 auto 20px; }@media (max-width: 750px) { #fileListContainer { width: 99%; }} .dark-mode #fileListContainer { background-color: #2c2c2c; color: #e0e0e0; border: 1px solid #444; border-radius: 8px; }#fileListContainer>h2, #fileListContainer>.file-list-actions, #fileListContainer>#fileList { margin-left: 15px; }@media (max-width: 768px) { #fileListContainer>h2, #fileListContainer>.file-list-actions, #fileListContainer>#fileList { margin-left: 1px; }} .col-12.col-md-4.text-left { margin-left: -17px; }@media (max-width: 600px) { .col-12.col-md-4.text-left { margin-left: -15px; }} #fileListTitle { font-size: 1.8em; margin-top: 10px; margin-bottom: 10px; }.file-list-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 20px; }.file-list-actions .action-btn { flex: 0 1 auto; }.modal-footer { margin-top: 15px; text-align: right; }.modal-input { width: 100%; margin-top: 10px; }@media (max-width: 600px) { #fileListTitle { font-size: 1.4em; }.file-list-actions { flex-direction: column; align-items: stretch; }.file-list-actions .action-btn { width: 100%; }.modal-content { width: 95%; margin: 20% auto; }} /* Desktop-only subtle grow on hover for toolbar actions */ @media (hover:hover) and (pointer:fine) { /* list your action IDs here */ #uploadBtn, #createBtn, #deleteSelectedBtn, #copySelectedBtn, #moveSelectedBtn, #downloadZipBtn, #extractZipBtn, #customChooseBtn { transition: transform 120ms ease, box-shadow 120ms ease; transform-origin: center; will-change: transform; } #uploadBtn:hover, #createBtn:hover, #deleteSelectedBtn:hover, #copySelectedBtn:hover, #moveSelectedBtn:hover, #downloadZipBtn:hover, #extractZipBtn:hover, #customChooseBtn:hover { transform: scale(1.08); box-shadow: 0 2px 10px rgba(0,0,0,.12); } #uploadBtn:active, #createBtn:active, #deleteSelectedBtn:active, #copySelectedBtn:active, #moveSelectedBtn:active, #downloadZipBtn:active, #extractZipBtn:active, #customChooseBtn:active { transform: scale(1.04); } /* keyboard focus parity */ #uploadBtn:focus-visible, #createBtn:focus-visible, #deleteSelectedBtn:focus-visible, #copySelectedBtn:focus-visible, #moveSelectedBtn:focus-visible, #downloadZipBtn:focus-visible, #extractZipBtn:focus-visible, #customChooseBtn:focus-visible { outline: none; transform: scale(1.08); box-shadow: 0 0 0 3px rgba(0,123,255,.25); } } /* Respect reduced motion */ @media (prefers-reduced-motion: reduce) { #uploadBtn, #createBtn, #deleteSelectedBtn, #copySelectedBtn, #moveSelectedBtn, #downloadZipBtn, #extractZipBtn, #customChooseBtn { transition: none !important; transform: none !important; box-shadow: none !important; } } /* File table: make action buttons smaller (scoped to this btn-group) */ .btn-group.btn-group-sm[aria-label="File actions"] .btn { padding: .2rem !important; /* tighter than BS .25/.5 */ width: 32px; /* square, compact */ height: 32px; line-height: 1 !important; display: inline-flex; align-items: center; justify-content: center; } /* shrink the icon glyphs */ .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-icons, .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-symbols-rounded { font-size: 20px !important; /* down from 24px */ line-height: 1 !important; } /* optional: tighten spacing between buttons */ .btn-group.btn-group-sm[aria-label="File actions"] .btn + .btn { margin-left: 2px; /* BS btn-group removes gaps; tweak if needed */ } /* subtle hover grow for file action buttons */ .btn-group.btn-group-sm[aria-label="File actions"] .btn { transition: transform 120ms ease, box-shadow 120ms ease; transform-origin: center; transform: translateZ(0); /* promote to its own layer for smoother anim */ will-change: transform; } .btn-group.btn-group-sm[aria-label="File actions"] .btn:hover { transform: scale(1.12); box-shadow: 0 0 0 2px rgba(0,0,0,0.04); /* optional halo */ } .btn-group.btn-group-sm[aria-label="File actions"] .btn:active { transform: scale(1.06); /* a touch smaller while pressed */ } /* keyboard focus should get the same love */ .btn-group.btn-group-sm[aria-label="File actions"] .btn:focus-visible { transform: scale(1.12); outline: none; /* remove default outline… */ box-shadow: 0 0 0 3px rgba(0,123,255,.25); /* …replace with accessible ring */ } /* (optional) slightly scale the glyph too — not required since parent scales */ .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-icons, .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-symbols-rounded { transition: transform 120ms ease; } .btn-group.btn-group-sm[aria-label="File actions"] .btn:hover .material-icons, .btn-group.btn-group-sm[aria-label="File actions"] .btn:hover .material-symbols-rounded { transform: scale(1.02); } /* respect reduced motion */ @media (prefers-reduced-motion: reduce) { .btn-group.btn-group-sm[aria-label="File actions"] .btn, .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-icons, .btn-group.btn-group-sm[aria-label="File actions"] .btn .material-symbols-rounded { transition: none !important; transform: none !important; } } /* =========================================================== FOLDER TREE STYLES =========================================================== */ /* Make breadcrumb links look clickable */ .breadcrumb-link { cursor: pointer; color: #007bff; text-decoration: underline; }.breadcrumb-link:hover { color: #0056b3; }.breadcrumb-link.selected { background-color: #e9ecef; font-weight: bold; padding: 2px 4px; border-radius: 4px; }.folder-tree { list-style-type: none; padding-left: 5px; margin: 0; }.folder-tree.collapsed { display: none; }.folder-tree.expanded { display: block; }.folder-item { margin: 2px 0; display: block; }.folder-toggle { cursor: pointer; margin-right: 5px; display: inline-block; width: 25px; text-align: right; }.folder-indent-placeholder { display: inline-block; width: 5px; }#folderTreeContainer { display: block; margin-left: 10px; }.folder-option { cursor: pointer; }.folder-option:hover { background-color: #f0f0f0; padding: 2px 4px; }.folder-option.selected { background-color: #d0d0d0; border-radius: 4px; padding: 2px 4px; }.dark-mode .folder-option.selected { background-color: #444; color: #fff; border-radius: 4px; padding: 2px 4px; }.dark-mode .folder-option:hover { background-color: #333; color: #fff; padding: 2px 4px; }/* =========================================================== FILE MANAGER INLINE STYLE REMOVAL - New Classes =========================================================== */ .image-modal-header { display: flex; align-items: center; justify-content: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; height: 25px; padding: 5px; margin-bottom: 10px; max-width: 90%; }.image-preview-modal-content { max-width: fit-content !important; max-height: 90vh; background: #fff; padding: 20px !important; border-radius: 4px; overflow: hidden !important; margin: auto; position: relative; display: inline-flex !important; flex-direction: column; align-items: center; justify-content: center; }@media (max-width: 600px) { .image-preview-modal-content { max-width: fit-content !important; padding: 5px !important; overflow: hidden !important; display: inline-flex !important; }} .dark-mode .image-preview-modal-content { background: #2c2c2c; border-color: #444; }.image-modal-img { max-width: 100%; max-height: 80vh; object-fit: contain; display: block; margin: 0 auto; }.close-image-modal { position: absolute; top: 10px; right: 15px; font-size: 24px; font-weight: bold; cursor: pointer; z-index: 1000; color: #ff4d4d; background-color: rgba(255, 255, 255, 0.8); border-radius: 50%; width: 32px; height: 32px; display: flex; justify-content: center; align-items: center; line-height: 1; padding-bottom: 2px; transition: all 0.3s ease-in-out; }.close-image-modal:hover { color: white; background-color: #ff4d4d; box-shadow: 0px 0px 6px rgba(255, 77, 77, 0.8); transform: scale(1.05); }.share-modal-content { width: 600px !important; max-width: 90vw !important; /* ensures it doesn't exceed the viewport width */ }.dark-mode .close-image-modal { background-color: rgba(0, 0, 0, 0.6); color: #ff6666; }.dark-mode .close-image-modal:hover { background-color: #ff6666; color: #000; }.dark-mode .image-preview-modal-content { background: #2c2c2c; border-color: #444; }.page-indicator { margin: 0 8px; white-space: nowrap; }.clickable-row { cursor: pointer; }.file-icon { color: #333; margin-right: 0; margin-left: 0; font-size: 32px; }.dark-mode .file-icon { color: white; }.bottom-select { display: inline-block; width: auto !important; font-size: 16px !important; height: 28px !important; padding: 2px 8px !important; line-height: 1.2 !important; border-radius: 4px !important; vertical-align: middle !important; }.label-inline { display: inline-flex; align-items: center; height: 28px !important; font-size: 16px !important; line-height: 1.2; margin-bottom: 0; }.items-per-page-text { display: inline-flex; align-items: center; height: 28px !important; font-size: 16px !important; line-height: 1.2; margin-left: 8px; }/* =========================================================== UPLOAD MODULE INLINE STYLE REMOVAL - New Classes =========================================================== */ .upload-instruction { margin-bottom: 10px; font-size: 16px; }.upload-file-row { display: flex; align-items: center; justify-content: center; word-break: break-word; }.file-info-wrapper { display: flex; flex-direction: column; justify-content: center !important; align-items: center !important; margin-top: 10px; }.file-info-container { display: flex; flex-wrap: wrap !important; justify-content: center !important; align-items: center; flex-wrap: wrap; gap: 5px; }.file-preview-container { display: flex !important; flex-wrap: wrap !important; justify-content: center !important; align-items: center !important; gap: 5px !important; max-width: 100% !important; text-align: center !important; }.file-preview-img { max-width: 100px; max-height: 100px; margin-right: 5px; justify-content: center !important; height: auto; display: block !important; }@media (max-width: 600px) { .file-preview-container { justify-content: center !important; }} .file-name-display { vertical-align: middle; margin-left: 5px; }.upload-progress-wrapper { max-height: 300px; overflow-y: auto; }.upload-progress-list { list-style: none; padding: 0; }.upload-progress-item { padding-top: 10px; margin-bottom: 10px; display: flex; align-items: center; flex-wrap: wrap; }.upload-progress-extra { padding-top: 10px; margin-bottom: 10px; display: flex; }.upload-file-name { flex-grow: 1; margin-left: 5px; word-break: break-word; }.upload-progress-div { flex: 0 0 250px; margin-left: 5px; }/* =========================================================== DARK MODE STYLES =========================================================== */ .dark-mode { background-color: #121212; color: #e0e0e0; }.dark-mode .container { background-color: transparent !important; }.dark-mode .btn-primary { background-color: #007bff; color: #fff; border-color: #007bff; }.dark-mode .btn-secondary { background-color: #6c757d; color: #fff; border-color: #6c757d; }.dark-mode .btn-danger { background-color: #dc3545; color: #fff; border-color: #dc3545; }.dark-mode .modal .modal-content, .dark-mode .editor-modal { background-color: #2c2c2c; color: #e0e0e0; border: 1px solid #444; }.dark-mode table { background-color: #2c2c2c; color: #e0e0e0; }.dark-mode #uploadProgressContainer .progress { background-color: #333; }.dark-mode #uploadProgressContainer .progress-bar { background-color: #007bff; color: #e0e0e0; }.dark-mode-toggle { background-color: transparent !important; border: 1px solid transparent !important; color: white !important; padding: 6px 12px !important; border-radius: 6px !important; font-size: 0.9em !important; font-weight: 500 !important; cursor: pointer !important; transition: background 0.3s, border 0.3s !important; }.dark-mode-toggle:hover { background-color: rgba(255, 255, 255, 0.15) !important; }.dark-mode-toggle:active { background-color: rgba(255, 255, 255, 0.25) !important; }.dark-mode .dark-mode-toggle { background-color: transparent !important; color: white !important; }.dark-mode .dark-mode-toggle:hover { background-color: rgba(255, 255, 255, 0.15) !important; }.dark-mode-toggle:focus { outline: none !important; box-shadow: none !important; }.folder-help-details { margin-top: 2px; font-size: 12px; color: #555; background-color: #f9f9f9; border: 1px solid #ddd; border-radius: 4px; padding: 10px; }.folder-help-summary { cursor: pointer; list-style: none; color: #000; background: #f9f9f9; padding: 2px; display: inline-block; }.folder-help-icon { vertical-align: middle; color: #d96601; font-size: 24px !important; }.folder-help-list { margin: 0; padding-left: 20px; }.dark-mode .folder-help-details { color: #ddd; background-color: #2c2c2c; border-color: #444; }.dark-mode .folder-help-summary { color: #ddd; background: #2c2c2c; }.dark-mode .folder-help-icon { color: #f6a72c; font-size: 20px; }.dark-mode .CodeMirror { background: #1e1e1e !important; color: #ffffff !important; }.dark-mode .CodeMirror-cursor { border-left: 2px solid #ffffff !important; }.dark-mode .CodeMirror-gutters { background: #252526 !important; border-right: 1px solid #444 !important; }.dark-mode .CodeMirror-linenumber { color: #aaaaaa !important; }.dark-mode .CodeMirror-selected { background: rgba(255, 255, 255, 0.2) !important; }.dark-mode .CodeMirror-matchingbracket { background-color: rgba(255, 255, 255, 0.1) !important; border-bottom: 1px solid #ffffff !important; }.zoom_in, .zoom_out, .rotate_left, .rotate_right { background: rgba(80, 80, 80, 0.6) !important; border: none !important; color: white !important; cursor: pointer !important; border-radius: 4px !important; transition: background 0.3s ease, box-shadow 0.3s ease !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) !important; transform: translateY(-10px); }.gallery-nav-btn { background: rgba(80, 80, 80, 0.6) !important; border: none !important; color: white !important; font-size: 48px !important; cursor: pointer !important; padding: 10px 15px !important; border-radius: 4px !important; transition: background 0.3s ease, box-shadow 0.3s ease !important; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) !important; }.gallery-nav-btn:hover, .zoom_in:hover, .zoom_out:hover, .rotate_left:hover, .rotate_right:hover { background: rgba(80, 80, 80, 0.8) !important; box-shadow: 0 3px 6px rgba(0, 0, 0, 0.4) !important; }.drop-hover { background-color: #e0e0e0; border: 1px dashed #666; }.dark-mode .drop-hover { background-color: rgba(255, 255, 255, 0.1) !important; border-bottom: 1px dashed #ffffff !important; }#restoreFilesList li { display: flex !important; align-items: center !important; margin-bottom: 5px; }#restoreFilesList li input[type="checkbox"] { margin: 0 !important; transform: translateY(-3px) !important; }#restoreFilesList li label { margin-left: 8px !important; }.dark-mode #fileContextMenu { background-color: #2c2c2c !important; border: 1px solid #555 !important; color: #e0e0e0 !important; }.dark-mode #fileContextMenu div { color: #e0e0e0 !important; }#folderContextMenu { font-family: Arial, sans-serif; font-size: 14px; }.dark-mode #folderContextMenu { background-color: #2c2c2c; border-color: #555; color: #e0e0e0; }.drop-target-sidebar { display: none; background-color: #f8f9fa; border-right: 2px dashed #1565C0; margin-top: 10px; margin-left: 10px; }@media (min-width: 769px) { .drop-target-sidebar { display: block; }} .drop-target-sidebar.active, .drag-header.active { width: 350px; height: 750px; } /* Fixed-width sidebar (always 350px) */ #sidebarDropArea{ width: 350px; min-width: 350px; max-width: 350px; flex: 0 0 350px; box-sizing: border-box; } .main-column { flex: 1; transition: margin-left 0.3s ease; }#uploadFolderRow { display: flex; flex-wrap: nowrap; gap: 1rem; }@media (max-width: 768px) { #uploadFolderRow { gap: 0px; }} #leftCol, #rightCol { display: flex; justify-content: center; min-width: 370px; align-self: flex-start; }#leftCol { flex: 0 1 60%; }#rightCol { flex: 0 1 40%; }@media (max-width: 768px) { .main-wrapper { flex-direction: column; }.drop-target-sidebar { display: none !important; }#uploadFolderRow { flex-wrap: wrap; }#leftCol, #rightCol { flex: 0 1 100% !important; }#rightCol { margin-bottom: 0; }} #sidebarDropArea.highlight, #uploadFolderRow.highlight { border: 2px dashed #1565C0; background-color: #eef; }.drag-header { cursor: grab; user-select: none; position: relative; }.drag-header::after { content: '⋮⋮'; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 16px; color: #1565C0; pointer-events: none; }.dragging { transform: scale(1.05); box-shadow: 0 20px 30px rgba(0, 0, 0, 0.3); transition: transform 0.2s ease, box-shadow 0.2s ease; z-index: 10000; }#uploadCard, #folderManagementCard { transition: transform 0.3s ease, opacity 0.3s ease; width: 100%; margin-bottom: 20px; min-height: 320px; }#uploadFolderRow.highlight { min-height: 320px; margin-bottom: 20px; }#sidebarDropArea, #uploadFolderRow { background-color: transparent; } .dark-mode #sidebarDropArea, .dark-mode #uploadFolderRow { background-color: transparent; }.dark-mode #sidebarDropArea.highlight, .dark-mode #uploadFolderRow.highlight { background-color: #333; border: 2px dashed #555; color: #fff; }.drop-target-sidebar.highlight { margin-top: 10px; }.drop-target-sidebar:not(.highlight) { border: none !important; }.dragging:focus { outline: none; }.card { background-color: #fff; color: #000; border: 1px solid #ddd; max-width: 900px; width: 100%; margin: 0 auto; }.dark-mode .card { background-color: #2c2c2c; color: #e0e0e0; border: 1px solid #444; }.card-header { font-size: 1.2rem; font-weight: bold; }.custom-folder-card-body { padding-top: 5px !important; padding-right: 0 !important; padding-left: 0 !important; }#addUserModal, #removeUserModal { z-index: 5000 !important; }#customConfirmModal { z-index: 12000 !important; }.admin-panel-content { background: #fff; color: #000; }.dark-mode .admin-panel-content { background: #2c2c2c; color: #e0e0e0; border: 1px solid #444; }.dark-mode .admin-panel-content input, .dark-mode .admin-panel-content select, .dark-mode .admin-panel-content textarea { background: #3a3a3a; color: #e0e0e0; border: 1px solid #555; }.dark-mode .admin-panel-content label { color: #e0e0e0; }#openChangePasswordModalBtn { width: max-content; padding: 6px 12px; font-size: 14px; }#changePasswordModal { z-index: 9999; }@keyframes spin { 0% { transform: rotate(0deg); }100% { transform: rotate(360deg); }} .spinning { animation: spin 1s linear infinite; }.download-spinner { font-size: 48px; animation: spin 2s linear infinite; color: var(--download-spinner-color, #000); }body:not(.dark-mode) { --download-spinner-color: #000; }.dark-mode { --download-spinner-color: #fff; }.rise-effect { transform: translateY(-20px); transition: transform 0.3s ease; }.toggle-modal-btn, .collapse-btn { background: none; border: none; outline: none; cursor: pointer; padding: 8px; font-size: 24px; color: #616161; border-radius: 50%; transition: background 0.3s ease; }.toggle-modal-btn:hover, .collapse-btn:hover { background: rgba(0, 0, 0, 0.1); }.toggle-modal-btn:focus, .collapse-btn:focus { outline: none; }.header-drop-zone { width: 66px; height: 36px; align-items: center; justify-content: center; gap: 5px; display: inline-flex; }.header-drop-zone.drag-active { border: 2px dashed #1565C0; background-color: #eef; background-color: transparent; transition: width 0.3s ease; box-sizing: border-box; }.dark-mode .header-drop-zone.drag-active { background-color: #333; border: 2px dashed #555; color: #fff; }.header-drop-zone.drag-active:empty::before { content: "Drop Zone"; font-size: 10px; padding-right: 6px; color: #aaa; }/* Disable text selection on rows to prevent accidental copying when shift-clicking */ #fileList tbody tr.clickable-row { -webkit-user-select: none; /* Safari */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* IE10+/Edge */ user-select: none; /* Standard */ }#fileSummary { color: black; }@media only screen and (max-width: 600px) { #fileSummary, #rowHeightSliderContainer, #viewSliderContainer { float: none !important; margin: 0 auto !important; text-align: center !important; display: block !important; }} #viewSliderContainer label, #viewSliderContainer span { line-height: 1; margin: 0; padding: 0; }.dark-mode #fileSummary { color: white; }#searchIcon { border-radius: 4px; padding: 4px 8px; }.dark-mode #searchIcon { background-color: #444; border: 1px solid #555; color: #fff; }.dark-mode #searchInput { background-color: #333; color: #e0e0e0; border: 1px solid #555; }.btn-icon { background: transparent; border: none; padding: 6px 8px; margin: 0; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s, color 0.2s; }.btn-icon .material-icons, #searchIcon .material-icons { font-size: 24px; line-height: 1; margin: 0; padding: 0; color: #333; }.btn-icon:hover, .btn-icon:focus { background: rgba(0, 0, 0, 0.1); outline: none; }.dark-mode .btn-icon .material-icons, .dark-mode #searchIcon .material-icons { color: #fff; }.dark-mode .btn-icon:hover, .dark-mode .btn-icon:focus { background: rgba(255, 255, 255, 0.1); }.user-dropdown { position: relative; display: inline-block; }.user-dropdown .user-menu { display: none; position: absolute; right: 0; margin-top: 0.25rem; background: var(--bs-body-bg, #fff); border: 1px solid #ccc; border-radius: 4px; min-width: 150px; box-shadow: 0 2px 6px rgba(0,0,0,0.2); z-index: 1000; }.user-dropdown .user-menu.show { display: block; }.user-dropdown .user-menu .item { padding: 0.5rem 0.75rem; cursor: pointer; white-space: nowrap; }.user-dropdown .user-menu .item:hover { background: #f5f5f5; }.user-dropdown .dropdown-caret { border-top: 5px solid currentColor; border-left: 5px solid transparent; border-right: 5px solid transparent; display: inline-block; vertical-align: middle; margin-left: 0.25rem; }.dark-mode .user-dropdown .user-menu { background: #2c2c2c; border-color: #444; }.dark-mode .user-dropdown .user-menu .item { color: #e0e0e0; }.dark-mode .user-dropdown .user-menu .item:hover { background: rgba(255,255,255,0.1); }.user-dropdown .dropdown-username { margin: 0 8px; font-weight: 500; vertical-align: middle; white-space: nowrap; } .folder-strip-container { display: flex; padding-top: 0px !important; flex-wrap: wrap; gap: 10px 14px; align-content: flex-start; /* multi-line wrap stays top-aligned */ padding: 6px 4px; } .folder-strip-container .folder-item { display: flex; padding-top: 0px !important; flex-direction: column; align-items: center; /* horizontal (cross-axis) center */ justify-content: center; /* vertical (main-axis) center */ min-width: 0; gap: 2px !important; padding: 6px 8px; box-sizing: border-box; border-radius: 10px; color: inherit; font-size: 0.85em; transition: transform .12s ease, box-shadow .12s ease, background-color .12s ease; } .folder-strip-container .folder-item .folder-svg { line-height: 0; margin-bottom: 0px; } .folder-strip-container .folder-item .folder-svg svg { width: 48px; height: 48px; display: block; } .folder-strip-container .folder-name { display: block; width: 100%; max-width: 100%; white-space: normal; overflow-wrap: anywhere; word-break: break-word; hyphens: auto; text-align: center; overflow: visible; text-overflow: clip; line-height: 1.2; } .folder-strip-container .folder-item:hover { transform: translateY(-1px) scale(1.04); background-color: rgba(0, 0, 0, 0.04); /* light mode */ box-shadow: 0 4px 10px rgba(0, 0, 0, .15); } /* Dark mode hover */ body.dark-mode .folder-strip-container .folder-item:hover { background-color: rgba(255, 255, 255, 0.06); box-shadow: 0 6px 16px rgba(0, 0, 0, .45); } /* Optional: keyboard focus */ .folder-strip-container .folder-item:focus-visible { outline: 2px solid #8ab4f8; outline-offset: 2px; } :root { --perm-caret: #444; }/* light */ .dark-mode { --perm-caret: #ccc; }/* dark */ #zonesToggleFloating, #sidebarToggleFloating { transition: transform 160ms cubic-bezier(.2,.0,.2,1), box-shadow 160ms cubic-bezier(.2,.0,.2,1), border-color 160ms cubic-bezier(.2,.0,.2,1), background-color 160ms cubic-bezier(.2,.0,.2,1); }:root { --toggle-icon-color: #333; }.dark-mode { --toggle-icon-color: #eee; }#zonesToggleFloating .material-icons, #zonesToggleFloating .material-icons-outlined, #sidebarToggleFloating .material-icons, #sidebarToggleFloating .material-icons-outlined { color: var(--toggle-icon-color); font-size: 22px; line-height: 1; display: block; }#zonesToggleFloating:hover, #sidebarToggleFloating:hover { transform: translateY(-1px); box-shadow: 0 6px 16px rgba(0,0,0,.14); border-color: #cfcfcf; }#zonesToggleFloating:active, #sidebarToggleFloating:active { transform: translateY(0) scale(.96); box-shadow: 0 3px 8px rgba(0,0,0,.12); }#zonesToggleFloating:focus-visible, #sidebarToggleFloating:focus-visible { outline: none; box-shadow: 0 6px 16px rgba(0,0,0,.14), 0 0 0 3px rgba(25,118,210,.25); /* soft brandy ring */ }#zonesToggleFloating::after, #sidebarToggleFloating::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: radial-gradient(circle, rgba(0,0,0,.12) 0%, rgba(0,0,0,0) 60%); transform: scale(0); opacity: 0; transition: transform 300ms ease, opacity 450ms ease; pointer-events: none; }#zonesToggleFloating:active::after, #sidebarToggleFloating:active::after { transform: scale(1.4); opacity: 1; }#zonesToggleFloating.is-collapsed, #sidebarToggleFloating.is-collapsed { background: #fafafa; border-color: #e2e2e2; } /* media modal polish */ .media-modal { background: var(--panel-bg, #121212); } .media-header-bar .btn { padding: 6px 10px; } .gallery-nav-btn { color: #fff; opacity: 0.85; } .gallery-nav-btn:hover { opacity: 1; transform: scale(1.05); } /* badges */ .status-badge { display: inline-block; margin-left: 6px; padding: 2px 6px; font-size: 11px; line-height: 1.3; border-radius: 999px; border: 1px solid rgba(255,255,255,.15); background: rgba(255,255,255,.08); color: #fff; } .status-badge.watched { border-color: rgba(34,197,94,.45); /* green-ish */ background: rgba(34,197,94,.15); } .status-badge.progress { border-color: rgba(234,88,12,.55); /* amber-ish */ background: rgba(234,88,12,.18); } #downloadProgressModal .modal-body, #downloadProgressModal .rise-modal-body, #downloadProgressModal .modal-content { min-height: 88px; overflow: hidden; } #downloadProgressText { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } #downloadProgressBarOuter { height: 10px; } /* ===== Folder Tree – theme + structure ===== */ #folderTreeContainer { /* Theme vars (light mode defaults) */ --filr-folder-front: #f6b84e; --filr-folder-back: #ffd36e; --filr-folder-stroke:#a87312; --filr-paper-fill: #ffffff; --filr-paper-stroke: #9fb3d6; /* slightly darker for sharper paper */ /* Sizes */ --row-h: 28px; --twisty: 24px; --twisty-gap: -5px; --icon-size: 24px; --icon-gap: 6px; --indent: 10px; } #folderTreeContainer .folder-item { position: static; padding-left: 0; } #folderTreeContainer .folder-item > .folder-tree { margin-left: var(--indent); } #folderTreeContainer .folder-row { position: relative; display: flex; align-items: center; min-height: var(--row-h); height: auto; padding-left: calc(var(--twisty) + var(--twisty-gap)); } /* Chevron + spacer (centered vertically) */ #folderTreeContainer .folder-row > button.folder-toggle, #folderTreeContainer .folder-row > .folder-spacer { position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: var(--twisty); height: var(--twisty); display: inline-flex; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 6px; background: transparent; cursor: pointer; } #folderTreeContainer .folder-row > button.folder-toggle::before { content: "▸"; font-size: calc(var(--twisty) * 0.8); line-height: 1; } #folderTreeContainer li[role="treeitem"][aria-expanded="true"] > .folder-row > button.folder-toggle::before, #rootRow[aria-expanded="true"] > button.folder-toggle::before { content: "▾"; } #folderTreeContainer .folder-row > button.folder-toggle:hover { border-color: color-mix(in srgb, #7ab3ff 35%, transparent); } /* Row "pill" that hugs content and wraps */ #folderTreeContainer .folder-option { display: inline-flex; flex: 0 1 auto; /* don't stretch full width */ align-items: center; gap: var(--icon-gap); height: auto; min-height: var(--row-h); padding: 0 8px; border-radius: 8px; line-height: 1.2; user-select: none; max-width: 100%; white-space: normal; /* allow wrapping */ } #folderTreeContainer .folder-option:hover { background: rgba(122,179,255,.14); } #folderTreeContainer .folder-option.selected { background: rgba(122,179,255,.24); box-shadow: inset 0 0 0 1px rgba(122,179,255,.45); } /* Label must be shrinkable so wrapping works */ #folderTreeContainer .folder-label { flex: 1 1 120px; min-width: 0; white-space: normal; overflow-wrap: anywhere; word-break: break-word; line-height: 1.2; } /* Icon box */ #folderTreeContainer .folder-icon { flex: 0 0 var(--icon-size); width: var(--icon-size); height: var(--icon-size); display: inline-flex; align-items: center; justify-content: center; } #folderTreeContainer .folder-icon svg { width: 100%; height: 100%; display: block; shape-rendering: geometricPrecision; } /* Make folder tree outline match folder strip */ #folderTreeContainer .folder-icon .folder-front, #folderTreeContainer .folder-icon .folder-back { fill: currentColor; stroke: var(--filr-folder-stroke); stroke-width: .5; paint-order: fill stroke; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; } #folderTreeContainer .folder-icon .folder-front { color: var(--filr-folder-front); } #folderTreeContainer .folder-icon .folder-back { color: var(--filr-folder-back); } #folderTreeContainer .folder-icon .paper { fill: var(--filr-paper-fill); stroke: var(--filr-paper-stroke); stroke-width: 1.5; paint-order: stroke fill; } #folderTreeContainer .folder-icon .paper-fold { fill: var(--filr-paper-stroke); } #folderTreeContainer .folder-icon .paper-line { stroke: var(--filr-paper-stroke); stroke-width: 1.5; stroke-linecap: round; fill: none; opacity: .95; } #folderTreeContainer .folder-icon .lip-highlight { stroke: #ffffff; stroke-opacity: .35; stroke-width: .9; fill: none; vector-effect: non-scaling-stroke; } #folderTreeContainer .folder-icon, #folderTreeContainer .folder-label { transform: none !important; } /* ===== File List Strip – color the shared folderSVG() ===== */ .folder-strip-container .folder-svg svg { display: block; shape-rendering: crispEdges; } .folder-strip-container .folder-item { /* defaults — overridden per-tile via inline CSS vars set in JS */ --filr-folder-front: #f6b84e; --filr-folder-back: #ffd36e; --filr-folder-stroke: #a87312; } .folder-strip-container .folder-svg .folder-front, .folder-strip-container .folder-svg .folder-back { fill: currentColor; stroke: var(--filr-folder-stroke); stroke-width: .5; paint-order: fill stroke; stroke-linejoin: round; stroke-linecap: round; } .folder-strip-container .folder-svg .folder-front { color: var(--filr-folder-front); } .folder-strip-container .folder-svg .folder-back { color: var(--filr-folder-back); } .folder-strip-container .folder-svg .paper { fill: #fff; stroke: #b2c2db; /* light mode */ stroke-width: 1; vector-effect: non-scaling-stroke; } .folder-strip-container .folder-svg .paper-fold { fill: #b2c2db; } .folder-strip-container .folder-svg .paper-line { stroke: #b2c2db; stroke-width: 1; stroke-linecap: round; fill: none; vector-effect: non-scaling-stroke; } .folder-strip-container .folder-svg .lip-highlight { stroke: rgba(255,255,255,.45); stroke-width: .8; fill: none; vector-effect: non-scaling-stroke; } #folderTreeContainer .folder-icon .folder-front, #folderTreeContainer .folder-icon .folder-back, .folder-strip-container .folder-svg .folder-front, .folder-strip-container .folder-svg .folder-back, #folderTreeContainer .folder-icon .lip-highlight, .folder-strip-container .folder-svg .lip-highlight { stroke-linejoin: round; stroke-linecap: round; } /* Make sure we’re not forcing crispEdges anywhere */ .folder-strip-container .folder-svg svg, #folderTreeContainer .folder-icon svg { shape-rendering: geometricPrecision !important; } @media (max-resolution: 1.5dppx) { #folderTreeContainer .folder-icon .folder-front, #folderTreeContainer .folder-icon .folder-back { stroke-width: .6; } } /* Scribble (the handwriting line) */ #folderTreeContainer .folder-icon .paper-ink, .folder-strip-container .folder-svg .paper-ink { stroke: #4da3ff; stroke-width: .9; stroke-linecap: round; stroke-linejoin: round; fill: none; opacity: .85; paint-order: normal; } /* tree @ 24px icon */ #folderTreeContainer .folder-icon .folder-front, #folderTreeContainer .folder-icon .folder-back, #folderTreeContainer .folder-icon .paper-line, #folderTreeContainer .folder-icon .paper-ink, #folderTreeContainer .folder-icon .lip-highlight { stroke-width: .6px; } /* strip @ 48px icon (2× bigger), halve stroke width to look the same */ .folder-strip-container .folder-svg .folder-front, .folder-strip-container .folder-svg .folder-back, .folder-strip-container .folder-svg .paper-line, .folder-strip-container .folder-svg .paper-ink, .folder-strip-container .folder-svg .lip-highlight { stroke-width: 1.1px; }