glam/apps/archief-assistent/src/index.css
2025-12-21 00:01:54 +01:00

227 lines
5 KiB
CSS

/* Nationaal Archief style - matching https://www.nationaalarchief.nl/ */
/* Import RO Serif (or fallback to Georgia for serif headings) */
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@400;600;700&display=swap');
:root {
/* NA Color Palette */
--na-primary: #007bc7;
--na-red: #d52b1e;
--na-orange: #e17000;
--na-green: #39870c;
--na-cream: #f7f5f3;
--na-dark-blue: #154273;
--na-text: #333333;
--na-text-secondary: #666666;
/* Typography */
font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.5;
font-weight: 400;
color-scheme: light;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
min-width: 320px;
min-height: 100vh;
background-color: var(--na-cream);
color: var(--na-text);
}
#root {
min-height: 100vh;
display: flex;
flex-direction: column;
}
/* Serif headings like NA uses */
h1, h2, h3 {
font-family: Georgia, 'Times New Roman', serif;
font-weight: 400;
font-style: italic;
}
/* NA-style links */
a {
color: var(--na-primary);
text-decoration: underline;
}
a:hover {
text-decoration: none;
}
/* NA-style buttons */
.na-button {
background-color: var(--na-primary);
color: white;
border: none;
padding: 12px 24px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
}
.na-button:hover {
background-color: #005a8e;
}
/* Section card accent borders */
.section-onderzoeken {
border-top: 4px solid var(--na-primary);
}
.section-beleven {
border-top: 4px solid var(--na-orange);
}
.section-archiveren {
border-top: 4px solid var(--na-green);
}
/* ========================================
Toggle Footer Styles
======================================== */
/* Footer toggle button - always visible at bottom center */
.footer-toggle-btn {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 48px;
height: 28px;
background: var(--na-dark-blue);
border: none;
border-radius: 8px 8px 0 0;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
transition: background-color 0.2s, transform 0.3s;
box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.15);
}
.footer-toggle-btn:hover {
background: var(--na-primary);
}
.footer-toggle-btn svg {
width: 20px;
height: 20px;
color: white;
transition: transform 0.3s ease;
}
.footer-toggle-btn.footer-open svg {
transform: rotate(180deg);
}
/* Hidden footer container */
.toggle-footer {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: var(--na-dark-blue);
color: #fff;
transform: translateY(100%);
transition: transform 0.3s ease-in-out;
z-index: 999;
max-height: 60vh;
overflow-y: auto;
}
.toggle-footer.footer-visible {
transform: translateY(0);
}
/* Adjust toggle button position when footer is open */
.footer-toggle-btn.footer-open {
bottom: auto;
/* Position will be set dynamically based on footer height */
}
/* ========================================
Collapsible Header Styles
======================================== */
/* Small floating logo - appears when header is collapsed */
.header-logo-small {
position: fixed;
top: 12px;
left: 12px;
z-index: 1001;
display: block;
background: transparent;
border: none;
padding: 0;
margin: 0;
cursor: pointer;
/* Hidden by default (when header is expanded) */
opacity: 0;
pointer-events: none;
transition: opacity 0.25s ease-out, transform 0.2s ease;
}
.header-logo-small.visible {
opacity: 1;
pointer-events: auto;
}
.header-logo-small-img {
width: 40px;
height: 40px;
display: block;
/* White contour/glow effect for visibility on any background */
filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.95))
drop-shadow(0 0 4px rgba(255, 255, 255, 0.8))
drop-shadow(0 0 6px rgba(255, 255, 255, 0.6));
transition: filter 0.2s ease, transform 0.2s ease;
}
.header-logo-small:hover {
transform: scale(1.08);
}
.header-logo-small:hover .header-logo-small-img {
filter: drop-shadow(0 0 3px rgba(255, 255, 255, 1))
drop-shadow(0 0 6px rgba(255, 255, 255, 0.9))
drop-shadow(0 0 8px rgba(255, 255, 255, 0.7));
}
/* Collapsible header container */
.header-collapsible {
transition: max-height 0.25s cubic-bezier(0.4, 0, 0.2, 1),
opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1),
margin-bottom 0.25s cubic-bezier(0.4, 0, 0.2, 1);
max-height: 200px; /* Enough height for utility bar + header + nav */
overflow: hidden;
opacity: 1;
/* Flex-shrink so it gives up space when collapsed */
flex-shrink: 0;
/* Enable GPU acceleration for smoother animation */
will-change: max-height, opacity;
}
/* Collapsed state - hide header */
.header-collapsible.header-collapsed {
max-height: 0;
opacity: 0;
pointer-events: none;
/* Ensure no margin/padding takes up space */
margin-bottom: 0;
padding: 0;
}