Spaces:
Sleeping
Sleeping
| /* Grid Layouts for Dashboard */ | |
| .grid { | |
| display: grid; | |
| gap: 20px; | |
| } | |
| .grid-3 { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 20px; | |
| } | |
| .grid-4 { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 20px; | |
| } | |
| /* Card Component */ | |
| .card { | |
| background: white; | |
| border-radius: 12px; | |
| padding: 24px; | |
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); | |
| border: 1px solid rgba(0, 0, 0, 0.1); | |
| transition: transform 0.2s ease, box-shadow 0.2s ease; | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| } | |
| .card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 8px 15px rgba(0, 0, 0, 0.15); | |
| } | |
| /* Card content that grows to push button to bottom */ | |
| .card-content { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .card-description { | |
| flex: 1; | |
| margin-bottom: 20px; | |
| } | |
| .card-button { | |
| margin-top: auto; | |
| transition: all 0.2s ease; | |
| } | |
| .card-button:hover { | |
| transform: translateY(-1px); | |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); | |
| } | |
| /* Responsive adjustments */ | |
| @media (max-width: 768px) { | |
| .grid-3, .grid-4 { | |
| grid-template-columns: 1fr; | |
| } | |
| .card { | |
| padding: 16px; | |
| } | |
| } | |
| /* Main App Container */ | |
| .terra-app { | |
| display: flex; | |
| height: 100vh; | |
| background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); | |
| } | |
| /* Sidebar */ | |
| .terra-sidebar { | |
| background: rgba(255, 255, 255, 0.95); | |
| backdrop-filter: blur(10px); | |
| color: #333; | |
| transition: width 0.3s ease; | |
| display: flex; | |
| flex-direction: column; | |
| box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1); | |
| position: relative; | |
| z-index: 100; | |
| border-right: 1px solid rgba(0, 0, 0, 0.1); | |
| } | |
| .terra-sidebar.open { | |
| width: 280px; | |
| } | |
| .terra-sidebar.closed { | |
| width: 70px; | |
| } | |
| /* Logo Section */ | |
| .terra-logo { | |
| padding: 24px 20px; | |
| border-bottom: 1px solid rgba(0, 0, 0, 0.1); | |
| display: flex; | |
| align-items: center; | |
| min-height: 90px; | |
| } | |
| .logo-container { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| flex: 1; | |
| } | |
| .logo-icon { | |
| font-size: 2.5rem; | |
| } | |
| .logo-text h1 { | |
| font-size: 1.6rem; | |
| font-weight: 700; | |
| margin-bottom: 4px; | |
| color: #2E7D32; | |
| } | |
| .logo-text p { | |
| font-size: 0.8rem; | |
| color: #666; | |
| } | |
| /* Navigation */ | |
| .terra-nav { | |
| flex: 1; | |
| padding: 16px 0; | |
| overflow-y: auto; | |
| } | |
| .terra-nav::-webkit-scrollbar { | |
| width: 4px; | |
| } | |
| .terra-nav::-webkit-scrollbar-track { | |
| background: transparent; | |
| } | |
| .terra-nav::-webkit-scrollbar-thumb { | |
| background: rgba(0, 0, 0, 0.2); | |
| border-radius: 2px; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| padding: 14px 20px; | |
| margin: 3px 12px; | |
| border-radius: 8px; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| position: relative; | |
| color: #333; | |
| } | |
| .nav-item:hover { | |
| background: rgba(46, 125, 50, 0.1); | |
| transform: translateX(2px); | |
| } | |
| .nav-item.active { | |
| background: rgba(46, 125, 50, 0.15); | |
| border-left: 3px solid #2E7D32; | |
| color: #2E7D32; | |
| } | |
| .nav-icon { | |
| font-size: 1.5rem; | |
| margin-right: 14px; | |
| min-width: 28px; | |
| text-align: center; | |
| } | |
| .nav-content { | |
| flex: 1; | |
| } | |
| .nav-name { | |
| font-weight: 600; | |
| font-size: 0.95rem; | |
| display: block; | |
| margin-bottom: 3px; | |
| } | |
| .nav-desc { | |
| font-size: 0.75rem; | |
| opacity: 0.7; | |
| color: #666; | |
| } | |
| /* Sidebar Footer */ | |
| .sidebar-footer { | |
| padding: 20px; | |
| border-top: 1px solid rgba(0, 0, 0, 0.1); | |
| } | |
| .footer-stats { | |
| display: flex; | |
| gap: 16px; | |
| } | |
| .stat { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| flex: 1; | |
| } | |
| .stat-icon { | |
| font-size: 1.3rem; | |
| } | |
| .stat-value { | |
| font-weight: 700; | |
| font-size: 0.95rem; | |
| color: #2E7D32; | |
| } | |
| .stat-label { | |
| font-size: 0.7rem; | |
| color: #666; | |
| } | |
| /* Main Content */ | |
| .terra-main { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| background: linear-gradient(135deg, #f8fdf8 0%, #f0f9f0 100%); | |
| } | |
| /* Header */ | |
| .terra-header { | |
| background: rgba(255, 255, 255, 0.95); | |
| backdrop-filter: blur(10px); | |
| border-bottom: 1px solid rgba(76, 175, 80, 0.1); | |
| padding: 24px 32px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); | |
| } | |
| .header-left { | |
| flex: 1; | |
| } | |
| .page-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| margin: 0 0 8px 0; | |
| color: #2d5016; | |
| font-size: 2rem; | |
| font-weight: 700; | |
| } | |
| .title-icon { | |
| font-size: 2.2rem; | |
| } | |
| .page-subtitle { | |
| margin: 0; | |
| color: #4a7c23; | |
| font-size: 1rem; | |
| font-weight: 500; | |
| } | |
| .header-right { | |
| display: flex; | |
| align-items: center; | |
| } | |
| .header-stats { | |
| display: flex; | |
| gap: 20px; | |
| } | |
| .header-stat { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| background: rgba(76, 175, 80, 0.1); | |
| padding: 16px 20px; | |
| border-radius: 12px; | |
| border: 1px solid rgba(76, 175, 80, 0.2); | |
| transition: all 0.3s ease; | |
| } | |
| .header-stat:hover { | |
| background: rgba(76, 175, 80, 0.15); | |
| transform: translateY(-2px); | |
| } | |
| .header-stat span { | |
| font-size: 1.6rem; | |
| } | |
| .header-stat > div > div:first-child { | |
| font-weight: 700; | |
| font-size: 1.2rem; | |
| color: #2d5016; | |
| } | |
| .header-stat > div > div:last-child { | |
| font-size: 0.8rem; | |
| color: #4a7c23; | |
| font-weight: 500; | |
| } | |
| /* Content Area */ | |
| .terra-content { | |
| flex: 1; | |
| padding: 32px; | |
| overflow-y: auto; | |
| background: transparent; | |
| } | |
| .terra-content::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .terra-content::-webkit-scrollbar-track { | |
| background: rgba(76, 175, 80, 0.1); | |
| border-radius: 4px; | |
| } | |
| .terra-content::-webkit-scrollbar-thumb { | |
| background: rgba(76, 175, 80, 0.3); | |
| border-radius: 4px; | |
| } | |
| .terra-content::-webkit-scrollbar-thumb:hover { | |
| background: rgba(76, 175, 80, 0.5); | |
| } | |
| /* Page Transition Animation */ | |
| .terra-content > * { | |
| animation: fadeInUp 0.5s ease-out; | |
| } | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* Responsive Design */ | |
| @media (max-width: 1024px) { | |
| .terra-sidebar.open { | |
| width: 260px; | |
| } | |
| .header-stats { | |
| gap: 16px; | |
| } | |
| .header-stat { | |
| padding: 12px 16px; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .terra-sidebar { | |
| position: fixed; | |
| left: 0; | |
| top: 0; | |
| height: 100vh; | |
| z-index: 1000; | |
| transform: translateX(-100%); | |
| transition: transform 0.3s ease; | |
| } | |
| .terra-sidebar.open { | |
| transform: translateX(0); | |
| width: 280px; | |
| } | |
| .terra-sidebar.closed { | |
| transform: translateX(-100%); | |
| } | |
| .terra-header { | |
| padding: 20px 24px; | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 16px; | |
| } | |
| .header-stats { | |
| width: 100%; | |
| justify-content: space-between; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| } | |
| .header-stat { | |
| flex: 1; | |
| min-width: 140px; | |
| padding: 12px 16px; | |
| } | |
| .terra-content { | |
| padding: 24px 20px; | |
| } | |
| .page-title { | |
| font-size: 1.6rem; | |
| } | |
| .title-icon { | |
| font-size: 1.8rem; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .terra-logo { | |
| padding: 20px 16px; | |
| } | |
| .logo-text h1 { | |
| font-size: 1.3rem; | |
| } | |
| .nav-item { | |
| padding: 12px 16px; | |
| margin: 2px 8px; | |
| } | |
| .nav-name { | |
| font-size: 0.9rem; | |
| } | |
| .nav-desc { | |
| font-size: 0.7rem; | |
| } | |
| .header-stats { | |
| flex-direction: column; | |
| width: 100%; | |
| } | |
| .header-stat { | |
| width: 100%; | |
| } | |
| .terra-content { | |
| padding: 20px 16px; | |
| } | |
| } | |
| /* Focus States for Accessibility */ | |
| .nav-item:focus, | |
| .sidebar-toggle:focus, | |
| .header-stat:focus { | |
| outline: 2px solid #a8e6a3; | |
| outline-offset: 2px; | |
| } | |
| /* High Contrast Mode */ | |
| @media (prefers-contrast: high) { | |
| .terra-sidebar { | |
| background: #2d5016; | |
| } | |
| .nav-item.active { | |
| background: rgba(255, 255, 255, 0.3); | |
| } | |
| } | |
| /* Reduced Motion */ | |
| @media (prefers-reduced-motion: reduce) { | |
| * { | |
| animation-duration: 0.01ms ; | |
| animation-iteration-count: 1 ; | |
| transition-duration: 0.01ms ; | |
| } | |
| } | |
| /* | |
| Global Button Styles */ | |
| button { | |
| transition: all 0.3s ease; | |
| } | |
| button:hover:not(:disabled) { | |
| transform: translateY(-2px); | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | |
| } | |
| button:active:not(:disabled) { | |
| transform: translateY(0); | |
| } | |
| button:disabled { | |
| opacity: 0.6; | |
| cursor: not-allowed ; | |
| } | |
| /* Ensure all buttons have proper cursor */ | |
| button:not(:disabled) { | |
| cursor: pointer; | |
| } |