/* 节点工具栏目（由 server.py 提供） */
.tl-main { padding: 44px 0 70px; }
.tl-hero { text-align: center; margin-bottom: 30px; }
.tl-hero .kicker { display:inline-block; font-size:12.5px; font-weight:700; letter-spacing:2.6px;
  color:#2563eb; background:#eaf1ff; border-radius:999px; padding:6px 15px; margin-bottom:16px; }
.tl-hero h1 { font-size:33px; font-weight:800; color:#102a50; margin:0 0 14px; letter-spacing:.4px; }
.tl-hero p { font-size:15px; line-height:1.95; color:#5b6b85; max-width:720px; margin:0 auto; }
.tl-quick { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin:26px 0 34px; }
.tl-quick a { display:inline-flex; align-items:center; gap:6px; height:40px; padding:0 18px; border-radius:999px;
  font-size:14px; font-weight:600; color:#102a50 !important; background:#fff; border:1px solid #e6ecf5;
  text-decoration:none !important; box-shadow:0 12px 26px -22px rgba(16,42,80,.6); transition:all .16s ease; }
.tl-quick a:hover { border-color:#c7d8f7; color:#2563eb !important; transform:translateY(-2px); }
.tl-bar { position:sticky; top:0; z-index:20; background:rgba(247,249,252,.94); backdrop-filter:blur(8px);
  padding:14px 0; margin-bottom:8px; border-bottom:1px solid #e6ecf5; }
.tl-bar-row { display:flex; gap:12px; align-items:center; flex-wrap:wrap; }
.tl-search { position:relative; flex:1 1 260px; max-width:360px; }
.tl-search input { width:100%; height:44px; border-radius:12px; border:1px solid #e6ecf5; background:#fff;
  padding:0 16px 0 42px; font-size:14.5px; color:#102a50; outline:none; transition:border-color .16s ease, box-shadow .16s ease; }
.tl-search input:focus { border-color:#9dbcf5; box-shadow:0 0 0 4px rgba(37,99,235,.1); }
.tl-search svg { position:absolute; left:14px; top:13px; width:18px; height:18px; fill:#8496ad; }
.tl-tabs { display:flex; gap:8px; flex-wrap:wrap; }
.tl-tabs button { height:40px; padding:0 16px; border-radius:999px; border:1px solid #e6ecf5; background:#fff;
  font-size:13.6px; font-weight:650; color:#33455f; cursor:pointer; transition:all .16s ease; }
.tl-tabs button:hover { border-color:#c7d8f7; color:#2563eb; }
.tl-tabs button.is-on { background:linear-gradient(96deg,#2563eb,#4f46e5); border-color:transparent; color:#fff;
  box-shadow:0 14px 28px -18px rgba(37,99,235,.9); }
.tl-sec { margin-top:38px; scroll-margin-top:84px; }
.tl-sec-name { display:flex; align-items:center; gap:10px; font-size:19px; font-weight:750; color:#102a50; margin-bottom:18px; }
.tl-sec-name i { width:9px; height:9px; border-radius:50%; background:linear-gradient(135deg,#2563eb,#4f46e5);
  box-shadow:0 0 0 4px rgba(37,99,235,.12); }
.tl-sec-name span { font-size:13px; font-weight:600; color:#8496ad; }
.tl-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:16px; }
.tl-card { display:flex; gap:13px; align-items:flex-start; background:#fff; border:1px solid #e6ecf5;
  border-radius:15px; padding:16px 17px; text-decoration:none !important;
  box-shadow:0 18px 40px -36px rgba(16,42,80,.55); transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.tl-card:hover { transform:translateY(-4px); border-color:#cddcf8; box-shadow:0 26px 50px -34px rgba(37,99,235,.55); }
.tl-ico { flex:0 0 auto; width:44px; height:44px; border-radius:12px; background:#f4f8ff; border:1px solid #e6ecf5;
  display:flex; align-items:center; justify-content:center; overflow:hidden; }
.tl-ico img { width:30px; height:30px; object-fit:contain; }
.tl-ico svg { width:28px; height:28px; }
.tl-ico-txt { font-size:16px; font-weight:800; color:#2563eb; }
.tl-info { min-width:0; }
.tl-info b { display:block; font-size:15px; font-weight:700; color:#102a50; line-height:1.45;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tl-card:hover .tl-info b { color:#2563eb; }
.tl-info p { margin:6px 0 0; font-size:12.6px; line-height:1.7; color:#8496ad;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.tl-hot { display:inline-block; margin-left:6px; font-size:11px; font-weight:700; color:#fff; background:#f97316;
  border-radius:999px; padding:2px 7px; vertical-align:1px; }
.tl-empty { text-align:center; color:#8496ad; font-size:14px; padding:50px 0; }
@media (max-width:575.98px) {
  .tl-hero h1 { font-size:23px; }
  .tl-grid { grid-template-columns:1fr; }
  .tl-main { padding:30px 0 56px; }
}
