/* =============================================================================
   LibParl v3 — lib-style.css
   Global base. Page-specific styles live in their own files.
   ============================================================================= */

:root {
    --lp-accent:      #D61820;
    --lp-accent-dark: #b5141b;
    --lp-accent-rgb:  214,24,32;
    --lp-dark:        #1d2327;
    --lp-mid:         #787c82;
    --lp-border:      #dcdcde;
    --lp-max-width:   1200px;
}


h1, h2, h3, h4, h5, h6 { font-family: 'Nunito Sans', sans-serif; line-height: 1.3; font-weight: 800; color: #1d2327; margin: 0 0 .5em; }

*, *::before, *::after { box-sizing: border-box; }

body {
   margin: 0;
    font-family: 'Open Sans', -apple-system, BlinkMacSystemFont, sans-serif;
    font-size: 16px; line-height: 1.6; color: #1d2327; background: #fff;
    -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }
a { color: var(--lp-accent); }
h1, h2, h3, h4, h5, h6 { line-height: 1.3; font-weight: 700; color: #1d2327; margin: 0 0 .5em; }
p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.4em; }

/* Accessibility */
.skip-link {
    position: absolute; top: -999px; left: 0; z-index: 99999;
    padding: 10px 18px; background: #000; color: #fff;
    font-size: 14px; font-weight: 600; text-decoration: none;
    border-radius: 0 0 6px 0;
}
.skip-link:focus { top: 0; }

.screen-reader-text {
    border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%);
    height: 1px; margin: -1px; overflow: hidden; padding: 0;
    position: absolute; width: 1px; word-wrap: normal !important;
}

/* WP core */
.wp-caption { max-width: 100%; }
.wp-caption-text { font-size: 13px; color: var(--lp-mid); text-align: center; margin-top: 6px; }
.alignleft  { float: left;  margin: 0 1.5em 1em 0; }
.alignright { float: right; margin: 0 0 1em 1.5em; }
.aligncenter { display: block; margin: 0 auto 1em; }

/* Shared pagination */
.lp-pagination { display: flex; align-items: center; justify-content: center; gap: 6px; }
.lp-pagination a,
.lp-pagination span {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; border-radius: 8px; font-size: 13px;
    font-weight: 500; text-decoration: none; border: 1px solid var(--lp-border); color: #1d2327;
}
.lp-pagination a:hover { border-color: var(--lp-accent); color: var(--lp-accent); }
.lp-pagination .current { background: var(--lp-accent); border-color: var(--lp-accent); color: #fff; }
.lp-pagination .dots { border: none; color: var(--lp-mid); cursor: default; }

/* Shared page hero strip — slim, light, modern. High-contrast dark text
   on white (WCAG-friendly), small accent eyebrow + rule instead of the
   old full-bleed colored slab. */
.lp-page-hero {
    background: #fff;
    padding: 48px 24px 30px;
    border-bottom: 1px solid #eeecea;
}
.lp-page-hero__inner { max-width: var(--lp-max-width); margin: 0 auto; }
.lp-page-hero__eyebrow {
    font-size: 11px; font-weight: 700; letter-spacing: .12em;
    text-transform: uppercase; color: var(--lp-accent); margin-bottom: 10px;
}
.lp-page-hero__title {
    font-family: 'Nunito Sans', sans-serif;
    font-size: clamp(28px, 4.5vw, 44px); font-weight: 900;
    color: #16181d; letter-spacing: -.03em; line-height: 1.05; margin: 0 0 10px;
}
.lp-page-hero__title::after {
    content: ''; display: block; width: 34px; height: 4px;
    background: var(--lp-accent); border-radius: 2px; margin-top: 14px;
}
.lp-page-hero__desc { font-size: 15px; color: #5c6066; margin: 10px 0 0; max-width: 620px; }
.lp-page-hero__back {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 12px; font-weight: 600; color: #787c82; text-decoration: none;
    margin-bottom: 14px; transition: color .15s;
}
.lp-page-hero__back:hover { color: var(--lp-accent); }

/* ── Accessibility (global) ─────────────────────── */
:focus-visible {
    outline: 3px solid var(--lp-accent);
    outline-offset: 2px;
    border-radius: 3px;
}
/* Kill horizontal viewport wiggle from any fixed-width embed/iframe */
html, body { overflow-x: hidden; max-width: 100vw; }
img, iframe, video { max-width: 100%; }

/* Global mobile scale-down */
@media (max-width: 560px) {
    .lp-page-hero { padding: 34px 18px 24px; }
    .lp-page-hero__title { font-size: clamp(24px, 7vw, 32px); }
    .lp-page-hero__desc { font-size: 14px; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* Shared card */
.lp-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
@media (max-width: 900px) { .lp-card-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .lp-card-grid { grid-template-columns: 1fr; } }

.lp-card {
    display: block; text-decoration: none;
    background: #fff; border: 1px solid #e8e8e8; border-radius: 12px;
    overflow: hidden; transition: transform .15s, box-shadow .15s;
}
.lp-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,.09); text-decoration: none; }
.lp-card__img { width: 100%; aspect-ratio: 16/9; object-fit: cover; display: block; background: #f0f0f1; }
.lp-card__img--placeholder {
    aspect-ratio: 16/9;
    background: linear-gradient(135deg, rgba(var(--lp-accent-rgb),.13), rgba(var(--lp-accent-rgb),.05));
}
.lp-card__body { padding: 16px 18px 20px; }
.lp-card__date { font-size: 11px; color: var(--lp-mid); margin-bottom: 6px; text-transform: uppercase; letter-spacing: .04em; }
.lp-card__title { font-size: 15px; font-weight: 600; color: #1d2327; line-height: 1.4; margin-bottom: 8px; }
.lp-card__excerpt { font-size: 13px; color: #555; line-height: 1.5; margin-bottom: 10px; }
.lp-card__tag { font-size: 12px; font-weight: 600; color: var(--lp-accent); text-transform: uppercase; letter-spacing: .05em; }

/* Shared empty state */
.lp-empty { text-align: center; padding: 64px 24px; color: var(--lp-mid); }
.lp-empty__icon { font-size: 36px; margin-bottom: 12px; }
.lp-empty__title { font-size: 18px; font-weight: 600; color: #1d2327; margin-bottom: 6px; }
.lp-empty__desc { font-size: 14px; line-height: 1.6; max-width: 400px; margin: 0 auto; }
.lp-empty__link {
    display: inline-block; margin-top: 16px; padding: 10px 20px;
    background: var(--lp-accent); color: #fff; border-radius: 8px;
    font-size: 14px; font-weight: 600; text-decoration: none;
}

@media print {
    .lp-hdr, .lp-hdr-spacer, .lp-footer, .skip-link { display: none !important; }
    body { font-size: 12pt; color: #000; }
}
/* =============================================================================
   Visual polish pass — consistency layer
   ============================================================================= */

/* Typography rendering */
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
::selection { background: rgba(var(--lp-accent-rgb), .18); }

/* Consistent link affordance in body copy */
main a:not([class]) {
    color: var(--lp-accent);
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-thickness: 1px;
}
main a:not([class]):hover { text-decoration-thickness: 2px; }

/* Unified card language — one shadow system everywhere */
.lp-nl-card, .lp-event-card, .lp-cat-card, .lp-svc-card,
.lp-related__card {
    border-color: #ecebe9 !important;
    box-shadow: 0 1px 3px rgba(20, 20, 25, .05);
}
.lp-nl-card:hover, .lp-event-card:hover, .lp-cat-card:hover,
.lp-svc-card--link:hover, .lp-related__card:hover {
    box-shadow: 0 12px 28px rgba(20, 20, 25, .10) !important;
}

/* Section rhythm — consistent vertical breathing room */
.lp-nl, .lp-events, .lp-inv, .lp-topics, .lp-cat, .lp-svc {
    padding-top: 44px;
}

/* Buttons: consistent press feedback */
a[class*="__link"]:active, button:active, input[type=submit]:active {
    transform: translateY(1px);
}