/* ============ 族谱修谱热度（华世家 /library/heatmap/） ============ */
/* 数据：上海图书馆馆藏族谱元数据 103,460 部，清洗自 Chinese-Clans-Database */

/* ---- library 页顶部区块 ---- */
.heat-block{padding:44px 0 8px;background:linear-gradient(115deg,rgba(255,254,249,.94),rgba(247,244,235,.8));border-bottom:1px solid var(--line)}
.heat-block-head{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:22px}
.heat-block-head h2{margin:5px 0 0;font:700 clamp(26px,2.6vw,36px) var(--serif)}
.heat-block-head p{margin:7px 0 0;color:var(--soft);font-size:13px}
.heat-block-head .btn{border-radius:999px}
.heat-block-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding-bottom:34px}
.heat-card{padding:18px 20px;border:1px solid var(--line);background:rgba(255,253,248,.74);box-shadow:0 10px 30px rgba(34,41,36,.04)}
.heat-card h3{margin:0 0 12px;font:700 15px var(--serif);color:var(--gold);letter-spacing:.04em}
.heat-row{display:grid;grid-template-columns:22px 26px 1fr 44px;align-items:center;gap:8px;padding:5px 0;font-size:13px}
.heat-row .rank{color:var(--soft);font-size:11px;text-align:right}
.heat-row b{font:600 15px var(--serif)}
.heat-row em{font-style:normal;color:var(--soft);font-size:12px;text-align:right}
.heat-row .mini{height:7px;overflow:hidden;border-radius:4px;background:rgba(157,120,64,.16)}
.heat-row .mini i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--clan-gold),#b98f4a)}

/* ---- 统计卡片 ---- */
.heat-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:26px}
.heat-stat{padding:15px 16px;border:1px solid rgba(38,54,48,.14);background:var(--white);text-align:center}
.heat-stat strong{display:block;font:600 27px var(--serif);color:var(--ink)}
.heat-stat span{font-size:11px;color:var(--soft)}

/* ---- 完整页 hero ---- */
.heat-hero{padding:44px 0 34px;background:linear-gradient(115deg,rgba(255,254,249,.96),rgba(247,244,235,.82));border-bottom:1px solid var(--line)}
.heat-hero-inner{display:flex;align-items:center;gap:40px}
.heat-hero h1{margin:4px 0;font:700 clamp(30px,3.4vw,48px) var(--serif);letter-spacing:.04em}
.heat-hero p{max-width:560px;margin:10px 0 0;color:var(--soft);font-size:13.5px;line-height:1.8}
.heat-hero .heat-stats{margin:22px 0 4px}

/* ---- 轮播图（纯代码封面，无水印） ---- */
.heat-carousel{flex:1;min-width:0;position:relative;overflow:hidden;border-radius:10px;border:1px solid var(--line);box-shadow:0 18px 50px rgba(34,41,36,.10);background:var(--white)}
.heat-carousel-track{display:flex;transition:transform .7s cubic-bezier(.4,0,.2,1)}
.heat-slide{width:100%;flex-shrink:0;aspect-ratio:16/10;position:relative;overflow:hidden;display:block}
.heat-slide::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(10,31,27,.77) 0%,rgba(10,31,27,.44) 42%,rgba(10,31,27,.05) 78%);pointer-events:none}
.heat-slide::after{content:'';position:absolute;inset:0;z-index:1;background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 6px);pointer-events:none}
.heat-slide-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transform:scale(1.015);transition:transform 6s ease}
.heat-slide.s1{background:linear-gradient(120deg,#173b36 0%,#2a5a4a 55%,#3d6f5c 100%)}
.heat-slide.s2{background:linear-gradient(120deg,#7a2418 0%,#a33b2b 55%,#c05a3c 100%)}
.heat-slide.s3{background:linear-gradient(120deg,#7c5c2c 0%,#9d7840 55%,#c2a468 100%)}
.heat-slide.s4{background:linear-gradient(120deg,#16313c 0%,#274b5a 55%,#3a6472 100%)}
.heat-slide.s5{background:linear-gradient(120deg,#5f4120 0%,#8a6230 55%,#b08a4e 100%)}
.heat-slide.s6{background:linear-gradient(120deg,#3a1a14 0%,#5a2a22 55%,#7d3f33 100%)}
.heat-slide-deco{position:absolute;right:-14px;bottom:-26px;width:320px;height:200px;opacity:.7;pointer-events:none;z-index:2}
.heat-slide-seal{position:absolute;left:22px;top:50%;transform:translateY(-50%);width:40px;height:40px;display:grid;place-items:center;background:var(--clan-red);color:#fff;font:700 20px var(--serif);box-shadow:0 4px 12px rgba(0,0,0,.28);z-index:1}
.heat-slide-no{position:absolute;top:14px;right:16px;color:rgba(255,255,255,.62);font:600 11px var(--sans);letter-spacing:.2em;z-index:1}
.heat-slide-title{position:absolute;left:80px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font:700 32px var(--serif);color:#fff;letter-spacing:.16em;text-shadow:0 2px 14px rgba(0,0,0,.35);z-index:1;margin:0}
.heat-slide-sub{position:absolute;left:80px;bottom:18px;color:rgba(255,255,255,.78);font:500 12px var(--serif);letter-spacing:.28em;z-index:1;white-space:nowrap}
.heat-carousel-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:2}
.heat-carousel-dots button{width:8px;height:8px;border:0;border-radius:50%;background:rgba(255,255,255,.55);cursor:pointer}
.heat-carousel-dots button.active{background:#fff}

/* ---- 工作区 ---- */
.heat-workspace{padding:30px 0 70px}
.heat-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;margin-bottom:18px}
.heat-search{width:min(430px,100%);height:46px;display:flex;border:1px solid rgba(60,49,33,.25);background:var(--white);box-shadow:0 8px 30px rgba(50,40,25,.05)}
.heat-search input{min-width:0;flex:1;padding:0 16px;border:0;outline:0;background:transparent}
.heat-search button{width:58px;border:0;color:#fff;background:var(--red)}
.heat-tabs{display:flex;flex-wrap:wrap;gap:6px}
.heat-tab{padding:9px 15px;border:1px solid var(--line);background:rgba(255,253,248,.7);color:var(--soft);font:600 13px var(--serif)}
.heat-tab:hover{color:var(--red);border-color:rgba(169,52,38,.35)}
.heat-tab.active{color:#fff;border-color:var(--ink);background:var(--ink)}
.heat-panel{border:1px solid var(--line);background:rgba(255,253,248,.7)}
.heat-panel-head{padding:18px 22px;border-bottom:1px solid var(--line)}
.heat-panel-head h2{margin:0;font:700 19px var(--serif)}
.heat-panel-head p{margin:6px 0 0;color:var(--soft);font-size:12px}
.heat-mindmap{padding:18px 22px 20px;border-bottom:1px solid var(--line);background:radial-gradient(circle at 7% 50%,rgba(23,58,52,.06),transparent 30%),rgba(255,253,248,.55);overflow:hidden}
.heat-mindmap svg{width:100%;height:auto;display:block}
.heat-mindmap-heading{display:flex;align-items:baseline;gap:14px;margin-bottom:4px;padding:0 2px}
.heat-mindmap-heading span{font:700 15px var(--serif);color:var(--ink)}
.heat-mindmap-heading small{color:var(--soft);font-size:11px}
.heat-map-svg{min-height:250px}
.heat-table{width:100%;border-collapse:collapse}
.heat-table th{color:var(--soft);background:rgba(231,221,202,.34);font-size:12px;letter-spacing:.08em}
.heat-table th,.heat-table td{padding:11px 14px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
.heat-table tbody tr:hover{background:rgba(199,161,90,.07)}
.heat-table .rank{color:var(--soft);font-size:12px}
.heat-table .sur{font:600 17px var(--serif)}
.heat-table .num-c{font-variant-numeric:tabular-nums}
.heat-table .sub{color:var(--soft);font-size:12px}
.heat-table td[data-click]{cursor:pointer}
.heat-table .empty{padding:50px 20px;text-align:center;color:var(--soft)}
.heat-dist{display:flex;flex-wrap:wrap;gap:7px 10px}
.heat-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--soft)}
.heat-chip b{color:var(--ink);font-weight:600}
.heat-chip .mini{width:42px;height:6px;overflow:hidden;border-radius:3px;background:rgba(157,120,64,.16)}
.heat-chip .mini i{display:block;height:100%;border-radius:3px;background:#b98f4a}
.heat-bar-bg{height:9px;overflow:hidden;border-radius:5px;background:rgba(157,120,64,.16)}
.heat-bar-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--clan-gold),#b98f4a)}

/* ---- 族谱数据库（全量元数据检索） ---- */
.heat-db-row td{vertical-align:middle}
.heat-db-title .hdt{display:inline;font:600 14px/1.6 var(--serif);color:var(--ink)}
.heat-chip-sur{display:inline-block;min-width:26px;padding:2px 9px;border-radius:3px;background:var(--clan-red);color:#fff;font:600 14px var(--serif);text-align:center}
.heat-db-tag{margin-left:0;padding:2px 8px;border:1px solid rgba(169,52,38,.32);color:var(--red);font-size:11px;border-radius:3px;white-space:nowrap}
.heat-db-row .dim{color:#b4aa9a}
.heat-table .heat-db-title{max-width:340px;min-width:220px}

/* ---- 分页 ---- */
.heat-pager{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:14px;padding:20px 12px;border-top:1px solid var(--line)}
.heat-pager button{min-width:92px;min-height:40px;padding:0 14px;border:1px solid var(--line);background:rgba(255,253,248,.85);font:600 13px var(--serif)}
.heat-pager button:hover:not(:disabled){color:#fff;border-color:var(--ink);background:var(--ink)}
.heat-pager button:disabled{opacity:.38;cursor:not-allowed}
.heat-pager .info{color:var(--soft);font-size:12px}

/* ---- 详情卡 ---- */
.heat-detail{margin-top:18px;padding:22px 24px;border:1px solid rgba(169,52,38,.28);background:rgba(255,253,248,.85);box-shadow:var(--shadow)}
.heat-detail h3{margin:0 0 14px;font:700 18px var(--serif)}
.heat-detail-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.heat-detail-chip{display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid var(--line);background:#fff;font-size:13px}
.heat-detail-chip .mini{width:56px;height:7px;overflow:hidden;border-radius:4px;background:rgba(157,120,64,.16)}
.heat-detail-chip .mini i{display:block;height:100%;border-radius:4px;background:#b98f4a}
.heat-detail-chip b{margin-left:auto;color:var(--ink);font-weight:600}
.heat-sample{padding:10px 14px;border:1px dashed rgba(38,54,48,.22);background:#fff}
.heat-sample .title{font:600 14px/1.5 var(--serif)}
.heat-sample .title .tag{margin-left:8px;padding:2px 7px;border:1px solid rgba(169,52,38,.3);color:var(--red);font-size:10px;border-radius:3px}
.heat-sample .meta{margin-top:4px;color:var(--soft);font-size:12px}

/* ---- 数据说明 ---- */
.heat-note{margin-top:26px;padding:14px 18px;border-left:4px solid var(--gold);background:rgba(157,120,64,.07);color:var(--soft);font-size:12px;line-height:1.9}

/* ---- library 页横排大 tab 导航（参考 /people/ 的 culture-tabs） ---- */
.heat-page-tabs{margin:26px 0 0;background:#efe7d8;border:1px solid #d7c7aa}
.heat-page-tabs-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:#d7c7aa}
.heat-page-tabs a{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;padding:16px 22px;background:#f9f5ec;color:#453b30;text-decoration:none;transition:background .2s}
.heat-page-tabs a b{font:700 17px var(--serif);letter-spacing:.04em}
.heat-page-tabs a small{color:#8c7b63;font-size:11px;line-height:1.5}
.heat-page-tabs a:hover{background:#f3eee3}
.heat-page-tabs a.active{background:#173a34;color:#fff}
.heat-page-tabs a.active small{color:#d6c69f}

@media(max-width:1000px){.heat-block-grid{grid-template-columns:1fr}.heat-stats{grid-template-columns:repeat(3,1fr)}.heat-detail-grid{grid-template-columns:1fr}.heat-page-tabs-grid{grid-template-columns:repeat(2,1fr)}.heat-hero-inner{flex-direction:column}.heat-carousel{width:100%}.heat-mindmap{overflow-x:auto}.heat-map-svg{width:960px!important;max-width:none!important}.heat-mindmap-heading{position:sticky;left:0}}
@media(max-width:700px){.heat-stats{grid-template-columns:repeat(2,1fr)}.heat-toolbar{display:block}.heat-search{width:100%;margin-bottom:12px}.heat-table-wrap{overflow-x:auto}.heat-table{min-width:560px}.heat-page-tabs-grid{grid-template-columns:1fr}}
