/*
 * Layout System — Public / Member Portal
 */
.library-portal {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.library-portal .library-main {
  flex: 1 0 auto;
}

.library-portal-header {
  position: relative;
  z-index: 1020;
}

.library-portal-footer {
  flex: 0 0 auto;
  margin-top: auto;
}

.library-page-header {
  padding-block: 2rem;
  border-bottom: 1px solid var(--library-border);
  background: var(--library-surface);
}

.library-page-header .page-title {
  margin-bottom: .35rem;
}

.library-page-header .page-description {
  max-width: 70ch;
  margin-bottom: 0;
  color: var(--library-text-muted);
}

.library-page-content {
  padding-block: clamp(1.5rem, 4vw, 3rem);
}

@media (min-width: 992px) {
  .library-page-content {
    padding-block: 3rem;
  }
}

/* Refined public portal atmosphere */
body.portal-public{
  background:
    radial-gradient(circle at 8% 0%, rgba(13,110,253,.055), transparent 30rem),
    radial-gradient(circle at 92% 18%, rgba(25,135,84,.045), transparent 28rem),
    #f7f9fc;
}
.portal-public .library-main{
  background:
    linear-gradient(180deg, rgba(255,255,255,.86) 0%, rgba(247,249,252,.96) 100%);
}
.portal-public .section-sm{
  position:relative;
}
.portal-public .section-sm + .section-sm{
  border-top:1px solid rgba(15,23,42,.045);
}
.portal-public .card{
  border-radius: 1rem;
  border-color: rgba(15,23,42,.075);
  box-shadow: 0 .45rem 1.35rem rgba(15,23,42,.055);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.portal-public .card:hover{
  transform: translateY(-3px);
  box-shadow: 0 .8rem 1.8rem rgba(15,23,42,.09);
}
.portal-public .page-header{
  background:
    radial-gradient(circle at 82% 30%, rgba(13,110,253,.12), transparent 22rem),
    linear-gradient(135deg, rgba(13,110,253,.065), rgba(255,255,255,.92) 55%, rgba(25,135,84,.045));
  border-bottom:1px solid rgba(15,23,42,.06);
}


/* Home hero */
.library-home-hero{
  position:relative;
  overflow:hidden;
  padding:5.2rem 0 5rem;
  background:
    radial-gradient(circle at 12% 18%, rgba(13,110,253,.12), transparent 24rem),
    radial-gradient(circle at 88% 12%, rgba(25,135,84,.08), transparent 22rem),
    linear-gradient(135deg,#ffffff 0%,#f4f8ff 52%,#f8fbfa 100%);
  border-bottom:1px solid rgba(15,23,42,.06);
}
.library-home-hero:before{
  content:"";
  position:absolute;
  width:28rem;height:28rem;
  right:-12rem;top:-13rem;
  border:1px solid rgba(13,110,253,.12);
  border-radius:50%;
}
.library-home-hero h1{letter-spacing:-.035em}
.library-hero-panel{
  position:relative;
  min-height:400px;
  border-radius:2rem;
  overflow:hidden;
  background:
    radial-gradient(circle at 65% 30%, rgba(255,255,255,.75), transparent 12rem),
    linear-gradient(145deg, rgba(13,110,253,.95), rgba(20,72,140,.98) 55%, rgba(18,101,76,.95));
  box-shadow:0 1.4rem 3rem rgba(15,23,42,.18);
}
.library-hero-orbit{
  position:absolute;
  border:1px solid rgba(255,255,255,.18);
  border-radius:50%;
}
.library-hero-orbit-one{width:360px;height:360px;right:-110px;top:-80px}
.library-hero-orbit-two{width:240px;height:240px;left:-90px;bottom:-80px}
.library-hero-book{
  position:absolute;
  left:13%;
  top:14%;
  width:68%;
  min-height:270px;
  padding:1.4rem;
  border-radius:1.25rem;
  background:rgba(255,255,255,.96);
  box-shadow:0 1rem 2.5rem rgba(0,0,0,.22);
  transform:rotate(-3deg);
}
.library-hero-book-top{
  display:flex;
  justify-content:space-between;
  align-items:center;
  color:#536174;
}
.library-hero-book-title{
  margin-top:2.5rem;
  font-size:2.65rem;
  line-height:.95;
  font-weight:800;
  letter-spacing:-.05em;
}
.library-hero-book-meta{
  position:absolute;
  bottom:1.25rem;
  color:#667085;
  font-size:.8rem;
  font-weight:600;
}
.library-hero-mini-card{
  position:absolute;
  z-index:2;
  display:flex;
  flex-direction:column;
  gap:.1rem;
  padding:.8rem 1rem;
  border-radius:.9rem;
  background:rgba(255,255,255,.94);
  box-shadow:0 .75rem 1.5rem rgba(0,0,0,.18);
  color:#172033;
}
.library-hero-mini-card strong{font-size:1.25rem;line-height:1}
.library-hero-mini-card span{font-size:.72rem;color:#667085}
.library-hero-mini-one{right:8%;top:22%}
.library-hero-mini-two{left:8%;bottom:15%}
@media(max-width:767.98px){
  .library-home-hero{padding:3.8rem 0 3.5rem}
  .library-hero-panel{min-height:330px}
  .library-hero-book{min-height:230px}
  .library-hero-book-title{font-size:2.15rem}
}

/* v18 public content system */
.portal-public .content-hero{
  position:relative; overflow:hidden; padding:4.25rem 0 3.75rem;
  background:linear-gradient(135deg,#f4f8ff 0%,#fff 55%,#f4faf7 100%);
  border-bottom:1px solid rgba(15,23,42,.06);
}
.portal-public .content-hero .eyebrow{
  display:inline-flex; align-items:center; gap:.45rem; padding:.45rem .8rem;
  border-radius:999px; font-size:.78rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; background:rgba(13,110,253,.09); color:#0d6efd;
}
.portal-public .content-hero h1{font-size:clamp(2rem,4vw,3.4rem); letter-spacing:-.035em}
.portal-public .content-hero .hero-stat{
  border:1px solid rgba(15,23,42,.08); background:rgba(255,255,255,.78);
  border-radius:1rem; padding:1rem; box-shadow:0 .6rem 1.5rem rgba(15,23,42,.055);
}
.portal-public .content-section{padding:3.25rem 0}
.portal-public .content-section.alt{
  background:linear-gradient(180deg,rgba(13,110,253,.025),rgba(255,255,255,.7));
  border-top:1px solid rgba(15,23,42,.04);
  border-bottom:1px solid rgba(15,23,42,.04);
}
.portal-public .section-heading{max-width:760px;margin-bottom:1.8rem}
.portal-public .section-heading .eyebrow{
  color:#0d6efd;font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
}
.portal-public .feature-tile{
  height:100%; border:1px solid rgba(15,23,42,.07); border-radius:1.1rem;
  background:#fff; padding:1.35rem; box-shadow:0 .5rem 1.3rem rgba(15,23,42,.045);
}
.portal-public .feature-icon{
  width:44px;height:44px;display:grid;place-items:center;border-radius:.85rem;
  background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800;margin-bottom:1rem;
}
.portal-public .quick-link{
  display:flex;align-items:center;gap:.8rem;padding:1rem 1.05rem;
  border:1px solid rgba(15,23,42,.07);border-radius:.95rem;background:#fff;
  text-decoration:none;color:inherit;box-shadow:0 .4rem 1rem rgba(15,23,42,.035);
}
.portal-public .quick-link:hover{border-color:rgba(13,110,253,.22);transform:translateY(-2px)}
.portal-public .catalog-card{height:100%;overflow:hidden;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.08);box-shadow:0 .55rem 1.4rem rgba(15,23,42,.05)}
.portal-public .catalog-cover{aspect-ratio:3/4;display:grid;place-items:center;background:linear-gradient(145deg,#eaf1ff,#dfeee8);font-weight:800;color:#29405f;padding:1rem;text-align:center}
.portal-public .catalog-cover img{width:100%;height:100%;display:block;object-fit:contain;border-radius:.75rem;background:#fff;box-shadow:0 .45rem 1.1rem rgba(15,23,42,.08)}
.portal-public .detail-cover img{width:100%;height:100%;display:block;object-fit:contain;border-radius:.8rem;background:#fff}
.portal-public .catalog-body{padding:1rem}
.portal-public .news-card{height:100%;overflow:hidden;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.07)}
.portal-public .news-image{height:155px;background:linear-gradient(135deg,#dce9ff,#edf8f1);display:grid;place-items:center;font-weight:700;color:#47617d}
.portal-public .news-body{padding:1.1rem}
.portal-public .search-panel{
  margin-top:-2.1rem;position:relative;z-index:4;border-radius:1.2rem;background:#fff;
  border:1px solid rgba(15,23,42,.08);box-shadow:0 1rem 2.3rem rgba(15,23,42,.1);padding:1rem;
}
.portal-public .search-panel .nav-link{font-weight:700}
.portal-public .search-panel .form-control,.portal-public .search-panel .form-select{min-height:48px}
.portal-public .timeline-item{position:relative;padding-left:1.7rem;border-left:2px solid rgba(13,110,253,.12);padding-bottom:1.5rem}
.portal-public .timeline-item:before{content:"";position:absolute;left:-7px;top:.15rem;width:12px;height:12px;border-radius:50%;background:#0d6efd}
.portal-public .detail-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.portal-public .detail-meta > div{padding:.85rem;border-radius:.8rem;background:#f7f9fc;border:1px solid rgba(15,23,42,.05)}
.portal-public .auth-shell{min-height:calc(100vh - 116px);display:grid;place-items:center;padding:3rem 0;background:linear-gradient(135deg,#f2f7ff,#f8fbf9)}
.portal-public .auth-card{width:min(480px,100%);background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:1.25rem;box-shadow:0 1.25rem 3rem rgba(15,23,42,.1);padding:2rem}
@media(max-width:767.98px){
  .portal-public .content-section{padding:2.4rem 0}
  .portal-public .search-panel{margin-top:-1rem}
  .portal-public .detail-meta{grid-template-columns:1fr}
}

/* v19 — complete public page components */
.portal-public .hero-surface{position:relative;overflow:hidden;padding:4.5rem 0;background:linear-gradient(135deg,#eef5ff,#fff 55%,#eff9f4)}
.portal-public .hero-surface .display-title{font-size:clamp(2.25rem,5vw,4.3rem);font-weight:800;letter-spacing:-.045em;line-height:1.02}
.portal-public .hero-surface .hero-art{min-height:360px;border-radius:1.75rem;background:linear-gradient(145deg,#0d6efd,#194f91 58%,#187a5a);position:relative;box-shadow:0 1.5rem 3rem rgba(15,23,42,.17);overflow:hidden}
.portal-public .hero-art .glass{position:absolute;background:rgba(255,255,255,.93);border:1px solid rgba(255,255,255,.55);border-radius:1rem;box-shadow:0 1rem 2rem rgba(0,0,0,.18);padding:1rem}
.portal-public .hero-art .glass.main{left:12%;top:13%;width:72%;height:68%;transform:rotate(-3deg)}
.portal-public .hero-art .glass.one{right:6%;top:15%}.portal-public .hero-art .glass.two{left:6%;bottom:12%}
.portal-public .hero-art .line{height:8px;border-radius:99px;background:#dce7f7;margin:.65rem 0}.portal-public .hero-art .line.short{width:62%}
.portal-public .hero-art .cover{width:78px;height:108px;border-radius:.45rem;background:linear-gradient(145deg,#dbe8ff,#dff2e9);float:left;margin-right:1rem}
.portal-public .discovery{margin-top:-2rem;position:relative;z-index:3;background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:1.25rem;box-shadow:0 1rem 2.3rem rgba(15,23,42,.1);padding:1rem}
.portal-public .service-icon{width:52px;height:52px;border-radius:1rem;display:grid;place-items:center;background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800;font-size:1.05rem}
.portal-public .stat-band{background:linear-gradient(135deg,#0b2445,#173e70);color:#fff;padding:2.1rem 0}.portal-public .stat-band .stat{padding:1rem;border-right:1px solid rgba(255,255,255,.12)}
.portal-public .collection-cover{aspect-ratio:3/4;border-radius:1rem 1rem 0 0;background:linear-gradient(145deg,#dce9ff,#e9f7ef);display:grid;place-items:center;text-align:center;padding:1rem;font-weight:800;color:#29405f}
.portal-public .collection-card{height:100%;background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:1rem;overflow:hidden;box-shadow:0 .55rem 1.3rem rgba(15,23,42,.05)}
.portal-public .collection-card .body{padding:1rem}
.portal-public .news-card .news-image{height:175px}.portal-public .agenda-card{border-left:4px solid #0d6efd;padding:1rem;background:#fff;border-radius:.8rem;box-shadow:0 .45rem 1rem rgba(15,23,42,.045)}
.portal-public .breadcrumb-wrap{background:#f8fafc;border-bottom:1px solid rgba(15,23,42,.05)}
.portal-public .filter-panel{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:1rem;padding:1.1rem;box-shadow:0 .45rem 1.2rem rgba(15,23,42,.045)}
.portal-public .result-item{background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:1rem;padding:1.2rem;box-shadow:0 .4rem 1rem rgba(15,23,42,.035)}
.portal-public .result-item + .result-item{margin-top:.8rem}
.portal-public .reader-shell{background:#152238;border-radius:1.25rem;padding:1rem;min-height:520px;color:#fff}
.portal-public .reader-page{background:#fff;color:#1f2937;max-width:650px;min-height:470px;margin:auto;padding:2.5rem;box-shadow:0 1rem 2rem rgba(0,0,0,.2)}
.portal-public .profile-cover{height:180px;border-radius:1.25rem 1.25rem 0 0;background:linear-gradient(135deg,#0d6efd,#187a5a)}
.portal-public .avatar-lg{width:104px;height:104px;border-radius:50%;background:#fff;border:5px solid #fff;box-shadow:0 .4rem 1rem rgba(0,0,0,.14);display:grid;place-items:center;font-size:2rem;font-weight:800;color:#0d6efd}
.portal-public .faq-item{border:1px solid rgba(15,23,42,.08);border-radius:.9rem;padding:1rem;background:#fff}
.portal-public .contact-card{height:100%;padding:1.35rem;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.07);box-shadow:0 .45rem 1.1rem rgba(15,23,42,.04)}
.portal-public .map-placeholder{min-height:330px;border-radius:1.2rem;background:repeating-linear-gradient(45deg,#edf2f7,#edf2f7 10px,#e5ebf2 10px,#e5ebf2 20px);display:grid;place-items:center;color:#64748b;font-weight:700}
.portal-public .article-image{height:330px;border-radius:1.25rem;background:linear-gradient(135deg,#dce9ff,#e8f6ee);display:grid;place-items:center;color:#52657b;font-weight:800}
.portal-public .login-brand{width:62px;height:62px;border-radius:1rem;display:grid;place-items:center;background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800;font-size:1.3rem}

/* Home page — dedicated composition, reusing the portal design system */
.home-page .home-hero{position:relative}
.home-page .home-hero-slide{min-height:560px;display:flex;align-items:center;background-size:cover;background-position:center;position:relative;color:#fff}
.home-page .home-hero-slide:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(4,26,55,.88),rgba(8,44,83,.58) 48%,rgba(5,25,48,.15))}
.home-page .home-hero-slide:after{content:"";position:absolute;inset:0;background-image:url("../../../assets/images/public/hero-library.svg");background-repeat:no-repeat;background-position:right center;background-size:48% auto;opacity:.34;mix-blend-mode:screen}
.home-page .home-hero-slide .container{position:relative;z-index:2}
.home-page .home-hero-slide h1,.home-page .home-hero-slide h2{font-size:clamp(2.8rem,6vw,5.25rem);line-height:.98;letter-spacing:-.045em;font-weight:700;max-width:760px}
.home-page .home-hero-slide h1 strong,.home-page .home-hero-slide h2 strong{font-weight:800}
.home-page .home-hero-slide p{font-size:1.15rem;line-height:1.65;max-width:680px;color:rgba(255,255,255,.88)}
.home-page .slide-one{background-image:linear-gradient(90deg,#0b2c50,#0d4b72)}
.home-page .slide-two{background-image:linear-gradient(90deg,#123b67,#0e6970)}
.home-page .slide-three{background-image:linear-gradient(90deg,#19375e,#17624f)}
.home-page .home-search-wrap{position:relative;z-index:4;margin-top:-74px}
.home-page .home-search-card{background:#fff;border-radius:1.15rem;padding:1rem 1.15rem 1.1rem;box-shadow:0 1.25rem 3rem rgba(8,31,58,.18);border:1px solid rgba(15,23,42,.08)}
.home-page .home-search-card .nav-link{font-weight:700;color:#526274;border:0;border-bottom:3px solid transparent;border-radius:0;padding:.65rem 1rem}
.home-page .home-search-card .nav-link.active{color:#0d6efd;border-bottom-color:#0d6efd;background:transparent}
.home-page .popular-search{display:flex;align-items:center;flex-wrap:wrap;gap:.45rem;color:#64748b}
.home-page .popular-search a{padding:.3rem .75rem;border-radius:99px;background:#eef5ff;color:#0d5fba;text-decoration:none;font-size:.8rem;font-weight:600}
.home-page .home-quick-access{padding:1.25rem 0 2rem;background:#f7f9fc}
.home-page .quick-access-card{background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:1.15rem;box-shadow:0 .65rem 1.8rem rgba(15,23,42,.07);overflow:hidden}
.home-page .quick-access-card>a{padding:1.25rem .75rem;text-decoration:none;color:#1f3045;text-align:center;border-right:1px solid #edf0f4;display:flex;flex-direction:column;align-items:center;gap:.28rem;transition:.2s ease}
.home-page .quick-access-card>a:last-child{border-right:0}
.home-page .quick-access-card>a:hover{background:#f4f8ff;color:#0d6efd;transform:translateY(-2px)}
.home-page .qa-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#edf5ff;color:#0d6efd;font-size:1.25rem;font-weight:800;margin-bottom:.25rem}
.home-page .quick-access-card strong{font-size:.9rem}.home-page .quick-access-card small{font-size:.72rem;color:#7b8794}
.home-page .home-stats{background:#0b3158;color:#fff;padding:1.15rem 0}
.home-page .home-stat{padding:.65rem 1rem;border-right:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column}
.home-page .home-stat strong{font-size:1.7rem;line-height:1}.home-page .home-stat span{font-size:.78rem;color:rgba(255,255,255,.7);margin-top:.3rem}
.home-page .home-content{padding-top:3.6rem}
.home-page .home-section-heading{display:flex;justify-content:space-between;gap:1rem;align-items:end;margin-bottom:1.5rem}
.home-page .home-section-heading.compact{margin-bottom:1rem}
.home-page .home-section-heading h2{font-size:1.65rem;font-weight:800;margin:.25rem 0 0;letter-spacing:-.025em}
.home-page .home-section-heading p{font-size:.9rem;color:#718096;margin:.35rem 0 0}
.home-page .section-link{font-size:.85rem;font-weight:700;text-decoration:none;color:#0d6efd;white-space:nowrap}
.home-page .featured-collections{padding:0 .25rem}
.home-page .home-book-card{height:100%;display:flex;flex-direction:column;text-decoration:none;color:#1f2937;background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:1rem;padding:.7rem;box-shadow:0 .45rem 1.15rem rgba(15,23,42,.045);transition:.2s ease}
.home-page .home-book-card:hover{transform:translateY(-4px);box-shadow:0 .9rem 1.8rem rgba(15,23,42,.1)}
.home-page .book-cover{aspect-ratio:3/4;border-radius:.7rem;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:1rem;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.home-page .book-cover span{font-size:.92rem;line-height:1.15;font-weight:900;letter-spacing:.02em}.home-page .book-cover small{font-size:.58rem;opacity:.8;margin-top:.6rem}
.home-page .cover-1{background:linear-gradient(145deg,#102b54,#d29b2f)}.home-page .cover-2{background:linear-gradient(145deg,#f4f5f7 0 58%,#bd3c45);color:#27364a}.home-page .cover-3{background:linear-gradient(145deg,#101e3e,#2684b5)}.home-page .cover-4{background:linear-gradient(145deg,#0e645c,#72a85e)}.home-page .cover-5{background:linear-gradient(145deg,#c7b79a,#735a43)}
.home-page .home-book-card .badge{align-self:flex-start;margin-top:.8rem;padding:.3rem .55rem;background:#eef5ff;color:#0d6efd;border-radius:99px;font-size:.68rem}
.home-page .home-book-card h3{font-size:.86rem;font-weight:800;line-height:1.3;margin:.45rem 0 .15rem}.home-page .home-book-card p{font-size:.72rem;color:#7b8794;margin:0}
.home-page .collection-arrow{position:absolute;top:42%;z-index:2;width:34px;height:34px;border:0;border-radius:50%;background:#fff;color:#0d6efd;box-shadow:0 .35rem .8rem rgba(15,23,42,.15);font-size:1.4rem;display:grid;place-items:center}.home-page .collection-arrow.prev{left:-10px}.home-page .collection-arrow.next{right:-10px}
.home-page .home-news-section{background:#f7f9fc}
.home-page .home-panel{background:#fff;border:1px solid rgba(15,23,42,.07);border-radius:1.1rem;padding:1.25rem;box-shadow:0 .45rem 1.1rem rgba(15,23,42,.04)}
.home-page .home-news-item{display:grid;grid-template-columns:104px 1fr;gap:1rem;padding:.8rem 0;text-decoration:none;color:#1f2937;border-bottom:1px solid #edf0f4}
.home-page .home-news-item:last-child{border-bottom:0}.home-page .news-thumb{height:76px;border-radius:.7rem;display:grid;place-items:center;text-align:center;padding:.5rem;background:#eaf2fc;color:#1e5b9e;font-size:.65rem;font-weight:800}
.home-page .news-2{background:#eaf5ff;color:#1570c9}.home-page .news-3{background:#edf6ef;color:#23704a}
.home-page .news-date{font-size:.7rem;color:#0d6efd;font-weight:700}.home-page .home-news-item h3{font-size:.86rem;line-height:1.35;font-weight:800;margin:.18rem 0}.home-page .home-news-item p{font-size:.74rem;color:#7b8794;margin:0;line-height:1.45}
.home-page .home-agenda-item{display:flex;gap:1rem;padding:.8rem 0;border-bottom:1px solid #edf0f4;text-decoration:none;color:#1f2937}.home-page .home-agenda-item:last-child{border-bottom:0}
.home-page .agenda-date{flex:0 0 58px;height:64px;border-radius:.7rem;background:#edf5ff;color:#0d6efd;display:flex;flex-direction:column;justify-content:center;align-items:center}.home-page .agenda-date strong{font-size:1.45rem;line-height:1}.home-page .agenda-date span{font-size:.65rem;font-weight:800;margin-top:.2rem}.home-page .home-agenda-item h3{font-size:.85rem;font-weight:800;line-height:1.35;margin:.2rem 0}.home-page .home-agenda-item p{font-size:.72rem;color:#7b8794;margin:0}
.home-page .home-digital{background:linear-gradient(135deg,#f4f8ff,#f3faf7)}
.home-page .digital-resource-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.home-page .digital-resource-grid a{position:relative;display:flex;flex-direction:column;padding:1.25rem;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.07);text-decoration:none;color:#1f2937;min-height:130px;box-shadow:0 .4rem 1rem rgba(15,23,42,.04)}
.home-page .digital-resource-grid a strong{font-size:1rem}.home-page .digital-resource-grid a small{color:#718096;margin-top:.3rem}.home-page .digital-resource-grid a span{position:absolute;right:1rem;bottom:.9rem;color:#0d6efd;font-weight:800}
.home-page .home-service-intro{padding:1.5rem;border-radius:1rem;background:#f6f9fd;border:1px solid #e5ebf3}
.home-page .service-mini{height:100%;display:flex;gap:1rem;align-items:flex-start;padding:1.2rem;border-radius:1rem;border:1px solid rgba(15,23,42,.07);background:#fff;text-decoration:none;color:#1f2937;box-shadow:0 .4rem 1rem rgba(15,23,42,.04)}
.home-page .service-mini>span{width:38px;height:38px;border-radius:.7rem;display:grid;place-items:center;background:#edf5ff;color:#0d6efd;font-weight:800;flex:0 0 38px}
.home-page .service-mini strong{display:block;font-size:.88rem}.home-page .service-mini small{display:block;color:#7b8794;margin-top:.3rem;font-size:.74rem;line-height:1.45}
.home-page .home-info-strip{background:#0b3158;color:#fff;padding:1.25rem 0}
.home-page .info-strip-item{display:flex;gap:.8rem;align-items:flex-start;padding:1rem;border-right:1px solid rgba(255,255,255,.12);min-height:82px}.home-page .info-strip-item>span{font-size:1.2rem;color:#9dc8ff}.home-page .info-strip-item small{display:block;color:#9fb2c7;font-size:.68rem}.home-page .info-strip-item strong{display:block;font-size:.78rem;margin:.2rem 0}.home-page .info-strip-item em{display:block;font-style:normal;color:#7891aa;font-size:.67rem}
.home-page .info-help-btn{margin:1rem}.home-page .footer-social{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#eef5ff;color:#0d6efd;text-decoration:none;font-size:.7rem;font-weight:800}
@media(max-width:991.98px){.home-page .home-hero-slide{min-height:500px}.home-page .home-hero-slide:after{background-size:70% auto;opacity:.18}.home-page .quick-access-card>a{border-bottom:1px solid #edf0f4}.home-page .home-search-wrap{margin-top:-55px}}
@media(max-width:575.98px){.home-page .home-hero-slide{min-height:530px}.home-page .home-hero-slide h1,.home-page .home-hero-slide h2{font-size:2.55rem}.home-page .home-hero-slide p{font-size:.98rem}.home-page .home-search-wrap{margin-top:-35px}.home-page .home-search-card{padding:.75rem}.home-page .home-section-heading{align-items:start;flex-direction:column}.home-page .home-news-item{grid-template-columns:82px 1fr}.home-page .news-thumb{height:68px}.home-page .digital-resource-grid{grid-template-columns:1fr}.home-page .info-strip-item{border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}}

/* v21 — Library module */
.portal-public .library-hero{padding:4rem 0;background:linear-gradient(135deg,#eef5ff 0%,#fff 55%,#edf8f3 100%);border-bottom:1px solid rgba(15,23,42,.06)}
.portal-public .library-hero .eyebrow,.portal-public .module-hero .eyebrow{letter-spacing:.12em;font-size:.76rem;font-weight:800;color:#0d6efd}
.portal-public .module-hero{padding:3.6rem 0;background:linear-gradient(135deg,#f7faff,#fff);border-bottom:1px solid rgba(15,23,42,.06)}
.portal-public .library-nav-card{height:100%;padding:1.4rem;border:1px solid rgba(15,23,42,.07);border-radius:1rem;background:#fff;box-shadow:0 .5rem 1.2rem rgba(15,23,42,.045);transition:.2s}
.portal-public .library-nav-card:hover{transform:translateY(-3px);box-shadow:0 .8rem 1.6rem rgba(15,23,42,.08)}
.portal-public .library-nav-card .icon{width:52px;height:52px;border-radius:1rem;display:grid;place-items:center;background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800;margin-bottom:1rem}
.portal-public .library-info-card{height:100%;padding:1.5rem;border-radius:1rem;background:#fff;border:1px solid rgba(15,23,42,.07)}
.portal-public .timeline{position:relative;margin-left:.7rem;padding-left:1.8rem;border-left:2px solid #dce7f7}
.portal-public .timeline-item{position:relative;padding-bottom:1.6rem}
.portal-public .timeline-item:before{content:"";position:absolute;left:-2.25rem;top:.2rem;width:.85rem;height:.85rem;border-radius:50%;background:#0d6efd;border:3px solid #fff;box-shadow:0 0 0 2px #dce7f7}
.portal-public .org-chart{display:grid;gap:1rem;justify-items:center}
.portal-public .org-box{min-width:220px;padding:1rem 1.25rem;text-align:center;border:1px solid rgba(13,110,253,.18);border-radius:.9rem;background:#fff;box-shadow:0 .4rem 1rem rgba(15,23,42,.05)}
.portal-public .org-line{width:2px;height:28px;background:#cbd8ea}
.portal-public .facility-card{overflow:hidden;border-radius:1rem;border:1px solid rgba(15,23,42,.07);background:#fff;height:100%}
.portal-public .facility-visual{height:180px;background:linear-gradient(135deg,#dce9ff,#e7f5ee);display:grid;place-items:center;color:#55708d;font-weight:800}
.portal-public .staff-card{height:100%;padding:1.3rem;border:1px solid rgba(15,23,42,.07);border-radius:1rem;background:#fff;text-align:center}
.portal-public .staff-avatar{width:82px;height:82px;border-radius:50%;margin:0 auto 1rem;background:linear-gradient(135deg,#dce9ff,#dff2e9);display:grid;place-items:center;font-weight:800;color:#36516d}
.portal-public .hours-table td,.portal-public .hours-table th{padding:.85rem 1rem}
.portal-public .policy-list{display:grid;gap:.75rem;counter-reset:policy}
.portal-public .policy-list>div{counter-increment:policy;padding:1rem 1rem 1rem 3.2rem;border-radius:.8rem;background:#f8fafc;position:relative}
.portal-public .policy-list>div:before{content:counter(policy);position:absolute;left:1rem;top:1rem;width:1.6rem;height:1.6rem;border-radius:50%;background:#0d6efd;color:#fff;display:grid;place-items:center;font-size:.75rem;font-weight:800}
.portal-public .access-card{height:100%;padding:1.25rem;border:1px solid rgba(15,23,42,.07);border-radius:1rem;background:#fff}

/* v22 — Services module */
.portal-public .service-hero{padding:3.75rem 0;background:linear-gradient(135deg,#f2f7ff,#fff 55%,#eff9f4);border-bottom:1px solid rgba(15,23,42,.06)}
.portal-public .service-card{height:100%;padding:1.5rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .45rem 1.1rem rgba(15,23,42,.045);transition:.2s}
.portal-public .service-card:hover{transform:translateY(-3px);box-shadow:0 .75rem 1.5rem rgba(15,23,42,.08)}
.portal-public .service-icon{width:50px;height:50px;border-radius:.9rem;display:grid;place-items:center;background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800}
.portal-public .service-step{height:100%;position:relative;padding:1.4rem 1.4rem 1.4rem 4.2rem;border:1px solid rgba(15,23,42,.07);border-radius:1rem;background:#fff}
.portal-public .service-step .num{position:absolute;left:1.2rem;top:1.3rem;width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;background:#0d6efd;color:#fff;font-size:.78rem;font-weight:800}
.portal-public .requirement{padding:1rem 1.1rem;border-radius:.8rem;background:#f8fafc;border:1px solid #e8eef6}
.portal-public .requirement + .requirement{margin-top:.7rem}
.portal-public .service-callout{border-radius:1.1rem;padding:1.6rem;background:linear-gradient(135deg,#0d6efd,#375a9e);color:#fff}
.portal-public .service-callout .text-body-secondary{color:rgba(255,255,255,.78)!important}
.portal-public .faq-item{padding:1.2rem 0;border-bottom:1px solid #e8edf3}
.portal-public .faq-item:last-child{border-bottom:0}
.portal-public .process-track{display:grid;gap:1rem}
.portal-public .process-track .process-item{display:flex;gap:1rem;align-items:flex-start}
.portal-public .process-track .process-dot{flex:0 0 36px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#eaf2ff;color:#0d6efd;font-weight:800}
.portal-public .booking-card{height:100%;padding:1.4rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}

/* v23 — Collections module */
.portal-public .collection-hero{padding:3.8rem 0;background:linear-gradient(135deg,#eef5ff,#fff 52%,#f4faf6);border-bottom:1px solid rgba(15,23,42,.06)}
.portal-public .collection-card{height:100%;padding:1.4rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .45rem 1.1rem rgba(15,23,42,.045);transition:.2s}
.portal-public .collection-card:hover{transform:translateY(-3px);box-shadow:0 .75rem 1.5rem rgba(15,23,42,.08)}
.portal-public .collection-icon{width:52px;height:52px;border-radius:1rem;display:grid;place-items:center;background:rgba(13,110,253,.1);color:#0d6efd;font-weight:800}
.portal-public .collection-meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.75rem}
.portal-public .collection-filter{padding:1rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
.portal-public .book-card{height:100%;overflow:hidden;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .4rem 1rem rgba(15,23,42,.04)}
.portal-public .book-cover{height:230px;background:linear-gradient(135deg,#dce9ff,#eaf6f0);display:flex;align-items:end;padding:1.25rem;color:#29445e;font-weight:800}
.portal-public .book-body{padding:1.1rem}
.portal-public .availability{display:inline-flex;align-items:center;gap:.35rem;font-size:.78rem;font-weight:700}
.portal-public .availability:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentColor}
.portal-public .collection-detail-cover{min-height:360px;border-radius:1.1rem;background:linear-gradient(135deg,#dbe8fb,#e6f4ec);display:grid;place-items:center;color:#36516d;font-weight:800}
.portal-public .metadata-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem 1.25rem}
.portal-public .metadata-list div{padding-bottom:.65rem;border-bottom:1px solid #edf1f5}
.portal-public .metadata-list dt{font-size:.75rem;color:#718096;font-weight:700}
.portal-public .metadata-list dd{margin:0;font-size:.9rem}
.portal-public .collection-table th,.portal-public .collection-table td{padding:.85rem 1rem;vertical-align:middle}
.portal-public .format-card{height:100%;padding:1.3rem;border-radius:1rem;border:1px solid rgba(15,23,42,.08);background:#fff}

/* v24 — Collections visual system */
.portal-public .collections-hero{position:relative;overflow:hidden;padding:4.5rem 0 4rem;background:linear-gradient(135deg,#eef5ff 0%,#fff 52%,#edf8f2 100%)}
.portal-public .collections-hero .search-panel{margin-top:2rem;padding:1rem;background:rgba(255,255,255,.9);border:1px solid rgba(15,23,42,.08);border-radius:1.15rem;box-shadow:0 1rem 2.5rem rgba(15,23,42,.08)}
.portal-public .collections-hero .search-panel .form-control{min-height:52px}
.portal-public .collections-hero .search-panel .btn{min-height:52px}
.portal-public .collection-chip{display:inline-flex;align-items:center;padding:.55rem .85rem;border-radius:999px;border:1px solid rgba(13,110,253,.14);background:#fff;color:#29445e;text-decoration:none;font-size:.82rem;font-weight:600}
.portal-public .collection-chip:hover{background:#f2f7ff;color:#0d6efd}
.portal-public .collection-section-title{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-bottom:1.35rem}
.portal-public .collection-section-title .eyebrow{margin-bottom:.35rem}
.portal-public .collection-book{height:100%;overflow:hidden;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .45rem 1.1rem rgba(15,23,42,.045);transition:.2s}
.portal-public .collection-book:hover{transform:translateY(-3px);box-shadow:0 .8rem 1.5rem rgba(15,23,42,.08)}
.portal-public .collection-book-cover{height:215px;padding:1.2rem;display:flex;align-items:end;background:linear-gradient(145deg,#dbe8fb,#eef7f2);color:#29445e;font-weight:800}
.portal-public .collection-book-body{padding:1.05rem}
.portal-public .collection-book-meta{font-size:.75rem;color:#718096}
.portal-public .collection-book-actions{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-top:1rem}
.portal-public .popular-list{display:grid;gap:.7rem}
.portal-public .popular-item{display:flex;align-items:center;gap:1rem;padding:1rem;border:1px solid rgba(15,23,42,.07);border-radius:.9rem;background:#fff}
.portal-public .popular-rank{width:2.35rem;height:2.35rem;display:grid;place-items:center;border-radius:.7rem;background:#edf4ff;color:#0d6efd;font-weight:800}
.portal-public .popular-cover{width:44px;height:58px;display:grid;place-items:center;border-radius:.45rem;background:#e7eef7;font-size:.62rem;font-weight:800;color:#46627e}
.portal-public .popular-score{margin-left:auto;text-align:right;font-size:.76rem;color:#718096}
.portal-public .subject-card{height:100%;padding:1.2rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
.portal-public .subject-count{font-size:.76rem;color:#718096}
.portal-public .featured-collection{overflow:hidden;border-radius:1.2rem;background:linear-gradient(135deg,#172b4d,#315f8f);color:#fff}
.portal-public .featured-collection .visual{min-height:280px;display:grid;place-items:center;background:rgba(255,255,255,.07);font-weight:800;letter-spacing:.08em}
.portal-public .featured-collection .body{padding:2rem}
.portal-public .catalog-toolbar{padding:1rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
.portal-public .catalog-result{padding:1.1rem 0;border-bottom:1px solid #e8edf3}
.portal-public .catalog-result:last-child{border-bottom:0}
.portal-public .catalog-thumb{width:78px;height:102px;display:grid;place-items:center;border-radius:.55rem;background:#e8f0fa;color:#48637f;font-size:.65rem;font-weight:800}
.portal-public .catalog-result .availability{font-size:.76rem;font-weight:700}
.portal-public .detail-hero{padding:3.2rem 0;background:linear-gradient(135deg,#f2f7ff,#fff)}
.portal-public .detail-cover{min-height:430px;border-radius:1.15rem;display:grid;place-items:center;padding:2rem;background:linear-gradient(145deg,#d9e7f9,#e9f5ef);color:#36516d;font-weight:800;box-shadow:0 .8rem 1.8rem rgba(15,23,42,.07)}
.portal-public .detail-panel{padding:1.4rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
.portal-public .detail-tabs{display:flex;flex-wrap:wrap;gap:.35rem;padding-bottom:.8rem;border-bottom:1px solid #e8edf3}
.portal-public .reader-shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:1rem}
.portal-public .reader-sidebar{padding:1rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
.portal-public .reader-page{min-height:640px;padding:3rem;display:flex;align-items:flex-start;justify-content:center;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .5rem 1.5rem rgba(15,23,42,.04)}
.portal-public .reader-paper{width:min(760px,100%);min-height:560px;padding:2.5rem;background:#fcfcfb;border:1px solid #e9e9e5;box-shadow:0 .4rem 1rem rgba(15,23,42,.05)}
.portal-public .reader-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1rem;padding:.75rem;border:1px solid rgba(15,23,42,.08);border-radius:.8rem;background:#fff}
.portal-public .review-card{height:100%;padding:1.2rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff}
@media(max-width:991.98px){.portal-public .reader-shell{grid-template-columns:1fr}.portal-public .reader-sidebar{position:static}.portal-public .detail-cover{min-height:320px}}
@media(max-width:575.98px){.portal-public .collections-hero{padding:3.2rem 0 2.8rem}.portal-public .collection-book-cover{height:190px}.portal-public .reader-page{padding:1rem}.portal-public .reader-paper{padding:1.4rem}}

/* v25 — portal polish */
.portal-public{font-size:15px;line-height:1.6}
.portal-public h1,.portal-public h2,.portal-public h3,.portal-public h4,.portal-public h5,.portal-public h6{letter-spacing:-.015em;line-height:1.25}
.portal-public h1{font-size:clamp(2rem,3.6vw,3.15rem)}
.portal-public h2{font-size:clamp(1.45rem,2.2vw,2rem)}
.portal-public h3{font-size:clamp(1.15rem,1.7vw,1.4rem)}
.portal-public h4{font-size:1.15rem}.portal-public h5{font-size:1rem}.portal-public h6{font-size:.92rem}
.portal-public p{font-size:.94rem}.portal-public a{font-size:.93rem}
.portal-public small,.portal-public .small{font-size:.78rem}
.portal-public label,.portal-public .form-label{font-size:.82rem;font-weight:600}
.portal-public .btn{font-size:.84rem;font-weight:600}.portal-public .btn-lg{font-size:.9rem}
.portal-public .badge{font-size:.7rem;font-weight:700}.portal-public .form-control,.portal-public .form-select{font-size:.86rem}
.portal-public .collections-hero,.portal-public .collection-hero,.portal-public .detail-hero{padding-top:2.25rem;padding-bottom:2.5rem}
.portal-public .collections-hero .search-panel{margin-top:1.25rem}
.portal-public .content-section{padding-top:2.4rem;padding-bottom:2.4rem}
.portal-public .collection-section-title{margin-bottom:1rem}
.portal-public .hero-compact{padding:2.15rem 0 2.35rem!important}
.portal-public .eresource-grid .collection-card{min-height:100%}
.portal-public .resource-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:.85rem;background:#eef5ff;color:#0d6efd;font-weight:800}
.portal-public .resource-card{height:100%;padding:1.25rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .35rem 1rem rgba(15,23,42,.04)}
.portal-public .resource-card:hover{transform:translateY(-2px);box-shadow:0 .7rem 1.4rem rgba(15,23,42,.07)}
.portal-public .home-hero{padding:2.1rem 0 2.4rem!important;background:linear-gradient(135deg,#eef5ff 0%,#fff 55%,#edf8f2 100%)}
.portal-public .home-hero .hero-copy{max-width:700px}
.portal-public .home-hero .hero-search{margin-top:1.15rem;padding:.8rem;border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:rgba(255,255,255,.94);box-shadow:0 .65rem 1.6rem rgba(15,23,42,.06)}
.portal-public .home-stat{height:100%;padding:1rem;border:1px solid rgba(15,23,42,.07);border-radius:.9rem;background:#fff}
.portal-public .home-stat strong{font-size:1.25rem}
.portal-public .home-quick{height:100%;padding:1rem;border:1px solid rgba(15,23,42,.07);border-radius:.9rem;background:#fff;text-decoration:none}
.portal-public .home-quick .icon{width:42px;height:42px;display:grid;place-items:center;border-radius:.75rem;background:#eef5ff;color:#0d6efd;font-weight:800}
.portal-public .home-feature{height:100%;padding:1.35rem;border-radius:1rem;background:#172b4d;color:#fff}
.portal-public .home-feature p{color:rgba(255,255,255,.7)}
.portal-public .topbar,.portal-public .navbar{min-height:inherit}
@media(max-width:767.98px){.portal-public{font-size:14px}.portal-public .collections-hero,.portal-public .collection-hero,.portal-public .detail-hero{padding-top:1.65rem;padding-bottom:2rem}.portal-public .content-section{padding-top:2rem;padding-bottom:2rem}}

.portal-public .navbar{padding-top:.55rem;padding-bottom:.55rem}
.portal-public .navbar-brand{font-size:1rem}
.portal-public .navbar-nav .nav-link{font-size:.86rem;font-weight:600;padding:.55rem .7rem}
.portal-public .topbar{font-size:.76rem}

/* v26 — membership registration */
.portal-public .membership-hero{padding:2rem 0 2.25rem;background:linear-gradient(135deg,#eef5ff,#fff 55%,#edf8f2)}
.portal-public .membership-step{display:flex;align-items:center;gap:.65rem}
.portal-public .membership-step .num{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#e9eef5;color:#526579;font-size:.78rem;font-weight:800}
.portal-public .membership-step.active .num{background:#0d6efd;color:#fff}
.portal-public .membership-step.done .num{background:#198754;color:#fff}
.portal-public .registration-card{border:1px solid rgba(15,23,42,.08);border-radius:1rem;background:#fff;box-shadow:0 .5rem 1.3rem rgba(15,23,42,.05)}
.portal-public .registration-card .card-heading{padding:1.15rem 1.3rem;border-bottom:1px solid #e8edf3}
.portal-public .registration-card .card-body{padding:1.3rem}
.portal-public .registration-section-title{font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;font-weight:800;color:#66768a}
.portal-public .required::after{content:" *";color:#dc3545}
.portal-public .registration-note{padding:.85rem 1rem;border-radius:.75rem;background:#f7f9fc;border:1px solid #e8edf3}
.portal-public .upload-box{padding:1rem;border:1px dashed #b8c4d2;border-radius:.75rem;background:#fbfcfe}
.portal-public .review-row{display:grid;grid-template-columns:180px 1fr;gap:1rem;padding:.65rem 0;border-bottom:1px solid #edf0f4}
.portal-public .review-row:last-child{border-bottom:0}
.portal-public .status-card{max-width:760px;margin:auto;padding:2rem;border:1px solid rgba(15,23,42,.08);border-radius:1.1rem;background:#fff;box-shadow:0 .7rem 1.8rem rgba(15,23,42,.06)}
.portal-public .status-icon{width:64px;height:64px;display:grid;place-items:center;margin:0 auto 1rem;border-radius:50%;background:#fff3cd;color:#997404;font-weight:900;font-size:1.35rem}
.portal-public .registration-timeline{position:relative;margin:1.4rem 0 0;padding-left:1.5rem}
.portal-public .registration-timeline::before{content:"";position:absolute;left:8px;top:7px;bottom:7px;width:2px;background:#e6ebf1}
.portal-public .registration-timeline .item{position:relative;padding:0 0 1.2rem 1rem}
.portal-public .registration-timeline .item::before{content:"";position:absolute;left:-1.5rem;top:4px;width:16px;height:16px;border-radius:50%;background:#fff;border:3px solid #c9d3df}
.portal-public .registration-timeline .item.done::before{border-color:#198754;background:#198754}
.portal-public .registration-timeline .item.current::before{border-color:#0d6efd;background:#0d6efd}
.portal-public .registration-summary{position:sticky;top:6rem}
@media(max-width:991.98px){.portal-public .registration-summary{position:static}.portal-public .review-row{grid-template-columns:1fr;gap:.15rem}}

/* v27 — home hero flush with navbar */
.portal-public .navbar + main .home-hero,
.portal-public main > .home-hero:first-child{
    margin-top:0!important;
    padding-top:1.35rem!important;
}
.portal-public .navbar + .home-hero,
.portal-public .navbar + main > .home-hero{
    margin-top:0!important;
}
.portal-public main.library-main{
    margin-top:0!important;
    padding-top:0!important;
}
.portal-public .home-hero:first-child{
    border-top-left-radius:0;
    border-top-right-radius:0;
}
@media(max-width:767.98px){
    .portal-public .navbar + main > .home-hero,
    .portal-public main > .home-hero:first-child{
        padding-top:1.05rem!important;
    }
}

/* v28 — complete collections module */
.portal-public .catalog-toolbar{padding:1rem;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff}
.portal-public .catalog-result{padding:1.1rem;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff;height:100%;transition:.18s ease}
.portal-public .catalog-result:hover{transform:translateY(-2px);box-shadow:0 .6rem 1.3rem rgba(15,23,42,.06)}
.portal-public .cover-placeholder{display:grid;place-items:center;min-height:190px;border-radius:.75rem;background:linear-gradient(145deg,#eef3f9,#dce7f3);font-size:.72rem;font-weight:800;letter-spacing:.08em;color:#536579;text-align:center}
.portal-public .metadata-list{margin:0;padding:0;list-style:none}
.portal-public .metadata-list li{display:flex;justify-content:space-between;gap:1rem;padding:.65rem 0;border-bottom:1px solid #edf0f4;font-size:.84rem}
.portal-public .metadata-list li:last-child{border-bottom:0}
.portal-public .filter-panel{padding:1rem;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff}
.portal-public .filter-group{padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid #edf0f4}
.portal-public .filter-group:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.portal-public .subject-card{height:100%;padding:1.1rem;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff}
.portal-public .subject-count{font-size:.76rem;font-weight:700;color:#66768a}
.portal-public .resource-table{overflow:hidden;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff}
.portal-public .resource-table table{margin:0}
.portal-public .resource-table th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#66768a;background:#f8fafc}
.portal-public .resource-table td{font-size:.84rem;vertical-align:middle}
.portal-public .detail-cover{padding:1rem;border:1px solid #e7ebf0;border-radius:1rem;background:#f8fafc}
.portal-public .availability-box{padding:1rem;border-radius:.9rem;background:#f4fbf7;border:1px solid #d9f0e1}
.portal-public .reader-shell{overflow:hidden;border:1px solid #dfe5ec;border-radius:1rem;background:#fff;box-shadow:0 .5rem 1.4rem rgba(15,23,42,.05)}
.portal-public .reader-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.65rem .8rem;border-bottom:1px solid #e7ebf0;background:#f8fafc}
.portal-public .reader-sidebar{height:560px;overflow:auto;border-right:1px solid #e7ebf0;background:#fbfcfe}
.portal-public .reader-content{min-height:560px;padding:3rem 8%;line-height:1.9}
.portal-public .reader-content p{font-size:.98rem}
.portal-public .collection-stat{padding:1rem;border:1px solid #e7ebf0;border-radius:.85rem;background:#fff}
.portal-public .collection-stat strong{font-size:1.35rem}
.portal-public .special-banner{padding:1.5rem;border-radius:1rem;background:linear-gradient(135deg,#172b4d,#315a83);color:#fff}
.portal-public .pagination .page-link{font-size:.82rem}
@media(max-width:991.98px){.portal-public .reader-sidebar{height:auto;border-right:0;border-bottom:1px solid #e7ebf0}.portal-public .reader-content{min-height:430px;padding:2rem 1.4rem}}

/* v29 — home, digital library, e-resources and repository polish */
.portal-public .home-hero{padding:1.4rem 0 2.2rem;background:linear-gradient(180deg,#f7fbff 0%,#fff 100%);margin-top:0}
.portal-public .hero-feature-card{padding:1.25rem;border:1px solid #e3eaf2;border-radius:1.1rem;background:#fff;box-shadow:0 .7rem 2rem rgba(15,23,42,.07)}
.portal-public .home-feature-card{height:100%;padding:1.15rem;border:1px solid #e7ebf0;border-radius:.9rem;background:#fff}
.portal-public .hero-search{max-width:850px}
.portal-public .home-page .content-section{padding-top:2rem;padding-bottom:2rem}
.portal-public .home-page .section-heading{margin-bottom:1rem}
.portal-public .home-page .navbar + main,.portal-public .home-page main{margin-top:0!important;padding-top:0!important}
.portal-public .digital-library-page .content-section,.portal-public .eresources-page .content-section,.portal-public .repository-page .content-section{padding-top:1.9rem;padding-bottom:1.9rem}
.portal-public .digital-library-page .hero-compact,.portal-public .eresources-page .hero-compact,.portal-public .repository-page .hero-compact{margin-bottom:0}


/* Shared Portal Public quality layer */
:root{
  --portal-container:1180px;
  --portal-navbar-h:72px;
  --portal-section-y:clamp(2.5rem,5vw,4.25rem);
  --portal-gap:clamp(.9rem,1.7vw,1.5rem);
  --portal-radius:1rem;
  --portal-shadow:0 12px 35px rgba(15,23,42,.08);
}
.library-main .container{max-width:var(--portal-container);}
.library-main section{scroll-margin-top:calc(var(--portal-navbar-h) + 1rem);}
.library-main .content-section{padding-block:var(--portal-section-y);}
.library-main .row{--bs-gutter-y:var(--portal-gap);}
.library-main h1{font-size:clamp(2rem,3.8vw,3.25rem);line-height:1.12;}
.library-main h2{font-size:clamp(1.35rem,2.2vw,2rem);line-height:1.2;}
.library-main h3{font-size:clamp(1.08rem,1.5vw,1.35rem);line-height:1.3;}
.library-main h4{font-size:1.1rem;}
.library-main h5{font-size:1rem;}
.library-main h6{font-size:.925rem;}
.library-main p{font-size:1rem;line-height:1.65;}
.library-main small,.library-main .small{font-size:.875rem;line-height:1.5;}
.library-main label,.library-main .form-label{font-size:.9rem;font-weight:600;}
.library-main .btn{font-size:.9rem;line-height:1.25;padding:.62rem .95rem;border-radius:.7rem;}
.library-main .btn-sm{font-size:.825rem;padding:.48rem .72rem;}
.library-main .badge{font-size:.75rem;font-weight:700;padding:.42em .62em;}
.library-main .alert{font-size:.92rem;border-radius:.8rem;}
.library-main .subject-card,.library-main .availability-box{border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);}
.library-main .section-heading{margin-bottom:1.15rem;}
.library-main .hero-compact{padding-block:clamp(2rem,4vw,3.25rem);}
.library-main .hero-compact .lead{max-width:760px;}
@media(max-width:767.98px){
  :root{--portal-navbar-h:64px;}
  .library-main .content-section{padding-block:2.25rem;}
}



/* Portal Public visual imagery layer */
.portal-hero-image{
  position:relative;
  overflow:hidden;
  background-image:linear-gradient(90deg,rgba(7,32,49,.88),rgba(11,59,90,.58),rgba(23,107,135,.30)),url("../../images/portal-public/hero-library.svg");
  background-size:cover;
  background-position:center;
}
.portal-hero-image::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 82% 28%,rgba(255,255,255,.14),transparent 25%);
  pointer-events:none;
}
.portal-hero-image>*{position:relative;z-index:1;}
.visual-card{
  position:relative;overflow:hidden;border-radius:1rem;
  background:#fff;box-shadow:0 12px 35px rgba(15,23,42,.08);
}
.visual-card img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;}
.visual-card .visual-card-body{padding:1rem 1.1rem;}
.section-visual{
  background-image:linear-gradient(rgba(247,250,252,.94),rgba(247,250,252,.94)),url("../../images/portal-public/library-pattern.svg");
  background-size:auto,420px;
}
.portal-image-cover{width:100%;height:100%;object-fit:cover;border-radius:1rem;}


/* Home hero contrast: dark hero => light typography; light cards inside retain dark text. */
.home-page .home-hero{
  position:relative;
  overflow:hidden;
  background:linear-gradient(120deg,#071d32 0%,#0d4268 58%,#126b7b 100%);
  color:#fff;
}
.home-page .home-hero::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(4,20,32,.88),rgba(4,20,32,.48) 62%,rgba(4,20,32,.18));
  pointer-events:none;
}
.home-page .home-hero > .container{position:relative;z-index:2}
.home-page .home-hero .col-lg-7 h1,
.home-page .home-hero .col-lg-7 h2{color:#fff}
.home-page .home-hero .col-lg-7 .lead,
.home-page .home-hero .col-lg-7 .text-body-secondary{color:rgba(255,255,255,.88)!important}
.home-page .home-hero .col-lg-7 .btn-outline-primary{color:#fff;border-color:rgba(255,255,255,.65)}
.home-page .home-hero .col-lg-7 .btn-outline-primary:hover{color:#071d32;background:#fff;border-color:#fff}
.home-page .home-hero .hero-feature-card{color:var(--library-text,#1f2937);background:#fff}
.home-page .home-hero .hero-feature-card .text-body-secondary{color:var(--library-text-muted,#64748b)!important}
.home-page .home-hero .hero-feature-card .small.text-uppercase{color:var(--library-text-muted,#64748b)!important}


/* FINAL PORTAL LAYOUT SAFETY — v27 */
*, *::before, *::after { box-sizing: border-box; }
html, body { min-width: 320px; overflow-x: hidden; }
.library-app, .library-main, .library-portal, .library-portal-header, .library-portal-footer { min-width: 0; }
.library-main > *, .library-main .container, .library-main .row, .library-main [class*="col-"] { min-width: 0; }
.library-main img, .library-main svg, .library-main video, .library-main iframe { max-width: 100%; }
.library-main pre, .library-main code { max-width: 100%; overflow-x: auto; overflow-wrap: anywhere; }
.portal-public .row { --bs-gutter-y: 1.5rem; }
.portal-public .table-responsive { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.portal-public table { max-width: 100%; }
.portal-public .btn-group, .portal-public .btn-toolbar { max-width: 100%; flex-wrap: wrap; }
.portal-public .dropdown-menu { max-width: min(24rem, calc(100vw - 1rem)); overflow-wrap: anywhere; }
.portal-public .navbar, .portal-public .navbar-inner { min-width: 0; }
@media (max-width: 991.98px) {
  .portal-public .navbar-collapse { max-width: 100%; overflow-x: hidden; }
  .portal-public .navbar-nav { min-width: 0; }
  .portal-public .nav-link { white-space: normal; }
}
@media (max-width: 575.98px) {
  .portal-public .container { width: 100%; max-width: 100%; padding-left: .85rem; padding-right: .85rem; }
  .portal-public .content-section, .portal-public .library-section { overflow: clip; }
}
