1198 lines
25 KiB
CSS
1198 lines
25 KiB
CSS
/**
|
|
* Navigation Styles
|
|
* Following Netwerk Digitaal Erfgoed (NDE) house style
|
|
*
|
|
* NDE Brand Colors:
|
|
* - Primary Blue: #0a3dfa (NDE brand blue)
|
|
* - Dark Blue: #172a59 (text color)
|
|
* - Orange Accent: #fa5200 (highlight)
|
|
* - Light Background: #f6f6f6
|
|
*
|
|
* NDE Fonts:
|
|
* - Headings: Poppins (500, 600)
|
|
* - Body: Roboto (400, 500)
|
|
*/
|
|
|
|
/* Import NDE fonts */
|
|
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600&family=Roboto:wght@400;500;700&display=swap');
|
|
|
|
/* CSS Variables for header height - used by page layouts */
|
|
:root {
|
|
--nav-height: 100px;
|
|
--nav-height-tablet: 60px;
|
|
--nav-height-mobile: 56px;
|
|
}
|
|
|
|
/* When header is collapsed, content should fill the entire viewport */
|
|
.navigation--collapsed ~ .layout-content,
|
|
.navigation--collapsed ~ #layout-content {
|
|
--nav-height: 0px;
|
|
}
|
|
|
|
/* ============================================
|
|
SMALL FLOATING LOGO - Always visible
|
|
============================================ */
|
|
.nav-logo-small {
|
|
position: fixed;
|
|
top: 12px;
|
|
left: 12px;
|
|
z-index: 1001;
|
|
display: block;
|
|
pointer-events: auto;
|
|
transition: opacity 0.2s ease-out, transform 0.2s ease;
|
|
/* Hidden by default (when header is expanded) */
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
/* Reset button styles (element is now a button, not a link) */
|
|
background: none;
|
|
border: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.nav-logo-small-img {
|
|
width: 36px;
|
|
height: 36px;
|
|
display: block;
|
|
/* Subtle white contour/glow effect for visibility */
|
|
filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.9))
|
|
drop-shadow(0 0 4px rgba(255, 255, 255, 0.7));
|
|
transition: filter 0.2s ease;
|
|
}
|
|
|
|
.nav-logo-small:hover {
|
|
transform: scale(1.08);
|
|
}
|
|
|
|
.nav-logo-small:hover .nav-logo-small-img {
|
|
filter: drop-shadow(0 0 3px rgba(255, 255, 255, 1))
|
|
drop-shadow(0 0 6px rgba(255, 255, 255, 0.8));
|
|
}
|
|
|
|
/* Custom tooltip for small logo */
|
|
.nav-logo-small-tooltip {
|
|
position: absolute;
|
|
left: 100%;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
margin-left: 8px;
|
|
padding: 6px 10px;
|
|
background: rgba(23, 42, 89, 0.95);
|
|
color: white;
|
|
font-size: 0.75rem;
|
|
font-weight: 500;
|
|
white-space: nowrap;
|
|
border-radius: 4px;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 0.2s ease;
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.nav-logo-small:hover .nav-logo-small-tooltip {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* When collapsed, show the small logo */
|
|
.navigation--collapsed .nav-logo-small {
|
|
opacity: 1;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
/* Dark mode small logo */
|
|
[data-theme="dark"] .nav-logo-small-img {
|
|
filter: drop-shadow(0 0 2px rgba(30, 41, 59, 0.9))
|
|
drop-shadow(0 0 4px rgba(30, 41, 59, 0.7));
|
|
}
|
|
|
|
[data-theme="dark"] .nav-logo-small:hover .nav-logo-small-img {
|
|
filter: drop-shadow(0 0 3px rgba(30, 41, 59, 1))
|
|
drop-shadow(0 0 6px rgba(30, 41, 59, 0.8));
|
|
}
|
|
|
|
/* ============================================
|
|
MAIN NAVIGATION
|
|
============================================ */
|
|
.navigation {
|
|
background: white;
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.1); /* Lighter NDE border */
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 1000;
|
|
width: 100%; /* CRITICAL: Full width fix */
|
|
overflow: visible; /* Allow dropdowns to extend beyond nav */
|
|
/* Smooth transition - no flickering */
|
|
transition: background 0.35s ease-out,
|
|
border-bottom-color 0.35s ease-out;
|
|
will-change: background, border-bottom-color;
|
|
}
|
|
|
|
/* Collapsed state - minimal header on scroll */
|
|
.navigation--collapsed {
|
|
background: transparent;
|
|
border-bottom-color: transparent;
|
|
pointer-events: none; /* Allow clicking through the header */
|
|
}
|
|
|
|
/* Nav container handles height transition separately */
|
|
.nav-container {
|
|
/* Match NDE.nl exact spacing */
|
|
width: 100%;
|
|
max-width: 1920px;
|
|
margin: 0 auto;
|
|
padding: 0 3rem;
|
|
height: 100px;
|
|
display: flex;
|
|
align-items: center;
|
|
box-sizing: border-box;
|
|
/* overflow: hidden removed - was cutting off dropdown menus */
|
|
/* Smooth height transition */
|
|
transition: height 0.35s ease-out,
|
|
padding 0.35s ease-out,
|
|
opacity 0.25s ease-out;
|
|
will-change: height, padding;
|
|
}
|
|
|
|
/* When collapsed, fade out container contents (big logo, nav items, title) */
|
|
.navigation--collapsed .nav-container {
|
|
height: 0;
|
|
padding-top: 0;
|
|
padding-bottom: 0;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Big logo fades out with the container - no special handling needed
|
|
since it's inside .nav-container which has opacity: 0 when collapsed */
|
|
|
|
/* Hide title in collapsed state */
|
|
.navigation--collapsed .nav-title {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
}
|
|
|
|
/* Diagonal line animation connecting large logo RAY to collapsed logo
|
|
*
|
|
* GEOMETRY CALCULATION:
|
|
*
|
|
* The line starts at the SMALL logo center and points toward a RAY on the big logo.
|
|
*
|
|
* Full header state (big logo with rays):
|
|
* - Header height: 100px, logo is 50x50px, vertically centered
|
|
* - Container padding-left: 3rem (48px)
|
|
* - Logo center: (48 + 25, 50) = (73px, 50px)
|
|
* - Logo radius: 25px
|
|
* - Target: Upper-left ray at ~150° from horizontal
|
|
* - Ray tip: center + (radius * cos(150°), radius * -sin(150°))
|
|
* = (73 + 25*(-0.866), 50 + 25*(-0.5))
|
|
* = (73 - 21.7, 50 - 12.5) ≈ (51px, 37px)
|
|
*
|
|
* Collapsed state (small logo center):
|
|
* - Logo is 36x36px, fixed at top: 12px, left: 12px
|
|
* - Logo center: (12 + 18, 12 + 18) = (30px, 30px)
|
|
*
|
|
* Line from small logo (30, 30) to ray tip (51, 37):
|
|
* - Δx = 51 - 30 = 21px (moving right)
|
|
* - Δy = 37 - 30 = 7px (moving down)
|
|
* - Length = sqrt(21² + 7²) = sqrt(441 + 49) = sqrt(490) ≈ 22px
|
|
* - Angle = atan2(7, 21) ≈ 18.4° (slight downward slope to the right)
|
|
*
|
|
* Using transform-origin: left center, the line extends FROM the left (small logo)
|
|
* toward the right (big logo ray).
|
|
*/
|
|
|
|
.navigation::before {
|
|
content: '';
|
|
position: fixed;
|
|
/* Position at the small logo center - line extends FROM here toward big logo ray */
|
|
top: 30px;
|
|
left: 30px;
|
|
width: 22px;
|
|
height: 2px;
|
|
/* Gradient: faint at left (small logo) bright at right (big logo ray) */
|
|
background: linear-gradient(90deg,
|
|
rgba(10, 61, 250, 0) 0%,
|
|
rgba(10, 61, 250, 0.3) 30%,
|
|
rgba(10, 61, 250, 0.6) 60%,
|
|
rgba(10, 61, 250, 0.9) 100%
|
|
);
|
|
transform-origin: left center;
|
|
transform: rotate(18deg);
|
|
/* Hidden by default - only shows during collapse/expand transition */
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
z-index: 1002;
|
|
border-radius: 1px;
|
|
/* No transition - controlled by animation */
|
|
transition: none;
|
|
}
|
|
|
|
/* Flash animation during collapse */
|
|
.navigation--collapsing::before {
|
|
animation: diagonal-flash 0.35s ease-out forwards;
|
|
}
|
|
|
|
/* Flash animation during expand */
|
|
.navigation--expanding::before {
|
|
animation: diagonal-flash 0.35s ease-out forwards;
|
|
}
|
|
|
|
@keyframes diagonal-flash {
|
|
0% {
|
|
opacity: 0;
|
|
}
|
|
30% {
|
|
opacity: 1;
|
|
}
|
|
70% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* Fade out other elements smoothly instead of display:none */
|
|
.navigation .nav-links,
|
|
.navigation .nav-user,
|
|
.navigation .nav-mobile-toggle {
|
|
transition: opacity 0.2s ease-out, visibility 0.2s ease-out;
|
|
}
|
|
|
|
.navigation--collapsed .nav-links,
|
|
.navigation--collapsed .nav-user,
|
|
.navigation--collapsed .nav-mobile-toggle {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Mobile menu stays display:none to avoid layout issues */
|
|
.navigation--collapsed .nav-mobile-menu {
|
|
display: none;
|
|
}
|
|
|
|
.nav-brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
text-decoration: none;
|
|
color: #172a59; /* NDE dark blue */
|
|
font-family: 'Poppins', Helvetica, Arial, sans-serif;
|
|
font-weight: 400;
|
|
margin-right: 2.5rem;
|
|
flex-shrink: 0;
|
|
/* Smooth transitions for collapse animation */
|
|
transition: transform 0.35s ease-out,
|
|
filter 0.35s ease-out,
|
|
opacity 0.2s ease-out;
|
|
}
|
|
|
|
.nav-brand:hover {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
/* NDE Logo */
|
|
.nav-logo {
|
|
width: 50px;
|
|
height: 50px;
|
|
flex-shrink: 0;
|
|
display: block;
|
|
overflow: visible;
|
|
/* Smooth size and filter transitions */
|
|
transition: width 0.35s ease-out,
|
|
height 0.35s ease-out,
|
|
filter 0.35s ease-out,
|
|
opacity 0.35s ease-out;
|
|
}
|
|
|
|
/* Single-line title matching NDE */
|
|
.nav-title {
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
color: #172a59;
|
|
white-space: nowrap;
|
|
/* Smooth fade out */
|
|
transition: opacity 0.2s ease-out,
|
|
font-size 0.35s ease-out;
|
|
}
|
|
|
|
.nav-links {
|
|
display: flex;
|
|
gap: 1.25rem; /* Reduced from 2rem for better fit on big monitors */
|
|
flex-shrink: 0; /* Don't shrink nav links */
|
|
margin-left: auto; /* Push to the right side */
|
|
margin-right: 1.5rem; /* Space before user menu */
|
|
}
|
|
|
|
/* Language Toggle */
|
|
.nav-lang-toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.25rem;
|
|
background: transparent;
|
|
border: 1px solid rgba(23, 42, 89, 0.2);
|
|
border-radius: 4px;
|
|
padding: 0.35rem 0.6rem;
|
|
cursor: pointer;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 13px;
|
|
color: #172a59;
|
|
transition: all 0.2s ease;
|
|
flex-shrink: 0; /* Don't shrink language toggle */
|
|
}
|
|
|
|
.nav-lang-toggle:hover {
|
|
border-color: #0a3dfa;
|
|
background: rgba(10, 61, 250, 0.05);
|
|
}
|
|
|
|
.lang-active {
|
|
color: #0a3dfa;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.lang-inactive {
|
|
color: #9ca3af;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.lang-separator {
|
|
color: rgba(23, 42, 89, 0.3);
|
|
font-weight: 300;
|
|
}
|
|
|
|
/* Theme Toggle */
|
|
.nav-theme-toggle {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
position: relative;
|
|
background: transparent;
|
|
border: 1px solid rgba(23, 42, 89, 0.2);
|
|
border-radius: 4px;
|
|
padding: 0.35rem 0.5rem;
|
|
cursor: pointer;
|
|
font-size: 16px;
|
|
transition: all 0.2s ease;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nav-theme-toggle:hover {
|
|
border-color: #0a3dfa;
|
|
background: rgba(10, 61, 250, 0.05);
|
|
}
|
|
|
|
.theme-icon {
|
|
line-height: 1;
|
|
}
|
|
|
|
.theme-auto-badge {
|
|
position: absolute;
|
|
bottom: -2px;
|
|
right: -2px;
|
|
font-size: 8px;
|
|
font-weight: 700;
|
|
color: white;
|
|
background: #0a3dfa;
|
|
border-radius: 2px;
|
|
padding: 1px 3px;
|
|
line-height: 1;
|
|
}
|
|
|
|
/* Data Backend Indicator */
|
|
.nav-backend-indicator {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 0.25rem;
|
|
background: transparent;
|
|
border: 1px solid rgba(23, 42, 89, 0.2);
|
|
border-radius: 4px;
|
|
padding: 0.35rem 0.5rem;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
transition: all 0.2s ease;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nav-backend-indicator:hover {
|
|
border-color: #0a3dfa;
|
|
background: rgba(10, 61, 250, 0.05);
|
|
}
|
|
|
|
.backend-icon {
|
|
font-size: 14px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.backend-label {
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
color: rgba(23, 42, 89, 0.7);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
/* User Account Dropdown */
|
|
.nav-user {
|
|
position: relative;
|
|
margin-left: 1rem; /* Reduced from 1.5rem */
|
|
flex-shrink: 0; /* Don't shrink user button */
|
|
}
|
|
|
|
.nav-user-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
background: transparent;
|
|
border: 1px solid rgba(23, 42, 89, 0.2);
|
|
border-radius: 6px;
|
|
padding: 0.4rem 0.75rem;
|
|
cursor: pointer;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 14px;
|
|
color: #172a59;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.nav-user-btn:hover {
|
|
background: rgba(10, 61, 250, 0.05);
|
|
border-color: #0a3dfa;
|
|
}
|
|
|
|
.nav-user-icon {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.nav-user-name {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.nav-user-chevron {
|
|
font-size: 10px;
|
|
color: #6b7280;
|
|
}
|
|
|
|
.nav-user-menu {
|
|
position: absolute;
|
|
top: calc(100% + 8px);
|
|
right: 0;
|
|
background: white;
|
|
border: 1px solid rgba(23, 42, 89, 0.15);
|
|
border-radius: 8px;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
min-width: 160px;
|
|
z-index: 1001;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.nav-user-info {
|
|
padding: 0.75rem 1rem;
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.1);
|
|
background: #f6f6f6;
|
|
}
|
|
|
|
.nav-user-role {
|
|
font-size: 12px;
|
|
color: #6b7280;
|
|
text-transform: capitalize;
|
|
}
|
|
|
|
.nav-user-logout {
|
|
display: block;
|
|
width: 100%;
|
|
padding: 0.75rem 1rem;
|
|
background: transparent;
|
|
border: none;
|
|
text-align: left;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 14px;
|
|
color: #172a59;
|
|
cursor: pointer;
|
|
transition: background 0.2s ease;
|
|
}
|
|
|
|
.nav-user-logout:hover {
|
|
background: rgba(250, 82, 0, 0.1);
|
|
color: #fa5200;
|
|
}
|
|
|
|
/* User Menu Settings Section */
|
|
.nav-user-settings {
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.1);
|
|
background: rgba(10, 61, 250, 0.02); /* Subtle blue tint to distinguish from other sections */
|
|
}
|
|
|
|
.nav-user-settings-header {
|
|
padding: 0.5rem 1rem 0.25rem;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
color: #9ca3af;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
.nav-user-setting-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
padding: 0.75rem 1rem; /* Increased from 0.6rem for better spacing */
|
|
background: transparent;
|
|
border: none;
|
|
text-align: left;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 13px;
|
|
color: #172a59;
|
|
cursor: pointer;
|
|
transition: background 0.2s ease;
|
|
}
|
|
|
|
.nav-user-setting-item:hover {
|
|
background: rgba(10, 61, 250, 0.06);
|
|
}
|
|
|
|
.nav-user-setting-label {
|
|
color: #6b7280;
|
|
font-size: 12px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nav-user-setting-value {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end; /* Ensure right alignment */
|
|
gap: 0.25rem;
|
|
font-weight: 500;
|
|
min-width: 60px; /* Consistent width for alignment */
|
|
}
|
|
|
|
.nav-user-setting-value .lang-active {
|
|
color: #0a3dfa;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.nav-user-setting-value .lang-inactive {
|
|
color: #9ca3af;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.nav-user-setting-value .lang-separator {
|
|
color: rgba(23, 42, 89, 0.3);
|
|
font-weight: 300;
|
|
}
|
|
|
|
.nav-user-setting-value .theme-icon {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.nav-user-setting-value .theme-auto-badge {
|
|
position: relative;
|
|
bottom: auto;
|
|
right: auto;
|
|
font-size: 8px;
|
|
font-weight: 700;
|
|
color: white;
|
|
background: #0a3dfa;
|
|
border-radius: 2px;
|
|
padding: 1px 3px;
|
|
line-height: 1;
|
|
margin-left: 2px;
|
|
}
|
|
|
|
.nav-user-setting-value .backend-icon {
|
|
font-size: 14px;
|
|
}
|
|
|
|
.nav-user-setting-value .backend-label {
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
color: rgba(23, 42, 89, 0.7);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.nav-link {
|
|
padding: 0.5rem 0; /* Minimal vertical padding like NDE */
|
|
text-decoration: none;
|
|
color: #172a59; /* NDE dark blue, not semi-transparent */
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif; /* Body font for nav */
|
|
font-weight: 400;
|
|
font-size: 16px; /* Match NDE exactly - relatively small */
|
|
transition: all 0.2s ease-in-out;
|
|
position: relative;
|
|
}
|
|
|
|
.nav-link:hover {
|
|
color: #0a3dfa; /* NDE blue on hover */
|
|
}
|
|
|
|
.nav-link.active {
|
|
color: #0a3dfa; /* NDE primary blue */
|
|
font-weight: 400; /* Keep same weight */
|
|
}
|
|
|
|
.nav-link.active::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 2px; /* Subtle underline */
|
|
background: #0a3dfa; /* NDE primary blue */
|
|
}
|
|
|
|
/* Dropdown Menu Styles */
|
|
.nav-dropdown {
|
|
position: relative;
|
|
}
|
|
|
|
.nav-dropdown-trigger {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.35rem;
|
|
padding: 0.5rem 0;
|
|
background: transparent;
|
|
border: none;
|
|
cursor: pointer;
|
|
color: #172a59;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-weight: 400;
|
|
font-size: 16px;
|
|
transition: all 0.2s ease-in-out;
|
|
}
|
|
|
|
.nav-dropdown-trigger:hover {
|
|
color: #0a3dfa;
|
|
}
|
|
|
|
.nav-dropdown-trigger.active {
|
|
color: #0a3dfa;
|
|
}
|
|
|
|
.nav-dropdown-chevron {
|
|
font-size: 10px;
|
|
color: #6b7280;
|
|
transition: transform 0.2s ease;
|
|
}
|
|
|
|
.nav-dropdown-menu {
|
|
position: absolute;
|
|
top: calc(100% + 8px);
|
|
left: 0;
|
|
background: white;
|
|
border: 1px solid rgba(23, 42, 89, 0.15);
|
|
border-radius: 8px;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
min-width: 160px;
|
|
z-index: 1001;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.nav-dropdown-item {
|
|
display: block;
|
|
padding: 0.75rem 1rem;
|
|
text-decoration: none;
|
|
color: #172a59;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 14px;
|
|
font-weight: 400;
|
|
transition: all 0.2s ease;
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.08);
|
|
}
|
|
|
|
.nav-dropdown-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.nav-dropdown-item:hover {
|
|
background: rgba(10, 61, 250, 0.05);
|
|
color: #0a3dfa;
|
|
}
|
|
|
|
.nav-dropdown-item.active {
|
|
background: rgba(10, 61, 250, 0.1);
|
|
color: #0a3dfa;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* External Link Icon */
|
|
.nav-external-icon {
|
|
margin-left: 0.35rem;
|
|
font-size: 0.75em;
|
|
opacity: 0.7;
|
|
}
|
|
|
|
.nav-dropdown-item:hover .nav-external-icon,
|
|
.nav-mobile-link:hover .nav-external-icon {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* Mobile Section Styles */
|
|
.nav-mobile-section {
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.1);
|
|
}
|
|
|
|
.nav-mobile-section:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.nav-mobile-section-title {
|
|
padding: 1rem 1.5rem 0.5rem;
|
|
font-family: 'Poppins', Helvetica, Arial, sans-serif;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
color: #6b7280;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.05em;
|
|
}
|
|
|
|
/* Mobile Hamburger Menu Toggle */
|
|
.nav-mobile-toggle {
|
|
display: none; /* Hidden on desktop */
|
|
background: transparent;
|
|
border: none;
|
|
padding: 0.5rem;
|
|
cursor: pointer;
|
|
z-index: 1001;
|
|
}
|
|
|
|
.hamburger {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: space-between;
|
|
width: 24px;
|
|
height: 18px;
|
|
}
|
|
|
|
.hamburger span {
|
|
display: block;
|
|
width: 100%;
|
|
height: 2px;
|
|
background: #172a59;
|
|
border-radius: 2px;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.hamburger.open span:nth-child(1) {
|
|
transform: translateY(8px) rotate(45deg);
|
|
}
|
|
|
|
.hamburger.open span:nth-child(2) {
|
|
opacity: 0;
|
|
}
|
|
|
|
.hamburger.open span:nth-child(3) {
|
|
transform: translateY(-8px) rotate(-45deg);
|
|
}
|
|
|
|
/* Mobile Menu Overlay */
|
|
.nav-mobile-menu {
|
|
display: none; /* Hidden on desktop */
|
|
position: fixed;
|
|
top: 60px; /* Below nav header */
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: white;
|
|
z-index: 999;
|
|
flex-direction: column;
|
|
overflow-y: auto;
|
|
transform: translateX(100%);
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.nav-mobile-menu.open {
|
|
transform: translateX(0);
|
|
}
|
|
|
|
.nav-mobile-links {
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 1rem 0;
|
|
}
|
|
|
|
.nav-mobile-link {
|
|
display: block;
|
|
padding: 1rem 1.5rem;
|
|
text-decoration: none;
|
|
color: #172a59;
|
|
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
font-size: 1rem;
|
|
font-weight: 400;
|
|
border-bottom: 1px solid rgba(23, 42, 89, 0.1);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.nav-mobile-link:hover,
|
|
.nav-mobile-link.active {
|
|
background: rgba(10, 61, 250, 0.05);
|
|
color: #0a3dfa;
|
|
}
|
|
|
|
.nav-mobile-link.active {
|
|
font-weight: 500;
|
|
border-left: 3px solid #0a3dfa;
|
|
}
|
|
|
|
.nav-mobile-footer {
|
|
margin-top: auto;
|
|
padding: 1.5rem;
|
|
border-top: 1px solid rgba(23, 42, 89, 0.1);
|
|
background: #f6f6f6;
|
|
}
|
|
|
|
.nav-mobile-toggles {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.75rem;
|
|
}
|
|
|
|
.nav-mobile-user {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 0.5rem;
|
|
margin-top: 1rem;
|
|
padding-top: 1rem;
|
|
border-top: 1px solid rgba(23, 42, 89, 0.1);
|
|
}
|
|
|
|
.nav-mobile-user .nav-user-role {
|
|
color: #6b7280;
|
|
font-size: 0.875rem;
|
|
}
|
|
|
|
.nav-mobile-logout {
|
|
margin-left: auto;
|
|
padding: 0.5rem 1rem;
|
|
background: transparent;
|
|
border: 1px solid #fa5200;
|
|
border-radius: 4px;
|
|
color: #fa5200;
|
|
font-size: 0.875rem;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.nav-mobile-logout:hover {
|
|
background: #fa5200;
|
|
color: white;
|
|
}
|
|
|
|
/* Responsive Design */
|
|
|
|
/* Extra-large screens - ensure consistent margins */
|
|
@media (min-width: 1920px) {
|
|
.nav-container {
|
|
padding: 0 4rem; /* Slightly larger padding on ultra-wide */
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1024px) {
|
|
.nav-container {
|
|
padding: 0 2rem;
|
|
height: 80px;
|
|
}
|
|
|
|
.navigation--collapsed .nav-container {
|
|
height: 48px;
|
|
padding: 0 1rem;
|
|
}
|
|
|
|
.nav-links {
|
|
gap: 1.5rem;
|
|
}
|
|
}
|
|
|
|
/* Tablet and Mobile - Show hamburger menu */
|
|
@media (max-width: 900px) {
|
|
.nav-container {
|
|
height: 60px;
|
|
padding: 0 1rem;
|
|
}
|
|
|
|
/* Collapsed state on mobile - same minimal behavior */
|
|
.navigation--collapsed .nav-container {
|
|
height: 48px;
|
|
padding: 0 0.75rem;
|
|
}
|
|
|
|
.navigation--collapsed .nav-logo {
|
|
width: 28px;
|
|
height: 28px;
|
|
}
|
|
|
|
.navigation--collapsed .nav-brand {
|
|
padding: 0;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.nav-brand {
|
|
margin-right: auto;
|
|
}
|
|
|
|
.nav-logo {
|
|
width: 40px;
|
|
height: 40px;
|
|
}
|
|
|
|
.nav-title {
|
|
font-size: 15px;
|
|
}
|
|
|
|
/* Hide desktop navigation */
|
|
.nav-links {
|
|
display: none;
|
|
}
|
|
|
|
.nav-user--desktop {
|
|
display: none;
|
|
}
|
|
|
|
/* Show mobile hamburger */
|
|
.nav-mobile-toggle {
|
|
display: flex;
|
|
}
|
|
|
|
/* Show mobile menu */
|
|
.nav-mobile-menu {
|
|
display: flex;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 480px) {
|
|
.nav-container {
|
|
height: 56px;
|
|
padding: 0 0.75rem;
|
|
}
|
|
|
|
.nav-logo {
|
|
width: 36px;
|
|
height: 36px;
|
|
}
|
|
|
|
.nav-title {
|
|
font-size: 14px;
|
|
}
|
|
|
|
.nav-mobile-link {
|
|
padding: 0.875rem 1.25rem;
|
|
font-size: 0.9375rem;
|
|
}
|
|
}
|
|
|
|
/* Dark mode styles */
|
|
[data-theme="dark"] .navigation {
|
|
background: #1e293b;
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .navigation--collapsed {
|
|
background: transparent;
|
|
border-bottom-color: transparent;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-brand,
|
|
[data-theme="dark"] .nav-title {
|
|
color: #f1f5f9;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-link {
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-link:hover {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-link.active {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-link.active::after {
|
|
background: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-lang-toggle,
|
|
[data-theme="dark"] .nav-theme-toggle,
|
|
[data-theme="dark"] .nav-backend-indicator {
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-lang-toggle:hover,
|
|
[data-theme="dark"] .nav-theme-toggle:hover,
|
|
[data-theme="dark"] .nav-backend-indicator:hover {
|
|
border-color: #60a5fa;
|
|
background: rgba(96, 165, 250, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .backend-label {
|
|
color: rgba(255, 255, 255, 0.7);
|
|
}
|
|
|
|
[data-theme="dark"] .lang-active {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .lang-inactive {
|
|
color: #64748b;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-btn {
|
|
border-color: rgba(255, 255, 255, 0.2);
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-btn:hover {
|
|
border-color: #60a5fa;
|
|
background: rgba(96, 165, 250, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-menu {
|
|
background: #1e293b;
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-info {
|
|
background: #0f172a;
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-logout {
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-logout:hover {
|
|
background: rgba(239, 68, 68, 0.1);
|
|
color: #f87171;
|
|
}
|
|
|
|
/* Dark mode user settings */
|
|
[data-theme="dark"] .nav-user-settings {
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
background: rgba(96, 165, 250, 0.05); /* Subtle blue tint for dark mode */
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-settings-header {
|
|
color: #64748b;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-item {
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-item:hover {
|
|
background: rgba(96, 165, 250, 0.12);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-label {
|
|
color: #94a3b8;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-value .lang-active {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-value .lang-inactive {
|
|
color: #64748b;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-value .lang-separator {
|
|
color: rgba(255, 255, 255, 0.3);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-user-setting-value .backend-label {
|
|
color: rgba(255, 255, 255, 0.7);
|
|
}
|
|
|
|
[data-theme="dark"] .hamburger span {
|
|
background: #f1f5f9;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-menu {
|
|
background: #1e293b;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-link {
|
|
color: #e2e8f0;
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-link:hover,
|
|
[data-theme="dark"] .nav-mobile-link.active {
|
|
background: rgba(96, 165, 250, 0.1);
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-link.active {
|
|
border-left-color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-footer {
|
|
background: #0f172a;
|
|
border-top-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-user {
|
|
border-top-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-user .nav-user-name {
|
|
color: #f1f5f9;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-logout {
|
|
border-color: #f87171;
|
|
color: #f87171;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-logout:hover {
|
|
background: #f87171;
|
|
color: white;
|
|
}
|
|
|
|
/* Dark mode dropdown styles */
|
|
[data-theme="dark"] .nav-dropdown-trigger {
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-trigger:hover {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-trigger.active {
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-menu {
|
|
background: #1e293b;
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-item {
|
|
color: #e2e8f0;
|
|
border-bottom-color: rgba(255, 255, 255, 0.08);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-item:hover {
|
|
background: rgba(96, 165, 250, 0.1);
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-dropdown-item.active {
|
|
background: rgba(96, 165, 250, 0.15);
|
|
color: #60a5fa;
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-section {
|
|
border-bottom-color: rgba(255, 255, 255, 0.1);
|
|
}
|
|
|
|
[data-theme="dark"] .nav-mobile-section-title {
|
|
color: #94a3b8;
|
|
}
|