2025-12-17 20:33:22 +00:00

837 lines
14 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* Ensure html and body take full height */
html, body {
background-color: var(--light-background);
color: var(--main-text-color);
height: 100%;
margin: 0;
/* padding: 0; */
}
/* Global Styles */
body {
font-family: 'Helvetica Neue', Arial, sans-serif;
padding-top: 70px; /* Adjust to your header height */
overflow-x: hidden; /* Prevent horizontal scroll */
}
/* Header styles */
.site-header {
background-color: var(--dark-background);
color: var(--header-text-color);
position: fixed;
top: 0;
width: 100%;
z-index: 1000;
display: flex;
align-items: center;
padding: 10px 20px;
}
.site-header img.logo {
height: 50px;
margin-right: 15px;
}
.site-header h1 {
font-size: 1.5em;
margin: 0;
}
.wrapper {
display: flex;
flex-direction: column;
min-height: 100%;
padding-bottom: 200px;
}
.wrapper > .admin-nav,
.wrapper > .main-tabs {
flex: 0 0 auto;
}
.wrapper > main,
.wrapper > section {
flex: 1 1 auto;
}
.wrapper > footer {
flex: 0 0 auto;
}
.container {
max-width: 1200px;
width: 90%;
margin: 0 auto;
padding: 20px 0;
}
.container a {
font-size: 18px;
}
.container-fluid {
padding: 20px;
}
/* Breadcrumb Styles */
.breadcrumb a {
font-size: 19px;
text-decoration: none;
color: var(--main-text-color);
}
.breadcrumb span {
font-size: 19px;
color: #ccc;
margin-left: 5px;
margin-right: 5px;
margin-bottom: 10px;
}
/* Admin Nav Styles */
.admin-nav {
color: #ccc;
border: 1px solid #ccc;
padding: 10px;
background-color: #979797;
}
.admin-nav a {
color: #ccc;
text-decoration: none;
padding: 5px 0;
}
/* List Styles */
ul {
list-style-type: none;
padding: 0;
}
/* mouse symbol for links */
div.directory-item, li.directory-item, li.file-item, li.link-item,
div.directory-item a, li.directory-item a, li.file-item a, li.link-item a {
cursor: pointer;
}
/* Directory Items (in a list) */
.directory-item, .link-item, .directory-item, .file-item {
margin-bottom: 10px;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
padding: 10px 15px;
}
/* Grid Layout for Directories */
.directories-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 0 10px;
text-align: center;
}
/* File Item Styles (for both music and image files) */
.file-item, .directory-item{
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
background-color: #fff;
border-radius: 5px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
/* Link Styles */
.directory-link,
.link-link,
a.play-file {
color: var(--player-text-color);
text-decoration: none;
word-break: break-all;
}
a.show-transcript {
text-decoration: none;
color: var(--main-text-color);
font-size: 20px;
margin-left: 10px;
}
a.show-transcript:hover {
color: rgb(113, 146, 167);
}
.highlight {
background-color: yellow;
}
a.create-share {
text-decoration: none;
color: var(--main-text-color);
font-size: 20px;
margin-left: 10px;
}
a.create-share:hover {
color: rgb(113, 146, 167);
}
.currently-playing {
background-color: var(--selected-background);
}
/* Footer Player Styles */
footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background-color: var(--dark-background);
color: #fff;
padding: 7px;
text-align: center;
z-index: 1000; /* Make sure it sits on top */
display: flex;
align-items: center;
justify-content: center;
}
/* Modal Styles */
#transcriptModal {
display: none;
position: fixed;
z-index: 2000;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.7);
}
#transcriptModal .modal-content {
background-color: #fff;
margin: 5% auto;
padding: 20px;
border-radius: 5px;
width: 90%;
max-width: 800px;
position: relative;
max-height: 80vh;
overflow-y: auto;
}
#transcriptModal .close {
position: absolute;
right: 15px;
top: 10px;
font-size: 28px;
font-weight: bold;
cursor: pointer;
}
/* Basic Markdown Styles */
#transcriptContent h1,
#transcriptContent h2,
#transcriptContent h3 {
border-bottom: 1px solid #eee;
padding-bottom: 5px;
}
#transcriptContent p {
line-height: 1.6;
}
#transcriptContent pre {
background-color: #f6f8fa;
padding: 10px;
overflow-x: auto;
}
/* Center the reload control */
#directory-controls {
text-align: center;
margin-top: 20px;
}
/* Style the button (remove border, background, etc.) */
#reload-button {
background: none;
border: none;
cursor: pointer;
padding: 0;
}
/* Add a rotation animation */
@keyframes rotate-icon {
0% { transform: rotate(0deg); }
100% { transform: rotate(180deg); }
}
#reload-button svg {
animation: none;
}
#reload-button svg.rotate {
animation: rotate-icon 0.5s linear;
transition: opacity 1s ease;
opacity: 0;
cursor: auto;
}
/* IMAGE GRID */
.images-grid {
display: grid;
grid-template-columns: repeat(auto-fill, 150px);
grid-auto-rows: 150px;
gap: 14px;
}
.image-item {
position: relative;
overflow: hidden;
border: 2px solid #ccc;
border-radius: 8px;
background: #f9f9f9;
}
/* the filename overlay, centered at bottom */
.image-item .file-name {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 4px 0;
text-align: center;
font-size: 12px;
background: rgba(0, 0, 0, 0.6);
color: #fff;
box-sizing: border-box;
transition: opacity 0.3s;
opacity: 1;
pointer-events: none;
}
/* once loaded, hide the filename overlay */
.image-item.loaded .file-name {
opacity: 0.5;
}
/* thumbnail styling unchanged */
.thumbnail {
width: 100%;
height: 100%;
object-fit: cover;
}
/* pop when loaded */
.image-item.loaded .thumbnail {
transform: scale(1.05);
}
.qr-code {
max-width: 300px;
display: block;
margin: auto;
}
.card {
margin-bottom: 20px;
}
.locked { background-color:#eee; }
.unlocked { background-color: #fff3cd; }
/* full-screen semi-transparent backdrop */
#fullscreen-loader {
position: fixed;
top: 0; left: 0;
width: 100vw; height: 100vh;
background: rgba(0,0,0,0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999; /* ensure its on top */
}
/* your spinner graphic */
.loader {
border: 4px solid rgba(255,255,255,0.3);
border-top-color: #fff;
border-radius: 50%;
width: 40px;
height: 40px;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
.card-body.collapsable {
display: none;
transition: max-height 0.3s ease;
overflow: hidden;
}
.card-body.collapsable.show {
display: block;
max-height: 1000px;
}
.toggle-icon {
font-size: 1.5rem;
user-select: none;
}
.toggle-icon:hover {
color: #007bff;
}
/* Tab Navigation Styles */
.main-tabs {
background-color: var(--dark-background);
display: flex;
justify-content: center;
padding: 0;
margin: 0;
gap: 2px;
border-bottom: 2px solid #444;
}
.tab-button {
background: #333;
border: 1px solid #444;
border-bottom: none;
color: #999;
padding: 6px 20px;
font-size: 14px;
cursor: pointer;
transition: all 0.2s ease;
border-radius: 5px 5px 0 0;
margin: 0;
position: relative;
top: 2px;
}
.tab-button:hover {
color: #fff;
background: #3a3a3a;
}
.tab-button.active {
color: var(--main-text-color, #000);
background: var(--light-background);
border-color: #444;
border-bottom-color: var(--light-background);
z-index: 1;
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
/* Messages Section Styles */
.messages-section-header {
max-width: 900px;
margin: 0 auto;
padding: 0 0 8px;
}
.messages-container {
max-width: 900px;
margin: 0 auto;
padding: 20px 0;
}
.message-card {
background: var(--card-background, #fff);
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
transition: box-shadow 0.3s ease;
}
.message-card:hover {
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
}
.message-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 2px solid #e0e0e0;
}
.message-title {
font-size: 1.5em;
font-weight: bold;
color: var(--main-text-color);
margin: 0;
}
.message-datetime {
color: #666;
font-size: 0.9em;
font-style: italic;
}
.message-content {
line-height: 1.6;
color: var(--main-text-color);
}
.message-content .folder-link-btn {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 8px 16px;
margin: 4px 0;
background: #f0f4f8;
color: #495057;
border: 1px solid #d1dce5;
border-radius: 6px;
font-size: 0.95em;
font-weight: 500;
cursor: pointer;
transition: all 0.2s ease;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.message-content .folder-link-btn:hover {
background: #e3eaf0;
border-color: #b8c5d0;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.12);
}
.message-content .folder-link-btn:active {
transform: translateY(0);
box-shadow: 0 2px 4px rgba(102, 126, 234, 0.3);
}
.message-content .folder-link-btn i {
font-size: 1.1em;
}
.message-content a {
color: #007bff;
text-decoration: underline;
cursor: pointer;
}
.message-content a:hover {
color: #0056b3;
text-decoration: underline;
}
.message-content h1,
.message-content h2,
.message-content h3 {
margin-top: 20px;
margin-bottom: 10px;
}
.message-content h1 {
font-size: 1.5rem;
}
.message-content h2 {
font-size: 1.3rem;
}
.message-content h3 {
font-size: 1.1rem;
}
.message-content h4 {
font-size: 1rem;
}
.message-content h5 {
font-size: 0.9rem;
}
.message-content h6 {
font-size: 0.85rem;
}
.message-content p {
margin-bottom: 10px;
}
.message-content ul,
.message-content ol {
margin-left: 20px;
margin-bottom: 10px;
}
.message-content code {
background-color: #f4f4f4;
padding: 2px 6px;
border-radius: 3px;
font-family: 'Courier New', monospace;
}
.message-content pre {
background-color: #f4f4f4;
padding: 10px;
border-radius: 5px;
overflow-x: auto;
}
.message-content blockquote {
border-left: 4px solid #ccc;
padding-left: 15px;
color: #666;
font-style: italic;
}
.message-image {
width: 100%;
max-width: 100%;
height: auto;
border-radius: 8px;
margin: 15px 0;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.message-actions {
margin-top: 15px;
padding-top: 10px;
border-top: 1px solid #e0e0e0;
display: flex;
gap: 10px;
}
.btn-edit,
.btn-delete {
padding: 5px 15px;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 14px;
transition: all 0.3s ease;
}
.btn-edit {
background-color: #007bff;
color: white;
}
.btn-edit:hover {
background-color: #0056b3;
}
.btn-delete {
background-color: #dc3545;
color: white;
}
.btn-delete:hover {
background-color: #c82333;
}
.no-messages {
text-align: center;
padding: 40px;
color: #999;
font-size: 1.2em;
}
/* Calendar Section */
#calendar-section .container {
max-width: none;
width: 100%;
padding-left: 20px;
padding-right: 20px;
}
.calendar-grid {
display: grid;
grid-template-columns: repeat(1, minmax(0, 1fr));
gap: 0;
border: 1px solid #ddd;
border-top: 0;
border-radius: 0 0 6px 6px;
overflow: hidden;
}
.calendar-weekday-header {
display: none;
}
.calendar-day {
background: var(--card-background, #fff);
border-bottom: 1px solid #ddd;
padding: 8px 10px 4px;
}
.calendar-day-today {
border: 2px solid #4da3ff;
padding: 6px 8px 2px;
}
.calendar-day:last-child {
border-bottom: none;
}
@media (min-width: 992px) {
.calendar-grid {
grid-template-columns: repeat(7, minmax(0, 1fr));
border-radius: 0 0 8px 8px;
}
.calendar-weekday-header {
display: grid;
grid-template-columns: repeat(7, minmax(0, 1fr));
text-align: center;
font-weight: 600;
color: #999;
border: 1px solid #ddd;
border-bottom: 0;
border-radius: 8px 8px 0 0;
overflow: hidden;
}
.calendar-day {
border-bottom: 1px solid #ddd;
border-right: 1px solid #ddd;
}
.calendar-day:nth-child(7n) {
border-right: none;
}
.calendar-day-name {
display: none;
}
}
.calendar-day-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 6px;
gap: 8px;
}
.calendar-day-name {
font-weight: 600;
text-transform: capitalize;
}
.calendar-day-date {
color: #666;
font-size: 0.95rem;
white-space: nowrap;
}
.calendar-day table {
margin-bottom: 0;
table-layout: auto;
width: 100%;
}
.calendar-day thead th {
background: #f1f1f1;
color: #666;
border-color: #ddd;
}
.calendar-day.empty thead {
display: none;
}
.calendar-entries-list td {
vertical-align: middle;
}
@media (min-width: 992px) {
.calendar-table-wrapper {
box-sizing: border-box;
margin-left: -12px;
margin-right: -12px;
max-height: 400px;
overflow-y: auto;
overflow-x: auto;
padding: 0 12px;
}
}
.calendar-day .btn-group .btn {
padding: 2px 8px;
}
.details-indicator {
font-weight: 700;
color: #666;
margin-left: 6px;
cursor: pointer;
position: relative;
top: -1px;
}
.calendar-actions-col {
width: 1%;
white-space: nowrap;
}
.calendar-details-text {
white-space: pre-wrap;
margin: 0;
}
.calendar-details-row td {
background: #f8f9fa;
}
.calendar-inline-actions {
margin-top: 8px;
display: flex;
gap: 8px;
}
/* File Browser Styles */
.file-browser-content {
max-height: 400px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 5px;
}
.file-browser-content .list-group-item {
border-left: none;
border-right: none;
border-radius: 0;
}
.file-browser-content .list-group-item:first-child {
border-top: none;
}
.file-browser-content .list-group-item:last-child {
border-bottom: none;
}
#fileBrowserCollapse {
margin-top: 0;
margin-bottom: 15px;
}
.file-browser-panel {
background-color: #f5f5f5;
border: 1px solid #ddd;
border-radius: 5px;
padding: 15px;
margin-bottom: 10px;
}
.file-browser-panel h6 {
margin-top: 0;
margin-bottom: 10px;
color: #333;
}