freezone/platform/static/css/main.css
2025-06-30 17:01:40 +02:00

600 lines
12 KiB
CSS

/* Zanzibar Digital Freezone - Main CSS */
/* Based on the original Actix MVC app styling */
/* Custom CSS Variables for Very Soft Pastel Colors */
:root {
/* Very Muted Pastel Colors */
--bs-primary: #d4e6f1;
--bs-primary-rgb: 212, 230, 241;
--bs-secondary: #e8eaed;
--bs-secondary-rgb: 232, 234, 237;
--bs-success: #d5f4e6;
--bs-success-rgb: 213, 244, 230;
--bs-info: #d6f0f7;
--bs-info-rgb: 214, 240, 247;
--bs-warning: #fef9e7;
--bs-warning-rgb: 254, 249, 231;
--bs-danger: #fdeaea;
--bs-danger-rgb: 253, 234, 234;
/* Light theme colors */
--bs-light: #f8f9fa;
--bs-dark: #343a40;
/* Text colors - always black or white */
--text-primary: #212529;
--text-secondary: #495057;
--text-muted: #6c757d;
}
/* Dark theme variables */
[data-bs-theme="dark"] {
/* Very Muted Dark Pastels */
--bs-primary: #2c3e50;
--bs-primary-rgb: 44, 62, 80;
--bs-secondary: #34495e;
--bs-secondary-rgb: 52, 73, 94;
--bs-success: #27ae60;
--bs-success-rgb: 39, 174, 96;
--bs-info: #3498db;
--bs-info-rgb: 52, 152, 219;
--bs-warning: #f39c12;
--bs-warning-rgb: 243, 156, 18;
--bs-danger: #e74c3c;
--bs-danger-rgb: 231, 76, 60;
--text-primary: #ffffff;
--text-secondary: #adb5bd;
--text-muted: #6c757d;
}
/* Global Styles */
* {
box-sizing: border-box;
}
body {
padding-top: 50px; /* Height of the fixed header */
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: var(--bs-light);
color: var(--text-primary);
transition: background-color 0.3s ease, color 0.3s ease;
}
/* Dark theme body */
[data-bs-theme="dark"] body {
background-color: #1a1d20;
color: var(--text-primary);
}
/* Header Styles */
.header {
height: 50px;
position: fixed;
top: 0;
width: 100%;
z-index: 1030;
background-color: #212529 !important;
color: white;
border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}
.header .container-fluid {
height: 100%;
}
.header h5 {
margin: 0;
font-size: 1.1rem;
font-weight: 500;
}
.header .navbar-toggler {
border: none;
padding: 0.25rem 0.5rem;
background: none;
}
.header .navbar-toggler:focus {
box-shadow: none;
}
.header .nav-link {
color: white !important;
text-decoration: none;
padding: 0.5rem 1rem;
}
.header .nav-link:hover {
color: #adb5bd !important;
}
.header .nav-link.active {
color: white !important;
font-weight: 600;
}
.header .dropdown-menu {
border: 1px solid #dee2e6;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
/* Sidebar Styles */
.sidebar {
width: 240px;
position: fixed;
height: calc(100vh - 90px); /* Subtract header and footer height */
top: 50px; /* Position below header */
background-color: #f8f9fa;
border-right: 1px solid #dee2e6;
overflow-y: auto;
z-index: 1010;
transition: background-color 0.3s ease;
}
/* Dark theme sidebar */
[data-bs-theme="dark"] .sidebar {
background-color: #1a1d20 !important;
border-right: 1px solid #495057;
}
.sidebar .nav-link {
color: #495057;
text-decoration: none;
padding: 0.75rem 1rem;
display: flex;
align-items: center;
border-radius: 0;
transition: all 0.2s ease;
}
.sidebar .nav-link:hover {
background-color: #e9ecef;
color: #212529;
}
.sidebar .nav-link.active {
background-color: #e7f3ff;
color: #212529;
border-left: 4px solid #d4e6f1;
font-weight: 600;
}
/* Dark theme sidebar nav links */
[data-bs-theme="dark"] .sidebar .nav-link {
color: #ffffff !important;
}
[data-bs-theme="dark"] .sidebar .nav-link:hover {
background-color: #2d3339 !important;
color: #ffffff !important;
}
[data-bs-theme="dark"] .sidebar .nav-link.active {
background-color: #34495e !important;
color: #ffffff !important;
border-left: 4px solid #2c3e50 !important;
}
/* Dark theme sidebar cards */
[data-bs-theme="dark"] .sidebar .card {
background-color: #2d3339 !important;
border-color: #495057 !important;
color: #ffffff !important;
}
[data-bs-theme="dark"] .sidebar .card.bg-white {
background-color: #2d3339 !important;
color: #ffffff !important;
}
[data-bs-theme="dark"] .sidebar .card.bg-dark {
background-color: #34495e !important;
color: #ffffff !important;
}
/* Dark theme sidebar card icons */
[data-bs-theme="dark"] .sidebar .bg-dark {
background-color: #ffffff !important;
color: #212529 !important;
}
[data-bs-theme="dark"] .sidebar .bg-white {
background-color: #2d3339 !important;
color: #ffffff !important;
}
/* Dark theme dividers */
[data-bs-theme="dark"] .sidebar hr {
border-color: #495057 !important;
opacity: 0.5;
}
/* Dark theme text colors */
[data-bs-theme="dark"] .sidebar .text-muted {
color: #adb5bd !important;
}
[data-bs-theme="dark"] .sidebar h6 {
color: #ffffff !important;
}
[data-bs-theme="dark"] .sidebar small {
color: #adb5bd !important;
}
.sidebar .nav-link i {
margin-right: 0.5rem;
width: 1.2rem;
text-align: center;
}
/* Main Content Area */
.main-content {
margin-left: 240px;
min-height: calc(100vh - 90px);
padding: 1rem;
}
/* Footer Styles */
.footer {
height: 40px;
line-height: 40px;
background-color: #212529 !important;
color: white;
position: relative;
margin-top: auto;
}
.footer a {
color: white;
text-decoration: none;
}
.footer a:hover {
color: #adb5bd;
}
/* Feature Cards (Home Page) */
.compact-card {
max-height: 150px;
overflow-y: auto;
}
.compact-card .card-body {
padding: 0.75rem;
}
.compact-card .card-text {
font-size: 0.875rem;
line-height: 1.4;
margin-bottom: 0;
}
.card-header {
padding: 0.5rem 0.75rem;
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.card-header h6 {
margin: 0;
font-size: 0.875rem;
font-weight: 600;
}
/* Toast Notifications */
.toast-container {
position: fixed;
top: 1rem;
right: 1rem;
z-index: 1055;
}
.toast {
min-width: 300px;
margin-bottom: 0.5rem;
border: none;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
.toast-header {
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
padding: 0.5rem 0.75rem;
}
.toast-success .toast-header {
background-color: var(--bs-success);
color: var(--text-primary);
}
.toast-error .toast-header {
background-color: var(--bs-danger);
color: var(--text-primary);
}
.toast-warning .toast-header {
background-color: var(--bs-warning);
color: var(--text-primary);
}
.toast-info .toast-header {
background-color: var(--bs-info);
color: var(--text-primary);
}
.toast-body {
padding: 0.75rem;
background-color: white;
}
/* Login Form Styles */
.login-container {
min-height: calc(100vh - 50px);
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #0099FF 0%, #00CC66 100%);
}
.login-card {
width: 100%;
max-width: 400px;
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
}
.login-card .card-header {
background-color: var(--bs-primary);
color: var(--text-primary);
border-bottom: none;
}
.login-card .form-control:focus {
border-color: var(--bs-primary);
box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}
.login-card .btn-primary {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
color: var(--text-primary);
}
.login-card .btn-primary:hover {
background-color: rgba(var(--bs-primary-rgb), 0.8);
border-color: rgba(var(--bs-primary-rgb), 0.8);
color: var(--text-primary);
}
/* Responsive Design */
@media (min-width: 768px) {
.sidebar {
width: 240px;
position: fixed;
height: calc(100vh - 90px);
top: 50px;
}
.main-content {
margin-left: 240px;
min-height: calc(100vh - 90px);
}
}
@media (max-width: 767.98px) {
.sidebar {
width: 240px;
position: fixed;
height: calc(100vh - 90px);
top: 50px;
left: -240px;
transition: left 0.3s ease;
z-index: 1020;
box-shadow: 0.5rem 0 1rem rgba(0, 0, 0, 0.15);
}
.sidebar.show {
left: 0;
}
.main-content {
margin-left: 0;
}
.header .d-md-flex {
display: none !important;
}
}
/* Utility Classes */
.text-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.shadow-sm {
box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;
}
.border-start {
border-left: 1px solid #dee2e6 !important;
}
.border-4 {
border-width: 4px !important;
}
/* Loading States */
.loading {
opacity: 0.6;
pointer-events: none;
}
.spinner-border-sm {
width: 1rem;
height: 1rem;
}
/* Focus States for Accessibility */
.nav-link:focus,
.btn:focus,
.form-control:focus {
outline: 2px solid var(--bs-primary);
outline-offset: 2px;
}
/* Button and component overrides for very muted pastel colors */
.btn-primary {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
color: #212529;
}
.btn-primary:hover {
background-color: #c3d9ed;
border-color: #c3d9ed;
color: #212529;
}
.btn-outline-primary {
color: #212529;
border-color: var(--bs-primary);
}
.btn-outline-primary:hover {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
color: #212529;
}
.btn-success {
background-color: var(--bs-success);
border-color: var(--bs-success);
color: #212529;
}
.btn-success:hover {
background-color: #c8f0dd;
border-color: #c8f0dd;
color: #212529;
}
/* Dark theme button overrides */
[data-bs-theme="dark"] .btn-primary {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
color: #ffffff;
}
[data-bs-theme="dark"] .btn-primary:hover {
background-color: #34495e;
border-color: #34495e;
color: #ffffff;
}
[data-bs-theme="dark"] .btn-outline-primary {
color: #ffffff;
border-color: var(--bs-primary);
}
[data-bs-theme="dark"] .btn-outline-primary:hover {
background-color: var(--bs-primary);
border-color: var(--bs-primary);
color: #ffffff;
}
[data-bs-theme="dark"] .btn-success {
background-color: var(--bs-success);
border-color: var(--bs-success);
color: #ffffff;
}
[data-bs-theme="dark"] .btn-success:hover {
background-color: #2ecc71;
border-color: #2ecc71;
color: #ffffff;
}
/* Card styling improvements */
.card {
border: 1px solid #e9ecef;
background-color: #ffffff;
color: #212529;
}
[data-bs-theme="dark"] .card {
background-color: #2d3339 !important;
border-color: #495057 !important;
color: #ffffff !important;
}
/* Text color overrides - always black or white */
.text-primary {
color: #212529 !important;
}
.text-secondary {
color: #495057 !important;
}
.text-muted {
color: #6c757d !important;
}
/* Dark theme text overrides */
[data-bs-theme="dark"] .text-primary {
color: #ffffff !important;
}
[data-bs-theme="dark"] .text-secondary {
color: #adb5bd !important;
}
[data-bs-theme="dark"] .text-muted {
color: #6c757d !important;
}
/* Border color overrides */
.border-primary {
border-color: var(--bs-primary) !important;
}
.border-success {
border-color: var(--bs-success) !important;
}
/* Background color overrides */
.bg-primary {
background-color: var(--bs-primary) !important;
color: #212529 !important;
}
.bg-success {
background-color: var(--bs-success) !important;
color: #212529 !important;
}
/* Dark theme background overrides */
[data-bs-theme="dark"] .bg-primary {
background-color: var(--bs-primary) !important;
color: #ffffff !important;
}
[data-bs-theme="dark"] .bg-success {
background-color: var(--bs-success) !important;
color: #ffffff !important;
}
/* Print Styles */
@media print {
.header,
.sidebar,
.footer {
display: none !important;
}
.main-content {
margin-left: 0 !important;
padding: 0 !important;
}
}