/* 独立搜索结果页 /search（src/search-page.ts）。书卡、分页、无结果页沿用 library.css。 */
.search-page { background: #efe3cd; }
.search-page > .site-header { position: relative; }
.search-main { max-width: 1240px; margin: auto; padding: 36px 28px 100px; }
.search-heading { position: relative; margin: 20px 0 44px; padding: 40px 48px 36px; color: #f5e6c9; background: linear-gradient(112deg, rgba(255,255,255,.06), transparent 45%), #3a231b; border: 1px solid #654437; box-shadow: 0 18px 42px rgba(54,30,18,.15); overflow: hidden; }
.search-heading::after { content: "搜"; position: absolute; right: 42px; top: 14px; color: rgba(221,188,137,.12); font-size: 118px; font-weight: 700; line-height: 1; pointer-events: none; }
.search-heading > * { position: relative; z-index: 1; }
.search-heading h1 { margin: 0 0 22px; font-size: clamp(30px, 5vw, 54px); letter-spacing: .06em; line-height: 1.25; overflow-wrap: anywhere; word-break: break-word; }
.search-box { max-width: 640px; height: 56px; display: grid; grid-template-columns: 1fr auto; align-items: center; padding: 5px 5px 5px 18px; background: #fbf5e8; box-shadow: 0 14px 32px rgba(0,0,0,.28), inset 0 0 0 1px rgba(74,42,27,.18); }
.search-box:focus-within { box-shadow: 0 14px 32px rgba(0,0,0,.28), inset 0 0 0 2px #c4a36a; }
.search-box input[type="search"] { min-width: 0; width: 100%; border: 0; outline: 0; color: var(--ink); background: transparent; font-size: 16px; font-family: inherit; }
.search-box input::placeholder { color: #9a8a7c; }
.search-box button { height: 46px; min-width: 88px; border: 0; color: #f7e9cf; background: linear-gradient(#a43b32, #88251f); box-shadow: inset 0 1px rgba(255,255,255,.2), 0 4px 8px rgba(70,15,10,.25); letter-spacing: .15em; font-family: inherit; cursor: pointer; }
.search-box button:hover { filter: brightness(1.08); }
.search-box button:focus-visible { outline: 2px solid #edcf9d; outline-offset: 2px; }
.search-count { margin: 18px 0 0; color: #cfbfa7; font-size: 14px; }
.search-filter { margin: 8px 0 0; color: #cfbfa7; font-size: 13px; }
.search-filter strong { color: #edcf9d; }
.search-filter a { margin-left: 10px; color: #edcf9d; text-underline-offset: 3px; }
.search-results { outline: 0; }
/* 结果列表：每行一本书，整行是链接；左侧封面（复用 library.css 的 .book-object/.book-cover/.cover-*，这里只按列表尺寸缩小），
   右侧：书名 / 一行 meta（作者 · 朝代 · 分类）/ 最多两行简介片段。 */
.search-result-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid #cdbb9e; }
.search-result { min-width: 0; border-bottom: 1px solid #d9c9ac; }
.search-result-link { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 20px; align-items: center; padding: 14px 16px; color: inherit; text-decoration: none; }
.search-result-link:hover { background: rgba(255,255,255,.38); }
.search-result-link:focus-visible { outline: 2px solid #8f3029; outline-offset: -2px; background: rgba(255,255,255,.5); }
/* 封面：不单独改字号 / 内边距 / 阴影，而是让全站封面按「基准宽度 --cover-base」原样排版（与首页书卡同一套 library.css，
   书名 / 作者 / 「文硕阁」印章 / 云纹 / 阴影的比例与间距一致），再整体 transform: scale 缩到目标宽度 --cover-w。比例沿用 .book-object（3:3.65）。
   基准宽度取全站书卡的常见宽度：桌面约 272px、手机取 216px（与桌面同样的字号 : 封面宽度比，全站手机书名固定 25px）；--cover-scale = --cover-w / --cover-base（calc 里不能直接做长度相除，所以写成数值）。
   transform 不改变布局占位，所以用负 margin 把占位收回到缩放后的宽高（宽 --cover-w，高 --cover-w × 3.65/3）。 */
.search-result { --cover-base: 272px; --cover-w: 120px; --cover-scale: .4412; }
.search-result .result-cover { width: var(--cover-base); flex: none; justify-self: start; transform: scale(var(--cover-scale)); transform-origin: left center; margin: calc(var(--cover-base) * .60833 * (var(--cover-scale) - 1)) calc(var(--cover-w) - var(--cover-base)) calc(var(--cover-base) * .60833 * (var(--cover-scale) - 1)) 0; pointer-events: none; }
.search-result-link:hover .result-cover .book-cover { transform: rotateY(-12deg); }
.result-body { min-width: 0; }
/* 书名最多两行，超长书名省略，避免个别行把列表撑高。 */
.result-title { margin: 0 0 4px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; color: #33241d; font-size: 18px; line-height: 1.4; overflow-wrap: anywhere; word-break: break-word; }
.search-result-link:hover .result-title { color: #8f3029; }
.search-result .result-meta { min-height: 0; margin: 0; display: flex; justify-content: flex-start; align-items: baseline; flex-wrap: nowrap; color: var(--muted); font-size: 13px; line-height: 1.5; }
.search-result .result-meta > span { min-width: 0; flex: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-result .result-meta > span + span::before { content: "·"; margin: 0 .5em; color: #b09c86; }
.search-result .result-meta > .result-author { flex: 0 1 auto; }
.search-result .result-meta > .result-category { flex: 0 0 auto; }
.result-variant { margin-left: .5em; padding: 0 5px; color: #7a6554; background: rgba(117,86,62,.08); border: 1px solid rgba(117,86,62,.16); font-size: 11px; line-height: 1.5; }
.result-snippet { margin: 4px 0 0; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; color: #4c3b30; font-size: 14px; line-height: 1.6; overflow-wrap: anywhere; word-break: break-word; }
.search-result mark { padding: 0 1px; color: inherit; background: #f3d98b; border-radius: 2px; box-shadow: 0 1px 0 rgba(143,48,41,.35); }
.search-results .catalog-pagination { margin-top: 64px; }
.search-page .empty-state.search-no-result { min-height: 0; padding: 56px 20px 40px; display: block; }
.search-page .empty-state.search-no-result h2 { margin: 18px 0 6px; color: var(--ink); font-size: 22px; }
.search-page .empty-state.search-no-result a { color: #8f342c; text-underline-offset: 4px; }
.search-page .empty-want:focus-visible, .search-page .empty-recs a:focus-visible { outline: 2px solid #8f3029; outline-offset: 2px; }
.search-empty-query { max-width: 720px; margin: 0 auto; text-align: center; color: var(--muted); }
.search-empty-query .empty-recs { margin-top: 28px; }
.search-hot { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px; color: #6a5547; font-size: 14px; }
.search-hot a { padding: 6px 12px; color: #6a3a2c; background: #f7ecd6; border: 1px solid #cdbb9e; text-decoration: none; }
.search-hot a:hover, .search-hot a:focus-visible { color: #8f3029; border-color: #a33a31; }
@media (max-width: 760px) {
  .search-result { --cover-base: 216px; --cover-w: 96px; --cover-scale: .4444; }
  .search-result-link { grid-template-columns: 96px minmax(0, 1fr); gap: 14px; padding: 12px 4px; }
  .result-title { font-size: 16px; margin-bottom: 2px; }
  .search-result .result-meta { font-size: 12px; }
  .result-snippet { margin-top: 3px; font-size: 13px; line-height: 1.55; }
  .search-main { padding: 20px 12px 72px; }
  .search-heading { margin: 12px 0 32px; padding: 28px 18px 24px; }
  .search-heading::after { right: 10px; font-size: 90px; }
  .search-heading h1 { margin-bottom: 18px; }
  .search-box { height: 52px; padding-left: 14px; }
  .search-box button { min-width: 70px; height: 42px; }
  .search-results .catalog-pagination { margin-top: 44px; gap: 7px; }
  .search-results .catalog-pagination .pagination-direction { min-width: 60px; }
  .search-results .pagination-pages a { min-width: 34px; }
  .search-results .pagination-ellipsis { display: none; }
}
