:root {
  --el-primary: #155e63;
  --el-primary-dark: #10464b;
  --el-ink: #172c31;
  --el-muted: #65787c;
  --el-bg: #f4f7f7;
  --el-border: #e2e9e9;
}

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  color: var(--el-ink);
  background: var(--el-bg);
  font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
}

.app-navbar { background: linear-gradient(110deg, #123b42, #155e63 70%, #1d7270); box-shadow: 0 3px 14px #133b421c; }
.app-container { max-width: 1440px; }
.brand-mark { width: 2.15rem; height: 2.15rem; display: grid; place-items: center; border: 1px solid #ffffff45; border-radius: .7rem; color: #fff; }
.library-brand-logo { width: 3.4rem; height: 2.65rem; object-fit: contain; border-radius: .25rem; background: #fff; }
.app-navbar .navbar-brand { color: #fff; }
.navbar-brand { font-weight: 700; letter-spacing: -.02em; }
.navbar .nav-link { border-radius: .45rem; margin: .1rem; }
.navbar .nav-link.active, .navbar .nav-link:hover { background: #ffffff20; color: #fff; }
main { flex: 1; }
.app-footer { padding: 1rem 0; color: var(--el-muted); background: #fff; border-top: 1px solid var(--el-border); font-size: .83rem; }
.page-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.page-heading h1 { margin: 0; font-weight: 750; letter-spacing: -.035em; font-size: clamp(1.6rem, 3vw, 2.2rem); }
.page-heading p { color: var(--el-muted); margin: .35rem 0 0; }
.metric-card { height: 100%; border: 1px solid var(--el-border); border-radius: 1rem; box-shadow: 0 .35rem 1.25rem #183c4008; }
.metric-icon { width: 2.8rem; height: 2.8rem; display: grid; place-items: center; border-radius: .8rem; color: var(--el-primary); background: #e8f3f1; font-size: 1.15rem; }
.metric-value { font-size: 1.8rem; line-height: 1.1; font-weight: 750; letter-spacing: -.04em; }
.metric-label { color: var(--el-muted); font-size: .84rem; font-weight: 600; }
.content-card { background: #fff; border: 1px solid var(--el-border); border-radius: 1rem; box-shadow: 0 .35rem 1.25rem #183c4008; }
.content-card-header { padding: 1rem 1.25rem; border-bottom: 1px solid var(--el-border); }
.content-card-header h2 { margin: 0; font-size: 1rem; font-weight: 700; }
.content-card-body { padding: 1.25rem; }
.table > :not(caption) > * > * { padding: .8rem .85rem; vertical-align: middle; }
.table thead th { color: var(--el-muted); font-size: .76rem; font-weight: 700; letter-spacing: .035em; text-transform: uppercase; background: #f8fafa; white-space: nowrap; }
.form-label { font-weight: 650; font-size: .9rem; }
.form-control, .form-select { border-color: #d5e0e0; padding: .65rem .8rem; }
.form-control:focus, .form-select:focus { border-color: #55a19d; box-shadow: 0 0 0 .22rem #2d8b8422; }
.btn-primary { --bs-btn-bg: var(--el-primary); --bs-btn-border-color: var(--el-primary); --bs-btn-hover-bg: var(--el-primary-dark); --bs-btn-hover-border-color: var(--el-primary-dark); }
.auth-container { width: min(100% - 2rem, 440px); margin: auto; padding: 3rem 0; }
.auth-card { overflow: hidden; border: 1px solid var(--el-border); border-radius: 1.2rem; box-shadow: 0 1rem 3rem #14393c17; }
.auth-banner { padding: 1.7rem 2rem; color: #fff; background: linear-gradient(125deg, #123b42, #16766d); }
.auth-brand-logo { width: min(100%, 250px); height: 82px; margin-bottom: .7rem; object-fit: contain; object-position: left center; border-radius: .35rem; background: #fff; }
.auth-banner h1 { margin: 1rem 0 .25rem; font-size: 1.65rem; font-weight: 750; }
.auth-body { padding: 2rem; background: #fff; }
.auth-login-body {
  position: relative;
  isolation: isolate;
  overflow-x: hidden;
  color: #f8f6ee;
  background:
    radial-gradient(ellipse at 14% 14%, #597746 0, transparent 34rem),
    radial-gradient(ellipse at 88% 84%, #725a2d 0, transparent 32rem),
    linear-gradient(135deg, #092c20 0%, #123c2b 47%, #0b3024 100%);
}
.auth-login-body > main,
.auth-login-body > .app-footer { position: relative; z-index: 1; }
.auth-login-body::before {
  position: fixed;
  z-index: 0;
  inset: 0;
  background:
    radial-gradient(ellipse at 50% 50%, transparent 0 14rem, #d7bd7220 14.05rem 14.1rem, transparent 14.15rem 19rem, #ffffff12 19.05rem 19.1rem, transparent 19.15rem),
    repeating-linear-gradient(135deg, #ffffff08 0, #ffffff08 1px, transparent 1px, transparent 34px);
  content: "";
  pointer-events: none;
}
.auth-login-body::after {
  position: fixed;
  z-index: 0;
  top: -17rem;
  right: -12rem;
  width: 43rem;
  height: 43rem;
  border: 1px solid #e1c4774d;
  border-radius: 50%;
  box-shadow: 0 0 0 2rem #e1c4770d, 0 0 0 4rem #ffffff08, 0 0 0 7rem #e1c47709;
  content: "";
  pointer-events: none;
}
.auth-login-container { width: min(100% - 2rem, 460px); padding: clamp(2rem, 7vh, 4rem) 0; }
.auth-login-body .auth-card {
  border: 1px solid #fff9;
  border-radius: 1.2rem;
  box-shadow: 0 2rem 5rem #031a1173, 0 0 0 7px #ffffff0b;
}
.auth-login-body .auth-banner {
  padding: 2rem 2.15rem 1.7rem;
  background:
    radial-gradient(ellipse at 88% 0, #d7bb6529, transparent 50%),
    linear-gradient(130deg, #12402d, #1c5438 70%, #244d32);
}
.auth-login-body .auth-banner h1 { font-family: Georgia, "Times New Roman", serif; font-size: 1.8rem; font-weight: 500; letter-spacing: -.03em; }
.auth-login-body .auth-banner p { color: #e2e9df !important; }
.auth-login-body .auth-brand-logo { height: 76px; padding: .25rem .5rem; }
.auth-login-body .auth-body { padding: 1.8rem 2.15rem 2rem; }
.auth-login-body .form-label { color: #263a2e; }
.auth-login-body .form-control {
  min-height: 48px;
  border-color: #dce4db;
  border-radius: .55rem;
  background: #fbfcf9;
}
.auth-login-body .form-control:focus { border-color: #6d9c73; box-shadow: 0 0 0 .22rem #34744924; }
.auth-login-body .btn-primary {
  --bs-btn-bg: #145b3b;
  --bs-btn-border-color: #145b3b;
  --bs-btn-hover-bg: #0e482e;
  --bs-btn-hover-border-color: #0e482e;
  min-height: 48px;
  border-radius: .55rem;
  box-shadow: 0 .4rem 1rem #145b3b26;
  font-weight: 700;
}
.auth-login-body a:not(.btn) { color: #1a6845; font-weight: 650; text-decoration: none; }
.auth-login-body a:not(.btn):hover { color: #0c482e; text-decoration: underline; }
.auth-login-body .app-footer { color: #e6e9dd; border-color: #ffffff20; background: #092b20a6; }
.empty-state { padding: 2.5rem 1rem; text-align: center; color: var(--el-muted); }
.empty-state i { font-size: 1.6rem; color: #9aadaf; margin-bottom: .8rem; }
.status-pill { font-size: .75rem; font-weight: 700; }
.public-navbar { min-height: 76px; background: #fbfaf7; border-bottom: 1px solid #e9e6de; }
.public-navbar .navbar-brand { color: #192c2a; font-size: 1.05rem; letter-spacing: -.035em; }
.public-brand-mark { width: 2.55rem; height: 2.55rem; display: grid; place-items: center; border-radius: .8rem; color: #f6f0df; background: #1b3733; font-size: 1.1rem; }
.public-navbar .library-brand-logo { width: 5.8rem; height: 2.85rem; }
.public-navbar .btn-link { color: #354a46 !important; font-weight: 650; }
.public-navbar .btn-primary { padding: .62rem 1rem; border-radius: .55rem; font-weight: 650; }
.public-page { max-width: 1440px; padding-top: clamp(1.25rem, 3vw, 2.6rem) !important; }
.portal-hero { min-height: 410px; display: grid; grid-template-columns: 1.12fr .88fr; align-items: center; overflow: hidden; position: relative; padding: clamp(2rem, 5vw, 4.4rem); border: 1px solid #29413b; border-radius: 1.15rem; color: #fff; background: #18332f; box-shadow: 0 1.5rem 3rem #1b342b20; }
.portal-hero::before { position: absolute; inset: 0; background: radial-gradient(ellipse at 75% 38%, #50664755, transparent 42%), linear-gradient(115deg, transparent 52%, #ffffff05); content: ""; pointer-events: none; }
.portal-hero-copy { z-index: 1; max-width: 640px; }
.portal-kicker, .portal-section-kicker { display: inline-flex; align-items: center; gap: .55rem; color: #c7b783; font-size: .71rem; font-weight: 750; letter-spacing: .16em; text-transform: uppercase; }
.portal-kicker > span { width: 1.45rem; height: 1px; background: #c7b783; }
.portal-hero h1 { margin: 1.2rem 0 .9rem; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.8rem, 5.6vw, 5rem); line-height: .99; letter-spacing: -.055em; font-weight: 500; }
.portal-hero h1 em { color: #d1bd82; font-weight: 400; }
.portal-hero-copy > p { max-width: 32rem; margin-bottom: 1.6rem; color: #d3ded9; font-size: 1rem; line-height: 1.75; }
.portal-search { max-width: 570px; display: flex; align-items: center; gap: .75rem; padding: .42rem; border: 1px solid #ffffff24; border-radius: .7rem; background: #fff; box-shadow: 0 .8rem 2rem #071a171f; }
.portal-search > i { margin-left: .75rem; color: #71817a; }
.portal-search input { flex: 1; min-width: 0; border: 0; outline: 0; color: #1c302a; background: transparent; font-size: .88rem; }
.portal-search input::placeholder { color: #84918b; }
.portal-search button { flex: 0 0 auto; padding: .72rem 1rem; border: 0; border-radius: .48rem; color: #fff; background: #285b4d; font-size: .8rem; font-weight: 700; }
.portal-search button:hover { background: #1d483c; }
.portal-hero-note { display: flex; align-items: center; gap: .5rem; margin-top: 1rem; color: #b6c8c0; font-size: .76rem; }
.portal-hero-note i { color: #c7b783; }
.portal-hero-art { min-height: 320px; position: relative; display: grid; place-items: center; }
.portal-art-orbit { position: absolute; width: min(30vw, 340px); aspect-ratio: 1; border: 1px solid #ffffff1a; border-radius: 50%; }
.portal-art-orbit::before, .portal-art-orbit::after { position: absolute; border: 1px solid #ffffff12; border-radius: 50%; content: ""; }
.portal-art-orbit::before { inset: 1.1rem; }
.portal-art-orbit::after { inset: 2.3rem; }
.portal-art-sun { position: absolute; top: 5%; right: 7%; width: 5rem; height: 5rem; border-radius: 50%; background: #c8ad6d; box-shadow: 0 0 4rem #c8ad6d55; }
.portal-art-book { position: absolute; width: 190px; height: 265px; display: flex; flex-direction: column; justify-content: space-between; padding: 1.2rem; box-shadow: .8rem 1.2rem 2rem #06151250; }
.portal-art-book-back { margin: 2rem 0 0 3rem; padding: 2rem 1rem 1rem 2rem; border: 1px solid #e1d5b5; color: #eee3c7; background: #a86348; font-family: Georgia, serif; font-size: 1.45rem; line-height: 1.15; transform: rotate(9deg); }
.portal-art-book-front { z-index: 1; margin: 1rem 3rem 0 0; border: 1px solid #e2d6bd; color: #273d33; background: #e9e1cd; transform: rotate(-8deg); }
.portal-art-book-front::before { position: absolute; inset: .55rem; border: 1px solid #a69c7f; content: ""; }
.portal-art-book-front > i { z-index: 1; align-self: center; margin-top: 1.15rem; color: #557262; font-size: 2.2rem; }
.portal-art-book-front > span { z-index: 1; align-self: center; font-family: Georgia, serif; font-size: 1.45rem; line-height: 1.05; letter-spacing: .1em; text-align: center; }
.portal-art-book-front > small { z-index: 1; align-self: center; font-size: .48rem; font-weight: 750; letter-spacing: .16em; }
.portal-art-caption { position: absolute; right: .2rem; bottom: 1rem; color: #b6c5bc; font-size: .58rem; font-weight: 700; letter-spacing: .2em; }
.portal-discovery { display: grid; grid-template-columns: repeat(3, 1fr); margin: 1.35rem 0 clamp(3rem, 6vw, 5.25rem); border: 1px solid #e8e5dc; border-radius: .85rem; background: #fff; box-shadow: 0 .5rem 1.75rem #24362e08; }
.portal-discovery-item { min-height: 88px; display: flex; align-items: center; gap: .9rem; padding: 1rem 1.35rem; }
.portal-discovery-item + .portal-discovery-item { border-left: 1px solid #eae8e1; }
.portal-discovery-icon { flex: 0 0 2.6rem; height: 2.6rem; display: grid; place-items: center; border-radius: .7rem; color: #3e6956; background: #eff3ed; }
.portal-discovery-item strong, .portal-discovery-item span:not(.portal-discovery-icon) { display: block; }
.portal-discovery-item strong { margin-bottom: .2rem; color: #23372f; font-size: .85rem; }
.portal-discovery-item div > span { color: #748078; font-size: .75rem; }
.portal-collection { margin-bottom: clamp(3rem, 6vw, 5rem); }
.portal-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.portal-section-heading .portal-section-kicker, .portal-cta-copy .portal-section-kicker { color: #8c7950; }
.portal-section-heading h2, .portal-cta-copy h2 { margin: .5rem 0 .3rem; color: #20332d; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.8rem, 3vw, 2.55rem); font-weight: 500; letter-spacing: -.045em; }
.portal-section-heading p { margin: 0; color: #728079; font-size: .9rem; }
.portal-text-link { display: inline-flex; align-items: center; gap: .55rem; padding-bottom: .35rem; color: #37614e; font-size: .8rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.portal-text-link:hover { color: #1d4034; }
.portal-book-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.portal-book-card { overflow: hidden; border: 1px solid #e8e5dc; border-radius: .8rem; background: #fff; box-shadow: 0 .5rem 1.5rem #24362e08; transition: transform .2s ease, box-shadow .2s ease; }
.portal-book-card:hover { transform: translateY(-3px); box-shadow: 0 1rem 2rem #24362e13; }
.portal-book-cover { min-height: 220px; position: relative; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; padding: 1.25rem; color: #fff; }
.portal-book-cover::before { position: absolute; top: -3.5rem; right: -2rem; width: 10rem; height: 10rem; border: 1px solid #ffffff45; border-radius: 50%; box-shadow: 0 0 0 1.3rem #ffffff0c, 0 0 0 2.6rem #ffffff0a; content: ""; }
.portal-book-cover::after { position: absolute; inset: .55rem; border: 1px solid #ffffff45; content: ""; pointer-events: none; }
.cover-ink { background: linear-gradient(145deg, #253c50, #152734); }
.cover-sage { background: linear-gradient(145deg, #73826a, #465747); }
.cover-rust { background: linear-gradient(145deg, #ad654d, #794439); }
.cover-blue { background: linear-gradient(145deg, #587c88, #315360); }
.cover-plum { background: linear-gradient(145deg, #776276, #4e4357); }
.portal-cover-mark { z-index: 1; position: absolute; top: 1.35rem; left: 1.35rem; color: #e3d4a8; font-size: 1.05rem; }
.portal-cover-title { z-index: 1; max-width: 15rem; display: -webkit-box; overflow: hidden; font-family: Georgia, "Times New Roman", serif; font-size: 1.38rem; line-height: 1.12; text-overflow: ellipsis; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.portal-cover-author { z-index: 1; overflow: hidden; margin-top: .6rem; color: #ffffffc9; font-size: .7rem; text-overflow: ellipsis; white-space: nowrap; }
.portal-cover-edition { z-index: 1; margin-top: 1rem; color: #ffffffa6; font-size: .5rem; font-weight: 750; letter-spacing: .14em; }
.portal-book-info { padding: 1rem 1rem .9rem; }
.portal-book-meta { display: flex; justify-content: space-between; gap: .5rem; color: #7d897f; font-size: .65rem; }
.portal-book-meta span:last-child { color: #466650; }
.portal-book-info h3 { display: -webkit-box; overflow: hidden; min-height: 2.7rem; margin: .7rem 0 .2rem; color: #263a32; font-size: .93rem; font-weight: 700; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.portal-book-author { overflow: hidden; margin: 0; color: #77817c; font-size: .75rem; text-overflow: ellipsis; white-space: nowrap; }
.portal-book-action { margin-top: .85rem; padding-top: .75rem; border-top: 1px solid #eeece6; }
.portal-book-action a { display: flex; align-items: center; justify-content: space-between; color: #37614e; font-size: .76rem; font-weight: 750; text-decoration: none; }
.portal-book-action a:hover { color: #203f33; }
.portal-book-action > span { color: #78847c; font-size: .73rem; }
.portal-empty { padding: 3.5rem 1rem; border: 1px dashed #d9ded5; border-radius: .9rem; background: #fff; text-align: center; }
.portal-empty > span { width: 3.25rem; height: 3.25rem; display: grid; place-items: center; margin: 0 auto 1rem; border-radius: 50%; color: #54735f; background: #eff3ed; font-size: 1.2rem; }
.portal-empty h3 { color: #263a32; font-family: Georgia, "Times New Roman", serif; font-size: 1.45rem; font-weight: 500; }
.portal-empty p { color: #77817c; font-size: .85rem; }
.portal-empty a { color: #37614e; font-size: .8rem; font-weight: 700; text-decoration: none; }
.portal-member-cta { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1.4rem; margin-bottom: 1.5rem; padding: clamp(1.35rem, 3vw, 2.25rem); border: 1px solid #dce3d8; border-radius: .9rem; background: #eef1e9; }
.portal-cta-emblem { width: 4rem; height: 4rem; display: grid; place-items: center; border: 1px solid #d3ddcf; border-radius: 50%; color: #45614d; background: #f9f8f1; font-size: 1.4rem; }
.portal-cta-copy h2 { margin: .4rem 0 .3rem; font-size: clamp(1.4rem, 2.4vw, 1.9rem); }
.portal-cta-copy p { max-width: 42rem; margin: 0; color: #69776d; font-size: .8rem; line-height: 1.6; }
.portal-cta-actions { display: flex; flex-direction: column; align-items: flex-start; gap: .7rem; }
.portal-cta-primary { display: inline-flex; align-items: center; gap: .75rem; padding: .8rem 1rem; border-radius: .5rem; color: #fff; background: #285b4d; font-size: .78rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.portal-cta-primary:hover { color: #fff; background: #1d483c; }
.portal-cta-secondary { color: #45614d; font-size: .72rem; font-weight: 700; text-decoration: none; }
.portal-cta-secondary:hover { color: #203f33; text-decoration: underline; }
.public-page + .app-footer { background: #fbfaf7; border-color: #e9e6de; }
@media (max-width: 991.98px) {
  .portal-hero { grid-template-columns: 1fr .72fr; }
  .portal-hero-art { transform: scale(.83); }
  .portal-book-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .portal-member-cta { grid-template-columns: auto 1fr; }
  .portal-cta-actions { grid-column: 2; flex-direction: row; align-items: center; flex-wrap: wrap; }
}
@media (max-width: 767.98px) {
  .portal-hero { min-height: auto; grid-template-columns: 1fr; padding: 2.5rem 1.5rem; }
  .portal-hero-art { display: none; }
  .portal-discovery { grid-template-columns: 1fr; }
  .portal-discovery-item { min-height: 72px; padding: .8rem 1rem; }
  .portal-discovery-item + .portal-discovery-item { border-top: 1px solid #eae8e1; border-left: 0; }
  .portal-book-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
  .portal-book-cover { min-height: 200px; padding: 1rem; }
  .portal-member-cta { grid-template-columns: 1fr; gap: .8rem; }
  .portal-cta-actions { grid-column: 1; }
}
@media (max-width: 575.98px) {
  .auth-body { padding: 1.4rem; }
  .content-card-body { padding: .9rem; }
  .table > :not(caption) > * > * { padding: .65rem; }
  .portal-search { flex-wrap: wrap; }
  .portal-search input { min-height: 2.6rem; }
  .portal-search button { width: 100%; }
  .portal-hero h1 { font-size: clamp(2.65rem, 13vw, 3.6rem); }
  .portal-section-heading { align-items: flex-start; flex-direction: column; }
  .portal-book-cover { min-height: 170px; }
  .portal-cover-title { font-size: 1.12rem; }
  .portal-book-info { padding: .8rem; }
  .portal-cta-actions { align-items: flex-start; flex-direction: column; }
}

.public-portal-body {
  --el-primary: #07583c;
  --el-primary-dark: #06462f;
  --el-ink: #1f3028;
  --el-muted: #69766d;
  --el-bg: #f6f5ef;
  position: relative;
  isolation: isolate;
  background: #f4f1e8;
}
.public-portal-body > .public-navbar,
.public-portal-body > main,
.public-portal-body > .app-footer { position: relative; z-index: 1; }
.public-portal-body::before {
  position: fixed;
  z-index: 0;
  inset: 0;
  background:
    radial-gradient(ellipse at 11% 13%, #d4dfc9bd 0, transparent 31rem),
    radial-gradient(ellipse at 88% 29%, #e5d7b58c 0, transparent 31rem),
    radial-gradient(ellipse at 48% 88%, #dfe6d6a8 0, transparent 38rem),
    linear-gradient(135deg, #faf8f1 0%, #f3f0e6 48%, #f8f6ef 100%);
  content: "";
  pointer-events: none;
}
.public-portal-body::after {
  position: fixed;
  z-index: 0;
  top: 7vh;
  right: -10vw;
  width: min(58vw, 820px);
  height: min(90vh, 900px);
  border: 1px solid #947c4830;
  border-radius: 50%;
  background:
    radial-gradient(ellipse at 54% 42%, #bd9f5922 0, transparent 58%),
    repeating-radial-gradient(circle at 50% 50%, transparent 0 41px, #345a3c13 42px 43px, transparent 44px 69px);
  box-shadow: 0 0 0 2.4rem #9d85410a, 0 0 0 5rem #345a3c08;
  content: "";
  pointer-events: none;
}
.public-portal-body .public-navbar {
  min-height: 84px;
  border-bottom-color: #e6e4da;
  background: #fffefa;
  box-shadow: 0 5px 22px #24382b08;
}
.public-portal-body .public-navbar .container { max-width: 1320px; }
.public-portal-body .public-navbar .navbar-brand { gap: .85rem !important; font-size: 1.08rem; }
.public-portal-body .public-navbar .library-brand-logo { width: 7.4rem; height: 3.1rem; }
.public-portal-body .public-navbar .btn-primary {
  --bs-btn-bg: #07583c;
  --bs-btn-border-color: #07583c;
  --bs-btn-hover-bg: #06462f;
  --bs-btn-hover-border-color: #06462f;
  box-shadow: 0 .25rem .7rem #07583c20;
}
.public-portal-body .public-page { max-width: 1320px; padding-top: clamp(1.5rem, 3.5vw, 3rem) !important; }
.public-portal-body .portal-hero {
  min-height: 450px;
  border-color: #153a2c;
  border-radius: 1.35rem;
  background:
    radial-gradient(ellipse at 84% 110%, #987c3b2b, transparent 41%),
    linear-gradient(118deg, #102f25 0%, #1b4031 58%, #244b37 100%);
  box-shadow: 0 1.6rem 3.6rem #173b2a24, inset 0 1px #ffffff12;
}
.public-portal-body .portal-hero::before {
  background:
    radial-gradient(ellipse at 72% 25%, #82945c25, transparent 35%),
    linear-gradient(115deg, transparent 48%, #ffffff07);
}
.public-portal-body .portal-hero::after {
  position: absolute;
  right: -8rem;
  bottom: -14rem;
  width: 31rem;
  height: 31rem;
  border: 1px solid #ffffff12;
  border-radius: 50%;
  box-shadow: 0 0 0 2.5rem #ffffff06, 0 0 0 5rem #ffffff04;
  content: "";
  pointer-events: none;
}
.public-portal-body .portal-kicker { color: #e1c574; }
.public-portal-body .portal-kicker > span { background: #e1c574; }
.public-portal-body .portal-hero h1 { font-size: clamp(3rem, 5.8vw, 5.35rem); }
.public-portal-body .portal-hero h1 em { color: #e4cb83; }
.public-portal-body .portal-search {
  border-color: #ffffff80;
  border-radius: .78rem;
  box-shadow: 0 1rem 2.2rem #061a102e, 0 0 0 4px #ffffff08;
}
.public-portal-body .portal-search button {
  padding: .8rem 1.15rem;
  background: #07583c;
  transition: background .18s ease, transform .18s ease;
}
.public-portal-body .portal-search button:hover { background: #06462f; transform: translateY(-1px); }
.public-portal-body .portal-hero-art { filter: drop-shadow(0 1.2rem 1.4rem #07190e22); }
.public-portal-body .portal-art-orbit { border-color: #e9d38b30; }
.public-portal-body .portal-art-orbit::before, .public-portal-body .portal-art-orbit::after { border-color: #ffffff14; }
.public-portal-body .portal-art-sun { background: #d4b765; box-shadow: 0 0 3.8rem #d4b76569; }
.public-portal-body .portal-art-book { border-radius: .2rem .35rem .35rem .2rem; }
.public-portal-body .portal-art-book-back {
  background:
    linear-gradient(90deg, #422d2777, transparent 12%),
    linear-gradient(145deg, #b16a48, #8e5039);
}
.public-portal-body .portal-art-book-front {
  background:
    linear-gradient(90deg, #a99d8060, transparent 9%),
    #f0e9d8;
}
.public-portal-body .portal-discovery {
  margin-top: 1.6rem;
  border-color: #e6e3d8;
  border-radius: .95rem;
  box-shadow: 0 .7rem 2rem #263c2c09;
}
.public-portal-body .portal-discovery-icon { color: #285a40; background: #eef1e7; }
.public-portal-body .portal-discovery-item strong { color: #203b2d; }
.public-portal-body .portal-section-heading h2,
.public-portal-body .portal-cta-copy h2 { color: #19382a; }
.public-portal-body .portal-section-heading .portal-section-kicker,
.public-portal-body .portal-cta-copy .portal-section-kicker { color: #967629; }
.public-portal-body .portal-book-card {
  border-color: #e8e5dc;
  border-radius: .9rem;
  box-shadow: 0 .45rem 1.5rem #253b2b0b;
}
.public-portal-body .portal-book-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 1.15rem 2.4rem #253b2b18;
}
.public-portal-body .portal-book-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .7rem; }
.public-portal-body .portal-book-cover { min-height: 155px; padding: .8rem; }
.public-portal-body .portal-book-open-link { color: #fff; text-decoration: none; }
.public-portal-body .portal-book-open-link:hover { color: #fff; }
.public-portal-body .portal-book-open-link:focus-visible { outline: 3px solid #d4b765; outline-offset: 3px; }
.public-portal-body .portal-book-cover::before {
  top: -2.5rem;
  right: -1.8rem;
  width: 9rem;
  height: 9rem;
  border-color: #ffffff35;
  box-shadow: 0 0 0 1.2rem #ffffff0c, 0 0 0 2.4rem #ffffff08;
}
.public-portal-body .portal-book-cover::after { inset: .7rem; border-color: #ffffff55; }
.public-portal-body .cover-ink { background: linear-gradient(145deg, #30485b, #172a38); }
.public-portal-body .cover-sage { background: linear-gradient(145deg, #78896c, #455b48); }
.public-portal-body .cover-rust { background: linear-gradient(145deg, #b97555, #784333); }
.public-portal-body .cover-blue { background: linear-gradient(145deg, #628894, #315460); }
.public-portal-body .cover-plum { background: linear-gradient(145deg, #806a7b, #4e4357); }
.public-portal-body .portal-cover-mark { top: .85rem; left: .85rem; color: #ebd18c; font-size: .9rem; }
.public-portal-body .portal-cover-title { font-size: 1.05rem; }
.public-portal-body .portal-cover-author { margin-top: .4rem; font-size: .65rem; }
.public-portal-body .portal-cover-edition { margin-top: .65rem; font-size: .45rem; }
.public-portal-body .portal-book-info { padding: .65rem; }
.public-portal-body .portal-book-info h3 { min-height: 2.2rem; margin-top: .45rem; font-size: .82rem; }
.public-portal-body .portal-book-author { font-size: .68rem; }
.public-portal-body .portal-book-action { margin-top: .5rem; padding-top: .5rem; }
.public-portal-body .portal-book-action a { font-size: .68rem; }
.public-portal-body .portal-book-action .portal-book-download-link { justify-content: flex-start; gap: .35rem; margin-top: .45rem; font-size: .66rem; }
.public-portal-body .portal-book-action a { color: #236043; }
.public-portal-body .portal-book-action a:hover { color: #113e28; }
.public-portal-body .portal-member-cta {
  border-color: #dce4d6;
  border-radius: 1rem;
  background:
    radial-gradient(circle at 8% 50%, #ffffffa8 0, transparent 5rem),
    linear-gradient(110deg, #eef1e8, #f1f2e9);
  box-shadow: 0 .7rem 1.8rem #253b2b08;
}
.public-portal-body .portal-cta-emblem { color: #9a7929; border-color: #e2d7b7; background: #fffdf5; }
.public-portal-body .portal-cta-primary { background: #07583c; box-shadow: 0 .35rem .8rem #07583c20; }
.public-portal-body .portal-cta-primary:hover { background: #06462f; }
.public-portal-body + .app-footer { background: #f4f1e8eF; border-color: #e6e0d2; }
@media (max-width: 991.98px) {
  .public-portal-body .portal-book-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
  .public-portal-body::after { top: 28vh; right: -48vw; width: 105vw; height: 95vw; }
  .public-portal-body .public-navbar { min-height: 72px; }
  .public-portal-body .public-navbar .navbar-brand { gap: .55rem !important; font-size: .95rem; }
  .public-portal-body .public-navbar .library-brand-logo { width: 5.5rem; height: 2.5rem; }
  .public-portal-body .portal-hero { min-height: auto; }
  .public-portal-body .portal-book-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
  .public-portal-body .portal-book-cover { min-height: 135px; padding: .75rem; }
}
@media (max-width: 575.98px) {
  .public-portal-body .public-navbar .container { flex-wrap: nowrap; padding-right: .75rem; padding-left: .75rem; }
  .public-portal-body .public-navbar .navbar-brand { min-width: 0; gap: .4rem !important; font-size: .78rem; }
  .public-portal-body .public-navbar .navbar-brand > span:last-child { max-width: 7rem; line-height: 1.05; }
  .public-portal-body .public-navbar .library-brand-logo { flex: 0 0 auto; width: 4rem; height: 2.35rem; }
  .public-portal-body .public-navbar > .container > .d-flex { flex: 0 0 auto; gap: .15rem !important; }
  .public-portal-body .public-navbar .btn-link { padding: .35rem .25rem; font-size: .64rem; white-space: nowrap; }
  .public-portal-body .public-navbar .btn-primary { padding: .48rem .55rem; font-size: .64rem; white-space: nowrap; }
  .public-portal-body .portal-book-cover { min-height: 125px; }
}
@media (prefers-reduced-motion: reduce) {
  .public-portal-body .portal-book-card,
  .public-portal-body .portal-search button { transition: none; }
  .public-portal-body .portal-book-card:hover,
  .public-portal-body .portal-search button:hover { transform: none; }
}

.app-shell-body {
  --el-primary: #12603f;
  --el-primary-dark: #0d4c32;
  --el-ink: #20352b;
  --el-muted: #6d7b71;
  --el-bg: #f3f4ee;
  --el-border: #e2e7dd;
  position: relative;
  isolation: isolate;
  background: #f3f4ee;
}
.app-shell-body::before {
  position: fixed;
  z-index: 0;
  inset: 0;
  background:
    radial-gradient(ellipse at 5% 3%, #dce7d482 0, transparent 34rem),
    radial-gradient(ellipse at 100% 75%, #e9e1c875 0, transparent 31rem),
    linear-gradient(135deg, #f7f8f3, #f0f2ea 72%, #f7f6ef);
  content: "";
  pointer-events: none;
}
.app-shell-body > .app-navbar,
.app-shell-body > main,
.app-shell-body > .app-footer { position: relative; z-index: 1; }
.app-shell-body .app-navbar {
  min-height: 76px;
  border-bottom: 1px solid #ffffff18;
  background:
    radial-gradient(ellipse at 85% 0, #d6b85a1c, transparent 37%),
    linear-gradient(112deg, #0d3023, #164832 65%, #20583a);
  box-shadow: 0 8px 25px #102d1d24;
}
.app-shell-body .app-navbar .navbar-brand { gap: .75rem !important; font-size: 1rem; }
.app-shell-body .app-navbar .library-brand-logo { width: 5rem; height: 2.7rem; }
.app-shell-body .app-navbar .navbar-nav { gap: .15rem; }
.app-shell-body .app-navbar .nav-link {
  padding: .62rem .8rem;
  color: #e0e9dfc9;
  font-size: .82rem;
  font-weight: 600;
  transition: background .18s ease, color .18s ease;
}
.app-shell-body .app-navbar .nav-link.active {
  color: #fff;
  background: #ffffff18;
  box-shadow: inset 0 -2px #d9bc69;
}
.app-shell-body .app-navbar .nav-link:hover { color: #fff; background: #ffffff12; }
.app-shell-body .app-navbar .btn-outline-light { border-color: #ffffff50; }
.app-shell-body main.app-container { max-width: 1480px; padding-top: clamp(1.5rem, 3vw, 2.8rem) !important; padding-bottom: clamp(2rem, 4vw, 3.5rem) !important; }
.app-shell-body .page-heading { align-items: center; margin-bottom: 1.7rem; }
.app-shell-body .page-heading h1 {
  color: #173a29;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.9rem, 3.2vw, 2.7rem);
  font-weight: 500;
  letter-spacing: -.045em;
}
.app-shell-body .page-heading p { color: #6d7b71; font-size: .88rem; }
.app-shell-body .btn { border-radius: .55rem; font-weight: 650; transition: transform .18s ease, box-shadow .18s ease, background .18s ease; }
.app-shell-body .btn-primary {
  --bs-btn-bg: #12603f;
  --bs-btn-border-color: #12603f;
  --bs-btn-hover-bg: #0d4c32;
  --bs-btn-hover-border-color: #0d4c32;
  box-shadow: 0 .35rem .8rem #12603f20;
}
.app-shell-body .btn-primary:hover { transform: translateY(-1px); box-shadow: 0 .5rem 1rem #12603f2b; }
.app-shell-body .btn-outline-primary {
  --bs-btn-color: #205d40;
  --bs-btn-border-color: #a9c0aa;
  --bs-btn-hover-bg: #eaf0e8;
  --bs-btn-hover-border-color: #6f9877;
  --bs-btn-hover-color: #17472f;
}
.app-shell-body .content-card,
.app-shell-body .metric-card {
  border-color: #e2e7dc;
  border-radius: .9rem;
  background-color: #fffefa;
  box-shadow: 0 .55rem 1.7rem #243b2c0b, 0 1px 2px #243b2c08;
}
.app-shell-body a.metric-card { transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.app-shell-body a.metric-card:hover { transform: translateY(-3px); border-color: #c9d8c6; box-shadow: 0 1rem 2rem #243b2c14; }
.app-shell-body .metric-icon { color: #2d6646; background: linear-gradient(145deg, #eef3e9, #e5ede2); }
.app-shell-body .metric-value { color: #1d3f2d; }
.app-shell-body .metric-label { color: #748174; }
.app-shell-body .content-card-header { border-bottom-color: #e9ece4; background: linear-gradient(110deg, #fffefa, #f8f9f3); }
.app-shell-body .content-card-header h2 { color: #244332; }
.app-shell-body .table { --bs-table-bg: transparent; --bs-table-hover-bg: #f4f7f0; --bs-table-color: #35453a; }
.app-shell-body .table thead th { color: #687a6c; background: #f3f5ef; border-bottom-color: #e5e9df; }
.app-shell-body .table tbody tr { border-color: #edf0e9; }
.app-shell-body .form-control,
.app-shell-body .form-select { border-color: #d9e1d6; border-radius: .55rem; background-color: #fffefa; }
.app-shell-body .form-control:focus,
.app-shell-body .form-select:focus { border-color: #77a080; box-shadow: 0 0 0 .22rem #31764b20; }
.app-shell-body .list-group-item { border-color: #edf0e9; background: transparent; }
.app-shell-body .badge.text-bg-light { color: #48604d !important; background: #eff2e9 !important; }
.app-shell-body .app-footer { color: #6d7b71; border-top-color: #e1e6dc; background: #f6f6f0eF; }
@media (max-width: 991.98px) {
  .app-shell-body .app-navbar .navbar-nav { padding-top: .6rem; }
  .app-shell-body .app-navbar .nav-link { padding: .65rem .8rem; }
}
@media (max-width: 575.98px) {
  .app-shell-body .app-navbar .navbar-brand { gap: .5rem !important; font-size: .82rem; }
  .app-shell-body .app-navbar .library-brand-logo { width: 4rem; height: 2.4rem; }
  .app-shell-body main.app-container { padding-right: 1rem; padding-left: 1rem; }
  .app-shell-body .page-heading { align-items: flex-start; }
  .app-shell-body .page-heading h1 { font-size: 1.9rem; }
  .app-shell-body .content-card-header { padding: .9rem 1rem; }
  .app-shell-body .list-group-item { gap: .55rem !important; }
  .app-shell-body .list-group-item .badge { max-width: 4.25rem; padding: .4em .5em; font-size: .65rem; white-space: normal; text-align: center; }
}
@media (prefers-reduced-motion: reduce) {
  .app-shell-body .btn,
  .app-shell-body a.metric-card,
  .app-shell-body .app-navbar .nav-link { transition: none; }
  .app-shell-body .btn-primary:hover,
  .app-shell-body a.metric-card:hover { transform: none; }
}

.catalogue-hero {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(250px, .85fr);
  align-items: center;
  gap: 2rem;
  overflow: hidden;
  min-height: 340px;
  padding: clamp(1.7rem, 5vw, 3.5rem);
  border: 1px solid #24463a;
  border-radius: 1.1rem;
  color: #fff;
  background: radial-gradient(ellipse at 82% 10%, #406454 0, transparent 38%), linear-gradient(125deg, #17392f, #102a25 70%);
  box-shadow: 0 1rem 2.8rem #193b2b1c;
}
.catalogue-hero-copy { z-index: 1; }
.catalogue-eyebrow,
.catalogue-section-kicker { color: #cabb91; font-size: .64rem; font-weight: 800; letter-spacing: .16em; }
.catalogue-eyebrow { display: inline-flex; align-items: center; gap: .55rem; }
.catalogue-hero h1 { margin: 1rem 0 .85rem; color: #fff; font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.2rem, 4vw, 3.45rem); font-weight: 500; letter-spacing: -.05em; line-height: 1.02; }
.catalogue-hero h1 em { color: #d7c68f; font-weight: 400; }
.catalogue-hero-copy > p { max-width: 34rem; margin-bottom: 1.35rem; color: #d1ded7; font-size: .93rem; line-height: 1.7; }
.catalogue-search { max-width: 590px; display: flex; align-items: center; gap: .7rem; padding: .38rem; border: 1px solid #ffffff24; border-radius: .65rem; background: #fff; box-shadow: 0 .7rem 1.7rem #061a1528; }
.catalogue-search > i { margin-left: .7rem; color: #738178; }
.catalogue-search input { flex: 1; min-width: 0; padding: .5rem 0; border: 0; outline: 0; color: #263a32; background: transparent; font-size: .83rem; }
.catalogue-search input::placeholder { color: #87918a; }
.catalogue-search button { flex: 0 0 auto; padding: .7rem .85rem; border: 0; border-radius: .45rem; color: #fff; background: #285b4d; font-size: .73rem; font-weight: 750; }
.catalogue-search button:hover { background: #1d483c; }
.catalogue-hero-art { position: relative; min-height: 275px; display: grid; place-items: center; }
.catalogue-art-orbit { position: absolute; width: min(27vw, 290px); aspect-ratio: 1; border: 1px solid #ffffff22; border-radius: 50%; }
.catalogue-art-orbit::before,
.catalogue-art-orbit::after { position: absolute; border: 1px solid #ffffff12; border-radius: 50%; content: ""; }
.catalogue-art-orbit::before { inset: 1rem; }
.catalogue-art-orbit::after { inset: 2rem; }
.catalogue-art-sun { position: absolute; top: 3%; right: 7%; width: 3.7rem; height: 3.7rem; border-radius: 50%; background: #c8ad6d; box-shadow: 0 0 3rem #c8ad6d4d; }
.catalogue-feature-book { position: absolute; width: 145px; height: 210px; display: flex; flex-direction: column; justify-content: space-between; padding: 1rem; box-shadow: .8rem 1.2rem 2rem #06151255; }
.catalogue-feature-book-back { margin: 1.6rem 0 0 2.2rem; padding: 1.5rem .8rem .8rem 1.4rem; border: 1px solid #e1d5b5; color: #eee3c7; background: #a86348; font-family: Georgia, serif; font-size: 1.15rem; line-height: 1.15; transform: rotate(9deg); }
.catalogue-feature-book-front { z-index: 1; margin: .7rem 2rem 0 0; border: 1px solid #e2d6bd; color: #273d33; background: #e9e1cd; transform: rotate(-8deg); }
.catalogue-feature-book-front::before { position: absolute; inset: .45rem; border: 1px solid #a69c7f; content: ""; }
.catalogue-feature-book-front > i { z-index: 1; align-self: center; margin-top: .8rem; color: #557262; font-size: 1.8rem; }
.catalogue-feature-book-front > span { z-index: 1; align-self: center; font-family: Georgia, serif; font-size: 1.1rem; line-height: 1.05; letter-spacing: .1em; text-align: center; }
.catalogue-feature-book-front > small { z-index: 1; align-self: center; font-size: .4rem; font-weight: 750; letter-spacing: .14em; }
.catalogue-art-caption { position: absolute; right: 0; bottom: .1rem; color: #b6c5bc; font-size: .52rem; font-weight: 700; letter-spacing: .18em; }
.catalogue-highlights { display: grid; grid-template-columns: repeat(3, 1fr); margin: 1.1rem 0 clamp(2.7rem, 5vw, 4.5rem); border: 1px solid #e8e5dc; border-radius: .85rem; background: #fffefa; box-shadow: 0 .5rem 1.75rem #24362e08; }
.catalogue-highlights > div { min-height: 78px; display: flex; align-items: center; gap: .85rem; padding: .9rem 1.25rem; }
.catalogue-highlights > div + div { border-left: 1px solid #eae8e1; }
.catalogue-highlight-icon { flex: 0 0 2.5rem; height: 2.5rem; display: grid; place-items: center; border-radius: .7rem; color: #3e6956; background: #eff3ed; }
.catalogue-highlights strong,
.catalogue-highlights small { display: block; }
.catalogue-highlights strong { color: #23372f; font-size: 1.1rem; font-weight: 800; line-height: 1.1; }
.catalogue-highlights small { margin-top: .2rem; color: #748078; font-size: .7rem; }
.catalogue-collection { margin-bottom: 2rem; }
.catalogue-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.catalogue-section-heading h2 { margin: .45rem 0 .25rem; color: #20332d; font-family: Georgia, "Times New Roman", serif; font-size: clamp(1.75rem, 3vw, 2.45rem); font-weight: 500; letter-spacing: -.045em; }
.catalogue-section-heading p { margin: 0; color: #728079; font-size: .86rem; }
.catalogue-manage-actions { display: flex; flex-wrap: wrap; gap: .5rem; }
.catalogue-manage-link { display: inline-flex; align-items: center; gap: .5rem; padding: .7rem .9rem; border: 1px solid #d5dfd1; border-radius: .55rem; color: #285b43; background: #fffefa; font-size: .78rem; font-weight: 750; text-decoration: none; white-space: nowrap; }
.catalogue-manage-link:hover { border-color: #9fb99f; color: #17472f; background: #f2f6ef; }
.catalogue-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; padding: .55rem; border: 1px solid #e8e9e1; border-radius: .7rem; background: #fffefa; }
.catalogue-type-tabs { display: flex; flex-wrap: wrap; gap: .25rem; }
.catalogue-type-tabs a { padding: .55rem .85rem; border-radius: .45rem; color: #67756b; font-size: .75rem; font-weight: 700; text-decoration: none; }
.catalogue-type-tabs a:hover { color: #285b43; background: #f2f5ef; }
.catalogue-type-tabs a.active { color: #fff; background: #285b43; }
.catalogue-category-filter { display: flex; gap: .45rem; }
.catalogue-category-filter .form-select { width: auto; min-width: 10rem; border-color: #e1e5dc; border-radius: .45rem; background-color: #fff; color: #516056; font-size: .75rem; }
.catalogue-filter-button { padding: .4rem .65rem; border: 1px solid #d5dfd1; border-radius: .45rem; color: #285b43; background: #f7f8f3; font-size: .73rem; font-weight: 700; }
.catalogue-filter-button:hover { background: #edf2e9; }
.catalogue-book-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: .7rem; }
.catalogue-book-card { min-width: 0; overflow: hidden; border: 1px solid #e8e5dc; border-radius: .8rem; background: #fffefa; box-shadow: 0 .5rem 1.5rem #24362e08; transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease; }
.catalogue-book-card:hover { transform: translateY(-3px); border-color: #d8dfd3; box-shadow: 0 1rem 2rem #24362e13; }
.catalogue-book-cover { min-height: 155px; position: relative; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; padding: .8rem; color: #fff; }
.catalogue-book-open-link { text-decoration: none; }
.catalogue-book-open-link:hover { color: #fff; }
.catalogue-book-open-link:focus-visible { outline: 3px solid #c7b783; outline-offset: 3px; }
.catalogue-book-cover::before { position: absolute; top: -3.2rem; right: -2rem; width: 9rem; height: 9rem; border: 1px solid #ffffff45; border-radius: 50%; box-shadow: 0 0 0 1.2rem #ffffff0c, 0 0 0 2.4rem #ffffff0a; content: ""; }
.catalogue-book-cover::after { position: absolute; inset: .5rem; border: 1px solid #ffffff45; content: ""; pointer-events: none; }
.catalogue-format-pill { z-index: 1; position: absolute; top: .75rem; left: .75rem; display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .4rem; border: 1px solid #ffffff45; border-radius: 99px; color: #fff; background: #122a2580; font-size: .46rem; font-weight: 800; letter-spacing: .08em; }
.catalogue-cover-mark { z-index: 1; position: absolute; top: .85rem; right: .85rem; color: #e3d4a8; font-size: .85rem; }
.catalogue-cover-title { z-index: 1; max-width: 15rem; display: -webkit-box; overflow: hidden; font-family: Georgia, "Times New Roman", serif; font-size: 1.05rem; line-height: 1.12; text-overflow: ellipsis; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.catalogue-cover-author { z-index: 1; overflow: hidden; margin-top: .4rem; color: #ffffffc9; font-size: .62rem; text-overflow: ellipsis; white-space: nowrap; }
.catalogue-cover-edition { z-index: 1; overflow: hidden; margin-top: .6rem; color: #ffffffa6; font-size: .43rem; font-weight: 750; letter-spacing: .1em; text-overflow: ellipsis; white-space: nowrap; }
.catalogue-book-info { padding: .65rem; }
.catalogue-book-meta { min-height: 1rem; display: flex; justify-content: space-between; gap: .5rem; color: #7d897f; font-size: .63rem; }
.catalogue-book-meta span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.catalogue-book-meta .is-available { color: #39704b; font-weight: 700; }
.catalogue-book-meta .is-unavailable { color: #9a6a3d; font-weight: 700; }
.catalogue-book-info h3 { display: -webkit-box; overflow: hidden; min-height: 2.2rem; margin: .45rem 0 .2rem; color: #263a32; font-size: .82rem; font-weight: 750; line-height: 1.35; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.catalogue-book-author { overflow: hidden; margin: 0; color: #77817c; font-size: .66rem; text-overflow: ellipsis; white-space: nowrap; }
.catalogue-book-details { min-height: 1rem; display: flex; flex-wrap: wrap; gap: .2rem .45rem; margin-top: .45rem; color: #879087; font-size: .55rem; }
.catalogue-book-actions { min-height: 2.25rem; display: flex; align-items: stretch; gap: .35rem; margin-top: .5rem; padding-top: .5rem; border-top: 1px solid #eeece6; }
.catalogue-book-actions form { display: flex; flex: 1; min-width: 0; }
.catalogue-action-primary,
.catalogue-action-secondary { min-height: 2rem; display: inline-flex; flex: 1; align-items: center; justify-content: center; gap: .35rem; padding: .4rem .45rem; border: 1px solid #285b43; border-radius: .45rem; color: #fff; background: #285b43; font-size: .62rem; font-weight: 750; line-height: 1.25; text-align: center; text-decoration: none; }
.catalogue-action-primary:hover { border-color: #194533; color: #fff; background: #194533; }
.catalogue-action-secondary { flex: 0 0 2.35rem; color: #285b43; background: transparent; }
.catalogue-action-secondary:hover { color: #194533; background: #eff4ed; }
.catalogue-action-primary:focus-visible,
.catalogue-action-secondary:focus-visible,
.catalogue-filter-button:focus-visible,
.catalogue-manage-link:focus-visible,
.catalogue-type-tabs a:focus-visible { outline: 3px solid #c7b783; outline-offset: 2px; }
.catalogue-reserve-action { flex: 1; }
.catalogue-action-unavailable { align-self: center; color: #78847c; font-size: .68rem; }
.catalogue-edit-link { align-self: center; margin-left: auto; color: #5e7563; font-size: .64rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
.catalogue-edit-link:hover { color: #1d4034; }
.catalogue-book-actions .catalogue-delete-form { flex: 0 0 auto; align-items: center; }
.catalogue-delete-link { padding: .3rem .1rem; border: 0; color: #9a4f45; background: transparent; font-size: .6rem; font-weight: 700; white-space: nowrap; }
.catalogue-delete-link:hover { color: #7e2e25; text-decoration: underline; }
.catalogue-delete-link:focus-visible { outline: 3px solid #c7b783; outline-offset: 2px; }
.catalogue-empty { padding: 3rem 1rem; border: 1px dashed #d9ded5; border-radius: .9rem; background: #fffefa; text-align: center; }
.catalogue-empty > span { width: 3.1rem; height: 3.1rem; display: grid; place-items: center; margin: 0 auto 1rem; border-radius: 50%; color: #54735f; background: #eff3ed; font-size: 1.15rem; }
.catalogue-empty h3 { color: #263a32; font-family: Georgia, "Times New Roman", serif; font-size: 1.4rem; font-weight: 500; }
.catalogue-empty p { color: #77817c; font-size: .83rem; }
.catalogue-empty a { color: #37614e; font-size: .78rem; font-weight: 750; text-decoration: none; }
@media (max-width: 1199.98px) {
  .catalogue-book-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 991.98px) {
  .catalogue-hero { grid-template-columns: minmax(0, 1.2fr) minmax(210px, .8fr); gap: .75rem; }
  .catalogue-hero-art { min-height: 235px; }
  .catalogue-feature-book { width: 125px; height: 185px; }
  .catalogue-highlights > div { padding: .8rem; }
  .catalogue-book-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .catalogue-hero { grid-template-columns: 1fr; min-height: 0; padding: 1.5rem 1.15rem; }
  .catalogue-hero h1 { font-size: 2.25rem; }
  .catalogue-hero-copy > p { font-size: .84rem; }
  .catalogue-search { gap: .4rem; }
  .catalogue-search button { padding: .65rem .55rem; font-size: .65rem; }
  .catalogue-hero-art { min-height: 190px; }
  .catalogue-art-orbit { width: 180px; }
  .catalogue-feature-book { width: 110px; height: 160px; }
  .catalogue-feature-book-front > span { font-size: .95rem; }
  .catalogue-art-caption { right: .15rem; }
  .catalogue-highlights { margin-bottom: 2.5rem; }
  .catalogue-highlights > div { min-height: 68px; flex-direction: column; justify-content: center; gap: .35rem; padding: .55rem .25rem; text-align: center; }
  .catalogue-highlight-icon { flex-basis: 2rem; width: 2rem; height: 2rem; font-size: .78rem; }
  .catalogue-highlights strong { font-size: .95rem; }
  .catalogue-highlights small { max-width: 6rem; font-size: .57rem; line-height: 1.2; }
  .catalogue-section-heading { align-items: flex-start; }
  .catalogue-manage-link { padding: .55rem; font-size: .67rem; }
  .catalogue-toolbar { align-items: stretch; flex-direction: column; }
  .catalogue-type-tabs { justify-content: space-between; }
  .catalogue-type-tabs a { flex: 1; padding: .55rem .35rem; text-align: center; }
  .catalogue-category-filter .form-select { flex: 1; width: 0; }
  .catalogue-book-grid { grid-template-columns: 1fr; gap: .8rem; }
  .catalogue-book-card { display: grid; grid-template-columns: minmax(115px, 36%) minmax(0, 1fr); }
  .catalogue-book-cover { min-height: 100%; padding: .85rem; }
  .catalogue-format-pill { top: .75rem; left: .75rem; padding: .3rem .4rem; font-size: .44rem; }
  .catalogue-cover-mark { top: .8rem; right: .8rem; font-size: .8rem; }
  .catalogue-cover-title { font-size: 1.05rem; }
  .catalogue-cover-author { font-size: .62rem; }
  .catalogue-cover-edition { font-size: .4rem; letter-spacing: .06em; }
  .catalogue-book-info { padding: .8rem; }
  .catalogue-book-info h3 { min-height: 0; font-size: .85rem; }
  .catalogue-book-details { margin-top: .45rem; }
  .catalogue-book-actions { flex-wrap: wrap; gap: .35rem; }
  .catalogue-action-primary,
  .catalogue-action-secondary { min-height: 2rem; padding: .4rem; font-size: .61rem; }
  .catalogue-action-secondary { flex-basis: 2rem; }
}
@media (prefers-reduced-motion: reduce) {
  .catalogue-book-card { transition: none; }
  .catalogue-book-card:hover { transform: none; }
}
