UNPKG

@metropolle/design-system

Version:

Sistema de design unificado para a plataforma Metropolle

1,766 lines (1,509 loc) 136 kB
/* Metropolle Design System - Component Styles */ /* Animatable custom property for ProfileCard gradient rotation */ @property --mds-pc-angle { syntax: "<angle>"; initial-value: 0deg; inherits: false; } /* Button Styles */ .mds-button { position: relative; display: inline-flex; align-items: center; justify-content: center; gap: var(--mds-spacing-sm); font-family: var(--mds-typography-fontFamily-brand); font-weight: var(--mds-typography-fontWeight-medium); text-decoration: none; border: none; border-radius: var(--mds-spacing-borderRadius-md); cursor: pointer; transition: var(--mds-effects-transition-normal); /* Remove default button styles */ background: none; outline: none; /* Prevent text selection */ -moz-user-select: none; user-select: none; -webkit-user-select: none; } .mds-button:disabled, .mds-button--disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; pointer-events: none; } .mds-button--loading { cursor: wait; } .mds-button--full-width { width: 100%; } /* ========================= Modal Styles NOTE: Modal styling is handled 100% via inline styles in Modal.tsx (same approach as ProfileCard for visual consistency) NO CSS classes are used for the modal card itself. ========================= */ /* Header close button sizing + alignment */ .mds-modal-header > button[aria-label="Close"], .mds-modal-header > button[aria-label="Fechar"] { /* Size and reset */ font-size: 1rem !important; line-height: 1 !important; transition: none !important; padding: 0 !important; background: transparent !important; border: none !important; /* Colors from DS tokens with robust fallback */ color: var(--mds-color-text-secondary, var(--text-secondary, rgba(0,0,0,0.65))) !important; /* Absolute centering like the left icon */ position: absolute !important; right: 16px !important; top: 50% !important; transform: translateY(-50%) !important; width: 32px !important; height: 32px !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; } .mds-modal-header > button[aria-label="Close"]:hover, .mds-modal-header > button[aria-label="Close"]:focus, .mds-modal-header > button[aria-label="Close"]:focus-visible, .mds-modal-header > button[aria-label="Fechar"]:hover, .mds-modal-header > button[aria-label="Fechar"]:focus, .mds-modal-header > button[aria-label="Fechar"]:focus-visible { /* Keep centered on interactive states and avoid lifts/shadows */ position: absolute !important; right: 16px !important; top: 50% !important; transform: translateY(-50%) !important; box-shadow: none !important; transition: none !important; color: var(--mds-color-text-primary, var(--text-primary, #111827)) !important; } /* Responsive modal */ @media (max-width: 768px) { .mds-modal-overlay .mds-modal-card, .modal-overlay .mds-modal-card { min-width: 90vw !important; max-width: 95vw !important; margin: 20px !important; } } /* Button Sizes */ .mds-button--sm { padding: var(--mds-spacing-sm) var(--mds-spacing-md); font-size: var(--mds-typography-fontSize-sm); min-height: 2rem; } .mds-button--md { padding: var(--mds-spacing-md) var(--mds-spacing-lg); font-size: var(--mds-typography-fontSize-base); min-height: 2.5rem; } .mds-button--lg { padding: var(--mds-spacing-lg) var(--mds-spacing-xl); font-size: var(--mds-typography-fontSize-lg); min-height: 3rem; } /* Button Variants */ .mds-button--primary { background: var(--mds-color-brand-primary); color: white; box-shadow: var(--mds-spacing-shadow-md); } .mds-button--primary:hover:not(:disabled) { background: #0044CC; transform: var(--mds-effects-transform-scale-hover); box-shadow: var(--mds-spacing-shadow-lg); } .mds-button--primary:active:not(:disabled) { transform: var(--mds-effects-transform-scale-active); } .mds-button--secondary { background: var(--mds-color-brand-secondary); color: white; box-shadow: var(--mds-spacing-shadow-md); } .mds-button--secondary:hover:not(:disabled) { background: #E68A00; transform: var(--mds-effects-transform-scale-hover); box-shadow: var(--mds-spacing-shadow-lg); } .mds-button--outline { background: transparent; color: var(--mds-color-text-primary); border: 2px solid var(--mds-color-border-medium); } .mds-button--outline:hover:not(:disabled) { background: var(--mds-color-background-secondary); border-color: var(--mds-color-border-strong); } .mds-button--ghost { background: transparent; color: var(--mds-color-text-primary); } .mds-button--ghost:hover:not(:disabled) { background: var(--mds-color-background-secondary); } /* Subtle variant - minimal border, muted colors, perfect for navigation buttons */ .mds-button--subtle { background: transparent; border: 1px solid var(--mds-liquid-border-subtle, rgba(255, 255, 255, 0.12)); color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.7)); } .mds-button--subtle:hover:not(:disabled) { background: var(--mds-liquid-bg-button, rgba(255, 255, 255, 0.08)); border-color: var(--mds-liquid-border-bright, rgba(255, 255, 255, 0.2)); color: var(--mds-color-text-primary); } /* Light theme adjustments for subtle */ html[data-theme="light"] .mds-button--subtle { border-color: var(--mds-liquid-border-subtle, rgba(0, 0, 0, 0.12)); color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.6)); } html[data-theme="light"] .mds-button--subtle:hover:not(:disabled) { background: var(--mds-liquid-bg-button, rgba(0, 0, 0, 0.05)); border-color: var(--mds-liquid-border-bright, rgba(0, 0, 0, 0.2)); color: var(--mds-color-text-primary); } .mds-button--glass { background: var(--glass); color: var(--mds-color-text-primary); border: none; box-shadow: var(--card-shadow-sm); } .mds-button--glass:hover:not(:disabled) { background: var(--accent-soft); box-shadow: var(--card-shadow); } .mds-button--danger { background: var(--mds-color-error, #dc2626); color: #ffffff; border: 1px solid transparent; } .mds-button--danger:hover:not(:disabled) { background: #b91c1c; transform: var(--mds-effects-transform-hoverUp); box-shadow: 0 4px 12px rgba(220, 38, 38, 0.3); } /* Button Icons */ .mds-button__icon { display: inline-flex; align-items: center; justify-content: center; } .mds-button__icon--left { margin-right: calc(var(--mds-spacing-sm) * -0.5); } .mds-button__icon--right { margin-left: calc(var(--mds-spacing-sm) * -0.5); } .mds-button__content { display: inline-flex; align-items: center; } /* Spinner Animation */ .mds-spinner { animation: mds-spin 1s linear infinite; } .mds-spinner__path { animation: mds-spinner-dash 2s ease-in-out infinite; } @keyframes mds-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes mds-spinner-dash { 0% { stroke-dasharray: 1 40; stroke-dashoffset: 0; } 50% { stroke-dasharray: 40 40; stroke-dashoffset: -15; } 100% { stroke-dasharray: 40 40; stroke-dashoffset: -60; } } /* Typography Styles */ .mds-text { font-family: var(--mds-typography-fontFamily-brand); color: var(--mds-color-text-primary); margin: 0; } .mds-text--color-primary { color: var(--mds-color-text-primary); } .mds-text--color-secondary { color: var(--mds-color-text-secondary); } .mds-text--color-muted { color: var(--mds-color-text-muted); } /* Font Weights */ .mds-text--weight-light { font-weight: var(--mds-typography-fontWeight-light); } .mds-text--weight-normal { font-weight: var(--mds-typography-fontWeight-normal); } .mds-text--weight-medium { font-weight: var(--mds-typography-fontWeight-medium); } .mds-text--weight-semibold { font-weight: var(--mds-typography-fontWeight-semibold); } .mds-text--weight-bold { font-weight: var(--mds-typography-fontWeight-bold); } /* Font Sizes */ .mds-text--size-xs { font-size: var(--mds-typography-fontSize-xs); } .mds-text--size-sm { font-size: var(--mds-typography-fontSize-sm); } .mds-text--size-base { font-size: var(--mds-typography-fontSize-base); line-height: var(--mds-typography-lineHeight-normal); } .mds-text--size-lg { font-size: var(--mds-typography-fontSize-lg); } .mds-text--size-xl { font-size: var(--mds-typography-fontSize-xl); } .mds-text--size-2xl { font-size: var(--mds-typography-fontSize-2xl); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--size-3xl { font-size: var(--mds-typography-fontSize-3xl); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--size-4xl { font-size: var(--mds-typography-fontSize-4xl); line-height: var(--mds-typography-lineHeight-tight); } /* Typography Variants */ .mds-text--h1, .mds-text--h2, .mds-text--h3, .mds-text--h4 { font-weight: var(--mds-typography-fontWeight-semibold); line-height: var(--mds-typography-lineHeight-tight); } .mds-text--body { line-height: var(--mds-typography-lineHeight-normal); } .mds-text--caption { font-size: var(--mds-typography-fontSize-sm); color: var(--mds-color-text-secondary); } .mds-text--brand, .mds-brand-logo { font-size: var(--mds-typography-fontSize-4xl); line-height: var(--mds-typography-lineHeight-tight); letter-spacing: var(--mds-typography-letterSpacing-brand); font-weight: var(--mds-typography-fontWeight-bold); color: var(--mds-color-text-primary); } /* Logo brand class for consistent branding */ .logo-brand { font-size: var(--mds-typography-fontSize-4xl); color: var(--mds-color-text-primary); letter-spacing: var(--mds-typography-letterSpacing-brand); font-weight: var(--mds-typography-fontWeight-bold); font-family: var(--mds-typography-fontFamily-brand); } /* Brand Logo Size Variants - Consistent across all environments */ .mds-brand-logo--sm { font-size: 1.5rem; /* 24px - Navbar size */ letter-spacing: -0.03rem; } .mds-brand-logo--md { font-size: 2rem; /* 32px - Medium contexts */ letter-spacing: -0.04rem; } .mds-brand-logo--lg { font-size: 2rem; /* 32px - Landing/top menu contexts */ letter-spacing: -0.03em; } /* Navbar-specific brand logo - always consistent size */ .navbar-brand-logo, .navbar__brand-logo, .login-brand-logo { font-size: 1.5rem !important; letter-spacing: -0.03rem !important; font-weight: var(--mds-typography-fontWeight-bold) !important; font-family: var(--mds-typography-fontFamily-brand) !important; color: var(--mds-color-text-primary) !important; } /* Brand Logo Responsive */ @media (max-width: 768px) { .mds-text--brand, .mds-brand-logo, .logo-brand { font-size: 1.8rem; letter-spacing: var(--mds-typography-letterSpacing-tight); } .mds-brand-logo--sm, .navbar-brand-logo, .navbar__brand-logo, .login-brand-logo { font-size: 1.25rem !important; letter-spacing: -0.02rem !important; } .mds-brand-logo--md { font-size: 1.5rem; letter-spacing: -0.03rem; } .mds-brand-logo--lg { font-size: 2rem; letter-spacing: -0.03em; } } /* Glass Card - Enhanced styles (complementing base tokens.css) */ .mds-glass-card--no-hover:hover { transform: none !important; box-shadow: inherit !important; border-color: inherit !important; background: inherit !important; } /* Utility Classes */ .mds-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .mds-focus-visible { outline: 2px solid var(--mds-color-brand-primary); outline-offset: 2px; } /* Dashboard Components */ /* Dashboard Action Controls */ .mds-dashboard-controls { display: flex; align-items: center; gap: var(--mds-spacing-md); } /* Period Filter Dropdown */ .mds-period-filter { position: relative; display: inline-block; } .mds-period-filter__select { padding: var(--mds-spacing-sm) var(--mds-spacing-md); font-weight: var(--mds-typography-fontWeight-medium); font-size: var(--mds-typography-fontSize-sm); font-family: var(--mds-typography-fontFamily-brand); border-radius: var(--mds-spacing-borderRadius-md); cursor: pointer; outline: none; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-repeat: no-repeat; background-size: 16px; padding-right: 2rem; min-width: 140px; transition: var(--mds-effects-transition-normal); /* Theme-specific styles are applied via CSS custom properties */ background-color: var(--mds-dashboard-control-bg); color: var(--mds-dashboard-control-color); border: 1px solid var(--mds-dashboard-control-border); background-image: var(--mds-dashboard-control-dropdown-icon); background-position: right 8px center; box-shadow: var(--mds-dashboard-control-shadow); } .mds-period-filter__select:hover:not(:disabled) { background-color: var(--mds-dashboard-control-bg-hover); box-shadow: var(--mds-dashboard-control-shadow-hover); } .mds-period-filter__select:disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; } /* Dropdown Options Styling - High specificity to override compat rules */ select.mds-period-filter__select option { background-color: var(--mds-dashboard-control-option-bg) !important; color: var(--mds-dashboard-control-option-color) !important; padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important; -webkit-appearance: none !important; } select.mds-period-filter__select option:hover, select.mds-period-filter__select option:focus, select.mds-period-filter__select option:checked { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; } /* Enhanced contrast for webkit-based browsers */ select.mds-period-filter__select option:focus, select.mds-period-filter__select option:active, select.mds-period-filter__select option[selected] { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; font-weight: 500 !important; } /* Additional styling for browsers that support it */ .mds-period-filter__select::-webkit-scrollbar { width: 8px; } .mds-period-filter__select::-webkit-scrollbar-track { background: var(--mds-dashboard-control-option-bg); } .mds-period-filter__select::-webkit-scrollbar-thumb { background: var(--mds-dashboard-control-border); border-radius: 4px; } .mds-period-filter__select::-webkit-scrollbar-thumb:hover { background: var(--mds-dashboard-control-border-disabled); } /* ========================= Generic Dropdown/Select Component ========================= */ /* Generic dropdown container */ .mds-dropdown { position: relative; display: inline-block; } /* Generic themed select - inherits dashboard control styling */ .mds-select-themed { padding: var(--mds-spacing-sm) var(--mds-spacing-md) !important; font-weight: var(--mds-typography-fontWeight-medium) !important; font-size: var(--mds-typography-fontSize-sm) !important; font-family: var(--mds-typography-fontFamily-brand) !important; border-radius: var(--mds-spacing-borderRadius-md) !important; cursor: pointer !important; outline: none !important; -webkit-appearance: none !important; -moz-appearance: none !important; appearance: none !important; background-repeat: no-repeat !important; background-size: 16px !important; padding-right: 2rem !important; transition: var(--mds-effects-transition-normal) !important; /* Theme-specific styles are applied via CSS custom properties */ background-color: var(--mds-dashboard-control-bg) !important; color: var(--mds-dashboard-control-color) !important; border: 1px solid var(--mds-dashboard-control-border) !important; background-image: var(--mds-dashboard-control-dropdown-icon) !important; background-position: right 8px center !important; box-shadow: var(--mds-dashboard-control-shadow) !important; } .mds-select-themed:hover:not(:disabled) { background-color: var(--mds-dashboard-control-bg-hover) !important; box-shadow: var(--mds-dashboard-control-shadow-hover) !important; } .mds-select-themed:disabled { opacity: var(--mds-effects-opacity-disabled) !important; cursor: not-allowed !important; } /* Dropdown Options Styling - High specificity to override compat rules */ select.mds-select-themed option { background-color: var(--mds-dashboard-control-option-bg) !important; color: var(--mds-dashboard-control-option-color) !important; padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important; -webkit-appearance: none !important; } select.mds-select-themed option:hover, select.mds-select-themed option:focus, select.mds-select-themed option:checked { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; } /* Enhanced contrast for webkit-based browsers */ select.mds-select-themed option:focus, select.mds-select-themed option:active, select.mds-select-themed option[selected] { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; font-weight: 500 !important; } /* Maximum specificity for geo dropdowns to ensure they always work */ html .mds-dropdown select.mds-select-themed option { background-color: var(--mds-dashboard-control-option-bg) !important; color: var(--mds-dashboard-control-option-color) !important; } html .mds-dropdown select.mds-select-themed option:hover, html .mds-dropdown select.mds-select-themed option:focus, html .mds-dropdown select.mds-select-themed option:checked { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; } /* Absolute specificity to override any browser or other CSS */ html body .mds-dropdown select.mds-select-themed option, html body div .mds-dropdown select.mds-select-themed option { background-color: var(--mds-dashboard-control-option-bg) !important; color: var(--mds-dashboard-control-option-color) !important; padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important; font-size: var(--mds-typography-fontSize-sm) !important; font-family: var(--mds-typography-fontFamily-brand) !important; } html body .mds-dropdown select.mds-select-themed option:hover, html body .mds-dropdown select.mds-select-themed option:focus, html body .mds-dropdown select.mds-select-themed option:checked, html body div .mds-dropdown select.mds-select-themed option:hover, html body div .mds-dropdown select.mds-select-themed option:focus, html body div .mds-dropdown select.mds-select-themed option:checked { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; font-weight: 500 !important; } /* Ultimate specificity safeguard for geo dropdowns */ html body div.mds-dropdown select.mds-select-themed { background-color: var(--mds-dashboard-control-bg) !important; color: var(--mds-dashboard-control-color) !important; border: 1px solid var(--mds-dashboard-control-border) !important; background-image: var(--mds-dashboard-control-dropdown-icon) !important; background-position: right 8px center !important; background-repeat: no-repeat !important; background-size: 16px !important; padding-right: 2rem !important; } /* Additional styling for browsers that support it */ .mds-select-themed::-webkit-scrollbar { width: 8px; } .mds-select-themed::-webkit-scrollbar-track { background: var(--mds-dashboard-control-option-bg); } .mds-select-themed::-webkit-scrollbar-thumb { background: var(--mds-dashboard-control-border); border-radius: 4px; } .mds-select-themed::-webkit-scrollbar-thumb:hover { background: var(--mds-dashboard-control-border-disabled); } /* Compatibility alias - maps period filter to generic themed select */ .mds-period-filter__select { /* Copy all styles from .mds-select-themed for full compatibility */ padding: var(--mds-spacing-sm) var(--mds-spacing-md); font-weight: var(--mds-typography-fontWeight-medium); font-size: var(--mds-typography-fontSize-sm); font-family: var(--mds-typography-fontFamily-brand); border-radius: var(--mds-spacing-borderRadius-md); cursor: pointer; outline: none; -webkit-appearance: none; -moz-appearance: none; appearance: none; background-repeat: no-repeat; background-size: 16px; padding-right: 2rem; min-width: 140px; transition: var(--mds-effects-transition-normal); /* Theme-specific styles are applied via CSS custom properties */ background-color: var(--mds-dashboard-control-bg); color: var(--mds-dashboard-control-color); border: 1px solid var(--mds-dashboard-control-border); background-image: var(--mds-dashboard-control-dropdown-icon); background-position: right 8px center; box-shadow: var(--mds-dashboard-control-shadow); } .mds-period-filter__select:hover:not(:disabled) { background-color: var(--mds-dashboard-control-bg-hover); box-shadow: var(--mds-dashboard-control-shadow-hover); } .mds-period-filter__select:disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; } /* Dashboard Refresh Button */ .mds-dashboard-refresh { padding: var(--mds-spacing-sm) var(--mds-spacing-md); font-weight: var(--mds-typography-fontWeight-medium); font-size: var(--mds-typography-fontSize-sm); font-family: var(--mds-typography-fontFamily-brand); border-radius: var(--mds-spacing-borderRadius-md); cursor: pointer; outline: none; border: 1px solid var(--mds-dashboard-control-border); transition: var(--mds-effects-transition-normal); min-width: 140px; width: 140px; /* Theme-specific styles */ background-color: var(--mds-dashboard-control-bg); color: var(--mds-dashboard-control-color); box-shadow: var(--mds-dashboard-control-shadow); } .mds-dashboard-refresh:hover:not(:disabled) { background-color: var(--mds-dashboard-control-bg-hover); box-shadow: var(--mds-dashboard-control-shadow-hover); } .mds-dashboard-refresh:disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; background-color: transparent !important; border: 2px solid var(--mds-dashboard-control-border-disabled); transform: none !important; box-shadow: none !important; } /* Theme Support - Default (Dark Theme) */ :root { /* Dashboard Control Variables - Dark Theme (default) */ --mds-dashboard-control-bg: rgba(0, 0, 0, 0.35); --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.5); --mds-dashboard-control-color: #ffffff; --mds-dashboard-control-border: rgba(255, 255, 255, 0.18); --mds-dashboard-control-border-disabled: rgba(255, 255, 255, 0.3); --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.4); --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23ffffff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); /* Dropdown Options - Dark Theme */ --mds-dashboard-control-option-bg: #2a2a2a; --mds-dashboard-control-option-color: #ffffff; --mds-dashboard-control-option-bg-hover: #505050; --mds-dashboard-control-option-color-hover: #ffffff; /* Login specific variables - Dark Theme */ --mds-login-bg: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%); --mds-input-bg: rgba(255, 255, 255, 0.1); --mds-input-focus-border: #aaaaaa; --mds-input-focus-bg: rgba(255, 255, 255, 0.15); --mds-input-focus-shadow: 0 4px 12px rgba(170, 170, 170, 0.2); --mds-error-bg: rgba(200, 200, 200, 0.15); --mds-error-border: rgba(200, 200, 200, 0.3); } /* Theme Toggle (square, themed) */ .mds-theme-toggle { position: relative; display: inline-flex; align-items: center; justify-content: center; width: var(--mds-theme-toggle-size, 2.5rem); height: var(--mds-theme-toggle-size, 2.5rem); min-width: var(--mds-theme-toggle-size, 2.5rem); padding: 0; border-radius: var(--mds-spacing-borderRadius-md); border: 1px solid var(--mds-dashboard-control-border); background-color: var(--mds-dashboard-control-bg); color: var(--mds-dashboard-control-color); box-shadow: var(--mds-dashboard-control-shadow); cursor: pointer; outline: none; transition: var(--mds-effects-transition-normal); } /* Force dark background in dark theme */ .mds-theme-toggle[data-theme="dark"] { background-color: rgba(0, 0, 0, 0.35) !important; border: 1px solid rgba(255, 255, 255, 0.18) !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3) !important; } .mds-theme-toggle:hover:not(:disabled) { background-color: var(--mds-dashboard-control-bg-hover); box-shadow: var(--mds-dashboard-control-shadow-hover); } /* Force dark hover in dark theme */ .mds-theme-toggle[data-theme="dark"]:hover:not(:disabled) { background-color: rgba(0, 0, 0, 0.5) !important; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4) !important; } .mds-theme-toggle:disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; background-color: transparent !important; border: 2px solid var(--mds-dashboard-control-border-disabled); box-shadow: none !important; } .mds-theme-toggle--sm { --mds-theme-toggle-size: 2rem; } .mds-theme-toggle--md { --mds-theme-toggle-size: 2.5rem; } .mds-theme-toggle--lg { --mds-theme-toggle-size: 3rem; } /* Monochromatic theme toggle icons via CSS pseudo-elements */ .mds-theme-toggle[data-theme="light"]::before { content: ''; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z' fill='%23000000'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; background-position: center; } .mds-theme-toggle[data-theme="dark"]::before { content: ''; position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 20px; height: 20px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Ccircle cx='12' cy='12' r='4' fill='%23ffffff'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); background-size: contain; background-repeat: no-repeat; background-position: center; } /* Light Theme Support */ [data-theme="light"] { --mds-dashboard-control-bg: rgba(0, 0, 0, 0.1); --mds-dashboard-control-bg-hover: rgba(0, 0, 0, 0.15); --mds-dashboard-control-color: #1a1a1a; --mds-dashboard-control-border: rgba(0, 0, 0, 0.1); --mds-dashboard-control-border-disabled: rgba(0, 0, 0, 0.3); --mds-dashboard-control-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); --mds-dashboard-control-shadow-hover: 0 4px 12px rgba(0, 0, 0, 0.15); --mds-dashboard-control-dropdown-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); /* Dropdown Options - Light Theme */ --mds-dashboard-control-option-bg: #ffffff; --mds-dashboard-control-option-color: #1a1a1a; --mds-dashboard-control-option-bg-hover: #f0f7ff; --mds-dashboard-control-option-color-hover: #1a1a1a; /* Login specific variables - Light Theme */ --mds-login-bg: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 50%, #dcdcdc 100%); --mds-input-bg: rgba(255, 255, 255, 0.8); --mds-input-focus-border: #666666; --mds-input-focus-bg: rgba(255, 255, 255, 1); --mds-input-focus-shadow: 0 4px 12px rgba(102, 102, 102, 0.15); --mds-error-bg: rgba(150, 150, 150, 0.1); --mds-error-border: rgba(150, 150, 150, 0.3); } /* Form Input Styles */ .mds-input { position: relative; display: block; width: 100%; padding: var(--mds-spacing-md) var(--mds-spacing-md); font-family: var(--mds-typography-fontFamily-brand); font-size: var(--mds-typography-fontSize-base); font-weight: var(--mds-typography-fontWeight-normal); line-height: var(--mds-typography-lineHeight-normal); color: var(--mds-color-text-primary); background-color: var(--mds-color-background-primary); border: 2px solid var(--mds-color-border-medium); border-radius: var(--mds-spacing-borderRadius-md); outline: none; transition: var(--mds-effects-transition-normal); } .mds-input:focus { border-color: var(--mds-color-brand-primary); box-shadow: 0 0 0 3px rgba(0, 111, 238, 0.1); } .mds-input:disabled { opacity: var(--mds-effects-opacity-disabled); cursor: not-allowed; background-color: var(--mds-color-background-secondary); } .mds-input--error { border-color: #dc2626; background-color: #fef2f2; } .mds-input--error:focus { border-color: #dc2626; box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.1); } /* Readonly input display (non-editable) */ .mds-input-readonly { padding: 10px 12px; background-color: rgba(255, 255, 255, 0.05); border-radius: 6px; color: var(--mds-color-text-secondary, var(--text-secondary)); font-size: 0.95rem; } /* Textarea specific styles */ .mds-textarea { resize: vertical; min-height: 80px; } /* Select specific styles */ .mds-select { -webkit-appearance: none; -moz-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); background-position: right var(--mds-spacing-md) center; background-repeat: no-repeat; background-size: 16px; padding-right: calc(var(--mds-spacing-md) + 24px); } .mds-select:disabled { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239CA3AF' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); } /* Select dropdown option styles for .mds-input - fixes Edge/Windows dropdown visibility */ select.mds-input { -webkit-appearance: none; -moz-appearance: none; appearance: none; color-scheme: dark; /* Forces OS to render dropdown with dark theme on Edge/Chrome Windows */ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%23374151' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); background-position: right var(--mds-spacing-md) center; background-repeat: no-repeat; background-size: 16px; padding-right: calc(var(--mds-spacing-md) + 24px); cursor: pointer; } select.mds-input:disabled { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%239CA3AF' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); cursor: not-allowed; } select.mds-input option { background-color: var(--mds-dashboard-control-option-bg) !important; color: var(--mds-dashboard-control-option-color) !important; padding: var(--mds-spacing-xs) var(--mds-spacing-sm) !important; } select.mds-input option:hover, select.mds-input option:focus, select.mds-input option:checked { background-color: var(--mds-dashboard-control-option-bg-hover) !important; color: var(--mds-dashboard-control-option-color-hover) !important; } /* Light theme override for select.mds-input */ html[data-theme="light"] select.mds-input { color-scheme: light; } /* ============================================ Custom Select Component (JavaScript-rendered dropdown) Cross-browser compatible - works on Edge/Chrome Windows ============================================ */ /* Select Trigger Button */ .mds-select-trigger { display: inline-flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-width: 0; max-width: 100%; box-sizing: border-box; padding: 10px 12px; font-family: var(--mds-typography-fontFamily-brand, system-ui, sans-serif); font-size: 0.95rem; line-height: 1.5; color: var(--mds-color-text-primary, #ffffff); background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 8px; cursor: pointer; transition: all 0.2s ease; text-align: left; outline: none; overflow: hidden; } .mds-select-trigger:hover:not(:disabled) { background-color: rgba(255, 255, 255, 0.12); border-color: rgba(255, 255, 255, 0.25); } .mds-select-trigger:focus:not(:disabled) { border-color: var(--mds-color-primary, #3b82f6); box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25); } .mds-select-trigger--open { border-color: var(--mds-color-primary, #3b82f6); box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.25); } .mds-select-trigger--disabled { opacity: 0.5; cursor: not-allowed; background-color: rgba(255, 255, 255, 0.04); } .mds-select-trigger--loading { cursor: wait; } .mds-select-trigger--error { border-color: var(--mds-color-error, #ef4444); } .mds-select-trigger--error:focus { box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.25); } .mds-select-trigger--full-width { width: 100%; } /* Select Trigger Value */ .mds-select-trigger__value { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mds-select-trigger__placeholder { color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); } /* Select Trigger Icon */ .mds-select-trigger__icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 20px; height: 20px; color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); transition: transform 0.2s ease; } .mds-select-trigger--open .mds-select-trigger__icon { transform: rotate(180deg); } .mds-select-chevron { width: 16px; height: 16px; } .mds-select-spinner { width: 16px; height: 16px; animation: mds-select-spin 1s linear infinite; } @keyframes mds-select-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Select Dropdown — Meridian flat floating surface */ .mds-select-dropdown { background-color: var(--mds-dashboard-control-option-bg, #2a2a2a); border: none; border-radius: var(--r-sm, 4px); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); overflow: hidden; /* Changed from auto to hidden - scroll is on .mds-select-options */ animation: mds-select-dropdown-enter 0.15s ease-out; display: flex; flex-direction: column; } @keyframes mds-select-dropdown-enter { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } } /* Select Search */ .mds-select-search { position: relative; /* Required for absolute positioning of search icon */ flex-shrink: 0; /* Don't shrink in flex container */ padding: 8px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); background-color: var(--mds-dashboard-control-option-bg, #2a2a2a); } .mds-select-search__input { width: 100%; padding: 8px 12px 8px 36px; font-family: var(--mds-typography-fontFamily-brand, system-ui, sans-serif); font-size: 0.9rem; color: var(--mds-color-text-primary, #ffffff); background-color: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 6px; outline: none; transition: all 0.2s ease; } .mds-select-search__input:focus { border-color: var(--mds-color-primary, #3b82f6); background-color: rgba(255, 255, 255, 0.12); } .mds-select-search__input::-moz-placeholder { color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); } .mds-select-search__input::placeholder { color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); } .mds-select-search__icon { position: absolute; left: 20px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); pointer-events: none; } /* Select Options List */ .mds-select-options { list-style: none; margin: 0; padding: 4px; overflow-y: auto; flex: 1; min-height: 0; /* Required for flex scroll */ } /* Select Option */ .mds-select-option { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; font-size: 0.95rem; color: var(--mds-dashboard-control-option-color, #ffffff); background-color: transparent; border-radius: 6px; cursor: pointer; transition: background-color 0.15s ease; } .mds-select-option:hover, .mds-select-option--highlighted { background-color: var(--mds-dashboard-control-option-bg-hover, #505050); } .mds-select-option--selected { color: var(--mds-color-primary, #3b82f6); font-weight: 500; } .mds-select-option--disabled { opacity: 0.5; cursor: not-allowed; } .mds-select-option--disabled:hover { background-color: transparent; } .mds-select-option--empty { color: var(--mds-color-text-secondary, rgba(255, 255, 255, 0.5)); font-style: italic; cursor: default; } .mds-select-option--empty:hover { background-color: transparent; } .mds-select-option__label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mds-select-option__check { flex-shrink: 0; width: 16px; height: 16px; color: var(--mds-color-primary, #3b82f6); } /* Select Size Variants */ .mds-select--sm .mds-select-trigger { padding: 6px 10px; font-size: 0.85rem; } .mds-select--sm .mds-select-option { padding: 6px 10px; font-size: 0.85rem; } .mds-select--lg .mds-select-trigger { padding: 14px 16px; font-size: 1.05rem; } .mds-select--lg .mds-select-option { padding: 12px 16px; font-size: 1.05rem; } /* Light Theme Overrides */ html[data-theme="light"] .mds-select-trigger { color: var(--mds-color-text-primary, #1a1a1a); background-color: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.15); } html[data-theme="light"] .mds-select-trigger:hover:not(:disabled) { background-color: rgba(0, 0, 0, 0.08); border-color: rgba(0, 0, 0, 0.25); } html[data-theme="light"] .mds-select-trigger__placeholder { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } html[data-theme="light"] .mds-select-trigger__icon { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } html[data-theme="light"] .mds-select-dropdown { background-color: var(--mds-dashboard-control-option-bg, #ffffff); border-color: rgba(0, 0, 0, 0.15); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15), 0 2px 8px rgba(0, 0, 0, 0.1); } html[data-theme="light"] .mds-select-search { border-bottom-color: rgba(0, 0, 0, 0.1); background-color: var(--mds-dashboard-control-option-bg, #ffffff); } html[data-theme="light"] .mds-select-search__input { color: var(--mds-color-text-primary, #1a1a1a); background-color: rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.15); } html[data-theme="light"] .mds-select-search__input:focus { background-color: rgba(0, 0, 0, 0.02); } html[data-theme="light"] .mds-select-search__input::-moz-placeholder { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } html[data-theme="light"] .mds-select-search__input::placeholder { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } html[data-theme="light"] .mds-select-search__icon { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } html[data-theme="light"] .mds-select-option { color: var(--mds-dashboard-control-option-color, #1a1a1a); } html[data-theme="light"] .mds-select-option:hover, html[data-theme="light"] .mds-select-option--highlighted { background-color: var(--mds-dashboard-control-option-bg-hover, #f0f7ff); } html[data-theme="light"] .mds-select-option--empty { color: var(--mds-color-text-secondary, rgba(0, 0, 0, 0.5)); } /* Label styles */ .mds-label { display: block; font-family: var(--mds-typography-fontFamily-brand); font-size: var(--mds-typography-fontSize-sm); font-weight: var(--mds-typography-fontWeight-medium); color: var(--mds-color-text-primary); margin-bottom: var(--mds-spacing-xs); } .mds-label--required::after { content: " *"; color: #dc2626; } /* Field group */ .mds-field { margin-bottom: var(--mds-spacing-lg); } .mds-field-error { display: block; font-family: var(--mds-typography-fontFamily-brand); font-size: var(--mds-typography-fontSize-sm); color: #dc2626; margin-top: var(--mds-spacing-xs); } .mds-field-help { display: block; font-family: var(--mds-typography-fontFamily-brand); font-size: var(--mds-typography-fontSize-sm); color: var(--mds-color-text-secondary); margin-top: var(--mds-spacing-xs); } /* Dashboard Layout Utilities */ .mds-dashboard-grid { display: grid; gap: var(--mds-spacing-xl); } .mds-dashboard-stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--mds-spacing-lg); } .mds-dashboard-charts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: var(--mds-spacing-lg); } /* Dashboard Content Sections */ .mds-dashboard-section { display: flex; flex-direction: column; gap: var(--mds-spacing-xl); } /* Dashboard Progress Bars */ .mds-progress-row { display: flex; align-items: center; gap: 15px; } .mds-progress-label { width: 120px; font-size: 0.9rem; color: var(--mds-color-text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .mds-progress-label--wide { width: 200px; } .mds-progress-track { flex: 1; height: 8px; background: var(--mds-color-border, rgba(128, 128, 128, 0.2)); border-radius: 4px; overflow: hidden; } .mds-progress-fill { height: 100%; border-radius: 4px; transition: width 0.3s ease; } .mds-progress-fill--blue { background: linear-gradient(90deg, #007bff, #0056b3); } .mds-progress-fill--green { background: linear-gradient(90deg, #28a745, #20c997); } .mds-progress-fill--yellow { background: linear-gradient(90deg, #ffc107, #fd7e14); } .mds-progress-value { width: 60px; text-align: right; font-size: 0.9rem; color: var(--mds-color-text-primary); font-weight: 500; } /* Dashboard Stat Items (themed) */ .mds-stat-box { padding: 15px; background: var(--mds-stat-box-bg, rgba(255, 255, 255, 0.05)); border-radius: 8px; text-align: center; border: var(--mds-stat-box-border, none); } html[data-theme="light"] .mds-stat-box { --mds-stat-box-bg: rgba(0, 0, 0, 0.03); --mds-stat-box-border: 1px solid rgba(0, 0, 0, 0.1); } .mds-stat-box__value { font-size: 1.5rem; font-weight: 600; margin-bottom: 5px; color: var(--mds-color-text-primary); } .mds-stat-box__label { font-size: 0.8rem; color: var(--mds-color-text-secondary); } /* Dashboard Activity Items */ .mds-activity-item { display: flex; align-items: center; gap: 15px; padding: 15px; background: var(--mds-color-border-light, rgba(128, 128, 128, 0.1)); border-radius: 8px; transition: all 0.3s ease; } .mds-activity-icon { font-size: 1.5rem; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: var(--mds-color-border, rgba(128, 128, 128, 0.2)); border-radius: 8px; } .mds-activity-content { flex: 1; } .mds-activity-text { font-size: 0.9rem; color: var(--mds-color-text-primary); margin-bottom: 5px; } .mds-activity-time { font-size: 0.8rem; color: var(--mds-color-text-tertiary, var(--mds-color-text-secondary)); } .mds-activity-status { padding: 4px 12px; border-radius: 12px; font-size: 0.8rem; font-weight: 500; background: rgba(40, 167, 69, 0.2); color: #28a745; } /* Dashboard Card Header */ .mds-card-header { margin-bottom: 25px; font-size: 1.5rem; font-weight: 600; color: inherit; } .mds-card-header--sm { font-size: 1.25rem; margin-bottom: 15px; } /* Card Title/Subtitle */ .mds-card-title { margin: 0 0 0.5rem 0; font-size: 1.25rem; font-weight: 600; color: var(--mds-color-text-primary, inherit); } .mds-card-subtitle { margin: 0; font-size: 0.9rem; opacity: 0.8; color: var(--mds-color-text-secondary, inherit); } /* ======================================== Layout Utility Classes - @back optimization ======================================== */ /* Flexbox utilities */ .mds-flex { display: flex; } .mds-flex-col { display: flex; flex-direction: column; } .mds-flex-center { display: flex; align-items: center; justify-content: center; } .mds-flex-between { display: flex; align-items: center; justify-content: space-between; } .mds-flex-start { display: flex; align-items: flex-start; justify-content: flex-start; } .mds-flex-end { display: flex; align-items: center; justify-content: flex-end; } /* Spacing utilities */ .mds-gap-xs { gap: var(--mds-spacing-xs); } .mds-gap-sm { gap: var(--mds-spacing-sm); } .mds-gap-md { gap: var(--mds-spacing-md); } .mds-gap-lg { gap: var(--mds-spacing-lg); } .mds-gap-xl { gap: var(--mds-spacing-xl); } /* Padding utilities */ .mds-p-xs { padding: var(--mds-spacing-xs); } .mds-p-sm { padding: var(--mds-spacing-sm); } .mds-p-md { padding: var(--mds-spacing-md); } .mds-p-lg { padding: var(--mds-spacing-lg); } .mds-p-xl { padding: var(--mds-spacing-xl); } /* Margin utilities */ .mds-m-xs { margin: var(--mds-spacing-xs); } .mds-m-sm { margin: var(--mds-spacing-sm); } .mds-m-md { margin: var(--mds-spacing-md); } .mds-m-lg { margin: var(--mds-spacing-lg); } .mds-m-xl { margin: var(--mds-spacing-xl); } /* Margin bottom utilities */ .mds-mb-xs { margin-bottom: var(--mds-spacing-xs); } .mds-mb-sm { margin-bottom: var(--mds-spacing-sm); } .mds-mb-md { margin-bottom: var(--mds-spacing-md); } .mds-mb-lg { margin-bottom: var(--mds-spacing-lg); } .mds-mb-xl { margin-bottom: var(--mds-spacing-xl); } /* ======================================== Dashboard Layout Classes - @back optimization ======================================== */ /* Dashboard container */ .mds-dashboard-container { display: flex; min-height: 100vh; font-family: var(--mds-typography-fontFamily-brand); transition: all 0.3s ease; background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 50%, #2a2a2a 100%); background-attachment: fixed; background-repeat: no-repeat; background-size: 100% 100%; color: #ffffff; } /* Light theme dashboard container */ html[data-theme="light"] .mds-dashboard-container { background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 50%, #cbd5e1 100%); color: #1a1a1a; } /* Dashboard main content */ .mds-dashboard-main { flex: 1; margin-left: 260px; margin-top: 60px; display: flex; flex-direction: column; min-height: calc(100vh - 60px); } /* Page header */ .mds-page-header { padding: var(--mds-spacing-lg) var(--mds-spacing-xl) var(--mds-spacing-md) var(--mds-spacing-xl); box-shadow: var(--card-shadow-sm); } /* Dark theme page header */ html[data-theme="dark"] .mds-page-header { background-color: var(--panel); } /* Light theme page header */ html[data-theme="light"] .mds-page-header { background-color: var(--panel); } /* Page title */ .mds-page-title { margin: 0 0 var(--mds-spacing-xs) 0; font-size: var(--mds-typography-fontSize-xl); font-weight: var(--mds-typography-fontWeight-semibold); color: var(--mds-colors-color-text-primary); } /* Page description */ .mds-page-description { margin: 0; font-size: var(--mds-typography-fontSize-sm); color: var(--mds-colors-color-text-secondary); line-height: var(--mds-typography-lineHeight-normal); } /* Main content area */ .mds-main-content { flex: 1; padding: var(--mds-spacing-xl); overflow-y: auto; position: relative; } /* ======================================== Navbar Classes - @back optimization ======================================== */ /* Fixed navbar */ .mds-navbar { position: fixed; top: 0; left: 0; right: 0; height: 60px; z-index: 1000; box-shadow: var(--card-shadow-sm); transition: all 0.3s ease; font-family: var(--mds-typography-fontFamily-brand); } /* Dark theme navbar */ html[data-theme="dark"] .mds-navbar { background-color: var(--panel); } /* Light theme navbar */ html[data-theme="light"] .mds-navbar { background-color: var(--panel); } /* Navbar content container */ .mds-navbar-content { display: flex; align-items: center; justify-content: space-between; height: 100%; max-width: 100%; } /* Navbar brand section */ .mds-navbar-brand { display: flex; align-items: center; gap: var(--mds-spacing-md); } /* Navbar actions section */ .mds-navbar-actions { display: flex; align-items: center; gap: var(--mds-spacing-md); } /* User info in navbar */ .mds-navbar-user { font-size: var(--mds-typography-fontSize-sm); color: var(--mds-colors-color-text-secondary); margin-right: var(--mds-spacing-sm); } /* Sidebar-width brand section */ .mds-navbar-brand-section { width: 260px; display: flex; align-items: center; justify-content: center; } /* Center user info section */ .mds-navbar-center { flex: 1; display: flex; justify-content: center; } /* User info badge */ .mds-navbar-user-badge { display: flex; align-items: center; gap: var(--mds-spacing-sm); font-size: var(--mds-typography-fontSize-sm); padding: var(--mds-spacing-sm) var(--mds-spacing-md); border-radius: var(--r, 2px); border: none; font-weight: var(--mds-typography-fontWeight-medium); } /* Dark theme user badge *