- Implemented a new script `test_pico_arabic_waqf.py` to test the GLM annotator's ability to extract person observations from Arabic historical documents. - The script includes environment variable handling for API token, structured prompts for the GLM API, and validation of extraction results. - Added comprehensive logging for API responses, extraction results, and validation errors. - Included a sample Arabic waqf text for testing purposes, following the PiCo ontology pattern.
131 lines
2.9 KiB
CSS
131 lines
2.9 KiB
CSS
/* 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;
|
|
}
|
|
}
|