Spaces:
Runtime error
Runtime error
| .layout { | |
| display: flex; | |
| min-height: 100vh; | |
| } | |
| /* ==================== Sidebar ==================== */ | |
| .sidebar { | |
| width: 260px; | |
| background: var(--bg-white); | |
| border-right: 1px solid var(--border); | |
| display: flex; | |
| flex-direction: column; | |
| position: fixed; | |
| height: 100vh; | |
| z-index: 100; | |
| transition: | |
| width 0.3s ease, | |
| transform 0.3s ease; | |
| } | |
| .sidebar.collapsed { | |
| width: 72px; | |
| } | |
| .sidebar-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 1.5rem; | |
| border-bottom: 1px solid var(--border); | |
| min-height: 72px; | |
| } | |
| .sidebar.collapsed .sidebar-header { | |
| justify-content: center; | |
| padding: 1.5rem 1rem; | |
| } | |
| .sidebar-logo { | |
| width: 28px; | |
| height: 28px; | |
| object-fit: contain; | |
| flex-shrink: 0; | |
| } | |
| .mobile-brand .sidebar-logo { | |
| width: 24px; | |
| height: 24px; | |
| } | |
| .sidebar-brand { | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| white-space: nowrap; | |
| } | |
| .brand-name { | |
| font-size: 1.125rem; | |
| font-weight: 800; | |
| color: var(--text-primary); | |
| letter-spacing: -0.01em; | |
| } | |
| .brand-version { | |
| font-size: 0.625rem; | |
| font-weight: 500; | |
| letter-spacing: 0.02em; | |
| color: var(--text-muted); | |
| opacity: 0.7; | |
| margin-top: 1px; | |
| } | |
| /* Collapse Toggle Button - Circular design at edge */ | |
| .collapse-toggle { | |
| position: absolute; | |
| right: -14px; | |
| top: 36px; | |
| width: 28px; | |
| height: 28px; | |
| border-radius: 50%; | |
| background: var(--bg-white); | |
| border: 1px solid var(--border); | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| color: var(--text-secondary); | |
| transition: all 0.2s; | |
| z-index: 101; | |
| padding: 0; | |
| } | |
| .collapse-toggle:hover { | |
| background: var(--primary); | |
| border-color: var(--primary); | |
| color: white; | |
| box-shadow: 0 4px 12px rgba(37, 211, 102, 0.3); | |
| } | |
| .collapse-toggle svg { | |
| width: 16px; | |
| height: 16px; | |
| } | |
| .sidebar.collapsed .collapse-toggle { | |
| right: -14px; | |
| } | |
| .sidebar-nav { | |
| flex: 1; | |
| padding: 1rem 0.75rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.25rem; | |
| overflow-y: auto; | |
| } | |
| .sidebar.collapsed .sidebar-nav { | |
| padding: 1rem 0.5rem; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 0.7rem 1rem; | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| border-radius: var(--radius); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| transition: all 0.2s; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| } | |
| .sidebar.collapsed .nav-item { | |
| justify-content: center; | |
| padding: 0.7rem; | |
| } | |
| .nav-item:hover { | |
| background: var(--bg-light); | |
| color: var(--text-primary); | |
| text-decoration: none; | |
| } | |
| .nav-item.active { | |
| background: var(--primary-soft); | |
| color: var(--primary); | |
| } | |
| .nav-item.active svg { | |
| color: var(--primary); | |
| } | |
| .sidebar-footer { | |
| padding: 0.75rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| border-top: 1px solid var(--border); | |
| } | |
| .sidebar.collapsed .sidebar-footer { | |
| padding: 0.75rem 0.5rem; | |
| } | |
| .theme-toggle-btn { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 0.6rem 0.9rem; | |
| color: var(--text-secondary); | |
| background: none; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.2s; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| } | |
| .appearance-button-cue { | |
| position: relative; | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 24px; | |
| height: 24px; | |
| flex-shrink: 0; | |
| /* Plain icon, no brand orb — the green swatch belonged to the removed palette picker. */ | |
| color: inherit; | |
| } | |
| .sidebar.collapsed .theme-toggle-btn, | |
| .sidebar.collapsed .logout-btn { | |
| justify-content: center; | |
| padding: 0.6rem; | |
| } | |
| .theme-toggle-btn:hover { | |
| background: var(--bg-light); | |
| color: var(--text-primary); | |
| } | |
| .language-menu, | |
| .appearance-menu { | |
| position: relative; | |
| } | |
| .language-menu .theme-toggle-btn, | |
| .appearance-menu .theme-toggle-btn { | |
| width: 100%; | |
| } | |
| .language-menu-list { | |
| position: absolute; | |
| left: 0; | |
| right: 0; | |
| bottom: calc(100% + 0.35rem); | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.15rem; | |
| min-width: 160px; | |
| padding: 0.3rem; | |
| background: var(--bg-white); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| box-shadow: 0 10px 30px rgba(15, 23, 42, 0.16); | |
| z-index: 120; | |
| } | |
| .language-menu-item { | |
| display: flex; | |
| align-items: center; | |
| width: 100%; | |
| min-height: 34px; | |
| padding: 0.45rem 0.6rem; | |
| color: var(--text-secondary); | |
| background: transparent; | |
| border: 0; | |
| border-radius: calc(var(--radius) - 2px); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| text-align: left; | |
| cursor: pointer; | |
| transition: all 0.2s; | |
| } | |
| .language-menu-item:hover { | |
| background: var(--bg-light); | |
| color: var(--text-primary); | |
| } | |
| .language-menu-item.active { | |
| background: var(--primary-soft); | |
| color: var(--primary); | |
| } | |
| .sidebar.collapsed .language-menu-list { | |
| right: auto; | |
| left: calc(100% + 0.5rem); | |
| bottom: 0; | |
| } | |
| .logout-btn { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| padding: 0.6rem 0.9rem; | |
| color: var(--text-secondary); | |
| background: none; | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| font-size: 0.875rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.2s; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| } | |
| .logout-btn:hover { | |
| background: rgba(239, 68, 68, 0.12); | |
| border-color: rgba(239, 68, 68, 0.3); | |
| color: var(--error); | |
| } | |
| /* ==================== Main Content ==================== */ | |
| .main-content { | |
| flex: 1; | |
| margin-left: 260px; | |
| width: calc(100% - 260px); | |
| background: var(--bg-light); | |
| min-height: 100vh; | |
| overflow-x: hidden; | |
| transition: | |
| margin-left 0.3s ease, | |
| width 0.3s ease; | |
| } | |
| .main-content.expanded { | |
| margin-left: 72px; | |
| width: calc(100% - 72px); | |
| } | |
| /* ==================== Mobile Styles ==================== */ | |
| .mobile-header { | |
| display: none; | |
| } | |
| .sidebar-overlay { | |
| display: none; | |
| } | |
| @media (max-width: 767px) { | |
| .mobile-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 56px; | |
| padding: 0 1rem; | |
| background: var(--bg-white); | |
| border-bottom: 1px solid var(--border); | |
| z-index: 90; | |
| } | |
| .mobile-menu-btn { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 40px; | |
| height: 40px; | |
| background: transparent ; | |
| border: none; | |
| color: var(--text-primary); | |
| cursor: pointer; | |
| border-radius: var(--radius); | |
| transition: background 0.2s; | |
| padding: 0; | |
| } | |
| .mobile-menu-btn svg { | |
| color: var(--text-primary); | |
| stroke: var(--text-primary); | |
| } | |
| .mobile-menu-btn:hover { | |
| background: var(--bg-light) ; | |
| } | |
| .mobile-brand { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .mobile-brand .brand-name { | |
| font-size: 1rem; | |
| } | |
| .sidebar.mobile { | |
| transform: translateX(-100%); | |
| width: 280px; | |
| box-shadow: 2px 0 20px rgba(0, 0, 0, 0.1); | |
| } | |
| .sidebar.mobile.open { | |
| transform: translateX(0); | |
| } | |
| .sidebar-overlay { | |
| display: block; | |
| position: fixed; | |
| inset: 0; | |
| background: rgba(0, 0, 0, 0.5); | |
| z-index: 95; | |
| animation: fadeIn 0.2s ease; | |
| } | |
| @keyframes fadeIn { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| .main-content.mobile { | |
| margin-left: 0; | |
| width: 100%; | |
| padding-top: 56px; | |
| height: 100vh; | |
| overflow-y: auto; | |
| -webkit-overflow-scrolling: touch; | |
| } | |
| .collapse-toggle { | |
| display: none; | |
| } | |
| } | |
| /* ==================== RTL support ==================== */ | |
| [dir='rtl'] .sidebar { | |
| border-right: none; | |
| border-left: 1px solid var(--border); | |
| } | |
| [dir='rtl'] .collapse-toggle { | |
| right: auto; | |
| left: -14px; | |
| } | |
| [dir='rtl'] .collapse-toggle svg { | |
| transform: scaleX(-1); | |
| } | |
| [dir='rtl'] .language-menu-item { | |
| text-align: right; | |
| } | |
| [dir='rtl'] .sidebar.collapsed .language-menu-list { | |
| right: calc(100% + 0.5rem); | |
| left: auto; | |
| } | |
| [dir='rtl'] .main-content { | |
| margin-left: 0; | |
| margin-right: 260px; | |
| transition: | |
| margin-right 0.3s ease, | |
| width 0.3s ease; | |
| } | |
| [dir='rtl'] .main-content.expanded { | |
| margin-right: 72px; | |
| } | |
| @media (max-width: 768px) { | |
| [dir='rtl'] .main-content, | |
| [dir='rtl'] .main-content.mobile { | |
| margin-right: 0; | |
| } | |
| } | |