/* Layout Styles */ .layout { height: 100%; /* Fill entire screen */ width: 100%; display: flex; flex-direction: column; background: #f6f6f6; /* NDE light background */ overflow-x: hidden; /* Prevent horizontal overflow only */ overflow-y: visible; /* Allow vertical overflow for dropdowns */ } .layout-content { flex: 1; width: 100%; overflow-y: auto; /* Only vertical scroll */ overflow-x: hidden; /* No horizontal scroll */ overscroll-behavior: contain; /* Prevent scroll propagation */ display: flex; flex-direction: column; min-height: 0; /* Allow flex child to shrink */ position: relative; /* For absolute positioned minimal footer */ } /* Ensure content area can grow but footer stays visible */ .layout-content > *:not(.layout-footer):not(.layout-main) { flex-shrink: 0; } /* Main content wrapper - takes available space */ .layout-main { flex: 1 0 auto; /* Grow to fill space, don't shrink, auto basis */ min-height: min-content; /* At least as tall as content */ } /* Footer Styles - minimal, at the very bottom */ .layout-footer { background: rgba(246, 246, 246, 0.95); /* Slight background for visibility */ color: rgba(23, 42, 89, 0.6); /* Subtle NDE dark blue */ padding: 1.5rem; font-size: 0.8rem; text-align: center; flex-shrink: 0; /* Don't shrink */ border-top: 1px solid rgba(23, 42, 89, 0.1); /* Subtle separator */ } .footer-link { color: rgba(23, 42, 89, 0.8); text-decoration: none; transition: color 0.2s ease; } .footer-link:hover { color: #0a3dfa; text-decoration: underline; } /* Minimal inline footer for full-screen pages (map, visualize, etc.) */ /* Footer is placed at the bottom of scrollable sidebars, only visible after scrolling */ .minimal-footer { padding: 0.75rem 1rem; font-size: 0.75rem; color: rgba(23, 42, 89, 0.5); text-align: center; flex-shrink: 0; } .minimal-footer a { color: rgba(23, 42, 89, 0.7); text-decoration: none; transition: color 0.2s ease; } .minimal-footer a:hover { color: #0a3dfa; text-decoration: underline; } /* Auth Loading State */ .auth-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; background: #f6f6f6; color: #172a59; } .auth-loading-spinner { width: 40px; height: 40px; border: 3px solid #ebefff; border-top-color: #0a3dfa; border-radius: 50%; animation: spin 0.8s linear infinite; margin-bottom: 1rem; } @keyframes spin { to { transform: rotate(360deg); } } .auth-loading-text { font-family: 'Poppins', sans-serif; font-size: 1rem; color: #172a59; } /* Mobile Responsive Styles */ @media (max-width: 900px) { .layout-footer { padding: 1rem; font-size: 0.75rem; } .footer-content { flex-direction: column; gap: 0.5rem; text-align: center; } } @media (max-width: 480px) { .layout-footer { padding: 0.75rem; font-size: 0.7rem; } }