1259 lines
23 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: var(--light-background);
color: var(--main-text-color);
height: 100%;
margin: 0;
}
/* Global Styles */
body {
font-family: 'Manrope', 'Segoe UI', sans-serif;
padding-top: 0;
overflow-x: hidden;
letter-spacing: 0.01em;
line-height: 1.6;
background:
radial-gradient(1200px 900px at -10% 10%, rgba(34, 211, 238, 0.12), transparent 40%),
radial-gradient(1100px 800px at 110% -20%, rgba(59, 130, 246, 0.14), transparent 45%),
var(--light-background);
}
/* Subtle oversized logo watermark on all main sections */
main {
position: relative;
overflow: hidden;
}
main::before {
content: "";
position: absolute;
inset: 100px 0 0 0;
background-image: url("/custom_logo/logoB.png");
background-repeat: no-repeat;
background-position: center top;
background-size: 140%;
opacity: 0.03;
filter: blur(3px) saturate(90%) brightness(1.02);
mix-blend-mode: multiply;
pointer-events: none;
z-index: 5; /* bring logo in front */
}
main > * {
position: relative;
z-index: 1;
}
/* Header styles */
.site-header {
background: linear-gradient(120deg, var(--dark-background), #13253f);
color: var(--header-text-color);
position: sticky;
top: 0;
width: 100%;
z-index: 2000;
display: flex;
align-items: center;
gap: 10px;
padding: 10px 20px;
}
/* Ensure modals appear above the sticky header */
.modal {
z-index: 3000;
}
.modal-backdrop {
z-index: 2990;
}
.site-header img.logo {
height: 54px;
margin-right: 6px;
filter: drop-shadow(0 8px 10px rgba(0, 0, 0, 0.25));
}
.site-header h1 {
font-size: 1.3rem;
margin: 0;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 800;
}
.wrapper {
display: flex;
flex-direction: column;
min-height: 100%;
padding-bottom: 220px;
}
.wrapper > .admin-nav {
flex: 0 0 auto;
}
.wrapper > #page-content {
flex: 1 1 auto;
display: flex;
flex-direction: column;
}
.wrapper > #page-content > .main-tabs {
flex: 0 0 auto;
}
.wrapper > #page-content > main,
.wrapper > #page-content > section {
flex: 1 1 auto;
padding-top: 6px;
}
.wrapper > footer {
flex: 0 0 auto;
}
.container {
max-width: 1200px;
width: 95%;
margin-top: 12px;
}
.container a {
font-size: 17px;
}
/* Spacing for alerts so they don't stick to edges or neighbors */
.alert {
margin: 12px 0;
}
/* Search view container (custom element) */
search {
display: block;
background: rgba(255, 255, 255, 0.92);
border: 1px solid var(--border-color);
border-radius: 0 0 16px 16px;
box-shadow: none;
margin-top: -1px;
padding: 16px 12px 10px;
position: relative;
}
/* Search view controls */
.search-close-btn {
position: absolute;
top: 12px;
right: 14px;
opacity: 0.85;
}
.search-query-wrap .input-group {
position: relative;
}
.input-clear-btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
opacity: 0.85;
}
.input-clear-btn:hover {
opacity: 1;
}
.search-close-btn:hover {
opacity: 1;
}
/* Breadcrumb Styles */
.breadcrumb {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
padding: 10px 16px;
margin: 0;
}
.breadcrumb a {
font-size: 17px;
text-decoration: none;
color: var(--brand-navy);
font-weight: 700;
}
.breadcrumb span {
font-size: 17px;
color: var(--muted-text);
margin: 0;
}
/* Admin Nav Styles */
.admin-nav {
color: var(--brand-ink);
border: 1px solid var(--border-color);
background: rgba(255, 255, 255, 0.9);
width: 100vw;
margin-left: calc(50% - 50vw);
margin-right: calc(50% - 50vw);
box-sizing: border-box;
position: relative;
z-index: 1000;
overflow: visible;
}
.admin-nav-rail {
position: relative;
overflow: visible;
}
.admin-nav-track {
display: flex;
align-items: center;
flex-wrap: nowrap;
justify-content: flex-start;
padding: 0 10px; /* keep first/last items off the screen edge */
overflow-x: auto;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
white-space: nowrap;
}
.admin-nav a {
color: var(--brand-ink);
text-decoration: none;
padding: 8px 12px;
font-weight: 600;
font-size: 13px;
border: 1px solid transparent;
background: linear-gradient(135deg, #fff, #f4f7fb);
transition: all 0.2s ease;
box-shadow: 0 6px 16px rgba(15, 23, 42, 0.05);
flex-shrink: 0;
}
.admin-nav a:hover {
color: var(--brand-sky);
border-color: var(--border-color);
transform: translateY(-1px);
}
.admin-nav span {
color: var(--border-color);
display: none;
}
.admin-nav .dropdown-toggle {
color: var(--brand-ink);
padding: 8px 12px;
}
.admin-nav .dropdown-toggle::after {
display: none; /* hide default Bootstrap caret */
}
.admin-nav .dropdown-menu {
background-color: #fff;
border-color: var(--border-color);
border-radius: 10px;
box-shadow: var(--card-shadow);
z-index: 4000;
position: absolute;
top: 0;
left: 100%;
margin-top: 0;
margin-left: 8px;
transform: none;
}
.admin-nav .dropdown-item {
color: var(--brand-ink);
padding-left: 14px;
padding-right: 14px;
}
.admin-nav .dropdown-item:hover,
.admin-nav .dropdown-item:focus {
background-color: #eef4ff;
color: var(--brand-navy);
}
/* 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: 12px;
background-color: #fff;
border-radius: 12px;
box-shadow: var(--card-shadow);
padding: 12px 18px;
border: 1px solid var(--border-color);
transition: all 0.2s ease;
}
.directory-item:hover,
.link-item:hover,
.file-item:hover {
border-color: var(--brand-sky);
box-shadow: 0 14px 26px rgba(59, 130, 246, 0.14);
transform: translateY(-1px);
}
/* Grid Layout for Directories */
.directories-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
column-gap: 14px;
row-gap: 0;
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: 12px;
box-shadow: var(--card-shadow);
}
/* Link Styles */
.directory-link,
.link-link,
a.play-file {
color: var(--brand-ink);
text-decoration: none;
word-break: break-all;
font-weight: 600;
}
a.show-transcript {
text-decoration: none;
color: var(--brand-navy);
font-size: 18px;
margin-left: 10px;
font-weight: 600;
}
a.show-transcript:hover {
color: var(--brand-sky);
}
.highlight {
background-color: #fffbcc;
padding: 2px 4px;
border-radius: 4px;
}
#transcriptContent code.timecode-link {
cursor: pointer;
font-size: small;
}
a.create-share {
text-decoration: none;
color: var(--brand-navy);
font-size: 18px;
margin-left: 10px;
font-weight: 600;
}
a.create-share:hover {
color: var(--brand-sky);
}
.currently-playing {
background-color: var(--selected-background);
border: 1px solid var(--brand-sky);
}
/* Footer Player Styles */
footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
text-align: center;
z-index: 1000; /* Make sure it sits on top */
display: flex;
align-items: center;
justify-content: center;
pointer-events: none; /* avoid blocking underlying content */
}
footer .audio-player-container {
pointer-events: auto; /* keep controls clickable */
}
/* 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: 15px;
border-radius: 5px;
width: 90%;
max-width: 800px;
position: relative;
max-height: 80vh;
overflow-y: auto;
display: flex;
flex-direction: column;
}
#transcriptModal .close {
position: sticky;
top: 0;
right: 0;
font-size: 28px;
font-weight: bold;
cursor: pointer;
margin-left: auto;
z-index: 5;
}
/* 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: 1px solid var(--border-color);
border-radius: 12px;
background: linear-gradient(145deg, #ffffff, #f6f8fc);
box-shadow: var(--card-shadow);
}
/* 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;
}
.thumbnail-fallback {
object-fit: contain;
background: #e5e5e5;
}
/* 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 {
border-bottom: 1px solid var(--border-color);
border-radius: 0;
width: 100vw;
margin-left: calc(50% - 50vw);
margin-right: calc(50% - 50vw);
box-sizing: border-box;
overflow: visible;
}
.main-tabs-scroll {
display: flex;
justify-content: flex-start;
padding: 16px 18px 0;
gap: 0;
flex-wrap: nowrap;
overflow-x: auto;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
box-sizing: border-box;
}
.tab-button {
background: rgba(217, 217, 217, 0.5);
border: 1px solid var(--border-color);
border-bottom: none;
color: var(--muted-text);
padding: 10px 16px;
font-size: 13px;
cursor: pointer;
transition: all 0.2s ease;
border-radius: 10px 10px 0 0;
margin: 0 6px 0 0;
position: relative;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: none;
box-shadow:
0 -10px 18px -12px rgba(15, 23, 42, 0.18),
10px 0 18px -12px rgba(15, 23, 42, 0.12),
-10px 0 18px -12px rgba(15, 23, 42, 0.12);
flex: 0 0 auto;
}
.tab-button:hover {
background: linear-gradient(135deg, rgba(255, 255, 255, 0.98), rgba(230, 230, 230, 0.85));
}
.tab-button.active {
color: var(--brand-ink);
background: rgba(255, 255, 255, 0.92);
border-color: var(--border-color);
z-index: 2;
box-shadow:
0 -12px 22px -12px rgba(15, 23, 42, 0.22),
12px 0 20px -14px rgba(15, 23, 42, 0.14),
-12px 0 20px -14px rgba(15, 23, 42, 0.14);
margin-bottom: -1px;
}
/* Carded content shell */
.tab-content {
display: none;
background: rgba(255, 255, 255, 0.92);
border: 1px solid var(--border-color);
box-shadow: none;
padding: 20px;
margin-top: -1px;
}
.tab-content.active {
display: block;
}
/* Messages/Calendar shared structure */
.tab-section-header {
margin-top: 10px;
padding: 0;
}
.tab-section-body {
margin: 0 auto;
padding: 0 0 24px;
}
.messages-container {
max-width: 900px;
}
.message-card {
background: linear-gradient(145deg, #ffffff, #f7f9ff);
border: 1px solid var(--border-color);
border-radius: 14px;
padding: 20px 22px;
margin-bottom: 20px;
box-shadow: var(--card-shadow);
transition: box-shadow 0.3s ease, transform 0.2s ease;
}
.message-card:hover {
box-shadow: 0 20px 38px rgba(15, 23, 42, 0.16);
transform: translateY(-2px);
}
.message-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
padding-bottom: 10px;
border-bottom: 1px dashed var(--border-color);
}
.message-title {
font-size: 1.5em;
font-weight: bold;
color: var(--brand-ink);
margin: 0;
}
.message-datetime {
color: var(--muted-text);
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: #ecf6ff;
color: #0f172a;
border: 1px solid #bed8ff;
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: #dff0ff;
border-color: #93c5fd;
box-shadow: 0 6px 18px rgba(14, 165, 233, 0.24);
}
.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: var(--brand-sky);
text-decoration: underline;
cursor: pointer;
}
.message-content a:hover {
color: #0ea5e9;
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 var(--border-color);
padding-left: 15px;
color: var(--muted-text);
font-style: italic;
background: #f8fbff;
border-radius: 6px;
}
.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 var(--border-color);
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: linear-gradient(135deg, #2563eb, #22d3ee);
color: white;
}
.btn-edit:hover {
background: linear-gradient(135deg, #1d4ed8, #0ea5e9);
}
.btn-delete {
background-color: #dc3545;
color: white;
}
.btn-delete:hover {
background-color: #c82333;
}
.no-messages {
text-align: center;
padding: 40px;
color: var(--muted-text);
font-size: 1.2em;
}
/* Calendar Section */
.calendar-grid {
display: grid;
grid-template-columns: repeat(1, minmax(0, 1fr));
gap: 10px;
border: 0;
border-radius: 0;
overflow: visible;
}
.calendar-weekday-header {
display: none;
}
.calendar-day {
background: #ffffff;
border: 1px solid var(--border-color);
border-radius: 0;
box-shadow: 0 12px 20px rgba(15, 23, 42, 0.1);
padding: 16px 12px 10px;
display: flex;
flex-direction: column;
min-width: 0;
min-height: 0;
box-sizing: border-box;
overflow: visible;
position: relative;
}
.calendar-day::before {
content: "";
position: absolute;
bottom: 0;
right: 0;
width: 26px;
height: 26px;
background: linear-gradient(315deg, #eef1f6 0%, #ffffff 70%);
box-shadow: -3px -3px 8px rgba(15, 23, 42, 0.12);
border-left: 1px solid var(--border-color);
border-top: 1px solid rgba(15, 23, 42, 0.08);
clip-path: polygon(0 100%, 100% 100%, 100% 0);
}
.calendar-day::after {
content: "";
position: absolute;
bottom: 0;
right: 0;
width: 26px;
height: 26px;
background: linear-gradient(315deg,
transparent 45%,
rgba(15, 23, 42, 0.18) 48%,
transparent 52%);
clip-path: polygon(0 100%, 100% 100%, 100% 0);
pointer-events: none;
}
.calendar-day-today {
background: linear-gradient(135deg, #f6fbff, #ecf4ff);
box-shadow: inset 0 0 0 2px #3b82f6;
border-color: #3b82f6;
}
.calendar-day-sunday,
.calendar-day-holiday {
background: #fff8f5;
}
.calendar-day-today.calendar-day-sunday,
.calendar-day-today.calendar-day-holiday {
background: linear-gradient(135deg, #f6fbff 0%, #f6fbff 60%, #fff1ed 100%);
}
.calendar-day-sunday .calendar-day-header,
.calendar-day-holiday .calendar-day-header {
color: #b93838;
}
.calendar-holiday-badge {
display: inline-block;
margin-left: 6px;
padding: 2px 8px;
border-radius: 999px;
background: #ffe3e3;
color: #b93838;
font-size: 0.75rem;
font-weight: 700;
white-space: nowrap;
}
.calendar-day:last-child {
border-bottom: none;
}
.calendar-day-hidden {
visibility: hidden;
pointer-events: none;
}
@media (min-width: 992px) {
.calendar-grid {
grid-template-columns: repeat(7, minmax(0, 1fr));
border-radius: 0 0 12px 12px;
}
.calendar-weekday-header {
display: grid;
grid-template-columns: repeat(7, minmax(0, 1fr));
text-align: center;
font-weight: 600;
color: var(--muted-text);
border: 1px solid var(--border-color);
border-bottom: 0;
border-radius: 12px 12px 0 0;
overflow: visible;
position: sticky;
top: 70px;
z-index: 900;
background: var(--card-background, #fff);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.05);
}
.calendar-day {
border-bottom: 1px solid var(--border-color);
border-right: 1px solid var(--border-color);
}
.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: 8px;
gap: 8px;
}
.calendar-day-name {
font-weight: 700;
text-transform: capitalize;
}
.calendar-day-date {
color: var(--muted-text);
font-size: 0.95rem;
white-space: nowrap;
}
.calendar-day table {
margin-bottom: 0;
table-layout: auto;
width: 100%;
}
.calendar-day thead th {
background: #f6f8fb;
color: var(--muted-text);
border-color: var(--border-color);
}
.calendar-day.empty thead {
display: none;
}
.calendar-entries-list td {
vertical-align: middle;
}
.calendar-table-wrapper {
width: 100%;
}
@media (min-width: 992px) {
.calendar-table-wrapper {
box-sizing: border-box;
margin: 0;
max-height: 400px;
overflow-y: auto;
overflow-x: auto;
padding: 0;
}
}
.calendar-day .btn-group .btn {
padding: 2px 8px;
}
.details-indicator {
font-weight: 700;
color: var(--brand-sky);
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: #f8fbff;
}
.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 var(--border-color);
border-radius: 10px;
background: #fff;
box-shadow: var(--card-shadow);
}
.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: #f8fbff;
border: 1px solid var(--border-color);
border-radius: 12px;
padding: 16px;
margin-bottom: 10px;
}
.file-browser-panel h6 {
margin-top: 0;
margin-bottom: 10px;
color: var(--brand-ink);
}
/* Buttons - harmonize with dark blue palette */
.btn {
border-radius: 10px;
font-weight: 700;
letter-spacing: 0.01em;
}
.btn-primary {
background: linear-gradient(135deg, var(--brand-navy), var(--dark-background));
border: 1px solid var(--brand-navy);
color: #e5e7eb;
box-shadow: 0 6px 14px rgba(15, 23, 42, 0.18);
}
.btn-primary:hover {
background: linear-gradient(135deg, #1b2a44, #0d1524);
border-color: #1b2a44;
box-shadow: 0 8px 18px rgba(15, 23, 42, 0.2);
}
.btn-primary:active,
.btn-primary:focus {
background: linear-gradient(135deg, #0d1524, #0a1020);
border-color: #0d1524;
box-shadow: 0 4px 10px rgba(15, 23, 42, 0.22);
color: #e5e7eb;
}
.btn-secondary {
background: linear-gradient(135deg, #1f2e4a, #0f172a);
border: 1px solid #1f2e4a;
color: #e5e7eb;
box-shadow: 0 6px 14px rgba(15, 23, 42, 0.18);
}
.btn-secondary:hover,
.btn-secondary:focus {
background: linear-gradient(135deg, #223456, #111a2f);
border-color: #223456;
box-shadow: 0 8px 16px rgba(15, 23, 42, 0.2);
}
.btn-secondary:active {
background: linear-gradient(135deg, #0c1220, #0a0f1a);
border-color: #0c1220;
box-shadow: 0 4px 10px rgba(15, 23, 42, 0.22);
}
.btn-outline-secondary {
border: 1px solid var(--brand-navy);
color: var(--brand-navy);
background: #fff;
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
}
.btn-outline-secondary:hover,
.btn-outline-secondary:focus {
background: linear-gradient(135deg, #f7f9fd, #eef2f9);
color: var(--brand-navy);
border-color: var(--brand-navy);
box-shadow: 0 4px 12px rgba(15, 23, 42, 0.12);
}
.btn-outline-secondary:active {
background: #e5eaf5;
color: var(--brand-navy);
border-color: var(--brand-navy);
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.12);
}
.btn-light {
background: linear-gradient(135deg, #e8ecf4, #dfe6f3);
border: 1px solid var(--border-color);
color: var(--brand-ink);
box-shadow: 0 4px 10px rgba(15, 23, 42, 0.08);
}
.btn-light:hover,
.btn-light:focus {
background: linear-gradient(135deg, #dfe5f1, #d7dfef);
color: var(--brand-ink);
border-color: var(--brand-navy);
}
/* Highlight a file when opened from search */
.search-highlight {
outline: 2px solid #f6c344;
background-color: rgba(246, 195, 68, 0.25);
border-radius: 4px;
}
.file-access-actions {
flex-wrap: nowrap;
white-space: nowrap;
}