/* FBR Book Pages — front-end styles.
   Self-contained and theme-agnostic. Uses its own variables so it reads the
   same whether your theme is light or dark. Adjust the variables to taste. */

.fbr-book {
	--fbr-bg:        #ffffff;
	--fbr-surface:   #f5f4f0;
	--fbr-border:    rgba(0,0,0,0.12);
	--fbr-text:      #1c1b19;
	--fbr-muted:     #5f5e5a;
	--fbr-faint:     #8a8984;
	--fbr-accent-bg: #e6f1fb;
	--fbr-accent-tx: #0c447c;
	--fbr-radius:    12px;
	--fbr-radius-sm: 8px;

	max-width: 1080px;
	margin: 1.5rem auto;
	padding: 0 16px;
	font-family: inherit;
	color: var(--fbr-text);
	line-height: 1.7;
}

@media (prefers-color-scheme: dark) {
	.fbr-book {
		--fbr-bg:        #1f1e1c;
		--fbr-surface:   #2a2926;
		--fbr-border:    rgba(255,255,255,0.14);
		--fbr-text:      #ececea;
		--fbr-muted:     #b4b2a9;
		--fbr-faint:     #8a8984;
		--fbr-accent-bg: #0c447c;
		--fbr-accent-tx: #cfe3ff;
	}
}

.fbr-card {
	display: flex;
	flex-direction: column;
	gap: 16px;
	background: transparent;
	border: none;
	padding: 0;
}

/* Each major block is its own card. */
.fbr-head,
.fbr-section {
	background: var(--fbr-bg);
	border: 1px solid var(--fbr-border);
	border-radius: var(--fbr-radius);
	box-shadow: 0 1px 3px rgba(0,0,0,0.06), 0 6px 16px rgba(0,0,0,0.04);
}

/* --- Header --- */
.fbr-head { display: flex; gap: 24px; align-items: flex-start; padding: 1.6rem 1.75rem; }
.fbr-cover {
	width: 210px; min-width: 210px; height: 315px;
	background: var(--fbr-surface);
	border: 0.5px solid var(--fbr-border);
	border-radius: var(--fbr-radius-sm);
	overflow: hidden;
	display: flex; align-items: center; justify-content: center;
}
.fbr-cover img { width: 100%; height: 100%; object-fit: cover; }
.fbr-cover-fallback { font-size: 12px; color: var(--fbr-faint); }

.fbr-title { font-size: 30px; font-weight: 600; margin: 0 0 4px; line-height: 1.2; }
.fbr-author { font-size: 17px; color: var(--fbr-muted); margin: 0 0 8px; }
.fbr-author a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.fbr-author a:hover { color: var(--fbr-accent-tx); }
.fbr-series { font-size: 13px; color: var(--fbr-faint); margin: 0 0 12px; }

.fbr-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.fbr-tag {
	font-size: 12px;
	background: var(--fbr-accent-bg);
	color: var(--fbr-accent-tx);
	padding: 3px 10px;
	border-radius: var(--fbr-radius-sm);
	text-transform: capitalize;
}

/* --- Sections --- */
.fbr-section { margin: 0; padding: 1.5rem 1.75rem; }
.fbr-section-label { font-size: 19px; font-weight: 600; color: var(--fbr-text); margin: 0 0 12px; line-height: 1.3; }

/* --- Ratings --- */
.fbr-rating-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 12px;
}
.fbr-rating-card {
	background: var(--fbr-surface);
	border-radius: var(--fbr-radius-sm);
	padding: 0.9rem 1rem;
}
.fbr-rating-source { font-size: 13px; color: var(--fbr-muted); margin: 0 0 4px; }
.fbr-rating-value { font-size: 24px; font-weight: 500; margin: 0; }
.fbr-rating-value span { font-size: 14px; color: var(--fbr-faint); font-weight: 400; }
.fbr-rating-count { font-size: 12px; color: var(--fbr-faint); margin: 4px 0 0; }

/* --- Rate widget --- */
.fbr-stars { display: inline-flex; gap: 2px; }
.fbr-star {
	background: none; border: none; cursor: pointer; padding: 2px;
	font-size: 26px; line-height: 1; color: var(--fbr-border);
	transition: color .12s ease;
}
.fbr-star:hover, .fbr-star.is-on { color: #e0a800; }
.fbr-rate-msg { font-size: 13px; color: var(--fbr-muted); margin: 8px 0 0; min-height: 1em; }

/* --- Blurb --- */
.fbr-blurb-text { font-size: 16px; color: var(--fbr-text); }
.fbr-blurb-text p { margin: 0 0 0.75rem; }

/* --- Metadata grid --- */
.fbr-meta {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
	gap: 14px;
}
.fbr-meta-label { font-size: 12px; color: var(--fbr-faint); margin: 0 0 2px; }
.fbr-meta-value { font-size: 15px; margin: 0; }

/* --- Footer --- */
.fbr-footer { margin: 0; padding: 0.25rem 2px; text-align: center; }
.fbr-footer p { font-size: 12px; color: var(--fbr-faint); margin: 0; line-height: 1.6; }

@media (max-width: 600px) {
	.fbr-head, .fbr-section { padding: 1.1rem 1.2rem; }
	.fbr-title { font-size: 23px; }
	.fbr-cover { width: 120px; min-width: 120px; height: 180px; }
	.fbr-head { gap: 14px; }
}
@media (max-width: 380px) {
	.fbr-head { flex-direction: column; align-items: flex-start; }
}

/* ============ Editorial reviews ============ */
.fbr-review { margin: 0 0 1rem; padding: 0 0 0 14px; border-left: 3px solid var(--fbr-accent-bg); }
.fbr-review-text { font-family: inherit; font-size: 16px; font-style: italic; margin: 0 0 6px; color: var(--fbr-text); }
.fbr-review-cite { font-size: 13px; color: var(--fbr-muted); }
.fbr-review-cite a { color: var(--fbr-accent-tx); text-decoration: none; }
.fbr-review-rating { margin-left: 8px; color: var(--fbr-faint); }

/* ============ Shared book card ============ */
.fbr-card-link { display: block; text-decoration: none; color: inherit; }
.fbr-card-cover {
	display: flex; align-items: center; justify-content: center;
	aspect-ratio: 2 / 3; background: var(--fbr-surface);
	border: 0.5px solid var(--fbr-border); border-radius: var(--fbr-radius-sm);
	overflow: hidden; margin-bottom: 8px; transition: border-color .12s;
}
.fbr-card-link:hover .fbr-card-cover { border-color: var(--fbr-accent-tx); }
.fbr-card-cover img { width: 100%; height: 100%; object-fit: cover; }
.fbr-card-title { display: block; font-size: 14px; font-weight: 500; line-height: 1.3; margin-bottom: 2px; }
.fbr-card-author { display: block; font-size: 12px; color: var(--fbr-muted); }

/* ============ Similar carousel ============ */
.fbr-similar { max-width: 1080px; margin: 1.5rem auto; }
.fbr-similar-title { font-size: 18px; font-weight: 500; margin: 0 0 0.75rem; }
.fbr-carousel {
	display: grid; grid-auto-flow: column; grid-auto-columns: 130px;
	gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory;
	padding-bottom: 8px;
}
.fbr-carousel .fbr-card-link { scroll-snap-align: start; }

/* ============ Discovery: finder + browse ============ */
.fbr-finder, .fbr-browse { max-width: 720px; margin: 1.5rem auto; font-family: inherit; }
.fbr-progress { height: 4px; background: var(--fbr-border); border-radius: 2px; margin-bottom: 1.5rem; overflow: hidden; }
.fbr-progress span { display: block; height: 100%; background: var(--fbr-accent-tx); transition: width .25s ease; }
.fbr-q-num { font-size: 13px; color: var(--fbr-faint); margin: 0 0 4px; }
.fbr-q-title { font-size: 19px; font-weight: 500; margin: 0 0 1.25rem; }
.fbr-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.fbr-chip {
	font-size: 14px; padding: 10px 16px; cursor: pointer;
	border: 0.5px solid var(--fbr-border); background: var(--fbr-bg);
	color: var(--fbr-text); border-radius: var(--fbr-radius-sm);
	transition: background .12s, border-color .12s;
}
.fbr-chip:hover { background: var(--fbr-accent-bg); color: var(--fbr-accent-tx); border-color: var(--fbr-accent-tx); }

.fbr-results-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.fbr-restart { font-size: 13px; background: none; border: none; color: var(--fbr-accent-tx); cursor: pointer; padding: 0; }
.fbr-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 18px; margin-top: 1rem; }

.fbr-filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 1.25rem; }
.fbr-input {
	font-size: 14px; padding: 8px 12px; border-radius: var(--fbr-radius-sm);
	border: 0.5px solid var(--fbr-border); background: var(--fbr-bg); color: var(--fbr-text);
}
.fbr-input[type="search"] { flex: 1; min-width: 180px; }

/* ============ Breadcrumb ============ */
.fbr-breadcrumb { font-size: 12px; color: var(--fbr-faint); margin: 0 2px; }
.fbr-breadcrumb a { color: var(--fbr-accent-tx); text-decoration: none; }
.fbr-breadcrumb span[aria-hidden] { opacity: .5; margin: 0 4px; }
.fbr-crumb-current { color: var(--fbr-muted); }

/* ============ Series badge ============ */
.fbr-series-badge {
	display: inline-block; font-size: 12px; margin-bottom: 8px;
	background: var(--fbr-accent-bg); color: var(--fbr-accent-tx);
	padding: 3px 10px; border-radius: var(--fbr-radius-sm);
}

/* ============ Reading order ============ */
.fbr-order-list { display: flex; flex-direction: column; gap: 8px; }
.fbr-order-row {
	display: flex; align-items: center; gap: 12px;
	padding: 10px 12px; border: 0.5px solid var(--fbr-border);
	border-radius: var(--fbr-radius-sm); text-decoration: none; color: inherit;
	transition: border-color .12s, background .12s;
}
.fbr-order-row:not(.is-current):hover { border-color: var(--fbr-accent-tx); }
.fbr-order-row.is-current { background: var(--fbr-accent-bg); border-color: transparent; }
.fbr-order-badge {
	font-size: 11px; font-weight: 500; padding: 2px 8px; border-radius: var(--fbr-radius-sm);
	background: var(--fbr-bg); color: var(--fbr-muted); white-space: nowrap;
}
.fbr-order-row.is-current .fbr-order-badge { color: var(--fbr-accent-tx); }
.fbr-order-title { font-size: 14px; color: var(--fbr-accent-tx); }
.fbr-order-row.is-current .fbr-order-title { font-weight: 500; }
.fbr-order-here { font-size: 12px; color: var(--fbr-accent-tx); opacity: .7; margin-left: auto; }

/* ============ Star summary (Goodreads-style, near title) ============ */
.fbr-starline { display: flex; align-items: center; gap: 8px; margin: 2px 0 10px; }
.fbr-stars-static { position: relative; display: inline-block; font-size: 16px; line-height: 1; letter-spacing: 1px; color: var(--fbr-border); }
.fbr-stars-static .fbr-stars-fill { position: absolute; top: 0; left: 0; overflow: hidden; white-space: nowrap; color: #e0a800; }
.fbr-starline-num { font-size: 15px; font-weight: 500; }
.fbr-starline-meta { font-size: 13px; color: var(--fbr-muted); }

/* ============ Blurb read-more ============ */
.fbr-blurb-clamp { position: relative; }
.fbr-blurb-clamp.is-clamped .fbr-blurb-text {
	max-height: 16em; overflow: hidden;
	-webkit-mask-image: linear-gradient(to bottom, #000 70%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 70%, transparent 100%);
}
.fbr-blurb-toggle {
	margin-top: 6px; background: none; border: none; padding: 0; cursor: pointer;
	font: inherit; font-size: 14px; font-weight: 500; color: var(--fbr-accent-tx);
}
.fbr-blurb-toggle:hover { text-decoration: underline; }

/* Smooth, tappable targets on mobile */
.fbr-star { min-width: 36px; min-height: 36px; }
.fbr-carousel { scrollbar-width: thin; }

/* ============ Rich blurb (converted from Markdown) ============ */
.fbr-blurb-text h3 { font-size: 18px; font-weight: 600; margin: 1.2em 0 .4em; line-height: 1.3; }
.fbr-blurb-text h4 { font-size: 15px; font-weight: 600; margin: 1em 0 .3em; }
.fbr-blurb-text p  { margin: 0 0 .85em; }
.fbr-blurb-text ul { margin: .4em 0 1em; padding-left: 1.25em; }
.fbr-blurb-text li { margin: .25em 0; }
.fbr-blurb-text a  { color: var(--fbr-accent-tx); }
