/*
  pl-base.css : PAF-IAST Central Library, Koha OPAC theme "pafiast" ("Cupertino Shelf").
  Loaded on every public page by pl-head.inc, after opac.css, OPACUserCSS and the branch CSS.

  Contents
    0.  Self-hosted Inter (latin + latin-ext, variable 400-800; no external request)
    1.  Design tokens (the shared contract: defined here once, on .pl-theme, never redefined elsewhere)
    2.  Page frame, skip link, containers
    3.  Brand bar (pl-masthead.inc: .pl-mast) with utilities, account control and their menus
    4.  Main navigation (.pl-mnav): sticky, gold underline, scrollable row with edge fades on phones
    5.  OpacHeader band, compact search band (.pl-sband: #searchform, #moresearches)
    6.  Login modal, cookie consent
    7.  Footer (pl-bottom.inc: .pl-foot, #footernav, #koha_url, #changelanguage)
    8.  Base layer for Koha's generic page structure: .main card, breadcrumbs, headings, links, buttons,
        forms, tables and DataTables, alerts, badges, pagination, tabs, dropdowns, modals, tooltips,
        sidebar (#navigation / OpacNav), toolbars, #backtotop, #cartDetails, popups, maintenance page
    9.  Responsive, reduced motion, print

  Rules: every selector is scoped under .pl-theme (the class every public pafiast page puts on <body>), so the
  patron account pages (served by bootstrap, no pl-theme) are untouched. Motion uses transform/opacity only.
  Base-layer link/heading/form rules keep a low specificity on purpose, so the page-family files
  (pl-search.css, pl-record.css, pl-pages.css, pl-home.css), loaded after this one, override them easily.
*/

/* =========================================================
   0. FONTS (self-hosted, from live-snapshot/package-cache/fonts/inter, variable weight axis)
   ========================================================= */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("fonts/inter-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url("fonts/inter-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* =========================================================
   1. DESIGN TOKENS (contract)
   ========================================================= */
.pl-theme {
  --pl-navy: #143d6e;
  --pl-navy-dark: #0f2f57;
  --pl-blue: #1f5fa8;
  --pl-gold: #f5a623;
  --pl-gold-dark: #c47f0b; /* icons and accents (3:1+); not for small text */
  --pl-gold-text: #8f5b00; /* gold for small text: 5.7:1 on white, 5.3:1 on --pl-bg-soft */
  --pl-ink: #16233a;
  --pl-muted: #52627a;
  --pl-line: #e3e8ef;
  --pl-bg: #ffffff;
  --pl-bg-soft: #f5f7fa;
  --pl-radius: 18px;
  --pl-shadow: 0 30px 60px -30px rgba(10, 29, 56, .45), 0 2px 6px rgba(10, 29, 56, .06);
  --pl-ease: cubic-bezier(.2, .8, .2, 1);
  --pl-sans: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --pl-wrap: 1180px;

  /* Supporting tokens (additions, same palette as the approved redesign) */
  --pl-navy-nav: #0d2a4e;
  --pl-navy-ink: #0a1d38;
  --pl-line-strong: #cfd8e3;
  --pl-radius-sm: 12px;
  --pl-shadow-sm: 0 1px 2px rgba(10, 29, 56, .04), 0 14px 34px -22px rgba(10, 29, 56, .28);
  --pl-shadow-pop: 0 24px 48px -20px rgba(10, 29, 56, .38), 0 2px 6px rgba(10, 29, 56, .07);
  --pl-gutter: 20px;
  --pl-focus-light: var(--pl-blue);
  --pl-focus-dark: var(--pl-gold);
}

/* =========================================================
   2. PAGE FRAME
   ========================================================= */
html:has(> body.pl-theme) {
  /* keyboard focus and in-page anchors stop below the sticky navigation bar */
  scroll-padding-top: 64px;
  background: #f5f7fa;
}
body.pl-theme {
  background: var(--pl-bg-soft);
  color: var(--pl-ink);
  font-family: var(--pl-sans);
  font-size: 15px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
/* opac.css switches these to NotoSans once its web font loads (.fonts-loaded body, button, input ...) */
.pl-theme button,
.pl-theme input,
.pl-theme optgroup,
.pl-theme option,
.pl-theme select,
.pl-theme textarea {
  font-family: var(--pl-sans);
}
.pl-theme ::selection {
  background: rgba(245, 166, 35, .32);
  color: inherit;
}
/* opac.css pads #wrapper 40px (15px / 0 on small screens): the new chrome is full-bleed */
.pl-theme #wrapper {
  padding-left: 0;
  padding-right: 0;
}
.pl-theme .pl-container {
  width: 100%;
  max-width: var(--pl-wrap);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--pl-gutter);
  padding-right: var(--pl-gutter);
}

/* Focus: blue ring on light surfaces, gold ring on navy surfaces */
.pl-theme a:focus-visible,
.pl-theme button:focus-visible,
.pl-theme input:focus-visible,
.pl-theme select:focus-visible,
.pl-theme textarea:focus-visible,
.pl-theme [tabindex]:focus-visible {
  outline: 3px solid var(--pl-focus-light);
  outline-offset: 2px;
}
/* the content column focused by the skip link fallback (pl-base.js section 6): a container, not a control */
.pl-theme .pl-skip-target:focus,
.pl-theme .pl-skip-target:focus-visible {
  outline: none;
}

/* Skip link (#scrolltocontent, global.js scrolls to .maincontent) */
.pl-theme #scrolltocontent.pl-skip {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1100;
  padding: 10px 18px;
  border: 0;
  border-radius: 0 0 12px 0;
  background: var(--pl-navy);
  color: #fff;
  font: 600 14px/1.2 var(--pl-sans);
  text-shadow: none;
  transform: translateY(-110%);
  transition: transform .2s var(--pl-ease);
}
.pl-theme #scrolltocontent.pl-skip:focus,
.pl-theme #scrolltocontent.pl-skip:focus-visible {
  top: 0;
  left: 0;
  transform: none;
  outline: 3px solid var(--pl-focus-dark);
  outline-offset: -3px;
}

/* =========================================================
   3. BRAND BAR (white): P-mark, title, utilities, account
   ========================================================= */
.pl-theme .pl-mast {
  position: relative;
  z-index: 1030; /* above the sticky nav (1020) so the header menus open over it; below modals (1040+) */
  background: var(--pl-bg);
  border-top: 3px solid var(--pl-navy);
}
.pl-theme .pl-mast__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 86px;
  padding-top: 14px;
  padding-bottom: 14px;
}
.pl-theme .pl-mast .pl-mast__brand {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
  flex: 0 1 auto;
  color: inherit;
  text-decoration: none;
  border-radius: 14px;
}
.pl-theme .pl-mast .pl-mast__brand:hover {
  color: inherit;
  text-decoration: none;
}
.pl-theme .pl-mast__mark {
  display: block;
  flex: 0 0 auto;
  width: 90px; /* 1.6x the original 56px */
  height: 90px;
  object-fit: contain;
}
.pl-theme .pl-mast__text {
  display: flex;
  flex-direction: column;
  min-width: 0;
  line-height: 1.1;
}
.pl-theme .pl-mast__title {
  font: 700 23px/1.05 var(--pl-sans);
  color: var(--pl-navy);
  text-transform: uppercase;
  letter-spacing: .02em;
  white-space: nowrap;
}
/* approved lockup (redesign OPACUserCSS.css .pl-brand__org / .pl-brand__sub): three lines */
.pl-theme .pl-mast__org {
  display: block;
  margin-top: 3px;
  font: 600 15px/1.2 var(--pl-sans);
  color: var(--pl-blue);
  letter-spacing: .01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pl-theme .pl-mast__sub {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--pl-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Utilities and account (#cart-list-nav, #members: opac.css gives them flex-grow and red/grey link colours) */
.pl-theme .pl-mast__tools {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  flex: 0 0 auto;
  min-width: 0;
}
.pl-theme #cart-list-nav.pl-tools,
.pl-theme #members.pl-tools {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  justify-content: flex-end;
  gap: 2px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-theme #members.pl-tools {
  gap: 6px;
}
.pl-theme #cart-list-nav > li,
.pl-theme #members > li {
  position: relative;
  margin: 0;
  padding: 0;
}
/* decorative separators: thin rules (never display:none, cookieconsent.js .show()s #cookieConsentDivider) */
.pl-theme #cart-list-nav > .divider-vertical,
.pl-theme #members > .divider-vertical {
  flex: 0 0 auto;
  width: 1px;
  height: 22px;
  margin: 0 4px;
  padding: 0;
  border: 0;
  background: var(--pl-line);
}
.pl-theme .pl-mast .pl-tool__link,
.pl-theme .pl-mast #header_langmenu .nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 40px;
  padding: 0 12px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--pl-navy);
  font: 600 14px/1 var(--pl-sans);
  letter-spacing: -.005em;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .2s var(--pl-ease), color .2s var(--pl-ease);
}
.pl-theme .pl-mast .pl-tool__link:hover,
.pl-theme .pl-mast .pl-tool__link:focus-visible,
.pl-theme .pl-mast .pl-tool__link[aria-expanded="true"],
.pl-theme .pl-mast #header_langmenu .nav-link:hover,
.pl-theme .pl-mast #header_langmenu .nav-link[aria-expanded="true"] {
  background: var(--pl-bg-soft);
  color: var(--pl-navy-dark);
  text-decoration: none;
}
.pl-theme .pl-mast .fa,
.pl-theme .pl-mast .fa-icon-black {
  color: inherit;
}
.pl-theme .pl-mast .pl-tool__link .fa {
  font-size: 15px;
}
.pl-theme .pl-mast .dropdown-toggle::after {
  margin-left: 2px;
  border-top-width: .28em;
  border-left-width: .28em;
  border-right-width: .28em;
  opacity: .7;
  vertical-align: .15em;
}
/* opac.css hides these labels below 1100px; the theme decides (see the responsive section) */
.pl-theme .pl-mast .cartlabel,
.pl-theme .pl-mast .listslabel,
.pl-theme .pl-mast .userlabel,
.pl-theme .pl-mast .langlabel,
.pl-theme .pl-mast .cookieconsentlabel,
.pl-theme .pl-mast .checkout-label {
  display: inline;
}
.pl-theme .pl-mast #header_langmenu .navbar-nav {
  display: flex;
  flex-direction: row;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-theme .pl-mast #header_langmenu .navbar-nav .dropdown-menu {
  position: absolute;
}
.pl-theme .pl-mast #header_langmenu .caret {
  display: none;
}

/* Cart count (basket.js writes <span>N</span> into #basketcount when N > 0) */
.pl-theme .pl-mast #basketcount {
  display: inline-flex;
  margin: 0;
  padding: 0;
}
.pl-theme .pl-mast #basketcount span {
  display: inline-block;
  min-width: 20px;
  height: 20px;
  margin: 0;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--pl-gold);
  color: #1b1200;
  font: 700 11px/20px var(--pl-sans);
  text-align: center;
  box-shadow: 0 0 0 2px var(--pl-bg);
}

/* Account control: outline pill "My Library Account" (logged out) / avatar + name (logged in) */
.pl-theme .pl-mast .pl-acct__btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  max-width: 300px;
  padding: 0 20px;
  border: 1px solid rgba(20, 61, 110, .35);
  border-radius: 999px;
  background: transparent;
  color: var(--pl-navy);
  font: 600 14px/1 var(--pl-sans);
  letter-spacing: -.005em;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color .25s var(--pl-ease), color .25s var(--pl-ease), border-color .25s var(--pl-ease);
}
.pl-theme .pl-mast .pl-acct__btn:hover,
.pl-theme .pl-mast .pl-acct__btn:focus-visible,
.pl-theme .pl-mast .pl-acct__btn[aria-expanded="true"] {
  background: var(--pl-navy);
  border-color: var(--pl-navy);
  color: #fff;
  text-decoration: none;
}
.pl-theme .pl-mast .pl-acct__btn:not(.pl-acct__btn--user) > .fa-user {
  display: none; /* the approved design shows the words only; the icon returns on phones */
}
.pl-theme .pl-mast .pl-acct__btn--user {
  padding: 0 14px 0 6px;
}
.pl-theme .pl-mast .pl-acct__btn--user .userlabel {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pl-theme .pl-mast .pl-acct__hello {
  font-weight: 500;
  opacity: .75;
}
.pl-theme .pl-mast .pl-acct__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--pl-navy);
  color: #fff;
  font-size: 13px;
  transition: background-color .25s var(--pl-ease), color .25s var(--pl-ease);
}
.pl-theme .pl-mast .pl-acct__btn--user:hover .pl-acct__avatar,
.pl-theme .pl-mast .pl-acct__btn--user[aria-expanded="true"] .pl-acct__avatar {
  background: #fff;
  color: var(--pl-navy);
}
.pl-theme .pl-mast .pl-acct__nojs {
  margin-left: 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--pl-muted);
}

/* Menus opened from the brand bar (Lists, Search history, account, languages) */
.pl-theme .pl-mast .dropdown-menu {
  min-width: 248px;
  max-width: calc(100vw - 24px);
  margin-top: 8px;
  padding: 6px;
  border: 1px solid var(--pl-line);
  border-radius: 14px;
  background: var(--pl-bg);
  box-shadow: var(--pl-shadow-pop);
  font-size: 14px;
  text-align: left;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item,
.pl-theme #members .dropdown-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 12px;
  border-radius: 9px;
  color: var(--pl-ink);
  font: 500 14px/1.3 var(--pl-sans);
  text-decoration: none;
  white-space: normal;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item strong {
  color: var(--pl-navy);
  font-weight: 600;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item:hover,
.pl-theme .pl-mast .dropdown-menu .dropdown-item:focus,
.pl-theme #members .dropdown-menu .dropdown-item:hover,
.pl-theme #members .dropdown-menu .dropdown-item:focus {
  background: var(--pl-bg-soft);
  color: var(--pl-navy);
  text-decoration: none;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item:active,
.pl-theme #members .dropdown-menu .dropdown-item:active {
  background: var(--pl-navy);
  color: #fff;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item.disabled {
  color: #98a3b3;
}
.pl-theme .pl-mast .dropdown-menu .dropdown-item .fa {
  width: 1.15em;
  color: var(--pl-muted);
}
.pl-theme .pl-mast .dropdown-menu .dropdown-divider {
  margin: 6px 4px;
  border-top-color: var(--pl-line);
}
/* "Clear" (search history) and "Log out": opac.css paints them red/bold through #members a.logout / a.clearsh */
.pl-theme #members .dropdown-menu .dropdown-item.clearsh,
.pl-theme #members .dropdown-menu .dropdown-item.logout {
  padding-top: 9px;
  padding-bottom: 9px;
  color: var(--pl-ink);
  font-size: 14px;
  font-weight: 500;
}
.pl-theme #members .dropdown-menu .dropdown-item.logout:hover,
.pl-theme #members .dropdown-menu .dropdown-item.logout:focus {
  background: var(--pl-bg-soft);
  color: var(--pl-navy);
  text-decoration: none;
}
.pl-theme #members .dropdown-menu .dropdown-item.clearsh:hover,
.pl-theme #members .dropdown-menu .dropdown-item.clearsh:focus {
  background: #fdf0f0;
  color: #9b1c1c;
  text-decoration: none;
}
/* before global.js swaps html.no-js for .js, opac.css colours these ids (.no-js #listsmenu, .no-js #user-menu) */
.pl-theme .pl-mast #listsmenu.pl-tool__link,
.pl-theme .pl-mast #user-menu.pl-acct__btn {
  color: var(--pl-navy);
}
.pl-theme .pl-mast #user-menu.pl-acct__btn:hover,
.pl-theme .pl-mast #user-menu.pl-acct__btn:focus-visible,
.pl-theme .pl-mast #user-menu.pl-acct__btn[aria-expanded="true"] {
  color: #fff;
}
.pl-theme #members #loggedinuser-menu p {
  margin: 0;
  color: inherit;
}
.pl-theme #members .pl-menu__name {
  padding: 8px 12px 6px;
  color: var(--pl-muted);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pl-theme #members .pl-menu__row--split {
  display: flex;
  align-items: center;
}
.pl-theme #members .pl-menu__row--split > .dropdown-item:first-child {
  flex: 1 1 auto;
  min-width: 0;
}
.pl-theme #members .pl-menu__row--split > .divider-vertical {
  width: 1px;
  height: 20px;
  margin: 0 2px;
  border: 0;
  background: var(--pl-line);
}
.pl-theme #members .pl-menu__row--split > .pl-menu__clear {
  flex: 0 0 auto;
  width: auto;
  color: var(--pl-muted);
  font-size: 13px;
}

/* =========================================================
   4. MAIN NAVIGATION (deep navy, gold underline, sticky)
   ========================================================= */
.pl-theme .pl-mnav {
  position: sticky;
  top: 0;
  z-index: 1020;
  background: linear-gradient(180deg, #11345f, var(--pl-navy-nav));
  border-bottom: 3px solid var(--pl-gold);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08);
  transition: transform .35s var(--pl-ease);
}
/* shadow under the stuck bar: a pre-rendered layer whose opacity animates */
.pl-theme .pl-mnav::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: calc(100% + 3px);
  height: 16px;
  background: linear-gradient(180deg, rgba(10, 29, 56, .2), rgba(10, 29, 56, 0));
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s var(--pl-ease);
}
.pl-theme .pl-mnav.is-stuck::after {
  opacity: 1;
}
/* pl-base.js tucks the bar away while the reader scrolls down and brings it back on the way up */
.pl-theme .pl-mnav.is-hidden {
  transform: translateY(calc(-100% - 4px));
}
.pl-theme .pl-mnav.is-hidden::after {
  opacity: 0;
}
.pl-theme .pl-mnav__inner {
  position: relative;
}
.pl-theme .pl-mnav__list {
  position: relative;
  display: flex;
  gap: 2px;
  margin: 0;
  padding: 0;
  list-style: none;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}
.pl-theme .pl-mnav__list::-webkit-scrollbar {
  display: none;
}
.pl-theme .pl-mnav__list > li {
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
}
.pl-theme .pl-mnav .pl-mnav__link {
  position: relative;
  display: block;
  padding: 15px 16px 14px;
  color: rgba(255, 255, 255, .86);
  font: 600 14px/1.2 var(--pl-sans);
  letter-spacing: -.005em;
  text-decoration: none;
  white-space: nowrap;
  transition: color .25s var(--pl-ease);
}
.pl-theme .pl-mnav .pl-mnav__link::after {
  content: "";
  position: absolute;
  left: 16px;
  right: 16px;
  bottom: 8px;
  height: 2px;
  border-radius: 2px;
  background: #fff;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .35s var(--pl-ease);
}
.pl-theme .pl-mnav .pl-mnav__link:hover,
.pl-theme .pl-mnav .pl-mnav__link:focus-visible,
.pl-theme .pl-mnav .pl-mnav__link[aria-current="page"] {
  color: #fff;
  text-decoration: none;
}
.pl-theme .pl-mnav .pl-mnav__link:hover::after,
.pl-theme .pl-mnav .pl-mnav__link[aria-current="page"]::after {
  transform: scaleX(1);
}
.pl-theme .pl-mnav .pl-mnav__link:focus-visible {
  outline: 3px solid var(--pl-focus-dark);
  outline-offset: -5px;
  border-radius: 8px;
}
/* edge fades for the scrollable row (phones); pl-base.js sets is-fit / is-scrolled / is-at-end */
.pl-theme .pl-mnav__inner::before,
.pl-theme .pl-mnav__inner::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  z-index: 2;
  width: 56px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .3s var(--pl-ease);
}
.pl-theme .pl-mnav__inner::before {
  left: 0;
  background: linear-gradient(270deg, rgba(15, 47, 87, 0), rgba(15, 47, 87, .92) 55%, var(--pl-navy-dark));
}
.pl-theme .pl-mnav__inner::after {
  right: 0;
  background: linear-gradient(90deg, rgba(15, 47, 87, 0), rgba(15, 47, 87, .92) 55%, var(--pl-navy-dark));
}

/* =========================================================
   5. OPACHEADER BAND AND COMPACT SEARCH BAND
   ========================================================= */
.pl-theme .pl-opacheader {
  padding: 12px 0;
  background: var(--pl-bg);
  border-bottom: 1px solid var(--pl-line);
  font-size: 14px;
}
.pl-theme .pl-opacheader img {
  max-width: 100%;
  height: auto;
}

.pl-theme .pl-sband {
  padding: 18px 0 14px;
  background: var(--pl-bg);
  border-bottom: 1px solid var(--pl-line);
}
.pl-theme .pl-sband--links {
  padding: 12px 0;
}
.pl-theme #opac-main-search.pl-sband__search {
  margin: 0;
  padding: 0;
  border-radius: 0;
  background: none;
}
.pl-theme .pl-sform {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
}
.pl-theme .pl-sform .pl-sform__idx,
.pl-theme .pl-sform .pl-sform__lib {
  flex: 0 0 auto;
  width: auto;
  max-width: 220px;
  height: 46px;
  margin: 0;
  padding: 0 38px 0 18px;
  border: 1px solid var(--pl-line);
  border-radius: 999px;
  background: var(--pl-bg-soft) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2316233a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 16px center;
  color: var(--pl-ink);
  font: 500 14px/1.2 var(--pl-sans);
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  cursor: pointer;
  box-shadow: none;
  transition: border-color .25s var(--pl-ease), box-shadow .25s var(--pl-ease);
}
.pl-theme .pl-sform .pl-sform__q {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  height: 46px;
  margin: 0;
  padding: 0 20px;
  border: 1px solid var(--pl-line-strong);
  border-radius: 999px;
  background-color: var(--pl-bg);
  color: var(--pl-ink);
  font: 500 15px/1.2 var(--pl-sans);
  text-overflow: ellipsis;
  box-shadow: none;
  transition: border-color .25s var(--pl-ease), box-shadow .25s var(--pl-ease);
}
.pl-theme .pl-sform .pl-sform__q::placeholder {
  color: var(--pl-muted);   /* 5.9:1 on white (WCAG AA) */
  opacity: 1;
}
.pl-theme .pl-sform .pl-sform__q.form-control-filtered {
  padding-left: 40px;
  background-position: 16px center;
}
.pl-theme .pl-sform .pl-sform__q:focus,
.pl-theme .pl-sform .pl-sform__idx:focus,
.pl-theme .pl-sform .pl-sform__lib:focus {
  border-color: var(--pl-blue);
  box-shadow: 0 0 0 4px rgba(31, 95, 168, .14);
  outline: none;
}
/* keyboard focus: the same 3px ring as every other control (section 2), not just the soft halo */
.pl-theme .pl-sform .pl-sform__q:focus-visible,
.pl-theme .pl-sform .pl-sform__idx:focus-visible,
.pl-theme .pl-sform .pl-sform__lib:focus-visible {
  outline: 3px solid var(--pl-focus-light);
  outline-offset: 2px;
}
.pl-theme .pl-sform #translControl:empty {
  display: none;
}
.pl-theme .pl-sform #searchsubmit.pl-sform__submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex: 0 0 auto;
  width: auto;
  height: 46px;
  margin: 0;
  padding: 0 24px;
  border: 0;
  border-radius: 999px;
  background: var(--pl-navy);
  color: #fff;
  font: 600 15px/1 var(--pl-sans);
  letter-spacing: -.005em;
  box-shadow: none;
  transition: background-color .25s var(--pl-ease);
}
.pl-theme .pl-sform #searchsubmit.pl-sform__submit:hover,
.pl-theme .pl-sform #searchsubmit.pl-sform__submit:focus-visible,
.pl-theme .pl-sform #searchsubmit.pl-sform__submit:active {
  background: var(--pl-navy-dark);
  color: #fff;
  box-shadow: none;
}
.pl-theme .pl-sform #searchsubmit.pl-sform__submit .fa {
  font-size: 14px;
}
/* staff OpacCustomSearch content replaces the form */
.pl-theme .pl-sband__search #OpacCustomSearch {
  font-size: 14px;
}
/* more searches (#moresearches): small links separated by middle dots instead of opac.css " | ".
   Each dot sits in the column gap before its item; the list is clipped on its left edge, so when the row wraps
   the dot in front of the first item of a line falls outside and no line ever starts with a dot.
   The items' 6px left padding (pulled back by the list's -2px margin) keeps a focus ring clear of that clip. */
.pl-theme #moresearches.pl-sband__more {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 16px;
  margin: 10px 0 0 -2px;
  padding: 0;
  list-style: none;
  font-size: 13px;
  line-height: 1.6;
  text-align: left;
  -webkit-clip-path: inset(-12px -12px -12px 0);
  clip-path: inset(-12px -12px -12px 0);
}
.pl-theme .pl-sband--links #moresearches.pl-sband__more {
  margin-top: 0;
}
.pl-theme #moresearches.pl-sband__more li {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin: 0;
  padding: 0 0 0 6px;
  white-space: nowrap;
}
.pl-theme #moresearches.pl-sband__more li::after {
  content: none;
}
.pl-theme #moresearches.pl-sband__more li::before {
  content: "\00B7";
  position: absolute;
  top: 50%;
  left: -16px;
  width: 22px;
  color: #9aa6b6;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  transform: translateY(-50%);
  pointer-events: none;
}
.pl-theme #moresearches.pl-sband__more > li:first-child::before {
  content: none;
}
/* OpacMoreSearches renders <div id="OpacMoreSearches"><div class="xx_item"><div class="xx_body"><li>... inside the list */
.pl-theme #moresearches.pl-sband__more #OpacMoreSearches,
.pl-theme #moresearches.pl-sband__more #OpacMoreSearches > div,
.pl-theme #moresearches.pl-sband__more #OpacMoreSearches > div > div {
  display: contents;
}
.pl-theme #moresearches.pl-sband__more a {
  color: var(--pl-blue);
  font-weight: 500;
  text-decoration: none;
}
.pl-theme #moresearches.pl-sband__more a:hover,
.pl-theme #moresearches.pl-sband__more a:focus-visible {
  color: var(--pl-navy);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* =========================================================
   6. LOGIN MODAL, COOKIE CONSENT
   ========================================================= */
.pl-theme #loginModal .modal-dialog {
  max-width: 440px;
}
.pl-theme #loginModal .modal-content {
  border: 0;
  border-radius: var(--pl-radius);
  box-shadow: 0 40px 80px -30px rgba(10, 29, 56, .6);
  overflow: hidden;
}
.pl-theme #loginModal .modal-header {
  align-items: center;
  gap: 12px;
  padding: 22px 24px 10px;
  border-bottom: 0;
  font-size: 15px;
}
.pl-theme #loginModal .pl-modal__mark {
  flex: 0 0 auto;
  width: 44px;
  height: 44px;
  object-fit: contain;
}
/* opac.css: #loginModal .closebtn { color: #c00 } and :hover { opacity: .4 } */
.pl-theme #loginModal .modal-header .closebtn {
  color: var(--pl-muted);
  opacity: 1;
}
.pl-theme #loginModal .modal-header .closebtn:hover,
.pl-theme #loginModal .modal-header .closebtn:focus-visible {
  background: var(--pl-bg-soft);
  color: var(--pl-navy);
  opacity: 1;
}
.pl-theme #loginModal .modal-title {
  margin: 0;
  color: var(--pl-navy);
  font: 600 20px/1.25 var(--pl-sans);
  letter-spacing: -.02em;
}
.pl-theme #loginModal .modal-body {
  padding: 6px 24px 24px;
  font-size: 15px;
}
.pl-theme #loginModal fieldset.brief {
  margin: 0;
  padding: 0;
  border: 0;
}
.pl-theme #loginModal fieldset.brief label {
  display: block;
  margin: 14px 0 6px;
  padding: 0;
  color: var(--pl-ink);
  font: 600 13px/1.3 var(--pl-sans);
}
.pl-theme #loginModal input[type="text"],
.pl-theme #loginModal input[type="password"] {
  display: block;
  width: 100%;
  height: 46px;
  padding: 0 16px;
  border: 1px solid var(--pl-line-strong);
  border-radius: var(--pl-radius-sm);
  background: var(--pl-bg);
  color: var(--pl-ink);
  font: 500 15px/1.2 var(--pl-sans);
  box-shadow: none;
  transition: border-color .25s var(--pl-ease), box-shadow .25s var(--pl-ease);
}
.pl-theme #loginModal input[type="text"]:focus,
.pl-theme #loginModal input[type="password"]:focus {
  border-color: var(--pl-blue);
  box-shadow: 0 0 0 4px rgba(31, 95, 168, .14);
  outline: none;
}
.pl-theme #loginModal fieldset.action {
  margin: 0;
  padding: 20px 0 4px;
}
.pl-theme #loginModal input[type="submit"] {
  display: block;
  width: 100%;
  height: 46px;
  padding: 0 20px;
  border: 0;
  border-radius: 999px;
  background: var(--pl-navy);
  color: #fff;
  font: 600 15px/1 var(--pl-sans);
  box-shadow: none;
  transition: background-color .25s var(--pl-ease);
}
.pl-theme #loginModal input[type="submit"]:hover,
.pl-theme #loginModal input[type="submit"]:focus-visible {
  background: var(--pl-navy-dark);
}
.pl-theme #loginModal p {
  margin: .5rem 0;
}
.pl-theme #loginModal .forgotpassword,
.pl-theme #loginModal .patronregistration,
.pl-theme #loginModal .nologininstructions {
  margin-top: 10px;
  font-size: 14px;
  text-align: center;
}
.pl-theme #loginModal .nologininstructions {
  color: var(--pl-muted);
  text-align: left;
}
.pl-theme #loginModal #openid_connect,
.pl-theme #loginModal [id^="provider_"] {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  min-height: 44px;
}
.pl-theme #loginModal [id^="provider_"] img {
  max-height: 22px;
  width: auto;
}
.pl-theme #loginModal .shib_title,
.pl-theme #loginModal .shib_local_title {
  margin: 12px 0 6px;
  color: var(--pl-navy);
  font-size: 15px;
  font-weight: 600;
}

.pl-theme #cookieConsentBar {
  z-index: 1025;
  padding: 18px 24px;
  background: rgba(10, 29, 56, .96);
  color: rgba(255, 255, 255, .9);
  font-size: 14px;
  box-shadow: 0 -12px 30px -18px rgba(0, 0, 0, .5);
}
.pl-theme #cookieConsentBar a:link,
.pl-theme #cookieConsentBar a:visited {
  color: #ffd38a;
}
.pl-theme #cookieConsentModal .consentModalItem {
  border-color: var(--pl-line);
  border-radius: var(--pl-radius-sm);
}

/* =========================================================
   7. FOOTER (navy band, wordmark plate, links, bottom row)
   ========================================================= */
.pl-theme .pl-foot {
  position: relative;
  flex-shrink: 0;
  background: linear-gradient(165deg, #163f70 0%, var(--pl-navy-dark) 45%, var(--pl-navy-ink) 100%);
  border-top: 3px solid var(--pl-gold);
  color: rgba(255, 255, 255, .78);
  font-size: 14px;
  line-height: 1.6;
}
.pl-theme .pl-foot__grid {
  display: grid;
  grid-template-columns: minmax(260px, 1.5fr) repeat(auto-fit, minmax(150px, 1fr));
  gap: 36px 40px;
  padding-top: 48px;
  padding-bottom: 40px;
}
/* definite width + the logo's aspect ratio: the plate keeps its final size before the lazy image loads (no layout shift) */
.pl-theme .pl-foot .pl-foot__plate {
  display: inline-block;
  width: 100%;
  max-width: 300px;
  margin-bottom: 18px;
  padding: 12px 16px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 14px 30px -18px rgba(0, 0, 0, .55);
  line-height: 0;
}
.pl-theme .pl-foot .pl-foot__plate img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 800 / 170;
}
.pl-theme .pl-foot .pl-foot__name {
  margin: 0 0 4px;
  color: #fff;
  font: 600 18px/1.3 var(--pl-sans);
  letter-spacing: -.015em;
}
.pl-theme .pl-foot .pl-foot__org {
  margin: 0 0 14px;
  color: rgba(255, 255, 255, .7);
  font-size: 13.5px;
}
.pl-theme .pl-foot .pl-foot__fact {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0 0 8px;
  font-style: normal;
}
.pl-theme .pl-foot .pl-foot__fact .fa {
  flex: 0 0 auto;
  margin-top: .3em;
  color: var(--pl-gold);
}
.pl-theme .pl-foot .pl-foot__heading {
  margin: 4px 0 14px;
  color: var(--pl-gold);
  font: 600 12px/1.2 var(--pl-sans);
  letter-spacing: .14em;
  text-transform: uppercase;
}
.pl-theme .pl-foot .pl-foot__links {
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-theme .pl-foot .pl-foot__links li {
  margin: 0 0 9px;
  padding: 0;
}
/* OpacMoreSearches content (home page only) arrives wrapped in divs inside the list */
.pl-theme .pl-foot .pl-foot__links #OpacMoreSearches,
.pl-theme .pl-foot .pl-foot__links #OpacMoreSearches > div,
.pl-theme .pl-foot .pl-foot__links #OpacMoreSearches > div > div {
  display: contents;
}
.pl-theme .pl-foot .pl-foot__links a,
.pl-theme .pl-foot .pl-foot__cms a,
.pl-theme .pl-foot .pl-foot__bottom a {
  color: rgba(255, 255, 255, .86);
  text-decoration: none;
  transition: color .2s var(--pl-ease);
}
.pl-theme .pl-foot .pl-foot__links a:hover,
.pl-theme .pl-foot .pl-foot__links a:focus-visible,
.pl-theme .pl-foot .pl-foot__cms a:hover,
.pl-theme .pl-foot .pl-foot__cms a:focus-visible,
.pl-theme .pl-foot .pl-foot__bottom a:hover,
.pl-theme .pl-foot .pl-foot__bottom a:focus-visible {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: var(--pl-gold);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}
.pl-theme .pl-foot a:focus-visible {
  outline-color: var(--pl-focus-dark);
  border-radius: 4px;
}
.pl-theme .pl-foot .pl-foot__cms ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-theme .pl-foot .pl-foot__cms li {
  margin: 0 0 9px;
}
.pl-theme .pl-foot .pl-foot__cms-item + .pl-foot__cms-item {
  margin-top: 14px;
}
.pl-theme .pl-foot .pl-foot__cms-title {
  margin: 0 0 8px;
  color: #fff;
  font-size: 14px;
  font-weight: 600;
}
.pl-theme .pl-foot .pl-foot__cms img {
  max-width: 100%;
  height: auto;
}
.pl-theme .pl-foot .pl-foot__base {
  background: rgba(5, 15, 30, .32);
  border-top: 1px solid rgba(255, 255, 255, .08);
}
.pl-theme .pl-foot .pl-foot__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 24px;
  padding-top: 14px;
  padding-bottom: 14px;
  color: rgba(255, 255, 255, .66);
  font-size: 13px;
}
.pl-theme .pl-foot .pl-foot__copy {
  margin: 0;
}
.pl-theme .pl-foot #footernav {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-theme .pl-foot #footernav li {
  display: inline-flex;
  padding: 0;
}
.pl-theme .pl-foot #footernav li::after {
  content: none;
}
.pl-theme .pl-foot #koha_url {
  margin: 0;
}
.pl-theme .pl-foot #koha_url p {
  float: none;
  margin: 0;
  color: rgba(255, 255, 255, .66);
}
/* language bar (footer#changelanguage), after the footer as upstream; cookieconsent.js reads its height */
.pl-theme #changelanguage {
  min-height: 0;
  padding: 8px var(--pl-gutter);
  background: var(--pl-navy-ink);
  border-top: 1px solid rgba(255, 255, 255, .08);
  color: rgba(255, 255, 255, .78);
  font-size: 13px;
}
.pl-theme #changelanguage .nav {
  max-width: calc(var(--pl-wrap) - 2 * var(--pl-gutter));
  margin: 0 auto;
  align-items: center;
}
.pl-theme #changelanguage .navbar-text {
  color: #fff;
  font-weight: 600;
}
.pl-theme #changelanguage .nav-link {
  color: rgba(255, 255, 255, .86);
}
.pl-theme #changelanguage .nav-link:hover {
  color: #fff;
}
.pl-theme #changelanguage .nav-link.disabled {
  color: var(--pl-gold);
}

/* =========================================================
   8. BASE LAYER (generic Koha page structure on every public page)
   ========================================================= */

/* 8.1 Page card (.main) on the soft page background */
.pl-theme .main {
  width: calc(100% - 2 * var(--pl-gutter));
  max-width: calc(var(--pl-wrap) - 2 * var(--pl-gutter));
  margin: 28px auto 48px;
  padding: 22px 18px 30px;
  border: 1px solid var(--pl-line);
  border-radius: var(--pl-radius);
  background: var(--pl-bg);
  box-shadow: var(--pl-shadow-sm);
  color: var(--pl-ink);
  overflow-wrap: break-word;
}

/* 8.2 Breadcrumbs (html_helpers.inc: nav#breadcrumbs > ol.breadcrumb)
   The trail is one run of inline text, not a wrapping flex row: a long last item (a record title) continues on
   the same line as "Home" and wraps word by word, and each separator stays glued to the item it introduces. */
.pl-theme .main .breadcrumbs {
  margin: 0 0 14px;
  padding: 0 15px;
}
.pl-theme .breadcrumb {
  display: block;
  margin: 0;
  padding: 0;
  border-radius: 0;
  background: transparent;
  color: var(--pl-muted);
  font-size: 13px;
  line-height: 1.5;
  list-style: none;
}
/* Each item is nowrap except its link / text spans, so the only break points are inside the item's text and the
   zero-width space opening each separator: a line may start with "›", never end with one. */
.pl-theme .breadcrumb-item {
  display: inline;
  white-space: nowrap;
}
.pl-theme .breadcrumb-item > * {
  white-space: normal;
  overflow-wrap: break-word;
}
.pl-theme .breadcrumb-item + .breadcrumb-item {
  padding-left: 0;
}
.pl-theme .breadcrumb-item + .breadcrumb-item::before {
  content: "\200B\203A";
  display: inline;
  float: none;
  width: auto;
  height: auto;
  padding: 0 8px;
  white-space: normal;
  background: none;
  color: #9aa6b6;
  font-weight: 600;
}
.pl-theme .breadcrumb a:link,
.pl-theme .breadcrumb a:visited {
  color: var(--pl-blue);
  text-decoration: none;
}
.pl-theme .breadcrumb a:hover {
  color: var(--pl-navy);
  text-decoration: underline;
}
.pl-theme .breadcrumb-item.active a:link,
.pl-theme .breadcrumb-item.active a:visited,
.pl-theme .breadcrumb-item.active a:hover,
.pl-theme .breadcrumb-item.active a:active {
  color: var(--pl-ink);
  font-weight: 500;
  text-decoration: none;
  cursor: default;
}

/* 8.3 Text, headings, links (kept at low specificity: page-family CSS overrides them freely) */
.pl-theme .main :where(h1, h2, h3, h4, h5, h6) {
  color: var(--pl-navy);
  font-family: var(--pl-sans);
  font-weight: 600;
  letter-spacing: -.015em;
  line-height: 1.25;
}
.pl-theme .main :where(h1) {
  margin: 0 0 .9rem;
  font-size: clamp(24px, 2.3vw, 30px);
  letter-spacing: -.025em;
}
.pl-theme .main :where(h2) {
  margin: 1.4rem 0 .7rem;
  font-size: 22px;
}
.pl-theme .main :where(h3) {
  margin: 1.2rem 0 .6rem;
  font-size: 18px;
}
.pl-theme .main :where(h4) {
  margin: 1rem 0 .5rem;
  font-size: 16px;
}
.pl-theme .main :where(h5, h6) {
  margin: 1rem 0 .5rem;
  font-size: 15px;
}
.pl-theme .main :where(hr) {
  border: 0;
  border-top: 1px solid var(--pl-line);
}
.pl-theme a:where(:not(.btn, .dropdown-item, .page-link, .nav-link)) {
  color: var(--pl-blue);
  text-underline-offset: 2px;
}
.pl-theme a:where(:not(.btn, .dropdown-item, .page-link, .nav-link)):where(:hover, :active) {
  color: var(--pl-navy);
}
.pl-theme .main :where(.text-muted, .hint, .help-block) {
  color: var(--pl-muted);
}

/* 8.4 Buttons: pill shapes, navy primary */
.pl-theme .btn {
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: -.005em;
  transition: background-color .2s var(--pl-ease), border-color .2s var(--pl-ease), color .2s var(--pl-ease), box-shadow .2s var(--pl-ease);
}
.pl-theme .btn:focus,
.pl-theme .btn.focus {
  box-shadow: 0 0 0 3px rgba(31, 95, 168, .3);
}
.pl-theme .btn-primary,
.pl-theme .btn-primary:link,
.pl-theme .btn-primary:visited {
  background-color: var(--pl-navy);
  background-image: none;
  border-color: var(--pl-navy);
  color: #fff;
}
.pl-theme .btn-primary:hover,
.pl-theme .btn-primary:focus,
.pl-theme .btn-primary:active,
.pl-theme .btn-primary.active,
.pl-theme .btn-primary:not(:disabled):not(.disabled):active,
.pl-theme .show > .btn-primary.dropdown-toggle {
  background-color: var(--pl-navy-dark);
  border-color: var(--pl-navy-dark);
  color: #fff;
}
.pl-theme .btn-primary:focus,
.pl-theme .btn-primary:not(:disabled):not(.disabled):active:focus {
  box-shadow: 0 0 0 3px rgba(31, 95, 168, .35);
}
/* the focus ring stays for keyboard focus but does not linger after a mouse click
   (browsers without :focus-visible drop this rule and keep the ring) */
.pl-theme .btn:focus:not(:focus-visible) {
  box-shadow: none;
}
.pl-theme .btn-primary.disabled,
.pl-theme .btn-primary:disabled,
.pl-theme .btn-primary.disabled:hover,
.pl-theme .btn-primary:disabled:hover {
  background-color: #7f93ad;
  border-color: #7f93ad;
  box-shadow: none;
  color: #fff;
}
.pl-theme .btn-default,
.pl-theme .btn-secondary,
.pl-theme .btn-light,
.pl-theme .btn-default:link,
.pl-theme .btn-default:visited,
.pl-theme .btn-secondary:link,
.pl-theme .btn-secondary:visited {
  background-color: var(--pl-bg);
  background-image: none;
  border-color: var(--pl-line-strong);
  color: var(--pl-navy);
}
.pl-theme .btn-default:hover,
.pl-theme .btn-default:active,
.pl-theme .btn-secondary:hover,
.pl-theme .btn-secondary:active,
.pl-theme .btn-light:hover,
.pl-theme .btn-light:active,
.pl-theme .btn-default:not(:disabled):not(.disabled):active,
.pl-theme .btn-secondary:not(:disabled):not(.disabled):active,
.pl-theme .show > .btn-default.dropdown-toggle,
.pl-theme .show > .btn-secondary.dropdown-toggle,
.pl-theme .show > .btn-light.dropdown-toggle {
  background-color: var(--pl-bg-soft);
  background-image: none;
  border-color: #b9c6d6;
  color: var(--pl-navy-dark);
}
.pl-theme .btn-info {
  background-color: var(--pl-blue);
  border-color: var(--pl-blue);
  color: #fff;
}
.pl-theme .btn-info:hover,
.pl-theme .btn-info:active {
  background-color: var(--pl-navy);
  border-color: var(--pl-navy);
  color: #fff;
}
.pl-theme .btn-warning {
  background-color: var(--pl-gold);
  border-color: var(--pl-gold);
  color: #1b1200;
}
.pl-theme .btn-warning:hover,
.pl-theme .btn-warning:active {
  background-color: #ffb63a;
  border-color: #ffb63a;
  color: #1b1200;
}
.pl-theme .btn-success {
  background-color: #2f7d4f;
  border-color: #2f7d4f;
  color: #fff;
}
.pl-theme .btn-danger,
.pl-theme .btn-danger:link,
.pl-theme .btn-danger:visited {
  background-color: #b42318;
  background-image: none;
  border-color: #b42318;
  color: #fff;
}
.pl-theme .btn-danger:hover,
.pl-theme .btn-danger:active {
  background-color: #912018;
  background-image: none;
  border-color: #912018;
  color: #fff;
}
.pl-theme .btn-link,
.pl-theme .btn-link:link,
.pl-theme .btn-link:visited {
  border-color: transparent;
  color: var(--pl-blue);
  font-weight: 500;
}
.pl-theme .btn-link:hover,
.pl-theme .btn-link:focus {
  color: var(--pl-navy);
  text-decoration: underline;
}

/* 8.5 Form controls */
.pl-theme .form-control,
.pl-theme .main :where(input[type="text"], input[type="search"], input[type="password"], input[type="email"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"], input:not([type]), select, textarea),
.pl-theme .modal :where(input[type="text"], input[type="search"], input[type="password"], input[type="email"], input[type="number"], select, textarea) {
  border: 1px solid var(--pl-line-strong);
  border-radius: 10px;
  background-color: var(--pl-bg);
  color: var(--pl-ink);
  font-family: var(--pl-sans);
  font-size: 15px;
  transition: border-color .2s var(--pl-ease), box-shadow .2s var(--pl-ease);
}
.pl-theme .main :where(input[type="text"], input[type="search"], input[type="password"], input[type="email"], input[type="tel"], input[type="number"], input[type="url"], input[type="date"], input:not([type]), textarea),
.pl-theme .modal :where(input[type="text"], input[type="search"], input[type="password"], input[type="email"], input[type="number"], textarea) {
  padding: .45rem .75rem;
}
.pl-theme .form-control:not(.form-control-sm):not(.form-control-lg) {
  height: auto;
  min-height: 40px;
  padding: .45rem .8rem;
}
.pl-theme .main :where(select:not([multiple]):not([size])),
.pl-theme .modal :where(select:not([multiple]):not([size])) {
  min-height: 38px;
  padding: .35rem 2.1rem .35rem .75rem;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%2316233a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .8rem center;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}
.pl-theme .form-control:focus,
.pl-theme .main :where(input, select, textarea):focus,
.pl-theme .modal :where(input, select, textarea):focus {
  border-color: var(--pl-blue);
  box-shadow: 0 0 0 4px rgba(31, 95, 168, .14);
  outline: none;
}
.pl-theme .form-control:disabled,
.pl-theme .form-control[readonly] {
  background-color: var(--pl-bg-soft);
}
.pl-theme input[type="checkbox"],
.pl-theme input[type="radio"] {
  accent-color: var(--pl-navy);
}
.pl-theme .main :where(legend) {
  color: var(--pl-navy);
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -.01em;
}
.pl-theme .main :where(label) {
  color: var(--pl-ink);
}
/* (a pseudo-element is not allowed inside :where(), so the scope goes in it instead; specificity stays 0,0,1) */
:where(.pl-theme .main) ::placeholder {
  color: var(--pl-muted);
  opacity: 1;
}

/* 8.6 Tables and DataTables */
.pl-theme .main :where(table) {
  font-size: 14px;
}
.pl-theme .main .table {
  color: var(--pl-ink);
}
.pl-theme .main .table th,
.pl-theme .main .table td {
  border-top-color: var(--pl-line);
}
.pl-theme .main :where(th) {
  background-color: var(--pl-bg-soft);
  color: var(--pl-navy);
  font-weight: 600;
}
.pl-theme .main :where(th[scope="row"]) {
  background-color: transparent;
}
.pl-theme .main .table thead th {
  border-bottom: 1px solid var(--pl-line-strong);
  font-size: 13px;
  letter-spacing: .01em;
}
.pl-theme .main .table-bordered,
.pl-theme .main .table-bordered th,
.pl-theme .main .table-bordered td {
  border-color: var(--pl-line);
}
/* Bootstrap stripes the row itself (rgba(0, 0, 0, .05)); the theme stripes the cells instead, so the row
   stripe is cleared. It otherwise shows through wherever a page family makes the cells transparent. */
.pl-theme .main .table-striped tbody tr:nth-of-type(odd) {
  background-color: transparent;
}
.pl-theme .main .table-striped tbody > tr:nth-child(odd) > td,
.pl-theme .main .table-striped tbody > tr:nth-child(odd) > th {
  background-color: #f9fbfd;
}
.pl-theme .main .table-striped tbody > tr:nth-child(odd) > td a:not(.btn) {
  color: var(--pl-blue);
}
.pl-theme .main .table.dataTable thead .sorting,
.pl-theme .main .table.dataTable thead .sorting_asc,
.pl-theme .main .table.dataTable thead .sorting_desc,
.pl-theme .main .table .nosort,
.pl-theme .main .table .sorting_disabled {
  background-color: var(--pl-bg-soft);
}
.pl-theme .dataTables_wrapper .dataTables_info,
.pl-theme .table_entries {
  color: var(--pl-muted);
  font-size: 13px;
}
.pl-theme .dataTables_wrapper .dataTables_paginate .paginate_button {
  border-radius: 10px;
}
.pl-theme .dataTables_wrapper .dataTables_paginate .paginate_button.current,
.pl-theme .dataTables_wrapper .dataTables_paginate .paginate_button.current:hover {
  border-color: var(--pl-navy);
  background: var(--pl-navy);
  color: #fff;
}
.pl-theme .dt-button {
  border-radius: 999px;
  color: var(--pl-blue);
  text-shadow: none;
}
.pl-theme .dt-button:hover {
  color: var(--pl-navy);
}

/* 8.7 Alerts and badges */
.pl-theme .alert {
  padding: .85rem 1.1rem;
  border: 1px solid transparent;
  border-left-width: 4px;
  border-radius: var(--pl-radius-sm);
  font-size: 14.5px;
  line-height: 1.55;
}
.pl-theme .alert.alert-info,
.pl-theme .alert.alert-primary {
  background-color: #eef4fb;
  border-color: #cddff2;
  border-left-color: var(--pl-blue);
  color: #143d6e;
}
.pl-theme .alert.alert-warning,
.pl-theme .alert.alert-error {
  background-color: #fff7e8;
  border-color: #f6dfb0;
  border-left-color: var(--pl-gold);
  color: #5a3d06;
}
.pl-theme .alert.alert-danger {
  background-color: #fdf1f0;
  border-color: #f3d0cd;
  border-left-color: #b42318;
  color: #6b1610;
}
.pl-theme .alert.alert-success {
  background-color: #eef8f1;
  border-color: #cbe8d4;
  border-left-color: #2f8f5b;
  color: #14532d;
}
.pl-theme .alert.alert-secondary,
.pl-theme .alert.alert-light {
  background-color: var(--pl-bg-soft);
  border-color: var(--pl-line);
  border-left-color: #9aa6b6;
  color: var(--pl-ink);
}
.pl-theme .alert :where(h1, h2, h3, h4) {
  margin-top: 0;
  color: inherit;
}
.pl-theme .alert :where(p:last-child) {
  margin-bottom: 0;
}
.pl-theme .badge {
  padding: .3em .65em;
  border-radius: 999px;
  font-weight: 600;
  letter-spacing: .01em;
}
.pl-theme .badge-primary,
.pl-theme .badge-info {
  background-color: #e6eef8;
  color: var(--pl-navy);
}
.pl-theme .badge-secondary,
.pl-theme .badge-light {
  background-color: var(--pl-bg-soft);
  color: var(--pl-muted);
}
.pl-theme .badge-success {
  background-color: #e3f3e9;
  color: #14532d;
}
.pl-theme .badge-warning {
  background-color: #fff1d6;
  color: #5a3d06;
}
.pl-theme .badge-danger {
  background-color: #fbe3e1;
  color: #8a1c13;
}

/* 8.8 Pagination */
.pl-theme .pagination {
  flex-wrap: wrap;
  gap: 4px;
}
.pl-theme .pagination .page-item a.page-link,
.pl-theme .pagination .page-item span.page-link {
  min-width: 38px;
  margin: 0;
  padding: .45rem .75rem;
  border: 1px solid var(--pl-line);
  border-radius: 10px;
  background-color: var(--pl-bg);
  color: var(--pl-navy);
  font-size: 14px;
  font-weight: 600;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
}
.pl-theme .pagination .page-item a.page-link:hover,
.pl-theme .pagination .page-item a.page-link:focus {
  background-color: var(--pl-bg-soft);
  border-color: var(--pl-line-strong);
  color: var(--pl-navy-dark);
}
.pl-theme .pagination .page-item.active a.page-link,
.pl-theme .pagination .page-item.active span.page-link {
  background-color: var(--pl-navy);
  border-color: var(--pl-navy);
  color: #fff;
}
.pl-theme .pagination .page-item.disabled a.page-link,
.pl-theme .pagination .page-item.disabled span.page-link {
  background-color: var(--pl-bg);
  color: #9aa6b6;
}

/* 8.9 Tabs */
.pl-theme .nav-tabs {
  gap: 2px;
  border-bottom: 1px solid var(--pl-line);
}
.pl-theme .nav-tabs .nav-link {
  margin: 0 0 -1px;
  padding: .65rem .95rem;
  border: 0;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  background-color: transparent;
  color: var(--pl-muted);
  font-size: 14.5px;
  font-weight: 600;
  transition: color .2s var(--pl-ease), border-color .2s var(--pl-ease);
}
.pl-theme .nav-tabs .nav-link:hover,
.pl-theme .nav-tabs .nav-link:focus {
  border-bottom-color: var(--pl-line-strong);
  color: var(--pl-navy);
}
.pl-theme .nav-tabs .nav-link.active,
.pl-theme .nav-tabs .nav-item.show .nav-link {
  border-bottom-color: var(--pl-gold);
  background-color: transparent;
  color: var(--pl-navy);
  cursor: default;
}
.pl-theme .tab-content {
  margin-bottom: 1rem;
  padding: 1.1rem 0 0;
  border: 0;
  background-color: transparent;
}

/* 8.10 Dropdown menus (generic) */
.pl-theme .dropdown-menu {
  padding: 6px;
  border: 1px solid var(--pl-line);
  border-radius: 14px;
  box-shadow: var(--pl-shadow-pop);
  color: var(--pl-ink);
  font-size: 14px;
}
.pl-theme .dropdown-menu.show {
  animation: pl-fade-in .16s var(--pl-ease);
}
.pl-theme .dropdown-item,
.pl-theme .dropdown-menu > li > a {
  border-radius: 8px;
  padding: .5rem .75rem;
  color: var(--pl-ink);
  font-size: 14px;
}
.pl-theme .dropdown-item:hover,
.pl-theme .dropdown-item:focus,
.pl-theme .dropdown-menu > li > a:hover,
.pl-theme .dropdown-menu > li > a:focus {
  background: var(--pl-bg-soft);
  color: var(--pl-navy);
  text-decoration: none;
}
.pl-theme .dropdown-item:active,
.pl-theme .dropdown-item.active {
  background-color: var(--pl-navy);
  color: #fff;
}
.pl-theme .dropdown-item.disabled,
.pl-theme .dropdown-item:disabled {
  color: #98a3b3;
}
.pl-theme .dropdown-divider {
  margin: 6px 4px;
  border-top-color: var(--pl-line);
}
.pl-theme .dropdown-header {
  border-top-color: var(--pl-line);
  color: var(--pl-muted);
  font-size: 12px;
  letter-spacing: .06em;
  text-transform: uppercase;
}
@keyframes pl-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* 8.11 Modals, tooltips, popovers */
.pl-theme .modal-content {
  border: 0;
  border-radius: var(--pl-radius);
  box-shadow: 0 40px 80px -30px rgba(10, 29, 56, .55);
}
.pl-theme .modal-header {
  padding: 1.1rem 1.4rem;
  border-bottom: 1px solid var(--pl-line);
}
.pl-theme .modal-title {
  color: var(--pl-navy);
  font-size: 19px;
  font-weight: 600;
  letter-spacing: -.015em;
}
.pl-theme .modal-body {
  padding: 1.2rem 1.4rem;
}
.pl-theme .modal-footer {
  padding: .9rem 1.4rem;
  border-top: 1px solid var(--pl-line);
}
.pl-theme .modal-backdrop {
  background-color: var(--pl-navy-ink);
}
.pl-theme .modal-backdrop.show {
  opacity: .55;
}
.pl-theme .modal-header .closebtn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 36px;
  height: 36px;
  margin: -4px -8px -4px auto;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--pl-muted);
  font-size: 24px;
  font-weight: 400;
  line-height: 1;
  opacity: 1;
  text-shadow: none;
  transition: background-color .2s var(--pl-ease), color .2s var(--pl-ease);
}
.pl-theme .modal-header .closebtn:hover,
.pl-theme .modal-header .closebtn:focus-visible {
  background: var(--pl-bg-soft);
  color: var(--pl-navy);
  opacity: 1;
}
.pl-theme .tooltip {
  font-family: var(--pl-sans);
  font-size: 12.5px;
}
.pl-theme .tooltip-inner {
  padding: .4rem .65rem;
  border-radius: 8px;
  background-color: var(--pl-navy-ink);
}
.pl-theme .bs-tooltip-top .arrow::before,
.pl-theme .bs-tooltip-auto[x-placement^="top"] .arrow::before {
  border-top-color: var(--pl-navy-ink);
}
.pl-theme .bs-tooltip-bottom .arrow::before,
.pl-theme .bs-tooltip-auto[x-placement^="bottom"] .arrow::before {
  border-bottom-color: var(--pl-navy-ink);
}
.pl-theme .bs-tooltip-left .arrow::before,
.pl-theme .bs-tooltip-auto[x-placement^="left"] .arrow::before {
  border-left-color: var(--pl-navy-ink);
}
.pl-theme .bs-tooltip-right .arrow::before,
.pl-theme .bs-tooltip-auto[x-placement^="right"] .arrow::before {
  border-right-color: var(--pl-navy-ink);
}
.pl-theme .popover {
  border-color: var(--pl-line);
  border-radius: var(--pl-radius-sm);
  box-shadow: var(--pl-shadow-pop);
  font-family: var(--pl-sans);
}
.pl-theme .popover-header {
  background-color: var(--pl-bg-soft);
  color: var(--pl-navy);
  font-weight: 600;
}

/* 8.12 Sidebar (#navigation: OpacNav / OpacNavBottom) */
.pl-theme #navigation {
  font-size: 14px;
}
.pl-theme #navigation > div[id]:not(#usermenu) {
  margin-bottom: 14px;
  padding: 14px 16px;
  border: 1px solid var(--pl-line);
  border-radius: 14px;
  background: var(--pl-bg-soft);
}
.pl-theme #navigation :where(h4) {
  margin: 0 0 8px;
  color: var(--pl-navy);
  font-size: 14px;
  font-weight: 600;
}
.pl-theme #navigation :where(ul) {
  margin: 0;
  padding-left: 1.1rem;
}
.pl-theme #navigation :where(p:last-child) {
  margin-bottom: 0;
}
/* pl-base.js hides Koha's sample text ("Important links here.") and an emptied sidebar column */
.pl-theme .pl-is-placeholder,
.pl-theme .pl-col-empty {
  display: none;
}
.pl-theme .row > .pl-col-full {
  flex: 0 0 100%;
  max-width: 100%;
}

/* 8.13 Toolbars (results / lists selection bars): neutral surfaces instead of grey gradients */
.pl-theme .selections-toolbar {
  border: 1px solid var(--pl-line);
  border-radius: var(--pl-radius-sm);
  background: var(--pl-bg-soft);
}
.pl-theme .toolbar,
.pl-theme #toolbar,
.pl-theme #toolbar.clearfix {
  border: 1px solid var(--pl-line);
  border-radius: var(--pl-radius-sm);
  background-color: var(--pl-bg-soft);
}

/* 8.14 Back to top (global.js appends button#backtotop.btn.btn-primary to <body>) */
body.pl-theme #backtotop {
  right: 20px;
  bottom: 20px;
  width: 46px;
  height: 46px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--pl-navy);
  color: #fff;
  font-size: 16px;
  line-height: 46px;
  text-align: center;
  box-shadow: 0 14px 28px -12px rgba(10, 29, 56, .6);
}
body.pl-theme #backtotop:hover,
body.pl-theme #backtotop:focus-visible {
  background: var(--pl-navy-dark);
  color: #fff;
}
body.pl-theme #backtotop:focus-visible {
  outline: 3px solid var(--pl-focus-dark);
  outline-offset: 2px;
}

/* 8.15 Cart message (#cartDetails: basket.js fades it in for two seconds) */
.pl-theme #cartDetails.cart-message {
  position: fixed;
  top: 96px;
  right: 20px;
  left: auto;
  z-index: 1035;
  width: auto;
  max-width: min(340px, calc(100vw - 40px));
  margin: 0;
  padding: 12px 18px;
  border: 0;
  border-radius: var(--pl-radius-sm);
  background: var(--pl-navy-ink);
  box-shadow: var(--pl-shadow-pop);
  color: #fff;
  font: 500 14px/1.45 var(--pl-sans);
  text-align: left;
  cursor: pointer;
}

/* 8.16 Popups without masthead (cart opac-basket.tt, opac-downloadcart.tt) */
body#basket.pl-theme .main,
body.popup.pl-theme .main {
  width: auto;
  max-width: none;
  margin: 12px;
  padding: 14px 6px 18px;
  font-size: 14.5px;
}

/* 8.17 Maintenance page (maintenance.tt keeps Koha's inline header: give it the brand look) */
body#opac_maintenance.pl-theme #header-region {
  background: var(--pl-bg);
  border-top: 3px solid var(--pl-navy);
  border-bottom: 3px solid var(--pl-gold);
}
body#opac_maintenance.pl-theme #header-region .navbar {
  max-width: var(--pl-wrap);
  margin: 0 auto;
  padding: 14px var(--pl-gutter);
}
body#opac_maintenance.pl-theme #header-region #logo {
  width: 56px;
  height: 56px;
  background: url("../../images/pl/paf-iast-mark.png") no-repeat center / contain;
}
body#opac_maintenance.pl-theme #header-region #logo a {
  width: 56px;
  padding-top: 56px;
}

/* =========================================================
   9. RESPONSIVE
   ========================================================= */
@media (max-width: 1100px) {
  /* utilities become icon buttons; the account control keeps its words */
  .pl-theme .pl-mast .pl-tool__label,
  .pl-theme .pl-mast .cartlabel,
  .pl-theme .pl-mast .listslabel,
  .pl-theme .pl-mast .cookieconsentlabel,
  .pl-theme .pl-mast .checkout-label,
  .pl-theme .pl-mast .langlabel {
    display: none;
  }
  .pl-theme .pl-mast .pl-tool__link,
  .pl-theme .pl-mast #header_langmenu .nav-link {
    justify-content: center;
    min-width: 40px;
    padding: 0 10px;
  }
  .pl-theme .pl-mast .pl-tool__link.dropdown-toggle::after,
  .pl-theme .pl-mast #header_langmenu .dropdown-toggle::after {
    display: none;
  }
  .pl-theme .pl-mast #basketcount span {
    position: absolute;
    top: 1px;
    right: -3px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    font-size: 10.5px;
    line-height: 18px;
  }
}
@media (max-width: 900px) {
  .pl-theme .pl-foot__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .pl-theme .pl-foot__brand {
    grid-column: 1 / -1;
  }
}
@media (max-width: 760px) {
  /* the gutter stays 20px, like the home page sections (pl-home.css .pl-wrap) */
  html:has(> body.pl-theme) {
    scroll-padding-top: 56px;
  }
  /* brand bar */
  .pl-theme .pl-mast__inner {
    gap: 10px;
    min-height: 68px;
    padding-top: 10px;
    padding-bottom: 10px;
  }
  .pl-theme .pl-mast .pl-mast__brand {
    gap: 10px;
  }
  .pl-theme .pl-mast__mark {
    width: 70px;
    height: 70px;
  }
  .pl-theme .pl-mast__title {
    font-size: 17px;
  }
  /* phones keep only "PAF-IAST" under the title (as the redesign does at 520px and below) */
  .pl-theme .pl-mast__org {
    font-size: 13px;
  }
  .pl-theme .pl-mast__sub {
    display: none;
  }
  .pl-theme .pl-mast__tools {
    gap: 4px;
  }
  .pl-theme #members.pl-tools {
    gap: 4px;
  }
  .pl-theme #cart-list-nav > .divider-vertical,
  .pl-theme #members > .divider-vertical {
    width: 0;
    margin: 0;
    background: none;
  }
  /* icon-only on phones: 44px touch targets */
  .pl-theme .pl-mast .pl-tool__link,
  .pl-theme .pl-mast #header_langmenu .nav-link {
    justify-content: center;
    min-width: 44px;
    height: 44px;
    padding: 0 9px;
  }
  .pl-theme .pl-mast .pl-acct__btn {
    min-height: 44px;
    padding: 0 14px;
    font-size: 13px;
  }
  .pl-theme .pl-mast .pl-acct__long,
  .pl-theme .pl-mast .pl-acct__hello {
    display: none;
  }
  .pl-theme .pl-mast .pl-acct__btn--user {
    padding: 0 4px;
  }
  .pl-theme .pl-mast .pl-acct__btn--user .userlabel,
  .pl-theme .pl-mast .pl-acct__btn--user.dropdown-toggle::after {
    display: none;
  }
  .pl-theme .pl-mast .pl-acct__btn--user .pl-acct__avatar {
    width: 30px;
    height: 30px;
  }
  /* navigation: one horizontally scrollable row, every link kept, edge fades as the cue */
  .pl-theme .pl-mnav__inner {
    padding-left: 0;
    padding-right: 0;
  }
  .pl-theme .pl-mnav__list {
    padding: 0 28px 0 4px;
    scroll-padding-left: 8px;
    scroll-padding-right: 32px;
  }
  .pl-theme .pl-mnav .pl-mnav__link {
    padding: 13px 13px 12px;
  }
  .pl-theme .pl-mnav .pl-mnav__link::after {
    left: 13px;
    right: 13px;
    bottom: 6px;
  }
  .pl-theme .pl-mnav:not(.is-fit):not(.is-at-end) .pl-mnav__inner::after {
    opacity: 1;
  }
  .pl-theme .pl-mnav.is-scrolled .pl-mnav__inner::before {
    opacity: 1;
  }
  /* search band: query on its own row, then index + Search */
  .pl-theme .pl-sband {
    padding: 14px 0 12px;
  }
  .pl-theme .pl-sform {
    flex-wrap: wrap;
  }
  .pl-theme .pl-sform .pl-sform__q {
    order: -1;
    flex: 1 1 100%;
  }
  .pl-theme .pl-sform .pl-sform__idx,
  .pl-theme .pl-sform .pl-sform__lib,
  .pl-theme .pl-sform #searchsubmit.pl-sform__submit {
    flex: 1 1 0;
    min-width: 0;
    max-width: none;
  }
  .pl-theme .pl-sform .pl-sform__q,
  .pl-theme .pl-sform .pl-sform__idx,
  .pl-theme .pl-sform .pl-sform__lib,
  .pl-theme .pl-sform #searchsubmit.pl-sform__submit {
    height: 44px;
  }
  /* 16px or iOS Safari zooms the page when the field takes focus */
  .pl-theme .pl-sform .pl-sform__q,
  .pl-theme #loginModal #muserid,
  .pl-theme #loginModal #mpassword {
    font-size: 16px;
  }
  /* quick links: 40px tall touch targets; the negative margins keep the text where it was */
  .pl-theme #moresearches.pl-sband__more {
    margin: -2px 0 -10px -4px;
  }
  .pl-theme #moresearches.pl-sband__more a {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
  }
  .pl-theme #loginModal .modal-header .closebtn {
    width: 44px;
    height: 44px;
    margin: -8px -12px -8px auto;
  }
  /* page card */
  .pl-theme .main {
    width: calc(100% - 24px);
    margin: 14px auto 28px;
    padding: 14px 4px 22px;
    border-radius: 14px;
  }
  .pl-theme .main .breadcrumbs {
    margin-bottom: 10px;
  }
  /* opac.css hides breadcrumbs below 768px (.breadcrumb { display: none }); the theme keeps them, wrapping */
  .pl-theme .breadcrumb {
    display: block;
    font-size: 12.5px;
  }
  /* footer */
  .pl-theme .pl-foot__grid {
    gap: 28px 24px;
    padding-top: 36px;
    padding-bottom: 30px;
  }
  .pl-theme .pl-foot .pl-foot__plate {
    max-width: 260px;
  }
  .pl-theme .pl-foot .pl-foot__bottom {
    flex-direction: column;
    align-items: flex-start;
  }
  body.pl-theme #backtotop {
    right: 14px;
    bottom: 14px;
  }
  .pl-theme #cartDetails.cart-message {
    top: 76px;
    right: 12px;
    max-width: calc(100vw - 24px);
  }
}
@media (max-width: 520px) {
  .pl-theme .pl-foot__grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
@media (max-width: 400px) {
  /* 360px phones: "CENTRAL / LIBRARY" stacks beside the P-mark, utilities tighten */
  .pl-theme .pl-mast__inner {
    gap: 6px;
  }
  .pl-theme .pl-mast .pl-mast__brand {
    gap: 8px;
  }
  .pl-theme .pl-mast__mark {
    width: 40px; /* phones keep the original size: at 1.6x the title no longer fits beside the tools */
    height: 40px;
  }
  .pl-theme .pl-mast__title {
    font-size: 14.5px;
    line-height: 1.08;
    white-space: normal;
  }
  .pl-theme .pl-mast__word {
    display: block;
  }
  .pl-theme .pl-mast__org,
  .pl-theme .pl-mast__sub {
    display: none;
  }
  .pl-theme .pl-mast__text {
    overflow: hidden; /* never let a squeezed title spill under the utilities */
  }
  .pl-theme .pl-mast__tools {
    gap: 2px;
  }
  .pl-theme #members.pl-tools,
  .pl-theme #cart-list-nav.pl-tools {
    gap: 0;
  }
  .pl-theme .pl-mast .pl-tool__link,
  .pl-theme .pl-mast #header_langmenu .nav-link {
    min-width: 40px;
    height: 44px;
    padding: 0 6px;
  }
  .pl-theme .pl-mast .pl-acct {
    margin-left: 2px;
  }
  .pl-theme .pl-mast .pl-acct__btn {
    min-height: 44px;
    padding: 0 10px;
  }
  /* all five navigation items fit on one row down to 360px (scrolling row with fades below that) */
  .pl-theme .pl-mnav__list {
    gap: 0;
    padding: 0 2px;
  }
  .pl-theme .pl-mnav .pl-mnav__link {
    padding: 13px 8px 12px;
  }
  .pl-theme .pl-mnav .pl-mnav__link::after {
    left: 8px;
    right: 8px;
  }
}
@media (max-width: 340px) {
  .pl-theme .pl-mast .pl-acct__btn:not(.pl-acct__btn--user) {
    justify-content: center;
    min-width: 44px;
    padding: 0 8px;
  }
  .pl-theme .pl-mast .pl-acct__btn:not(.pl-acct__btn--user) > .userlabel {
    display: none;
  }
  .pl-theme .pl-mast .pl-acct__btn:not(.pl-acct__btn--user) > .fa-user {
    display: inline-block;
  }
}

/* =========================================================
   10. REDUCED MOTION, PRINT
   ========================================================= */
@media (prefers-reduced-motion: reduce) {
  .pl-theme .pl-mast *,
  .pl-theme .pl-mnav,
  .pl-theme .pl-mnav *,
  .pl-theme .pl-mnav::after,
  .pl-theme .pl-mnav__inner::before,
  .pl-theme .pl-mnav__inner::after,
  .pl-theme .pl-mnav .pl-mnav__link::after,
  .pl-theme .pl-sband *,
  .pl-theme .pl-foot *,
  .pl-theme #scrolltocontent.pl-skip,
  .pl-theme .btn,
  .pl-theme .nav-tabs .nav-link,
  .pl-theme .dropdown-menu,
  .pl-theme .modal-header .closebtn {
    transition: none !important;
    animation: none !important;
  }
}
@media print {
  body.pl-theme {
    background: #fff;
  }
  .pl-theme .pl-mast,
  .pl-theme .pl-mnav,
  .pl-theme .pl-sband,
  .pl-theme .pl-foot,
  .pl-theme #backtotop {
    display: none !important;
  }
  .pl-theme .main {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
  }
}
