:root {
  --portal-topbar-text: #fff;
  --portal-navbar-text: #fff;
  --portal-navbar-muted: rgba(255,255,255,.78);
  --portal-navbar-active: #fff;
  --portal-navbar-active-bg: rgba(255,255,255,.16);
  --portal-button-text: #fff;
  --portal-outline-text: var(--portal-primary-color, #1f4e79);
}
.portal-public { overflow-x: hidden; background: var(--portal-background-color, #f6f8fb); }
.library-portal { min-height: 100vh; display:flex; flex-direction:column; }
.library-main { flex:1 0 auto; min-width:0; }
.library-portal-header { position:relative; z-index:1030; }
.library-topbar { background:var(--portal-topbar-color,#102a43); color:var(--portal-topbar-text); }
.library-topbar a,.library-topbar span { color:inherit; }
.library-navbar { background:var(--portal-primary-color,var(--portal-secondary-color,#1f4e79)); color:var(--portal-navbar-text); box-shadow:0 2px 12px rgba(0,0,0,.08); }
.library-brand-logo { flex:0 0 auto; display:flex; align-items:center; min-width:0; }
.library-brand-picture { display:flex; align-items:center; }
.library-brand-logo img { display:block; width:auto; max-width:180px; max-height:52px; object-fit:contain; }
.library-navbar .navbar-nav { min-width:0; }
.library-navbar .nav-link { color:var(--portal-navbar-text); font-weight:600; border-radius:.5rem; margin:.15rem .08rem; padding:.55rem .72rem; transition:background-color .15s,color .15s,box-shadow .15s; }
.library-navbar .nav-link:hover,.library-navbar .nav-link:focus { color:var(--portal-navbar-active); background:var(--portal-navbar-active-bg); }
.library-navbar .nav-link.active { color:var(--portal-navbar-active); background:var(--portal-navbar-active-bg); box-shadow:inset 0 -3px 0 var(--portal-accent-color,#f0ad4e); }
.library-navbar .dropdown-menu { max-height:min(70vh,520px); overflow-y:auto; z-index:1060; }
.library-navbar .dropdown-item.active,.library-navbar .dropdown-item:active { background:var(--portal-primary-color,#1f4e79); color:#fff; }
.library-navbar .navbar-toggler { border:1px solid rgba(255,255,255,.45); color:#fff; }
.library-navbar .navbar-toggler-icon { filter:brightness(0) invert(1); }
.library-portal-footer { flex:0 0 auto; background:var(--portal-topbar-color,#102a43); color:var(--portal-topbar-text); }
.library-portal-footer a { color:inherit; text-decoration:none; }
.library-portal-footer a:hover,.library-portal-footer a:focus { color:var(--portal-accent-color,#f0ad4e); text-decoration:underline; }
.portal-footer-copy { color:rgba(255,255,255,.78); }
.btn-primary { --bs-btn-color:#fff; --bs-btn-bg:var(--portal-primary-color,#1f4e79); --bs-btn-border-color:var(--portal-primary-color,#1f4e79); --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--portal-secondary-color,#2f75b5); --bs-btn-hover-border-color:var(--portal-secondary-color,#2f75b5); }
.btn-secondary { --bs-btn-color:#fff; --bs-btn-hover-color:#fff; }
.btn-outline-primary { --bs-btn-color:var(--portal-primary-color,#1f4e79); --bs-btn-border-color:var(--portal-primary-color,#1f4e79); --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--portal-primary-color,#1f4e79); --bs-btn-hover-border-color:var(--portal-primary-color,#1f4e79); }
.btn-outline-secondary { --bs-btn-color:#495057; --bs-btn-hover-color:#fff; }
.btn-outline-success { --bs-btn-hover-color:#fff; }
.btn-outline-danger { --bs-btn-hover-color:#fff; }
.btn-outline-warning { --bs-btn-color:#7a5b00; --bs-btn-hover-color:#fff; }
.btn-outline-info { --bs-btn-hover-color:#fff; }
.btn-outline-purple { color:#6f42c1; border-color:#6f42c1; background:transparent; }
.btn-outline-purple:hover,.btn-outline-purple:focus { color:#fff; background:#6f42c1; border-color:#6f42c1; }
.portal-public img,.portal-public svg,.portal-public video,.portal-public iframe { max-width:100%; }
.portal-public table { max-width:100%; }
.portal-public pre,.portal-public code { overflow-wrap:anywhere; }
.portal-public .content-section,.portal-public .section-visual { min-width:0; }
@media (max-width:991.98px){
 .library-navbar .navbar-collapse { padding:.75rem 0 1rem; }
 .library-navbar .navbar-nav { align-items:stretch!important; }
 .library-navbar .nav-link { margin:.12rem 0; }
 .library-brand-logo img { max-width:145px; max-height:46px; }
}
@media (max-width:575.98px){
 .library-brand-logo img { max-width:125px; max-height:42px; }
 .library-topbar .container { flex-wrap:wrap; }
}
@media (prefers-reduced-motion:reduce){ .library-navbar .nav-link,.btn { transition:none!important; } }


/* Final unit-branding contract: public portal navigation follows library_branding. */
.portal-public .library-topbar { background: var(--portal-topbar-color, #102a43) !important; color: var(--portal-topbar-text, #fff) !important; }
.portal-public .library-navbar { background: var(--portal-navbar-color, var(--portal-primary-color, #1f4e79)) !important; color: var(--portal-navbar-text, #fff) !important; }
.portal-public .library-navbar .nav-link { color: var(--portal-navbar-text, #fff) !important; }
.portal-public .library-navbar .nav-link.active { box-shadow: inset 0 -3px 0 var(--portal-accent-color, #f0ad4e); }
.portal-public .library-portal-footer { background: var(--portal-topbar-color, #102a43) !important; color: var(--portal-topbar-text, #fff) !important; }
