Files
FileRise/styles.css
2025-03-14 18:16:19 -04:00

1605 lines
35 KiB
CSS

/* ===========================================================
GENERAL STYLES & BASE LAYOUT
=========================================================== */
/* GENERAL STYLES */
body {
font-family: 'Roboto', sans-serif;
background-color: #f5f5f5;
margin: 0;
transition: background-color 0.3s, color 0.3s;
}
/* CONTAINER */
.container {
margin-top: 20px;
}
.container-fluid {
padding-left: 5px !important; /* Default padding for small screens */
padding-right: 5px !important;
margin-top: 20px; /* Restores space below the header */
}
/* Increase left/right padding for larger screens */
@media (min-width: 768px) {
.container-fluid {
padding-left: 50px !important;
padding-right: 50px !important;
}
}
@media (min-width: 1200px) {
.container-fluid {
padding-left: 100px !important; /* More space on extra-large screens */
padding-right: 100px !important;
}
}
/* ===========================================================
HEADER & NAVIGATION
=========================================================== */
/************************************************************/
/* FLEXBOX HEADER: LOGO, TITLE, BUTTONS FIXED */
/************************************************************/
/* 🔹 Header Container (Keeps Everything Aligned) */
.header-container {
display: flex;
align-items: center;
justify-content: space-between; /* Ensures logo-left, title-center, buttons-right */
width: 100%;
height: 80px;
padding: 10px 20px;
background-color: #2196F3; /* Light Mode */
transition: background-color 0.3s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
/* 🔹 Dark Mode */
body.dark-mode .header-container {
background-color: #1f1f1f;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.7);
}
/* 🔹 Logo (Left Side) */
.header-left {
display: flex;
align-items: center;
flex: 0 0 auto; /* Prevent it from growing */
}
/* 🔹 Make Logo Bigger */
.header-left img {
max-height: 70px; /* Previously 60px */
width: auto; /* Ensures aspect ratio stays correct */
}
.header-logo {
max-height: 50px;
width: auto;
display: block;
}
/* 🔹 Header Layout */
header {
display: flex;
align-items: center;
justify-content: space-between; /* Ensures left, center, right alignment */
width: 100%;
height: 80px;
padding: 0 20px;
background-color: #2196F3; /* Light mode */
transition: background-color 0.3s ease;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
/* 🔹 Dark Mode: Header */
body.dark-mode header {
background-color: #1f1f1f;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.7);
}
/* 🔹 Left Section (Logo) */
/* 🔹 Left Section (Logo) */
.header-left {
display: flex;
align-items: center;
flex: 1;
min-width: 100px;
}
/* 🔹 Title (Perfectly Centered) */
.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;
}
/* 🔹 Right Section (Buttons) */
.header-buttons {
display: flex;
align-items: center;
justify-content: flex-end;
flex: 1; /* Equal space to prevent shifting */
min-width: 150px; /* Prevent shrinking */
gap: 10px;
}
/* 🔹 Buttons */
.header-buttons button {
background: none;
border: none;
cursor: pointer;
padding: 10px;
border-radius: 50%;
color: #fff;
transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.header-buttons button:hover {
background-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
/* 🔹 Small Screens: Stack Layout */
@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 {
background: none;
border: none;
cursor: pointer;
padding: 10px;
border-radius: 50%;
color: #fff;
transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.header-buttons button i {
font-size: 24px; /* Ensures Material Icons show correctly */
}
.header-buttons button:hover {
background-color: rgba(255, 255, 255, 0.2);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}
/* 🔹 Dark Mode Toggle Button */
.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);
}
/************************************************************/
/* RESPONSIVE HEADER FIXES */
/************************************************************/
/* 🔹 Medium Screens */
@media (max-width: 900px) {
.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;
}
}
/* 🔹 Small Screens */
@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: 10px;
}
}
/* end of header */
/* ===========================================================
MATERIAL ICONS
=========================================================== */
.material-icons {
font-size: 24px;
vertical-align: middle;
color: white;
}
.material-icons.folder-icon {
color: black;
margin-right: 5px; /* adjust the value as needed */
}
body.dark-mode .material-icons.folder-icon {
color: white;
margin-right: 5px;
}
/* ===========================================================
FORMS & LOGIN
=========================================================== */
#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 for login form */
body.dark-mode #loginForm {
background-color: #2c2c2c; /* Dark background */
color: #e0e0e0; /* Light text */
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(255, 255, 255, 0.2);
}
/* Dark mode for input fields */
body.dark-mode #loginForm input {
background-color: #333;
color: #fff;
border: 1px solid #555;
}
/* Dark mode for labels */
body.dark-mode #loginForm label {
color: #ddd;
}
/* Dark mode for login button */
body.dark-mode #loginForm button {
background-color: #007bff; /* Keep Bootstrap blue button */
color: white;
border: none;
}
body.dark-mode #loginForm button:hover {
background-color: #0056b3; /* Darker blue on hover */
}
/* ===========================================================
CARDS & MODALS
=========================================================== */
/* Cards */
.card {
background-color: #fff;
color: #000;
border: 1px solid #ddd;
max-width: 900px;
width: 100%;
margin: 0 auto;
}
body.dark-mode .card {
background-color: #2c2c2c;
color: #e0e0e0;
border: 1px solid #444;
}
/* Modal & Editor Modal */
.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; /* Allow text wrapping */
word-wrap: break-word;
overflow-wrap: break-word;
height: auto; /* Let the modal height adjust based on content */
max-height: 90vh; /* But limit to 90% of the viewport height */
}
@media (max-width: 600px) {
.modal .modal-content {
transform: translate(-50%, -70%);
}
}
body.dark-mode .modal .modal-content {
background-color: #2c2c2c;
color: #e0e0e0;
border-color: #444;
}
.editor-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 5px 10px;
}
body.dark-mode .editor-header {
background-color: #2c2c2c;
}
/* Fully Centered Close Button with Slight X Adjustment */
.editor-close-btn {
position: absolute;
top: 10px;
right: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 20px; /* Keep it readable */
font-weight: bold;
cursor: pointer;
z-index: 1000;
/* Perfectly Sized Circular Button */
width: 32px;
height: 32px;
border-radius: 50%;
text-align: center;
/* Fix X alignment */
line-height: 30px; /* Slightly reduce so "X" moves up */
color: #ff4d4d;
background-color: rgba(255, 255, 255, 0.9);
border: 2px solid transparent;
transition: all 0.3s ease-in-out;
}
/* Hover Effect */
.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 Fix */
body.dark-mode .editor-close-btn {
background-color: rgba(0, 0, 0, 0.7);
color: #ff6666;
}
body.dark-mode .editor-close-btn:hover {
background-color: #ff6666;
color: #000;
}
/* Default Editor Modal */
.editor-modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(5%, 5%);
background-color: #fff;
padding: 20px;
border: 1px solid #ccc;
border-radius: 4px;
width: 50vw;
max-width: 90vw;
min-width: 400px;
height: 600px;
resize: both;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 1100;
display: flex;
flex-direction: column;
max-height: 90vh;
overflow: hidden;
}
/* Dark mode styling */
body.dark-mode .editor-modal {
background-color: #2c2c2c;
color: #e0e0e0;
border-color: #444;
}
/* 🔹 Small Screens: Adjust Position */
@media (max-width: 768px) {
.editor-modal {
top: 0%;
left: 0%;
transform: translate(4%, 4%) !important; /* Reset transform */
width: 90vw !important; /* Expand width */
max-height: 90vh;
padding: 15px;
min-width: auto !important; /* Remove min-width restriction */
}
}
.editor-title {
white-space: nowrap !important; /* Prevents wrapping */
overflow: hidden !important; /* Hides overflow */
text-overflow: ellipsis !important; /* Adds "..." when text is too long */
font-size: 1.5rem; /* Default font size */
max-width: 95%;
display: block; /* Ensures it's a block element for proper sizing */
}
@media (max-width: 600px) {
.editor-title {
font-size: 1.2rem; /* Smaller font size on small screens */
max-width: 95%; /* Ensures it doesn't overflow the container */
}
}
.editor-controls {
text-align: right;
margin-bottom: 5px;
}
.editor-textarea {
flex-grow: 1;
min-height: 5px !important; /* Allow shrinking */
height: auto !important; /* Let JavaScript control height */
max-height: 100vh !important; /* Prevent overflow */
resize: none;
overflow: auto;
}
.editor-footer {
margin-top: 5px;
text-align: right;
}
/* ===========================================================
LOGOUT & USER CONTROLS
=========================================================== */
.logout-container {
position: absolute;
top: 10px;
right: 10px;
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 5px;
}
#uploadBtn {
font-size: 16px;
padding: 10px 22px;
align-items: center;
}
#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
=========================================================== */
#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;
}
/* Specific Action Buttons */
#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;
}
#fileList button.edit-btn {
background-color: #4CAF50;
color: white;
}
#fileList button.edit-btn:hover {
background-color: #43A047;
}
/* ===========================================================
FILE LIST & TABLE STYLES
=========================================================== */
#fileList table {
background-color: transparent;
border-collapse: collapse !important;
border-spacing: 0 !important;
table-layout: auto !important; /* Ensures flexible column widths */
width: 100% !important;
}
#fileList table tr:nth-child(even) {
background-color: transparent;
}
#fileList table tr:hover {
background-color: #e0e0e0;
}
body.dark-mode #fileList table tr:hover {
background-color: #444;
}
#fileListTitle {
white-space: normal !important; /* Allow text to wrap */
word-wrap: break-word !important; /* Break long words */
overflow-wrap: break-word !important; /* Ensure compatibility */
max-width: 100% !important; /* Prevent it from going outside the container */
display: block !important; /* Ensure it behaves as a block element */
text-align: left !important; /* Keep it aligned properly */
}
/* Small screens: Reduce font size for better wrapping */
@media (max-width: 600px) {
#fileListTitle {
font-size: 1.4rem !important; /* Adjust size for smaller screens */
}
}
#fileList table tr {
box-shadow: none;
border: none !important;
outline: none !important;
}
body.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; /* Prevents wrapping for all other columns */
}
/* Ensure only File Name column wraps */
#fileList table th[data-column="name"],
#fileList table td:nth-child(2) {
white-space: normal !important; /* Allow wrapping */
word-wrap: break-word !important;
overflow-wrap: break-word !important;
word-break: break-word !important;
text-align: left !important;
line-height: 1.2 !important; /* Reduce spacing between lines */
padding: 8px 10px !important; /* Adjust padding for better fit */
/* Default (Small Screens) */
max-width: 200px !important;
min-width: 120px !important;
}
/* Medium Screens */
@media (min-width: 500px) {
#fileList table th[data-column="name"],
#fileList table td:nth-child(2) {
max-width: 250px !important;
min-width: 120px !important;
}
}
/* Large Screens */
@media (min-width: 1024px) {
#fileList table th[data-column="name"],
#fileList table td:nth-child(2) {
max-width: 280px !important;
min-width: 180px !important;
}
}
/* Larger Screens */
@media (min-width: 1440px) {
#fileList table th[data-column="name"],
#fileList table td:nth-child(2) {
max-width: 380px !important;
min-width: 180px !important;
}
}
/* Ensure all other columns stay in one line */
#fileList table th:not([data-column="name"]),
#fileList table td:not(:nth-child(2)) {
white-space: nowrap !important;
}
/* Reduce excessive row height */
#fileList table td {
vertical-align: middle !important; /* Keep content centered */
padding: 8px 10px !important; /* Reduce excess padding */
}
/* ===========================================================
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;
}
#loginForm,
#uploadForm {
display: none;
}
/* Add spacing below the row of cards */
#uploadFolderRow {
margin-bottom: 20px;
}
@media (max-width: 768px) {
#uploadFolderRow .col-md-6 {
margin-bottom: 15px; /* Adjust the spacing between stacked cards */
}
#uploadFolderRow .col-md-6:last-child {
margin-bottom: 0; /* Remove extra spacing from the last stacked card */
}
}
.card-header {
font-size: 1.2rem; /* Increase font size */
font-weight: bold; /* Make it bold */
}
.card-body .form-group {
margin-bottom: 5px !important;
}
#createFolderBtn {
margin-top: 0px !important;
}
.folder-actions {
display: flex;
flex-wrap: nowrap;
padding-left: 8px;
align-items: center;
white-space: nowrap;
}
@media (min-width: 600px) and (max-width: 992px) {
.folder-actions {
white-space: nowrap;
}
}
.row-selected {
background-color: #f2f2f2 !important;
}
body.dark-mode .row-selected {
background-color: #444 !important; /* Dark background */
color: #fff !important; /* White text for contrast */
}
.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;
}
body.dark-mode .custom-prev-next-btn {
background-color: #444; /* Darker background for dark mode */
color: #fff; /* White text for contrast */
border: none;
}
body.dark-mode .custom-prev-next-btn:hover:not(:disabled) {
background-color: #555; /* Slightly lighter background for hover effect */
}
.folder-option:hover {
background-color: #f0f0f0;
padding: 2px 4px;
}
.folder-option.selected {
background-color: #d0d0d0;
border-radius: 4px;
padding: 2px 4px;
}
body.dark-mode .folder-option.selected {
background-color: #444; /* a dark gray that stands out */
color: #fff; /* white text */
border-radius: 4px;
padding: 2px 4px;
}
body.dark-mode .folder-option:hover {
background-color: #333; /* a dark gray background */
color: #fff; /* ensure the text remains white */
padding: 2px 4px;
}
.custom-folder-card-body {
padding-top: 5px !important;
}
/* Toast Notifications */
#customToast {
position: fixed;
top: 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: 1;
}
/* Button Wrap */
.button-wrap {
display: flex;
flex-wrap: wrap;
row-gap: 5px; /* Removes vertical gap */
column-gap: 0px; /* Optional: Keeps a small horizontal gap */
}
/* Center-align on small screens */
@media (max-width: 500px) {
.button-wrap {
width: 100%;
}
}
.button-wrap .btn {
align-items: center;
height: 32px !important; /* Adjust as needed to match Download/Rename */
font-size: 14px !important; /* Keeps text aligned */
}
/* Ensure Material Icons inside buttons do not enlarge buttons */
.button-wrap .btn i.material-icons {
font-size: 16px !important; /* Match text size */
line-height: 1 !important;
vertical-align: middle !important; /* Align icon with text */
}
/* File List Section */
#fileListContainer {
padding: 10px;
margin-top: 20px;
margin-bottom: 20px;
}
body.dark-mode #fileListContainer {
background-color: #2c2c2c;
color: #e0e0e0;
border: 1px solid #444; /* adjust border color if needed */
border-radius: 8px; /* adjust the roundness as desired */
padding: 10px;
margin-top: 20px;
}
#fileListContainer > h2,
#fileListContainer > .file-list-actions,
#fileListContainer > #fileList {
margin-left: 15px; /* Moves title, buttons, and file list to the right */
}
@media (max-width: 768px) {
#fileListContainer > h2,
#fileListContainer > .file-list-actions,
#fileListContainer > #fileList {
margin-left: 1px; /* Smaller adjustment for mobile */
}
}
.col-12.col-md-4.text-left {
margin-left: -15px; /* Adjust the value as needed */
}
@media (max-width: 600px) {
.col-12.col-md-4.text-left {
margin-left: -15px; /* Slightly adjust for smaller screens */
}
}
#fileListTitle {
font-size: 1.8em;
margin-bottom: 15px;
}
.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;
}
/* Responsive adjustments for File List */
@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;
}
}
/* ===========================================================
FOLDER TREE STYLES
=========================================================== */
.folder-tree {
list-style-type: none;
padding-left: 20px;
margin: 0;
}
.folder-tree.collapsed {
display: none;
}
.folder-tree.expanded {
display: block;
}
.folder-item {
margin: 4px 0;
display: block;
}
.folder-toggle {
cursor: pointer;
margin-right: 5px;
}
.folder-indent-placeholder {
display: inline-block;
width: 18px;
}
.folder-option {
cursor: pointer;
}
#folderTreeContainer {
display: block;
}
/* ===========================================================
FILE MANAGER INLINE STYLE REMOVAL - New Classes
=========================================================== */
.image-modal-header {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap; /* Allows filename to wrap */
text-align: center;
min-height: 30px; /* Ensures enough space if wrapping */
margin: 0 auto 10px; /* Centers it properly */
padding: 10px;
width: 95%;
}
.image-preview-modal-content {
max-width: fit-content !important; /* Allow modal to shrink to image size */
max-height: 90vh;
background: #fff;
padding: 20px !important;
border-radius: 4px;
overflow: hidden !important; /* Prevents unexpected scrolling */
margin: auto;
position: relative;
display: inline-flex !important; /* Makes sure the modal content only wraps the image */
flex-direction: column;
align-items: center;
justify-content: center;
}
@media (max-width: 600px) {
.image-preview-modal-content {
max-width: fit-content !important; /* Allow modal to shrink to image size */
padding: 5px !important;
overflow: hidden !important; /* Prevents unexpected scrolling */
display: inline-flex !important; /* Makes sure the modal content only wraps the image */
}
}
body.dark-mode .image-preview-modal-content {
background: #2c2c2c;
border-color: #444;
}
/* Ensure the image resizes properly */
.image-modal-img {
max-width: 100%;
max-height: 80vh; /* Ensure it doesn't force a scrollbar */
object-fit: contain; /* Prevents stretching */
display: block;
margin: 0 auto;
}
/* Image Preview Close Button (Perfect Alignment) */
.close-image-modal {
position: absolute;
top: 10px;
right: 15px;
font-size: 24px; /* Ensures X is same size */
font-weight: bold;
cursor: pointer;
z-index: 1000;
color: #ff4d4d;
background-color: rgba(255, 255, 255, 0.8);
border-radius: 50%;
width: 32px; /* Ensures exact width */
height: 32px; /* Ensures exact height */
display: flex;
justify-content: center;
align-items: center;
line-height: 1; /* Fixes text alignment */
padding-bottom: 2px; /* Moves X up slightly */
transition: all 0.3s ease-in-out;
}
/* Hover Effect */
.close-image-modal:hover {
color: white;
background-color: #ff4d4d;
box-shadow: 0px 0px 6px rgba(255, 77, 77, 0.8);
transform: scale(1.05); /* Keeps position even on hover */
}
/* Dark Mode Adjustments */
body.dark-mode .close-image-modal {
background-color: rgba(0, 0, 0, 0.6);
color: #ff6666;
}
body.dark-mode .close-image-modal:hover {
background-color: #ff6666;
color: #000;
}
/* Fix Dark Mode */
body.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;
}
.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 Styles */
body.dark-mode .file-icon {
color: white;
}
.bottom-select {
display: inline-block;
width: auto !important;
font-size: 16px !important;
height: 28px !important; /* Matches the dropdown */
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; /* Ensure vertical alignment */
height: 28px !important; /* Match dropdown */
font-size: 16px !important;
line-height: 1.2;
margin-bottom: 0; /* Remove any extra space */
}
.items-per-page-text {
display: inline-flex;
align-items: center;
height: 28px !important; /* Match dropdown */
font-size: 16px !important;
line-height: 1.2;
margin-left: 8px; /* Add a small gap */
}
/* ===========================================================
UPLOAD MODULE INLINE STYLE REMOVAL - New Classes
=========================================================== */
.upload-instruction {
margin-bottom: 10px;
font-size: 16px;
}
/* Upload row stays a row */
.upload-file-row {
display: flex;
align-items: center;
justify-content: center;
word-break: break-word;
}
/* New wrapper ensures File Info appears below */
.file-info-wrapper {
display: flex;
flex-direction: column; /* Stack content below */
justify-content: center !important; /* Keep it centered */
align-items: center !important;
margin-top: 10px; /* Add spacing */
}
/* Ensure file info wraps properly */
.file-info-container {
display: flex;
flex-wrap: wrap !important; /* Allow wrapping */
justify-content: center !important; /* Keep it centered */
align-items: center;
flex-wrap: wrap;
gap: 5px;
}
.file-preview-container {
display: flex !important; /* Use flex to control layout */
flex-wrap: wrap !important; /* Allow wrapping */
justify-content: center !important; /* Keep it centered */
align-items: center !important; /* Align items properly */
gap: 5px !important; /* Small spacing between previews */
max-width: 100% !important; /* Prevent overflow */
text-align: center !important;
}
/* Ensure images are responsive */
.file-preview-img {
max-width: 100px;
max-height: 100px;
margin-right: 5px;
justify-content: center !important; /* Keep it centered */
height: auto;
display: block !important; /* Prevent spacing issues */
}
/* Small screens: Ensure it wraps properly */
@media (max-width: 600px) {
.file-preview-container {
justify-content: center !important;
}
}
.file-name-display {
vertical-align: middle;
margin-left: 5px;
}
.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
=========================================================== */
body.dark-mode {
background-color: #121212;
color: #e0e0e0;
}
/* Remove/override container background in dark mode */
body.dark-mode .container {
/* background-color: #1e1e1e; */ /* comment this out or remove */
background-color: transparent !important;
}
/* Preserve Bootstrap button colors in dark mode */
body.dark-mode .btn-primary {
background-color: #007bff;
color: #fff;
border-color: #007bff;
}
body.dark-mode .btn-secondary {
background-color: #6c757d;
color: #fff;
border-color: #6c757d;
}
body.dark-mode .btn-danger {
background-color: #dc3545;
color: #fff;
border-color: #dc3545;
}
/* Dark mode for modals */
body.dark-mode .modal .modal-content,
body.dark-mode .editor-modal {
background-color: #2c2c2c;
color: #e0e0e0;
border: 1px solid #444;
}
/* Dark mode for file list/table */
body.dark-mode table {
background-color: #2c2c2c;
color: #e0e0e0;
}
body.dark-mode table tr:hover {
background-color: #444;
}
/* Dark mode for uploads */
body.dark-mode #uploadProgressContainer .progress {
background-color: #333;
}
body.dark-mode #uploadProgressContainer .progress-bar {
background-color: #007bff;
color: #e0e0e0;
}
/* 🔹 Dark Mode Toggle Styled to Blend into Header */
.dark-mode-toggle {
background-color: transparent !important; /* Match header */
border: 1px solid transparent !important; /* Invisible border */
color: white !important; /* White text */
padding: 6px 12px !important;
border-radius: 6px !important; /* Rounded edges */
font-size: 0.9em !important;
font-weight: 500 !important;
cursor: pointer !important;
transition: background 0.3s, border 0.3s !important;
}
/* 🔹 Hover Effect - Subtle Border */
.dark-mode-toggle:hover {
background-color: rgba(255, 255, 255, 0.15) !important; /* Slight highlight */
}
/* 🔹 Active/Clicked Effect */
.dark-mode-toggle:active {
background-color: rgba(255, 255, 255, 0.25) !important;
}
/* 🔹 Dark Mode Version */
body.dark-mode .dark-mode-toggle {
background-color: transparent !important; /* Match dark header */
color: white !important;
}
/* 🔹 Dark Mode Hover Effect */
body.dark-mode .dark-mode-toggle:hover {
background-color: rgba(255, 255, 255, 0.15) !important;
}
/* 🔹 Remove Circle Effect */
.dark-mode-toggle:focus {
outline: none !important;
box-shadow: none !important;
}
/* Default (light mode) styling */
.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; /* or block, up to you */
}
.folder-help-icon {
vertical-align: middle;
color: #d96601; /* the orange color for info icon */
font-size: 20px !important;
}
.folder-help-list {
margin: 0;
padding-left: 20px;
}
/* Dark mode overrides */
body.dark-mode .folder-help-details {
color: #ddd;
background-color: #2c2c2c;
border-color: #444;
}
body.dark-mode .folder-help-summary {
color: #ddd;
background: #2c2c2c;
}
body.dark-mode .folder-help-icon {
color: #f6a72c; /* or another color you prefer for the icon in dark mode */
font-size: 20px;
}
body.dark-mode #searchIcon {
background-color: #444; /* dark background */
border: 1px solid #555; /* subtle border */
border-radius: 4px; /* rounded corners */
color: #fff; /* white icon color */
padding: 4px 8px; /* adjust padding as needed */
}
body.dark-mode #searchInput {
background-color: #333;
color: #e0e0e0;
border: 1px solid #555;
}
/* Default (light mode) styling for folderExplanation */
.folder-explanation {
margin-top: 5px;
padding: 5px;
font-size: 12px;
color: #555;
background-color: solid transparent;
border: 1px solid transparent;
border-radius: 2px;
}
/* Dark mode override */
body.dark-mode .folder-explanation {
color: #ddd; /* or another light color for text */
background-color: solid transparent; /* or another dark color for the background */
border: 1px solid transparent; /* darker border in dark mode */
}
/* Apply dark theme for CodeMirror when dark mode is enabled */
body.dark-mode .CodeMirror {
background: #1e1e1e !important; /* Dark background */
color: #ffffff !important; /* White text */
}
/* Ensure cursor is visible */
body.dark-mode .CodeMirror-cursor {
border-left: 2px solid #ffffff !important;
}
/* Change line number gutter background */
body.dark-mode .CodeMirror-gutters {
background: #252526 !important;
border-right: 1px solid #444 !important;
}
/* Change line number text color */
body.dark-mode .CodeMirror-linenumber {
color: #aaaaaa !important;
}
/* Change text selection background */
body.dark-mode .CodeMirror-selected {
background: rgba(255, 255, 255, 0.2) !important;
}
/* Change matching brackets highlight */
body.dark-mode .CodeMirror-matchingbracket {
background-color: rgba(255, 255, 255, 0.1) !important;
border-bottom: 1px solid #ffffff !important;
}