/* SF Books. Uses the Sandbach Flashes theme colours and fonts when they're there. */
.sfb-list, .sfb-book, .sfb-back {
	--sfb-text: var(--sc-text, #1f2328);
	--sfb-muted: var(--sc-muted, #5b636e);
	--sfb-bg: var(--sc-bg, #fff);
	--sfb-surface: var(--sc-surface, #f5f6f7);
	--sfb-border: var(--sc-border, #dfe2e5);
	--sfb-accent: var(--sc-accent, #2f6f4e);
	--sfb-accent-text: var(--sc-accent-text, #fff);
	--sfb-radius: var(--sc-radius, 6px);
	--sfb-shadow: 0 10px 30px -8px rgba(15, 23, 42, .28), 0 3px 8px rgba(15, 23, 42, .10);
	--sfb-book-shadow: 0 1px 2px rgba(15, 23, 42, .18), 0 8px 18px -6px rgba(15, 23, 42, .35);
}
.sfb-intro { margin: 0 0 1.25rem; max-width: 70ch; }
.sfb-intro > :last-child { margin-bottom: 0; }
.sfb-empty { padding: 1.25rem; background: var(--sfb-surface); color: var(--sfb-text); border-radius: var(--sfb-radius); margin: 0; }

/* Category buttons and search, on one row on big screens */
.sfb-tools { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 1rem 1.5rem; margin: 0 0 1.5rem; }
.sfb-cats { display: flex; flex-wrap: wrap; gap: .5rem; flex: 1 1 26rem; }
.sfb-cat {
	display: inline-block; padding: .45rem .95rem; border-radius: 999px; font-weight: 600; font-size: .95rem; line-height: 1.3;
	text-decoration: none; color: var(--sfb-accent); background: transparent; box-shadow: inset 0 0 0 2px var(--sfb-accent);
	transition: background-color .15s, color .15s;
}
.sfb-cat:hover, .sfb-cat:focus-visible { background: var(--sfb-surface); }
.sfb-cat.is-active { background: var(--sfb-accent); color: var(--sfb-accent-text); }
.sfb-cat:focus-visible { outline: 3px solid var(--sfb-accent); outline-offset: 2px; }
.cb--bg-accent .sfb-cat { color: inherit; box-shadow: inset 0 0 0 2px currentColor; }
.cb--bg-accent .sfb-cat:hover { background: rgba(255, 255, 255, .12); }
.cb--bg-accent .sfb-cat.is-active { background: var(--sfb-accent-text); color: var(--sfb-accent); }

.sfb-search { position: relative; display: flex; flex: 0 1 18rem; margin: 0 0 0 auto; }
.sfb-search .sfb-search__input { width: 100%; height: 2.4rem; padding: .4rem 2.75rem .4rem 1rem; border: 1px solid var(--sfb-border); border-radius: 999px; background: var(--sfb-bg); color: var(--sfb-text); font-size: .95rem; }
.sfb-search .sfb-search__input:focus { outline: 3px solid var(--sfb-accent); outline-offset: 1px; border-color: var(--sfb-accent); }
.sfb-search .sfb-search__button { position: absolute; top: .2rem; right: .2rem; display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; padding: 0; border-radius: 50%; background: var(--sfb-accent); color: var(--sfb-accent-text); }
.sfb-search .sfb-search__button:focus-visible { outline: 3px solid var(--sfb-accent); outline-offset: 2px; }
.sfb-results { margin: -.5rem 0 1.25rem; color: var(--sfb-muted); font-size: .95rem; }
.sfb-results a { color: var(--sfb-accent); font-weight: 600; }
.cb--bg-accent .sfb-results { color: inherit; }
.cb--bg-accent .sfb-results a { color: inherit; }
@media (max-width: 600px) {
	.sfb-search { flex-basis: 100%; margin: 0; }
}

/* Cards: same column rules as the galleries and bird records cards. */
.sfb-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; grid-template-columns: repeat(var(--sfb-cols, 4), minmax(0, 1fr)); }
.sfb-cards--cols-2 { --sfb-cols: 2; }
.sfb-cards--cols-3 { --sfb-cols: 3; }
.sfb-cards--cols-4 { --sfb-cols: 4; }
.sfb-cards--cols-5 { --sfb-cols: 5; }
.sfb-cards--cols-6 { --sfb-cols: 6; }
@media (max-width: 1023px) {
	.sfb-cards--cols-5, .sfb-cards--cols-6 { --sfb-cols: 4; }
}
@media (max-width: 767px) {
	.sfb-cards { --sfb-cols: 3 !important; gap: .85rem; }
	.sfb-cards--cols-2 { --sfb-cols: 2 !important; }
}
@media (max-width: 479px) {
	.sfb-cards { --sfb-cols: 2 !important; }
}

.sfb-card { position: relative; display: flex; flex-direction: column; margin: 0; border: 1px solid var(--sfb-border); border-radius: var(--sfb-radius); overflow: hidden; background: var(--sfb-bg); color: var(--sfb-text); transition: transform .2s ease, box-shadow .2s ease; }
.sfb--shadow > .sfb-card { box-shadow: var(--sfb-shadow); }
.sfb-card:hover { transform: translateY(-2px); }
.sfb--shadow > .sfb-card:hover { box-shadow: 0 16px 36px -10px rgba(15, 23, 42, .34), 0 4px 10px rgba(15, 23, 42, .12); }
/* Every book sits whole in the same tall box, standing on a shelf-coloured background. */
.sfb-card__cover { --sfb-pad-y: 1.25rem; --sfb-pad-x: 1.5rem; position: relative; display: block; aspect-ratio: 4 / 5; background: var(--sfb-surface); }
.sfb-card__cover img { position: absolute; inset: var(--sfb-pad-y) var(--sfb-pad-x); margin: auto; display: block; width: auto; height: auto; max-width: calc(100% - 2 * var(--sfb-pad-x)); max-height: calc(100% - 2 * var(--sfb-pad-y)); border-radius: 2px 4px 4px 2px; box-shadow: var(--sfb-book-shadow); transition: transform .3s ease; }
.sfb-card__cover .sfb-placeholder { position: absolute; top: var(--sfb-pad-y); bottom: var(--sfb-pad-y); left: 50%; height: auto; max-width: calc(100% - 2 * var(--sfb-pad-x)); translate: -50% 0; }
.sfb-card:hover .sfb-card__cover img, .sfb-card:hover .sfb-placeholder { transform: translateY(-3px) rotate(-1deg); }
.sfb-card__body { display: flex; flex-direction: column; gap: .2rem; flex: 1; padding: .85rem 1rem 1rem; }
.sfb-card__title { margin: 0; font-size: 1.05rem; line-height: 1.3; }
.sfb-card__title a { color: inherit; text-decoration: none; }
.sfb-card__title a:hover, .sfb-card__title a:focus-visible { color: var(--sfb-accent); text-decoration: underline; }
/* The whole card is clickable. */
.sfb-card__title a::after { content: ""; position: absolute; inset: 0; }
.sfb-card__author { margin: 0; font-size: .9rem; }
.sfb-card__meta { margin: 0; color: var(--sfb-muted); font-size: .85rem; }
.sfb-card__excerpt { margin: .3rem 0 0; font-size: .875rem; }
@media (max-width: 479px) {
	.sfb-card__cover { --sfb-pad-y: .85rem; --sfb-pad-x: 1rem; }
	.sfb-card__body { padding: .6rem .7rem .75rem; }
	.sfb-card__title { font-size: .95rem; }
	.sfb-card__author { font-size: .85rem; }
}

/* A made-up cover for books without one: title and author on the accent colour. */
.sfb-placeholder {
	display: flex; flex-direction: column; justify-content: space-between; gap: .75rem; aspect-ratio: 2 / 3; max-width: 100%;
	padding: 14% 10% 10% 14%; border-radius: 2px 4px 4px 2px; overflow: hidden; text-align: left;
	background: linear-gradient(90deg, rgba(0, 0, 0, .18) 0, rgba(0, 0, 0, .18) 6%, rgba(255, 255, 255, .08) 7%, transparent 9%), var(--sfb-accent);
	color: var(--sfb-accent-text); box-shadow: var(--sfb-book-shadow); transition: transform .3s ease;
}
.sfb-placeholder__title { font-weight: 700; font-size: 1rem; line-height: 1.2; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }
.sfb-placeholder__author { font-size: .75rem; opacity: .85; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
@media (max-width: 479px) {
	.sfb-placeholder__title { font-size: .85rem; }
}

/* A single book: cover beside the details. */
.sfb-book { display: grid; grid-template-columns: minmax(0, 280px) minmax(0, 1fr); gap: 2.5rem; align-items: start; }
.sfb-book--no-cover { grid-template-columns: minmax(0, 1fr); }
.sfb-book__cover img, .sfb-book__cover .sfb-placeholder { display: block; width: 100%; height: auto; border-radius: 3px 6px 6px 3px; }
.sfb--shadow .sfb-book__cover img, .sfb--shadow .sfb-book__cover .sfb-placeholder { box-shadow: 0 2px 4px rgba(15, 23, 42, .18), 0 18px 40px -12px rgba(15, 23, 42, .45); }
.sfb-book__cover .sfb-placeholder { aspect-ratio: 2 / 3; height: auto; }
.sfb-book__cover .sfb-placeholder__title { font-size: 1.5rem; -webkit-line-clamp: 7; }
.sfb-book__cover .sfb-placeholder__author { font-size: 1rem; }
.sfb-book__file { display: flex; flex-direction: column; align-items: center; gap: .35rem; margin: 1.25rem 0 0; text-align: center; }
.sfb-book__file-button { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; width: 100%; }
.sfb-book__file-button svg { flex: none; }
.sfb-book__file-info { color: var(--sfb-muted); font-size: .85rem; }
.cb--bg-accent .sfb-book__file-info { color: inherit; opacity: .85; }
.sfb-book--no-cover .sfb-book__file { align-items: flex-start; margin: 0 0 1.5rem; }
.sfb-book--no-cover .sfb-book__file-button { width: auto; }
.sfb-book__title { margin-bottom: .25rem; }
.sfb-book__author { margin: 0 0 1.25rem; font-size: 1.15rem; color: var(--sfb-muted); }
.cb--bg-accent .sfb-book__author { color: inherit; opacity: .85; }
.sfb-book__details { display: grid; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); gap: .9rem 1.25rem; margin: 0 0 1.5rem; padding: 1rem 1.25rem; border-radius: var(--sfb-radius); background: var(--sfb-surface); }
.sfb-book__details div { min-width: 0; }
.sfb-book__details dt { margin: 0; font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--sfb-muted); }
.sfb-book__details dd { margin: .15rem 0 0; font-weight: 600; overflow-wrap: anywhere; }
.sfb-book__details a { color: var(--sfb-accent); }
.cb--bg-light .sfb-book__details { background: var(--sfb-bg); }
.cb--bg-accent .sfb-book__details { background: rgba(255, 255, 255, .1); }
.cb--bg-accent .sfb-book__details dt, .cb--bg-accent .sfb-book__details a { color: inherit; }
.sfb-book__link { margin: 0 0 1.5rem; }
.sfb-book__description { max-width: 70ch; }
.sfb-book__description > :first-child { margin-top: 0; }
.sfb-book__description > :last-child { margin-bottom: 0; }
.sfb-book__reviewer { margin: 1.25rem 0 0; color: var(--sfb-muted); font-style: italic; }
.cb--bg-accent .sfb-book__reviewer { color: inherit; opacity: .85; }
.sfb-back { margin: 2.5rem 0 0; }
@media (max-width: 767px) {
	.sfb-book { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
	.sfb-book__cover { max-width: 200px; }
	.sfb-book__details { grid-template-columns: repeat(auto-fill, minmax(7.5rem, 1fr)); }
}

/* A book's own page: no date, author line or featured image under the title. */
.single-sf_book .entry-header .entry-meta { display: none; }

/* Page numbers (same look as the galleries and bird records lists) */
.sfb-pager { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; margin: 1.75rem 0 0; }
.sfb-pager__count { margin: 0; color: var(--sfb-muted); font-size: .9rem; }
.sfb-pager__links { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem; }
.sfb-pager__link { display: inline-flex; align-items: center; justify-content: center; gap: .3em; min-width: 2.5rem; height: 2.5rem; padding: 0 .75rem; border: 1px solid var(--sfb-border); border-radius: 999px; color: inherit; text-decoration: none; font-size: .9rem; font-weight: 600; line-height: 1; }
a.sfb-pager__link:hover, a.sfb-pager__link:focus-visible { background: var(--sfb-surface); color: var(--sfb-text); }
a.sfb-pager__link:focus-visible { outline: 3px solid var(--sfb-accent); outline-offset: 2px; }
.sfb-pager__link.is-current { background: var(--sfb-accent); border-color: var(--sfb-accent); color: var(--sfb-accent-text); }
.sfb-pager__link.is-disabled { opacity: .4; }
.sfb-pager__gap { padding: 0 .2rem; color: var(--sfb-muted); }
.cb--bg-accent .sfb-pager__count, .cb--bg-accent .sfb-pager__gap { color: inherit; }
.cb--bg-accent .sfb-pager__link.is-current { background: var(--sfb-accent-text); border-color: var(--sfb-accent-text); color: var(--sfb-accent); }
@media (max-width: 600px) {
	.sfb-pager { justify-content: center; }
	.sfb-pager__count { width: 100%; text-align: center; }
	.sfb-pager__links { gap: .25rem; justify-content: center; }
	.sfb-pager__link { min-width: 2.15rem; height: 2.15rem; padding: 0 .4rem; font-size: .85rem; }
	.sfb-pager__prev, .sfb-pager__next { font-size: 0; gap: 0; padding: 0; width: 2.15rem; }
	.sfb-pager__prev span, .sfb-pager__next span { font-size: 1.1rem; }
	.sfb-pager__link.is-disabled { display: none; }
}

@media (prefers-reduced-motion: reduce) {
	.sfb-card, .sfb-card__cover img, .sfb-placeholder { transition: none; }
	.sfb-card:hover, .sfb-card:hover .sfb-card__cover img, .sfb-card:hover .sfb-placeholder { transform: none; }
}

/* A book's own page: the hero at the top. */
.sfb-hero .cb-hero__slider { --hero-h: 0px; background: var(--sc-accent, #2f6f4e); }
.sfb-hero .sfb-hero__bg { object-fit: cover; filter: blur(28px) saturate(1.1); transform: scale(1.25); }
.sfb-hero--plain .cb-hero__slide::after { background: linear-gradient(90deg, rgba(0, 0, 0, .25), rgba(0, 0, 0, .05)); }
.sfb-hero .cb-hero__content { padding-top: clamp(1.75rem, 4vw, 2.75rem); padding-bottom: clamp(1.75rem, 4vw, 2.75rem); }
.sfb-hero__layout { display: flex; align-items: center; gap: clamp(1.5rem, 4vw, 2.75rem); }
.sfb-hero__cover { flex: 0 0 clamp(120px, 18vw, 200px); }
.sfb-hero__cover img, .sfb-hero__cover .sfb-placeholder { display: block; width: 100%; height: auto; border-radius: 3px 6px 6px 3px; box-shadow: 0 2px 4px rgba(0, 0, 0, .25), 0 18px 40px -12px rgba(0, 0, 0, .6); }
.sfb-hero__cover .sfb-placeholder { aspect-ratio: 2 / 3; }
.sfb-hero__cover .sfb-placeholder__title { font-size: 1.15rem; }
.sfb-hero__cover .sfb-placeholder__author { font-size: .85rem; }
.sfb-hero .sfb-hero__inner { max-width: 40rem; }
.sfb-hero__author { margin: 0 0 .35rem; font-size: clamp(1rem, 1.6vw, 1.2rem); color: rgba(255, 255, 255, .95); }
.sfb-hero__meta { margin: 0; font-size: .9rem; color: rgba(255, 255, 255, .8); }
.sfb-hero__buttons { margin-top: 1.25rem; align-items: flex-start; }
.sfb-hero__buttons p { margin: 0; }
.sfb-hero .sfb-book__file { align-items: flex-start; text-align: left; }
.sfb-hero .sfb-book__file-button { width: auto; background: #fff; color: var(--sc-accent, #2f6f4e); }
.sfb-hero .sfb-book__file-info { color: rgba(255, 255, 255, .8); }
.sfb-single .cb-sf-book .sfb-book__details { margin-top: 0; }
@media (max-width: 600px) {
	.sfb-hero__layout { flex-direction: column; align-items: flex-start; }
	.sfb-hero__cover { flex-basis: auto; width: 130px; }
}
.sfb-single .cb-sf-book .sfb-book__description { max-width: none; }
