/* Public interface tokens. Keep the site's existing system typeface. */
:root {
    --rapn-font:var(--bs-font-sans-serif);
    --rapn-body:16px; --rapn-small:14px; --rapn-title:clamp(26px,2.4vw,34px); --rapn-section:26px;
    --rapn-ink:#303b43; --rapn-muted:#626d77; --rapn-border:#d6dce2; --rapn-surface:#f6f8fa;
    --rapn-space-1:4px; --rapn-space-2:8px; --rapn-space-3:12px; --rapn-space-4:16px; --rapn-space-6:24px; --rapn-space-8:32px;
    --rapn-radius:4px; --rapn-card-shadow:2px 2px 0 #e2e6e9; --rapn-card-border:1px solid var(--rapn-border);
}
.rapn-public { font-family:var(--rapn-font); font-size:var(--rapn-body); color:var(--rapn-ink); line-height:1.55; }
.rapn-public * { box-sizing:border-box; }
.rapn-public :is(h1,h2,h3) { font-family:var(--rapn-font); }
.rapn-public h1 { font-size:var(--rapn-title); font-weight:500; line-height:1.25; color:var(--rapn-muted); margin:0 0 var(--rapn-space-6); overflow-wrap:anywhere; }
.rapn-public h2 { font-size:var(--rapn-section); font-weight:500; line-height:1.3; }
.rapn-public h3 { font-size:20px; font-weight:500; line-height:1.4; }
.rapn-public .rapn-section-title { font-size:var(--rapn-section); font-weight:500; margin:var(--rapn-space-8) 0 var(--rapn-space-6); }
.rapn-public a { color:var(--main-color); text-underline-offset:3px; }
.rapn-public .breadcrumb { --bs-breadcrumb-divider:'>'; font-size:14px; margin-bottom:var(--rapn-space-8); }
.rapn-public .btn-primary,.rapn-public .btn-success,.rapn-public .rapn-button { --bs-btn-bg:var(--main-color); --bs-btn-border-color:var(--main-color); --bs-btn-hover-bg:#17388c; --bs-btn-hover-border-color:#17388c; --bs-btn-active-bg:#143179; --bs-btn-active-border-color:#143179; color:white; background:var(--main-color); border-color:var(--main-color); border-radius:var(--rapn-radius); min-height:44px; padding:9px 18px; font:inherit; }
.rapn-public .btn-secondary { background:white; color:var(--main-color); border:1px solid var(--main-color); min-height:44px; border-radius:var(--rapn-radius); }
.rapn-public :is(a,button,input,select,textarea,[tabindex]):focus-visible { outline:3px solid #b07900; outline-offset:3px; }
.rapn-skip-link { position:fixed; left:12px; top:-100px; z-index:2000; padding:12px 20px; background:white; border:2px solid var(--main-color); }
.rapn-skip-link:focus { top:8px; }
.rapn-public .regular-tag { background:var(--grey-color); color:white; }
.rapn-public :is(.regular-tag,.main-tag,.main-event-tag) a { color:white; }
#tags-container { display:flex; flex-wrap:wrap; align-items:center; gap:4px; width:fit-content; margin:0 auto; max-width:100%; }
.tag-container { float:none; margin:0; padding:0 2px; border-radius:3px; max-width:100%; }
.tag-container > a { display:inline-flex; align-items:center; max-width:100%; text-decoration:none; }
.tag-name { padding:0 10px; font-size:14pt; overflow-wrap:anywhere; }
.rapn-public .rapn-meta { color:var(--rapn-muted); font-size:var(--rapn-small); font-style:normal; display:block; margin-bottom:10px; }
.rapn-icon-button { display:inline-flex; align-items:center; justify-content:center; border:0; background:transparent; padding:8px; min-width:44px; min-height:44px; }
#icon-wrapper a:has(img),#search-wrapper a:has(img),.footer-icons a,.menu-links a { display:inline-flex; align-items:center; justify-content:center; min-width:44px; min-height:44px; }
#icon-wrapper img,#search-wrapper img,.footer-icons img,.menu-links img { width:28px; height:28px; object-fit:contain; }
#main-nav .nav-link.active { color:white; text-decoration:underline; text-underline-offset:6px; }
#partners img { max-width:100%; object-fit:contain; }
#footer { font-size:14px; }
#footer .row { row-gap:24px; }
#footer a { overflow-wrap:anywhere; }
#search-area { height:auto; max-height:90vh; overflow:auto; }
.rapn-search-page { max-width:1040px; margin:32px auto 48px; }
.rapn-search-form { margin-bottom:24px; }
.rapn-search-field { display:flex; gap:0; max-width:780px; }
.rapn-search-field input { flex:1; min-width:0; border:1px solid #9da8b2; border-radius:4px 0 0 4px; padding:10px 12px; font:inherit; }
.rapn-search-field .btn { border-radius:0 4px 4px 0; }
.rapn-search-types { display:flex; flex-wrap:wrap; gap:4px 20px; margin:16px 0 0; }
.rapn-search-types legend { float:none; width:100%; font-size:14px; font-weight:500; margin:0 0 4px; }
.rapn-search-types label,.rapn-search-name { display:inline-flex; align-items:center; gap:8px; min-height:44px; font-size:14px; }
.rapn-search-form input[type=checkbox] { width:18px; height:18px; accent-color:var(--main-color); }
.rapn-field-error { color:#a22020; font-size:14px; margin:12px 0; }
.rapn-field-error ul { padding-left:20px; }
.validation-summary-valid { display:none; }
.rapn-filter-links { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin:0 0 24px; }
.rapn-filter-links a { display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 14px; min-height:44px; color:var(--main-color); background:white; border:1px solid var(--rapn-border); border-radius:var(--rapn-radius); text-decoration:none; font-size:14px; }
.rapn-filter-links a:hover { background:var(--rapn-surface); }
.rapn-filter-links a[aria-current=page] { background:var(--main-color); border-color:var(--main-color); color:white; }
.rapn-filter-links span { font-size:12px; }
.rapn-search-summary { display:flex; gap:20px; align-items:center; margin:28px 0 8px; font-size:14px; }
.rapn-search-results { list-style:none; padding:0; margin:0; }
.rapn-search-results li { border-bottom:1px solid var(--rapn-border); padding:20px 0; }
.rapn-search-results h2 { font-size:20px; margin:5px 0 8px; }
.rapn-search-results h2 a { text-decoration:none; }
.rapn-search-results h2 a:hover { text-decoration:underline; }
.rapn-search-results p { max-width:75ch; font-size:15px; margin:0; overflow-wrap:anywhere; }
.rapn-result-meta { color:var(--rapn-muted); font-size:13px; }
.rapn-pagination .pagination { flex-wrap:wrap; gap:4px; margin-top:28px; }
.rapn-pagination .page-link { color:var(--main-color); min-width:40px; min-height:44px; text-align:center; padding:9px; border-radius:var(--rapn-radius); }
.rapn-pagination .active .page-link { background:var(--main-color); border-color:var(--main-color); color:white; }
.rapn-pagination .page-more { align-self:center; padding:0 3px; }
.rapn-news-page { max-width:1140px; margin:32px auto 48px; }
.rapn-news-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px; }
.rapn-news-column { min-width:0; }
.rapn-news-row { padding:20px 0; border-bottom:1px solid var(--rapn-border); }
.rapn-news-column .rapn-news-row:first-child { padding-top:0; }
.rapn-news-row.is-featured { padding-bottom:28px; }
.rapn-news-row.is-featured > a { display:block; margin-bottom:16px; }
.rapn-news-row img { width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; }
.rapn-news-row h2 { font-size:21px; max-width:70ch; margin:6px 0 0; overflow-wrap:anywhere; }
.rapn-news-row h2 a { text-decoration:none; }
.rapn-news-row h2 a:hover { text-decoration:underline; }
.rapn-news-row time { font-size:14px; color:var(--rapn-muted); }
.rapn-news-row p { font-size:15px; margin:12px 0 0; }
.rapn-public .card-title { font-size:20px; font-weight:500; line-height:1.45; }
.rapn-reading { max-width:74ch; margin:32px auto 48px; }
.rapn-reading h1 { color:var(--main-color); }
.rapn-prose { max-width:74ch; min-width:0; margin:24px auto; color:var(--rapn-ink); font-size:17px; line-height:1.7; overflow-wrap:anywhere; display:flow-root; }
.rapn-prose :is(p,span,div,li,font) { font-family:inherit!important; font-size:inherit!important; line-height:inherit!important; }
.rapn-prose p { margin-bottom:1em; }
.rapn-prose :is(h2,h3,h4,h5,h6) { font-family:var(--rapn-font)!important; font-weight:500!important; line-height:1.35!important; margin:1.4em 0 .6em; }
.rapn-prose h2 { font-size:25px!important; } .rapn-prose h3 { font-size:21px!important; }
.rapn-prose :is(h4,h5,h6) { font-size:18px!important; }
.rapn-prose :is(img,video,svg) { max-width:100%!important; height:auto!important; }
.rapn-prose :is(div,p,figure) { max-width:100%; }
.rapn-prose a { overflow-wrap:anywhere; }
.rapn-prose table { display:block; max-width:100%; overflow:auto; }
.rapn-prose iframe { max-width:100%; }
.rapn-prose pre { max-width:100%; white-space:pre-wrap; }
.rapn-prose li { position:static!important; }
.rapn-prose .rapn-book-cover { display:block; max-width:min(100%,320px)!important; width:auto; margin:0 auto 24px; }
.rapn-publication-description { margin:24px 0; font-size:15px; overflow-wrap:anywhere; }
.rapn-publication-description p { margin-bottom:12px; }
.rapn-lead { font-size:20px; color:var(--rapn-muted); }
.rapn-event-detail .event-title-container { max-width:1000px; margin:24px auto; }
.rapn-event-detail .event-content-container { width:calc(100% - 24px); padding:0; max-width:74ch; margin:24px auto; }
.rapn-event-detail .event-items-content-container > .row { margin-inline:0; }
.rapn-event-detail .event-item-element-container { overflow-wrap:anywhere; }
.rapn-event-detail .event-image-container img { width:100%; max-height:420px; height:auto; object-fit:contain; }
.rapn-event-detail .event-news-title h3 { font-size:17px; font-family:var(--rapn-font); line-height:1.4; }
.rapn-event-detail :is(.base-text,.event-text-value,.event-dates-value,.event-button-style,.event-button-disabled,.event-header-container,.event-news-date-day,.event-news-date-month-year,.event-news-title) { font-family:var(--rapn-font); letter-spacing:normal; line-height:1.45; }
/* Use the existing home event card treatment for both publication grids. */
.rapn-home-publication-card,.rapn-publication-section,.rapn-event-card { border:var(--rapn-card-border); border-radius:var(--rapn-radius); box-shadow:var(--rapn-card-shadow); }
.rapn-public .rapn-event-card h2 { font-size:20px; font-weight:400; line-height:1.4; }
.rapn-home-publication-all { background:var(--main-color); color:white!important; text-align:center; min-height:44px; padding:10px 8px; margin-top:16px; border:0; border-radius:var(--rapn-radius); }
.rapn-home-publication-all:hover { background:#17388c; text-decoration:none; }
.event-announcement-card { min-width:0; margin:0; width:100%; height:100%; min-height:280px; border:var(--rapn-card-border); box-shadow:var(--rapn-card-shadow); border-radius:var(--rapn-radius); }
.event-announcement-col { margin-bottom:24px; }
.event-announcement-card :is(.event-news-date-day,.event-news-date-month-year,.event-news-title) { font-family:var(--rapn-font); }
.event-announcement-card .event-news-title { font-size:18px; font-weight:500; line-height:1.4; letter-spacing:normal; }
.event-announcement-card .event-news-title-container { padding:8px 14px; }
.event-announcement-card .event-news-date { height:auto; min-height:80px; }
.event-announcement-card .registration-button-container { margin:16px; }
.event-announcement-card .registration-button-container a { width:100%; }
.rapn-event-select label { display:block; font-size:14px; margin-bottom:6px; }
#main-tags-container { display:flex; flex-direction:column; }
#all-tags-button { text-align:right; margin-top:16px; }
@media(max-width:991px) {
    .rapn-events-enhanced .rapn-event-filters { display:none; }
    .rapn-event-select { display:block; flex:1; min-width:220px; }
    .rapn-event-select select { width:100%; min-height:44px; padding:8px; border:1px solid #9da8b2; color:var(--rapn-muted); background:white; font-size:16px; }
    .rapn-event-controls { align-items:flex-end; }
    #caption { margin:10px 0; min-width:0; }
    #caption div:first-child { font-size:17px; line-height:1.2; margin-bottom:4px; }
    #caption div:nth-child(2) { font-size:12px; line-height:1.2; }
    #title-block > .d-flex > .d-flex { min-width:0; }
    #main-nav { padding-top:4px; padding-bottom:4px; }
}
@media(max-width:767px) {
    .tag-container > a { min-height:44px; }
    .rapn-public h1 { font-size:26px; }
    .rapn-public .breadcrumb { margin-bottom:24px; }
    .rapn-prose { font-size:16px; line-height:1.65; }
    .rapn-prose [style*="float"],.rapn-prose img { float:none!important; }
    .rapn-prose img { display:block; margin:16px auto!important; }
    .rapn-prose :is(div,p,figure)[style*="width"] { width:auto!important; }
    .rapn-news-list { grid-template-columns:1fr; gap:20px; }
    .rapn-news-row h2 { font-size:20px; }
    .rapn-filter-links { gap:6px; }
    .rapn-filter-links a { padding:8px 11px; }
    #footer { margin-top:32px; }
    #footer .fs-10,#footer .fs-12 { font-size:14px; }
    .rapn-event-detail .event-news-title-container { width:auto; }
    .rapn-event-controls { flex-wrap:wrap; align-items:center; }
    .rapn-event-select { flex-basis:100%; }
}
@media(prefers-reduced-motion:reduce) { .rapn-public * { scroll-behavior:auto!important; animation:none!important; transition:none!important; } }

.rapn-public .rapn-region-close { width:44px; height:44px; }

/* Material pages and catalog navigation. */
.rapn-catalog-controls { flex-wrap:wrap; }
.rapn-catalog-search { flex:1 1 320px; }
.rapn-catalog-sort { display:flex; flex-direction:column; gap:5px; font-size:14px; }
.rapn-catalog-sort select,.rapn-search-sort select { max-width:100%; min-height:44px; padding:8px 10px; border:1px solid #9da8b2; border-radius:var(--rapn-radius); background:white; color:var(--rapn-ink); font:inherit; }
.rapn-catalog-range { font-weight:500; }
.rapn-catalog-pagination { margin:20px 0; }
.rapn-list-footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; margin-top:24px; }
.rapn-list-footer .rapn-page-size { margin-left:auto; max-width:100%; color:var(--rapn-muted); flex-wrap:wrap; justify-content:flex-end; }
.rapn-list-footer .rapn-page-size select { border-color:var(--rapn-border); }
.rapn-list-footer .rapn-catalog-pagination { margin:0; justify-content:flex-start; }
.rapn-list-pages { flex:1; display:flex; justify-content:center; }
.rapn-list-footer .rapn-event-more { margin:0; }
.rapn-event-pagination { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); }
.rapn-event-pagination .rapn-list-pages { grid-column:2; flex-direction:column; align-items:center; gap:12px; }
.rapn-event-pagination .rapn-page-size { grid-column:3; justify-self:end; margin-left:0; }
@media(max-width:767px) {
    .rapn-event-pagination { grid-template-columns:minmax(0,1fr); }
    .rapn-event-pagination .rapn-list-pages,.rapn-event-pagination .rapn-page-size { grid-column:1; }
}
@media(min-width:992px) { .rapn-events-enhanced .rapn-event-controls { display:none; } }
.rapn-publication-year { display:block; margin-top:5px; font-size:14px; color:var(--rapn-muted); }
.rapn-search-sort { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:24px; font-size:14px; }
.rapn-public mark { color:inherit; background:#ffebad; padding:0; border-radius:2px; }
.rapn-book-overview { display:grid; gap:24px; margin:24px 0; }
.rapn-book-overview.has-cover { grid-template-columns:minmax(0,1fr) 150px; }
.rapn-book-facts { margin:0; }
.rapn-book-facts > div { margin-bottom:16px; }
.rapn-book-facts dt { color:var(--rapn-muted); font-size:14px; font-weight:400; margin-bottom:4px; }
.rapn-book-facts dd { margin:0; }
.rapn-book-image .rapn-book-cover { display:block; width:100%; height:auto; margin:0; }
.rapn-publication-actions { display:flex; flex-wrap:wrap; gap:12px; margin:24px 0; }
.rapn-publication-actions #rapn-copy-status { flex-basis:100%; margin:0; }
.rapn-publication-actions #rapn-copy-status:empty { display:none; }
#rapn-citation { width:100%; min-height:140px; padding:12px; }
.rapn-publication-annotation { line-height:1.65; margin-top:32px; }
.rapn-publication-annotation h2 { font-size:23px; }
@media(max-width:620px) {
    .rapn-book-overview.has-cover { grid-template-columns:minmax(0,1fr) 110px; gap:16px; }
    .rapn-catalog-sort { flex:1 1 100%; }
    .rapn-publication-actions .btn { width:100%; }
}

.rapn-directory-search { max-width:620px; margin:24px 0; }
.rapn-directory-search label { display:block; font-size:14px; margin-bottom:6px; }
.rapn-directory-search-field { display:flex; gap:8px; }
.rapn-directory-search-field input { min-width:0; flex:1; border:1px solid #9da8b2; border-radius:var(--rapn-radius); padding:10px; font:inherit; }
.rapn-directory-search [role=status] { margin:8px 0; }
.rapn-region-search-results { list-style:none; margin:12px 0; padding:0; max-height:240px; overflow:auto; border:var(--rapn-card-border); }
.rapn-region-search-results button { width:100%; min-height:44px; padding:10px 14px; border:0; border-bottom:1px solid var(--rapn-border); background:white; color:var(--main-color); text-align:left; font:inherit; }
.rapn-region-search-results button:hover { background:var(--rapn-surface); }
.rapn-region-tile.is-search-match { outline:3px solid #b07900; outline-offset:2px; }
.rapn-organization-profile { max-width:980px; padding:24px; margin:24px 0 32px; border:var(--rapn-card-border); border-radius:var(--rapn-radius); background:var(--rapn-surface); }
.rapn-organization-profile .rapn-prose { margin:16px 0 0; }
.rapn-organization-contacts { display:flex; flex-wrap:wrap; align-items:center; gap:12px 24px; }
.rapn-organization-contacts h2 { flex-basis:100%; font-size:20px; margin:0; }
.rapn-organization-contacts a { overflow-wrap:anywhere; }
.rapn-organization-leader p { font-size:18px; margin:0 0 20px; }

.rapn-related { margin-top: 36px; padding-top: 24px; border-top: 1px solid var(--rapn-border, #d9dfe5); }
.rapn-related-list { list-style: none; padding: 0; margin: 0; }
.rapn-related-list li { padding: 14px 0; border-bottom: 1px solid var(--rapn-border, #d9dfe5); }
.rapn-related-list a { display: block; margin-top: 5px; font-size: 1.125rem; line-height: 1.4; }

.rapn-reading a { overflow-wrap:anywhere; }

/* Public errors keep their navigation usable even if the database is unavailable. */
.rapn-error-layout { min-height:100vh; display:flex; flex-direction:column; }
.rapn-error-header { background:var(--main-color); padding:24px 0; }
.rapn-error-header .rapn-error-brand { display:block; max-width:42ch; font-size:22px; font-weight:600; line-height:1.3; color:white; text-decoration:none; }
.rapn-error-header .rapn-error-brand:hover,.rapn-error-header .rapn-error-brand:focus { color:white; text-decoration:underline; }
.rapn-error-layout main { flex:1; }
.rapn-error-page { max-width:760px; margin:64px auto; }
.rapn-error-code { font-size:18px; font-weight:500; color:var(--main-color); margin-bottom:12px; }
.rapn-error-message { max-width:62ch; line-height:1.65; margin:20px 0; }
.rapn-error-actions { display:flex; flex-wrap:wrap; gap:12px; margin:24px 0 36px; }
.rapn-error-search > label { display:block; margin-bottom:10px; font-weight:500; }
.rapn-error-reference { color:var(--rapn-muted); font-size:13px; overflow-wrap:anywhere; margin-top:24px; }
.rapn-error-footer { color:var(--rapn-muted); padding-top:24px; padding-bottom:24px; font-size:14px; }
@media(max-width:575px) {
    .rapn-error-page { margin:40px auto; }
    .rapn-error-brand { font-size:19px; }
    .rapn-error-actions .btn { width:100%; }
}
